@cdot65/prisma-airs-sdk 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +728 -728
- package/dist/index.d.ts +728 -728
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/errors.ts","../src/configuration.ts","../src/scan/scanner.ts","../src/utils.ts","../src/http/auth/api-key.ts","../src/http-retry.ts","../src/http/request.ts","../src/models/scan-response.ts","../src/models/prompt-detected.ts","../src/models/response-detected.ts","../src/models/tool-event.ts","../src/models/detection-reports.ts","../src/models/async-scan.ts","../src/models/scan-request.ts","../src/models/ai-profile.ts","../src/models/metadata.ts","../src/models/scan-id-result.ts","../src/models/threat-report.ts","../src/models/detection.ts","../src/models/dlp-report.ts","../src/models/urlf-report.ts","../src/scan/content.ts","../src/models/enums.ts","../src/models/error-response.ts","../src/models/mgmt-security-profile.ts","../src/models/mgmt-custom-topic.ts","../src/models/mgmt-api-key.ts","../src/models/mgmt-customer-app.ts","../src/models/mgmt-deployment-profile.ts","../src/models/mgmt-dlp-profile.ts","../src/models/mgmt-scan-log.ts","../src/models/mgmt-oauth.ts","../src/models/model-security-enums.ts","../src/models/model-security.ts","../src/models/red-team-enums.ts","../src/models/red-team.ts","../src/http/auth/oauth.ts","../src/models/oauth-token.ts","../src/management/oauth-client.ts","../src/oauth-config.ts","../src/validators.ts","../src/management/profiles.ts","../src/management/topics.ts","../src/management/api-keys.ts","../src/management/customer-apps.ts","../src/management/dlp-profiles.ts","../src/management/deployment-profiles.ts","../src/management/scan-logs.ts","../src/management/oauth-management.ts","../src/management/client.ts","../src/listing.ts","../src/model-security/scans-client.ts","../src/model-security/security-groups-client.ts","../src/model-security/security-rules-client.ts","../src/model-security/client.ts","../src/red-team/scans-client.ts","../src/red-team/reports-client.ts","../src/red-team/custom-attack-reports-client.ts","../src/red-team/targets-client.ts","../src/red-team/custom-attacks-client.ts","../src/red-team/eula-client.ts","../src/red-team/instances-client.ts","../src/red-team/client.ts"],"sourcesContent":["// Public API surface\nexport { init, globalConfiguration, type InitOptions } from './configuration.js';\nexport { Scanner, Content, type SyncScanOptions, type ContentOptions } from './scan/index.js';\nexport { AISecSDKException, ErrorType } from './errors.js';\nexport * from './models/index.js';\nexport * from './constants.js';\nexport * from './management/index.js';\nexport * from './model-security/index.js';\nexport * from './red-team/index.js';\n","// src/constants.ts — mirrors Python SDK constants/base.py\n\nexport const HEADER_API_KEY = 'x-pan-token';\nexport const HEADER_AUTH_TOKEN = 'Authorization';\nexport const PAYLOAD_HASH = 'x-payload-hash';\nexport const BEARER = 'Bearer ';\n\nexport const DEFAULT_ENDPOINT = 'https://service.api.aisecurity.paloaltonetworks.com';\n\n/** Regional AIRS API endpoints. */\nexport const AIRS_ENDPOINTS = {\n US: 'https://service.api.aisecurity.paloaltonetworks.com',\n EU: 'https://service-de.api.aisecurity.paloaltonetworks.com',\n INDIA: 'https://service-in.api.aisecurity.paloaltonetworks.com',\n SINGAPORE: 'https://service-sg.api.aisecurity.paloaltonetworks.com',\n} as const;\n\n// Environment variable names\nexport const AI_SEC_API_KEY = 'PANW_AI_SEC_API_KEY';\nexport const AI_SEC_API_TOKEN = 'PANW_AI_SEC_API_TOKEN';\nexport const AI_SEC_API_ENDPOINT = 'PANW_AI_SEC_API_ENDPOINT';\n\n// Content length limits (bytes)\nexport const MAX_CONTENT_PROMPT_LENGTH = 2 * 1024 * 1024; // 2 MB\nexport const MAX_CONTENT_RESPONSE_LENGTH = 2 * 1024 * 1024; // 2 MB\nexport const MAX_CONTENT_CONTEXT_LENGTH = 100 * 1024 * 1024; // 100 MB\n\n// Auth limits\nexport const MAX_API_KEY_LENGTH = 2048;\nexport const MAX_TOKEN_LENGTH = 2048;\n\n// String length limits\nexport const MAX_TRANSACTION_ID_STR_LENGTH = 100;\nexport const MAX_SESSION_ID_STR_LENGTH = 100;\nexport const MAX_SCAN_ID_STR_LENGTH = 36;\nexport const MAX_REPORT_ID_STR_LENGTH = 40;\nexport const MAX_AI_PROFILE_NAME_LENGTH = 100;\n\n// Batch / query limits\nexport const MAX_NUMBER_OF_SCAN_IDS = 5;\nexport const MAX_NUMBER_OF_REPORT_IDS = 5;\nexport const MAX_NUMBER_OF_BATCH_SCAN_OBJECTS = 5;\n\n// HTTP / retry\nexport const MAX_CONNECTION_POOL_SIZE = 100;\nexport const MAX_NUMBER_OF_RETRIES = 5;\nexport const HTTP_FORCE_RETRY_STATUS_CODES = [500, 502, 503, 504];\n\n// User-Agent (version injected at build time or read from package.json)\nexport const SDK_VERSION = '0.8.0';\nexport const USER_AGENT = `PAN-AIRS/${SDK_VERSION}-typescript-sdk`;\n\n// Management API defaults\nexport const DEFAULT_MGMT_ENDPOINT = 'https://api.sase.paloaltonetworks.com/aisec';\nexport const DEFAULT_TOKEN_ENDPOINT = 'https://auth.apps.paloaltonetworks.com/oauth2/access_token';\n\n// Management env vars\nexport const MGMT_CLIENT_ID = 'PANW_MGMT_CLIENT_ID';\nexport const MGMT_CLIENT_SECRET = 'PANW_MGMT_CLIENT_SECRET';\nexport const MGMT_TSG_ID = 'PANW_MGMT_TSG_ID';\nexport const MGMT_ENDPOINT = 'PANW_MGMT_ENDPOINT';\nexport const MGMT_TOKEN_ENDPOINT = 'PANW_MGMT_TOKEN_ENDPOINT';\n\n// API paths — scan\nexport const SYNC_SCAN_PATH = '/v1/scan/sync/request';\nexport const ASYNC_SCAN_PATH = '/v1/scan/async/request';\nexport const SCAN_RESULTS_PATH = '/v1/scan/results';\nexport const SCAN_REPORTS_PATH = '/v1/scan/reports';\n\n// API paths — management\nexport const MGMT_PROFILE_PATH = '/v1/mgmt/profile';\nexport const MGMT_PROFILES_TSG_PATH = '/v1/mgmt/profiles/tsg';\nexport const MGMT_TOPIC_PATH = '/v1/mgmt/topic';\nexport const MGMT_TOPICS_TSG_PATH = '/v1/mgmt/topics/tsg';\nexport const MGMT_TOPIC_FORCE_PATH = '/v1/mgmt/topic/force';\nexport const MGMT_API_KEY_PATH = '/v1/mgmt/apikey';\nexport const MGMT_API_KEYS_TSG_PATH = '/v1/mgmt/apikeys/tsg';\nexport const MGMT_DLP_PROFILES_PATH = '/v1/mgmt/dlpprofiles';\nexport const MGMT_DEPLOYMENT_PROFILES_PATH = '/v1/mgmt/deploymentprofiles';\nexport const MGMT_SCAN_LOGS_PATH = '/v1/mgmt/scanlogs';\nexport const MGMT_CUSTOMER_APP_PATH = '/v1/mgmt/customerapp';\nexport const MGMT_CUSTOMER_APPS_TSG_PATH = '/v1/mgmt/customerapp/tsg';\nexport const MGMT_OAUTH_INVALIDATE_PATH = '/v1/mgmt/oauth/invalidateToken';\nexport const MGMT_OAUTH_TOKEN_PATH = '/v1/mgmt/oauth/client_credential/accesstoken';\n\n// Model Security API defaults\nexport const DEFAULT_MODEL_SEC_DATA_ENDPOINT = 'https://api.sase.paloaltonetworks.com/aims/data';\nexport const DEFAULT_MODEL_SEC_MGMT_ENDPOINT = 'https://api.sase.paloaltonetworks.com/aims/mgmt';\n\n// Model Security env vars\nexport const MODEL_SEC_CLIENT_ID = 'PANW_MODEL_SEC_CLIENT_ID';\nexport const MODEL_SEC_CLIENT_SECRET = 'PANW_MODEL_SEC_CLIENT_SECRET';\nexport const MODEL_SEC_TSG_ID = 'PANW_MODEL_SEC_TSG_ID';\nexport const MODEL_SEC_DATA_ENDPOINT = 'PANW_MODEL_SEC_DATA_ENDPOINT';\nexport const MODEL_SEC_MGMT_ENDPOINT = 'PANW_MODEL_SEC_MGMT_ENDPOINT';\nexport const MODEL_SEC_TOKEN_ENDPOINT = 'PANW_MODEL_SEC_TOKEN_ENDPOINT';\n\n// API paths — model security data plane\nexport const MODEL_SEC_SCANS_PATH = '/v1/scans';\nexport const MODEL_SEC_EVALUATIONS_PATH = '/v1/evaluations';\nexport const MODEL_SEC_VIOLATIONS_PATH = '/v1/violations';\n\n// API paths — model security management\nexport const MODEL_SEC_SECURITY_GROUPS_PATH = '/v1/security-groups';\nexport const MODEL_SEC_SECURITY_RULES_PATH = '/v1/security-rules';\nexport const MODEL_SEC_PYPI_AUTH_PATH = '/v1/pypi/authenticate';\n\n// Red Team API defaults\nexport const DEFAULT_RED_TEAM_DATA_ENDPOINT =\n 'https://api.sase.paloaltonetworks.com/ai-red-teaming/data-plane';\nexport const DEFAULT_RED_TEAM_MGMT_ENDPOINT =\n 'https://api.sase.paloaltonetworks.com/ai-red-teaming/mgmt-plane';\n\n// Red Team env vars\nexport const RED_TEAM_CLIENT_ID = 'PANW_RED_TEAM_CLIENT_ID';\nexport const RED_TEAM_CLIENT_SECRET = 'PANW_RED_TEAM_CLIENT_SECRET';\nexport const RED_TEAM_TSG_ID = 'PANW_RED_TEAM_TSG_ID';\nexport const RED_TEAM_DATA_ENDPOINT = 'PANW_RED_TEAM_DATA_ENDPOINT';\nexport const RED_TEAM_MGMT_ENDPOINT = 'PANW_RED_TEAM_MGMT_ENDPOINT';\nexport const RED_TEAM_TOKEN_ENDPOINT = 'PANW_RED_TEAM_TOKEN_ENDPOINT';\n\n// API paths — red team data plane\nexport const RED_TEAM_SCAN_PATH = '/v1/scan';\nexport const RED_TEAM_CATEGORIES_PATH = '/v1/categories';\nexport const RED_TEAM_REPORT_STATIC_PATH = '/v1/report/static';\nexport const RED_TEAM_REPORT_DYNAMIC_PATH = '/v1/report/dynamic';\nexport const RED_TEAM_REPORT_PATH = '/v1/report';\nexport const RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH = '/v1/custom-attacks';\nexport const RED_TEAM_DASHBOARD_PATH = '/v1/dashboard';\nexport const RED_TEAM_QUOTA_PATH = '/v1/metering/quota';\nexport const RED_TEAM_ERROR_LOG_PATH = '/v1/error-log/job';\nexport const RED_TEAM_SENTIMENT_PATH = '/v1/sentiment';\n\n// API paths — red team management plane\nexport const RED_TEAM_TARGET_PATH = '/v1/target';\nexport const RED_TEAM_TARGET_VALIDATE_AUTH_PATH = '/v1/target/validate-auth';\nexport const RED_TEAM_TEMPLATE_PATH = '/v1/template';\nexport const RED_TEAM_EULA_PATH = '/v1/eula';\nexport const RED_TEAM_INSTANCES_PATH = '/v1/instances';\nexport const RED_TEAM_REGISTRY_CREDENTIALS_PATH = '/v1/registry-credentials';\nexport const RED_TEAM_CUSTOM_ATTACK_PATH = '/v1/custom-attack';\nexport const RED_TEAM_MGMT_DASHBOARD_PATH = '/v1/dashboard/overview';\n","// src/errors.ts — mirrors Python SDK exceptions.py\n\n/** Classification of SDK errors by origin. */\nexport enum ErrorType {\n /** 5xx response from the AIRS API. */\n SERVER_SIDE_ERROR = 'AISEC_SERVER_SIDE_ERROR',\n /** 4xx response or network failure. */\n CLIENT_SIDE_ERROR = 'AISEC_CLIENT_SIDE_ERROR',\n /** Invalid user-supplied input (bad UUID, oversized content, etc.). */\n USER_REQUEST_PAYLOAD_ERROR = 'AISEC_USER_REQUEST_PAYLOAD_ERROR',\n /** Required configuration value is missing. */\n MISSING_VARIABLE = 'AISEC_MISSING_VARIABLE',\n /** Internal SDK error. */\n AISEC_SDK_ERROR = 'AISEC_SDK_ERROR',\n /** OAuth2 token fetch failure. */\n OAUTH_ERROR = 'AISEC_OAUTH_ERROR',\n /** Server returned a 2xx body that did not match the declared response schema, or invalid JSON. */\n RESPONSE_VALIDATION = 'AISEC_RESPONSE_VALIDATION',\n}\n\n/**\n * Base exception for all AIRS SDK errors.\n * The `errorType` field classifies the error origin.\n */\nexport class AISecSDKException extends Error {\n public readonly errorType?: ErrorType;\n\n /**\n * @param message - Human-readable error description.\n * @param errorType - Classification of the error.\n */\n constructor(message: string, errorType?: ErrorType) {\n super(errorType ? `${errorType}:${message}` : message);\n this.name = 'AISecSDKException';\n this.errorType = errorType;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, AISecSDKException);\n }\n }\n}\n","// src/configuration.ts — mirrors Python SDK configuration.py\n\nimport {\n DEFAULT_ENDPOINT,\n AI_SEC_API_KEY,\n AI_SEC_API_TOKEN,\n AI_SEC_API_ENDPOINT,\n MAX_API_KEY_LENGTH,\n MAX_TOKEN_LENGTH,\n MAX_NUMBER_OF_RETRIES,\n} from './constants.js';\nimport { AISecSDKException, ErrorType } from './errors.js';\n\n/** Options for initializing the global scan API configuration. */\nexport interface InitOptions {\n /** AIRS API key. Falls back to `PANW_AI_SEC_API_KEY` env var. */\n apiKey?: string;\n /** Pre-obtained bearer token. Falls back to `PANW_AI_SEC_API_TOKEN` env var. */\n apiToken?: string;\n /** AIRS API endpoint URL. Falls back to `PANW_AI_SEC_API_ENDPOINT` env var. */\n apiEndpoint?: string;\n /** Max retry attempts (0–5). Defaults to 5. */\n numRetries?: number;\n}\n\nclass Configuration {\n private _apiKey?: string;\n private _apiToken?: string;\n private _apiEndpoint: string = DEFAULT_ENDPOINT;\n private _numRetries: number = MAX_NUMBER_OF_RETRIES;\n private _initialized = false;\n\n get apiKey(): string | undefined {\n return this._apiKey;\n }\n get apiToken(): string | undefined {\n return this._apiToken;\n }\n get apiEndpoint(): string {\n return this._apiEndpoint;\n }\n get numRetries(): number {\n return this._numRetries;\n }\n get initialized(): boolean {\n return this._initialized;\n }\n\n init(opts: InitOptions = {}): void {\n // Resolve api key\n const apiKey = (opts.apiKey ?? process.env[AI_SEC_API_KEY] ?? '').trim() || undefined;\n const apiToken = (opts.apiToken ?? process.env[AI_SEC_API_TOKEN] ?? '').trim() || undefined;\n\n if (!apiKey && !apiToken) {\n throw new AISecSDKException(\n 'Either apiKey or apiToken must be provided (or set via environment variables)',\n ErrorType.MISSING_VARIABLE,\n );\n }\n\n if (apiKey && apiKey.length > MAX_API_KEY_LENGTH) {\n throw new AISecSDKException(\n `apiKey exceeds max length of ${MAX_API_KEY_LENGTH}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n if (apiToken && apiToken.length > MAX_TOKEN_LENGTH) {\n throw new AISecSDKException(\n `apiToken exceeds max length of ${MAX_TOKEN_LENGTH}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n this._apiKey = apiKey;\n this._apiToken = apiToken;\n\n // Resolve endpoint\n const endpoint = opts.apiEndpoint ?? process.env[AI_SEC_API_ENDPOINT] ?? DEFAULT_ENDPOINT;\n this._apiEndpoint = endpoint.replace(/\\/+$/, ''); // strip trailing slashes\n\n // Resolve retries\n if (opts.numRetries !== undefined) {\n if (opts.numRetries < 0 || opts.numRetries > MAX_NUMBER_OF_RETRIES) {\n throw new AISecSDKException(\n `numRetries must be between 0 and ${MAX_NUMBER_OF_RETRIES}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._numRetries = opts.numRetries;\n }\n\n this._initialized = true;\n }\n\n reset(): void {\n this._apiKey = undefined;\n this._apiToken = undefined;\n this._apiEndpoint = DEFAULT_ENDPOINT;\n this._numRetries = MAX_NUMBER_OF_RETRIES;\n this._initialized = false;\n }\n}\n\n/** Global singleton holding scan API configuration. */\nexport const globalConfiguration = new Configuration();\n\n/**\n * Initialize the global scan API configuration. Must be called before using {@link Scanner}.\n * @param opts - Configuration options. Reads env vars as fallbacks.\n * @throws {AISecSDKException} If neither apiKey nor apiToken is provided.\n */\nexport function init(opts: InitOptions = {}): void {\n globalConfiguration.init(opts);\n}\n","import { z } from 'zod';\nimport {\n SYNC_SCAN_PATH,\n ASYNC_SCAN_PATH,\n SCAN_RESULTS_PATH,\n SCAN_REPORTS_PATH,\n MAX_NUMBER_OF_SCAN_IDS,\n MAX_NUMBER_OF_REPORT_IDS,\n MAX_NUMBER_OF_BATCH_SCAN_OBJECTS,\n MAX_TRANSACTION_ID_STR_LENGTH,\n MAX_SESSION_ID_STR_LENGTH,\n} from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { globalConfiguration } from '../configuration.js';\nimport { ApiKeyAuth } from '../http/auth/api-key.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { isValidUuid } from '../utils.js';\nimport type { AiProfile } from '../models/ai-profile.js';\nimport type { Metadata } from '../models/metadata.js';\nimport { ScanResponseSchema, type ScanResponse } from '../models/scan-response.js';\nimport {\n AsyncScanResponseSchema,\n type AsyncScanObject,\n type AsyncScanResponse,\n} from '../models/async-scan.js';\nimport { ScanIdResultSchema, type ScanIdResult } from '../models/scan-id-result.js';\nimport { ThreatScanReportSchema, type ThreatScanReport } from '../models/threat-report.js';\nimport { Content } from './content.js';\n\n/** Optional parameters for {@link Scanner.syncScan}. */\nexport interface SyncScanOptions {\n /** Transaction ID for tracing. Max 100 characters. */\n trId?: string;\n /** Session ID for grouping related scans. Max 100 characters. */\n sessionId?: string;\n /** Application metadata attached to the scan request. */\n metadata?: Metadata;\n}\n\n/** Client for AIRS scan operations (sync, async, and query). */\nexport class Scanner {\n /**\n * @internal\n * Build the per-request auth adapter from `globalConfiguration`. Throws if\n * `init()` has not been called.\n */\n private buildAuth(): AuthAdapter {\n const cfg = globalConfiguration;\n if (!cfg.initialized) {\n throw new AISecSDKException(\n 'SDK not initialized. Call init() before making requests.',\n ErrorType.MISSING_VARIABLE,\n );\n }\n return new ApiKeyAuth({ apiKey: cfg.apiKey, apiToken: cfg.apiToken });\n }\n\n /**\n * Perform a synchronous content scan.\n * @param aiProfile - AI security profile to scan against.\n * @param content - Content to scan.\n * @param opts - Optional transaction/session IDs and metadata.\n * @returns Scan response with verdict, action, and detection details.\n */\n async syncScan(\n aiProfile: AiProfile,\n content: Content,\n opts: SyncScanOptions = {},\n ): Promise<ScanResponse> {\n if (opts.trId && opts.trId.length > MAX_TRANSACTION_ID_STR_LENGTH) {\n throw new AISecSDKException(\n `trId exceeds max length of ${MAX_TRANSACTION_ID_STR_LENGTH}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n if (opts.sessionId && opts.sessionId.length > MAX_SESSION_ID_STR_LENGTH) {\n throw new AISecSDKException(\n `sessionId exceeds max length of ${MAX_SESSION_ID_STR_LENGTH}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n const body: Record<string, unknown> = {\n ai_profile: aiProfile,\n contents: [content.toJSON()],\n };\n if (opts.trId) body.tr_id = opts.trId;\n if (opts.sessionId) body.session_id = opts.sessionId;\n if (opts.metadata) body.metadata = opts.metadata;\n\n return request({\n method: 'POST',\n baseUrl: globalConfiguration.apiEndpoint,\n path: SYNC_SCAN_PATH,\n body,\n responseSchema: ScanResponseSchema,\n auth: this.buildAuth(),\n numRetries: globalConfiguration.numRetries,\n });\n }\n\n /**\n * Submit content for asynchronous scanning.\n * @param scanObjects - Array of scan objects (1–5 items).\n * @returns Response containing scan IDs for later querying.\n */\n async asyncScan(scanObjects: AsyncScanObject[]): Promise<AsyncScanResponse> {\n if (scanObjects.length < 1) {\n throw new AISecSDKException(\n 'At least 1 scan object is required',\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n if (scanObjects.length > MAX_NUMBER_OF_BATCH_SCAN_OBJECTS) {\n throw new AISecSDKException(\n `Max of ${MAX_NUMBER_OF_BATCH_SCAN_OBJECTS} scan objects allowed`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n return request({\n method: 'POST',\n baseUrl: globalConfiguration.apiEndpoint,\n path: ASYNC_SCAN_PATH,\n body: scanObjects,\n responseSchema: AsyncScanResponseSchema,\n auth: this.buildAuth(),\n numRetries: globalConfiguration.numRetries,\n });\n }\n\n /**\n * Query scan results by scan IDs.\n * @param scanIds - Array of scan UUIDs (1–5 items).\n * @returns Array of scan results with status and response data.\n */\n async queryByScanIds(scanIds: string[]): Promise<ScanIdResult[]> {\n if (scanIds.length < 1) {\n throw new AISecSDKException(\n 'At least 1 scan_id is required',\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n if (scanIds.length > MAX_NUMBER_OF_SCAN_IDS) {\n throw new AISecSDKException(\n `Max of ${MAX_NUMBER_OF_SCAN_IDS} scan_ids allowed`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n for (const id of scanIds) {\n if (!isValidUuid(id)) {\n throw new AISecSDKException(`Invalid scan_id: ${id}`, ErrorType.USER_REQUEST_PAYLOAD_ERROR);\n }\n }\n\n return request({\n method: 'GET',\n baseUrl: globalConfiguration.apiEndpoint,\n path: SCAN_RESULTS_PATH,\n params: { scan_ids: scanIds.join(',') },\n responseSchema: z.array(ScanIdResultSchema),\n auth: this.buildAuth(),\n numRetries: globalConfiguration.numRetries,\n });\n }\n\n /**\n * Query detailed threat reports by report IDs.\n * @param reportIds - Array of report IDs (1–5 items).\n * @returns Array of threat scan reports with detection details.\n */\n async queryByReportIds(reportIds: string[]): Promise<ThreatScanReport[]> {\n if (reportIds.length < 1) {\n throw new AISecSDKException(\n 'At least 1 report_id is required',\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n if (reportIds.length > MAX_NUMBER_OF_REPORT_IDS) {\n throw new AISecSDKException(\n `Max of ${MAX_NUMBER_OF_REPORT_IDS} report_ids allowed`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n return request({\n method: 'GET',\n baseUrl: globalConfiguration.apiEndpoint,\n path: SCAN_REPORTS_PATH,\n params: { report_ids: reportIds.join(',') },\n responseSchema: z.array(ThreatScanReportSchema),\n auth: this.buildAuth(),\n numRetries: globalConfiguration.numRetries,\n });\n }\n}\n","// src/utils.ts — UUID validation + HMAC payload hash\n\nimport { createHmac } from 'node:crypto';\nimport { AISecSDKException, ErrorType } from './errors.js';\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * @internal\n * Test whether a string is a valid RFC 4122 UUID.\n * @param value - The string to validate.\n * @returns `true` if the string matches the UUID format.\n */\nexport function isValidUuid(value: string): boolean {\n return UUID_RE.test(value);\n}\n\n/**\n * @internal\n * Validate that a job ID is a valid UUID, throwing if not.\n * @param jobId - The job ID string to validate.\n * @throws {AISecSDKException} If the job ID is not a valid UUID.\n */\nexport function validateJobId(jobId: string): void {\n if (!isValidUuid(jobId)) {\n throw new AISecSDKException(`Invalid job id: ${jobId}`, ErrorType.USER_REQUEST_PAYLOAD_ERROR);\n }\n}\n\n/**\n * @internal\n * Generate an HMAC-SHA256 hex digest for API key authentication.\n * @param payload - The JSON payload string to sign.\n * @param secret - The API key secret.\n * @returns Hex-encoded HMAC-SHA256 hash.\n */\nexport function generatePayloadHash(payload: string, secret: string): string {\n return createHmac('sha256', secret).update(payload).digest('hex');\n}\n","import { BEARER, HEADER_API_KEY, HEADER_AUTH_TOKEN, PAYLOAD_HASH } from '../../constants.js';\nimport { AISecSDKException, ErrorType } from '../../errors.js';\nimport { generatePayloadHash } from '../../utils.js';\nimport type { AuthAdapter, PreparedRequest } from '../types.js';\n\n/** Options for {@link ApiKeyAuth}. At least one of `apiKey` / `apiToken` is required. */\nexport interface ApiKeyAuthOptions {\n apiKey?: string;\n apiToken?: string;\n}\n\n/**\n * @internal\n * Auth adapter for the AIRS scan service. Adds the API-key header, the bearer token header\n * (if configured), and an HMAC-SHA256 payload hash over `bodyText` when both an apiKey and a\n * body are present. Mirrors the behavior of the legacy `src/http-client.ts`.\n */\nexport class ApiKeyAuth implements AuthAdapter {\n private readonly apiKey?: string;\n private readonly apiToken?: string;\n\n constructor(opts: ApiKeyAuthOptions) {\n if (!opts.apiKey && !opts.apiToken) {\n throw new AISecSDKException(\n 'ApiKeyAuth requires either apiKey or apiToken',\n ErrorType.MISSING_VARIABLE,\n );\n }\n this.apiKey = opts.apiKey;\n this.apiToken = opts.apiToken;\n }\n\n async prepare(req: PreparedRequest): Promise<PreparedRequest> {\n const headers = { ...req.headers };\n if (this.apiToken) {\n headers[HEADER_AUTH_TOKEN] = `${BEARER}${this.apiToken}`;\n }\n if (this.apiKey) {\n headers[HEADER_API_KEY] = this.apiKey;\n if (req.bodyText !== undefined) {\n headers[PAYLOAD_HASH] = generatePayloadHash(req.bodyText, this.apiKey);\n }\n }\n return { ...req, headers };\n }\n}\n","// src/http-retry.ts — shared retry logic for HTTP clients\n\nimport { HTTP_FORCE_RETRY_STATUS_CODES } from './constants.js';\nimport { AISecSDKException, ErrorType } from './errors.js';\n\n/**\n * @internal\n * Sleep for the given number of milliseconds.\n * @param ms - Milliseconds to wait.\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * @internal\n * Calculate exponential backoff delay with full jitter for the given attempt.\n * Uses the \"full jitter\" strategy: uniform random in [0, 2^attempt * 1000].\n * @param attempt - Zero-based attempt number.\n * @returns Delay in milliseconds.\n */\nexport function backoffDelay(attempt: number): number {\n const maxDelay = Math.pow(2, attempt) * 1000;\n return Math.floor(Math.random() * (maxDelay + 1));\n}\n\n/**\n * @internal\n * Check if an HTTP status code should trigger a retry.\n * @param status - HTTP status code.\n */\nexport function isRetryableStatus(status: number): boolean {\n return HTTP_FORCE_RETRY_STATUS_CODES.includes(status);\n}\n\n/**\n * @internal\n * Classify an HTTP status code as server-side or client-side error.\n * @param status - HTTP status code.\n */\nexport function classifyErrorType(status: number): ErrorType {\n return status >= 500 ? ErrorType.SERVER_SIDE_ERROR : ErrorType.CLIENT_SIDE_ERROR;\n}\n\n/**\n * @internal\n * Extract a human-readable error message from an API error response body.\n * Tries `error_message`, `message`, and `error.message` fields in order.\n * @param body - Raw response body string.\n * @param status - HTTP status code for fallback message.\n */\nexport function extractErrorMessage(body: string, status: number): string {\n try {\n const parsed = JSON.parse(body) as Record<string, unknown>;\n return (\n (parsed.error_message as string) ??\n (parsed.message as string) ??\n ((parsed.error as Record<string, unknown> | undefined)?.message as string) ??\n `API error ${status}`\n );\n } catch {\n return body ? `API error ${status}: ${body}` : `API error ${status}`;\n }\n}\n\n/** @internal Options for {@link executeWithRetry}. */\nexport interface RetryOptions {\n /** Maximum number of retry attempts. */\n maxRetries: number;\n /** Function that performs the HTTP request for each attempt. */\n execute: (attempt: number) => Promise<Response>;\n /** Optional callback for handling special failure cases (e.g. 401 token refresh). Return true to retry without consuming the retry budget. */\n onRetryableFailure?: (response: Response, attempt: number) => Promise<boolean>;\n}\n\n/**\n * @internal\n * Execute an HTTP request with exponential backoff retry.\n * @param opts - Retry configuration and request function.\n * @returns Successful HTTP Response.\n * @throws {AISecSDKException} After exhausting retries or on non-retryable errors.\n */\nexport async function executeWithRetry(opts: RetryOptions): Promise<Response> {\n const { maxRetries, execute, onRetryableFailure } = opts;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n let response: Response;\n try {\n response = await execute(attempt);\n } catch (err) {\n if (err instanceof AISecSDKException) throw err;\n lastError = err as Error;\n if (attempt < maxRetries) {\n await sleep(backoffDelay(attempt));\n continue;\n }\n throw new AISecSDKException(\n lastError.message ?? 'Network error',\n ErrorType.CLIENT_SIDE_ERROR,\n );\n }\n\n if (response.ok) return response;\n\n // Let caller handle special status codes (e.g. 401 token refresh)\n // When handled, decrement attempt so it doesn't count against retry budget\n if (onRetryableFailure) {\n const handled = await onRetryableFailure(response, attempt);\n if (handled) {\n attempt--;\n continue;\n }\n }\n\n if (isRetryableStatus(response.status) && attempt < maxRetries) {\n await sleep(backoffDelay(attempt));\n continue;\n }\n\n // Non-retryable error\n const errorText = await response.text();\n const errorMessage = extractErrorMessage(errorText, response.status);\n throw new AISecSDKException(errorMessage, classifyErrorType(response.status));\n }\n\n throw new AISecSDKException(\n lastError?.message ?? 'Max retries exceeded',\n ErrorType.CLIENT_SIDE_ERROR,\n );\n}\n","import { USER_AGENT } from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { executeWithRetry } from '../http-retry.js';\nimport type { PreparedRequest, RequestSpec } from './types.js';\n\n/**\n * @internal\n * Execute a single AIRS API request: build URL + headers + body, run the auth adapter, retry per\n * the spec's budget, and (if a response schema is declared) validate the response body.\n *\n * Returns the parsed response when `responseSchema` is provided, or `undefined` when omitted.\n *\n * Throws {@link AISecSDKException}:\n * - `RESPONSE_VALIDATION` if a 2xx body is invalid JSON or fails the schema.\n * - `CLIENT_SIDE_ERROR` for 4xx (or after `onUnauthorized` declines a 401/403).\n * - `SERVER_SIDE_ERROR` for 5xx after exhausting retries.\n */\nexport async function request<TResponse = void>(spec: RequestSpec<TResponse>): Promise<TResponse> {\n let hasRetriedAuth = false;\n\n const response = await executeWithRetry({\n maxRetries: spec.numRetries,\n execute: async () => {\n const baseUrl = spec.baseUrl.replace(/\\/+$/, '');\n const url = new URL(`${baseUrl}${spec.path}`);\n if (spec.params) {\n for (const [key, value] of Object.entries(spec.params)) {\n if (Array.isArray(value)) {\n for (const v of value) url.searchParams.append(key, v);\n } else {\n url.searchParams.set(key, value);\n }\n }\n }\n\n const headers: Record<string, string> = { 'User-Agent': USER_AGENT };\n let bodyText: string | undefined;\n if (spec.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n bodyText = JSON.stringify(spec.body);\n }\n\n const prepared: PreparedRequest = { method: spec.method, url, headers, bodyText };\n const final = await spec.auth.prepare(prepared);\n\n return fetch(final.url.toString(), {\n method: final.method,\n headers: final.headers,\n body: final.bodyText,\n });\n },\n onRetryableFailure: async (res) => {\n if (hasRetriedAuth) return false;\n if (!spec.auth.onUnauthorized) return false;\n const should = await spec.auth.onUnauthorized(res);\n if (should) {\n hasRetriedAuth = true;\n return true;\n }\n return false;\n },\n });\n\n const text = await response.text();\n\n if (!spec.responseSchema) {\n return undefined as TResponse;\n }\n\n let parsed: unknown;\n try {\n parsed = text ? JSON.parse(text) : undefined;\n } catch {\n throw new AISecSDKException('Response body is not valid JSON', ErrorType.RESPONSE_VALIDATION);\n }\n\n const result = spec.responseSchema.safeParse(parsed);\n if (!result.success) {\n throw new AISecSDKException(\n `Response did not match schema: ${result.error.message}`,\n ErrorType.RESPONSE_VALIDATION,\n );\n }\n return result.data;\n}\n","import { z } from 'zod';\nimport { PromptDetectedSchema, PromptDetectionDetailsSchema } from './prompt-detected.js';\nimport { ResponseDetectedSchema, ResponseDetectionDetailsSchema } from './response-detected.js';\nimport { ToolEventMetadataSchema } from './tool-event.js';\nimport { PatternDetectionSchema, ContentErrorSchema } from './detection-reports.js';\n\n/** Zod schema for masked data in scan results. */\nexport const MaskedDataSchema = z\n .object({\n data: z.string().optional(),\n pattern_detections: z.array(PatternDetectionSchema).optional(),\n })\n .passthrough();\n\n/** Masked data containing redacted content and pattern detections. */\nexport type MaskedData = z.infer<typeof MaskedDataSchema>;\n\n/**\n * Zod schema for the boolean detection flags returned by per-tool scans.\n *\n * Each flag indicates whether a particular detection service triggered on the\n * tool's input or output. Used inside {@link ToolDetectionEntrySchema} and\n * {@link ScanSummarySchema}.\n */\nexport const ToolDetectionFlagsSchema = z\n .object({\n injection: z.boolean().optional(),\n url_cats: z.boolean().optional(),\n dlp: z.boolean().optional(),\n db_security: z.boolean().optional(),\n toxic_content: z.boolean().optional(),\n malicious_code: z.boolean().optional(),\n agent: z.boolean().optional(),\n topic_violation: z.boolean().optional(),\n })\n .passthrough();\n\n/** Boolean detection flags returned by per-tool scans. */\nexport type ToolDetectionFlags = z.infer<typeof ToolDetectionFlagsSchema>;\n\n/** Zod schema for nested per-tool detection details (e.g. topic guardrails). */\nexport const ToolDetectionDetailsSchema = z\n .object({\n topic_guardrails_details: z.unknown().optional(),\n })\n .passthrough();\n\n/** Nested per-tool detection details. */\nexport type ToolDetectionDetails = z.infer<typeof ToolDetectionDetailsSchema>;\n\n/** Zod schema for a single tool-invocation detection entry. */\nexport const ToolDetectionEntrySchema = z\n .object({\n tool_invoked: z.string().optional(),\n detections: ToolDetectionFlagsSchema.optional(),\n threats: z.array(z.string()).optional(),\n details: ToolDetectionDetailsSchema.optional(),\n masked_data: MaskedDataSchema.optional(),\n })\n .passthrough();\n\n/** A single tool-invocation detection entry inside `tool_detected.input_detected`. */\nexport type ToolDetectionEntry = z.infer<typeof ToolDetectionEntrySchema>;\n\n/**\n * Zod schema for tool input/output detections.\n *\n * **Shape change** vs prior SDK versions: this used to be a flag-style schema\n * with `url_cats`, `dlp`, etc. directly on it. The flags now live inside\n * {@link ToolDetectionEntrySchema} entries (one per tool invocation).\n */\nexport const IODetectedSchema = z\n .object({\n detection_entries: z.array(ToolDetectionEntrySchema).optional(),\n })\n .passthrough();\n\n/** Wrapper for per-tool detection entries on `tool_detected.input_detected` / `output_detected`. */\nexport type IODetected = z.infer<typeof IODetectedSchema>;\n\n/**\n * Zod schema for the scan summary inside `tool_detected.summary`.\n *\n * **Shape change** vs prior SDK versions: this used to be `{ verdict?, action? }`.\n * The current API returns aggregated `{ detections, threats }` here. Top-level\n * verdict/action remain on `ScanResponse.category` / `ScanResponse.action`.\n */\nexport const ScanSummarySchema = z\n .object({\n detections: ToolDetectionFlagsSchema,\n threats: z.array(z.string()),\n })\n .passthrough();\n\n/** Aggregated detection summary inside `tool_detected.summary`. */\nexport type ScanSummary = z.infer<typeof ScanSummarySchema>;\n\n/** Zod schema for tool/agent detection results. */\nexport const ToolDetectedSchema = z\n .object({\n verdict: z.string().optional(),\n metadata: ToolEventMetadataSchema.optional(),\n summary: ScanSummarySchema.optional(),\n input_detected: IODetectedSchema.optional(),\n output_detected: IODetectedSchema.optional(),\n })\n .passthrough();\n\n/** Detection results for tool/agent interactions. */\nexport type ToolDetected = z.infer<typeof ToolDetectedSchema>;\n\n/** Zod schema for a complete scan response from the AIRS API. */\nexport const ScanResponseSchema = z\n .object({\n source: z.string().optional(),\n report_id: z.string(),\n scan_id: z.string(),\n tr_id: z.string().optional(),\n session_id: z.string().optional(),\n profile_id: z.string().optional(),\n profile_name: z.string().optional(),\n category: z.string(),\n action: z.string(),\n timeout: z.boolean(),\n error: z.boolean(),\n errors: z.array(ContentErrorSchema),\n prompt_detected: PromptDetectedSchema.optional(),\n response_detected: ResponseDetectedSchema.optional(),\n prompt_masked_data: MaskedDataSchema.optional(),\n response_masked_data: MaskedDataSchema.optional(),\n prompt_detection_details: PromptDetectionDetailsSchema.optional(),\n response_detection_details: ResponseDetectionDetailsSchema.optional(),\n tool_detected: ToolDetectedSchema.optional(),\n created_at: z.string().optional(),\n completed_at: z.string().optional(),\n })\n .passthrough();\n\n/** Complete scan response with verdict, action, and detection details. */\nexport type ScanResponse = z.infer<typeof ScanResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for prompt detection detail data. */\nexport const PromptDetectionDetailsSchema = z\n .object({\n topic_guardrails_details: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\n/** Prompt detection detail data including topic guardrails. */\nexport type PromptDetectionDetails = z.infer<typeof PromptDetectionDetailsSchema>;\n\n/** Zod schema for prompt-side detection flags. */\nexport const PromptDetectedSchema = z\n .object({\n url_cats: z.boolean().optional(),\n dlp: z.boolean().optional(),\n injection: z.boolean().optional(),\n toxic_content: z.boolean().optional(),\n malicious_code: z.boolean().optional(),\n agent: z.boolean().optional(),\n topic_violation: z.boolean().optional(),\n })\n .passthrough();\n\n/** Flags indicating which detection types triggered on the prompt. */\nexport type PromptDetected = z.infer<typeof PromptDetectedSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for response detection detail data. */\nexport const ResponseDetectionDetailsSchema = z\n .object({\n topic_guardrails_details: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\n/** Response detection detail data including topic guardrails. */\nexport type ResponseDetectionDetails = z.infer<typeof ResponseDetectionDetailsSchema>;\n\n/** Zod schema for response-side detection flags. */\nexport const ResponseDetectedSchema = z\n .object({\n url_cats: z.boolean().optional(),\n dlp: z.boolean().optional(),\n db_security: z.boolean().optional(),\n toxic_content: z.boolean().optional(),\n malicious_code: z.boolean().optional(),\n agent: z.boolean().optional(),\n ungrounded: z.boolean().optional(),\n topic_violation: z.boolean().optional(),\n })\n .passthrough();\n\n/** Flags indicating which detection types triggered on the response. */\nexport type ResponseDetected = z.infer<typeof ResponseDetectedSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for tool/function call event metadata. */\nexport const ToolEventMetadataSchema = z\n .object({\n ecosystem: z.string(),\n method: z.string(),\n server_name: z.string(),\n tool_invoked: z.string().optional(),\n })\n .passthrough();\n\n/** Tool/function call event metadata (ecosystem, method, server, tool). */\nexport type ToolEventMetadata = z.infer<typeof ToolEventMetadataSchema>;\n\n/** Zod schema for a tool/function call event with input and output. */\nexport const ToolEventSchema = z\n .object({\n metadata: ToolEventMetadataSchema.optional(),\n input: z.string().optional(),\n output: z.string().optional(),\n })\n .passthrough();\n\n/** Tool/function call event with optional input and output strings. */\nexport type ToolEvent = z.infer<typeof ToolEventSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for toxic content report. */\nexport const TcReportSchema = z\n .object({\n confidence: z.string().optional(),\n verdict: z.string().optional(),\n })\n .passthrough();\n\n/** Toxic content report with confidence and verdict. */\nexport type TcReport = z.infer<typeof TcReportSchema>;\n\n/** Zod schema for a database security entry. */\nexport const DbsEntrySchema = z\n .object({\n sub_type: z.string().optional(),\n verdict: z.string().optional(),\n action: z.string().optional(),\n })\n .passthrough();\n\n/** Database security entry with sub-type, verdict, and action. */\nexport type DbsEntry = z.infer<typeof DbsEntrySchema>;\n\n/** Zod schema for database security report (array of entries). */\nexport const DbsReportSchema = z.array(DbsEntrySchema);\n\n/** Database security report — array of DbsEntry. */\nexport type DbsReport = z.infer<typeof DbsReportSchema>;\n\n/** Zod schema for a malicious code analysis entry. */\nexport const McEntrySchema = z\n .object({\n file_type: z.string().optional(),\n code_sha256: z.string().optional(),\n })\n .passthrough();\n\n/** Malicious code analysis entry. */\nexport type McEntry = z.infer<typeof McEntrySchema>;\n\n/** Zod schema for malware script report. */\nexport const MalwareReportSchema = z\n .object({\n verdict: z.string().optional(),\n })\n .passthrough();\n\n/** Malware script scanning report. */\nexport type MalwareReport = z.infer<typeof MalwareReportSchema>;\n\n/** Zod schema for a command injection entry. */\nexport const CmdEntrySchema = z\n .object({\n code_block: z.string().optional(),\n verdict: z.string().optional(),\n })\n .passthrough();\n\n/** Command injection entry. */\nexport type CmdEntry = z.infer<typeof CmdEntrySchema>;\n\n/** Zod schema for command injection report (array of entries). */\nexport const CmdInjectReportSchema = z.array(CmdEntrySchema);\n\n/** Command injection report — array of CmdEntry. */\nexport type CmdInjectReport = z.infer<typeof CmdInjectReportSchema>;\n\n/** Zod schema for malicious code report. */\nexport const McReportSchema = z\n .object({\n all_code_blocks: z.array(z.string()).optional(),\n code_analysis_by_type: z.array(McEntrySchema).optional(),\n verdict: z.string().optional(),\n malware_script_report: MalwareReportSchema.optional(),\n command_injection_report: CmdInjectReportSchema.optional(),\n })\n .passthrough();\n\n/** Malicious code report with code blocks, analysis, and sub-reports. */\nexport type McReport = z.infer<typeof McReportSchema>;\n\n/** Zod schema for an agent threat pattern entry. */\nexport const AgentEntrySchema = z\n .object({\n category_type: z.string().optional(),\n verdict: z.string().optional(),\n })\n .passthrough();\n\n/** Agent threat pattern entry. */\nexport type AgentEntry = z.infer<typeof AgentEntrySchema>;\n\n/** Zod schema for agent report. */\nexport const AgentReportSchema = z\n .object({\n model_verdict: z.string().optional(),\n agent_framework: z.string().optional(),\n agent_patterns: z.array(AgentEntrySchema).optional(),\n })\n .passthrough();\n\n/** Agent security report with model verdict, framework, and patterns. */\nexport type AgentReport = z.infer<typeof AgentReportSchema>;\n\n/** Zod schema for topic guardrails report. */\nexport const TgReportSchema = z\n .object({\n allowed_topic_list: z.string().optional(),\n blocked_topic_list: z.string().optional(),\n allowedTopics: z.array(z.string()).optional(),\n blockedTopics: z.array(z.string()).optional(),\n })\n .passthrough();\n\n/** Topic guardrails report with matched allow/block topic lists. */\nexport type TgReport = z.infer<typeof TgReportSchema>;\n\n/** Zod schema for contextual grounding report. */\nexport const CgReportSchema = z\n .object({\n status: z.string().optional(),\n explanation: z.string().optional(),\n category: z.string().optional(),\n })\n .passthrough();\n\n/** Contextual grounding report with status, explanation, and category. */\nexport type CgReport = z.infer<typeof CgReportSchema>;\n\n/** Zod schema for DLP pattern detection offset locations. */\nexport const OffsetSchema = z.array(z.array(z.number()));\n\n/** Array of [start, end] offset pairs. */\nexport type Offset = z.infer<typeof OffsetSchema>;\n\n/** Zod schema for DLP pattern detection with confidence levels. */\nexport const DlpPatternDetectionSchema = z\n .object({\n data_pattern_id: z.string().optional(),\n version: z.number().optional(),\n name: z.string().optional(),\n high_confidence_detections: OffsetSchema.optional(),\n medium_confidence_detections: OffsetSchema.optional(),\n low_confidence_detections: OffsetSchema.optional(),\n })\n .passthrough();\n\n/** DLP pattern detection with matched pattern info and confidence-level offsets. */\nexport type DlpPatternDetection = z.infer<typeof DlpPatternDetectionSchema>;\n\n/** Zod schema for pattern detection in masked data. */\nexport const PatternDetectionSchema = z\n .object({\n pattern: z.string().optional(),\n locations: OffsetSchema.optional(),\n })\n .passthrough();\n\n/** Pattern detection with matched pattern and offset locations. */\nexport type PatternDetection = z.infer<typeof PatternDetectionSchema>;\n\n/** Zod schema for content errors during scanning. */\nexport const ContentErrorSchema = z\n .object({\n content_type: z.string().optional(),\n feature: z.string().optional(),\n status: z.string().optional(),\n })\n .passthrough();\n\n/** Error info for a detection service during scanning. */\nexport type ContentError = z.infer<typeof ContentErrorSchema>;\n","import { z } from 'zod';\nimport { ScanRequestSchema } from './scan-request.js';\n\n/** Zod schema for an async scan batch item. */\nexport const AsyncScanObjectSchema = z\n .object({\n req_id: z.number().int(),\n scan_req: ScanRequestSchema,\n })\n .passthrough();\n\n/** Async scan batch item containing a request ID and scan request. */\nexport type AsyncScanObject = z.infer<typeof AsyncScanObjectSchema>;\n\n/** Zod schema for the async scan API response. */\nexport const AsyncScanResponseSchema = z\n .object({\n received: z.string(),\n scan_id: z.string(),\n report_id: z.string().optional(),\n source: z.string().optional(),\n })\n .passthrough();\n\n/** Async scan API response with scan ID for later querying. */\nexport type AsyncScanResponse = z.infer<typeof AsyncScanResponseSchema>;\n","import { z } from 'zod';\nimport { MAX_TRANSACTION_ID_STR_LENGTH, MAX_SESSION_ID_STR_LENGTH } from '../constants.js';\nimport { AiProfileSchema } from './ai-profile.js';\nimport { MetadataSchema } from './metadata.js';\nimport { ToolEventSchema } from './tool-event.js';\n\n/** Zod schema for a single content item within a scan request. */\nexport const ScanRequestContentsInnerSchema = z\n .object({\n prompt: z.string().optional(),\n response: z.string().optional(),\n code_prompt: z.string().optional(),\n code_response: z.string().optional(),\n context: z.string().optional(),\n tool_event: ToolEventSchema.optional(),\n })\n .passthrough();\n\n/** Single content item within a scan request. */\nexport type ScanRequestContentsInner = z.infer<typeof ScanRequestContentsInnerSchema>;\n\n/** Zod schema for a complete scan request payload. */\nexport const ScanRequestSchema = z\n .object({\n tr_id: z.string().max(MAX_TRANSACTION_ID_STR_LENGTH).optional(),\n session_id: z.string().max(MAX_SESSION_ID_STR_LENGTH).optional(),\n ai_profile: AiProfileSchema,\n metadata: MetadataSchema.optional(),\n contents: z.array(ScanRequestContentsInnerSchema).min(1),\n })\n .passthrough();\n\n/** Complete scan request payload sent to the AIRS API. */\nexport type ScanRequest = z.infer<typeof ScanRequestSchema>;\n","import { z } from 'zod';\nimport { MAX_AI_PROFILE_NAME_LENGTH } from '../constants.js';\n\n/** Zod schema for AI security profile identifier. Requires profile_id or profile_name. */\nexport const AiProfileSchema = z\n .object({\n profile_id: z.string().uuid().optional(),\n profile_name: z.string().max(MAX_AI_PROFILE_NAME_LENGTH).optional(),\n })\n .passthrough()\n .refine((d) => d.profile_id || d.profile_name, {\n message: 'Either profile_id or profile_name must be provided',\n });\n\n/** AI security profile identifier. At least one of profile_id or profile_name required. */\nexport type AiProfile = z.infer<typeof AiProfileSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for AI agent metadata. */\nexport const AgentMetaSchema = z\n .object({\n agent_id: z.string().optional(),\n agent_version: z.string().optional(),\n agent_arn: z.string().optional(),\n })\n .passthrough();\n\n/** AI agent metadata (agent ID, version, ARN). */\nexport type AgentMeta = z.infer<typeof AgentMetaSchema>;\n\n/** Zod schema for scan request metadata. */\nexport const MetadataSchema = z\n .object({\n app_name: z.string().optional(),\n app_user: z.string().optional(),\n ai_model: z.string().optional(),\n user_ip: z.string().optional(),\n agent_meta: AgentMetaSchema.optional(),\n })\n .passthrough();\n\n/** Application metadata attached to scan requests. */\nexport type Metadata = z.infer<typeof MetadataSchema>;\n","import { z } from 'zod';\nimport { ScanResponseSchema, type ScanResponse } from './scan-response.js';\n\n/** Result of querying a scan by its scan ID, including status and full scan response. */\nexport interface ScanIdResult {\n source?: string;\n req_id?: number;\n status?: string;\n scan_id?: string;\n result?: ScanResponse;\n [key: string]: unknown;\n}\n\n/** Zod schema for a scan ID query result. */\n// Explicit type annotation: ScanResponseSchema is now structurally too complex\n// for TypeScript to serialize the inferred type. The annotation breaks that cycle.\nexport const ScanIdResultSchema: z.ZodType<ScanIdResult> = z\n .object({\n source: z.string().optional(),\n req_id: z.number().optional(),\n status: z.string().optional(),\n scan_id: z.string().optional(),\n result: ScanResponseSchema.optional(),\n })\n .passthrough();\n","import { z } from 'zod';\nimport { DetectionServiceResultSchema } from './detection.js';\n\n/** Zod schema for a detailed threat scan report. */\nexport const ThreatScanReportSchema = z\n .object({\n source: z.string().optional(),\n report_id: z.string().optional(),\n scan_id: z.string().optional(),\n req_id: z.number().optional(),\n transaction_id: z.string().optional(),\n session_id: z.string().optional(),\n detection_results: z.array(DetectionServiceResultSchema).optional(),\n })\n .passthrough();\n\n/** Detailed threat scan report with per-service detection results. */\nexport type ThreatScanReport = z.infer<typeof ThreatScanReportSchema>;\n","import { z } from 'zod';\nimport { DlpReportSchema } from './dlp-report.js';\nimport { UrlfEntrySchema } from './urlf-report.js';\nimport {\n DbsReportSchema,\n TcReportSchema,\n McReportSchema,\n AgentReportSchema,\n TgReportSchema,\n CgReportSchema,\n} from './detection-reports.js';\n\n/** Zod schema for detection service detail results. */\nexport const DSDetailResultSchema = z\n .object({\n urlf_report: z.array(UrlfEntrySchema).optional(),\n dlp_report: DlpReportSchema.optional(),\n dbs_report: DbsReportSchema.optional(),\n tc_report: TcReportSchema.optional(),\n mc_report: McReportSchema.optional(),\n agent_report: AgentReportSchema.optional(),\n topic_guardrails_report: TgReportSchema.optional(),\n cg_report: CgReportSchema.optional(),\n })\n .passthrough();\n\n/** Detection service detail results containing per-service reports. */\nexport type DSDetailResult = z.infer<typeof DSDetailResultSchema>;\n\n/** Zod schema for detection service result metadata. */\nexport const DSResultMetadataSchema = z\n .object({\n score: z.number().optional(),\n confidence: z.string().optional(),\n ecosystem: z.string().optional(),\n method: z.string().optional(),\n server_name: z.string().optional(),\n tool_invoked: z.string().optional(),\n direction: z.string().optional(),\n })\n .passthrough();\n\n/** Detection service result metadata. */\nexport type DSResultMetadata = z.infer<typeof DSResultMetadataSchema>;\n\n/** Zod schema for an individual detection service result. */\nexport const DetectionServiceResultSchema = z\n .object({\n data_type: z.string().optional(),\n detection_service: z.string().optional(),\n verdict: z.string().optional(),\n action: z.string().optional(),\n metadata: DSResultMetadataSchema.optional(),\n result_detail: DSDetailResultSchema.optional(),\n })\n .passthrough();\n\n/** Individual detection service result with verdict, action, and details. */\nexport type DetectionServiceResult = z.infer<typeof DetectionServiceResultSchema>;\n","import { z } from 'zod';\nimport { DlpPatternDetectionSchema } from './detection-reports.js';\n\n/** Zod schema for a DLP (Data Loss Prevention) report. */\nexport const DlpReportSchema = z\n .object({\n dlp_report_id: z.string().optional(),\n dlp_profile_name: z.string().optional(),\n dlp_profile_id: z.string().optional(),\n dlp_profile_version: z.number().optional(),\n data_pattern_rule1_verdict: z.string().optional(),\n data_pattern_rule2_verdict: z.string().optional(),\n data_pattern_detection_offsets: z.array(DlpPatternDetectionSchema).optional(),\n })\n .passthrough();\n\n/** DLP report with profile info, rule verdicts, and pattern detection offsets. */\nexport type DlpReport = z.infer<typeof DlpReportSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for a URL filtering report entry. */\nexport const UrlfEntrySchema = z\n .object({\n url: z.string().optional(),\n risk_level: z.string().optional(),\n action: z.string().optional(),\n categories: z.array(z.string()).optional(),\n })\n .passthrough();\n\n/** URL filtering report entry with URL, risk level, action, and categories. */\nexport type UrlfEntry = z.infer<typeof UrlfEntrySchema>;\n","// src/scan/content.ts — mirrors Python SDK scan/models/content.py\n\nimport { readFileSync } from 'node:fs';\nimport {\n MAX_CONTENT_PROMPT_LENGTH,\n MAX_CONTENT_RESPONSE_LENGTH,\n MAX_CONTENT_CONTEXT_LENGTH,\n} from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport type { ToolEvent } from '../models/tool-event.js';\nimport type { ScanRequestContentsInner } from '../models/scan-request.js';\n\n/** Options for constructing a {@link Content} instance. At least one field is required. */\nexport interface ContentOptions {\n /** User prompt text. Max 2 MB. */\n prompt?: string;\n /** AI model response text. Max 2 MB. */\n response?: string;\n /** Conversation context. Max 100 MB. */\n context?: string;\n /** Code prompt text. Max 2 MB. */\n codePrompt?: string;\n /** Code response text. Max 2 MB. */\n codeResponse?: string;\n /** Tool/function call event data. */\n toolEvent?: ToolEvent;\n}\n\n/**\n * Represents content to be scanned by AIRS.\n * Validates byte-length limits on construction and property assignment.\n */\nexport class Content {\n private _prompt?: string;\n private _response?: string;\n private _context?: string;\n private _codePrompt?: string;\n private _codeResponse?: string;\n private _toolEvent?: ToolEvent;\n\n /**\n * Create a new Content instance.\n * @param opts - Content fields; at least one of prompt, response, codePrompt, codeResponse, or toolEvent is required.\n * @throws {AISecSDKException} If no content field is provided or a field exceeds its byte-length limit.\n */\n constructor(opts: ContentOptions) {\n if (\n !opts.prompt &&\n !opts.response &&\n !opts.codePrompt &&\n !opts.codeResponse &&\n !opts.toolEvent\n ) {\n throw new AISecSDKException(\n 'At least one of prompt, response, codePrompt, codeResponse, or toolEvent must be provided',\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n if (opts.prompt !== undefined) this.prompt = opts.prompt;\n if (opts.response !== undefined) this.response = opts.response;\n if (opts.context !== undefined) this.context = opts.context;\n if (opts.codePrompt !== undefined) this.codePrompt = opts.codePrompt;\n if (opts.codeResponse !== undefined) this.codeResponse = opts.codeResponse;\n if (opts.toolEvent !== undefined) this._toolEvent = opts.toolEvent;\n }\n\n get prompt(): string | undefined {\n return this._prompt;\n }\n set prompt(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_PROMPT_LENGTH) {\n throw new AISecSDKException(\n `prompt exceeds max length of ${MAX_CONTENT_PROMPT_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._prompt = value;\n }\n\n get response(): string | undefined {\n return this._response;\n }\n set response(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_RESPONSE_LENGTH) {\n throw new AISecSDKException(\n `response exceeds max length of ${MAX_CONTENT_RESPONSE_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._response = value;\n }\n\n get context(): string | undefined {\n return this._context;\n }\n set context(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_CONTEXT_LENGTH) {\n throw new AISecSDKException(\n `context exceeds max length of ${MAX_CONTENT_CONTEXT_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._context = value;\n }\n\n get codePrompt(): string | undefined {\n return this._codePrompt;\n }\n set codePrompt(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_PROMPT_LENGTH) {\n throw new AISecSDKException(\n `codePrompt exceeds max length of ${MAX_CONTENT_PROMPT_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._codePrompt = value;\n }\n\n get codeResponse(): string | undefined {\n return this._codeResponse;\n }\n set codeResponse(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_RESPONSE_LENGTH) {\n throw new AISecSDKException(\n `codeResponse exceeds max length of ${MAX_CONTENT_RESPONSE_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._codeResponse = value;\n }\n\n get toolEvent(): ToolEvent | undefined {\n return this._toolEvent;\n }\n set toolEvent(value: ToolEvent | undefined) {\n this._toolEvent = value;\n }\n\n /**\n * Total byte length of all text content fields.\n * @returns Combined byte length of all text content fields.\n */\n get length(): number {\n let total = 0;\n if (this._prompt) total += Buffer.byteLength(this._prompt);\n if (this._response) total += Buffer.byteLength(this._response);\n if (this._context) total += Buffer.byteLength(this._context);\n if (this._codePrompt) total += Buffer.byteLength(this._codePrompt);\n if (this._codeResponse) total += Buffer.byteLength(this._codeResponse);\n return total;\n }\n\n /**\n * Serialize to the API request format.\n * @returns The content as a scan request contents inner object.\n */\n toJSON(): ScanRequestContentsInner {\n const obj: ScanRequestContentsInner = {};\n if (this._prompt !== undefined) obj.prompt = this._prompt;\n if (this._response !== undefined) obj.response = this._response;\n if (this._context !== undefined) obj.context = this._context;\n if (this._codePrompt !== undefined) obj.code_prompt = this._codePrompt;\n if (this._codeResponse !== undefined) obj.code_response = this._codeResponse;\n if (this._toolEvent !== undefined) obj.tool_event = this._toolEvent;\n return obj;\n }\n\n /**\n * Create a Content instance from an API response object.\n * @param json - Scan request contents inner object.\n */\n static fromJSON(json: ScanRequestContentsInner): Content {\n return new Content({\n prompt: json.prompt,\n response: json.response,\n context: json.context,\n codePrompt: json.code_prompt,\n codeResponse: json.code_response,\n toolEvent: json.tool_event,\n });\n }\n\n /**\n * Load content from a JSON file.\n * @param filePath - Path to JSON file containing scan request contents.\n * @returns A new Content instance populated from the JSON file.\n */\n static fromJSONFile(filePath: string): Content {\n const raw = readFileSync(filePath, 'utf-8');\n const parsed: ScanRequestContentsInner = JSON.parse(raw);\n return Content.fromJSON(parsed);\n }\n}\n","// src/models/enums.ts — typed enums for AIRS API verdict/action/category values\n\n/** Scan result verdict classification. */\nexport const Verdict = {\n BENIGN: 'benign',\n MALICIOUS: 'malicious',\n UNKNOWN: 'unknown',\n} as const;\n\n/** Union type of all possible verdict values. */\nexport type Verdict = (typeof Verdict)[keyof typeof Verdict];\n\n/** Enforcement action taken by AIRS. */\nexport const Action = {\n ALLOW: 'allow',\n BLOCK: 'block',\n ALERT: 'alert',\n} as const;\n\n/** Union type of all possible action values. */\nexport type Action = (typeof Action)[keyof typeof Action];\n\n/** Top-level scan result category. */\nexport const Category = {\n BENIGN: 'benign',\n MALICIOUS: 'malicious',\n UNKNOWN: 'unknown',\n} as const;\n\n/** Union type of all possible category values. */\nexport type Category = (typeof Category)[keyof typeof Category];\n\n/** Detection service names used in scan results. */\nexport const DetectionServiceName = {\n DLP: 'dlp',\n INJECTION: 'injection',\n URL_CATS: 'url_cats',\n TOXIC_CONTENT: 'toxic_content',\n MALICIOUS_CODE: 'malicious_code',\n AGENT: 'agent',\n TOPIC_VIOLATION: 'topic_violation',\n DB_SECURITY: 'db_security',\n UNGROUNDED: 'ungrounded',\n} as const;\n\n/** Union type of all detection service name values. */\nexport type DetectionServiceName = (typeof DetectionServiceName)[keyof typeof DetectionServiceName];\n\n/** Content type that encountered an error during scanning. */\nexport const ContentErrorType = {\n PROMPT: 'prompt',\n RESPONSE: 'response',\n} as const;\n\n/** Union type of content error type values. */\nexport type ContentErrorType = (typeof ContentErrorType)[keyof typeof ContentErrorType];\n\n/** Status of a detection service error. */\nexport const ErrorStatus = {\n ERROR: 'error',\n TIMEOUT: 'timeout',\n} as const;\n\n/** Union type of error status values. */\nexport type ErrorStatus = (typeof ErrorStatus)[keyof typeof ErrorStatus];\n","import { z } from 'zod';\n\n/** Zod schema for an AIRS API error response. */\nexport const ErrorResponseSchema = z\n .object({\n status_code: z.number().optional(),\n message: z.string().optional(),\n error: z\n .object({\n message: z.string().optional(),\n })\n .passthrough()\n .optional(),\n retry_after: z\n .object({\n interval: z.number().optional(),\n unit: z.string().optional(),\n })\n .passthrough()\n .optional(),\n })\n .passthrough();\n\n/** AIRS API error response with optional retry-after guidance. */\nexport type ErrorResponse = z.infer<typeof ErrorResponseSchema>;\n","import { z } from 'zod';\n\n// ── Policy sub-schemas (matching OpenAPI spec) ────────────────────────────\n\n/** Zod schema for inline latency configuration within a security profile policy. */\nexport const PolicyLatencySchema = z\n .object({\n 'inline-timeout-action': z.string().optional(),\n 'max-inline-latency': z.number().optional(),\n })\n .passthrough();\n\n/** Inline latency configuration. */\nexport type PolicyLatency = z.infer<typeof PolicyLatencySchema>;\n\n/** Zod schema for a data-leak-detection member entry. */\nexport const DataLeakDetectionMemberSchema = z\n .object({\n text: z.string(),\n id: z.string().optional(),\n version: z.string().optional(),\n })\n .passthrough();\n\n/** Data-leak-detection member entry. */\nexport type DataLeakDetectionMember = z.infer<typeof DataLeakDetectionMemberSchema>;\n\n/** Zod schema for a database-security rule item. */\nexport const DatabaseSecurityItemSchema = z\n .object({\n name: z.string(),\n action: z.string(),\n })\n .passthrough();\n\n/** Database-security rule item. */\nexport type DatabaseSecurityItem = z.infer<typeof DatabaseSecurityItemSchema>;\n\n/** Zod schema for the data-protection section of a model configuration. */\n//\n// Two known divergences from the OpenAPI flagged by `npm run preflight`:\n// - `data-leak-detection.member`: spec marks required, but the API returns\n// `null` on some profiles (see test/models/mgmt-security-profile.spec.ts).\n// We allow `null`/missing to match observed behavior.\n// - `database-security`: not in the OpenAPI but the API does return it.\n// Kept until upstream OpenAPI documents it.\nexport const DataProtectionSchema = z\n .object({\n 'data-leak-detection': z\n .object({\n member: z.array(DataLeakDetectionMemberSchema).nullable().optional(),\n action: z.string(),\n 'mask-data-inline': z.boolean().optional(),\n })\n .passthrough()\n .optional(),\n 'database-security': z.array(DatabaseSecurityItemSchema).nullable().optional(),\n })\n .passthrough();\n\n/** Data-protection configuration (DLP detection + database security). */\nexport type DataProtection = z.infer<typeof DataProtectionSchema>;\n\n/** Zod schema for a URL category object (member array). */\nexport const UrlCategorySchema = z\n .object({\n member: z.array(z.string()).nullable().optional(),\n })\n .passthrough();\n\n/** URL category with member list. */\nexport type UrlCategory = z.infer<typeof UrlCategorySchema>;\n\n/** Zod schema for malicious code protection settings. */\nexport const MaliciousCodeProtectionSchema = z\n .object({\n name: z.string(),\n action: z.string(),\n })\n .passthrough();\n\n/** Malicious code protection settings. */\nexport type MaliciousCodeProtection = z.infer<typeof MaliciousCodeProtectionSchema>;\n\n/** Zod schema for the app-protection section of a model configuration. */\nexport const PolicyAppProtectionSchema = z\n .object({\n 'alert-url-category': UrlCategorySchema.optional(),\n 'block-url-category': UrlCategorySchema.optional(),\n 'allow-url-category': UrlCategorySchema.optional(),\n 'default-url-category': UrlCategorySchema.optional(),\n 'url-detected-action': z.string().optional(),\n 'malicious-code-protection': MaliciousCodeProtectionSchema.optional(),\n })\n .passthrough();\n\n/** App-protection configuration (URL filtering + malicious code detection). */\nexport type PolicyAppProtection = z.infer<typeof PolicyAppProtectionSchema>;\n\n/** Zod schema for a topic object within a topic guardrail. */\nexport const TopicObjectSchema = z\n .object({\n topic_name: z.string(),\n topic_id: z.string(),\n revision: z.number(),\n })\n .passthrough();\n\n/** Topic reference in a model-protection guardrail. */\nexport type TopicObject = z.infer<typeof TopicObjectSchema>;\n\n/** Zod schema for a topic array within model protection. */\nexport const TopicArraySchema = z\n .object({\n action: z.string(),\n topic: z.array(TopicObjectSchema),\n })\n .passthrough();\n\n/** Topic array with action and topic references. */\nexport type TopicArray = z.infer<typeof TopicArraySchema>;\n\n/** Zod schema for a model-protection array item. */\nexport const ModelProtectionItemSchema = z\n .object({\n name: z.string(),\n action: z.string(),\n 'topic-list': z.array(TopicArraySchema).optional(),\n options: z.array(z.unknown()).optional(),\n })\n .passthrough();\n\n/** Model-protection guardrail item. */\nexport type ModelProtectionItem = z.infer<typeof ModelProtectionItemSchema>;\n\n/** Zod schema for an agent-protection array item. */\nexport const AgentProtectionItemSchema = z\n .object({\n name: z.string(),\n action: z.string(),\n })\n .passthrough();\n\n/** Agent-protection rule item. */\nexport type AgentProtectionItem = z.infer<typeof AgentProtectionItemSchema>;\n\n/** Zod schema for a DLP rule (rule1/rule2) in a DLP data profile. */\nexport const DlpRuleSchema = z\n .object({\n action: z.string().optional(),\n })\n .passthrough();\n\n/** DLP rule with optional action. */\nexport type DlpRule = z.infer<typeof DlpRuleSchema>;\n\n/** Zod schema for a DLP data profile within the policy. */\nexport const DlpDataProfilePolicySchema = z\n .object({\n name: z.string(),\n uuid: z.string(),\n id: z.string().optional(),\n version: z.string().optional(),\n description: z.string().optional(),\n rule1: DlpRuleSchema.optional(),\n rule2: DlpRuleSchema.optional(),\n 'log-severity': z.string().optional(),\n 'non-file-based': z.string().optional(),\n 'file-based': z.string().optional(),\n })\n .passthrough();\n\n/** DLP data profile within a security profile policy. */\nexport type DlpDataProfilePolicy = z.infer<typeof DlpDataProfilePolicySchema>;\n\n// ── Composite schemas ─────────────────────────────────────────────────────\n\n/** Zod schema for model-configuration within an AI security profile. */\nexport const ModelConfigurationSchema = z\n .object({\n 'mask-data-in-storage': z.boolean().optional(),\n latency: PolicyLatencySchema.optional(),\n 'data-protection': DataProtectionSchema.optional(),\n 'app-protection': PolicyAppProtectionSchema.optional(),\n 'model-protection': z.array(ModelProtectionItemSchema).optional(),\n 'agent-protection': z.array(AgentProtectionItemSchema).optional(),\n })\n .passthrough();\n\n/** Model configuration containing all protection and latency settings. */\nexport type ModelConfiguration = z.infer<typeof ModelConfigurationSchema>;\n\n/** Zod schema for an AI security profile within the policy. */\nexport const AiSecurityProfileSchema = z\n .object({\n 'model-type': z.string().optional(),\n 'content-type': z.string().optional(),\n 'model-configuration': ModelConfigurationSchema.optional(),\n })\n .passthrough();\n\n/** AI security profile with model type and configuration. */\nexport type AiSecurityProfile = z.infer<typeof AiSecurityProfileSchema>;\n\n/** Zod schema for the security profile policy. */\nexport const PolicySchema = z\n .object({\n 'ai-security-profiles': z.array(AiSecurityProfileSchema).optional(),\n 'dlp-data-profiles': z.array(DlpDataProfilePolicySchema).optional(),\n })\n .passthrough();\n\n/** Security profile policy containing AI security profiles and DLP data profiles. */\nexport type Policy = z.infer<typeof PolicySchema>;\n\n// ── Top-level profile schemas ─────────────────────────────────────────────\n\n/** AIRS security profile with name, policy, and audit metadata. */\nexport interface SecurityProfile {\n profile_id?: string;\n profile_name: string;\n csp_id?: string;\n tsg_id?: string;\n revision?: number;\n active?: boolean;\n policy?: Policy;\n created_by?: string;\n updated_by?: string;\n last_modified_ts?: string;\n [key: string]: unknown;\n}\n\n/** Zod schema for an AIRS security profile. */\nexport const SecurityProfileSchema: z.ZodType<SecurityProfile> = z\n .object({\n profile_id: z.string().optional(),\n profile_name: z.string(),\n csp_id: z.string().optional(),\n tsg_id: z.string().optional(),\n revision: z.number().optional(),\n active: z.boolean().optional(),\n policy: PolicySchema.optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n })\n .passthrough();\n\n/** Request body for creating or updating a security profile. */\nexport interface CreateSecurityProfileRequest {\n profile_id?: string;\n profile_name: string;\n csp_id?: string;\n tsg_id?: string;\n revision?: number;\n active?: boolean;\n policy?: Policy;\n created_by?: string;\n updated_by?: string;\n last_modified_ts?: string;\n [key: string]: unknown;\n}\n\n/** Zod schema for a security profile create/update request. */\nexport const CreateSecurityProfileRequestSchema: z.ZodType<CreateSecurityProfileRequest> = z\n .object({\n profile_id: z.string().optional(),\n profile_name: z.string(),\n csp_id: z.string().optional(),\n tsg_id: z.string().optional(),\n revision: z.number().optional(),\n active: z.boolean().optional(),\n policy: PolicySchema.optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n })\n .passthrough();\n\n/** Paginated list of security profiles. */\nexport interface SecurityProfileListResponse {\n ai_profiles: SecurityProfile[];\n next_offset?: number;\n [key: string]: unknown;\n}\n\n/** Zod schema for a paginated security profile list response. */\nexport const SecurityProfileListResponseSchema: z.ZodType<SecurityProfileListResponse> = z\n .object({\n ai_profiles: z.array(SecurityProfileSchema),\n next_offset: z.number().optional(),\n })\n .passthrough();\n\n/** Zod schema for a profile deletion response. */\nexport const DeleteProfileResponseSchema = z\n .object({\n message: z.string(),\n })\n .passthrough();\n\n/** Response from deleting a security profile. */\nexport type DeleteProfileResponse = z.infer<typeof DeleteProfileResponseSchema>;\n\n/** Zod schema for a profile deletion conflict (409). */\nexport const DeleteProfileConflictSchema = z\n .object({\n message: z.string(),\n payload: z.array(\n z\n .object({\n policy_id: z.string(),\n policy_name: z.string(),\n priority: z.number(),\n })\n .passthrough(),\n ),\n })\n .passthrough();\n\n/** Conflict response when deleting a profile referenced by policies. */\nexport type DeleteProfileConflict = z.infer<typeof DeleteProfileConflictSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for an AIRS custom topic (response). */\nexport const CustomTopicSchema = z\n .object({\n topic_id: z.string().optional(),\n topic_name: z.string(),\n revision: z.number(),\n active: z.boolean().optional(),\n description: z.string(),\n examples: z.array(z.string()),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n created_ts: z.string().optional(),\n })\n .passthrough();\n\n/** AIRS custom topic with name, description, examples, and audit metadata. */\nexport type CustomTopic = z.infer<typeof CustomTopicSchema>;\n\n/** Zod schema for a custom topic create/update request. */\nexport const CreateCustomTopicRequestSchema = z\n .object({\n topic_id: z.string().optional(),\n topic_name: z.string(),\n revision: z.number().optional(),\n active: z.boolean().optional(),\n description: z.string().optional(),\n examples: z.array(z.string()).optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n created_ts: z.string().optional(),\n })\n .passthrough();\n\n/** Request body for creating or updating a custom topic. */\nexport type CreateCustomTopicRequest = z.infer<typeof CreateCustomTopicRequestSchema>;\n\n/** Zod schema for a paginated custom topic list response. */\nexport const CustomTopicListResponseSchema = z\n .object({\n custom_topics: z.array(CustomTopicSchema),\n next_offset: z.number().optional(),\n })\n .passthrough();\n\n/** Paginated list of custom topics. */\nexport type CustomTopicListResponse = z.infer<typeof CustomTopicListResponseSchema>;\n\n/** Zod schema for a topic deletion response. */\nexport const DeleteTopicResponseSchema = z\n .object({\n message: z.string(),\n })\n .passthrough();\n\n/** Response from deleting a custom topic. */\nexport type DeleteTopicResponse = z.infer<typeof DeleteTopicResponseSchema>;\n\n/** Zod schema for a topic deletion conflict (409). */\nexport const DeleteTopicConflictSchema = z\n .object({\n message: z.string(),\n payload: z.array(\n z\n .object({\n profile_id: z.string(),\n profile_name: z.string(),\n revision: z.number(),\n })\n .passthrough(),\n ),\n })\n .passthrough();\n\n/** Conflict response when deleting a topic referenced by profiles. */\nexport type DeleteTopicConflict = z.infer<typeof DeleteTopicConflictSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for an API key object. */\nexport const ApiKeySchema = z\n .object({\n api_key_id: z.string(),\n api_key_last8: z.string(),\n api_key_name: z.string().optional(),\n auth_code: z.string(),\n csp_id: z.string().optional(),\n tsg_id: z.string().optional(),\n expiration: z.string(),\n revoked: z.boolean(),\n revoke_reason: z.string().optional(),\n cust_app: z.string().optional(),\n cust_env: z.string().optional(),\n cust_ai_agent_framework: z.string().optional(),\n cust_cloud_provider: z.string().optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n rotation_time_interval: z.number().optional(),\n rotation_time_unit: z.string().optional(),\n dp_name: z.string().optional(),\n status: z.string().optional(),\n api_key: z.string().optional(),\n lic_expiration: z.string().optional(),\n avg_text_records: z.number().optional(),\n creation_ts: z.string().optional(),\n customer_appId: z.string().optional(),\n })\n .passthrough();\n\n/** API key object. */\nexport type ApiKey = z.infer<typeof ApiKeySchema>;\n\n/** Zod schema for API key creation request. */\nexport const ApiKeyCreateRequestSchema = z\n .object({\n dp_name: z.string().optional(),\n auth_code: z.string(),\n cust_app: z.string(),\n cust_env: z.string().optional(),\n cust_cloud_provider: z.string().optional(),\n cust_ai_agent_framework: z.string().optional(),\n revoked: z.boolean(),\n created_by: z.string(),\n api_key_name: z.string(),\n rotation_time_interval: z.number(),\n rotation_time_unit: z.string(),\n })\n .passthrough();\n\n/** API key creation request. */\nexport type ApiKeyCreateRequest = z.infer<typeof ApiKeyCreateRequestSchema>;\n\n/** Zod schema for API key regeneration request. */\nexport const ApiKeyRegenerateRequestSchema = z\n .object({\n rotation_time_interval: z.number(),\n rotation_time_unit: z.string(),\n updated_by: z.string().optional(),\n })\n .passthrough();\n\n/** API key regeneration request. */\nexport type ApiKeyRegenerateRequest = z.infer<typeof ApiKeyRegenerateRequestSchema>;\n\n/** Zod schema for paginated API key list response. */\nexport const ApiKeyListResponseSchema = z\n .object({\n api_keys: z.array(ApiKeySchema).optional(),\n next_offset: z.number().optional(),\n })\n .passthrough();\n\n/** Paginated API key list response. */\nexport type ApiKeyListResponse = z.infer<typeof ApiKeyListResponseSchema>;\n\n/** Zod schema for API key delete response. */\nexport const ApiKeyDeleteResponseSchema = z\n .object({\n message: z.string().optional(),\n })\n .passthrough();\n\n/** API key delete response. */\nexport type ApiKeyDeleteResponse = z.infer<typeof ApiKeyDeleteResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for API key + deployment profile info. */\nexport const ApiKeyDPInfoSchema = z\n .object({\n api_key_name: z.string(),\n dp_name: z.string(),\n auth_code: z.string(),\n })\n .passthrough();\n\n/** API key and deployment profile association. */\nexport type ApiKeyDPInfo = z.infer<typeof ApiKeyDPInfoSchema>;\n\n/** Zod schema for a customer app. */\nexport const CustomerAppSchema = z\n .object({\n customer_appId: z.string().optional(),\n tsg_id: z.string(),\n app_name: z.string(),\n model_name: z.string().optional(),\n cloud_provider: z.string(),\n environment: z.string(),\n status: z.string().optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n ai_agent_framework: z.string().optional(),\n })\n .passthrough();\n\n/** Customer application object. */\nexport type CustomerApp = z.infer<typeof CustomerAppSchema>;\n\n/** Zod schema for customer app with API key and DP info (used in list response). */\nexport const CustomerAppWithKeysSchema = z\n .object({\n customer_appId: z.string(),\n tsg_id: z.string(),\n app_name: z.string(),\n model_name: z.string().optional(),\n cloud_provider: z.string(),\n environment: z.string(),\n ai_agent_framework: z.string().optional(),\n api_keys_dp_info: z.array(ApiKeyDPInfoSchema).optional(),\n })\n .passthrough();\n\n/** Customer app with API key and deployment profile info. */\nexport type CustomerAppWithKeys = z.infer<typeof CustomerAppWithKeysSchema>;\n\n/** Zod schema for paginated customer app list response. */\nexport const CustomerAppListResponseSchema = z\n .object({\n customer_apps: z.array(CustomerAppWithKeysSchema).optional(),\n next_offset: z.number().optional(),\n })\n .passthrough();\n\n/** Paginated customer app list response. */\nexport type CustomerAppListResponse = z.infer<typeof CustomerAppListResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for a deployment profile entry. */\nexport const DeploymentProfileEntrySchema = z\n .object({\n dp_name: z.string(),\n auth_code: z.string(),\n tsg_id: z.string().optional(),\n status: z.string().optional(),\n expiration_date: z.string().optional(),\n ave_text_records: z.number().optional(),\n })\n .passthrough();\n\n/** Deployment profile entry. */\nexport type DeploymentProfileEntry = z.infer<typeof DeploymentProfileEntrySchema>;\n\n/** Zod schema for deployment profiles response. */\nexport const DeploymentProfilesResponseSchema = z\n .object({\n deployment_profiles: z.array(DeploymentProfileEntrySchema),\n status: z.string(),\n })\n .passthrough();\n\n/** Deployment profiles response. */\nexport type DeploymentProfilesResponse = z.infer<typeof DeploymentProfilesResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for DLP data profile (as returned by list endpoint). */\nexport const DlpDataProfileSchema = z\n .object({\n name: z.string(),\n uuid: z.string(),\n id: z.string().optional(),\n version: z.string().optional(),\n rule1: z.object({ action: z.string().optional() }).passthrough().optional(),\n rule2: z.object({ action: z.string().optional() }).passthrough().optional(),\n 'log-severity': z.string().optional(),\n 'non-file-based': z.string().optional(),\n 'file-based': z.string().optional(),\n })\n .passthrough();\n\n/** DLP data profile. */\nexport type DlpDataProfile = z.infer<typeof DlpDataProfileSchema>;\n\n/** Zod schema for DLP profiles list response. */\nexport const DlpProfileListResponseSchema = z\n .object({\n dlp_profiles: z.array(DlpDataProfileSchema).optional(),\n })\n .passthrough();\n\n/** DLP profiles list response. */\nexport type DlpProfileListResponse = z.infer<typeof DlpProfileListResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for a scan result entry from the scan logs view. */\nexport const ScanResultEntrySchema = z\n .object({\n csp_id: z.string(),\n tsg_id: z.string(),\n scan_id: z.string(),\n scan_sub_req_id: z.number(),\n api_key_name: z.string(),\n app_name: z.string(),\n tokens: z.number(),\n text_records: z.number(),\n transaction_id: z.string().optional(),\n profile_id: z.string().optional(),\n profile_name: z.string().optional(),\n model_name: z.string().optional(),\n user: z.string().optional(),\n environment: z.string().optional(),\n cloud_provider: z.string().optional(),\n agent_framework: z.string().optional(),\n report_id: z.string().optional(),\n received_ts: z.string().optional(),\n completed_ts: z.string().optional(),\n status: z.string().optional(),\n verdict: z.string().optional(),\n action: z.string().optional(),\n is_prompt: z.boolean().optional(),\n is_response: z.boolean().optional(),\n pi_final_verdict: z.string().optional(),\n uf_final_verdict: z.string().optional(),\n dlp_final_verdict: z.string().optional(),\n dbs_final_verdict: z.string().optional(),\n tc_final_verdict: z.string().optional(),\n mc_final_verdict: z.string().optional(),\n agent_final_verdict: z.string().optional(),\n cg_final_verdict: z.string().optional(),\n tg_final_verdict: z.string().optional(),\n prompt_pi_verdict: z.string().optional(),\n prompt_uf_verdict: z.string().optional(),\n prompt_dlp_verdict: z.string().optional(),\n prompt_tc_verdict: z.string().optional(),\n prompt_mc_verdict: z.string().optional(),\n prompt_agent_verdict: z.string().optional(),\n prompt_tg_verdict: z.string().optional(),\n prompt_verdict: z.string().optional(),\n prompt_pi_action: z.string().optional(),\n prompt_uf_action: z.string().optional(),\n prompt_dlp_action: z.string().optional(),\n prompt_tc_action: z.string().optional(),\n prompt_mc_action: z.string().optional(),\n prompt_agent_action: z.string().optional(),\n prompt_tg_action: z.string().optional(),\n response_uf_verdict: z.string().optional(),\n response_dlp_verdict: z.string().optional(),\n response_dbs_verdict: z.string().optional(),\n response_tc_verdict: z.string().optional(),\n response_mc_verdict: z.string().optional(),\n response_agent_verdict: z.string().optional(),\n response_cg_verdict: z.string().optional(),\n response_tg_verdict: z.string().optional(),\n response_uf_action: z.string().optional(),\n response_dlp_action: z.string().optional(),\n response_dbs_action: z.string().optional(),\n response_tc_action: z.string().optional(),\n response_mc_action: z.string().optional(),\n response_agent_action: z.string().optional(),\n response_cg_action: z.string().optional(),\n response_tg_action: z.string().optional(),\n response_verdict: z.string().optional(),\n detection_service_flags: z.number().optional(),\n content_masked: z.boolean().optional(),\n user_ip: z.string().optional(),\n })\n .passthrough();\n\n/** Scan result entry from scan logs. */\nexport type ScanResultEntry = z.infer<typeof ScanResultEntrySchema>;\n\n/** Zod schema for scan result dashboard data. */\nexport const ScanResultForDashboardSchema = z\n .object({\n text_records_count: z.number().optional(),\n api_calls_count: z.number().optional(),\n threats_count: z.number().optional(),\n all_transactions_count: z.number().optional(),\n benign_transaction_count: z.number().optional(),\n scan_result_entries: z.array(ScanResultEntrySchema).optional(),\n })\n .passthrough();\n\n/** Scan result dashboard summary. */\nexport type ScanResultForDashboard = z.infer<typeof ScanResultForDashboardSchema>;\n\n/** Zod schema for paginated scan results response. */\nexport const PaginatedScanResultsSchema = z\n .object({\n scan_result_for_dashboard: ScanResultForDashboardSchema.optional(),\n total_pages: z.number().optional(),\n page_number: z.number().optional(),\n page_size: z.number().optional(),\n page_token: z.string().optional(),\n revision: z.number().optional(),\n })\n .passthrough();\n\n/** Paginated scan results response. */\nexport type PaginatedScanResults = z.infer<typeof PaginatedScanResultsSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for OAuth client_id + customer_app request body. */\nexport const ClientIdAndCustomerAppSchema = z\n .object({\n client_id: z.string(),\n customer_app: z.string(),\n })\n .passthrough();\n\n/** OAuth client_id and customer_app request body. */\nexport type ClientIdAndCustomerApp = z.infer<typeof ClientIdAndCustomerAppSchema>;\n\n/** Zod schema for OAuth2 token response. */\nexport const Oauth2TokenSchema = z\n .object({\n token_type: z.string().optional(),\n issued_at: z.string().optional(),\n client_id: z.string().optional(),\n access_token: z.string(),\n expires_in: z.string().optional(),\n status: z.string().optional(),\n })\n .passthrough();\n\n/** OAuth2 token response. */\nexport type Oauth2Token = z.infer<typeof Oauth2TokenSchema>;\n","// src/models/model-security-enums.ts — typed enums for AIRS Model Security API values\n\n/** Error codes returned by the Model Security scan service. */\nexport const ErrorCodes = {\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n SCAN_ERROR: 'SCAN_ERROR',\n INVALID_RESPONSE: 'INVALID_RESPONSE',\n ACCESS_DENIED: 'ACCESS_DENIED',\n MISSING_CREDENTIALS: 'MISSING_CREDENTIALS',\n NO_SUCH_KEY: 'NO_SUCH_KEY',\n NO_SUCH_BUCKET: 'NO_SUCH_BUCKET',\n INVALID_BUCKET_NAME: 'INVALID_BUCKET_NAME',\n INTERNAL_ERROR: 'INTERNAL_ERROR',\n SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',\n INVALID_OBJECT_STATE: 'INVALID_OBJECT_STATE',\n UNKNOWN_REMOTE_SERVICE_ERROR: 'UNKNOWN_REMOTE_SERVICE_ERROR',\n UNSUPPORTED_REMOTE_STORAGE: 'UNSUPPORTED_REMOTE_STORAGE',\n MISSING_ARTIFACTS: 'MISSING_ARTIFACTS',\n WORKER_ERROR: 'WORKER_ERROR',\n POLICY_EVAL_ERROR: 'POLICY_EVAL_ERROR',\n} as const;\n\n/** Union type of all possible error code values. */\nexport type ErrorCodes = (typeof ErrorCodes)[keyof typeof ErrorCodes];\n\n/** Evaluation outcome for a model security scan. */\nexport const EvalOutcome = {\n PENDING: 'PENDING',\n ALLOWED: 'ALLOWED',\n BLOCKED: 'BLOCKED',\n ERROR: 'ERROR',\n} as const;\n\n/** Union type of all possible evaluation outcome values. */\nexport type EvalOutcome = (typeof EvalOutcome)[keyof typeof EvalOutcome];\n\n/** Results of individual file scanning. */\nexport const FileScanResult = {\n SKIPPED: 'SKIPPED',\n SUCCESS: 'SUCCESS',\n ERROR: 'ERROR',\n FAILED: 'FAILED',\n} as const;\n\n/** Union type of all possible file scan result values. */\nexport type FileScanResult = (typeof FileScanResult)[keyof typeof FileScanResult];\n\n/** File type in the scanned model tree. */\nexport const FileType = {\n DIRECTORY: 'DIRECTORY',\n FILE: 'FILE',\n} as const;\n\n/** Union type of all possible file type values. */\nexport type FileType = (typeof FileType)[keyof typeof FileType];\n\n/** Status of a model file scan. */\nexport const ModelScanStatus = {\n SCANNED: 'SCANNED',\n SKIPPED: 'SKIPPED',\n ERROR: 'ERROR',\n} as const;\n\n/** Union type of all possible model scan status values. */\nexport type ModelScanStatus = (typeof ModelScanStatus)[keyof typeof ModelScanStatus];\n\n/** Results of rule evaluation. */\nexport const RuleEvaluationResult = {\n PASSED: 'PASSED',\n FAILED: 'FAILED',\n ERROR: 'ERROR',\n} as const;\n\n/** Union type of all possible rule evaluation result values. */\nexport type RuleEvaluationResult = (typeof RuleEvaluationResult)[keyof typeof RuleEvaluationResult];\n\n/** Rule evaluation states. */\nexport const RuleState = {\n DISABLED: 'DISABLED',\n ALLOWING: 'ALLOWING',\n BLOCKING: 'BLOCKING',\n} as const;\n\n/** Union type of all possible rule state values. */\nexport type RuleState = (typeof RuleState)[keyof typeof RuleState];\n\n/** Origin of the model security scan. */\nexport const ScanOrigin = {\n MODEL_SECURITY_SDK: 'MODEL_SECURITY_SDK',\n HUGGING_FACE: 'HUGGING_FACE',\n} as const;\n\n/** Union type of all possible scan origin values. */\nexport type ScanOrigin = (typeof ScanOrigin)[keyof typeof ScanOrigin];\n\n/** Fields available for date-based sorting. */\nexport const SortByDateField = {\n CREATED_AT: 'created_at',\n UPDATED_AT: 'updated_at',\n} as const;\n\n/** Union type of all possible sort-by-date field values. */\nexport type SortByDateField = (typeof SortByDateField)[keyof typeof SortByDateField];\n\n/** Fields available for file-based sorting. */\nexport const SortByFileField = {\n PATH: 'path',\n TYPE: 'type',\n} as const;\n\n/** Union type of all possible sort-by-file field values. */\nexport type SortByFileField = (typeof SortByFileField)[keyof typeof SortByFileField];\n\n/** Sort direction for list queries. */\nexport const SortDirection = {\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n\n/** Union type of all possible sort direction values. */\nexport type SortDirection = (typeof SortDirection)[keyof typeof SortDirection];\n\n/** Source type for model origin. */\nexport const SourceType = {\n LOCAL: 'LOCAL',\n HUGGING_FACE: 'HUGGING_FACE',\n S3: 'S3',\n GCS: 'GCS',\n AZURE: 'AZURE',\n ARTIFACTORY: 'ARTIFACTORY',\n GITLAB: 'GITLAB',\n ALL: 'ALL',\n} as const;\n\n/** Union type of all possible source type values. */\nexport type SourceType = (typeof SourceType)[keyof typeof SourceType];\n\n/**\n * Threat category codes for model scan issues.\n * Should be in sync with modelscan-pai issue codes.\n */\nexport const ThreatCategory = {\n PAIT_ARV_100: 'PAIT-ARV-100',\n PAIT_GGUF_100: 'PAIT-GGUF-100',\n PAIT_GGUF_101: 'PAIT-GGUF-101',\n PAIT_KERAS_100: 'PAIT-KERAS-100',\n PAIT_KERAS_101: 'PAIT-KERAS-101',\n PAIT_KERAS_102: 'PAIT-KERAS-102',\n PAIT_JOBLIB_100: 'PAIT-JOBLIB-100',\n PAIT_JOBLIB_101: 'PAIT-JOBLIB-101',\n PAIT_PKL_100: 'PAIT-PKL-100',\n PAIT_PKL_101: 'PAIT-PKL-101',\n PAIT_PYTCH_100: 'PAIT-PYTCH-100',\n PAIT_PYTCH_101: 'PAIT-PYTCH-101',\n PAIT_EXDIR_100: 'PAIT-EXDIR-100',\n PAIT_EXDIR_101: 'PAIT-EXDIR-101',\n PAIT_ONNX_200: 'PAIT-ONNX-200',\n PAIT_TF_200: 'PAIT-TF-200',\n PAIT_LMAFL_300: 'PAIT-LMAFL-300',\n PAIT_LITERT_300: 'PAIT-LITERT-300',\n PAIT_LITERT_301: 'PAIT-LITERT-301',\n PAIT_LITERT_302: 'PAIT-LITERT-302',\n PAIT_KERAS_300: 'PAIT-KERAS-300',\n PAIT_KERAS_301: 'PAIT-KERAS-301',\n PAIT_TCHST_300: 'PAIT-TCHST-300',\n PAIT_TCHST_301: 'PAIT-TCHST-301',\n PAIT_TF_300: 'PAIT-TF-300',\n PAIT_TF_301: 'PAIT-TF-301',\n PAIT_TF_302: 'PAIT-TF-302',\n PAIT_TMT_300: 'PAIT-TMT-300',\n PAIT_TMT_301: 'PAIT-TMT-301',\n UNAPPROVED_FORMATS: 'UNAPPROVED_FORMATS',\n} as const;\n\n/** Union type of all possible threat category values. */\nexport type ThreatCategory = (typeof ThreatCategory)[keyof typeof ThreatCategory];\n\n/** Security group states. */\nexport const ModelSecurityGroupState = {\n PENDING: 'PENDING',\n ACTIVE: 'ACTIVE',\n} as const;\n\n/** Union type of all possible model security group state values. */\nexport type ModelSecurityGroupState =\n (typeof ModelSecurityGroupState)[keyof typeof ModelSecurityGroupState];\n\n/** Rule types for different scanning approaches. */\nexport const RuleType = {\n METADATA: 'METADATA',\n ARTIFACT: 'ARTIFACT',\n} as const;\n\n/** Union type of all possible rule type values. */\nexport type RuleType = (typeof RuleType)[keyof typeof RuleType];\n\n/** Editable field types used by rule structure for UI rendering. */\nexport const RuleEditableFieldType = {\n SELECT: 'SELECT',\n LIST: 'LIST',\n} as const;\n\n/** Union type of all possible rule editable field type values. */\nexport type RuleEditableFieldType =\n (typeof RuleEditableFieldType)[keyof typeof RuleEditableFieldType];\n\n/** Allowed keys for rule field values configuration. */\nexport const RuleFieldValueKey = {\n APPROVED_FORMATS: 'approved_formats',\n APPROVED_LOCATIONS: 'approved_locations',\n APPROVED_LICENSES: 'approved_licenses',\n DENY_ORGS: 'deny_orgs',\n DENIED_ORG_MODELS: 'denied_org_models',\n APPROVED_ORG_MODELS: 'approved_org_models',\n} as const;\n\n/** Union type of all possible rule field value key values. */\nexport type RuleFieldValueKey = (typeof RuleFieldValueKey)[keyof typeof RuleFieldValueKey];\n","// src/models/model-security.ts — Zod schemas + types for AIRS Model Security API\n\nimport { z } from 'zod';\n\n// ---------------------------------------------------------------------------\n// Shared / utility schemas\n// ---------------------------------------------------------------------------\n\n/** Zod schema for model security pagination metadata. */\nexport const ModelSecurityPaginationSchema = z\n .object({\n total_items: z.number().int().nullable().optional(),\n })\n .passthrough();\n\n/** Pagination metadata for model security list responses. */\nexport type ModelSecurityPagination = z.infer<typeof ModelSecurityPaginationSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Labels\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a single label key-value pair. */\nexport const LabelSchema = z\n .object({\n key: z.string(),\n value: z.string(),\n })\n .passthrough();\n\n/** A single label key-value pair. */\nexport type Label = z.infer<typeof LabelSchema>;\n\n/** Zod schema for creating/setting labels on a scan. */\nexport const LabelsCreateRequestSchema = z\n .object({\n labels: z.array(LabelSchema),\n })\n .passthrough();\n\n/** Request body for creating or setting scan labels. */\nexport type LabelsCreateRequest = z.infer<typeof LabelsCreateRequestSchema>;\n\n/** Zod schema for labels response (empty body on success). */\nexport const LabelsResponseSchema = z.object({}).passthrough();\n\n/** Response from label create/set operations. */\nexport type LabelsResponse = z.infer<typeof LabelsResponseSchema>;\n\n/** Zod schema for a paginated list of label keys. */\nexport const LabelKeyListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n keys: z.array(z.string()),\n })\n .passthrough();\n\n/** Paginated list of distinct label keys. */\nexport type LabelKeyList = z.infer<typeof LabelKeyListSchema>;\n\n/** Zod schema for a paginated list of label values. */\nexport const LabelValueListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n values: z.array(z.string()),\n })\n .passthrough();\n\n/** Paginated list of distinct label values. */\nexport type LabelValueList = z.infer<typeof LabelValueListSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Eval summary\n// ---------------------------------------------------------------------------\n\n/** Zod schema for evaluation summary counts. */\nexport const EvalSummarySchema = z\n .object({\n rules_failed: z.number().int().optional().default(0),\n rules_passed: z.number().int().optional().default(0),\n total_rules: z.number().int().optional().default(0),\n })\n .passthrough();\n\n/** Summary of rule evaluation pass/fail counts. */\nexport type EvalSummary = z.infer<typeof EvalSummarySchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Model scan issues & file scan data\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a single issue detected during model scanning. */\nexport const ModelScanIssueSchema = z\n .object({\n description: z.string(),\n source: z.string(),\n threat: z.string().nullable().optional(),\n module: z.string().nullable().optional(),\n operator: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** A single issue detected during model file scanning. */\nexport type ModelScanIssue = z.infer<typeof ModelScanIssueSchema>;\n\n/** Zod schema for per-file scan data within a scan request. */\nexport const FileScanDataSchema = z\n .object({\n file_path: z.string(),\n modelscan_status: z.string(),\n blob_id: z.string(),\n error_message: z.string().nullable().optional(),\n formats: z.array(z.string()).nullable().optional(),\n issues_detected: z.array(ModelScanIssueSchema).nullable().optional(),\n })\n .passthrough();\n\n/** Per-file scan data included in a scan creation request. */\nexport type FileScanData = z.infer<typeof FileScanDataSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Scan details (nested in create request)\n// ---------------------------------------------------------------------------\n\n/** Zod schema for detailed scan results submitted with a scan creation. */\nexport const ScanDetailsSchema = z\n .object({\n scanner_version: z.string(),\n time_started: z.string(),\n files: z.array(FileScanDataSchema),\n total_files_scanned: z.number().int(),\n total_files_skipped: z.number().int(),\n model_formats: z.array(z.string()),\n model_size_bytes: z.number().int(),\n scan_duration_ms: z.number().int(),\n error_code: z.string().nullable().optional(),\n error_message: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** Detailed scan results submitted with a scan creation request. */\nexport type ScanDetails = z.infer<typeof ScanDetailsSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Scan create request\n// ---------------------------------------------------------------------------\n\n/** Zod schema for creating a new model security scan. */\nexport const ScanCreateRequestSchema = z\n .object({\n model_uri: z.string(),\n security_group_uuid: z.string(),\n scan_origin: z.string(),\n allow_patterns: z.array(z.string()).nullable().optional(),\n ignore_patterns: z.array(z.string()).nullable().optional(),\n labels: z.array(LabelSchema).nullable().optional(),\n model_author: z.string().nullable().optional(),\n model_name: z.string().nullable().optional(),\n model_version: z.string().nullable().optional(),\n scan_details: ScanDetailsSchema.nullable().optional(),\n })\n .passthrough();\n\n/** Request body for creating a new model security scan. */\nexport type ScanCreateRequest = z.infer<typeof ScanCreateRequestSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Scan base response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for the base scan response returned by the API. */\nexport const ScanBaseResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n model_uri: z.string(),\n owner: z.string(),\n scan_origin: z.string(),\n security_group_uuid: z.string(),\n security_group_name: z.string(),\n model_version_uuid: z.string(),\n eval_outcome: z.string(),\n source_type: z.string(),\n created_by: z.string().nullable().optional(),\n enabled_rule_count_snapshot: z.number().int().nullable().optional(),\n error_code: z.string().nullable().optional(),\n error_message: z.string().nullable().optional(),\n eval_summary: EvalSummarySchema.nullable().optional(),\n labels: z.array(LabelSchema).optional(),\n model_formats: z.array(z.string()).nullable().optional(),\n scanner_version: z.string().nullable().optional(),\n time_started: z.string().nullable().optional(),\n total_files_scanned: z.number().int().nullable().optional(),\n total_files_skipped: z.number().int().nullable().optional(),\n })\n .passthrough();\n\n/** Base scan response from the Model Security API. */\nexport type ScanBaseResponse = z.infer<typeof ScanBaseResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Scan list\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a paginated list of scans. */\nexport const ScanListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n scans: z.array(ScanBaseResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of model security scans. */\nexport type ScanList = z.infer<typeof ScanListSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — File response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a file entry in the scanned model tree. */\nexport const FileResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n path: z.string(),\n parent_path: z.string(),\n type: z.string(),\n result: z.string(),\n model_version_uuid: z.string(),\n blob_id: z.string().nullable().optional(),\n formats: z.array(z.string()).nullable().optional(),\n scan_uuid: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** A file entry in the scanned model tree. */\nexport type FileResponse = z.infer<typeof FileResponseSchema>;\n\n/** Zod schema for a paginated list of files. */\nexport const FileListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n files: z.array(FileResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of scanned model files. */\nexport type FileList = z.infer<typeof FileListSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Rule evaluation response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a single rule evaluation result. */\nexport const RuleEvaluationResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n result: z.string(),\n violation_count: z.number().int(),\n rule_instance_uuid: z.string(),\n scan_uuid: z.string(),\n rule_name: z.string(),\n rule_description: z.string(),\n rule_instance_state: z.string(),\n })\n .passthrough();\n\n/** A single rule evaluation result for a scan. */\nexport type RuleEvaluationResponse = z.infer<typeof RuleEvaluationResponseSchema>;\n\n/** Zod schema for a paginated list of rule evaluations. */\nexport const RuleEvaluationListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n evaluations: z.array(RuleEvaluationResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of rule evaluations. */\nexport type RuleEvaluationList = z.infer<typeof RuleEvaluationListSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Violation response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a single violation response. */\nexport const ViolationResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.string(),\n rule_instance_uuid: z.string(),\n rule_name: z.string(),\n rule_description: z.string(),\n rule_instance_state: z.string(),\n file: z.string().nullable().optional(),\n hash: z.string().nullable().optional(),\n module: z.string().nullable().optional(),\n operator: z.string().nullable().optional(),\n threat: z.string().nullable().optional(),\n threat_description: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** A single violation with detailed rule information. */\nexport type ViolationResponse = z.infer<typeof ViolationResponseSchema>;\n\n/** Zod schema for a paginated list of violations. */\nexport const ViolationListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n violations: z.array(ViolationResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of rule violations. */\nexport type ViolationList = z.infer<typeof ViolationListSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Rule editable field & remediation\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a dropdown option on a rule editable field. */\nexport const RuleEditableFieldDropdownSchema = z\n .object({\n value: z.string(),\n label: z.string(),\n })\n .passthrough();\n\n/** A dropdown option for a rule editable field. */\nexport type RuleEditableFieldDropdown = z.infer<typeof RuleEditableFieldDropdownSchema>;\n\n/** Zod schema for a rule editable field definition. */\nexport const RuleEditableFieldSchema = z\n .object({\n attribute_name: z.string(),\n type: z.string(),\n display_name: z.string(),\n display_type: z.string(),\n description: z.string().nullable().optional(),\n dropdown_values: z.array(RuleEditableFieldDropdownSchema).nullable().optional(),\n })\n .passthrough();\n\n/** A rule editable field definition for UI rendering. */\nexport type RuleEditableField = z.infer<typeof RuleEditableFieldSchema>;\n\n/** Zod schema for rule remediation steps. */\nexport const RuleRemediationSchema = z\n .object({\n description: z.string(),\n steps: z.array(z.string()),\n url: z.string(),\n })\n .passthrough();\n\n/** Remediation steps for a security rule. */\nexport type RuleRemediation = z.infer<typeof RuleRemediationSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Rule configuration (used in group creation)\n// ---------------------------------------------------------------------------\n\n/** Zod schema for rule configuration during security group creation. */\nexport const RuleConfigurationSchema = z\n .object({\n field_values: z.record(z.unknown()).optional(),\n state: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** Configuration for customizing a rule during security group creation. */\nexport type RuleConfiguration = z.infer<typeof RuleConfigurationSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Model security rule response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a model security rule definition. */\nexport const ModelSecurityRuleResponseSchema = z\n .object({\n uuid: z.string(),\n name: z.string(),\n description: z.string(),\n rule_type: z.string(),\n compatible_sources: z.array(z.string()),\n default_state: z.string(),\n remediation: RuleRemediationSchema,\n editable_fields: z.array(RuleEditableFieldSchema),\n constant_values: z.record(z.unknown()),\n default_values: z.record(z.unknown()),\n })\n .passthrough();\n\n/** A model security rule definition. */\nexport type ModelSecurityRuleResponse = z.infer<typeof ModelSecurityRuleResponseSchema>;\n\n/** Zod schema for a paginated list of security rules. */\nexport const ListModelSecurityRulesResponseSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n rules: z.array(ModelSecurityRuleResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of model security rules. */\nexport type ListModelSecurityRulesResponse = z.infer<typeof ListModelSecurityRulesResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Rule instance\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a model security rule instance response. */\nexport const ModelSecurityRuleInstanceResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n security_group_uuid: z.string(),\n security_rule_uuid: z.string(),\n state: z.string(),\n rule: ModelSecurityRuleResponseSchema,\n field_values: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\n/** An instantiated rule that gets evaluated against scans. */\nexport type ModelSecurityRuleInstanceResponse = z.infer<\n typeof ModelSecurityRuleInstanceResponseSchema\n>;\n\n/** Zod schema for updating a rule instance. */\nexport const ModelSecurityRuleInstanceUpdateRequestSchema = z\n .object({\n security_group_uuid: z.string(),\n state: z.string().nullable().optional(),\n field_values: z.record(z.unknown()).nullable().optional(),\n })\n .passthrough();\n\n/** Request body for updating a rule instance. */\nexport type ModelSecurityRuleInstanceUpdateRequest = z.infer<\n typeof ModelSecurityRuleInstanceUpdateRequestSchema\n>;\n\n/** Zod schema for a paginated list of rule instances. */\nexport const ListModelSecurityRuleInstancesResponseSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n rule_instances: z.array(ModelSecurityRuleInstanceResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of model security rule instances. */\nexport type ListModelSecurityRuleInstancesResponse = z.infer<\n typeof ListModelSecurityRuleInstancesResponseSchema\n>;\n\n// ---------------------------------------------------------------------------\n// Management — Security group\n// ---------------------------------------------------------------------------\n\n/** Zod schema for creating a model security group. */\nexport const ModelSecurityGroupCreateRequestSchema = z\n .object({\n name: z.string(),\n source_type: z.string(),\n description: z.string().optional().default(''),\n rule_configurations: z.record(RuleConfigurationSchema).optional(),\n })\n .passthrough();\n\n/** Request body for creating a new model security group. */\nexport type ModelSecurityGroupCreateRequest = z.infer<typeof ModelSecurityGroupCreateRequestSchema>;\n\n/** Zod schema for a model security group response. */\nexport const ModelSecurityGroupResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n name: z.string(),\n description: z.string(),\n source_type: z.string(),\n state: z.string(),\n is_tombstone: z.boolean(),\n })\n .passthrough();\n\n/** A model security group with its configuration and state. */\nexport type ModelSecurityGroupResponse = z.infer<typeof ModelSecurityGroupResponseSchema>;\n\n/** Zod schema for updating a model security group. */\nexport const ModelSecurityGroupUpdateRequestSchema = z\n .object({\n name: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** Request body for updating a model security group. */\nexport type ModelSecurityGroupUpdateRequest = z.infer<typeof ModelSecurityGroupUpdateRequestSchema>;\n\n/** Zod schema for a paginated list of security groups. */\nexport const ListModelSecurityGroupsResponseSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n security_groups: z.array(ModelSecurityGroupResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of model security groups. */\nexport type ListModelSecurityGroupsResponse = z.infer<typeof ListModelSecurityGroupsResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — PyPI auth\n// ---------------------------------------------------------------------------\n\n/** Zod schema for PyPI authentication response. */\nexport const PyPIAuthResponseSchema = z\n .object({\n url: z.string(),\n expires_at: z.string(),\n })\n .passthrough();\n\n/** PyPI authentication response with Google Artifact Registry URL. */\nexport type PyPIAuthResponse = z.infer<typeof PyPIAuthResponseSchema>;\n","// src/models/red-team-enums.ts — typed enums for AIRS Red Teaming API values\n\n/** API endpoint accessibility type. */\nexport const ApiEndpointType = {\n PUBLIC: 'PUBLIC',\n PRIVATE: 'PRIVATE',\n NETWORK_BROKER: 'NETWORK_BROKER',\n} as const;\nexport type ApiEndpointType = (typeof ApiEndpointType)[keyof typeof ApiEndpointType];\n\n/** Attack lifecycle status. */\nexport const AttackStatus = {\n INIT: 'INIT',\n ATTACK: 'ATTACK',\n DETECTION: 'DETECTION',\n REPORT: 'REPORT',\n COMPLETED: 'COMPLETED',\n FAILED: 'FAILED',\n} as const;\nexport type AttackStatus = (typeof AttackStatus)[keyof typeof AttackStatus];\n\n/** Attack type classification. */\nexport const AttackType = {\n NORMAL: 'NORMAL',\n CUSTOM: 'CUSTOM',\n} as const;\nexport type AttackType = (typeof AttackType)[keyof typeof AttackType];\n\n/** Authentication type for target connections. */\nexport const AuthType = {\n OAUTH: 'OAUTH',\n ACCESS_TOKEN: 'ACCESS_TOKEN',\n} as const;\nexport type AuthType = (typeof AuthType)[keyof typeof AuthType];\n\n/** Target authentication type (distinct from Databricks AuthType). */\nexport const TargetAuthType = {\n HEADERS: 'HEADERS',\n BASIC_AUTH: 'BASIC_AUTH',\n OAUTH2: 'OAUTH2',\n} as const;\nexport type TargetAuthType = (typeof TargetAuthType)[keyof typeof TargetAuthType];\n\n/** Location for basic auth credentials. */\nexport const BasicAuthLocation = {\n HEADER: 'HEADER',\n PAYLOAD: 'PAYLOAD',\n} as const;\nexport type BasicAuthLocation = (typeof BasicAuthLocation)[keyof typeof BasicAuthLocation];\n\n/** Brand risk subcategories. */\nexport const BrandSubCategory = {\n COMPETITOR_ENDORSEMENTS: 'COMPETITOR_ENDORSEMENTS',\n BRAND_TARNISHING_SELF_CRITICISM: 'BRAND_TARNISHING_SELF_CRITICISM',\n DISCRIMINATING_CLAIMS: 'DISCRIMINATING_CLAIMS',\n POLITICAL_ENDORSEMENTS: 'POLITICAL_ENDORSEMENTS',\n} as const;\nexport type BrandSubCategory = (typeof BrandSubCategory)[keyof typeof BrandSubCategory];\n\n/** Compliance framework subcategories. */\nexport const ComplianceSubCategory = {\n OWASP: 'OWASP',\n MITRE_ATLAS: 'MITRE_ATLAS',\n NIST: 'NIST',\n DASF_V2: 'DASF_V2',\n} as const;\nexport type ComplianceSubCategory =\n (typeof ComplianceSubCategory)[keyof typeof ComplianceSubCategory];\n\n/** Whether a scan counts toward quota. */\nexport const CountedQuotaEnum = {\n HELD: 'HELD',\n COUNTED: 'COUNTED',\n NOT_COUNTED: 'NOT_COUNTED',\n} as const;\nexport type CountedQuotaEnum = (typeof CountedQuotaEnum)[keyof typeof CountedQuotaEnum];\n\n/** Date range filter for dashboard queries. */\nexport const DateRangeFilter = {\n LAST_7_DAYS: 'LAST_7_DAYS',\n LAST_15_DAYS: 'LAST_15_DAYS',\n LAST_30_DAYS: 'LAST_30_DAYS',\n ALL: 'ALL',\n} as const;\nexport type DateRangeFilter = (typeof DateRangeFilter)[keyof typeof DateRangeFilter];\n\n/** Error source for error log entries. */\nexport const ErrorSource = {\n TARGET: 'TARGET',\n JOB: 'JOB',\n SYSTEM: 'SYSTEM',\n VALIDATION: 'VALIDATION',\n TARGET_PROFILING: 'TARGET_PROFILING',\n} as const;\nexport type ErrorSource = (typeof ErrorSource)[keyof typeof ErrorSource];\n\n/** Red Team error type classification (prefixed to avoid conflict with SDK ErrorType). */\nexport const RedTeamErrorType = {\n CONTENT_FILTER: 'CONTENT_FILTER',\n RATE_LIMIT: 'RATE_LIMIT',\n AUTHENTICATION: 'AUTHENTICATION',\n NETWORK: 'NETWORK',\n VALIDATION: 'VALIDATION',\n NETWORK_CHANNEL: 'NETWORK_CHANNEL',\n UNKNOWN: 'UNKNOWN',\n} as const;\nexport type RedTeamErrorType = (typeof RedTeamErrorType)[keyof typeof RedTeamErrorType];\n\n/** Report download file format. */\nexport const FileFormat = {\n CSV: 'CSV',\n JSON: 'JSON',\n ALL: 'ALL',\n} as const;\nexport type FileFormat = (typeof FileFormat)[keyof typeof FileFormat];\n\n/** Dynamic scan goal type. */\nexport const GoalType = {\n BASE: 'BASE',\n TOOL_MISUSE: 'TOOL_MISUSE',\n GOAL_MANIPULATION: 'GOAL_MANIPULATION',\n} as const;\nexport type GoalType = (typeof GoalType)[keyof typeof GoalType];\n\n/** Goal type query parameter filter. */\nexport const GoalTypeQueryParam = {\n AGENT: 'AGENT',\n HUMAN_AUGMENTED: 'HUMAN_AUGMENTED',\n} as const;\nexport type GoalTypeQueryParam = (typeof GoalTypeQueryParam)[keyof typeof GoalTypeQueryParam];\n\n/** Guardrail action for runtime security policies. */\nexport const GuardrailAction = {\n ALLOW: 'ALLOW',\n BLOCK: 'BLOCK',\n} as const;\nexport type GuardrailAction = (typeof GuardrailAction)[keyof typeof GuardrailAction];\n\n/** Red team scan job status. */\nexport const JobStatus = {\n INIT: 'INIT',\n QUEUED: 'QUEUED',\n RUNNING: 'RUNNING',\n COMPLETED: 'COMPLETED',\n PARTIALLY_COMPLETE: 'PARTIALLY_COMPLETE',\n FAILED: 'FAILED',\n ABORTED: 'ABORTED',\n} as const;\nexport type JobStatus = (typeof JobStatus)[keyof typeof JobStatus];\n\n/** Job status values available for filtering (excludes INIT). */\nexport const JobStatusFilter = {\n QUEUED: 'QUEUED',\n RUNNING: 'RUNNING',\n COMPLETED: 'COMPLETED',\n PARTIALLY_COMPLETE: 'PARTIALLY_COMPLETE',\n FAILED: 'FAILED',\n ABORTED: 'ABORTED',\n} as const;\nexport type JobStatusFilter = (typeof JobStatusFilter)[keyof typeof JobStatusFilter];\n\n/** Red team scan job type. */\nexport const JobType = {\n STATIC: 'STATIC',\n DYNAMIC: 'DYNAMIC',\n CUSTOM: 'CUSTOM',\n} as const;\nexport type JobType = (typeof JobType)[keyof typeof JobType];\n\n/** Runtime security policy type. */\nexport const PolicyType = {\n PROMPT_INJECTION: 'PROMPT_INJECTION',\n TOXIC_CONTENT: 'TOXIC_CONTENT',\n CUSTOM_TOPIC_GUARDRAILS: 'CUSTOM_TOPIC_GUARDRAILS',\n MALICIOUS_CODE_DETECTION: 'MALICIOUS_CODE_DETECTION',\n MALICIOUS_URL_DETECTION: 'MALICIOUS_URL_DETECTION',\n SENSITIVE_DATA_PROTECTION: 'SENSITIVE_DATA_PROTECTION',\n} as const;\nexport type PolicyType = (typeof PolicyType)[keyof typeof PolicyType];\n\n/** Target profiling status. */\nexport const ProfilingStatus = {\n INIT: 'INIT',\n QUEUED: 'QUEUED',\n IN_PROGRESS: 'IN_PROGRESS',\n COMPLETED: 'COMPLETED',\n FAILED: 'FAILED',\n} as const;\nexport type ProfilingStatus = (typeof ProfilingStatus)[keyof typeof ProfilingStatus];\n\n/** Red Team risk category (prefixed to avoid conflict with SDK Category). */\nexport const RedTeamCategory = {\n SECURITY: 'SECURITY',\n SAFETY: 'SAFETY',\n COMPLIANCE: 'COMPLIANCE',\n BRAND: 'BRAND',\n} as const;\nexport type RedTeamCategory = (typeof RedTeamCategory)[keyof typeof RedTeamCategory];\n\n/** Target response mode. */\nexport const ResponseMode = {\n REST: 'REST',\n STREAMING: 'STREAMING',\n} as const;\nexport type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode];\n\n/** Risk rating levels. */\nexport const RiskRating = {\n LOW: 'LOW',\n MEDIUM: 'MEDIUM',\n HIGH: 'HIGH',\n CRITICAL: 'CRITICAL',\n} as const;\nexport type RiskRating = (typeof RiskRating)[keyof typeof RiskRating];\n\n/** Safety risk subcategories. */\nexport const SafetySubCategory = {\n BIAS: 'BIAS',\n CBRN: 'CBRN',\n CYBERCRIME: 'CYBERCRIME',\n DRUGS: 'DRUGS',\n HATE_TOXIC_ABUSE: 'HATE_TOXIC_ABUSE',\n NON_VIOLENT_CRIMES: 'NON_VIOLENT_CRIMES',\n POLITICAL: 'POLITICAL',\n SELF_HARM: 'SELF_HARM',\n SEXUAL: 'SEXUAL',\n VIOLENT_CRIMES_WEAPONS: 'VIOLENT_CRIMES_WEAPONS',\n} as const;\nexport type SafetySubCategory = (typeof SafetySubCategory)[keyof typeof SafetySubCategory];\n\n/** Security risk subcategories. */\nexport const SecuritySubCategory = {\n ADVERSARIAL_SUFFIX: 'ADVERSARIAL_SUFFIX',\n EVASION: 'EVASION',\n INDIRECT_PROMPT_INJECTION: 'INDIRECT_PROMPT_INJECTION',\n JAILBREAK: 'JAILBREAK',\n MULTI_TURN: 'MULTI_TURN',\n PROMPT_INJECTION: 'PROMPT_INJECTION',\n REMOTE_CODE_EXECUTION: 'REMOTE_CODE_EXECUTION',\n SYSTEM_PROMPT_LEAK: 'SYSTEM_PROMPT_LEAK',\n TOOL_LEAK: 'TOOL_LEAK',\n MALWARE_GENERATION: 'MALWARE_GENERATION',\n} as const;\nexport type SecuritySubCategory = (typeof SecuritySubCategory)[keyof typeof SecuritySubCategory];\n\n/** Severity filter levels. */\nexport const SeverityFilter = {\n LOW: 'LOW',\n MEDIUM: 'MEDIUM',\n HIGH: 'HIGH',\n CRITICAL: 'CRITICAL',\n} as const;\nexport type SeverityFilter = (typeof SeverityFilter)[keyof typeof SeverityFilter];\n\n/** Attack status query parameter filter. */\nexport const StatusQueryParam = {\n SUCCESSFUL: 'SUCCESSFUL',\n FAILED: 'FAILED',\n} as const;\nexport type StatusQueryParam = (typeof StatusQueryParam)[keyof typeof StatusQueryParam];\n\n/** Dynamic scan stream type. */\nexport const StreamType = {\n NORMAL: 'NORMAL',\n ADVERSARIAL: 'ADVERSARIAL',\n} as const;\nexport type StreamType = (typeof StreamType)[keyof typeof StreamType];\n\n/** Target connection provider type. */\nexport const TargetConnectionType = {\n DATABRICKS: 'DATABRICKS',\n BEDROCK: 'BEDROCK',\n OPENAI: 'OPENAI',\n HUGGING_FACE: 'HUGGING_FACE',\n CUSTOM: 'CUSTOM',\n REST: 'REST',\n STREAMING: 'STREAMING',\n WEBSOCKET: 'WEBSOCKET',\n} as const;\nexport type TargetConnectionType = (typeof TargetConnectionType)[keyof typeof TargetConnectionType];\n\n/** Target lifecycle status. */\nexport const TargetStatus = {\n DRAFT: 'DRAFT',\n VALIDATING: 'VALIDATING',\n VALIDATED: 'VALIDATED',\n ACTIVE: 'ACTIVE',\n INACTIVE: 'INACTIVE',\n FAILED: 'FAILED',\n PENDING_AUTH: 'PENDING_AUTH',\n} as const;\nexport type TargetStatus = (typeof TargetStatus)[keyof typeof TargetStatus];\n\n/** Target classification type. */\nexport const TargetType = {\n APPLICATION: 'APPLICATION',\n AGENT: 'AGENT',\n MODEL: 'MODEL',\n} as const;\nexport type TargetType = (typeof TargetType)[keyof typeof TargetType];\n","// src/models/red-team.ts — Zod schemas + types for AIRS Red Teaming API\n\nimport { z } from 'zod';\n\n// ---------------------------------------------------------------------------\n// Shared / utility schemas\n// ---------------------------------------------------------------------------\n\nexport const RedTeamPaginationSchema = z\n .object({ total_items: z.number().int().nullable().optional() })\n .passthrough();\nexport type RedTeamPagination = z.infer<typeof RedTeamPaginationSchema>;\n\nexport const CountByNameSchema = z\n .object({ name: z.string(), count: z.number().int() })\n .passthrough();\nexport type CountByName = z.infer<typeof CountByNameSchema>;\n\nexport const ValidationErrorSchema = z\n .object({\n loc: z.array(z.union([z.string(), z.number()])),\n msg: z.string(),\n type: z.string(),\n })\n .passthrough();\nexport type ValidationError = z.infer<typeof ValidationErrorSchema>;\n\nexport const HTTPValidationErrorSchema = z\n .object({ detail: z.array(ValidationErrorSchema).optional() })\n .passthrough();\nexport type HTTPValidationError = z.infer<typeof HTTPValidationErrorSchema>;\n\n// ---------------------------------------------------------------------------\n// Target context schemas (shared between data plane & management)\n// ---------------------------------------------------------------------------\n\nexport const TargetBackgroundSchema = z\n .object({\n industry: z.string().nullable().optional(),\n use_case: z.string().nullable().optional(),\n competitors: z.array(z.string()).nullable().optional(),\n })\n .passthrough();\nexport type TargetBackground = z.infer<typeof TargetBackgroundSchema>;\n\nexport const TargetAdditionalContextSchema = z\n .object({\n base_model: z.string().nullable().optional(),\n core_architecture: z.string().nullable().optional(),\n system_prompt: z.string().nullable().optional(),\n languages_supported: z.array(z.string()).nullable().optional(),\n banned_keywords: z.array(z.string()).nullable().optional(),\n tools_accessible: z.array(z.string()).nullable().optional(),\n })\n .passthrough();\nexport type TargetAdditionalContext = z.infer<typeof TargetAdditionalContextSchema>;\n\nexport const TargetMetadataSchema = z\n .object({\n multi_turn: z.boolean().optional(),\n multi_turn_error_message: z.string().nullable().optional(),\n rate_limit: z.number().int().nullable().optional(),\n rate_limit_enabled: z.boolean().optional(),\n rate_limit_error_code: z.number().int().nullable().optional(),\n rate_limit_error_json: z.record(z.unknown()).nullable().optional(),\n rate_limit_error_message: z.string().nullable().optional(),\n content_filter_enabled: z.boolean().optional(),\n content_filter_error_code: z.number().int().nullable().optional(),\n content_filter_error_json: z.record(z.unknown()).nullable().optional(),\n content_filter_error_message: z.string().nullable().optional(),\n probe_message: z.string().optional(),\n request_timeout: z.number().optional(),\n })\n .passthrough();\nexport type TargetMetadata = z.infer<typeof TargetMetadataSchema>;\n\n// ---------------------------------------------------------------------------\n// Multi-turn configuration schemas\n// ---------------------------------------------------------------------------\n\nexport const MultiTurnStatefulConfigSchema = z\n .object({\n type: z.string().default('stateful'),\n response_id_field: z.string(),\n request_id_field: z.string(),\n })\n .passthrough();\nexport type MultiTurnStatefulConfig = z.infer<typeof MultiTurnStatefulConfigSchema>;\n\nexport const MultiTurnStatelessConfigSchema = z\n .object({\n type: z.string().default('stateless'),\n assistant_role: z.string().nullable().optional(),\n })\n .passthrough();\nexport type MultiTurnStatelessConfig = z.infer<typeof MultiTurnStatelessConfigSchema>;\n\n// ---------------------------------------------------------------------------\n// Auth config schemas\n// ---------------------------------------------------------------------------\n\nexport const HeadersAuthConfigSchema = z\n .object({ auth_header: z.record(z.unknown()) })\n .passthrough();\nexport type HeadersAuthConfig = z.infer<typeof HeadersAuthConfigSchema>;\n\nexport const BasicAuthAuthConfigSchema = z\n .object({\n basic_auth_location: z.string().default('HEADER'),\n basic_auth_header: z.record(z.unknown()).nullable().optional(),\n })\n .passthrough();\nexport type BasicAuthAuthConfig = z.infer<typeof BasicAuthAuthConfigSchema>;\n\nexport const OAuth2AuthConfigSchema = z\n .object({\n oauth2_token_url: z.string(),\n oauth2_expiry_minutes: z.number().int().default(60),\n oauth2_headers: z.record(z.unknown()).optional(),\n oauth2_body_params: z.record(z.unknown()).optional(),\n oauth2_token_response_key: z.string().default('access_token'),\n oauth2_inject_header: z.record(z.unknown()),\n })\n .passthrough();\nexport type OAuth2AuthConfig = z.infer<typeof OAuth2AuthConfigSchema>;\n\nexport const AuthConfigSchema = z.union([\n HeadersAuthConfigSchema,\n BasicAuthAuthConfigSchema,\n OAuth2AuthConfigSchema,\n]);\nexport type AuthConfig = z.infer<typeof AuthConfigSchema>;\n\n// ---------------------------------------------------------------------------\n// Provider-specific connection parameter schemas\n// ---------------------------------------------------------------------------\n\nexport const OpenAIConnectionParamsSchema = z\n .object({\n api_key: z.string(),\n model_name: z.string(),\n })\n .passthrough();\nexport type OpenAIConnectionParams = z.infer<typeof OpenAIConnectionParamsSchema>;\n\nexport const HuggingfaceConnectionParamsSchema = z\n .object({\n api_key: z.string(),\n model_name: z.string(),\n })\n .passthrough();\nexport type HuggingfaceConnectionParams = z.infer<typeof HuggingfaceConnectionParamsSchema>;\n\nexport const DatabricksConnectionParamsSchema = z\n .object({\n auth_type: z.string(),\n workspace_url: z.string(),\n model_name: z.string(),\n access_token: z.string().nullable().optional(),\n client_id: z.string().nullable().optional(),\n secret: z.string().nullable().optional(),\n })\n .passthrough();\nexport type DatabricksConnectionParams = z.infer<typeof DatabricksConnectionParamsSchema>;\n\nexport const BedrockAccessConnectionParamsSchema = z\n .object({\n access_id: z.string(),\n access_secret: z.string(),\n region: z.string(),\n model_id: z.string(),\n session_token: z.string().nullable().optional(),\n })\n .passthrough();\nexport type BedrockAccessConnectionParams = z.infer<typeof BedrockAccessConnectionParamsSchema>;\n\n// ---------------------------------------------------------------------------\n// Connection parameter schemas (REST & Streaming)\n// ---------------------------------------------------------------------------\n\nexport const RestConnectionParamsSchema = z\n .object({\n api_endpoint: z.string().nullable().optional(),\n request_headers: z.record(z.unknown()).nullable().optional(),\n request_json: z.record(z.unknown()).nullable().optional(),\n response_json: z.record(z.unknown()).nullable().optional(),\n response_key: z.string().nullable().optional(),\n target_connection_config: z.unknown().nullable().optional(),\n curl: z.string().nullable().optional(),\n multi_turn_config: z.unknown().nullable().optional(),\n })\n .passthrough();\nexport type RestConnectionParams = z.infer<typeof RestConnectionParamsSchema>;\n\nexport const StreamingConnectionParamsSchema = RestConnectionParamsSchema.extend({\n response_stop_key: z.string(),\n response_stop_value: z.string(),\n}).passthrough();\nexport type StreamingConnectionParams = z.infer<typeof StreamingConnectionParamsSchema>;\n\nexport const WebSocketConnectionParamsSchema = RestConnectionParamsSchema.extend({\n ws_response_timeout: z.number().default(110),\n}).passthrough();\nexport type WebSocketConnectionParams = z.infer<typeof WebSocketConnectionParamsSchema>;\n\n/** Union of WebSocket, Streaming, and REST connection params. */\nexport const ConnectionParamsSchema = z.union([\n WebSocketConnectionParamsSchema,\n StreamingConnectionParamsSchema,\n RestConnectionParamsSchema,\n]);\nexport type ConnectionParams = z.infer<typeof ConnectionParamsSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Job / Scan schemas\n// ---------------------------------------------------------------------------\n\nexport const TargetJobRequestSchema = z\n .object({\n uuid: z.string(),\n version: z.number().int().nullable().optional(),\n })\n .passthrough();\nexport type TargetJobRequest = z.infer<typeof TargetJobRequestSchema>;\n\nexport const JobTimeRecordSchema = z\n .object({\n queued_at: z.string().nullable().optional(),\n started_at: z.string().nullable().optional(),\n completed_at: z.string().nullable().optional(),\n time_taken: z.string().nullable().optional(),\n })\n .passthrough();\nexport type JobTimeRecord = z.infer<typeof JobTimeRecordSchema>;\n\nexport const StaticJobMetadataSchema = z\n .object({\n categories: z.record(z.unknown()),\n rate_limit_enabled: z.boolean().optional(),\n rate_limit: z.number().int().nullable().optional(),\n rate_limit_error_code: z.number().int().nullable().optional(),\n rate_limit_error_message: z.string().nullable().optional(),\n rate_limit_error_json: z.unknown().optional(),\n content_filter_enabled: z.boolean().optional(),\n content_filter_error_code: z.number().int().nullable().optional(),\n content_filter_error_message: z.string().nullable().optional(),\n content_filter_error_json: z.unknown().optional(),\n })\n .passthrough();\nexport type StaticJobMetadata = z.infer<typeof StaticJobMetadataSchema>;\n\nexport const DynamicJobMetadataSchema = z\n .object({\n rate_limit_enabled: z.boolean().optional(),\n rate_limit: z.number().int().nullable().optional(),\n rate_limit_error_code: z.number().int().nullable().optional(),\n rate_limit_error_message: z.string().nullable().optional(),\n rate_limit_error_json: z.unknown().optional(),\n content_filter_enabled: z.boolean().optional(),\n content_filter_error_code: z.number().int().nullable().optional(),\n content_filter_error_message: z.string().nullable().optional(),\n content_filter_error_json: z.unknown().optional(),\n stream_breadth: z.number().int().optional(),\n stream_depth: z.number().int().optional(),\n max_tokens: z.number().int().optional(),\n context_size: z.number().int().optional(),\n attack_goals: z.array(z.unknown()).optional(),\n base_model: z.string().nullable().optional(),\n use_case: z.string().nullable().optional(),\n system_prompt: z.string().nullable().optional(),\n })\n .passthrough();\nexport type DynamicJobMetadata = z.infer<typeof DynamicJobMetadataSchema>;\n\nexport const CustomJobMetadataSchema = z\n .object({\n custom_prompt_sets: z.array(z.unknown()),\n rate_limit_enabled: z.boolean().optional(),\n rate_limit: z.number().int().nullable().optional(),\n rate_limit_error_code: z.number().int().nullable().optional(),\n rate_limit_error_message: z.string().nullable().optional(),\n rate_limit_error_json: z.unknown().optional(),\n content_filter_enabled: z.boolean().optional(),\n content_filter_error_code: z.number().int().nullable().optional(),\n content_filter_error_message: z.string().nullable().optional(),\n content_filter_error_json: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomJobMetadata = z.infer<typeof CustomJobMetadataSchema>;\n\nexport const JobCreateRequestSchema = z\n .object({\n name: z.string(),\n target: TargetJobRequestSchema,\n job_type: z.string(),\n job_metadata: z.union([\n StaticJobMetadataSchema,\n DynamicJobMetadataSchema,\n CustomJobMetadataSchema,\n ]),\n version: z.number().int().nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n })\n .passthrough();\nexport type JobCreateRequest = z.infer<typeof JobCreateRequestSchema>;\n\nexport const StaticJobReportStatsSchema = z\n .object({\n output_completion_percentage: z.number(),\n partial_report_unlocked: z.boolean().optional(),\n partial_report_unlocked_at: z.string().nullable().optional(),\n report_summary: z.string().nullable().optional(),\n })\n .passthrough();\nexport type StaticJobReportStats = z.infer<typeof StaticJobReportStatsSchema>;\n\nexport const DynamicJobReportStatsSchema = z\n .object({\n total_goals: z.number().int().optional(),\n total_streams: z.number().int().optional(),\n total_threats: z.number().int().optional(),\n goals_achieved: z.number().int().optional(),\n report_summary: z.string().nullable().optional(),\n })\n .passthrough();\nexport type DynamicJobReportStats = z.infer<typeof DynamicJobReportStatsSchema>;\n\nexport const TargetReferenceSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n target_type: z.string().nullable().optional(),\n connection_type: z.string().nullable().optional(),\n api_endpoint_type: z.string().nullable().optional(),\n response_mode: z.string().nullable().optional(),\n session_supported: z.boolean().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n status: z.string(),\n active: z.boolean(),\n validated: z.boolean(),\n version: z.number().int().nullable().optional(),\n secret_version: z.string().nullable().optional(),\n created_by_user_id: z.string().nullable().optional(),\n updated_by_user_id: z.string().nullable().optional(),\n created_at: z.string(),\n updated_at: z.string(),\n target_metadata: TargetMetadataSchema.optional(),\n target_background: TargetBackgroundSchema.nullable().optional(),\n profiling_status: z.string().nullable().optional(),\n additional_context: TargetAdditionalContextSchema.nullable().optional(),\n auth_type: z.string().nullable().optional(),\n })\n .passthrough();\nexport type TargetReference = z.infer<typeof TargetReferenceSchema>;\n\nexport const JobResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n name: z.string(),\n target: TargetReferenceSchema,\n job_type: z.string(),\n job_metadata: z.unknown(),\n version: z.number().int().nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n target_id: z.string(),\n target_type: z.string(),\n total: z.number().int().nullable().optional(),\n completed: z.number().int().nullable().optional(),\n status: z.string().optional(),\n score: z.number().nullable().optional(),\n asr: z.number().nullable().optional(),\n time_record: JobTimeRecordSchema.nullable().optional(),\n created_at: z.string().nullable().optional(),\n updated_at: z.string().nullable().optional(),\n created_by_user_id: z.string().nullable().optional(),\n report_stats: z.unknown().optional(),\n metering_quota_uuid: z.string().nullable().optional(),\n counted_towards_quota: z.string().optional(),\n invocation_id: z.string().nullable().optional(),\n })\n .passthrough();\nexport type JobResponse = z.infer<typeof JobResponseSchema>;\n\nexport const JobListResponseSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(JobResponseSchema),\n })\n .passthrough();\nexport type JobListResponse = z.infer<typeof JobListResponseSchema>;\n\nexport const JobAbortResponseSchema = z\n .object({\n job_id: z.string(),\n message: z.string(),\n })\n .passthrough();\nexport type JobAbortResponse = z.infer<typeof JobAbortResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Category schemas\n// ---------------------------------------------------------------------------\n\nexport const PrerequisiteModelSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n })\n .passthrough();\nexport type PrerequisiteModel = z.infer<typeof PrerequisiteModelSchema>;\n\nexport const SubCategoryModelSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n preselect: z.boolean().optional(),\n prerequisites: z.array(PrerequisiteModelSchema).nullable().optional(),\n active: z.boolean().optional(),\n })\n .passthrough();\nexport type SubCategoryModel = z.infer<typeof SubCategoryModelSchema>;\n\nexport const CategoryModelSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n preselect: z.boolean().optional(),\n sub_categories: z.array(SubCategoryModelSchema),\n })\n .passthrough();\nexport type CategoryModel = z.infer<typeof CategoryModelSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Attack schemas\n// ---------------------------------------------------------------------------\n\nexport const AttackOutputSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n attack_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n output: z.string(),\n threat: z.boolean().nullable().optional(),\n marked_safe: z.boolean().nullable().optional(),\n })\n .passthrough();\nexport type AttackOutput = z.infer<typeof AttackOutputSchema>;\n\nexport const AttackMultiTurnOutputSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n attack_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n output: z.string(),\n prompt: z.string(),\n turn: z.number().int(),\n threat: z.boolean().nullable().optional(),\n marked_safe: z.boolean().nullable().optional(),\n generation: z.number().int().optional(),\n multi_turn: z.boolean().optional(),\n })\n .passthrough();\nexport type AttackMultiTurnOutput = z.infer<typeof AttackMultiTurnOutputSchema>;\n\nexport const AttackListItemSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n prompt: z.string(),\n prompt_mapping_id: z.string(),\n prompt_id: z.string(),\n category: z.string(),\n sub_category: z.string(),\n category_display_name: z.string(),\n sub_category_display_name: z.string(),\n status: z.string().optional(),\n marked_safe: z.boolean().nullable().optional(),\n extra_info: z.record(z.unknown()).optional(),\n threat: z.boolean().nullable().optional(),\n attack_type: z.string().optional(),\n multi_turn: z.boolean().optional(),\n asr: z.number().nullable().optional(),\n version: z.number().int().nullable().optional(),\n severity: z.string().optional(),\n })\n .passthrough();\nexport type AttackListItem = z.infer<typeof AttackListItemSchema>;\n\nexport const AttackListResponseSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(AttackListItemSchema),\n })\n .passthrough();\nexport type AttackListResponse = z.infer<typeof AttackListResponseSchema>;\n\nexport const AttackDetailResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n prompt: z.string(),\n prompt_mapping_id: z.string(),\n prompt_id: z.string(),\n category: z.string(),\n sub_category: z.string(),\n category_display_name: z.string(),\n sub_category_display_name: z.string(),\n compliance_frameworks: z.array(z.unknown()),\n goal: z.string().nullable(),\n status: z.string().optional(),\n marked_safe: z.boolean().nullable().optional(),\n extra_info: z.record(z.unknown()).optional(),\n threat: z.boolean().nullable().optional(),\n attack_type: z.string().optional(),\n multi_turn: z.boolean().optional(),\n asr: z.number().nullable().optional(),\n version: z.number().int().nullable().optional(),\n severity: z.string().optional(),\n outputs: z.array(AttackOutputSchema).optional(),\n })\n .passthrough();\nexport type AttackDetailResponse = z.infer<typeof AttackDetailResponseSchema>;\n\nexport const AttackMultiTurnDetailResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n prompt: z.string(),\n prompt_mapping_id: z.string(),\n prompt_id: z.string(),\n category: z.string(),\n sub_category: z.string(),\n category_display_name: z.string(),\n sub_category_display_name: z.string(),\n compliance_frameworks: z.array(z.unknown()),\n goal: z.string().nullable(),\n status: z.string().optional(),\n marked_safe: z.boolean().nullable().optional(),\n extra_info: z.record(z.unknown()).optional(),\n threat: z.boolean().nullable().optional(),\n attack_type: z.string().optional(),\n multi_turn: z.boolean().optional(),\n asr: z.number().nullable().optional(),\n version: z.number().int().nullable().optional(),\n severity: z.string().optional(),\n outputs: z.array(AttackMultiTurnOutputSchema).optional(),\n })\n .passthrough();\nexport type AttackMultiTurnDetailResponse = z.infer<typeof AttackMultiTurnDetailResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Report schemas\n// ---------------------------------------------------------------------------\n\nexport const SubCategoryStatsSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n preselect: z.boolean().optional(),\n prerequisites: z.array(PrerequisiteModelSchema).nullable().optional(),\n active: z.boolean().optional(),\n successful: z.number().int(),\n failed: z.number().int(),\n total: z.number().int().optional(),\n })\n .passthrough();\nexport type SubCategoryStats = z.infer<typeof SubCategoryStatsSchema>;\n\nexport const CategoryReportSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n preselect: z.boolean().optional(),\n sub_categories: z.array(SubCategoryStatsSchema),\n asr: z.number(),\n total_prompts: z.number().int(),\n total_attacks: z.number().int(),\n successful: z.number().int(),\n failed: z.number().int(),\n })\n .passthrough();\nexport type CategoryReport = z.infer<typeof CategoryReportSchema>;\n\nexport const SeverityStatsSchema = z\n .object({\n severity: z.string(),\n successful: z.number().int().optional(),\n failed: z.number().int().optional(),\n })\n .passthrough();\nexport type SeverityStats = z.infer<typeof SeverityStatsSchema>;\n\nexport const SeverityReportSchema = z\n .object({\n stats: z.array(SeverityStatsSchema),\n successful: z.number().int().optional(),\n failed: z.number().int().optional(),\n total_attacks: z.number().int().optional(),\n })\n .passthrough();\nexport type SeverityReport = z.infer<typeof SeverityReportSchema>;\n\nexport const ComplianceTechniqueSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n compliance_id: z.string(),\n description: z.string(),\n link: z.string(),\n version: z.string(),\n active: z.boolean(),\n successful: z.number().int().optional(),\n failed: z.number().int().optional(),\n total: z.number().int().optional(),\n })\n .passthrough();\nexport type ComplianceTechnique = z.infer<typeof ComplianceTechniqueSchema>;\n\nexport const ComplianceReportSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n active: z.boolean(),\n version: z.string(),\n link: z.string(),\n techniques: z.array(ComplianceTechniqueSchema),\n score: z.number().int().optional(),\n })\n .passthrough();\nexport type ComplianceReport = z.infer<typeof ComplianceReportSchema>;\n\nexport const RuntimeSecurityPolicySchema = z\n .object({\n policy_id: z.string(),\n display_name: z.string(),\n config: z.record(z.unknown()),\n })\n .passthrough();\nexport type RuntimeSecurityPolicy = z.infer<typeof RuntimeSecurityPolicySchema>;\n\nexport const StaticJobRemediationSchema = z\n .object({\n remediation: z.string(),\n description: z.string(),\n mapping_remediation_id: z.string().nullable().optional(),\n subcategories: z.array(z.string()).nullable().optional(),\n effectiveness: z.number().int().optional(),\n ease_of_implementation: z.number().int().optional(),\n priority: z.number().int().optional(),\n resource_links: z.array(z.string()).optional(),\n categories: z.array(z.string()).nullable().optional(),\n })\n .passthrough();\nexport type StaticJobRemediation = z.infer<typeof StaticJobRemediationSchema>;\n\nexport const StaticJobRemediationRecommendationSchema = z\n .object({\n runtime_security_policy_configuration: z\n .array(RuntimeSecurityPolicySchema)\n .nullable()\n .optional(),\n other_measures: z.array(StaticJobRemediationSchema).optional(),\n })\n .passthrough();\nexport type StaticJobRemediationRecommendation = z.infer<\n typeof StaticJobRemediationRecommendationSchema\n>;\n\nexport const StaticJobReportSchema = z\n .object({\n severity_report: SeverityReportSchema,\n asr: z.number().nullable().optional(),\n score: z.number().nullable().optional(),\n security_report: CategoryReportSchema.nullable().optional(),\n safety_report: CategoryReportSchema.nullable().optional(),\n brand_report: CategoryReportSchema.nullable().optional(),\n compliance_report: z.array(ComplianceReportSchema).nullable().optional(),\n report_summary: z.string().nullable().optional(),\n recommendations: StaticJobRemediationRecommendationSchema.nullable().optional(),\n })\n .passthrough();\nexport type StaticJobReport = z.infer<typeof StaticJobReportSchema>;\n\nexport const DynamicJobReportSchema = z\n .object({\n total_goals: z.number().int().optional(),\n total_streams: z.number().int().optional(),\n total_threats: z.number().int().optional(),\n goals_achieved: z.number().int().optional(),\n report_summary: z.string().nullable().optional(),\n score: z.number().optional(),\n asr: z.number().optional(),\n })\n .passthrough();\nexport type DynamicJobReport = z.infer<typeof DynamicJobReportSchema>;\n\nexport const RemediationDetailSchema = z\n .object({\n remediation: z.string(),\n description: z.string(),\n resource_links: z.array(z.string()).optional(),\n priority_level: z.string().optional(),\n ease_of_implementation_level: z.string().optional(),\n effectiveness_level: z.string().optional(),\n })\n .passthrough();\nexport type RemediationDetail = z.infer<typeof RemediationDetailSchema>;\n\nexport const RemediationResponseSchema = z\n .object({ remediations: z.array(RemediationDetailSchema).optional() })\n .passthrough();\nexport type RemediationResponse = z.infer<typeof RemediationResponseSchema>;\n\nexport const RuntimeSecurityProfileResponseSchema = z\n .object({\n runtime_security_profile: z.array(RuntimeSecurityPolicySchema).nullable().optional(),\n })\n .passthrough();\nexport type RuntimeSecurityProfileResponse = z.infer<typeof RuntimeSecurityProfileResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Goal & Stream schemas (dynamic reports)\n// ---------------------------------------------------------------------------\n\nexport const GoalSchema = z\n .object({\n goal: z.string(),\n safe_response: z.string(),\n jailbroken_response: z.string(),\n goal_metadata: z.record(z.unknown()).optional(),\n custom_goal: z.boolean().optional(),\n goal_type: z.string().optional(),\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n goal_to_show: z.string().nullable().optional(),\n threat: z.boolean().optional(),\n version: z.number().int().nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n })\n .passthrough();\nexport type Goal = z.infer<typeof GoalSchema>;\n\nexport const GoalListResponseSchema = z\n .object({ pagination: RedTeamPaginationSchema, data: z.array(GoalSchema) })\n .passthrough();\nexport type GoalListResponse = z.infer<typeof GoalListResponseSchema>;\n\nexport const StreamIterationDataSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n stream_id: z.string(),\n goal_id: z.string(),\n iteration: z.number().int(),\n prompt: z.string(),\n techniques: z.string(),\n improvement: z.string(),\n prompts_objective: z.string(),\n summary: z.string(),\n output: z.string().nullable().optional(),\n score: z.number().int().nullable().optional(),\n judge_reasoning: z.string().nullable().optional(),\n threat: z.boolean().optional(),\n created_at: z.string().nullable().optional(),\n updated_at: z.string().nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n version: z.number().int().nullable().optional(),\n })\n .passthrough();\nexport type StreamIterationData = z.infer<typeof StreamIterationDataSchema>;\n\nexport const StreamDetailResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n goal_id: z.string(),\n stream_idx: z.number().int().optional(),\n iteration: z.number().int().optional(),\n goal: z.unknown().optional(),\n marked_safe: z.boolean().optional(),\n stream_type: z.string().nullable().optional(),\n threat: z.boolean().optional(),\n first_threat_iteration: StreamIterationDataSchema.nullable().optional(),\n created_at: z.string().nullable().optional(),\n updated_at: z.string().nullable().optional(),\n extra_info: z.record(z.unknown()).optional(),\n version: z.number().int().nullable().optional(),\n iterations: z.array(StreamIterationDataSchema).optional(),\n })\n .passthrough();\nexport type StreamDetailResponse = z.infer<typeof StreamDetailResponseSchema>;\n\nexport const StreamListResponseSchema = z\n .object({ pagination: RedTeamPaginationSchema, data: z.array(StreamDetailResponseSchema) })\n .passthrough();\nexport type StreamListResponse = z.infer<typeof StreamListResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Custom attack report schemas\n// ---------------------------------------------------------------------------\n\nexport const CustomAttackOutputSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n custom_attack_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n output: z.string(),\n threat: z.boolean().nullable().optional(),\n marked_safe: z.boolean().nullable().optional(),\n })\n .passthrough();\nexport type CustomAttackOutput = z.infer<typeof CustomAttackOutputSchema>;\n\nexport const PropertyAssignmentSchema = z\n .object({\n name: z.string(),\n value: z.string(),\n })\n .passthrough();\nexport type PropertyAssignment = z.infer<typeof PropertyAssignmentSchema>;\n\nexport const PropertyValueStatisticSchema = z\n .object({\n value: z.string(),\n successful_attack_count: z.number().int(),\n total_attack_count: z.number().int(),\n success_rate: z.number(),\n })\n .passthrough();\nexport type PropertyValueStatistic = z.infer<typeof PropertyValueStatisticSchema>;\n\nexport const PropertyStatisticSchema = z\n .object({\n property_name: z.string(),\n values: z.array(PropertyValueStatisticSchema),\n })\n .passthrough();\nexport type PropertyStatistic = z.infer<typeof PropertyStatisticSchema>;\n\nexport const PromptSetSummarySchema = z\n .object({\n prompt_set_id: z.string(),\n prompt_set_name: z.string(),\n total_prompts: z.number().int(),\n total_attacks: z.number().int(),\n total_threats: z.number().int(),\n failed_attacks: z.number().int(),\n threat_rate: z.number(),\n property_names: z.array(z.string()).optional(),\n property_statistics: z.array(PropertyStatisticSchema).optional(),\n })\n .passthrough();\nexport type PromptSetSummary = z.infer<typeof PromptSetSummarySchema>;\n\nexport const CustomAttackReportResponseSchema = z\n .object({\n total_prompts: z.number().int(),\n total_attacks: z.number().int(),\n total_threats: z.number().int(),\n failed_attacks: z.number().int(),\n score: z.number(),\n asr: z.number(),\n custom_attack_reports: z.array(PromptSetSummarySchema).optional(),\n property_statistics: z.array(PropertyStatisticSchema).optional(),\n })\n .passthrough();\nexport type CustomAttackReportResponse = z.infer<typeof CustomAttackReportResponseSchema>;\n\nexport const PromptSetsReportResponseSchema = z\n .object({\n prompt_sets: z.array(PromptSetSummarySchema),\n total_prompt_sets: z.number().int(),\n applied_filters: z.record(z.unknown()).optional(),\n })\n .passthrough();\nexport type PromptSetsReportResponse = z.infer<typeof PromptSetsReportResponseSchema>;\n\nexport const PromptDetailResponseSchema = z\n .object({\n prompt_id: z.string(),\n prompt_text: z.string(),\n goal: z.string().nullable().optional(),\n user_defined_goal: z.boolean().optional(),\n properties: z.array(PropertyAssignmentSchema).optional(),\n attack_id: z.string().nullable().optional(),\n threat: z.boolean().nullable().optional(),\n attack_outputs: z.array(CustomAttackOutputSchema).optional(),\n asr: z.number().nullable().optional(),\n prompt_set_id: z.string().nullable().optional(),\n prompt_set_name: z.string().nullable().optional(),\n })\n .passthrough();\nexport type PromptDetailResponse = z.infer<typeof PromptDetailResponseSchema>;\n\nexport const CustomAttacksListResponseSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(z.unknown()),\n total_attacks: z.number().int(),\n total_threats: z.number().int(),\n })\n .passthrough();\nexport type CustomAttacksListResponse = z.infer<typeof CustomAttacksListResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Dashboard schemas\n// ---------------------------------------------------------------------------\n\nexport const RiskLevelSchema = z\n .object({\n risk_rating: z.string(),\n total: z.number().int(),\n targets_by_type: z.array(CountByNameSchema).optional(),\n })\n .passthrough();\nexport type RiskLevel = z.infer<typeof RiskLevelSchema>;\n\nexport const ScanStatisticsResponseSchema = z\n .object({\n total_scans: z.number().int(),\n targets_scanned: z.number().int(),\n targets_scanned_by_type: z.array(CountByNameSchema).optional(),\n scan_status: z.array(CountByNameSchema).optional(),\n risk_profile: z.array(RiskLevelSchema).optional(),\n })\n .passthrough();\nexport type ScanStatisticsResponse = z.infer<typeof ScanStatisticsResponseSchema>;\n\nexport const ScoreTrendSeriesSchema = z\n .object({\n label: z.string(),\n data: z.array(z.number().nullable()),\n })\n .passthrough();\nexport type ScoreTrendSeries = z.infer<typeof ScoreTrendSeriesSchema>;\n\nexport const ScoreTrendResponseSchema = z\n .object({\n labels: z.array(z.string()),\n series: z.array(ScoreTrendSeriesSchema),\n })\n .passthrough();\nexport type ScoreTrendResponse = z.infer<typeof ScoreTrendResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Sentiment, Quota, Error Log schemas\n// ---------------------------------------------------------------------------\n\nexport const SentimentRequestSchema = z\n .object({\n job_id: z.string(),\n up_vote: z.boolean().optional(),\n down_vote: z.boolean().optional(),\n })\n .passthrough();\nexport type SentimentRequest = z.infer<typeof SentimentRequestSchema>;\n\nexport const SentimentResponseSchema = z\n .object({\n job_id: z.string(),\n up_vote: z.boolean().optional(),\n down_vote: z.boolean().optional(),\n })\n .passthrough();\nexport type SentimentResponse = z.infer<typeof SentimentResponseSchema>;\n\nexport const QuotaDetailsSchema = z\n .object({\n allocated: z.number().int(),\n unlimited: z.boolean(),\n consumed: z.number().int(),\n })\n .passthrough();\nexport type QuotaDetails = z.infer<typeof QuotaDetailsSchema>;\n\nexport const QuotaSummarySchema = z\n .object({\n static: QuotaDetailsSchema,\n dynamic: QuotaDetailsSchema,\n custom: QuotaDetailsSchema,\n })\n .passthrough();\nexport type QuotaSummary = z.infer<typeof QuotaSummarySchema>;\n\nexport const ErrorLogSchema = z\n .object({\n created_at: z.string(),\n updated_at: z.string(),\n job_id: z.string().nullable().optional(),\n target_id: z.string().nullable().optional(),\n target_version: z.number().int().nullable().optional(),\n attack_id: z.string().nullable().optional(),\n error_type: z.string().nullable().optional(),\n error_source: z.string().nullable().optional(),\n error_message: z.string().nullable().optional(),\n target_object: z.record(z.unknown()).nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n version: z.number().int().optional(),\n })\n .passthrough();\nexport type ErrorLog = z.infer<typeof ErrorLogSchema>;\n\nexport const ErrorLogListResponseSchema = z\n .object({ pagination: RedTeamPaginationSchema, data: z.array(ErrorLogSchema) })\n .passthrough();\nexport type ErrorLogListResponse = z.infer<typeof ErrorLogListResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Target schemas\n// ---------------------------------------------------------------------------\n\n/** Shared base fields for target create, update, and probe requests. */\nconst TargetRequestBaseFields = {\n name: z.string(),\n description: z.string().nullable().optional(),\n target_type: z.string().nullable().optional(),\n connection_type: z.string().nullable().optional(),\n api_endpoint_type: z.string().nullable().optional(),\n response_mode: z.string().nullable().optional(),\n connection_params: z\n .union([RestConnectionParamsSchema, StreamingConnectionParamsSchema])\n .nullable()\n .optional(),\n session_supported: z.boolean().optional(),\n target_metadata: TargetMetadataSchema.optional(),\n target_background: TargetBackgroundSchema.nullable().optional(),\n additional_context: TargetAdditionalContextSchema.nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n network_broker_channel_uuid: z.string().nullable().optional(),\n} as const;\n\nexport const TargetCreateRequestSchema = z.object(TargetRequestBaseFields).strict();\nexport type TargetCreateRequest = z.infer<typeof TargetCreateRequestSchema>;\n\nexport const TargetUpdateRequestSchema = z.object(TargetRequestBaseFields).strict();\nexport type TargetUpdateRequest = z.infer<typeof TargetUpdateRequestSchema>;\n\nexport const TargetContextUpdateSchema = z\n .object({\n target_background: TargetBackgroundSchema.nullable().optional(),\n additional_context: TargetAdditionalContextSchema.nullable().optional(),\n })\n .passthrough();\nexport type TargetContextUpdate = z.infer<typeof TargetContextUpdateSchema>;\n\nexport const TargetResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n name: z.string(),\n status: z.unknown(),\n active: z.boolean(),\n validated: z.boolean(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.unknown().optional(),\n target_type: z.unknown().optional(),\n connection_type: z.unknown().optional(),\n api_endpoint_type: z.unknown().optional(),\n response_mode: z.unknown().optional(),\n session_supported: z.boolean().optional(),\n extra_info: z.unknown().optional(),\n version: z.unknown().optional(),\n secret_version: z.unknown().optional(),\n created_by_user_id: z.unknown().optional(),\n updated_by_user_id: z.unknown().optional(),\n target_metadata: z.unknown().optional(),\n target_background: z.unknown().optional(),\n profiling_status: z.unknown().optional(),\n additional_context: z.unknown().optional(),\n auth_type: z.string().nullable().optional(),\n })\n .passthrough();\nexport type TargetResponse = z.infer<typeof TargetResponseSchema>;\n\nexport const TargetListItemSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n name: z.string(),\n status: z.unknown(),\n active: z.boolean(),\n validated: z.boolean(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.unknown().optional(),\n target_type: z.unknown().optional(),\n connection_type: z.unknown().optional(),\n api_endpoint_type: z.unknown().optional(),\n response_mode: z.unknown().optional(),\n session_supported: z.boolean().optional(),\n extra_info: z.unknown().optional(),\n version: z.unknown().optional(),\n secret_version: z.unknown().optional(),\n created_by_user_id: z.unknown().optional(),\n updated_by_user_id: z.unknown().optional(),\n auth_type: z.string().nullable().optional(),\n })\n .passthrough();\nexport type TargetListItem = z.infer<typeof TargetListItemSchema>;\n\nexport const TargetListSchema = z\n .object({ pagination: RedTeamPaginationSchema, data: z.array(TargetListItemSchema).optional() })\n .passthrough();\nexport type TargetList = z.infer<typeof TargetListSchema>;\n\nexport const TargetProbeRequestSchema = z\n .object({\n ...TargetRequestBaseFields,\n uuid: z.string().nullable().optional(),\n probe_fields: z.array(z.string()).nullable().optional(),\n })\n .strict();\nexport type TargetProbeRequest = z.infer<typeof TargetProbeRequestSchema>;\n\nexport const TargetAuthValidationRequestSchema = z\n .object({\n auth_type: z.string(),\n auth_config: z.unknown(),\n target_id: z.string().nullable().optional(),\n network_broker_channel_uuid: z.string().nullable().optional(),\n })\n .passthrough();\nexport type TargetAuthValidationRequest = z.infer<typeof TargetAuthValidationRequestSchema>;\n\nexport const TargetAuthValidationResponseSchema = z\n .object({\n validated: z.boolean(),\n token_preview: z.string().nullable().optional(),\n expires_in: z.number().int().nullable().optional(),\n })\n .passthrough();\nexport type TargetAuthValidationResponse = z.infer<typeof TargetAuthValidationResponseSchema>;\n\nexport const TargetProfileResponseSchema = z\n .object({\n target_id: z.string(),\n target_version: z.number().int(),\n status: z.string(),\n profiling_status: z.unknown().optional(),\n target_background: z.unknown().optional(),\n additional_context: z.unknown().optional(),\n ai_generated_fields: z.unknown().optional(),\n other_details: z.unknown().optional(),\n })\n .passthrough();\nexport type TargetProfileResponse = z.infer<typeof TargetProfileResponseSchema>;\n\nexport const TargetTemplateCollectionSchema = z\n .object({\n OPENAI: z.record(z.unknown()),\n HUGGING_FACE: z.record(z.unknown()),\n DATABRICKS: z.record(z.unknown()),\n BEDROCK: z.record(z.unknown()),\n REST: z.record(z.unknown()),\n STREAMING: z.record(z.unknown()),\n WEBSOCKET: z.record(z.unknown()),\n })\n .passthrough();\nexport type TargetTemplateCollection = z.infer<typeof TargetTemplateCollectionSchema>;\n\nexport const BaseResponseSchema = z\n .object({\n message: z.string(),\n status: z.number().int(),\n })\n .passthrough();\nexport type BaseResponse = z.infer<typeof BaseResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Custom attack / prompt set schemas\n// ---------------------------------------------------------------------------\n\nexport const PromptSetStatsSchema = z\n .object({\n total_prompts: z.number().int(),\n active_prompts: z.number().int(),\n inactive_prompts: z.number().int(),\n failed_prompts: z.number().int().optional(),\n validation_prompts: z.number().int().optional(),\n })\n .passthrough();\nexport type PromptSetStats = z.infer<typeof PromptSetStatsSchema>;\n\nexport const CustomPromptSetCreateRequestSchema = z\n .object({\n name: z.string(),\n description: z.unknown().optional(),\n property_names: z.array(z.string()).optional(),\n })\n .passthrough();\nexport type CustomPromptSetCreateRequest = z.infer<typeof CustomPromptSetCreateRequestSchema>;\n\nexport const CustomPromptSetUpdateRequestSchema = z\n .object({\n name: z.unknown().optional(),\n description: z.unknown().optional(),\n archive: z.unknown().optional(),\n property_names: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptSetUpdateRequest = z.infer<typeof CustomPromptSetUpdateRequestSchema>;\n\nexport const CustomPromptSetArchiveRequestSchema = z.object({ archive: z.boolean() }).passthrough();\nexport type CustomPromptSetArchiveRequest = z.infer<typeof CustomPromptSetArchiveRequestSchema>;\n\nexport const CustomPromptSetResponseSchema = z\n .object({\n uuid: z.string(),\n name: z.string(),\n active: z.boolean(),\n archive: z.boolean(),\n status: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.unknown().optional(),\n property_names: z.array(z.string()).optional(),\n properties: z.array(z.unknown()).optional(),\n stats: z.unknown().optional(),\n extra_info: z.unknown().optional(),\n version: z.unknown().optional(),\n created_by_user_id: z.unknown().optional(),\n updated_by_user_id: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptSetResponse = z.infer<typeof CustomPromptSetResponseSchema>;\n\nexport const CustomPromptSetListItemSchema = z\n .object({\n uuid: z.string(),\n name: z.string(),\n active: z.boolean(),\n archive: z.boolean(),\n status: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.unknown().optional(),\n property_names: z.array(z.string()).optional(),\n stats: z.unknown().optional(),\n created_by_user_id: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptSetListItem = z.infer<typeof CustomPromptSetListItemSchema>;\n\nexport const CustomPromptSetListSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(CustomPromptSetListItemSchema).optional(),\n })\n .passthrough();\nexport type CustomPromptSetList = z.infer<typeof CustomPromptSetListSchema>;\n\nexport const CustomPromptSetReferenceSchema = z\n .object({\n uuid: z.string(),\n name: z.string(),\n status: z.string(),\n active: z.boolean(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n version: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptSetReference = z.infer<typeof CustomPromptSetReferenceSchema>;\n\nexport const CustomPromptSetListActiveSchema = z\n .object({ data: z.array(CustomPromptSetReferenceSchema).optional() })\n .passthrough();\nexport type CustomPromptSetListActive = z.infer<typeof CustomPromptSetListActiveSchema>;\n\nexport const CustomPromptSetVersionInfoSchema = z\n .object({\n uuid: z.string(),\n status: z.string(),\n is_latest: z.boolean(),\n version: z.string().nullable().optional(),\n stats: PromptSetStatsSchema.nullable().optional(),\n snapshot_created_at: z.string().nullable().optional(),\n })\n .passthrough();\nexport type CustomPromptSetVersionInfo = z.infer<typeof CustomPromptSetVersionInfoSchema>;\n\nexport const CustomPromptCreateRequestSchema = z\n .object({\n prompt: z.string(),\n prompt_set_id: z.string(),\n goal: z.unknown().optional(),\n properties: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptCreateRequest = z.infer<typeof CustomPromptCreateRequestSchema>;\n\nexport const CustomPromptUpdateRequestSchema = z\n .object({\n prompt: z.unknown().optional(),\n goal: z.unknown().optional(),\n properties: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptUpdateRequest = z.infer<typeof CustomPromptUpdateRequestSchema>;\n\nexport const CustomPromptResponseSchema = z\n .object({\n uuid: z.string(),\n prompt: z.string(),\n user_defined_goal: z.boolean(),\n status: z.string(),\n active: z.boolean(),\n prompt_set_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n goal: z.unknown().optional(),\n properties: z.unknown().optional(),\n property_assignments: z.array(z.unknown()).optional(),\n detector_category: z.unknown().optional(),\n severity: z.unknown().optional(),\n extra_info: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptResponse = z.infer<typeof CustomPromptResponseSchema>;\n\nexport const CustomPromptListItemSchema = z\n .object({\n uuid: z.string(),\n prompt: z.string(),\n user_defined_goal: z.boolean(),\n status: z.string(),\n active: z.boolean(),\n created_at: z.string(),\n updated_at: z.string(),\n goal: z.unknown().optional(),\n properties: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptListItem = z.infer<typeof CustomPromptListItemSchema>;\n\nexport const CustomPromptListSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(CustomPromptListItemSchema).optional(),\n })\n .passthrough();\nexport type CustomPromptList = z.infer<typeof CustomPromptListSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Property schemas\n// ---------------------------------------------------------------------------\n\nexport const PropertyNameCreateRequestSchema = z.object({ name: z.string() }).passthrough();\nexport type PropertyNameCreateRequest = z.infer<typeof PropertyNameCreateRequestSchema>;\n\nexport const PropertyValueCreateRequestSchema = z\n .object({\n property_name: z.string(),\n property_value: z.string(),\n })\n .passthrough();\nexport type PropertyValueCreateRequest = z.infer<typeof PropertyValueCreateRequestSchema>;\n\nexport const PropertyDefinitionSchema = z\n .object({\n property_name: z.string(),\n created_at: z.string(),\n })\n .passthrough();\nexport type PropertyDefinition = z.infer<typeof PropertyDefinitionSchema>;\n\nexport const PropertyNamesListResponseSchema = z\n .object({ data: z.array(z.string()).optional() })\n .passthrough();\nexport type PropertyNamesListResponse = z.infer<typeof PropertyNamesListResponseSchema>;\n\nexport const PropertyValuesResponseSchema = z\n .object({\n name: z.string(),\n values: z.array(z.string()).optional(),\n })\n .passthrough();\nexport type PropertyValuesResponse = z.infer<typeof PropertyValuesResponseSchema>;\n\nexport const PropertyValuesMultipleResponseSchema = z\n .object({ data: z.record(z.array(z.string())).optional() })\n .passthrough();\nexport type PropertyValuesMultipleResponse = z.infer<typeof PropertyValuesMultipleResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Dashboard schemas\n// ---------------------------------------------------------------------------\n\nexport const DashboardOverviewResponseSchema = z\n .object({\n total_targets: z.number().int(),\n targets_by_type: z.array(CountByNameSchema).optional(),\n })\n .passthrough();\nexport type DashboardOverviewResponse = z.infer<typeof DashboardOverviewResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — EULA schemas\n// ---------------------------------------------------------------------------\n\nexport const EulaAcceptRequestSchema = z\n .object({\n eula_content: z.string(),\n accepted_at: z.string().nullable().optional(),\n })\n .passthrough();\nexport type EulaAcceptRequest = z.infer<typeof EulaAcceptRequestSchema>;\n\nexport const EulaContentResponseSchema = z\n .object({\n content: z.string(),\n })\n .passthrough();\nexport type EulaContentResponse = z.infer<typeof EulaContentResponseSchema>;\n\nexport const EulaResponseSchema = z\n .object({\n uuid: z.string().nullable().optional(),\n is_accepted: z.boolean(),\n accepted_at: z.string().nullable().optional(),\n accepted_by_user_id: z.string().nullable().optional(),\n })\n .passthrough();\nexport type EulaResponse = z.infer<typeof EulaResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Instance/Licensing schemas\n// ---------------------------------------------------------------------------\n\nexport const DeviceInstanceSchema = z\n .object({\n app_id: z.string(),\n region: z.string(),\n tenant_id: z.string(),\n tsg_id: z.string(),\n })\n .passthrough();\nexport type DeviceInstance = z.infer<typeof DeviceInstanceSchema>;\n\nexport const DeviceLicenseSchema = z\n .object({\n authorizationCode: z.string().optional(),\n expirationDate: z.string().optional(),\n licensePanDbIdentification: z.string().optional(),\n partNumber: z.string().optional(),\n serialNumber: z.string().optional(),\n subtypeName: z.string().optional(),\n registrationDate: z.string().optional(),\n })\n .passthrough();\nexport type DeviceLicense = z.infer<typeof DeviceLicenseSchema>;\n\nexport const DeviceSchema = z\n .object({\n serial_number: z.string(),\n model: z.string().optional(),\n sku: z.string().optional(),\n device_type: z.string().optional(),\n device_name: z.string().optional(),\n tsg_id: z.string().optional(),\n support_account_id: z.string().optional(),\n asset_type: z.string().optional(),\n licenses: z.array(DeviceLicenseSchema).optional(),\n })\n .passthrough();\nexport type Device = z.infer<typeof DeviceSchema>;\n\nexport const DeviceStatusSchema = z\n .object({\n status: z.string(),\n error: z.string().optional(),\n serial_number: z.string().optional(),\n })\n .passthrough();\nexport type DeviceStatus = z.infer<typeof DeviceStatusSchema>;\n\nexport const DeviceRequestSchema = z\n .object({\n instance: DeviceInstanceSchema,\n created_by: z.string().optional(),\n devices: z.array(DeviceSchema).optional(),\n })\n .passthrough();\nexport type DeviceRequest = z.infer<typeof DeviceRequestSchema>;\n\nexport const DeviceResponseSchema = z\n .object({\n devices: z.array(DeviceStatusSchema).optional(),\n status: z.string().optional(),\n })\n .passthrough();\nexport type DeviceResponse = z.infer<typeof DeviceResponseSchema>;\n\nexport const DeploymentProfileAttributeSchema = z\n .object({\n quantity: z.number().optional(),\n unit_of_measure: z.string().optional(),\n })\n .passthrough();\nexport type DeploymentProfileAttribute = z.infer<typeof DeploymentProfileAttributeSchema>;\n\nexport const DeploymentProfileRequestSchema = z\n .object({\n dAuthCode: z.string().optional(),\n deploymentProfileId: z.string().optional(),\n license_expiration: z.string().optional(),\n profileName: z.string().optional(),\n subType: z.string().optional(),\n subscriptions: z.string().optional(),\n type: z.string().optional(),\n aveTextRecord: z.number().default(0),\n attributes: z.array(DeploymentProfileAttributeSchema).optional(),\n })\n .passthrough();\nexport type DeploymentProfileRequest = z.infer<typeof DeploymentProfileRequestSchema>;\n\nexport const InstanceExtraDetailsSchema = z\n .object({\n deployment_profiles: z.array(DeploymentProfileRequestSchema).optional(),\n airs_shared_by_tsg: z.string().optional(),\n airs_unshared_dps: z.string().optional(),\n })\n .passthrough();\nexport type InstanceExtraDetails = z.infer<typeof InstanceExtraDetailsSchema>;\n\nexport const InstanceRequestSchema = z\n .object({\n tsg_id: z.string(),\n tenant_id: z.string(),\n app_id: z.string(),\n region: z.string(),\n support_account_id: z.string().optional(),\n support_account_name: z.string().optional(),\n created_by: z.string().optional(),\n internal: z.boolean().optional(),\n tenant_instance_name: z.string().optional(),\n extra: InstanceExtraDetailsSchema.optional(),\n iam_controlled: z.boolean().optional(),\n platform_region: z.string().optional(),\n csp_tenant_id: z.string().optional(),\n tsg_instances: z.unknown().optional(),\n })\n .passthrough();\nexport type InstanceRequest = z.infer<typeof InstanceRequestSchema>;\n\nexport const InstanceResponseSchema = z\n .object({\n tsg_id: z.string(),\n tenant_id: z.string().optional(),\n app_id: z.string().optional(),\n is_success: z.boolean().optional(),\n })\n .passthrough();\nexport type InstanceResponse = z.infer<typeof InstanceResponseSchema>;\n\nexport const InstanceGetResponseSchema = z\n .object({\n tsg_id: z.string(),\n tenant_id: z.string(),\n app_id: z.string(),\n region: z.string(),\n support_account_id: z.string().optional(),\n support_account_name: z.string().optional(),\n created_by: z.string().optional(),\n internal: z.boolean().optional(),\n tenant_instance_name: z.string().optional(),\n deployment_profiles: z.array(DeploymentProfileRequestSchema).optional(),\n })\n .passthrough();\nexport type InstanceGetResponse = z.infer<typeof InstanceGetResponseSchema>;\n\nexport const RegistryCredentialsSchema = z\n .object({\n token: z.string(),\n expiry: z.string(),\n })\n .passthrough();\nexport type RegistryCredentials = z.infer<typeof RegistryCredentialsSchema>;\n","import type { OAuthClient } from '../../management/oauth-client.js';\nimport type { AuthAdapter, PreparedRequest } from '../types.js';\n\n/**\n * @internal\n * Auth adapter that attaches an OAuth2 bearer token via {@link OAuthClient} and clears the cached\n * token on 401/403 to force a refresh on the free-retry attempt.\n */\nexport class OAuthAuth implements AuthAdapter {\n constructor(private readonly oauthClient: OAuthClient) {}\n\n async prepare(req: PreparedRequest): Promise<PreparedRequest> {\n const token = await this.oauthClient.getToken();\n return {\n ...req,\n headers: { ...req.headers, Authorization: `Bearer ${token}` },\n };\n }\n\n async onUnauthorized(res: Response): Promise<boolean> {\n if (res.status === 401 || res.status === 403) {\n this.oauthClient.clearToken();\n return true;\n }\n return false;\n }\n}\n","import { z } from 'zod';\n\n/** @internal Zod schema for an OAuth2 token response. */\nexport const OAuthTokenResponseSchema = z\n .object({\n access_token: z.string(),\n token_type: z.string().optional(),\n expires_in: z.number(),\n scope: z.string().optional(),\n })\n .passthrough();\n\n/** @internal OAuth2 token response with access token and expiry. */\nexport type OAuthTokenResponse = z.infer<typeof OAuthTokenResponseSchema>;\n","import { DEFAULT_TOKEN_ENDPOINT } from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { OAuthTokenResponseSchema } from '../models/oauth-token.js';\n\n/** Snapshot of the current token state (never exposes the actual token). */\nexport interface TokenInfo {\n /** Whether a token has been fetched. */\n hasToken: boolean;\n /** Whether the token is valid (not expired and outside the pre-expiry buffer). */\n isValid: boolean;\n /** Whether the token has passed its expiry time. */\n isExpired: boolean;\n /** Whether the token is within the pre-expiry buffer window. */\n isExpiringSoon: boolean;\n /** Milliseconds until the token expires (0 if expired or no token). */\n expiresInMs: number;\n /** Unix timestamp (ms) when the token expires (0 if no token). */\n expiresAt: number;\n}\n\n/** Options for constructing an {@link OAuthClient}. */\nexport interface OAuthClientOptions {\n /** OAuth2 client ID. */\n clientId: string;\n /** OAuth2 client secret. */\n clientSecret: string;\n /** Tenant Service Group ID. */\n tsgId: string;\n /** OAuth2 token endpoint URL. Defaults to Palo Alto Networks auth endpoint. */\n tokenEndpoint?: string;\n /** Pre-expiry buffer in ms. Token refreshes this many ms before expiry. Defaults to 30000 (30s). */\n tokenBufferMs?: number;\n /** Callback invoked after each successful token refresh with current {@link TokenInfo}. */\n onTokenRefresh?: (info: TokenInfo) => void;\n}\n\nconst DEFAULT_TOKEN_BUFFER_MS = 30_000; // refresh 30s before expiry\n\n/**\n * OAuth2 client_credentials token manager.\n * Caches tokens, refreshes before expiry, and deduplicates concurrent requests.\n */\nexport class OAuthClient {\n public readonly tokenEndpoint: string;\n private readonly clientId: string;\n private readonly clientSecret: string;\n private readonly tsgId: string;\n private readonly tokenBufferMs: number;\n private readonly onTokenRefresh?: (info: TokenInfo) => void;\n\n private accessToken: string | null = null;\n private expiresAt = 0;\n private pendingFetch: Promise<string> | null = null;\n\n constructor(opts: OAuthClientOptions) {\n this.clientId = opts.clientId;\n this.clientSecret = opts.clientSecret;\n this.tsgId = opts.tsgId;\n this.tokenEndpoint = opts.tokenEndpoint ?? DEFAULT_TOKEN_ENDPOINT;\n this.tokenBufferMs = opts.tokenBufferMs ?? DEFAULT_TOKEN_BUFFER_MS;\n this.onTokenRefresh = opts.onTokenRefresh;\n }\n\n /**\n * Get a valid access token, refreshing if needed.\n * @returns Bearer access token string.\n */\n async getToken(): Promise<string> {\n if (this.accessToken && Date.now() < this.expiresAt - this.tokenBufferMs) {\n return this.accessToken;\n }\n\n if (this.pendingFetch) {\n return this.pendingFetch;\n }\n\n this.pendingFetch = this.fetchToken().finally(() => {\n this.pendingFetch = null;\n });\n\n return this.pendingFetch;\n }\n\n /**\n * Clear the cached token, forcing a fresh fetch on next call.\n */\n clearToken(): void {\n this.accessToken = null;\n this.expiresAt = 0;\n }\n\n /**\n * Check if the current token has passed its expiry time. Returns true if no token exists.\n * @returns Whether the token is expired.\n */\n isTokenExpired(): boolean {\n if (!this.accessToken) return true;\n return Date.now() >= this.expiresAt;\n }\n\n /**\n * Check if the token is within the pre-expiry buffer window.\n * Returns true if no token exists.\n * @param bufferMs - Custom buffer in ms. Defaults to the configured `tokenBufferMs`.\n * @returns Whether the token is expiring soon.\n */\n isTokenExpiringSoon(bufferMs?: number): boolean {\n if (!this.accessToken) return true;\n const buffer = bufferMs ?? this.tokenBufferMs;\n return Date.now() >= this.expiresAt - buffer;\n }\n\n /**\n * Get a snapshot of the current token state without exposing the actual token value.\n * @returns Current {@link TokenInfo}.\n */\n getTokenInfo(): TokenInfo {\n const now = Date.now();\n const hasToken = this.accessToken !== null;\n const isExpired = !hasToken || now >= this.expiresAt;\n const isExpiringSoon = !hasToken || now >= this.expiresAt - this.tokenBufferMs;\n const expiresInMs = hasToken ? Math.max(0, this.expiresAt - now) : 0;\n return {\n hasToken,\n isValid: hasToken && !isExpiringSoon,\n isExpired,\n isExpiringSoon,\n expiresInMs,\n expiresAt: hasToken ? this.expiresAt : 0,\n };\n }\n\n private async fetchToken(): Promise<string> {\n const credentials = btoa(`${this.clientId}:${this.clientSecret}`);\n const body = new URLSearchParams({\n grant_type: 'client_credentials',\n scope: `tsg_id:${this.tsgId}`,\n });\n\n let response: Response;\n try {\n response = await fetch(this.tokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Authorization: `Basic ${credentials}`,\n },\n body: body.toString(),\n });\n } catch (err) {\n throw new AISecSDKException(\n `Token request failed: ${(err as Error).message}`,\n ErrorType.OAUTH_ERROR,\n );\n }\n\n if (!response.ok) {\n let errorMsg: string;\n try {\n const errorBody = (await response.json()) as Record<string, unknown>;\n errorMsg =\n (errorBody.error_description as string) ??\n (errorBody.error as string) ??\n `Token request failed with status ${response.status}`;\n } catch {\n errorMsg = `Token request failed with status ${response.status}`;\n }\n throw new AISecSDKException(errorMsg, ErrorType.OAUTH_ERROR);\n }\n\n const data = OAuthTokenResponseSchema.parse(await response.json());\n this.accessToken = data.access_token;\n this.expiresAt = Date.now() + data.expires_in * 1000;\n\n if (this.onTokenRefresh) {\n try {\n this.onTokenRefresh(this.getTokenInfo());\n } catch {\n // Don't let callback errors block token delivery\n }\n }\n\n return this.accessToken;\n }\n}\n","import { OAuthClient } from './management/oauth-client.js';\nimport { AISecSDKException, ErrorType } from './errors.js';\nimport { MAX_NUMBER_OF_RETRIES } from './constants.js';\nimport type { TokenInfo } from './management/oauth-client.js';\n\n/** Resolved OAuth service configuration returned by {@link resolveOAuthConfig}. */\nexport interface OAuthServiceConfig {\n /** Resolved API base URL. */\n baseUrl: string;\n /** Configured OAuth2 token manager. */\n oauthClient: OAuthClient;\n /** Clamped retry count. */\n numRetries: number;\n /** Resolved Tenant Service Group ID. */\n tsgId: string;\n}\n\n/** Options for {@link resolveOAuthConfig}. */\nexport interface ResolveOAuthConfigOptions {\n clientId?: string;\n clientSecret?: string;\n tsgId?: string;\n baseUrl: string;\n numRetries?: number;\n tokenEndpoint?: string;\n tokenBufferMs?: number;\n onTokenRefresh?: (info: TokenInfo) => void;\n /** Primary env var prefix, e.g. `'PANW_RED_TEAM'`. */\n primaryEnvPrefix: string;\n /** Optional fallback prefix (typically `'PANW_MGMT'`). */\n fallbackEnvPrefix?: string;\n}\n\n/**\n * Resolve OAuth2 credentials from options → primary env vars → fallback env vars,\n * validate presence, clamp retries, and create an {@link OAuthClient}.\n *\n * @param opts - Resolution options.\n * @returns Resolved config with baseUrl, oauthClient, and numRetries.\n * @throws {AISecSDKException} When required credentials are missing.\n * @internal\n */\nexport function resolveOAuthConfig(opts: ResolveOAuthConfigOptions): OAuthServiceConfig {\n const { primaryEnvPrefix, fallbackEnvPrefix } = opts;\n\n const clientId =\n opts.clientId ??\n process.env[`${primaryEnvPrefix}_CLIENT_ID`] ??\n (fallbackEnvPrefix ? process.env[`${fallbackEnvPrefix}_CLIENT_ID`] : undefined);\n\n const clientSecret =\n opts.clientSecret ??\n process.env[`${primaryEnvPrefix}_CLIENT_SECRET`] ??\n (fallbackEnvPrefix ? process.env[`${fallbackEnvPrefix}_CLIENT_SECRET`] : undefined);\n\n const tsgId =\n opts.tsgId ??\n process.env[`${primaryEnvPrefix}_TSG_ID`] ??\n (fallbackEnvPrefix ? process.env[`${fallbackEnvPrefix}_TSG_ID`] : undefined);\n\n const tokenEndpoint =\n opts.tokenEndpoint ??\n process.env[`${primaryEnvPrefix}_TOKEN_ENDPOINT`] ??\n (fallbackEnvPrefix ? process.env[`${fallbackEnvPrefix}_TOKEN_ENDPOINT`] : undefined);\n\n const numRetries = Math.min(\n Math.max(opts.numRetries ?? MAX_NUMBER_OF_RETRIES, 0),\n MAX_NUMBER_OF_RETRIES,\n );\n\n const envHint = fallbackEnvPrefix\n ? `${primaryEnvPrefix}_CLIENT_ID / ${fallbackEnvPrefix}_CLIENT_ID`\n : `${primaryEnvPrefix}_CLIENT_ID`;\n\n if (!clientId) {\n throw new AISecSDKException(\n `clientId is required (option or ${envHint} env var)`,\n ErrorType.MISSING_VARIABLE,\n );\n }\n\n const secretHint = fallbackEnvPrefix\n ? `${primaryEnvPrefix}_CLIENT_SECRET / ${fallbackEnvPrefix}_CLIENT_SECRET`\n : `${primaryEnvPrefix}_CLIENT_SECRET`;\n\n if (!clientSecret) {\n throw new AISecSDKException(\n `clientSecret is required (option or ${secretHint} env var)`,\n ErrorType.MISSING_VARIABLE,\n );\n }\n\n const tsgHint = fallbackEnvPrefix\n ? `${primaryEnvPrefix}_TSG_ID / ${fallbackEnvPrefix}_TSG_ID`\n : `${primaryEnvPrefix}_TSG_ID`;\n\n if (!tsgId) {\n throw new AISecSDKException(\n `tsgId is required (option or ${tsgHint} env var)`,\n ErrorType.MISSING_VARIABLE,\n );\n }\n\n const oauthClient = new OAuthClient({\n clientId,\n clientSecret,\n tsgId,\n tokenEndpoint,\n tokenBufferMs: opts.tokenBufferMs,\n onTokenRefresh: opts.onTokenRefresh,\n });\n\n return { baseUrl: opts.baseUrl, oauthClient, numRetries, tsgId };\n}\n","import { AISecSDKException, ErrorType } from './errors.js';\nimport { isValidUuid } from './utils.js';\n\n/**\n * @internal\n * Throw `AISecSDKException(USER_REQUEST_PAYLOAD_ERROR)` if `value` is not a valid RFC 4122 UUID.\n */\nexport function assertUuid(value: string, fieldName: string): void {\n if (!isValidUuid(value)) {\n throw new AISecSDKException(\n `Invalid ${fieldName}: ${value}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n}\n\n/**\n * @internal\n * Throw `AISecSDKException(USER_REQUEST_PAYLOAD_ERROR)` if `value.length` is outside `[min, max]`.\n */\nexport function assertLength(value: string, min: number, max: number, fieldName: string): void {\n const len = value.length;\n if (len < min || len > max) {\n throw new AISecSDKException(\n `Invalid ${fieldName}: length ${len} not in [${min}, ${max}]`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n}\n","import { MGMT_PROFILE_PATH, MGMT_PROFILES_TSG_PATH } from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { assertUuid } from '../validators.js';\nimport {\n SecurityProfileSchema,\n SecurityProfileListResponseSchema,\n DeleteProfileResponseSchema,\n type SecurityProfile,\n type CreateSecurityProfileRequest,\n type SecurityProfileListResponse,\n type DeleteProfileResponse,\n} from '../models/mgmt-security-profile.js';\n\n/** Pagination parameters for list operations. */\nexport interface PaginationOptions {\n /** Starting offset. Defaults to 0. */\n offset?: number;\n /** Max items to return. Defaults to 100. */\n limit?: number;\n}\n\n/** @internal */\nexport interface ProfilesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n tsgId: string;\n numRetries: number;\n}\n\n/** Client for AIRS security profile CRUD operations. */\nexport class ProfilesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly tsgId: string;\n private readonly numRetries: number;\n\n constructor(opts: ProfilesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.tsgId = opts.tsgId;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new security profile.\n * @param body - Profile configuration.\n * @returns The created security profile.\n */\n async create(body: CreateSecurityProfileRequest): Promise<SecurityProfile> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_PROFILE_PATH,\n body,\n responseSchema: SecurityProfileSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List security profiles for the TSG.\n * @param opts - Pagination options.\n * @returns Paginated list of security profiles.\n */\n async list(opts?: PaginationOptions): Promise<SecurityProfileListResponse> {\n const params: Record<string, string> = {\n offset: String(opts?.offset ?? 0),\n limit: String(opts?.limit ?? 100),\n };\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MGMT_PROFILES_TSG_PATH}/${this.tsgId}`,\n params,\n responseSchema: SecurityProfileListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a security profile by UUID.\n * Fetches all profiles and filters — no dedicated API endpoint exists.\n * @param profileId - UUID of the profile to retrieve.\n * @returns The matching security profile.\n */\n async get(profileId: string): Promise<SecurityProfile> {\n const { ai_profiles } = await this.list();\n const profile = ai_profiles.find((p) => p.profile_id === profileId);\n if (!profile) {\n throw new AISecSDKException(\n `Profile not found: ${profileId}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n return profile;\n }\n\n /**\n * Get a security profile by name.\n * Returns the highest-revision match (latest version).\n * @param profileName - Name of the profile to retrieve.\n * @returns The matching security profile with the highest revision.\n */\n async getByName(profileName: string): Promise<SecurityProfile> {\n const { ai_profiles } = await this.list();\n const matches = ai_profiles.filter((p) => p.profile_name === profileName);\n if (matches.length === 0) {\n throw new AISecSDKException(\n `Profile not found: ${profileName}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n return matches.reduce((best, p) => ((p.revision ?? 0) > (best.revision ?? 0) ? p : best));\n }\n\n /**\n * Update an existing security profile.\n * @param profileId - UUID of the profile to update.\n * @param body - Updated profile configuration.\n * @returns The updated security profile.\n */\n async update(profileId: string, body: CreateSecurityProfileRequest): Promise<SecurityProfile> {\n assertUuid(profileId, 'profile_id');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MGMT_PROFILE_PATH}/uuid/${profileId}`,\n body,\n responseSchema: SecurityProfileSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a security profile.\n * @param profileId - UUID of the profile to delete.\n * @returns Deletion confirmation message.\n */\n async delete(profileId: string): Promise<DeleteProfileResponse> {\n assertUuid(profileId, 'profile_id');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_PROFILE_PATH}/${profileId}`,\n responseSchema: DeleteProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Force-delete a security profile, bypassing safety checks.\n * @param profileId - UUID of the profile to force-delete.\n * @param updatedBy - Email of the user performing the deletion.\n * @returns Deletion confirmation message.\n */\n async forceDelete(profileId: string, updatedBy: string): Promise<DeleteProfileResponse> {\n assertUuid(profileId, 'profile_id');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_PROFILE_PATH}/${profileId}/force`,\n params: { updated_by: updatedBy },\n responseSchema: DeleteProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_TOPIC_PATH, MGMT_TOPICS_TSG_PATH, MGMT_TOPIC_FORCE_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { assertUuid } from '../validators.js';\nimport {\n CustomTopicSchema,\n CustomTopicListResponseSchema,\n DeleteTopicResponseSchema,\n type CustomTopic,\n type CreateCustomTopicRequest,\n type CustomTopicListResponse,\n type DeleteTopicResponse,\n} from '../models/mgmt-custom-topic.js';\nimport type { PaginationOptions } from './profiles.js';\n\n/** @internal */\nexport interface TopicsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n tsgId: string;\n numRetries: number;\n}\n\n/** Client for AIRS custom topic CRUD operations. */\nexport class TopicsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly tsgId: string;\n private readonly numRetries: number;\n\n constructor(opts: TopicsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.tsgId = opts.tsgId;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new custom topic.\n * @param body - Topic definition with name, description, and examples.\n * @returns The created custom topic.\n */\n async create(body: CreateCustomTopicRequest): Promise<CustomTopic> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_TOPIC_PATH,\n body,\n responseSchema: CustomTopicSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List custom topics for the TSG.\n * @param opts - Pagination options.\n * @returns Paginated list of custom topics.\n */\n async list(opts?: PaginationOptions): Promise<CustomTopicListResponse> {\n const params: Record<string, string> = {\n offset: String(opts?.offset ?? 0),\n limit: String(opts?.limit ?? 100),\n };\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MGMT_TOPICS_TSG_PATH}/${this.tsgId}`,\n params,\n responseSchema: CustomTopicListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update an existing custom topic.\n * @param topicId - UUID of the topic to update.\n * @param body - Updated topic definition.\n * @returns The updated custom topic.\n */\n async update(topicId: string, body: CreateCustomTopicRequest): Promise<CustomTopic> {\n assertUuid(topicId, 'topic_id');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MGMT_TOPIC_PATH}/uuid/${topicId}`,\n body,\n responseSchema: CustomTopicSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a custom topic. Fails if topic is referenced by a profile.\n * @param topicId - UUID of the topic to delete.\n * @returns Deletion confirmation message.\n */\n async delete(topicId: string): Promise<DeleteTopicResponse> {\n assertUuid(topicId, 'topic_id');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_TOPIC_PATH}/${topicId}`,\n responseSchema: DeleteTopicResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Force-delete a custom topic, removing it from any referencing profiles.\n * @param topicId - UUID of the topic to force-delete.\n * @param updatedBy - Optional. Email of the user performing the deletion.\n * @returns Deletion confirmation message.\n */\n async forceDelete(topicId: string, updatedBy?: string): Promise<DeleteTopicResponse> {\n assertUuid(topicId, 'topic_id');\n const params: Record<string, string> | undefined = updatedBy\n ? { updated_by: updatedBy }\n : undefined;\n\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_TOPIC_FORCE_PATH}/${topicId}`,\n params,\n responseSchema: DeleteTopicResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_API_KEY_PATH, MGMT_API_KEYS_TSG_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport type { PaginationOptions } from './profiles.js';\nimport {\n ApiKeySchema,\n ApiKeyListResponseSchema,\n ApiKeyDeleteResponseSchema,\n type ApiKey,\n type ApiKeyCreateRequest,\n type ApiKeyRegenerateRequest,\n type ApiKeyListResponse,\n type ApiKeyDeleteResponse,\n} from '../models/mgmt-api-key.js';\n\n/** @internal */\nexport interface ApiKeysClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n tsgId: string;\n numRetries: number;\n}\n\n/** Client for AIRS API key management operations. */\nexport class ApiKeysClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly tsgId: string;\n private readonly numRetries: number;\n\n constructor(opts: ApiKeysClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.tsgId = opts.tsgId;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new API key.\n * @param body - API key creation request.\n * @returns The created API key.\n */\n async create(body: ApiKeyCreateRequest): Promise<ApiKey> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_API_KEY_PATH,\n body,\n responseSchema: ApiKeySchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List API keys for the TSG.\n * @param opts - Pagination options.\n * @returns Paginated list of API keys.\n */\n async list(opts?: PaginationOptions): Promise<ApiKeyListResponse> {\n const params: Record<string, string> = {\n offset: String(opts?.offset ?? 0),\n limit: String(opts?.limit ?? 100),\n };\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MGMT_API_KEYS_TSG_PATH}/${this.tsgId}`,\n params,\n responseSchema: ApiKeyListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete an API key by name.\n * @param apiKeyName - Name of the API key to delete.\n * @param updatedBy - Email of user performing the deletion.\n * @returns Deletion confirmation.\n */\n async delete(apiKeyName: string, updatedBy: string): Promise<ApiKeyDeleteResponse> {\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_API_KEY_PATH}/delete/${encodeURIComponent(apiKeyName)}`,\n params: { updated_by: updatedBy },\n responseSchema: ApiKeyDeleteResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Regenerate an API key.\n * @param apiKeyId - UUID of the API key to regenerate.\n * @param body - Regeneration request with rotation config.\n * @returns The regenerated API key.\n */\n async regenerate(apiKeyId: string, body: ApiKeyRegenerateRequest): Promise<ApiKey> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${MGMT_API_KEY_PATH}/regenerate/${encodeURIComponent(apiKeyId)}`,\n body,\n responseSchema: ApiKeySchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_CUSTOMER_APP_PATH, MGMT_CUSTOMER_APPS_TSG_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport type { PaginationOptions } from './profiles.js';\nimport {\n CustomerAppSchema,\n CustomerAppListResponseSchema,\n type CustomerApp,\n type CustomerAppListResponse,\n} from '../models/mgmt-customer-app.js';\n\n/** @internal */\nexport interface CustomerAppsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n tsgId: string;\n numRetries: number;\n}\n\n/** Client for AIRS customer application management operations. */\nexport class CustomerAppsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly tsgId: string;\n private readonly numRetries: number;\n\n constructor(opts: CustomerAppsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.tsgId = opts.tsgId;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Get a customer app by name.\n * @param appName - Name of the customer app.\n * @returns The customer app.\n */\n async get(appName: string): Promise<CustomerApp> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MGMT_CUSTOMER_APP_PATH,\n params: { app_name: appName },\n responseSchema: CustomerAppSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List customer apps for the TSG.\n * @param opts - Pagination options.\n * @returns Paginated list of customer apps.\n */\n async list(opts?: PaginationOptions): Promise<CustomerAppListResponse> {\n const params: Record<string, string> = {\n offset: String(opts?.offset ?? 0),\n limit: String(opts?.limit ?? 100),\n };\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MGMT_CUSTOMER_APPS_TSG_PATH}/${this.tsgId}`,\n params,\n responseSchema: CustomerAppListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a customer app.\n * @param customerAppId - UUID of the customer app to update.\n * @param request - Updated customer app data.\n * @returns The updated customer app.\n */\n async update(customerAppId: string, body: CustomerApp): Promise<CustomerApp> {\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: MGMT_CUSTOMER_APP_PATH,\n params: { customer_app_id: customerAppId },\n body,\n responseSchema: CustomerAppSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a customer app.\n * @param appName - Name of the customer app to delete.\n * @param updatedBy - Email of user performing the deletion.\n * @returns The deleted customer app.\n */\n async delete(appName: string, updatedBy: string): Promise<CustomerApp> {\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: MGMT_CUSTOMER_APP_PATH,\n params: { app_name: appName, updated_by: updatedBy },\n responseSchema: CustomerAppSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_DLP_PROFILES_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n DlpProfileListResponseSchema,\n type DlpProfileListResponse,\n} from '../models/mgmt-dlp-profile.js';\n\n/** @internal */\nexport interface DlpProfilesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for listing DLP profiles. */\nexport class DlpProfilesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: DlpProfilesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * List all DLP profiles for the TSG.\n * @returns List of DLP profiles.\n */\n async list(): Promise<DlpProfileListResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MGMT_DLP_PROFILES_PATH,\n responseSchema: DlpProfileListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_DEPLOYMENT_PROFILES_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n DeploymentProfilesResponseSchema,\n type DeploymentProfilesResponse,\n} from '../models/mgmt-deployment-profile.js';\n\n/** @internal */\nexport interface DeploymentProfilesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Options for listing deployment profiles. */\nexport interface DeploymentProfileListOptions {\n /** Include unactivated deployment profiles. */\n unactivated?: boolean;\n}\n\n/** Client for listing deployment profiles. */\nexport class DeploymentProfilesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: DeploymentProfilesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * List deployment profiles for the TSG.\n * @param opts - Optional filter options.\n * @returns Deployment profiles response.\n */\n async list(opts?: DeploymentProfileListOptions): Promise<DeploymentProfilesResponse> {\n const params: Record<string, string> = {};\n if (opts?.unactivated !== undefined) params.unactivated = String(opts.unactivated);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MGMT_DEPLOYMENT_PROFILES_PATH,\n params: Object.keys(params).length > 0 ? params : undefined,\n responseSchema: DeploymentProfilesResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_SCAN_LOGS_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { PaginatedScanResultsSchema, type PaginatedScanResults } from '../models/mgmt-scan-log.js';\n\n/** @internal */\nexport interface ScanLogsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Options for querying scan logs. */\nexport interface ScanLogQueryOptions {\n /** Time interval value. */\n time_interval: number;\n /** Time unit (e.g. 'hour', 'day'). */\n time_unit: string;\n /** Page number (1-based). */\n pageNumber: number;\n /** Number of records per page. */\n pageSize: number;\n /** Filter: 'all', 'benign', or 'threat'. */\n filter: string;\n /** Encrypted page token for pagination continuation. */\n page_token?: string;\n}\n\n/** Client for retrieving scan logs. */\nexport class ScanLogsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ScanLogsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Retrieve scan logs by time interval.\n * @param opts - Query options including time range, pagination, and filter.\n * @returns Paginated scan results.\n */\n async query(opts: ScanLogQueryOptions): Promise<PaginatedScanResults> {\n const params: Record<string, string> = {\n time_interval: String(opts.time_interval),\n time_unit: opts.time_unit,\n pageNumber: String(opts.pageNumber),\n pageSize: String(opts.pageSize),\n filter: opts.filter,\n };\n\n const body = opts.page_token ? { page_token: opts.page_token } : undefined;\n\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_SCAN_LOGS_PATH,\n params,\n body,\n responseSchema: PaginatedScanResultsSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport { MGMT_OAUTH_INVALIDATE_PATH, MGMT_OAUTH_TOKEN_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n Oauth2TokenSchema,\n type ClientIdAndCustomerApp,\n type Oauth2Token,\n} from '../models/mgmt-oauth.js';\n\n/** @internal */\nexport interface OAuthManagementClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Options for getting an OAuth token. */\nexport interface GetTokenOptions {\n /** Client ID and customer app. */\n body: ClientIdAndCustomerApp;\n /** Token TTL interval. */\n tokenTtlInterval?: number;\n /** Token TTL unit (e.g. 'hours'). */\n tokenTtlUnit?: string;\n}\n\n/** Client for OAuth token management operations. */\nexport class OAuthManagementClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: OAuthManagementClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Invalidate an OAuth token.\n * @param token - The OAuth token to invalidate.\n * @param body - Client ID and customer app.\n * @returns Confirmation string.\n */\n async invalidateToken(token: string, body: ClientIdAndCustomerApp): Promise<string> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_OAUTH_INVALIDATE_PATH,\n params: { token },\n body,\n responseSchema: z.string(),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get an OAuth token for client credentials.\n * @param opts - Token request options.\n * @returns OAuth2 token response.\n */\n async getAccessToken(opts: GetTokenOptions): Promise<Oauth2Token> {\n const params: Record<string, string> = {};\n if (opts.tokenTtlInterval !== undefined)\n params.tokenTtlInterval = String(opts.tokenTtlInterval);\n if (opts.tokenTtlUnit !== undefined) params.tokenTtlUnit = opts.tokenTtlUnit;\n\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_OAUTH_TOKEN_PATH,\n params: Object.keys(params).length > 0 ? params : undefined,\n body: opts.body,\n responseSchema: Oauth2TokenSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { DEFAULT_MGMT_ENDPOINT, MGMT_ENDPOINT } from '../constants.js';\nimport { OAuthAuth } from '../http/auth/oauth.js';\nimport { resolveOAuthConfig } from '../oauth-config.js';\nimport { ProfilesClient } from './profiles.js';\nimport { TopicsClient } from './topics.js';\nimport { ApiKeysClient } from './api-keys.js';\nimport { CustomerAppsClient } from './customer-apps.js';\nimport { DlpProfilesClient } from './dlp-profiles.js';\nimport { DeploymentProfilesClient } from './deployment-profiles.js';\nimport { ScanLogsClient } from './scan-logs.js';\nimport { OAuthManagementClient } from './oauth-management.js';\n\n/** Options for constructing a {@link ManagementClient}. */\nexport interface ManagementClientOptions {\n /** OAuth2 client ID. Falls back to `PANW_MGMT_CLIENT_ID` env var. */\n clientId?: string;\n /** OAuth2 client secret. Falls back to `PANW_MGMT_CLIENT_SECRET` env var. */\n clientSecret?: string;\n /** Tenant Service Group ID. Falls back to `PANW_MGMT_TSG_ID` env var. */\n tsgId?: string;\n /** Management API endpoint URL. Falls back to `PANW_MGMT_ENDPOINT` env var. */\n apiEndpoint?: string;\n /** OAuth2 token endpoint URL. Falls back to `PANW_MGMT_TOKEN_ENDPOINT` env var. */\n tokenEndpoint?: string;\n /** Max retry attempts (0–5). Defaults to 5. */\n numRetries?: number;\n}\n\n/**\n * Client for AIRS management API operations.\n * Authenticates via OAuth2 client_credentials flow.\n */\nexport class ManagementClient {\n public readonly profiles: ProfilesClient;\n public readonly topics: TopicsClient;\n public readonly apiKeys: ApiKeysClient;\n public readonly customerApps: CustomerAppsClient;\n public readonly dlpProfiles: DlpProfilesClient;\n public readonly deploymentProfiles: DeploymentProfilesClient;\n public readonly scanLogs: ScanLogsClient;\n public readonly oauth: OAuthManagementClient;\n\n constructor(opts: ManagementClientOptions = {}) {\n const apiEndpoint = opts.apiEndpoint ?? process.env[MGMT_ENDPOINT] ?? DEFAULT_MGMT_ENDPOINT;\n\n const { baseUrl, oauthClient, numRetries, tsgId } = resolveOAuthConfig({\n clientId: opts.clientId,\n clientSecret: opts.clientSecret,\n tsgId: opts.tsgId,\n baseUrl: apiEndpoint,\n numRetries: opts.numRetries,\n tokenEndpoint: opts.tokenEndpoint,\n primaryEnvPrefix: 'PANW_MGMT',\n });\n\n const auth = new OAuthAuth(oauthClient);\n\n this.profiles = new ProfilesClient({ baseUrl, auth, tsgId, numRetries });\n this.topics = new TopicsClient({ baseUrl, auth, tsgId, numRetries });\n this.apiKeys = new ApiKeysClient({ baseUrl, auth, tsgId, numRetries });\n this.customerApps = new CustomerAppsClient({ baseUrl, auth, tsgId, numRetries });\n this.dlpProfiles = new DlpProfilesClient({ baseUrl, auth, numRetries });\n this.deploymentProfiles = new DeploymentProfilesClient({ baseUrl, auth, numRetries });\n this.scanLogs = new ScanLogsClient({ baseUrl, auth, numRetries });\n this.oauth = new OAuthManagementClient({ baseUrl, auth, numRetries });\n }\n}\n","/**\n * Pagination + search options shared by every list endpoint across the OAuth domains.\n * Sub-clients extend this with endpoint-specific filter fields and merge their additions\n * into the params record returned by {@link serializeListing}.\n */\nexport interface ListingOptions {\n /** Number of records to skip from the start. */\n skip?: number;\n /** Max records to return. */\n limit?: number;\n /** Free-text search filter. */\n search?: string;\n}\n\n/**\n * @internal\n * Serialize the canonical listing fields into a string-keyed params record. Extra fields on\n * the input are ignored — callers add their own endpoint-specific filters to the result.\n */\nexport function serializeListing(opts?: ListingOptions): Record<string, string> {\n const params: Record<string, string> = {};\n if (opts?.skip !== undefined) params.skip = String(opts.skip);\n if (opts?.limit !== undefined) params.limit = String(opts.limit);\n if (opts?.search !== undefined) params.search = opts.search;\n return params;\n}\n","import {\n MODEL_SEC_SCANS_PATH,\n MODEL_SEC_EVALUATIONS_PATH,\n MODEL_SEC_VIOLATIONS_PATH,\n} from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing, type ListingOptions } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n ScanBaseResponseSchema,\n ScanListSchema,\n RuleEvaluationListSchema,\n RuleEvaluationResponseSchema,\n FileListSchema,\n LabelsResponseSchema,\n ViolationListSchema,\n ViolationResponseSchema,\n LabelKeyListSchema,\n LabelValueListSchema,\n type ScanCreateRequest,\n type ScanBaseResponse,\n type ScanList,\n type RuleEvaluationList,\n type RuleEvaluationResponse,\n type FileList,\n type LabelsCreateRequest,\n type LabelsResponse,\n type ViolationList,\n type ViolationResponse,\n type LabelKeyList,\n type LabelValueList,\n} from '../models/model-security.js';\n\n/** Pagination + filter options for model security scan listing. */\nexport interface ModelSecurityScanListOptions extends ListingOptions {\n /** Sort field: 'created_at' or 'updated_at'. */\n sort_by?: string;\n /** Sort order: 'asc' or 'desc'. */\n sort_order?: string;\n /** Search query (matches UUID or name, 3-1000 chars). */\n search_query?: string;\n /** Filter by evaluation outcomes (array). */\n eval_outcomes?: string[];\n /** Filter by source types (array). */\n source_types?: string[];\n /** Filter by security group UUID. */\n security_group_uuid?: string;\n /** Filter by start time (ISO datetime). */\n start_time?: string;\n /** Filter by end time (ISO datetime). */\n end_time?: string;\n /** Labels query filter (max 4096 chars). */\n labels_query?: string;\n}\n\n/** Options for listing rule evaluations within a scan. */\nexport interface ModelSecurityEvaluationListOptions extends ListingOptions {\n /** Sort field: 'created_at' or 'updated_at'. */\n sort_field?: string;\n /** Sort order: 'asc' or 'desc'. */\n sort_order?: string;\n /** Filter by evaluation result: 'PASSED', 'FAILED', or 'ERROR'. */\n result?: string;\n /** Filter by rule instance UUID. */\n rule_instance_uuid?: string;\n}\n\n/** Options for listing files within a scan. */\nexport interface ModelSecurityFileListOptions extends ListingOptions {\n /** Sort field: 'path' or 'type'. */\n sort_field?: string;\n /** Sort direction: 'asc' or 'desc'. */\n sort_dir?: string;\n /** Filter by file type. */\n type?: string;\n /** Filter by file result. */\n result?: string;\n /** Filter files by path within the scan (default \"/\"). */\n query_path?: string;\n}\n\n/** Options for listing label keys or values. */\nexport type ModelSecurityLabelListOptions = ListingOptions;\n\n/** Options for listing violations. */\nexport type ModelSecurityViolationListOptions = ListingOptions;\n\n/** @internal */\nexport interface ModelSecurityScansClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\nfunction buildScanListParams(\n opts?: ModelSecurityScanListOptions,\n): Record<string, string | string[]> {\n const params: Record<string, string | string[]> = serializeListing(opts);\n if (opts?.sort_by !== undefined) params.sort_by = opts.sort_by;\n if (opts?.sort_order !== undefined) params.sort_order = opts.sort_order;\n if (opts?.search_query !== undefined) params.search_query = opts.search_query;\n if (opts?.eval_outcomes !== undefined) params.eval_outcomes = opts.eval_outcomes;\n if (opts?.source_types !== undefined) params.source_types = opts.source_types;\n if (opts?.security_group_uuid !== undefined)\n params.security_group_uuid = opts.security_group_uuid;\n if (opts?.start_time !== undefined) params.start_time = opts.start_time;\n if (opts?.end_time !== undefined) params.end_time = opts.end_time;\n if (opts?.labels_query !== undefined) params.labels_query = opts.labels_query;\n return params;\n}\n\nfunction buildEvaluationListParams(\n opts?: ModelSecurityEvaluationListOptions,\n): Record<string, string> {\n const params = serializeListing(opts);\n if (opts?.sort_field !== undefined) params.sort_field = opts.sort_field;\n if (opts?.sort_order !== undefined) params.sort_order = opts.sort_order;\n if (opts?.result !== undefined) params.result = opts.result;\n if (opts?.rule_instance_uuid !== undefined) params.rule_instance_uuid = opts.rule_instance_uuid;\n return params;\n}\n\nfunction buildFileListParams(opts?: ModelSecurityFileListOptions): Record<string, string> {\n const params = serializeListing(opts);\n if (opts?.sort_field !== undefined) params.sort_field = opts.sort_field;\n if (opts?.sort_dir !== undefined) params.sort_dir = opts.sort_dir;\n if (opts?.type !== undefined) params.type = opts.type;\n if (opts?.result !== undefined) params.result = opts.result;\n if (opts?.query_path !== undefined) params.query_path = opts.query_path;\n return params;\n}\n\n/** Client for Model Security data plane scan operations. */\nexport class ModelSecurityScansClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ModelSecurityScansClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new model security scan.\n * @param body - Scan creation request body.\n * @returns The created scan response.\n */\n async create(body: ScanCreateRequest): Promise<ScanBaseResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SCANS_PATH,\n body,\n responseSchema: ScanBaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List model security scans with optional filters.\n * @param opts - Pagination and filter options.\n * @returns Paginated list of scans.\n */\n async list(opts?: ModelSecurityScanListOptions): Promise<ScanList> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SCANS_PATH,\n params: buildScanListParams(opts),\n responseSchema: ScanListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single scan by UUID.\n * @param uuid - Scan UUID.\n * @returns The scan response.\n */\n async get(uuid: string): Promise<ScanBaseResponse> {\n assertUuid(uuid, 'scan uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${uuid}`,\n responseSchema: ScanBaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get rule evaluations for a scan.\n * @param scanUuid - Scan UUID.\n * @param opts - Pagination and filter options.\n * @returns Paginated list of rule evaluations.\n */\n async getEvaluations(\n scanUuid: string,\n opts?: ModelSecurityEvaluationListOptions,\n ): Promise<RuleEvaluationList> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/evaluations`,\n params: buildEvaluationListParams(opts),\n responseSchema: RuleEvaluationListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get files for a scan.\n * @param scanUuid - Scan UUID.\n * @param opts - Pagination and file filter options.\n * @returns Paginated list of files.\n */\n async getFiles(scanUuid: string, opts?: ModelSecurityFileListOptions): Promise<FileList> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/files`,\n params: buildFileListParams(opts),\n responseSchema: FileListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Add labels to a scan (merge with existing).\n * @param scanUuid - Scan UUID.\n * @param body - Labels to add.\n * @returns Labels response.\n */\n async addLabels(scanUuid: string, body: LabelsCreateRequest): Promise<LabelsResponse> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/labels`,\n body,\n responseSchema: LabelsResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Set labels on a scan (replace all existing).\n * @param scanUuid - Scan UUID.\n * @param body - Labels to set.\n * @returns Labels response.\n */\n async setLabels(scanUuid: string, body: LabelsCreateRequest): Promise<LabelsResponse> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/labels`,\n body,\n responseSchema: LabelsResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete labels from a scan by key.\n * @param scanUuid - Scan UUID.\n * @param keys - Label keys to delete.\n * @returns Resolves when the labels are deleted.\n */\n async deleteLabels(scanUuid: string, keys: string[]): Promise<void> {\n assertUuid(scanUuid, 'scan uuid');\n await request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/labels`,\n params: { keys },\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get rule violations for a scan.\n * @param scanUuid - Scan UUID.\n * @param opts - Pagination options.\n * @returns Paginated list of violations.\n */\n async getViolations(\n scanUuid: string,\n opts?: ModelSecurityViolationListOptions,\n ): Promise<ViolationList> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/rule-violations`,\n params: serializeListing(opts),\n responseSchema: ViolationListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get distinct label keys across all scans.\n * @param opts - Pagination options.\n * @returns Paginated list of label keys.\n */\n async getLabelKeys(opts?: ModelSecurityLabelListOptions): Promise<LabelKeyList> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/label-keys`,\n params: serializeListing(opts),\n responseSchema: LabelKeyListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get distinct values for a label key.\n * @param key - Label key to get values for.\n * @param opts - Pagination options.\n * @returns Paginated list of label values.\n */\n async getLabelValues(key: string, opts?: ModelSecurityLabelListOptions): Promise<LabelValueList> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/label-keys/${encodeURIComponent(key)}/values`,\n params: serializeListing(opts),\n responseSchema: LabelValueListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single rule evaluation by UUID.\n * @param uuid - Evaluation UUID.\n * @returns The rule evaluation response.\n */\n async getEvaluation(uuid: string): Promise<RuleEvaluationResponse> {\n assertUuid(uuid, 'evaluation uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_EVALUATIONS_PATH}/${uuid}`,\n responseSchema: RuleEvaluationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single violation by UUID.\n * @param uuid - Violation UUID.\n * @returns The violation response.\n */\n async getViolation(uuid: string): Promise<ViolationResponse> {\n assertUuid(uuid, 'violation uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_VIOLATIONS_PATH}/${uuid}`,\n responseSchema: ViolationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MODEL_SEC_SECURITY_GROUPS_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing, type ListingOptions } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n ModelSecurityGroupResponseSchema,\n ListModelSecurityGroupsResponseSchema,\n ModelSecurityRuleInstanceResponseSchema,\n ListModelSecurityRuleInstancesResponseSchema,\n type ModelSecurityGroupCreateRequest,\n type ModelSecurityGroupResponse,\n type ModelSecurityGroupUpdateRequest,\n type ListModelSecurityGroupsResponse,\n type ModelSecurityRuleInstanceResponse,\n type ModelSecurityRuleInstanceUpdateRequest,\n type ListModelSecurityRuleInstancesResponse,\n} from '../models/model-security.js';\n\n/** Options for listing security groups. */\nexport interface ModelSecurityGroupListOptions extends ListingOptions {\n /** Field to sort by: 'created_at' or 'updated_at'. */\n sort_field?: string;\n /** Sort direction: 'asc' or 'desc'. */\n sort_dir?: string;\n /** Filter by source types. */\n source_types?: string[];\n /** Search term (matches UUID or Name, 3-1000 chars). */\n search_query?: string;\n /** Filter by rule UUIDs with ALLOWING or BLOCKING state. */\n enabled_rules?: string[];\n}\n\n/** Options for listing rule instances within a security group. */\nexport interface ModelSecurityRuleInstanceListOptions extends ListingOptions {\n /** Filter by security rule UUID. */\n security_rule_uuid?: string;\n /** Filter by rule state: 'DISABLED', 'ALLOWING', or 'BLOCKING'. */\n state?: string;\n}\n\n/** @internal */\nexport interface ModelSecurityGroupsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\nfunction buildGroupListParams(\n opts?: ModelSecurityGroupListOptions,\n): Record<string, string | string[]> {\n const params: Record<string, string | string[]> = serializeListing(opts);\n if (opts?.sort_field !== undefined) params.sort_field = opts.sort_field;\n if (opts?.sort_dir !== undefined) params.sort_dir = opts.sort_dir;\n if (opts?.source_types !== undefined) params.source_types = opts.source_types;\n if (opts?.search_query !== undefined) params.search_query = opts.search_query;\n if (opts?.enabled_rules !== undefined) params.enabled_rules = opts.enabled_rules;\n return params;\n}\n\nfunction buildRuleInstanceListParams(\n opts?: ModelSecurityRuleInstanceListOptions,\n): Record<string, string> {\n const params = serializeListing(opts);\n if (opts?.security_rule_uuid !== undefined) params.security_rule_uuid = opts.security_rule_uuid;\n if (opts?.state !== undefined) params.state = opts.state;\n return params;\n}\n\n/** Client for Model Security management plane security group operations. */\nexport class ModelSecurityGroupsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ModelSecurityGroupsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new security group.\n * @param body - Security group creation request.\n * @returns The created security group.\n */\n async create(body: ModelSecurityGroupCreateRequest): Promise<ModelSecurityGroupResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SECURITY_GROUPS_PATH,\n body,\n responseSchema: ModelSecurityGroupResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List security groups with optional filters.\n * @param opts - Pagination and filter options.\n * @returns Paginated list of security groups.\n */\n async list(opts?: ModelSecurityGroupListOptions): Promise<ListModelSecurityGroupsResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SECURITY_GROUPS_PATH,\n params: buildGroupListParams(opts),\n responseSchema: ListModelSecurityGroupsResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single security group by UUID.\n * @param uuid - Security group UUID.\n * @returns The security group.\n */\n async get(uuid: string): Promise<ModelSecurityGroupResponse> {\n assertUuid(uuid, 'security group uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${uuid}`,\n responseSchema: ModelSecurityGroupResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update an existing security group.\n * @param uuid - Security group UUID.\n * @param body - Updated security group fields.\n * @returns The updated security group.\n */\n async update(\n uuid: string,\n body: ModelSecurityGroupUpdateRequest,\n ): Promise<ModelSecurityGroupResponse> {\n assertUuid(uuid, 'security group uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${uuid}`,\n body,\n responseSchema: ModelSecurityGroupResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a security group.\n * @param uuid - Security group UUID.\n * @returns Resolves when the security group is deleted.\n */\n async delete(uuid: string): Promise<void> {\n assertUuid(uuid, 'security group uuid');\n await request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${uuid}`,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List rule instances for a security group.\n * @param securityGroupUuid - Security group UUID.\n * @param opts - Pagination options.\n * @returns Paginated list of rule instances.\n */\n async listRuleInstances(\n securityGroupUuid: string,\n opts?: ModelSecurityRuleInstanceListOptions,\n ): Promise<ListModelSecurityRuleInstancesResponse> {\n assertUuid(securityGroupUuid, 'security group uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${securityGroupUuid}/rule-instances`,\n params: buildRuleInstanceListParams(opts),\n responseSchema: ListModelSecurityRuleInstancesResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single rule instance within a security group.\n * @param securityGroupUuid - Security group UUID.\n * @param ruleInstanceUuid - Rule instance UUID.\n * @returns The rule instance.\n */\n async getRuleInstance(\n securityGroupUuid: string,\n ruleInstanceUuid: string,\n ): Promise<ModelSecurityRuleInstanceResponse> {\n assertUuid(securityGroupUuid, 'security group uuid');\n assertUuid(ruleInstanceUuid, 'rule instance uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${securityGroupUuid}/rule-instances/${ruleInstanceUuid}`,\n responseSchema: ModelSecurityRuleInstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a rule instance within a security group.\n * @param securityGroupUuid - Security group UUID.\n * @param ruleInstanceUuid - Rule instance UUID.\n * @param body - Updated rule instance fields.\n * @returns The updated rule instance.\n */\n async updateRuleInstance(\n securityGroupUuid: string,\n ruleInstanceUuid: string,\n body: ModelSecurityRuleInstanceUpdateRequest,\n ): Promise<ModelSecurityRuleInstanceResponse> {\n assertUuid(securityGroupUuid, 'security group uuid');\n assertUuid(ruleInstanceUuid, 'rule instance uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${securityGroupUuid}/rule-instances/${ruleInstanceUuid}`,\n body,\n responseSchema: ModelSecurityRuleInstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MODEL_SEC_SECURITY_RULES_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing, type ListingOptions } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n ListModelSecurityRulesResponseSchema,\n ModelSecurityRuleResponseSchema,\n type ListModelSecurityRulesResponse,\n type ModelSecurityRuleResponse,\n} from '../models/model-security.js';\n\n/** Options for listing security rules. */\nexport interface ModelSecurityRuleListOptions extends ListingOptions {\n /** Filter by source type. */\n source_type?: string;\n /** Search term (matches UUID or Name, 3-1000 chars). */\n search_query?: string;\n}\n\n/** @internal */\nexport interface ModelSecurityRulesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Model Security management plane security rule operations (read-only). */\nexport class ModelSecurityRulesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ModelSecurityRulesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * List available security rules.\n * @param opts - Pagination + filter options.\n * @returns Paginated list of security rules.\n */\n async list(opts?: ModelSecurityRuleListOptions): Promise<ListModelSecurityRulesResponse> {\n const params = serializeListing(opts);\n if (opts?.source_type !== undefined) params.source_type = opts.source_type;\n if (opts?.search_query !== undefined) params.search_query = opts.search_query;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SECURITY_RULES_PATH,\n params,\n responseSchema: ListModelSecurityRulesResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single security rule by UUID.\n * @param uuid - Security rule UUID.\n * @returns The security rule.\n */\n async get(uuid: string): Promise<ModelSecurityRuleResponse> {\n assertUuid(uuid, 'security rule uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_RULES_PATH}/${uuid}`,\n responseSchema: ModelSecurityRuleResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import {\n DEFAULT_MODEL_SEC_DATA_ENDPOINT,\n DEFAULT_MODEL_SEC_MGMT_ENDPOINT,\n MODEL_SEC_DATA_ENDPOINT,\n MODEL_SEC_MGMT_ENDPOINT,\n MODEL_SEC_PYPI_AUTH_PATH,\n} from '../constants.js';\nimport { OAuthAuth } from '../http/auth/oauth.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { resolveOAuthConfig } from '../oauth-config.js';\nimport { ModelSecurityScansClient } from './scans-client.js';\nimport { ModelSecurityGroupsClient } from './security-groups-client.js';\nimport { ModelSecurityRulesClient } from './security-rules-client.js';\nimport { PyPIAuthResponseSchema, type PyPIAuthResponse } from '../models/model-security.js';\n\n/** Options for constructing a {@link ModelSecurityClient}. */\nexport interface ModelSecurityClientOptions {\n /** OAuth2 client ID. Falls back to `PANW_MODEL_SEC_CLIENT_ID`, then `PANW_MGMT_CLIENT_ID`. */\n clientId?: string;\n /** OAuth2 client secret. Falls back to `PANW_MODEL_SEC_CLIENT_SECRET`, then `PANW_MGMT_CLIENT_SECRET`. */\n clientSecret?: string;\n /** Tenant Service Group ID. Falls back to `PANW_MODEL_SEC_TSG_ID`, then `PANW_MGMT_TSG_ID`. */\n tsgId?: string;\n /** Data plane endpoint URL. Falls back to `PANW_MODEL_SEC_DATA_ENDPOINT`. */\n dataEndpoint?: string;\n /** Management plane endpoint URL. Falls back to `PANW_MODEL_SEC_MGMT_ENDPOINT`. */\n mgmtEndpoint?: string;\n /** OAuth2 token endpoint URL. Falls back to `PANW_MODEL_SEC_TOKEN_ENDPOINT`, then `PANW_MGMT_TOKEN_ENDPOINT`. */\n tokenEndpoint?: string;\n /** Max retry attempts (0-5). Defaults to 5. */\n numRetries?: number;\n}\n\n/**\n * Client for AIRS Model Security API operations.\n * Uses two base URLs: data plane for scans, management plane for security groups/rules.\n * Authenticates via OAuth2 client_credentials flow (shared token for both planes).\n */\nexport class ModelSecurityClient {\n /** Data plane scan operations. */\n public readonly scans: ModelSecurityScansClient;\n /** Management plane security group operations. */\n public readonly securityGroups: ModelSecurityGroupsClient;\n /** Management plane security rule operations (read-only). */\n public readonly securityRules: ModelSecurityRulesClient;\n\n private readonly mgmtEndpoint: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ModelSecurityClientOptions = {}) {\n const dataEndpoint =\n opts.dataEndpoint ?? process.env[MODEL_SEC_DATA_ENDPOINT] ?? DEFAULT_MODEL_SEC_DATA_ENDPOINT;\n const mgmtEndpoint =\n opts.mgmtEndpoint ?? process.env[MODEL_SEC_MGMT_ENDPOINT] ?? DEFAULT_MODEL_SEC_MGMT_ENDPOINT;\n\n const { oauthClient, numRetries } = resolveOAuthConfig({\n clientId: opts.clientId,\n clientSecret: opts.clientSecret,\n tsgId: opts.tsgId,\n baseUrl: mgmtEndpoint,\n numRetries: opts.numRetries,\n tokenEndpoint: opts.tokenEndpoint,\n primaryEnvPrefix: 'PANW_MODEL_SEC',\n fallbackEnvPrefix: 'PANW_MGMT',\n });\n\n const auth = new OAuthAuth(oauthClient);\n this.auth = auth;\n this.mgmtEndpoint = mgmtEndpoint;\n this.numRetries = numRetries;\n\n this.scans = new ModelSecurityScansClient({ baseUrl: dataEndpoint, auth, numRetries });\n this.securityGroups = new ModelSecurityGroupsClient({\n baseUrl: mgmtEndpoint,\n auth,\n numRetries,\n });\n this.securityRules = new ModelSecurityRulesClient({\n baseUrl: mgmtEndpoint,\n auth,\n numRetries,\n });\n }\n\n /**\n * Get PyPI authentication credentials for Google Artifact Registry.\n * @returns PyPI auth response with URL and expiration.\n */\n async getPyPIAuth(): Promise<PyPIAuthResponse> {\n return request({\n method: 'GET',\n baseUrl: this.mgmtEndpoint,\n path: MODEL_SEC_PYPI_AUTH_PATH,\n responseSchema: PyPIAuthResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { RED_TEAM_SCAN_PATH, RED_TEAM_CATEGORIES_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { z } from 'zod';\nimport { serializeListing, type ListingOptions } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n JobResponseSchema,\n JobListResponseSchema,\n JobAbortResponseSchema,\n CategoryModelSchema,\n type JobCreateRequest,\n type JobResponse,\n type JobListResponse,\n type JobAbortResponse,\n type CategoryModel,\n} from '../models/red-team.js';\n\n/** Pagination + filter options for Red Team list operations. */\nexport type RedTeamListOptions = ListingOptions;\n\n/** Extended list options for scan/job listing. */\nexport interface RedTeamScanListOptions extends RedTeamListOptions {\n status?: string;\n job_type?: string;\n target_id?: string;\n}\n\n/** @internal */\nexport interface RedTeamScansClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team data plane scan operations. */\nexport class RedTeamScansClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamScansClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new red team scan job.\n * @param body - Job creation request body.\n * @returns The created job response.\n */\n async create(body: JobCreateRequest): Promise<JobResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_SCAN_PATH,\n body,\n responseSchema: JobResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List red team scan jobs with optional filters.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of scan jobs.\n */\n async list(opts?: RedTeamScanListOptions): Promise<JobListResponse> {\n const params = serializeListing(opts);\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.job_type !== undefined) params.job_type = opts.job_type;\n if (opts?.target_id !== undefined) params.target_id = opts.target_id;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: RED_TEAM_SCAN_PATH,\n params,\n responseSchema: JobListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single scan job by ID.\n * @param jobId - The job UUID.\n * @returns The job response.\n */\n async get(jobId: string): Promise<JobResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_SCAN_PATH}/${jobId}`,\n responseSchema: JobResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Abort a running scan job.\n * @param jobId - The job UUID.\n * @returns The abort response.\n */\n async abort(jobId: string): Promise<JobAbortResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_SCAN_PATH}/${jobId}/abort`,\n responseSchema: JobAbortResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get all categories with subcategories.\n * @returns The list of category models.\n */\n async getCategories(): Promise<CategoryModel[]> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: RED_TEAM_CATEGORIES_PATH,\n responseSchema: z.array(CategoryModelSchema),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport {\n RED_TEAM_REPORT_STATIC_PATH,\n RED_TEAM_REPORT_DYNAMIC_PATH,\n RED_TEAM_REPORT_PATH,\n} from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n AttackListResponseSchema,\n AttackDetailResponseSchema,\n AttackMultiTurnDetailResponseSchema,\n StaticJobReportSchema,\n DynamicJobReportSchema,\n RemediationResponseSchema,\n RuntimeSecurityProfileResponseSchema,\n GoalListResponseSchema,\n StreamListResponseSchema,\n StreamDetailResponseSchema,\n type AttackListResponse,\n type AttackDetailResponse,\n type AttackMultiTurnDetailResponse,\n type StaticJobReport,\n type DynamicJobReport,\n type RemediationResponse,\n type RuntimeSecurityProfileResponse,\n type GoalListResponse,\n type StreamListResponse,\n type StreamDetailResponse,\n} from '../models/red-team.js';\nimport type { RedTeamListOptions } from './scans-client.js';\n\n/** Attack list filter options. */\nexport interface AttackListOptions extends RedTeamListOptions {\n status?: string;\n severity?: string;\n category?: string;\n sub_category?: string;\n attack_type?: string;\n threat?: boolean;\n}\n\n/** Goal list filter options. */\nexport interface GoalListOptions extends RedTeamListOptions {\n goal_type?: string;\n status?: string;\n count?: boolean;\n}\n\n/** @internal */\nexport interface RedTeamReportsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team data plane report operations. */\nexport class RedTeamReportsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamReportsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n // -----------------------------------------------------------------------\n // Static (attack library) report endpoints\n // -----------------------------------------------------------------------\n\n /**\n * List attacks for a static scan.\n * @param jobId - The job UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of attacks.\n */\n async listAttacks(jobId: string, opts?: AttackListOptions): Promise<AttackListResponse> {\n assertUuid(jobId, 'job id');\n const params = serializeListing(opts);\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.severity !== undefined) params.severity = opts.severity;\n if (opts?.category !== undefined) params.category = opts.category;\n if (opts?.sub_category !== undefined) params.sub_category = opts.sub_category;\n if (opts?.attack_type !== undefined) params.attack_type = opts.attack_type;\n if (opts?.threat !== undefined) params.threat = String(opts.threat);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/list-attacks`,\n params,\n responseSchema: AttackListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get attack details for a static scan.\n * @param jobId - The job UUID.\n * @param attackId - The attack UUID.\n * @returns The attack detail response.\n */\n async getAttackDetail(jobId: string, attackId: string): Promise<AttackDetailResponse> {\n assertUuid(jobId, 'job id');\n assertUuid(attackId, 'attack id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/attack/${attackId}`,\n responseSchema: AttackDetailResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get multi-turn attack details for a static scan.\n * @param jobId - The job UUID.\n * @param attackId - The attack UUID.\n * @returns The multi-turn attack detail response.\n */\n async getMultiTurnAttackDetail(\n jobId: string,\n attackId: string,\n ): Promise<AttackMultiTurnDetailResponse> {\n assertUuid(jobId, 'job id');\n assertUuid(attackId, 'attack id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/attack-multi-turn/${attackId}`,\n responseSchema: AttackMultiTurnDetailResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get the attack library report for a static scan.\n * @param jobId - The job UUID.\n * @returns The static job report.\n */\n async getStaticReport(jobId: string): Promise<StaticJobReport> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/report`,\n responseSchema: StaticJobReportSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get remediation recommendations for a static scan.\n * @param jobId - The job UUID.\n * @returns The remediation response.\n */\n async getStaticRemediation(jobId: string): Promise<RemediationResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/remediation`,\n responseSchema: RemediationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get runtime security profile config for a static scan.\n * @param jobId - The job UUID.\n * @returns The runtime security profile response.\n */\n async getStaticRuntimePolicy(jobId: string): Promise<RuntimeSecurityProfileResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/runtime-policy-config`,\n responseSchema: RuntimeSecurityProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n // -----------------------------------------------------------------------\n // Dynamic (agent) report endpoints\n // -----------------------------------------------------------------------\n\n /**\n * Get the agent scan report for a dynamic scan.\n * @param jobId - The job UUID.\n * @returns The dynamic job report.\n */\n async getDynamicReport(jobId: string): Promise<DynamicJobReport> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/report`,\n responseSchema: DynamicJobReportSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get remediation recommendations for a dynamic scan.\n * @param jobId - The job UUID.\n * @returns The remediation response.\n */\n async getDynamicRemediation(jobId: string): Promise<RemediationResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/remediation`,\n responseSchema: RemediationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get runtime security profile config for a dynamic scan.\n * @param jobId - The job UUID.\n * @returns The runtime security profile response.\n */\n async getDynamicRuntimePolicy(jobId: string): Promise<RuntimeSecurityProfileResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/runtime-policy-config`,\n responseSchema: RuntimeSecurityProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List goals for a dynamic scan.\n * @param jobId - The job UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of goals.\n */\n async listGoals(jobId: string, opts?: GoalListOptions): Promise<GoalListResponse> {\n assertUuid(jobId, 'job id');\n const params = serializeListing(opts);\n if (opts?.goal_type !== undefined) params.goal_type = opts.goal_type;\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.count !== undefined) params.count = String(opts.count);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/list-goals`,\n params,\n responseSchema: GoalListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List streams for a goal in a dynamic scan.\n * @param jobId - The job UUID.\n * @param goalId - The goal UUID.\n * @param opts - Optional pagination and search options.\n * @returns The paginated list of streams.\n */\n async listGoalStreams(\n jobId: string,\n goalId: string,\n opts?: RedTeamListOptions,\n ): Promise<StreamListResponse> {\n assertUuid(jobId, 'job id');\n assertUuid(goalId, 'goal id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/goal/${goalId}/list-streams`,\n params: serializeListing(opts),\n responseSchema: StreamListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n // -----------------------------------------------------------------------\n // Common report endpoints\n // -----------------------------------------------------------------------\n\n /**\n * Get stream details by stream ID.\n * @param streamId - The stream UUID.\n * @returns The stream detail response.\n */\n async getStreamDetail(streamId: string): Promise<StreamDetailResponse> {\n assertUuid(streamId, 'stream id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/stream/${streamId}`,\n responseSchema: StreamDetailResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Download a report in the specified format.\n * @param jobId - The job UUID.\n * @param format - The file format (e.g. \"pdf\", \"csv\").\n * @returns The report data in the requested format (untyped — shape depends on `format`).\n */\n async downloadReport(jobId: string, format: string): Promise<unknown> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_PATH}/${jobId}/download`,\n params: { file_format: format },\n responseSchema: z.unknown(),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Generate a partial report for a running scan.\n * @param jobId - The job UUID.\n * @returns The partial report payload (untyped — schema not yet defined by the API).\n */\n async generatePartialReport(jobId: string): Promise<unknown> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_PATH}/${jobId}/generate-partial-report`,\n responseSchema: z.unknown(),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport { RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n CustomAttackReportResponseSchema,\n PromptSetsReportResponseSchema,\n PromptDetailResponseSchema,\n CustomAttacksListResponseSchema,\n CustomAttackOutputSchema,\n PropertyStatisticSchema,\n type CustomAttackReportResponse,\n type PromptSetsReportResponse,\n type PromptDetailResponse,\n type CustomAttacksListResponse,\n type CustomAttackOutput,\n type PropertyStatistic,\n} from '../models/red-team.js';\nimport type { RedTeamListOptions } from './scans-client.js';\n\n/** Filter options for listing prompts by set in a report. */\nexport interface PromptsBySetListOptions extends RedTeamListOptions {\n is_threat?: boolean;\n}\n\n/** Filter options for listing custom attacks in a report. */\nexport interface CustomAttacksReportListOptions extends RedTeamListOptions {\n threat?: boolean;\n prompt_set_id?: string;\n property_value?: string;\n}\n\n/** @internal */\nexport interface RedTeamCustomAttackReportsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team custom attack report operations. */\nexport class RedTeamCustomAttackReportsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamCustomAttackReportsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Get custom attack report for a scan.\n * @param jobId - The job UUID.\n * @returns The custom attack report response.\n */\n async getReport(jobId: string): Promise<CustomAttackReportResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/report/${jobId}`,\n responseSchema: CustomAttackReportResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get prompt sets for a custom attack scan.\n * @param jobId - The job UUID.\n * @returns The prompt sets report response.\n */\n async getPromptSets(jobId: string): Promise<PromptSetsReportResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/report/${jobId}/prompt-sets`,\n responseSchema: PromptSetsReportResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get prompts for a specific prompt set in a scan.\n * @param jobId - The job UUID.\n * @param promptSetId - The prompt set UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The list of prompt detail responses.\n */\n async getPromptsBySet(\n jobId: string,\n promptSetId: string,\n opts?: PromptsBySetListOptions,\n ): Promise<PromptDetailResponse[]> {\n assertUuid(jobId, 'job id');\n assertUuid(promptSetId, 'prompt set id');\n\n const params = serializeListing(opts);\n if (opts?.is_threat !== undefined) params.is_threat = String(opts.is_threat);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/report/${jobId}/prompt-set/${promptSetId}/prompts`,\n params,\n responseSchema: z.array(PromptDetailResponseSchema),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get details for a specific prompt.\n * @param jobId - The job UUID.\n * @param promptId - The prompt UUID.\n * @returns The prompt detail response.\n */\n async getPromptDetail(jobId: string, promptId: string): Promise<PromptDetailResponse> {\n assertUuid(jobId, 'job id');\n assertUuid(promptId, 'prompt id');\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/report/${jobId}/prompt/${promptId}`,\n responseSchema: PromptDetailResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List custom attacks for a scan.\n * @param jobId - The job UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of custom attacks.\n */\n async listCustomAttacks(\n jobId: string,\n opts?: CustomAttacksReportListOptions,\n ): Promise<CustomAttacksListResponse> {\n assertUuid(jobId, 'job id');\n const params = serializeListing(opts);\n if (opts?.threat !== undefined) params.threat = String(opts.threat);\n if (opts?.prompt_set_id !== undefined) params.prompt_set_id = opts.prompt_set_id;\n if (opts?.property_value !== undefined) params.property_value = opts.property_value;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/job/${jobId}/list-custom-attacks`,\n params,\n responseSchema: CustomAttacksListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get attack outputs for a custom attack.\n * @param jobId - The job UUID.\n * @param attackId - The attack UUID.\n * @returns The list of attack outputs.\n */\n async getAttackOutputs(jobId: string, attackId: string): Promise<CustomAttackOutput[]> {\n assertUuid(jobId, 'job id');\n assertUuid(attackId, 'attack id');\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/job/${jobId}/attack/${attackId}/list-outputs`,\n responseSchema: z.array(CustomAttackOutputSchema),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get property statistics for a custom attack scan.\n * @param jobId - The job UUID.\n * @returns The list of property statistics.\n */\n async getPropertyStats(jobId: string): Promise<PropertyStatistic[]> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/job/${jobId}/property-stats`,\n responseSchema: z.array(PropertyStatisticSchema),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport {\n RED_TEAM_TARGET_PATH,\n RED_TEAM_TARGET_VALIDATE_AUTH_PATH,\n RED_TEAM_TEMPLATE_PATH,\n} from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n TargetResponseSchema,\n TargetListSchema,\n TargetProfileResponseSchema,\n TargetAuthValidationResponseSchema,\n TargetTemplateCollectionSchema,\n BaseResponseSchema,\n type TargetCreateRequest,\n type TargetUpdateRequest,\n type TargetContextUpdate,\n type TargetResponse,\n type TargetList,\n type TargetProbeRequest,\n type TargetProfileResponse,\n type TargetAuthValidationRequest,\n type TargetAuthValidationResponse,\n type TargetTemplateCollection,\n type BaseResponse,\n} from '../models/red-team.js';\nimport type { RedTeamListOptions } from './scans-client.js';\n\n/** Target list filter options. */\nexport interface TargetListOptions extends RedTeamListOptions {\n target_type?: string;\n status?: string;\n}\n\n/** Options for target create/update operations. */\nexport interface TargetOperationOptions {\n /** Validate the target connection before saving. */\n validate?: boolean;\n}\n\n/** @internal */\nexport interface RedTeamTargetsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team management plane target operations. */\nexport class RedTeamTargetsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamTargetsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new target.\n * @param body - Target creation request body.\n * @param opts - Optional operation options (e.g. validate connection).\n * @returns The created target response.\n */\n async create(body: TargetCreateRequest, opts?: TargetOperationOptions): Promise<TargetResponse> {\n const params: Record<string, string> = {};\n if (opts?.validate !== undefined) params.validate = String(opts.validate);\n\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_TARGET_PATH,\n body,\n params: Object.keys(params).length > 0 ? params : undefined,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List targets with optional filters.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of targets.\n */\n async list(opts?: TargetListOptions): Promise<TargetList> {\n const params = serializeListing(opts);\n if (opts?.target_type !== undefined) params.target_type = opts.target_type;\n if (opts?.status !== undefined) params.status = opts.status;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: RED_TEAM_TARGET_PATH,\n params,\n responseSchema: TargetListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a target by UUID.\n * @param uuid - The target UUID.\n * @returns The target response.\n */\n async get(uuid: string): Promise<TargetResponse> {\n assertUuid(uuid, 'target uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}`,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a target.\n * @param uuid - The target UUID.\n * @param body - Target update request body.\n * @param opts - Optional operation options (e.g. validate connection).\n * @returns The updated target response.\n */\n async update(\n uuid: string,\n body: TargetUpdateRequest,\n opts?: TargetOperationOptions,\n ): Promise<TargetResponse> {\n assertUuid(uuid, 'target uuid');\n const params: Record<string, string> = {};\n if (opts?.validate !== undefined) params.validate = String(opts.validate);\n\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}`,\n body,\n params: Object.keys(params).length > 0 ? params : undefined,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a target.\n * @param uuid - The target UUID.\n * @returns The delete response.\n */\n async delete(uuid: string): Promise<BaseResponse> {\n assertUuid(uuid, 'target uuid');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}`,\n responseSchema: BaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Run profiling probes on a target.\n * @param body - The probe request body.\n * @returns The target response after probing.\n */\n async probe(body: TargetProbeRequest): Promise<TargetResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/probe`,\n body,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get profiling results for a target.\n * @param uuid - The target UUID.\n * @returns The target profile response.\n */\n async getProfile(uuid: string): Promise<TargetProfileResponse> {\n assertUuid(uuid, 'target uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}/profile`,\n responseSchema: TargetProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a target profile (background + additional context).\n * @param uuid - The target UUID.\n * @param body - The context update request body.\n * @returns The updated target response.\n */\n async updateProfile(uuid: string, body: TargetContextUpdate): Promise<TargetResponse> {\n assertUuid(uuid, 'target uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}/profile`,\n body,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Validate target authentication credentials.\n * @param body - The auth validation request body.\n * @returns The auth validation response.\n */\n async validateAuth(body: TargetAuthValidationRequest): Promise<TargetAuthValidationResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_TARGET_VALIDATE_AUTH_PATH,\n body,\n responseSchema: TargetAuthValidationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get target metadata (field definitions for target configuration).\n * @returns The target metadata object.\n */\n async getTargetMetadata(): Promise<Record<string, unknown>> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TEMPLATE_PATH}/target-metadata`,\n responseSchema: z.record(z.unknown()),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get target templates for all supported provider types.\n * @returns The collection of target templates keyed by provider.\n */\n async getTargetTemplates(): Promise<TargetTemplateCollection> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TEMPLATE_PATH}/target-templates`,\n responseSchema: TargetTemplateCollectionSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport { RED_TEAM_CUSTOM_ATTACK_PATH, USER_AGENT } from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter, PreparedRequest } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n BaseResponseSchema,\n CustomPromptSetResponseSchema,\n CustomPromptSetListSchema,\n CustomPromptSetListActiveSchema,\n CustomPromptSetReferenceSchema,\n CustomPromptSetVersionInfoSchema,\n CustomPromptResponseSchema,\n CustomPromptListSchema,\n PropertyNamesListResponseSchema,\n PropertyValuesResponseSchema,\n PropertyValuesMultipleResponseSchema,\n type CustomPromptSetCreateRequest,\n type CustomPromptSetUpdateRequest,\n type CustomPromptSetArchiveRequest,\n type CustomPromptSetResponse,\n type CustomPromptSetList,\n type CustomPromptSetListActive,\n type CustomPromptSetReference,\n type CustomPromptSetVersionInfo,\n type CustomPromptCreateRequest,\n type CustomPromptUpdateRequest,\n type CustomPromptResponse,\n type CustomPromptList,\n type PropertyNameCreateRequest,\n type PropertyValueCreateRequest,\n type PropertyNamesListResponse,\n type PropertyValuesResponse,\n type PropertyValuesMultipleResponse,\n type BaseResponse,\n} from '../models/red-team.js';\nimport type { RedTeamListOptions } from './scans-client.js';\n\n/** Prompt set list filter options. */\nexport interface PromptSetListOptions extends RedTeamListOptions {\n status?: string;\n active?: boolean;\n archive?: boolean;\n}\n\n/** Prompt list filter options. */\nexport interface PromptListOptions extends RedTeamListOptions {\n status?: string;\n active?: boolean;\n}\n\n/** @internal */\nexport interface RedTeamCustomAttacksClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team management plane custom attack operations. */\nexport class RedTeamCustomAttacksClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamCustomAttacksClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n // -----------------------------------------------------------------------\n // Prompt Set operations\n // -----------------------------------------------------------------------\n\n /**\n * Create a new custom prompt set.\n * @param body - Prompt set creation request body.\n * @returns The created prompt set response.\n */\n async createPromptSet(body: CustomPromptSetCreateRequest): Promise<CustomPromptSetResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set`,\n body,\n responseSchema: CustomPromptSetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List custom prompt sets.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of prompt sets.\n */\n async listPromptSets(opts?: PromptSetListOptions): Promise<CustomPromptSetList> {\n const params = serializeListing(opts);\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.active !== undefined) params.active = String(opts.active);\n if (opts?.archive !== undefined) params.archive = String(opts.archive);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/list-custom-prompt-sets`,\n params,\n responseSchema: CustomPromptSetListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a prompt set by UUID.\n * @param uuid - The prompt set UUID.\n * @returns The prompt set response.\n */\n async getPromptSet(uuid: string): Promise<CustomPromptSetResponse> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}`,\n responseSchema: CustomPromptSetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a prompt set.\n * @param uuid - The prompt set UUID.\n * @param body - Prompt set update request body.\n * @returns The updated prompt set response.\n */\n async updatePromptSet(\n uuid: string,\n body: CustomPromptSetUpdateRequest,\n ): Promise<CustomPromptSetResponse> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}`,\n body,\n responseSchema: CustomPromptSetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Archive or unarchive a prompt set.\n * @param uuid - The prompt set UUID.\n * @param body - Archive request body.\n * @returns The updated prompt set response.\n */\n async archivePromptSet(\n uuid: string,\n body: CustomPromptSetArchiveRequest,\n ): Promise<CustomPromptSetResponse> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}/archive`,\n body,\n responseSchema: CustomPromptSetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Resolve a prompt set reference for data plane consumption.\n * @param uuid - The prompt set UUID.\n * @returns The prompt set reference.\n */\n async getPromptSetReference(uuid: string): Promise<CustomPromptSetReference> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}/reference`,\n responseSchema: CustomPromptSetReferenceSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get version information for a prompt set.\n * @param uuid - The prompt set UUID.\n * @param opts - Optional query params (e.g. specific version ID).\n * @returns The prompt set version info.\n */\n async getPromptSetVersionInfo(\n uuid: string,\n opts?: { version?: string },\n ): Promise<CustomPromptSetVersionInfo> {\n assertUuid(uuid, 'prompt set uuid');\n const params: Record<string, string> = {};\n if (opts?.version !== undefined) params.version = opts.version;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}/version-info`,\n params: Object.keys(params).length > 0 ? params : undefined,\n responseSchema: CustomPromptSetVersionInfoSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List active prompt sets (for data plane).\n * @returns The list of active prompt sets.\n */\n async listActivePromptSets(): Promise<CustomPromptSetListActive> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/active-custom-prompt-sets`,\n responseSchema: CustomPromptSetListActiveSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Download CSV template for a prompt set.\n * @param uuid - The prompt set UUID.\n * @returns The CSV template content (untyped — raw response from the API).\n */\n async downloadTemplate(uuid: string): Promise<unknown> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/download-template/${uuid}`,\n responseSchema: z.unknown(),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Upload a CSV file of custom prompts for a prompt set.\n * Bypasses `request()` because the body is `FormData`, not JSON.\n * @param promptSetUuid - The prompt set UUID.\n * @param file - The CSV file blob.\n * @returns The upload response.\n */\n async uploadPromptsCsv(promptSetUuid: string, file: Blob): Promise<BaseResponse> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n\n const url = new URL(\n `${this.baseUrl.replace(/\\/+$/, '')}${RED_TEAM_CUSTOM_ATTACK_PATH}/upload-custom-prompts-csv`,\n );\n url.searchParams.set('prompt_set_uuid', promptSetUuid);\n\n const stub: PreparedRequest = {\n method: 'POST',\n url,\n headers: { 'User-Agent': USER_AGENT },\n };\n const prepared = await this.auth.prepare(stub);\n\n const formData = new FormData();\n formData.append('file', file);\n\n const response = await fetch(prepared.url.toString(), {\n method: 'POST',\n headers: prepared.headers,\n body: formData,\n });\n\n const text = await response.text();\n if (!response.ok) {\n throw new AISecSDKException(\n `Upload failed (${response.status}): ${text}`,\n ErrorType.SERVER_SIDE_ERROR,\n );\n }\n return text\n ? (JSON.parse(text) as BaseResponse)\n : ({ message: 'ok', status: 201 } as BaseResponse);\n }\n\n // -----------------------------------------------------------------------\n // Prompt operations\n // -----------------------------------------------------------------------\n\n /**\n * Create a new custom prompt.\n * @param body - Prompt creation request body.\n * @returns The created prompt response.\n */\n async createPrompt(body: CustomPromptCreateRequest): Promise<CustomPromptResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/custom-prompt`,\n body,\n responseSchema: CustomPromptResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List prompts in a prompt set.\n * @param promptSetUuid - The prompt set UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of prompts.\n */\n async listPrompts(promptSetUuid: string, opts?: PromptListOptions): Promise<CustomPromptList> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n const params = serializeListing(opts);\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.active !== undefined) params.active = String(opts.active);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${promptSetUuid}/list-custom-prompts`,\n params,\n responseSchema: CustomPromptListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a prompt by UUID.\n * @param promptSetUuid - The prompt set UUID.\n * @param promptUuid - The prompt UUID.\n * @returns The prompt response.\n */\n async getPrompt(promptSetUuid: string, promptUuid: string): Promise<CustomPromptResponse> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n assertUuid(promptUuid, 'prompt uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${promptSetUuid}/custom-prompt/${promptUuid}`,\n responseSchema: CustomPromptResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a prompt.\n * @param promptSetUuid - The prompt set UUID.\n * @param promptUuid - The prompt UUID.\n * @param body - Prompt update request body.\n * @returns The updated prompt response.\n */\n async updatePrompt(\n promptSetUuid: string,\n promptUuid: string,\n body: CustomPromptUpdateRequest,\n ): Promise<CustomPromptResponse> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n assertUuid(promptUuid, 'prompt uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${promptSetUuid}/custom-prompt/${promptUuid}`,\n body,\n responseSchema: CustomPromptResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a prompt.\n * @param promptSetUuid - The prompt set UUID.\n * @param promptUuid - The prompt UUID.\n * @returns The delete response.\n */\n async deletePrompt(promptSetUuid: string, promptUuid: string): Promise<BaseResponse> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n assertUuid(promptUuid, 'prompt uuid');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${promptSetUuid}/custom-prompt/${promptUuid}`,\n responseSchema: BaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n // -----------------------------------------------------------------------\n // Property operations\n // -----------------------------------------------------------------------\n\n /**\n * Get all property names.\n * @returns The list of property names.\n */\n async getPropertyNames(): Promise<PropertyNamesListResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-names`,\n responseSchema: PropertyNamesListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Create a new property name.\n * @param body - Property name creation request body.\n * @returns The creation response.\n */\n async createPropertyName(body: PropertyNameCreateRequest): Promise<BaseResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-names`,\n body,\n responseSchema: BaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get values for a property name.\n * @param propertyName - The property name to look up.\n * @returns The property values response.\n */\n async getPropertyValues(propertyName: string): Promise<PropertyValuesResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-values/${encodeURIComponent(propertyName)}`,\n responseSchema: PropertyValuesResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get values for multiple property names.\n * @param propertyNames - Array of property names to look up.\n * @returns The property values for all requested names.\n */\n async getPropertyValuesMultiple(\n propertyNames: string[],\n ): Promise<PropertyValuesMultipleResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-values`,\n params: { property_names: propertyNames },\n responseSchema: PropertyValuesMultipleResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Create a property value.\n * @param body - Property value creation request body.\n * @returns The creation response.\n */\n async createPropertyValue(body: PropertyValueCreateRequest): Promise<BaseResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-values`,\n body,\n responseSchema: BaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { RED_TEAM_EULA_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n EulaContentResponseSchema,\n EulaResponseSchema,\n type EulaAcceptRequest,\n type EulaContentResponse,\n type EulaResponse,\n} from '../models/red-team.js';\n\n/** @internal */\nexport interface RedTeamEulaClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team EULA management operations. */\nexport class RedTeamEulaClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamEulaClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Get the current EULA content.\n * @returns The EULA content response.\n */\n async getContent(): Promise<EulaContentResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_EULA_PATH}/content`,\n responseSchema: EulaContentResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get the current EULA acceptance status.\n * @returns The EULA status response.\n */\n async getStatus(): Promise<EulaResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_EULA_PATH}/status`,\n responseSchema: EulaResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Accept the EULA.\n * @param body - The acceptance request body.\n * @returns The EULA response with acceptance status.\n */\n async accept(body: EulaAcceptRequest): Promise<EulaResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_EULA_PATH}/accept`,\n body,\n responseSchema: EulaResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { RED_TEAM_INSTANCES_PATH, RED_TEAM_REGISTRY_CREDENTIALS_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n InstanceResponseSchema,\n InstanceGetResponseSchema,\n DeviceResponseSchema,\n RegistryCredentialsSchema,\n type InstanceRequest,\n type InstanceResponse,\n type InstanceGetResponse,\n type DeviceRequest,\n type DeviceResponse,\n type RegistryCredentials,\n} from '../models/red-team.js';\n\n/** @internal */\nexport interface RedTeamInstancesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team instance/licensing and registry credential operations. */\nexport class RedTeamInstancesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamInstancesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new tenant instance.\n * @param body - The instance creation request.\n * @returns The instance response.\n */\n async createInstance(body: InstanceRequest): Promise<InstanceResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_INSTANCES_PATH,\n body,\n responseSchema: InstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get an existing tenant instance.\n * @param tenantId - The tenant ID.\n * @returns The instance details.\n */\n async getInstance(tenantId: string): Promise<InstanceGetResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}`,\n responseSchema: InstanceGetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update an existing tenant instance.\n * @param tenantId - The tenant ID.\n * @param body - The instance update request.\n * @returns The instance response.\n */\n async updateInstance(tenantId: string, body: InstanceRequest): Promise<InstanceResponse> {\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}`,\n body,\n responseSchema: InstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a tenant instance.\n * @param tenantId - The tenant ID.\n * @returns The instance response.\n */\n async deleteInstance(tenantId: string): Promise<InstanceResponse> {\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}`,\n responseSchema: InstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Create devices for a tenant instance.\n * @param tenantId - The tenant ID.\n * @param body - The device creation request.\n * @returns The device response with statuses.\n */\n async createDevices(tenantId: string, body: DeviceRequest): Promise<DeviceResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}/devices`,\n body,\n responseSchema: DeviceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update devices for a tenant instance.\n * @param tenantId - The tenant ID.\n * @param body - The device update request.\n * @returns The device response with statuses.\n */\n async updateDevices(tenantId: string, body: DeviceRequest): Promise<DeviceResponse> {\n return request({\n method: 'PATCH',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}/devices`,\n body,\n responseSchema: DeviceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete devices from a tenant instance.\n * @param tenantId - The tenant ID.\n * @param serialNumbers - Comma-separated serial numbers to delete.\n * @returns The device response with statuses.\n */\n async deleteDevices(tenantId: string, serialNumbers: string): Promise<DeviceResponse> {\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}/devices`,\n params: { serial_numbers: serialNumbers },\n responseSchema: DeviceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get or create registry credentials.\n * @returns The registry credentials with token and expiry.\n */\n async getRegistryCredentials(): Promise<RegistryCredentials> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_REGISTRY_CREDENTIALS_PATH,\n responseSchema: RegistryCredentialsSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import {\n DEFAULT_RED_TEAM_DATA_ENDPOINT,\n DEFAULT_RED_TEAM_MGMT_ENDPOINT,\n RED_TEAM_DATA_ENDPOINT,\n RED_TEAM_MGMT_ENDPOINT,\n RED_TEAM_DASHBOARD_PATH,\n RED_TEAM_QUOTA_PATH,\n RED_TEAM_ERROR_LOG_PATH,\n RED_TEAM_SENTIMENT_PATH,\n RED_TEAM_MGMT_DASHBOARD_PATH,\n} from '../constants.js';\nimport { OAuthAuth } from '../http/auth/oauth.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { resolveOAuthConfig } from '../oauth-config.js';\nimport { assertUuid } from '../validators.js';\nimport { RedTeamScansClient, type RedTeamListOptions } from './scans-client.js';\nimport { RedTeamReportsClient } from './reports-client.js';\nimport { RedTeamCustomAttackReportsClient } from './custom-attack-reports-client.js';\nimport { RedTeamTargetsClient } from './targets-client.js';\nimport { RedTeamCustomAttacksClient } from './custom-attacks-client.js';\nimport { RedTeamEulaClient } from './eula-client.js';\nimport { RedTeamInstancesClient } from './instances-client.js';\nimport {\n ScanStatisticsResponseSchema,\n ScoreTrendResponseSchema,\n QuotaSummarySchema,\n ErrorLogListResponseSchema,\n SentimentResponseSchema,\n DashboardOverviewResponseSchema,\n type ScanStatisticsResponse,\n type ScoreTrendResponse,\n type QuotaSummary,\n type ErrorLogListResponse,\n type SentimentRequest,\n type SentimentResponse,\n type DashboardOverviewResponse,\n} from '../models/red-team.js';\n\n/** Options for constructing a {@link RedTeamClient}. */\nexport interface RedTeamClientOptions {\n /** OAuth2 client ID. Falls back to `PANW_RED_TEAM_CLIENT_ID`, then `PANW_MGMT_CLIENT_ID`. */\n clientId?: string;\n /** OAuth2 client secret. Falls back to `PANW_RED_TEAM_CLIENT_SECRET`, then `PANW_MGMT_CLIENT_SECRET`. */\n clientSecret?: string;\n /** Tenant Service Group ID. Falls back to `PANW_RED_TEAM_TSG_ID`, then `PANW_MGMT_TSG_ID`. */\n tsgId?: string;\n /** Data plane endpoint URL. Falls back to `PANW_RED_TEAM_DATA_ENDPOINT`. */\n dataEndpoint?: string;\n /** Management plane endpoint URL. Falls back to `PANW_RED_TEAM_MGMT_ENDPOINT`. */\n mgmtEndpoint?: string;\n /** OAuth2 token endpoint URL. Falls back to `PANW_RED_TEAM_TOKEN_ENDPOINT`, then `PANW_MGMT_TOKEN_ENDPOINT`. */\n tokenEndpoint?: string;\n /** Max retry attempts (0-5). Defaults to 5. */\n numRetries?: number;\n}\n\n/**\n * Client for AIRS Red Teaming API operations.\n * Uses two base URLs: data plane for scans/reports, management plane for targets/custom attacks.\n */\nexport class RedTeamClient {\n /** Data plane scan operations. */\n public readonly scans: RedTeamScansClient;\n /** Data plane report operations. */\n public readonly reports: RedTeamReportsClient;\n /** Data plane custom attack report operations. */\n public readonly customAttackReports: RedTeamCustomAttackReportsClient;\n /** Management plane target operations. */\n public readonly targets: RedTeamTargetsClient;\n /** Management plane custom attack/prompt set operations. */\n public readonly customAttacks: RedTeamCustomAttacksClient;\n /** Management plane EULA operations. */\n public readonly eula: RedTeamEulaClient;\n /** Management plane instance/licensing operations. */\n public readonly instances: RedTeamInstancesClient;\n\n private readonly dataEndpoint: string;\n private readonly mgmtEndpoint: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamClientOptions = {}) {\n const dataEndpoint =\n opts.dataEndpoint ?? process.env[RED_TEAM_DATA_ENDPOINT] ?? DEFAULT_RED_TEAM_DATA_ENDPOINT;\n const mgmtEndpoint =\n opts.mgmtEndpoint ?? process.env[RED_TEAM_MGMT_ENDPOINT] ?? DEFAULT_RED_TEAM_MGMT_ENDPOINT;\n\n const { oauthClient, numRetries } = resolveOAuthConfig({\n clientId: opts.clientId,\n clientSecret: opts.clientSecret,\n tsgId: opts.tsgId,\n baseUrl: dataEndpoint,\n numRetries: opts.numRetries,\n tokenEndpoint: opts.tokenEndpoint,\n primaryEnvPrefix: 'PANW_RED_TEAM',\n fallbackEnvPrefix: 'PANW_MGMT',\n });\n\n const auth = new OAuthAuth(oauthClient);\n this.auth = auth;\n this.dataEndpoint = dataEndpoint;\n this.mgmtEndpoint = mgmtEndpoint;\n this.numRetries = numRetries;\n\n this.scans = new RedTeamScansClient({ baseUrl: dataEndpoint, auth, numRetries });\n this.reports = new RedTeamReportsClient({ baseUrl: dataEndpoint, auth, numRetries });\n this.customAttackReports = new RedTeamCustomAttackReportsClient({\n baseUrl: dataEndpoint,\n auth,\n numRetries,\n });\n this.targets = new RedTeamTargetsClient({ baseUrl: mgmtEndpoint, auth, numRetries });\n this.customAttacks = new RedTeamCustomAttacksClient({\n baseUrl: mgmtEndpoint,\n auth,\n numRetries,\n });\n this.eula = new RedTeamEulaClient({ baseUrl: mgmtEndpoint, auth, numRetries });\n this.instances = new RedTeamInstancesClient({ baseUrl: mgmtEndpoint, auth, numRetries });\n }\n\n // -----------------------------------------------------------------------\n // Data plane convenience methods\n // -----------------------------------------------------------------------\n\n /**\n * Get scan statistics and risk profile (data plane dashboard).\n * @param params - Optional date range and target ID filters.\n * @returns The scan statistics response.\n */\n async getScanStatistics(params?: {\n date_range?: string;\n target_id?: string;\n }): Promise<ScanStatisticsResponse> {\n const p: Record<string, string> = {};\n if (params?.date_range !== undefined) p.date_range = params.date_range;\n if (params?.target_id !== undefined) p.target_id = params.target_id;\n\n return request({\n method: 'GET',\n baseUrl: this.dataEndpoint,\n path: `${RED_TEAM_DASHBOARD_PATH}/scan-statistics`,\n params: p,\n responseSchema: ScanStatisticsResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get score trend for a target (data plane dashboard).\n * @param targetId - The target UUID.\n * @returns The score trend response.\n */\n async getScoreTrend(targetId: string): Promise<ScoreTrendResponse> {\n assertUuid(targetId, 'target id');\n return request({\n method: 'GET',\n baseUrl: this.dataEndpoint,\n path: `${RED_TEAM_DASHBOARD_PATH}/score-trend`,\n params: { target_id: targetId },\n responseSchema: ScoreTrendResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get quota summary.\n * @returns The quota summary.\n */\n async getQuota(): Promise<QuotaSummary> {\n return request({\n method: 'POST',\n baseUrl: this.dataEndpoint,\n path: RED_TEAM_QUOTA_PATH,\n responseSchema: QuotaSummarySchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List error logs for a scan job.\n * @param jobId - The job UUID.\n * @param opts - Optional pagination and search options.\n * @returns The paginated list of error logs.\n */\n async getErrorLogs(jobId: string, opts?: RedTeamListOptions): Promise<ErrorLogListResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.dataEndpoint,\n path: `${RED_TEAM_ERROR_LOG_PATH}/${jobId}`,\n params: serializeListing(opts),\n responseSchema: ErrorLogListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update sentiment for a scan report.\n * @param body - The sentiment request body.\n * @returns The sentiment response.\n */\n async updateSentiment(body: SentimentRequest): Promise<SentimentResponse> {\n return request({\n method: 'POST',\n baseUrl: this.dataEndpoint,\n path: RED_TEAM_SENTIMENT_PATH,\n body,\n responseSchema: SentimentResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get sentiment for a scan report.\n * @param jobId - The job UUID.\n * @returns The sentiment response.\n */\n async getSentiment(jobId: string): Promise<SentimentResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.dataEndpoint,\n path: `${RED_TEAM_SENTIMENT_PATH}/${jobId}`,\n responseSchema: SentimentResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n // -----------------------------------------------------------------------\n // Management plane convenience methods\n // -----------------------------------------------------------------------\n\n /**\n * Get management dashboard overview.\n * @returns The dashboard overview response.\n */\n async getDashboardOverview(): Promise<DashboardOverviewResponse> {\n return request({\n method: 'GET',\n baseUrl: this.mgmtEndpoint,\n path: RED_TEAM_MGMT_DASHBOARD_PATH,\n responseSchema: DashboardOverviewResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["ErrorType","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/errors.ts","../src/configuration.ts","../src/scan/scanner.ts","../src/utils.ts","../src/http/auth/api-key.ts","../src/http-retry.ts","../src/http/request.ts","../src/models/scan-response.ts","../src/models/prompt-detected.ts","../src/models/response-detected.ts","../src/models/tool-event.ts","../src/models/detection-reports.ts","../src/models/async-scan.ts","../src/models/scan-request.ts","../src/models/ai-profile.ts","../src/models/metadata.ts","../src/models/scan-id-result.ts","../src/models/threat-report.ts","../src/models/detection.ts","../src/models/dlp-report.ts","../src/models/urlf-report.ts","../src/scan/content.ts","../src/models/enums.ts","../src/models/error-response.ts","../src/models/mgmt-security-profile.ts","../src/models/mgmt-custom-topic.ts","../src/models/mgmt-api-key.ts","../src/models/mgmt-customer-app.ts","../src/models/mgmt-deployment-profile.ts","../src/models/mgmt-dlp-profile.ts","../src/models/mgmt-scan-log.ts","../src/models/mgmt-oauth.ts","../src/models/model-security-enums.ts","../src/models/model-security.ts","../src/models/red-team-enums.ts","../src/models/red-team.ts","../src/http/auth/oauth.ts","../src/models/oauth-token.ts","../src/management/oauth-client.ts","../src/oauth-config.ts","../src/validators.ts","../src/management/profiles.ts","../src/management/topics.ts","../src/management/api-keys.ts","../src/management/customer-apps.ts","../src/management/dlp-profiles.ts","../src/management/deployment-profiles.ts","../src/management/scan-logs.ts","../src/management/oauth-management.ts","../src/management/client.ts","../src/listing.ts","../src/model-security/scans-client.ts","../src/model-security/security-groups-client.ts","../src/model-security/security-rules-client.ts","../src/model-security/client.ts","../src/red-team/scans-client.ts","../src/red-team/reports-client.ts","../src/red-team/custom-attack-reports-client.ts","../src/red-team/targets-client.ts","../src/red-team/custom-attacks-client.ts","../src/red-team/eula-client.ts","../src/red-team/instances-client.ts","../src/red-team/client.ts"],"sourcesContent":["// Public API surface\nexport { init, globalConfiguration, type InitOptions } from './configuration.js';\nexport { Scanner, Content, type SyncScanOptions, type ContentOptions } from './scan/index.js';\nexport { AISecSDKException, ErrorType } from './errors.js';\nexport * from './models/index.js';\nexport * from './constants.js';\nexport * from './management/index.js';\nexport * from './model-security/index.js';\nexport * from './red-team/index.js';\n","// src/constants.ts — mirrors Python SDK constants/base.py\n\nexport const HEADER_API_KEY = 'x-pan-token';\nexport const HEADER_AUTH_TOKEN = 'Authorization';\nexport const PAYLOAD_HASH = 'x-payload-hash';\nexport const BEARER = 'Bearer ';\n\nexport const DEFAULT_ENDPOINT = 'https://service.api.aisecurity.paloaltonetworks.com';\n\n/** Regional AIRS API endpoints. */\nexport const AIRS_ENDPOINTS = {\n US: 'https://service.api.aisecurity.paloaltonetworks.com',\n EU: 'https://service-de.api.aisecurity.paloaltonetworks.com',\n INDIA: 'https://service-in.api.aisecurity.paloaltonetworks.com',\n SINGAPORE: 'https://service-sg.api.aisecurity.paloaltonetworks.com',\n} as const;\n\n// Environment variable names\nexport const AI_SEC_API_KEY = 'PANW_AI_SEC_API_KEY';\nexport const AI_SEC_API_TOKEN = 'PANW_AI_SEC_API_TOKEN';\nexport const AI_SEC_API_ENDPOINT = 'PANW_AI_SEC_API_ENDPOINT';\n\n// Content length limits (bytes)\nexport const MAX_CONTENT_PROMPT_LENGTH = 2 * 1024 * 1024; // 2 MB\nexport const MAX_CONTENT_RESPONSE_LENGTH = 2 * 1024 * 1024; // 2 MB\nexport const MAX_CONTENT_CONTEXT_LENGTH = 100 * 1024 * 1024; // 100 MB\n\n// Auth limits\nexport const MAX_API_KEY_LENGTH = 2048;\nexport const MAX_TOKEN_LENGTH = 2048;\n\n// String length limits\nexport const MAX_TRANSACTION_ID_STR_LENGTH = 100;\nexport const MAX_SESSION_ID_STR_LENGTH = 100;\nexport const MAX_SCAN_ID_STR_LENGTH = 36;\nexport const MAX_REPORT_ID_STR_LENGTH = 40;\nexport const MAX_AI_PROFILE_NAME_LENGTH = 100;\n\n// Batch / query limits\nexport const MAX_NUMBER_OF_SCAN_IDS = 5;\nexport const MAX_NUMBER_OF_REPORT_IDS = 5;\nexport const MAX_NUMBER_OF_BATCH_SCAN_OBJECTS = 5;\n\n// HTTP / retry\nexport const MAX_CONNECTION_POOL_SIZE = 100;\nexport const MAX_NUMBER_OF_RETRIES = 5;\nexport const HTTP_FORCE_RETRY_STATUS_CODES = [500, 502, 503, 504];\n\n// User-Agent (version injected at build time or read from package.json)\nexport const SDK_VERSION = '0.8.2';\nexport const USER_AGENT = `PAN-AIRS/${SDK_VERSION}-typescript-sdk`;\n\n// Management API defaults\nexport const DEFAULT_MGMT_ENDPOINT = 'https://api.sase.paloaltonetworks.com/aisec';\nexport const DEFAULT_TOKEN_ENDPOINT = 'https://auth.apps.paloaltonetworks.com/oauth2/access_token';\n\n// Management env vars\nexport const MGMT_CLIENT_ID = 'PANW_MGMT_CLIENT_ID';\nexport const MGMT_CLIENT_SECRET = 'PANW_MGMT_CLIENT_SECRET';\nexport const MGMT_TSG_ID = 'PANW_MGMT_TSG_ID';\nexport const MGMT_ENDPOINT = 'PANW_MGMT_ENDPOINT';\nexport const MGMT_TOKEN_ENDPOINT = 'PANW_MGMT_TOKEN_ENDPOINT';\n\n// API paths — scan\nexport const SYNC_SCAN_PATH = '/v1/scan/sync/request';\nexport const ASYNC_SCAN_PATH = '/v1/scan/async/request';\nexport const SCAN_RESULTS_PATH = '/v1/scan/results';\nexport const SCAN_REPORTS_PATH = '/v1/scan/reports';\n\n// API paths — management\nexport const MGMT_PROFILE_PATH = '/v1/mgmt/profile';\nexport const MGMT_PROFILES_TSG_PATH = '/v1/mgmt/profiles/tsg';\nexport const MGMT_TOPIC_PATH = '/v1/mgmt/topic';\nexport const MGMT_TOPICS_TSG_PATH = '/v1/mgmt/topics/tsg';\nexport const MGMT_TOPIC_FORCE_PATH = '/v1/mgmt/topic/force';\nexport const MGMT_API_KEY_PATH = '/v1/mgmt/apikey';\nexport const MGMT_API_KEYS_TSG_PATH = '/v1/mgmt/apikeys/tsg';\nexport const MGMT_DLP_PROFILES_PATH = '/v1/mgmt/dlpprofiles';\nexport const MGMT_DEPLOYMENT_PROFILES_PATH = '/v1/mgmt/deploymentprofiles';\nexport const MGMT_SCAN_LOGS_PATH = '/v1/mgmt/scanlogs';\nexport const MGMT_CUSTOMER_APP_PATH = '/v1/mgmt/customerapp';\nexport const MGMT_CUSTOMER_APPS_TSG_PATH = '/v1/mgmt/customerapp/tsg';\nexport const MGMT_OAUTH_INVALIDATE_PATH = '/v1/mgmt/oauth/invalidateToken';\nexport const MGMT_OAUTH_TOKEN_PATH = '/v1/mgmt/oauth/client_credential/accesstoken';\n\n// Model Security API defaults\nexport const DEFAULT_MODEL_SEC_DATA_ENDPOINT = 'https://api.sase.paloaltonetworks.com/aims/data';\nexport const DEFAULT_MODEL_SEC_MGMT_ENDPOINT = 'https://api.sase.paloaltonetworks.com/aims/mgmt';\n\n// Model Security env vars\nexport const MODEL_SEC_CLIENT_ID = 'PANW_MODEL_SEC_CLIENT_ID';\nexport const MODEL_SEC_CLIENT_SECRET = 'PANW_MODEL_SEC_CLIENT_SECRET';\nexport const MODEL_SEC_TSG_ID = 'PANW_MODEL_SEC_TSG_ID';\nexport const MODEL_SEC_DATA_ENDPOINT = 'PANW_MODEL_SEC_DATA_ENDPOINT';\nexport const MODEL_SEC_MGMT_ENDPOINT = 'PANW_MODEL_SEC_MGMT_ENDPOINT';\nexport const MODEL_SEC_TOKEN_ENDPOINT = 'PANW_MODEL_SEC_TOKEN_ENDPOINT';\n\n// API paths — model security data plane\nexport const MODEL_SEC_SCANS_PATH = '/v1/scans';\nexport const MODEL_SEC_EVALUATIONS_PATH = '/v1/evaluations';\nexport const MODEL_SEC_VIOLATIONS_PATH = '/v1/violations';\n\n// API paths — model security management\nexport const MODEL_SEC_SECURITY_GROUPS_PATH = '/v1/security-groups';\nexport const MODEL_SEC_SECURITY_RULES_PATH = '/v1/security-rules';\nexport const MODEL_SEC_PYPI_AUTH_PATH = '/v1/pypi/authenticate';\n\n// Red Team API defaults\nexport const DEFAULT_RED_TEAM_DATA_ENDPOINT =\n 'https://api.sase.paloaltonetworks.com/ai-red-teaming/data-plane';\nexport const DEFAULT_RED_TEAM_MGMT_ENDPOINT =\n 'https://api.sase.paloaltonetworks.com/ai-red-teaming/mgmt-plane';\n\n// Red Team env vars\nexport const RED_TEAM_CLIENT_ID = 'PANW_RED_TEAM_CLIENT_ID';\nexport const RED_TEAM_CLIENT_SECRET = 'PANW_RED_TEAM_CLIENT_SECRET';\nexport const RED_TEAM_TSG_ID = 'PANW_RED_TEAM_TSG_ID';\nexport const RED_TEAM_DATA_ENDPOINT = 'PANW_RED_TEAM_DATA_ENDPOINT';\nexport const RED_TEAM_MGMT_ENDPOINT = 'PANW_RED_TEAM_MGMT_ENDPOINT';\nexport const RED_TEAM_TOKEN_ENDPOINT = 'PANW_RED_TEAM_TOKEN_ENDPOINT';\n\n// API paths — red team data plane\nexport const RED_TEAM_SCAN_PATH = '/v1/scan';\nexport const RED_TEAM_CATEGORIES_PATH = '/v1/categories';\nexport const RED_TEAM_REPORT_STATIC_PATH = '/v1/report/static';\nexport const RED_TEAM_REPORT_DYNAMIC_PATH = '/v1/report/dynamic';\nexport const RED_TEAM_REPORT_PATH = '/v1/report';\nexport const RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH = '/v1/custom-attacks';\nexport const RED_TEAM_DASHBOARD_PATH = '/v1/dashboard';\nexport const RED_TEAM_QUOTA_PATH = '/v1/metering/quota';\nexport const RED_TEAM_ERROR_LOG_PATH = '/v1/error-log/job';\nexport const RED_TEAM_SENTIMENT_PATH = '/v1/sentiment';\n\n// API paths — red team management plane\nexport const RED_TEAM_TARGET_PATH = '/v1/target';\nexport const RED_TEAM_TARGET_VALIDATE_AUTH_PATH = '/v1/target/validate-auth';\nexport const RED_TEAM_TEMPLATE_PATH = '/v1/template';\nexport const RED_TEAM_EULA_PATH = '/v1/eula';\nexport const RED_TEAM_INSTANCES_PATH = '/v1/instances';\nexport const RED_TEAM_REGISTRY_CREDENTIALS_PATH = '/v1/registry-credentials';\nexport const RED_TEAM_CUSTOM_ATTACK_PATH = '/v1/custom-attack';\nexport const RED_TEAM_MGMT_DASHBOARD_PATH = '/v1/dashboard/overview';\n","// src/errors.ts — mirrors Python SDK exceptions.py\n\n/** Classification of SDK errors by origin. */\nexport enum ErrorType {\n /** 5xx response from the AIRS API. */\n SERVER_SIDE_ERROR = 'AISEC_SERVER_SIDE_ERROR',\n /** 4xx response or network failure. */\n CLIENT_SIDE_ERROR = 'AISEC_CLIENT_SIDE_ERROR',\n /** Invalid user-supplied input (bad UUID, oversized content, etc.). */\n USER_REQUEST_PAYLOAD_ERROR = 'AISEC_USER_REQUEST_PAYLOAD_ERROR',\n /** Required configuration value is missing. */\n MISSING_VARIABLE = 'AISEC_MISSING_VARIABLE',\n /** Internal SDK error. */\n AISEC_SDK_ERROR = 'AISEC_SDK_ERROR',\n /** OAuth2 token fetch failure. */\n OAUTH_ERROR = 'AISEC_OAUTH_ERROR',\n /** Server returned a 2xx body that did not match the declared response schema, or invalid JSON. */\n RESPONSE_VALIDATION = 'AISEC_RESPONSE_VALIDATION',\n}\n\n/**\n * Base exception for all AIRS SDK errors.\n * The `errorType` field classifies the error origin.\n */\nexport class AISecSDKException extends Error {\n public readonly errorType?: ErrorType;\n\n /**\n * @param message - Human-readable error description.\n * @param errorType - Classification of the error.\n */\n constructor(message: string, errorType?: ErrorType) {\n super(errorType ? `${errorType}:${message}` : message);\n this.name = 'AISecSDKException';\n this.errorType = errorType;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, AISecSDKException);\n }\n }\n}\n","// src/configuration.ts — mirrors Python SDK configuration.py\n\nimport {\n DEFAULT_ENDPOINT,\n AI_SEC_API_KEY,\n AI_SEC_API_TOKEN,\n AI_SEC_API_ENDPOINT,\n MAX_API_KEY_LENGTH,\n MAX_TOKEN_LENGTH,\n MAX_NUMBER_OF_RETRIES,\n} from './constants.js';\nimport { AISecSDKException, ErrorType } from './errors.js';\n\n/** Options for initializing the global scan API configuration. */\nexport interface InitOptions {\n /** AIRS API key. Falls back to `PANW_AI_SEC_API_KEY` env var. */\n apiKey?: string;\n /** Pre-obtained bearer token. Falls back to `PANW_AI_SEC_API_TOKEN` env var. */\n apiToken?: string;\n /** AIRS API endpoint URL. Falls back to `PANW_AI_SEC_API_ENDPOINT` env var. */\n apiEndpoint?: string;\n /** Max retry attempts (0–5). Defaults to 5. */\n numRetries?: number;\n}\n\nclass Configuration {\n private _apiKey?: string;\n private _apiToken?: string;\n private _apiEndpoint: string = DEFAULT_ENDPOINT;\n private _numRetries: number = MAX_NUMBER_OF_RETRIES;\n private _initialized = false;\n\n get apiKey(): string | undefined {\n return this._apiKey;\n }\n get apiToken(): string | undefined {\n return this._apiToken;\n }\n get apiEndpoint(): string {\n return this._apiEndpoint;\n }\n get numRetries(): number {\n return this._numRetries;\n }\n get initialized(): boolean {\n return this._initialized;\n }\n\n init(opts: InitOptions = {}): void {\n // Resolve api key\n const apiKey = (opts.apiKey ?? process.env[AI_SEC_API_KEY] ?? '').trim() || undefined;\n const apiToken = (opts.apiToken ?? process.env[AI_SEC_API_TOKEN] ?? '').trim() || undefined;\n\n if (!apiKey && !apiToken) {\n throw new AISecSDKException(\n 'Either apiKey or apiToken must be provided (or set via environment variables)',\n ErrorType.MISSING_VARIABLE,\n );\n }\n\n if (apiKey && apiKey.length > MAX_API_KEY_LENGTH) {\n throw new AISecSDKException(\n `apiKey exceeds max length of ${MAX_API_KEY_LENGTH}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n if (apiToken && apiToken.length > MAX_TOKEN_LENGTH) {\n throw new AISecSDKException(\n `apiToken exceeds max length of ${MAX_TOKEN_LENGTH}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n this._apiKey = apiKey;\n this._apiToken = apiToken;\n\n // Resolve endpoint\n const endpoint = opts.apiEndpoint ?? process.env[AI_SEC_API_ENDPOINT] ?? DEFAULT_ENDPOINT;\n this._apiEndpoint = endpoint.replace(/\\/+$/, ''); // strip trailing slashes\n\n // Resolve retries\n if (opts.numRetries !== undefined) {\n if (opts.numRetries < 0 || opts.numRetries > MAX_NUMBER_OF_RETRIES) {\n throw new AISecSDKException(\n `numRetries must be between 0 and ${MAX_NUMBER_OF_RETRIES}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._numRetries = opts.numRetries;\n }\n\n this._initialized = true;\n }\n\n reset(): void {\n this._apiKey = undefined;\n this._apiToken = undefined;\n this._apiEndpoint = DEFAULT_ENDPOINT;\n this._numRetries = MAX_NUMBER_OF_RETRIES;\n this._initialized = false;\n }\n}\n\n/** Global singleton holding scan API configuration. */\nexport const globalConfiguration = new Configuration();\n\n/**\n * Initialize the global scan API configuration. Must be called before using {@link Scanner}.\n * @param opts - Configuration options. Reads env vars as fallbacks.\n * @throws {AISecSDKException} If neither apiKey nor apiToken is provided.\n */\nexport function init(opts: InitOptions = {}): void {\n globalConfiguration.init(opts);\n}\n","import { z } from 'zod';\nimport {\n SYNC_SCAN_PATH,\n ASYNC_SCAN_PATH,\n SCAN_RESULTS_PATH,\n SCAN_REPORTS_PATH,\n MAX_NUMBER_OF_SCAN_IDS,\n MAX_NUMBER_OF_REPORT_IDS,\n MAX_NUMBER_OF_BATCH_SCAN_OBJECTS,\n MAX_TRANSACTION_ID_STR_LENGTH,\n MAX_SESSION_ID_STR_LENGTH,\n} from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { globalConfiguration } from '../configuration.js';\nimport { ApiKeyAuth } from '../http/auth/api-key.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { isValidUuid } from '../utils.js';\nimport type { AiProfile } from '../models/ai-profile.js';\nimport type { Metadata } from '../models/metadata.js';\nimport { ScanResponseSchema, type ScanResponse } from '../models/scan-response.js';\nimport {\n AsyncScanResponseSchema,\n type AsyncScanObject,\n type AsyncScanResponse,\n} from '../models/async-scan.js';\nimport { ScanIdResultSchema, type ScanIdResult } from '../models/scan-id-result.js';\nimport { ThreatScanReportSchema, type ThreatScanReport } from '../models/threat-report.js';\nimport { Content } from './content.js';\n\n/** Optional parameters for {@link Scanner.syncScan}. */\nexport interface SyncScanOptions {\n /** Transaction ID for tracing. Max 100 characters. */\n trId?: string;\n /** Session ID for grouping related scans. Max 100 characters. */\n sessionId?: string;\n /** Application metadata attached to the scan request. */\n metadata?: Metadata;\n}\n\n/** Client for AIRS scan operations (sync, async, and query). */\nexport class Scanner {\n /**\n * @internal\n * Build the per-request auth adapter from `globalConfiguration`. Throws if\n * `init()` has not been called.\n */\n private buildAuth(): AuthAdapter {\n const cfg = globalConfiguration;\n if (!cfg.initialized) {\n throw new AISecSDKException(\n 'SDK not initialized. Call init() before making requests.',\n ErrorType.MISSING_VARIABLE,\n );\n }\n return new ApiKeyAuth({ apiKey: cfg.apiKey, apiToken: cfg.apiToken });\n }\n\n /**\n * Perform a synchronous content scan.\n * @param aiProfile - AI security profile to scan against.\n * @param content - Content to scan.\n * @param opts - Optional transaction/session IDs and metadata.\n * @returns Scan response with verdict, action, and detection details.\n */\n async syncScan(\n aiProfile: AiProfile,\n content: Content,\n opts: SyncScanOptions = {},\n ): Promise<ScanResponse> {\n if (opts.trId && opts.trId.length > MAX_TRANSACTION_ID_STR_LENGTH) {\n throw new AISecSDKException(\n `trId exceeds max length of ${MAX_TRANSACTION_ID_STR_LENGTH}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n if (opts.sessionId && opts.sessionId.length > MAX_SESSION_ID_STR_LENGTH) {\n throw new AISecSDKException(\n `sessionId exceeds max length of ${MAX_SESSION_ID_STR_LENGTH}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n const body: Record<string, unknown> = {\n ai_profile: aiProfile,\n contents: [content.toJSON()],\n };\n if (opts.trId) body.tr_id = opts.trId;\n if (opts.sessionId) body.session_id = opts.sessionId;\n if (opts.metadata) body.metadata = opts.metadata;\n\n return request({\n method: 'POST',\n baseUrl: globalConfiguration.apiEndpoint,\n path: SYNC_SCAN_PATH,\n body,\n responseSchema: ScanResponseSchema,\n auth: this.buildAuth(),\n numRetries: globalConfiguration.numRetries,\n });\n }\n\n /**\n * Submit content for asynchronous scanning.\n * @param scanObjects - Array of scan objects (1–5 items).\n * @returns Response containing scan IDs for later querying.\n */\n async asyncScan(scanObjects: AsyncScanObject[]): Promise<AsyncScanResponse> {\n if (scanObjects.length < 1) {\n throw new AISecSDKException(\n 'At least 1 scan object is required',\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n if (scanObjects.length > MAX_NUMBER_OF_BATCH_SCAN_OBJECTS) {\n throw new AISecSDKException(\n `Max of ${MAX_NUMBER_OF_BATCH_SCAN_OBJECTS} scan objects allowed`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n return request({\n method: 'POST',\n baseUrl: globalConfiguration.apiEndpoint,\n path: ASYNC_SCAN_PATH,\n body: scanObjects,\n responseSchema: AsyncScanResponseSchema,\n auth: this.buildAuth(),\n numRetries: globalConfiguration.numRetries,\n });\n }\n\n /**\n * Query scan results by scan IDs.\n * @param scanIds - Array of scan UUIDs (1–5 items).\n * @returns Array of scan results with status and response data.\n */\n async queryByScanIds(scanIds: string[]): Promise<ScanIdResult[]> {\n if (scanIds.length < 1) {\n throw new AISecSDKException(\n 'At least 1 scan_id is required',\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n if (scanIds.length > MAX_NUMBER_OF_SCAN_IDS) {\n throw new AISecSDKException(\n `Max of ${MAX_NUMBER_OF_SCAN_IDS} scan_ids allowed`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n for (const id of scanIds) {\n if (!isValidUuid(id)) {\n throw new AISecSDKException(`Invalid scan_id: ${id}`, ErrorType.USER_REQUEST_PAYLOAD_ERROR);\n }\n }\n\n return request({\n method: 'GET',\n baseUrl: globalConfiguration.apiEndpoint,\n path: SCAN_RESULTS_PATH,\n params: { scan_ids: scanIds.join(',') },\n responseSchema: z.array(ScanIdResultSchema),\n auth: this.buildAuth(),\n numRetries: globalConfiguration.numRetries,\n });\n }\n\n /**\n * Query detailed threat reports by report IDs.\n * @param reportIds - Array of report IDs (1–5 items).\n * @returns Array of threat scan reports with detection details.\n */\n async queryByReportIds(reportIds: string[]): Promise<ThreatScanReport[]> {\n if (reportIds.length < 1) {\n throw new AISecSDKException(\n 'At least 1 report_id is required',\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n if (reportIds.length > MAX_NUMBER_OF_REPORT_IDS) {\n throw new AISecSDKException(\n `Max of ${MAX_NUMBER_OF_REPORT_IDS} report_ids allowed`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n return request({\n method: 'GET',\n baseUrl: globalConfiguration.apiEndpoint,\n path: SCAN_REPORTS_PATH,\n params: { report_ids: reportIds.join(',') },\n responseSchema: z.array(ThreatScanReportSchema),\n auth: this.buildAuth(),\n numRetries: globalConfiguration.numRetries,\n });\n }\n}\n","// src/utils.ts — UUID validation + HMAC payload hash\n\nimport { createHmac } from 'node:crypto';\nimport { AISecSDKException, ErrorType } from './errors.js';\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * @internal\n * Test whether a string is a valid RFC 4122 UUID.\n * @param value - The string to validate.\n * @returns `true` if the string matches the UUID format.\n */\nexport function isValidUuid(value: string): boolean {\n return UUID_RE.test(value);\n}\n\n/**\n * @internal\n * Validate that a job ID is a valid UUID, throwing if not.\n * @param jobId - The job ID string to validate.\n * @throws {AISecSDKException} If the job ID is not a valid UUID.\n */\nexport function validateJobId(jobId: string): void {\n if (!isValidUuid(jobId)) {\n throw new AISecSDKException(`Invalid job id: ${jobId}`, ErrorType.USER_REQUEST_PAYLOAD_ERROR);\n }\n}\n\n/**\n * @internal\n * Generate an HMAC-SHA256 hex digest for API key authentication.\n * @param payload - The JSON payload string to sign.\n * @param secret - The API key secret.\n * @returns Hex-encoded HMAC-SHA256 hash.\n */\nexport function generatePayloadHash(payload: string, secret: string): string {\n return createHmac('sha256', secret).update(payload).digest('hex');\n}\n","import { BEARER, HEADER_API_KEY, HEADER_AUTH_TOKEN, PAYLOAD_HASH } from '../../constants.js';\nimport { AISecSDKException, ErrorType } from '../../errors.js';\nimport { generatePayloadHash } from '../../utils.js';\nimport type { AuthAdapter, PreparedRequest } from '../types.js';\n\n/** Options for {@link ApiKeyAuth}. At least one of `apiKey` / `apiToken` is required. */\nexport interface ApiKeyAuthOptions {\n apiKey?: string;\n apiToken?: string;\n}\n\n/**\n * @internal\n * Auth adapter for the AIRS scan service. Adds the API-key header, the bearer token header\n * (if configured), and an HMAC-SHA256 payload hash over `bodyText` when both an apiKey and a\n * body are present. Mirrors the behavior of the legacy `src/http-client.ts`.\n */\nexport class ApiKeyAuth implements AuthAdapter {\n private readonly apiKey?: string;\n private readonly apiToken?: string;\n\n constructor(opts: ApiKeyAuthOptions) {\n if (!opts.apiKey && !opts.apiToken) {\n throw new AISecSDKException(\n 'ApiKeyAuth requires either apiKey or apiToken',\n ErrorType.MISSING_VARIABLE,\n );\n }\n this.apiKey = opts.apiKey;\n this.apiToken = opts.apiToken;\n }\n\n async prepare(req: PreparedRequest): Promise<PreparedRequest> {\n const headers = { ...req.headers };\n if (this.apiToken) {\n headers[HEADER_AUTH_TOKEN] = `${BEARER}${this.apiToken}`;\n }\n if (this.apiKey) {\n headers[HEADER_API_KEY] = this.apiKey;\n if (req.bodyText !== undefined) {\n headers[PAYLOAD_HASH] = generatePayloadHash(req.bodyText, this.apiKey);\n }\n }\n return { ...req, headers };\n }\n}\n","// src/http-retry.ts — shared retry logic for HTTP clients\n\nimport { HTTP_FORCE_RETRY_STATUS_CODES } from './constants.js';\nimport { AISecSDKException, ErrorType } from './errors.js';\n\n/**\n * @internal\n * Sleep for the given number of milliseconds.\n * @param ms - Milliseconds to wait.\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * @internal\n * Calculate exponential backoff delay with full jitter for the given attempt.\n * Uses the \"full jitter\" strategy: uniform random in [0, 2^attempt * 1000].\n * @param attempt - Zero-based attempt number.\n * @returns Delay in milliseconds.\n */\nexport function backoffDelay(attempt: number): number {\n const maxDelay = Math.pow(2, attempt) * 1000;\n return Math.floor(Math.random() * (maxDelay + 1));\n}\n\n/**\n * @internal\n * Check if an HTTP status code should trigger a retry.\n * @param status - HTTP status code.\n */\nexport function isRetryableStatus(status: number): boolean {\n return HTTP_FORCE_RETRY_STATUS_CODES.includes(status);\n}\n\n/**\n * @internal\n * Classify an HTTP status code as server-side or client-side error.\n * @param status - HTTP status code.\n */\nexport function classifyErrorType(status: number): ErrorType {\n return status >= 500 ? ErrorType.SERVER_SIDE_ERROR : ErrorType.CLIENT_SIDE_ERROR;\n}\n\n/**\n * @internal\n * Extract a human-readable error message from an API error response body.\n * Tries `error_message`, `message`, and `error.message` fields in order.\n * @param body - Raw response body string.\n * @param status - HTTP status code for fallback message.\n */\nexport function extractErrorMessage(body: string, status: number): string {\n try {\n const parsed = JSON.parse(body) as Record<string, unknown>;\n return (\n (parsed.error_message as string) ??\n (parsed.message as string) ??\n ((parsed.error as Record<string, unknown> | undefined)?.message as string) ??\n `API error ${status}`\n );\n } catch {\n return body ? `API error ${status}: ${body}` : `API error ${status}`;\n }\n}\n\n/** @internal Options for {@link executeWithRetry}. */\nexport interface RetryOptions {\n /** Maximum number of retry attempts. */\n maxRetries: number;\n /** Function that performs the HTTP request for each attempt. */\n execute: (attempt: number) => Promise<Response>;\n /** Optional callback for handling special failure cases (e.g. 401 token refresh). Return true to retry without consuming the retry budget. */\n onRetryableFailure?: (response: Response, attempt: number) => Promise<boolean>;\n}\n\n/**\n * @internal\n * Execute an HTTP request with exponential backoff retry.\n * @param opts - Retry configuration and request function.\n * @returns Successful HTTP Response.\n * @throws {AISecSDKException} After exhausting retries or on non-retryable errors.\n */\nexport async function executeWithRetry(opts: RetryOptions): Promise<Response> {\n const { maxRetries, execute, onRetryableFailure } = opts;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n let response: Response;\n try {\n response = await execute(attempt);\n } catch (err) {\n if (err instanceof AISecSDKException) throw err;\n lastError = err as Error;\n if (attempt < maxRetries) {\n await sleep(backoffDelay(attempt));\n continue;\n }\n throw new AISecSDKException(\n lastError.message ?? 'Network error',\n ErrorType.CLIENT_SIDE_ERROR,\n );\n }\n\n if (response.ok) return response;\n\n // Let caller handle special status codes (e.g. 401 token refresh)\n // When handled, decrement attempt so it doesn't count against retry budget\n if (onRetryableFailure) {\n const handled = await onRetryableFailure(response, attempt);\n if (handled) {\n attempt--;\n continue;\n }\n }\n\n if (isRetryableStatus(response.status) && attempt < maxRetries) {\n await sleep(backoffDelay(attempt));\n continue;\n }\n\n // Non-retryable error\n const errorText = await response.text();\n const errorMessage = extractErrorMessage(errorText, response.status);\n throw new AISecSDKException(errorMessage, classifyErrorType(response.status));\n }\n\n throw new AISecSDKException(\n lastError?.message ?? 'Max retries exceeded',\n ErrorType.CLIENT_SIDE_ERROR,\n );\n}\n","import { USER_AGENT } from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { executeWithRetry } from '../http-retry.js';\nimport type { PreparedRequest, RequestSpec } from './types.js';\n\n/**\n * @internal\n * Execute a single AIRS API request: build URL + headers + body, run the auth adapter, retry per\n * the spec's budget, and (if a response schema is declared) validate the response body.\n *\n * Returns the parsed response when `responseSchema` is provided, or `undefined` when omitted.\n *\n * Throws {@link AISecSDKException}:\n * - `RESPONSE_VALIDATION` if a 2xx body is invalid JSON or fails the schema.\n * - `CLIENT_SIDE_ERROR` for 4xx (or after `onUnauthorized` declines a 401/403).\n * - `SERVER_SIDE_ERROR` for 5xx after exhausting retries.\n */\nexport async function request<TResponse = void>(spec: RequestSpec<TResponse>): Promise<TResponse> {\n let hasRetriedAuth = false;\n\n const response = await executeWithRetry({\n maxRetries: spec.numRetries,\n execute: async () => {\n const baseUrl = spec.baseUrl.replace(/\\/+$/, '');\n const url = new URL(`${baseUrl}${spec.path}`);\n if (spec.params) {\n for (const [key, value] of Object.entries(spec.params)) {\n if (Array.isArray(value)) {\n for (const v of value) url.searchParams.append(key, v);\n } else {\n url.searchParams.set(key, value);\n }\n }\n }\n\n const headers: Record<string, string> = { 'User-Agent': USER_AGENT };\n let bodyText: string | undefined;\n if (spec.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n bodyText = JSON.stringify(spec.body);\n }\n\n const prepared: PreparedRequest = { method: spec.method, url, headers, bodyText };\n const final = await spec.auth.prepare(prepared);\n\n return fetch(final.url.toString(), {\n method: final.method,\n headers: final.headers,\n body: final.bodyText,\n });\n },\n onRetryableFailure: async (res) => {\n if (hasRetriedAuth) return false;\n if (!spec.auth.onUnauthorized) return false;\n const should = await spec.auth.onUnauthorized(res);\n if (should) {\n hasRetriedAuth = true;\n return true;\n }\n return false;\n },\n });\n\n const text = await response.text();\n\n if (!spec.responseSchema) {\n return undefined as TResponse;\n }\n\n let parsed: unknown;\n try {\n // Hydrate empty 2xx bodies as `{}` so all-optional-fields schemas parse cleanly\n // (the AIRS API returns no body when an endpoint has zero results, e.g.\n // /v1/mgmt/scanlogs with no logs in the requested time range). Schemas with\n // required fields will still fail validation, but on a specific path rather\n // than the cryptic root-level `expected object, received undefined`.\n parsed = text ? JSON.parse(text) : {};\n } catch {\n throw new AISecSDKException('Response body is not valid JSON', ErrorType.RESPONSE_VALIDATION);\n }\n\n const result = spec.responseSchema.safeParse(parsed);\n if (!result.success) {\n throw new AISecSDKException(\n `Response did not match schema: ${result.error.message}`,\n ErrorType.RESPONSE_VALIDATION,\n );\n }\n return result.data;\n}\n","import { z } from 'zod';\nimport { PromptDetectedSchema, PromptDetectionDetailsSchema } from './prompt-detected.js';\nimport { ResponseDetectedSchema, ResponseDetectionDetailsSchema } from './response-detected.js';\nimport { ToolEventMetadataSchema } from './tool-event.js';\nimport { PatternDetectionSchema, ContentErrorSchema } from './detection-reports.js';\n\n/** Zod schema for masked data in scan results. */\nexport const MaskedDataSchema = z\n .object({\n data: z.string().optional(),\n pattern_detections: z.array(PatternDetectionSchema).optional(),\n })\n .passthrough();\n\n/** Masked data containing redacted content and pattern detections. */\nexport type MaskedData = z.infer<typeof MaskedDataSchema>;\n\n/**\n * Zod schema for the boolean detection flags returned by per-tool scans.\n *\n * Each flag indicates whether a particular detection service triggered on the\n * tool's input or output. Used inside {@link ToolDetectionEntrySchema} and\n * {@link ScanSummarySchema}.\n */\nexport const ToolDetectionFlagsSchema = z\n .object({\n injection: z.boolean().optional(),\n url_cats: z.boolean().optional(),\n dlp: z.boolean().optional(),\n db_security: z.boolean().optional(),\n toxic_content: z.boolean().optional(),\n malicious_code: z.boolean().optional(),\n agent: z.boolean().optional(),\n topic_violation: z.boolean().optional(),\n })\n .passthrough();\n\n/** Boolean detection flags returned by per-tool scans. */\nexport type ToolDetectionFlags = z.infer<typeof ToolDetectionFlagsSchema>;\n\n/** Zod schema for nested per-tool detection details (e.g. topic guardrails). */\nexport const ToolDetectionDetailsSchema = z\n .object({\n topic_guardrails_details: z.unknown().optional(),\n })\n .passthrough();\n\n/** Nested per-tool detection details. */\nexport type ToolDetectionDetails = z.infer<typeof ToolDetectionDetailsSchema>;\n\n/** Zod schema for a single tool-invocation detection entry. */\nexport const ToolDetectionEntrySchema = z\n .object({\n tool_invoked: z.string().optional(),\n detections: ToolDetectionFlagsSchema.optional(),\n threats: z.array(z.string()).optional(),\n details: ToolDetectionDetailsSchema.optional(),\n masked_data: MaskedDataSchema.optional(),\n })\n .passthrough();\n\n/** A single tool-invocation detection entry inside `tool_detected.input_detected`. */\nexport type ToolDetectionEntry = z.infer<typeof ToolDetectionEntrySchema>;\n\n/**\n * Zod schema for tool input/output detections.\n *\n * **Shape change** vs prior SDK versions: this used to be a flag-style schema\n * with `url_cats`, `dlp`, etc. directly on it. The flags now live inside\n * {@link ToolDetectionEntrySchema} entries (one per tool invocation).\n */\nexport const IODetectedSchema = z\n .object({\n detection_entries: z.array(ToolDetectionEntrySchema).optional(),\n })\n .passthrough();\n\n/** Wrapper for per-tool detection entries on `tool_detected.input_detected` / `output_detected`. */\nexport type IODetected = z.infer<typeof IODetectedSchema>;\n\n/**\n * Zod schema for the scan summary inside `tool_detected.summary`.\n *\n * **Shape change** vs prior SDK versions: this used to be `{ verdict?, action? }`.\n * The current API returns aggregated `{ detections, threats }` here. Top-level\n * verdict/action remain on `ScanResponse.category` / `ScanResponse.action`.\n */\nexport const ScanSummarySchema = z\n .object({\n detections: ToolDetectionFlagsSchema,\n threats: z.array(z.string()),\n })\n .passthrough();\n\n/** Aggregated detection summary inside `tool_detected.summary`. */\nexport type ScanSummary = z.infer<typeof ScanSummarySchema>;\n\n/** Zod schema for tool/agent detection results. */\nexport const ToolDetectedSchema = z\n .object({\n verdict: z.string().optional(),\n metadata: ToolEventMetadataSchema.optional(),\n summary: ScanSummarySchema.optional(),\n input_detected: IODetectedSchema.optional(),\n output_detected: IODetectedSchema.optional(),\n })\n .passthrough();\n\n/** Detection results for tool/agent interactions. */\nexport type ToolDetected = z.infer<typeof ToolDetectedSchema>;\n\n/** Zod schema for a complete scan response from the AIRS API. */\nexport const ScanResponseSchema = z\n .object({\n source: z.string().optional(),\n report_id: z.string(),\n scan_id: z.string(),\n tr_id: z.string().optional(),\n session_id: z.string().optional(),\n profile_id: z.string().optional(),\n profile_name: z.string().optional(),\n category: z.string(),\n action: z.string(),\n timeout: z.boolean(),\n error: z.boolean(),\n errors: z.array(ContentErrorSchema),\n prompt_detected: PromptDetectedSchema.optional(),\n response_detected: ResponseDetectedSchema.optional(),\n prompt_masked_data: MaskedDataSchema.optional(),\n response_masked_data: MaskedDataSchema.optional(),\n prompt_detection_details: PromptDetectionDetailsSchema.optional(),\n response_detection_details: ResponseDetectionDetailsSchema.optional(),\n tool_detected: ToolDetectedSchema.optional(),\n created_at: z.string().optional(),\n completed_at: z.string().optional(),\n })\n .passthrough();\n\n/** Complete scan response with verdict, action, and detection details. */\nexport type ScanResponse = z.infer<typeof ScanResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for prompt detection detail data. */\nexport const PromptDetectionDetailsSchema = z\n .object({\n topic_guardrails_details: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\n/** Prompt detection detail data including topic guardrails. */\nexport type PromptDetectionDetails = z.infer<typeof PromptDetectionDetailsSchema>;\n\n/** Zod schema for prompt-side detection flags. */\nexport const PromptDetectedSchema = z\n .object({\n url_cats: z.boolean().optional(),\n dlp: z.boolean().optional(),\n injection: z.boolean().optional(),\n toxic_content: z.boolean().optional(),\n malicious_code: z.boolean().optional(),\n agent: z.boolean().optional(),\n topic_violation: z.boolean().optional(),\n })\n .passthrough();\n\n/** Flags indicating which detection types triggered on the prompt. */\nexport type PromptDetected = z.infer<typeof PromptDetectedSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for response detection detail data. */\nexport const ResponseDetectionDetailsSchema = z\n .object({\n topic_guardrails_details: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\n/** Response detection detail data including topic guardrails. */\nexport type ResponseDetectionDetails = z.infer<typeof ResponseDetectionDetailsSchema>;\n\n/** Zod schema for response-side detection flags. */\nexport const ResponseDetectedSchema = z\n .object({\n url_cats: z.boolean().optional(),\n dlp: z.boolean().optional(),\n db_security: z.boolean().optional(),\n toxic_content: z.boolean().optional(),\n malicious_code: z.boolean().optional(),\n agent: z.boolean().optional(),\n ungrounded: z.boolean().optional(),\n topic_violation: z.boolean().optional(),\n })\n .passthrough();\n\n/** Flags indicating which detection types triggered on the response. */\nexport type ResponseDetected = z.infer<typeof ResponseDetectedSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for tool/function call event metadata. */\nexport const ToolEventMetadataSchema = z\n .object({\n ecosystem: z.string(),\n method: z.string(),\n server_name: z.string(),\n tool_invoked: z.string().optional(),\n })\n .passthrough();\n\n/** Tool/function call event metadata (ecosystem, method, server, tool). */\nexport type ToolEventMetadata = z.infer<typeof ToolEventMetadataSchema>;\n\n/** Zod schema for a tool/function call event with input and output. */\nexport const ToolEventSchema = z\n .object({\n metadata: ToolEventMetadataSchema.optional(),\n input: z.string().optional(),\n output: z.string().optional(),\n })\n .passthrough();\n\n/** Tool/function call event with optional input and output strings. */\nexport type ToolEvent = z.infer<typeof ToolEventSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for toxic content report. */\nexport const TcReportSchema = z\n .object({\n confidence: z.string().optional(),\n verdict: z.string().optional(),\n })\n .passthrough();\n\n/** Toxic content report with confidence and verdict. */\nexport type TcReport = z.infer<typeof TcReportSchema>;\n\n/** Zod schema for a database security entry. */\nexport const DbsEntrySchema = z\n .object({\n sub_type: z.string().optional(),\n verdict: z.string().optional(),\n action: z.string().optional(),\n })\n .passthrough();\n\n/** Database security entry with sub-type, verdict, and action. */\nexport type DbsEntry = z.infer<typeof DbsEntrySchema>;\n\n/** Zod schema for database security report (array of entries). */\nexport const DbsReportSchema = z.array(DbsEntrySchema);\n\n/** Database security report — array of DbsEntry. */\nexport type DbsReport = z.infer<typeof DbsReportSchema>;\n\n/** Zod schema for a malicious code analysis entry. */\nexport const McEntrySchema = z\n .object({\n file_type: z.string().optional(),\n code_sha256: z.string().optional(),\n })\n .passthrough();\n\n/** Malicious code analysis entry. */\nexport type McEntry = z.infer<typeof McEntrySchema>;\n\n/** Zod schema for malware script report. */\nexport const MalwareReportSchema = z\n .object({\n verdict: z.string().optional(),\n })\n .passthrough();\n\n/** Malware script scanning report. */\nexport type MalwareReport = z.infer<typeof MalwareReportSchema>;\n\n/** Zod schema for a command injection entry. */\nexport const CmdEntrySchema = z\n .object({\n code_block: z.string().optional(),\n verdict: z.string().optional(),\n })\n .passthrough();\n\n/** Command injection entry. */\nexport type CmdEntry = z.infer<typeof CmdEntrySchema>;\n\n/** Zod schema for command injection report (array of entries). */\nexport const CmdInjectReportSchema = z.array(CmdEntrySchema);\n\n/** Command injection report — array of CmdEntry. */\nexport type CmdInjectReport = z.infer<typeof CmdInjectReportSchema>;\n\n/** Zod schema for malicious code report. */\nexport const McReportSchema = z\n .object({\n all_code_blocks: z.array(z.string()).optional(),\n code_analysis_by_type: z.array(McEntrySchema).optional(),\n verdict: z.string().optional(),\n malware_script_report: MalwareReportSchema.optional(),\n command_injection_report: CmdInjectReportSchema.optional(),\n })\n .passthrough();\n\n/** Malicious code report with code blocks, analysis, and sub-reports. */\nexport type McReport = z.infer<typeof McReportSchema>;\n\n/** Zod schema for an agent threat pattern entry. */\nexport const AgentEntrySchema = z\n .object({\n category_type: z.string().optional(),\n verdict: z.string().optional(),\n })\n .passthrough();\n\n/** Agent threat pattern entry. */\nexport type AgentEntry = z.infer<typeof AgentEntrySchema>;\n\n/** Zod schema for agent report. */\nexport const AgentReportSchema = z\n .object({\n model_verdict: z.string().optional(),\n agent_framework: z.string().optional(),\n agent_patterns: z.array(AgentEntrySchema).optional(),\n })\n .passthrough();\n\n/** Agent security report with model verdict, framework, and patterns. */\nexport type AgentReport = z.infer<typeof AgentReportSchema>;\n\n/** Zod schema for topic guardrails report. */\nexport const TgReportSchema = z\n .object({\n allowed_topic_list: z.string().optional(),\n blocked_topic_list: z.string().optional(),\n allowedTopics: z.array(z.string()).optional(),\n blockedTopics: z.array(z.string()).optional(),\n })\n .passthrough();\n\n/** Topic guardrails report with matched allow/block topic lists. */\nexport type TgReport = z.infer<typeof TgReportSchema>;\n\n/** Zod schema for contextual grounding report. */\nexport const CgReportSchema = z\n .object({\n status: z.string().optional(),\n explanation: z.string().optional(),\n category: z.string().optional(),\n })\n .passthrough();\n\n/** Contextual grounding report with status, explanation, and category. */\nexport type CgReport = z.infer<typeof CgReportSchema>;\n\n/** Zod schema for DLP pattern detection offset locations. */\nexport const OffsetSchema = z.array(z.array(z.number()));\n\n/** Array of [start, end] offset pairs. */\nexport type Offset = z.infer<typeof OffsetSchema>;\n\n/** Zod schema for DLP pattern detection with confidence levels. */\nexport const DlpPatternDetectionSchema = z\n .object({\n data_pattern_id: z.string().optional(),\n version: z.number().optional(),\n name: z.string().optional(),\n high_confidence_detections: OffsetSchema.optional(),\n medium_confidence_detections: OffsetSchema.optional(),\n low_confidence_detections: OffsetSchema.optional(),\n })\n .passthrough();\n\n/** DLP pattern detection with matched pattern info and confidence-level offsets. */\nexport type DlpPatternDetection = z.infer<typeof DlpPatternDetectionSchema>;\n\n/** Zod schema for pattern detection in masked data. */\nexport const PatternDetectionSchema = z\n .object({\n pattern: z.string().optional(),\n locations: OffsetSchema.optional(),\n })\n .passthrough();\n\n/** Pattern detection with matched pattern and offset locations. */\nexport type PatternDetection = z.infer<typeof PatternDetectionSchema>;\n\n/** Zod schema for content errors during scanning. */\nexport const ContentErrorSchema = z\n .object({\n content_type: z.string().optional(),\n feature: z.string().optional(),\n status: z.string().optional(),\n })\n .passthrough();\n\n/** Error info for a detection service during scanning. */\nexport type ContentError = z.infer<typeof ContentErrorSchema>;\n","import { z } from 'zod';\nimport { ScanRequestSchema } from './scan-request.js';\n\n/** Zod schema for an async scan batch item. */\nexport const AsyncScanObjectSchema = z\n .object({\n req_id: z.number().int(),\n scan_req: ScanRequestSchema,\n })\n .passthrough();\n\n/** Async scan batch item containing a request ID and scan request. */\nexport type AsyncScanObject = z.infer<typeof AsyncScanObjectSchema>;\n\n/** Zod schema for the async scan API response. */\nexport const AsyncScanResponseSchema = z\n .object({\n received: z.string(),\n scan_id: z.string(),\n report_id: z.string().optional(),\n source: z.string().optional(),\n })\n .passthrough();\n\n/** Async scan API response with scan ID for later querying. */\nexport type AsyncScanResponse = z.infer<typeof AsyncScanResponseSchema>;\n","import { z } from 'zod';\nimport { MAX_TRANSACTION_ID_STR_LENGTH, MAX_SESSION_ID_STR_LENGTH } from '../constants.js';\nimport { AiProfileSchema } from './ai-profile.js';\nimport { MetadataSchema } from './metadata.js';\nimport { ToolEventSchema } from './tool-event.js';\n\n/** Zod schema for a single content item within a scan request. */\nexport const ScanRequestContentsInnerSchema = z\n .object({\n prompt: z.string().optional(),\n response: z.string().optional(),\n code_prompt: z.string().optional(),\n code_response: z.string().optional(),\n context: z.string().optional(),\n tool_event: ToolEventSchema.optional(),\n })\n .passthrough();\n\n/** Single content item within a scan request. */\nexport type ScanRequestContentsInner = z.infer<typeof ScanRequestContentsInnerSchema>;\n\n/** Zod schema for a complete scan request payload. */\nexport const ScanRequestSchema = z\n .object({\n tr_id: z.string().max(MAX_TRANSACTION_ID_STR_LENGTH).optional(),\n session_id: z.string().max(MAX_SESSION_ID_STR_LENGTH).optional(),\n ai_profile: AiProfileSchema,\n metadata: MetadataSchema.optional(),\n contents: z.array(ScanRequestContentsInnerSchema).min(1),\n })\n .passthrough();\n\n/** Complete scan request payload sent to the AIRS API. */\nexport type ScanRequest = z.infer<typeof ScanRequestSchema>;\n","import { z } from 'zod';\nimport { MAX_AI_PROFILE_NAME_LENGTH } from '../constants.js';\n\n/** Zod schema for AI security profile identifier. Requires profile_id or profile_name. */\nexport const AiProfileSchema = z\n .object({\n profile_id: z.string().uuid().optional(),\n profile_name: z.string().max(MAX_AI_PROFILE_NAME_LENGTH).optional(),\n })\n .passthrough()\n .refine((d) => d.profile_id || d.profile_name, {\n message: 'Either profile_id or profile_name must be provided',\n });\n\n/** AI security profile identifier. At least one of profile_id or profile_name required. */\nexport type AiProfile = z.infer<typeof AiProfileSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for AI agent metadata. */\nexport const AgentMetaSchema = z\n .object({\n agent_id: z.string().optional(),\n agent_version: z.string().optional(),\n agent_arn: z.string().optional(),\n })\n .passthrough();\n\n/** AI agent metadata (agent ID, version, ARN). */\nexport type AgentMeta = z.infer<typeof AgentMetaSchema>;\n\n/** Zod schema for scan request metadata. */\nexport const MetadataSchema = z\n .object({\n app_name: z.string().optional(),\n app_user: z.string().optional(),\n ai_model: z.string().optional(),\n user_ip: z.string().optional(),\n agent_meta: AgentMetaSchema.optional(),\n })\n .passthrough();\n\n/** Application metadata attached to scan requests. */\nexport type Metadata = z.infer<typeof MetadataSchema>;\n","import { z } from 'zod';\nimport { ScanResponseSchema, type ScanResponse } from './scan-response.js';\n\n/** Result of querying a scan by its scan ID, including status and full scan response. */\nexport interface ScanIdResult {\n source?: string;\n req_id?: number;\n status?: string;\n scan_id?: string;\n result?: ScanResponse;\n [key: string]: unknown;\n}\n\n/** Zod schema for a scan ID query result. */\n// Explicit type annotation: ScanResponseSchema is now structurally too complex\n// for TypeScript to serialize the inferred type. The annotation breaks that cycle.\nexport const ScanIdResultSchema: z.ZodType<ScanIdResult> = z\n .object({\n source: z.string().optional(),\n req_id: z.number().optional(),\n status: z.string().optional(),\n scan_id: z.string().optional(),\n result: ScanResponseSchema.optional(),\n })\n .passthrough();\n","import { z } from 'zod';\nimport { DetectionServiceResultSchema } from './detection.js';\n\n/** Zod schema for a detailed threat scan report. */\nexport const ThreatScanReportSchema = z\n .object({\n source: z.string().optional(),\n report_id: z.string().optional(),\n scan_id: z.string().optional(),\n req_id: z.number().optional(),\n transaction_id: z.string().optional(),\n session_id: z.string().optional(),\n detection_results: z.array(DetectionServiceResultSchema).optional(),\n })\n .passthrough();\n\n/** Detailed threat scan report with per-service detection results. */\nexport type ThreatScanReport = z.infer<typeof ThreatScanReportSchema>;\n","import { z } from 'zod';\nimport { DlpReportSchema } from './dlp-report.js';\nimport { UrlfEntrySchema } from './urlf-report.js';\nimport {\n DbsReportSchema,\n TcReportSchema,\n McReportSchema,\n AgentReportSchema,\n TgReportSchema,\n CgReportSchema,\n} from './detection-reports.js';\n\n/** Zod schema for detection service detail results. */\nexport const DSDetailResultSchema = z\n .object({\n urlf_report: z.array(UrlfEntrySchema).optional(),\n dlp_report: DlpReportSchema.optional(),\n dbs_report: DbsReportSchema.optional(),\n tc_report: TcReportSchema.optional(),\n mc_report: McReportSchema.optional(),\n agent_report: AgentReportSchema.optional(),\n topic_guardrails_report: TgReportSchema.optional(),\n cg_report: CgReportSchema.optional(),\n })\n .passthrough();\n\n/** Detection service detail results containing per-service reports. */\nexport type DSDetailResult = z.infer<typeof DSDetailResultSchema>;\n\n/** Zod schema for detection service result metadata. */\nexport const DSResultMetadataSchema = z\n .object({\n score: z.number().optional(),\n confidence: z.string().optional(),\n ecosystem: z.string().optional(),\n method: z.string().optional(),\n server_name: z.string().optional(),\n tool_invoked: z.string().optional(),\n direction: z.string().optional(),\n })\n .passthrough();\n\n/** Detection service result metadata. */\nexport type DSResultMetadata = z.infer<typeof DSResultMetadataSchema>;\n\n/** Zod schema for an individual detection service result. */\nexport const DetectionServiceResultSchema = z\n .object({\n data_type: z.string().optional(),\n detection_service: z.string().optional(),\n verdict: z.string().optional(),\n action: z.string().optional(),\n metadata: DSResultMetadataSchema.optional(),\n result_detail: DSDetailResultSchema.optional(),\n })\n .passthrough();\n\n/** Individual detection service result with verdict, action, and details. */\nexport type DetectionServiceResult = z.infer<typeof DetectionServiceResultSchema>;\n","import { z } from 'zod';\nimport { DlpPatternDetectionSchema } from './detection-reports.js';\n\n/** Zod schema for a DLP (Data Loss Prevention) report. */\nexport const DlpReportSchema = z\n .object({\n dlp_report_id: z.string().optional(),\n dlp_profile_name: z.string().optional(),\n dlp_profile_id: z.string().optional(),\n dlp_profile_version: z.number().optional(),\n data_pattern_rule1_verdict: z.string().optional(),\n data_pattern_rule2_verdict: z.string().optional(),\n data_pattern_detection_offsets: z.array(DlpPatternDetectionSchema).optional(),\n })\n .passthrough();\n\n/** DLP report with profile info, rule verdicts, and pattern detection offsets. */\nexport type DlpReport = z.infer<typeof DlpReportSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for a URL filtering report entry. */\nexport const UrlfEntrySchema = z\n .object({\n url: z.string().optional(),\n risk_level: z.string().optional(),\n action: z.string().optional(),\n categories: z.array(z.string()).optional(),\n })\n .passthrough();\n\n/** URL filtering report entry with URL, risk level, action, and categories. */\nexport type UrlfEntry = z.infer<typeof UrlfEntrySchema>;\n","// src/scan/content.ts — mirrors Python SDK scan/models/content.py\n\nimport { readFileSync } from 'node:fs';\nimport {\n MAX_CONTENT_PROMPT_LENGTH,\n MAX_CONTENT_RESPONSE_LENGTH,\n MAX_CONTENT_CONTEXT_LENGTH,\n} from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport type { ToolEvent } from '../models/tool-event.js';\nimport type { ScanRequestContentsInner } from '../models/scan-request.js';\n\n/** Options for constructing a {@link Content} instance. At least one field is required. */\nexport interface ContentOptions {\n /** User prompt text. Max 2 MB. */\n prompt?: string;\n /** AI model response text. Max 2 MB. */\n response?: string;\n /** Conversation context. Max 100 MB. */\n context?: string;\n /** Code prompt text. Max 2 MB. */\n codePrompt?: string;\n /** Code response text. Max 2 MB. */\n codeResponse?: string;\n /** Tool/function call event data. */\n toolEvent?: ToolEvent;\n}\n\n/**\n * Represents content to be scanned by AIRS.\n * Validates byte-length limits on construction and property assignment.\n */\nexport class Content {\n private _prompt?: string;\n private _response?: string;\n private _context?: string;\n private _codePrompt?: string;\n private _codeResponse?: string;\n private _toolEvent?: ToolEvent;\n\n /**\n * Create a new Content instance.\n * @param opts - Content fields; at least one of prompt, response, codePrompt, codeResponse, or toolEvent is required.\n * @throws {AISecSDKException} If no content field is provided or a field exceeds its byte-length limit.\n */\n constructor(opts: ContentOptions) {\n if (\n !opts.prompt &&\n !opts.response &&\n !opts.codePrompt &&\n !opts.codeResponse &&\n !opts.toolEvent\n ) {\n throw new AISecSDKException(\n 'At least one of prompt, response, codePrompt, codeResponse, or toolEvent must be provided',\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n\n if (opts.prompt !== undefined) this.prompt = opts.prompt;\n if (opts.response !== undefined) this.response = opts.response;\n if (opts.context !== undefined) this.context = opts.context;\n if (opts.codePrompt !== undefined) this.codePrompt = opts.codePrompt;\n if (opts.codeResponse !== undefined) this.codeResponse = opts.codeResponse;\n if (opts.toolEvent !== undefined) this._toolEvent = opts.toolEvent;\n }\n\n get prompt(): string | undefined {\n return this._prompt;\n }\n set prompt(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_PROMPT_LENGTH) {\n throw new AISecSDKException(\n `prompt exceeds max length of ${MAX_CONTENT_PROMPT_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._prompt = value;\n }\n\n get response(): string | undefined {\n return this._response;\n }\n set response(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_RESPONSE_LENGTH) {\n throw new AISecSDKException(\n `response exceeds max length of ${MAX_CONTENT_RESPONSE_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._response = value;\n }\n\n get context(): string | undefined {\n return this._context;\n }\n set context(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_CONTEXT_LENGTH) {\n throw new AISecSDKException(\n `context exceeds max length of ${MAX_CONTENT_CONTEXT_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._context = value;\n }\n\n get codePrompt(): string | undefined {\n return this._codePrompt;\n }\n set codePrompt(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_PROMPT_LENGTH) {\n throw new AISecSDKException(\n `codePrompt exceeds max length of ${MAX_CONTENT_PROMPT_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._codePrompt = value;\n }\n\n get codeResponse(): string | undefined {\n return this._codeResponse;\n }\n set codeResponse(value: string | undefined) {\n if (value !== undefined && Buffer.byteLength(value) > MAX_CONTENT_RESPONSE_LENGTH) {\n throw new AISecSDKException(\n `codeResponse exceeds max length of ${MAX_CONTENT_RESPONSE_LENGTH} bytes`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n this._codeResponse = value;\n }\n\n get toolEvent(): ToolEvent | undefined {\n return this._toolEvent;\n }\n set toolEvent(value: ToolEvent | undefined) {\n this._toolEvent = value;\n }\n\n /**\n * Total byte length of all text content fields.\n * @returns Combined byte length of all text content fields.\n */\n get length(): number {\n let total = 0;\n if (this._prompt) total += Buffer.byteLength(this._prompt);\n if (this._response) total += Buffer.byteLength(this._response);\n if (this._context) total += Buffer.byteLength(this._context);\n if (this._codePrompt) total += Buffer.byteLength(this._codePrompt);\n if (this._codeResponse) total += Buffer.byteLength(this._codeResponse);\n return total;\n }\n\n /**\n * Serialize to the API request format.\n * @returns The content as a scan request contents inner object.\n */\n toJSON(): ScanRequestContentsInner {\n const obj: ScanRequestContentsInner = {};\n if (this._prompt !== undefined) obj.prompt = this._prompt;\n if (this._response !== undefined) obj.response = this._response;\n if (this._context !== undefined) obj.context = this._context;\n if (this._codePrompt !== undefined) obj.code_prompt = this._codePrompt;\n if (this._codeResponse !== undefined) obj.code_response = this._codeResponse;\n if (this._toolEvent !== undefined) obj.tool_event = this._toolEvent;\n return obj;\n }\n\n /**\n * Create a Content instance from an API response object.\n * @param json - Scan request contents inner object.\n */\n static fromJSON(json: ScanRequestContentsInner): Content {\n return new Content({\n prompt: json.prompt,\n response: json.response,\n context: json.context,\n codePrompt: json.code_prompt,\n codeResponse: json.code_response,\n toolEvent: json.tool_event,\n });\n }\n\n /**\n * Load content from a JSON file.\n * @param filePath - Path to JSON file containing scan request contents.\n * @returns A new Content instance populated from the JSON file.\n */\n static fromJSONFile(filePath: string): Content {\n const raw = readFileSync(filePath, 'utf-8');\n const parsed: ScanRequestContentsInner = JSON.parse(raw);\n return Content.fromJSON(parsed);\n }\n}\n","// src/models/enums.ts — typed enums for AIRS API verdict/action/category values\n\n/** Scan result verdict classification. */\nexport const Verdict = {\n BENIGN: 'benign',\n MALICIOUS: 'malicious',\n UNKNOWN: 'unknown',\n} as const;\n\n/** Union type of all possible verdict values. */\nexport type Verdict = (typeof Verdict)[keyof typeof Verdict];\n\n/** Enforcement action taken by AIRS. */\nexport const Action = {\n ALLOW: 'allow',\n BLOCK: 'block',\n ALERT: 'alert',\n} as const;\n\n/** Union type of all possible action values. */\nexport type Action = (typeof Action)[keyof typeof Action];\n\n/** Top-level scan result category. */\nexport const Category = {\n BENIGN: 'benign',\n MALICIOUS: 'malicious',\n UNKNOWN: 'unknown',\n} as const;\n\n/** Union type of all possible category values. */\nexport type Category = (typeof Category)[keyof typeof Category];\n\n/** Detection service names used in scan results. */\nexport const DetectionServiceName = {\n DLP: 'dlp',\n INJECTION: 'injection',\n URL_CATS: 'url_cats',\n TOXIC_CONTENT: 'toxic_content',\n MALICIOUS_CODE: 'malicious_code',\n AGENT: 'agent',\n TOPIC_VIOLATION: 'topic_violation',\n DB_SECURITY: 'db_security',\n UNGROUNDED: 'ungrounded',\n} as const;\n\n/** Union type of all detection service name values. */\nexport type DetectionServiceName = (typeof DetectionServiceName)[keyof typeof DetectionServiceName];\n\n/** Content type that encountered an error during scanning. */\nexport const ContentErrorType = {\n PROMPT: 'prompt',\n RESPONSE: 'response',\n} as const;\n\n/** Union type of content error type values. */\nexport type ContentErrorType = (typeof ContentErrorType)[keyof typeof ContentErrorType];\n\n/** Status of a detection service error. */\nexport const ErrorStatus = {\n ERROR: 'error',\n TIMEOUT: 'timeout',\n} as const;\n\n/** Union type of error status values. */\nexport type ErrorStatus = (typeof ErrorStatus)[keyof typeof ErrorStatus];\n","import { z } from 'zod';\n\n/** Zod schema for an AIRS API error response. */\nexport const ErrorResponseSchema = z\n .object({\n status_code: z.number().optional(),\n message: z.string().optional(),\n error: z\n .object({\n message: z.string().optional(),\n })\n .passthrough()\n .optional(),\n retry_after: z\n .object({\n interval: z.number().optional(),\n unit: z.string().optional(),\n })\n .passthrough()\n .optional(),\n })\n .passthrough();\n\n/** AIRS API error response with optional retry-after guidance. */\nexport type ErrorResponse = z.infer<typeof ErrorResponseSchema>;\n","import { z } from 'zod';\n\n// ── Policy sub-schemas (matching OpenAPI spec) ────────────────────────────\n\n/** Zod schema for inline latency configuration within a security profile policy. */\nexport const PolicyLatencySchema = z\n .object({\n 'inline-timeout-action': z.string().optional(),\n 'max-inline-latency': z.number().optional(),\n })\n .passthrough();\n\n/** Inline latency configuration. */\nexport type PolicyLatency = z.infer<typeof PolicyLatencySchema>;\n\n/** Zod schema for a data-leak-detection member entry. */\nexport const DataLeakDetectionMemberSchema = z\n .object({\n text: z.string(),\n id: z.string().optional(),\n version: z.string().optional(),\n })\n .passthrough();\n\n/** Data-leak-detection member entry. */\nexport type DataLeakDetectionMember = z.infer<typeof DataLeakDetectionMemberSchema>;\n\n/** Zod schema for a database-security rule item. */\nexport const DatabaseSecurityItemSchema = z\n .object({\n name: z.string(),\n action: z.string(),\n })\n .passthrough();\n\n/** Database-security rule item. */\nexport type DatabaseSecurityItem = z.infer<typeof DatabaseSecurityItemSchema>;\n\n/** Zod schema for the data-protection section of a model configuration. */\n//\n// Two known divergences from the OpenAPI flagged by `npm run preflight`:\n// - `data-leak-detection.member`: spec marks required, but the API returns\n// `null` on some profiles (see test/models/mgmt-security-profile.spec.ts).\n// We allow `null`/missing to match observed behavior.\n// - `database-security`: not in the OpenAPI but the API does return it.\n// Kept until upstream OpenAPI documents it.\nexport const DataProtectionSchema = z\n .object({\n 'data-leak-detection': z\n .object({\n member: z.array(DataLeakDetectionMemberSchema).nullable().optional(),\n action: z.string(),\n 'mask-data-inline': z.boolean().optional(),\n })\n .passthrough()\n .optional(),\n 'database-security': z.array(DatabaseSecurityItemSchema).nullable().optional(),\n })\n .passthrough();\n\n/** Data-protection configuration (DLP detection + database security). */\nexport type DataProtection = z.infer<typeof DataProtectionSchema>;\n\n/** Zod schema for a URL category object (member array). */\nexport const UrlCategorySchema = z\n .object({\n member: z.array(z.string()).nullable().optional(),\n })\n .passthrough();\n\n/** URL category with member list. */\nexport type UrlCategory = z.infer<typeof UrlCategorySchema>;\n\n/** Zod schema for malicious code protection settings. */\nexport const MaliciousCodeProtectionSchema = z\n .object({\n name: z.string(),\n action: z.string(),\n })\n .passthrough();\n\n/** Malicious code protection settings. */\nexport type MaliciousCodeProtection = z.infer<typeof MaliciousCodeProtectionSchema>;\n\n/** Zod schema for the app-protection section of a model configuration. */\nexport const PolicyAppProtectionSchema = z\n .object({\n 'alert-url-category': UrlCategorySchema.optional(),\n 'block-url-category': UrlCategorySchema.optional(),\n 'allow-url-category': UrlCategorySchema.optional(),\n 'default-url-category': UrlCategorySchema.optional(),\n 'url-detected-action': z.string().optional(),\n 'malicious-code-protection': MaliciousCodeProtectionSchema.optional(),\n })\n .passthrough();\n\n/** App-protection configuration (URL filtering + malicious code detection). */\nexport type PolicyAppProtection = z.infer<typeof PolicyAppProtectionSchema>;\n\n/** Zod schema for a topic object within a topic guardrail. */\nexport const TopicObjectSchema = z\n .object({\n topic_name: z.string(),\n topic_id: z.string(),\n revision: z.number(),\n })\n .passthrough();\n\n/** Topic reference in a model-protection guardrail. */\nexport type TopicObject = z.infer<typeof TopicObjectSchema>;\n\n/** Zod schema for a topic array within model protection. */\n//\n// `topic` accepts `null` to match observed API behavior: when the allow or block\n// bucket has no topics, the API serializes `\"topic\": null` rather than `[]`.\n// The upstream OpenAPI marks this required and non-nullable; this is a known\n// divergence (verified against a live `/v1/mgmt/profiles/tsg` response).\nexport const TopicArraySchema = z\n .object({\n action: z.string(),\n topic: z.array(TopicObjectSchema).nullable(),\n })\n .passthrough();\n\n/** Topic array with action and topic references. */\nexport type TopicArray = z.infer<typeof TopicArraySchema>;\n\n/** Zod schema for a model-protection array item. */\nexport const ModelProtectionItemSchema = z\n .object({\n name: z.string(),\n action: z.string(),\n 'topic-list': z.array(TopicArraySchema).optional(),\n options: z.array(z.unknown()).optional(),\n })\n .passthrough();\n\n/** Model-protection guardrail item. */\nexport type ModelProtectionItem = z.infer<typeof ModelProtectionItemSchema>;\n\n/** Zod schema for an agent-protection array item. */\nexport const AgentProtectionItemSchema = z\n .object({\n name: z.string(),\n action: z.string(),\n })\n .passthrough();\n\n/** Agent-protection rule item. */\nexport type AgentProtectionItem = z.infer<typeof AgentProtectionItemSchema>;\n\n/** Zod schema for a DLP rule (rule1/rule2) in a DLP data profile. */\nexport const DlpRuleSchema = z\n .object({\n action: z.string().optional(),\n })\n .passthrough();\n\n/** DLP rule with optional action. */\nexport type DlpRule = z.infer<typeof DlpRuleSchema>;\n\n/** Zod schema for a DLP data profile within the policy. */\nexport const DlpDataProfilePolicySchema = z\n .object({\n name: z.string(),\n uuid: z.string(),\n id: z.string().optional(),\n version: z.string().optional(),\n description: z.string().optional(),\n rule1: DlpRuleSchema.optional(),\n rule2: DlpRuleSchema.optional(),\n 'log-severity': z.string().optional(),\n 'non-file-based': z.string().optional(),\n 'file-based': z.string().optional(),\n })\n .passthrough();\n\n/** DLP data profile within a security profile policy. */\nexport type DlpDataProfilePolicy = z.infer<typeof DlpDataProfilePolicySchema>;\n\n// ── Composite schemas ─────────────────────────────────────────────────────\n\n/** Zod schema for model-configuration within an AI security profile. */\nexport const ModelConfigurationSchema = z\n .object({\n 'mask-data-in-storage': z.boolean().optional(),\n latency: PolicyLatencySchema.optional(),\n 'data-protection': DataProtectionSchema.optional(),\n 'app-protection': PolicyAppProtectionSchema.optional(),\n 'model-protection': z.array(ModelProtectionItemSchema).optional(),\n 'agent-protection': z.array(AgentProtectionItemSchema).optional(),\n })\n .passthrough();\n\n/** Model configuration containing all protection and latency settings. */\nexport type ModelConfiguration = z.infer<typeof ModelConfigurationSchema>;\n\n/** Zod schema for an AI security profile within the policy. */\nexport const AiSecurityProfileSchema = z\n .object({\n 'model-type': z.string().optional(),\n 'content-type': z.string().optional(),\n 'model-configuration': ModelConfigurationSchema.optional(),\n })\n .passthrough();\n\n/** AI security profile with model type and configuration. */\nexport type AiSecurityProfile = z.infer<typeof AiSecurityProfileSchema>;\n\n/** Zod schema for the security profile policy. */\nexport const PolicySchema = z\n .object({\n 'ai-security-profiles': z.array(AiSecurityProfileSchema).optional(),\n 'dlp-data-profiles': z.array(DlpDataProfilePolicySchema).optional(),\n })\n .passthrough();\n\n/** Security profile policy containing AI security profiles and DLP data profiles. */\nexport type Policy = z.infer<typeof PolicySchema>;\n\n// ── Top-level profile schemas ─────────────────────────────────────────────\n\n/** AIRS security profile with name, policy, and audit metadata. */\nexport interface SecurityProfile {\n profile_id?: string;\n profile_name: string;\n csp_id?: string;\n tsg_id?: string;\n revision?: number;\n active?: boolean;\n policy?: Policy;\n created_by?: string;\n updated_by?: string;\n last_modified_ts?: string;\n [key: string]: unknown;\n}\n\n/** Zod schema for an AIRS security profile. */\nexport const SecurityProfileSchema: z.ZodType<SecurityProfile> = z\n .object({\n profile_id: z.string().optional(),\n profile_name: z.string(),\n csp_id: z.string().optional(),\n tsg_id: z.string().optional(),\n revision: z.number().optional(),\n active: z.boolean().optional(),\n policy: PolicySchema.optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n })\n .passthrough();\n\n/** Request body for creating or updating a security profile. */\nexport interface CreateSecurityProfileRequest {\n profile_id?: string;\n profile_name: string;\n csp_id?: string;\n tsg_id?: string;\n revision?: number;\n active?: boolean;\n policy?: Policy;\n created_by?: string;\n updated_by?: string;\n last_modified_ts?: string;\n [key: string]: unknown;\n}\n\n/** Zod schema for a security profile create/update request. */\nexport const CreateSecurityProfileRequestSchema: z.ZodType<CreateSecurityProfileRequest> = z\n .object({\n profile_id: z.string().optional(),\n profile_name: z.string(),\n csp_id: z.string().optional(),\n tsg_id: z.string().optional(),\n revision: z.number().optional(),\n active: z.boolean().optional(),\n policy: PolicySchema.optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n })\n .passthrough();\n\n/** Paginated list of security profiles. */\nexport interface SecurityProfileListResponse {\n ai_profiles: SecurityProfile[];\n next_offset?: number;\n [key: string]: unknown;\n}\n\n/** Zod schema for a paginated security profile list response. */\nexport const SecurityProfileListResponseSchema: z.ZodType<SecurityProfileListResponse> = z\n .object({\n ai_profiles: z.array(SecurityProfileSchema),\n next_offset: z.number().optional(),\n })\n .passthrough();\n\n/** Zod schema for a profile deletion response. */\nexport const DeleteProfileResponseSchema = z\n .object({\n message: z.string(),\n })\n .passthrough();\n\n/** Response from deleting a security profile. */\nexport type DeleteProfileResponse = z.infer<typeof DeleteProfileResponseSchema>;\n\n/** Zod schema for a profile deletion conflict (409). */\nexport const DeleteProfileConflictSchema = z\n .object({\n message: z.string(),\n payload: z.array(\n z\n .object({\n policy_id: z.string(),\n policy_name: z.string(),\n priority: z.number(),\n })\n .passthrough(),\n ),\n })\n .passthrough();\n\n/** Conflict response when deleting a profile referenced by policies. */\nexport type DeleteProfileConflict = z.infer<typeof DeleteProfileConflictSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for an AIRS custom topic (response). */\nexport const CustomTopicSchema = z\n .object({\n topic_id: z.string().optional(),\n topic_name: z.string(),\n revision: z.number(),\n active: z.boolean().optional(),\n description: z.string(),\n examples: z.array(z.string()),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n created_ts: z.string().optional(),\n })\n .passthrough();\n\n/** AIRS custom topic with name, description, examples, and audit metadata. */\nexport type CustomTopic = z.infer<typeof CustomTopicSchema>;\n\n/** Zod schema for a custom topic create/update request. */\nexport const CreateCustomTopicRequestSchema = z\n .object({\n topic_id: z.string().optional(),\n topic_name: z.string(),\n revision: z.number().optional(),\n active: z.boolean().optional(),\n description: z.string().optional(),\n examples: z.array(z.string()).optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n created_ts: z.string().optional(),\n })\n .passthrough();\n\n/** Request body for creating or updating a custom topic. */\nexport type CreateCustomTopicRequest = z.infer<typeof CreateCustomTopicRequestSchema>;\n\n/** Zod schema for a paginated custom topic list response. */\nexport const CustomTopicListResponseSchema = z\n .object({\n custom_topics: z.array(CustomTopicSchema),\n next_offset: z.number().optional(),\n })\n .passthrough();\n\n/** Paginated list of custom topics. */\nexport type CustomTopicListResponse = z.infer<typeof CustomTopicListResponseSchema>;\n\n/** Zod schema for a topic deletion response. */\nexport const DeleteTopicResponseSchema = z\n .object({\n message: z.string(),\n })\n .passthrough();\n\n/** Response from deleting a custom topic. */\nexport type DeleteTopicResponse = z.infer<typeof DeleteTopicResponseSchema>;\n\n/** Zod schema for a topic deletion conflict (409). */\nexport const DeleteTopicConflictSchema = z\n .object({\n message: z.string(),\n payload: z.array(\n z\n .object({\n profile_id: z.string(),\n profile_name: z.string(),\n revision: z.number(),\n })\n .passthrough(),\n ),\n })\n .passthrough();\n\n/** Conflict response when deleting a topic referenced by profiles. */\nexport type DeleteTopicConflict = z.infer<typeof DeleteTopicConflictSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for an API key object. */\nexport const ApiKeySchema = z\n .object({\n api_key_id: z.string(),\n api_key_last8: z.string(),\n api_key_name: z.string().optional(),\n auth_code: z.string(),\n csp_id: z.string().optional(),\n tsg_id: z.string().optional(),\n expiration: z.string(),\n revoked: z.boolean(),\n revoke_reason: z.string().optional(),\n cust_app: z.string().optional(),\n cust_env: z.string().optional(),\n cust_ai_agent_framework: z.string().optional(),\n cust_cloud_provider: z.string().optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n last_modified_ts: z.string().optional(),\n rotation_time_interval: z.number().optional(),\n rotation_time_unit: z.string().optional(),\n dp_name: z.string().optional(),\n status: z.string().optional(),\n api_key: z.string().optional(),\n lic_expiration: z.string().optional(),\n avg_text_records: z.number().optional(),\n creation_ts: z.string().optional(),\n customer_appId: z.string().optional(),\n })\n .passthrough();\n\n/** API key object. */\nexport type ApiKey = z.infer<typeof ApiKeySchema>;\n\n/** Zod schema for API key creation request. */\nexport const ApiKeyCreateRequestSchema = z\n .object({\n dp_name: z.string().optional(),\n auth_code: z.string(),\n cust_app: z.string(),\n cust_env: z.string().optional(),\n cust_cloud_provider: z.string().optional(),\n cust_ai_agent_framework: z.string().optional(),\n revoked: z.boolean(),\n created_by: z.string(),\n api_key_name: z.string(),\n rotation_time_interval: z.number(),\n rotation_time_unit: z.string(),\n })\n .passthrough();\n\n/** API key creation request. */\nexport type ApiKeyCreateRequest = z.infer<typeof ApiKeyCreateRequestSchema>;\n\n/** Zod schema for API key regeneration request. */\nexport const ApiKeyRegenerateRequestSchema = z\n .object({\n rotation_time_interval: z.number(),\n rotation_time_unit: z.string(),\n updated_by: z.string().optional(),\n })\n .passthrough();\n\n/** API key regeneration request. */\nexport type ApiKeyRegenerateRequest = z.infer<typeof ApiKeyRegenerateRequestSchema>;\n\n/** Zod schema for paginated API key list response. */\nexport const ApiKeyListResponseSchema = z\n .object({\n api_keys: z.array(ApiKeySchema).optional(),\n next_offset: z.number().optional(),\n })\n .passthrough();\n\n/** Paginated API key list response. */\nexport type ApiKeyListResponse = z.infer<typeof ApiKeyListResponseSchema>;\n\n/** Zod schema for API key delete response. */\nexport const ApiKeyDeleteResponseSchema = z\n .object({\n message: z.string().optional(),\n })\n .passthrough();\n\n/** API key delete response. */\nexport type ApiKeyDeleteResponse = z.infer<typeof ApiKeyDeleteResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for API key + deployment profile info. */\nexport const ApiKeyDPInfoSchema = z\n .object({\n api_key_name: z.string(),\n dp_name: z.string(),\n auth_code: z.string(),\n })\n .passthrough();\n\n/** API key and deployment profile association. */\nexport type ApiKeyDPInfo = z.infer<typeof ApiKeyDPInfoSchema>;\n\n/** Zod schema for a customer app. */\nexport const CustomerAppSchema = z\n .object({\n customer_appId: z.string().optional(),\n tsg_id: z.string(),\n app_name: z.string(),\n model_name: z.string().optional(),\n cloud_provider: z.string(),\n environment: z.string(),\n status: z.string().optional(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n ai_agent_framework: z.string().optional(),\n })\n .passthrough();\n\n/** Customer application object. */\nexport type CustomerApp = z.infer<typeof CustomerAppSchema>;\n\n/** Zod schema for customer app with API key and DP info (used in list response). */\nexport const CustomerAppWithKeysSchema = z\n .object({\n customer_appId: z.string(),\n tsg_id: z.string(),\n app_name: z.string(),\n model_name: z.string().optional(),\n cloud_provider: z.string(),\n environment: z.string(),\n ai_agent_framework: z.string().optional(),\n api_keys_dp_info: z.array(ApiKeyDPInfoSchema).optional(),\n })\n .passthrough();\n\n/** Customer app with API key and deployment profile info. */\nexport type CustomerAppWithKeys = z.infer<typeof CustomerAppWithKeysSchema>;\n\n/** Zod schema for paginated customer app list response. */\nexport const CustomerAppListResponseSchema = z\n .object({\n customer_apps: z.array(CustomerAppWithKeysSchema).optional(),\n next_offset: z.number().optional(),\n })\n .passthrough();\n\n/** Paginated customer app list response. */\nexport type CustomerAppListResponse = z.infer<typeof CustomerAppListResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for a deployment profile entry. */\nexport const DeploymentProfileEntrySchema = z\n .object({\n dp_name: z.string(),\n auth_code: z.string(),\n tsg_id: z.string().optional(),\n status: z.string().optional(),\n expiration_date: z.string().optional(),\n ave_text_records: z.number().optional(),\n })\n .passthrough();\n\n/** Deployment profile entry. */\nexport type DeploymentProfileEntry = z.infer<typeof DeploymentProfileEntrySchema>;\n\n/** Zod schema for deployment profiles response. */\nexport const DeploymentProfilesResponseSchema = z\n .object({\n deployment_profiles: z.array(DeploymentProfileEntrySchema),\n status: z.string(),\n })\n .passthrough();\n\n/** Deployment profiles response. */\nexport type DeploymentProfilesResponse = z.infer<typeof DeploymentProfilesResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for DLP data profile (as returned by list endpoint). */\nexport const DlpDataProfileSchema = z\n .object({\n name: z.string(),\n uuid: z.string(),\n id: z.string().optional(),\n version: z.string().optional(),\n rule1: z.object({ action: z.string().optional() }).passthrough().optional(),\n rule2: z.object({ action: z.string().optional() }).passthrough().optional(),\n 'log-severity': z.string().optional(),\n 'non-file-based': z.string().optional(),\n 'file-based': z.string().optional(),\n })\n .passthrough();\n\n/** DLP data profile. */\nexport type DlpDataProfile = z.infer<typeof DlpDataProfileSchema>;\n\n/** Zod schema for DLP profiles list response. */\nexport const DlpProfileListResponseSchema = z\n .object({\n dlp_profiles: z.array(DlpDataProfileSchema).optional(),\n })\n .passthrough();\n\n/** DLP profiles list response. */\nexport type DlpProfileListResponse = z.infer<typeof DlpProfileListResponseSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for a scan result entry from the scan logs view. */\nexport const ScanResultEntrySchema = z\n .object({\n csp_id: z.string(),\n tsg_id: z.string(),\n scan_id: z.string(),\n scan_sub_req_id: z.number(),\n api_key_name: z.string(),\n app_name: z.string(),\n tokens: z.number(),\n text_records: z.number(),\n transaction_id: z.string().optional(),\n profile_id: z.string().optional(),\n profile_name: z.string().optional(),\n model_name: z.string().optional(),\n user: z.string().optional(),\n environment: z.string().optional(),\n cloud_provider: z.string().optional(),\n agent_framework: z.string().optional(),\n report_id: z.string().optional(),\n received_ts: z.string().optional(),\n completed_ts: z.string().optional(),\n status: z.string().optional(),\n verdict: z.string().optional(),\n action: z.string().optional(),\n is_prompt: z.boolean().optional(),\n is_response: z.boolean().optional(),\n pi_final_verdict: z.string().optional(),\n uf_final_verdict: z.string().optional(),\n dlp_final_verdict: z.string().optional(),\n dbs_final_verdict: z.string().optional(),\n tc_final_verdict: z.string().optional(),\n mc_final_verdict: z.string().optional(),\n agent_final_verdict: z.string().optional(),\n cg_final_verdict: z.string().optional(),\n tg_final_verdict: z.string().optional(),\n prompt_pi_verdict: z.string().optional(),\n prompt_uf_verdict: z.string().optional(),\n prompt_dlp_verdict: z.string().optional(),\n prompt_tc_verdict: z.string().optional(),\n prompt_mc_verdict: z.string().optional(),\n prompt_agent_verdict: z.string().optional(),\n prompt_tg_verdict: z.string().optional(),\n prompt_verdict: z.string().optional(),\n prompt_pi_action: z.string().optional(),\n prompt_uf_action: z.string().optional(),\n prompt_dlp_action: z.string().optional(),\n prompt_tc_action: z.string().optional(),\n prompt_mc_action: z.string().optional(),\n prompt_agent_action: z.string().optional(),\n prompt_tg_action: z.string().optional(),\n response_uf_verdict: z.string().optional(),\n response_dlp_verdict: z.string().optional(),\n response_dbs_verdict: z.string().optional(),\n response_tc_verdict: z.string().optional(),\n response_mc_verdict: z.string().optional(),\n response_agent_verdict: z.string().optional(),\n response_cg_verdict: z.string().optional(),\n response_tg_verdict: z.string().optional(),\n response_uf_action: z.string().optional(),\n response_dlp_action: z.string().optional(),\n response_dbs_action: z.string().optional(),\n response_tc_action: z.string().optional(),\n response_mc_action: z.string().optional(),\n response_agent_action: z.string().optional(),\n response_cg_action: z.string().optional(),\n response_tg_action: z.string().optional(),\n response_verdict: z.string().optional(),\n detection_service_flags: z.number().optional(),\n content_masked: z.boolean().optional(),\n user_ip: z.string().optional(),\n })\n .passthrough();\n\n/** Scan result entry from scan logs. */\nexport type ScanResultEntry = z.infer<typeof ScanResultEntrySchema>;\n\n/** Zod schema for scan result dashboard data. */\nexport const ScanResultForDashboardSchema = z\n .object({\n text_records_count: z.number().optional(),\n api_calls_count: z.number().optional(),\n threats_count: z.number().optional(),\n all_transactions_count: z.number().optional(),\n benign_transaction_count: z.number().optional(),\n scan_result_entries: z.array(ScanResultEntrySchema).optional(),\n })\n .passthrough();\n\n/** Scan result dashboard summary. */\nexport type ScanResultForDashboard = z.infer<typeof ScanResultForDashboardSchema>;\n\n/** Zod schema for paginated scan results response. */\nexport const PaginatedScanResultsSchema = z\n .object({\n scan_result_for_dashboard: ScanResultForDashboardSchema.optional(),\n total_pages: z.number().optional(),\n page_number: z.number().optional(),\n page_size: z.number().optional(),\n page_token: z.string().optional(),\n revision: z.number().optional(),\n })\n .passthrough();\n\n/** Paginated scan results response. */\nexport type PaginatedScanResults = z.infer<typeof PaginatedScanResultsSchema>;\n","import { z } from 'zod';\n\n/** Zod schema for OAuth client_id + customer_app request body. */\nexport const ClientIdAndCustomerAppSchema = z\n .object({\n client_id: z.string(),\n customer_app: z.string(),\n })\n .passthrough();\n\n/** OAuth client_id and customer_app request body. */\nexport type ClientIdAndCustomerApp = z.infer<typeof ClientIdAndCustomerAppSchema>;\n\n/** Zod schema for OAuth2 token response. */\nexport const Oauth2TokenSchema = z\n .object({\n token_type: z.string().optional(),\n issued_at: z.string().optional(),\n client_id: z.string().optional(),\n access_token: z.string(),\n expires_in: z.string().optional(),\n status: z.string().optional(),\n })\n .passthrough();\n\n/** OAuth2 token response. */\nexport type Oauth2Token = z.infer<typeof Oauth2TokenSchema>;\n","// src/models/model-security-enums.ts — typed enums for AIRS Model Security API values\n\n/** Error codes returned by the Model Security scan service. */\nexport const ErrorCodes = {\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n SCAN_ERROR: 'SCAN_ERROR',\n INVALID_RESPONSE: 'INVALID_RESPONSE',\n ACCESS_DENIED: 'ACCESS_DENIED',\n MISSING_CREDENTIALS: 'MISSING_CREDENTIALS',\n NO_SUCH_KEY: 'NO_SUCH_KEY',\n NO_SUCH_BUCKET: 'NO_SUCH_BUCKET',\n INVALID_BUCKET_NAME: 'INVALID_BUCKET_NAME',\n INTERNAL_ERROR: 'INTERNAL_ERROR',\n SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',\n INVALID_OBJECT_STATE: 'INVALID_OBJECT_STATE',\n UNKNOWN_REMOTE_SERVICE_ERROR: 'UNKNOWN_REMOTE_SERVICE_ERROR',\n UNSUPPORTED_REMOTE_STORAGE: 'UNSUPPORTED_REMOTE_STORAGE',\n MISSING_ARTIFACTS: 'MISSING_ARTIFACTS',\n WORKER_ERROR: 'WORKER_ERROR',\n POLICY_EVAL_ERROR: 'POLICY_EVAL_ERROR',\n} as const;\n\n/** Union type of all possible error code values. */\nexport type ErrorCodes = (typeof ErrorCodes)[keyof typeof ErrorCodes];\n\n/** Evaluation outcome for a model security scan. */\nexport const EvalOutcome = {\n PENDING: 'PENDING',\n ALLOWED: 'ALLOWED',\n BLOCKED: 'BLOCKED',\n ERROR: 'ERROR',\n} as const;\n\n/** Union type of all possible evaluation outcome values. */\nexport type EvalOutcome = (typeof EvalOutcome)[keyof typeof EvalOutcome];\n\n/** Results of individual file scanning. */\nexport const FileScanResult = {\n SKIPPED: 'SKIPPED',\n SUCCESS: 'SUCCESS',\n ERROR: 'ERROR',\n FAILED: 'FAILED',\n} as const;\n\n/** Union type of all possible file scan result values. */\nexport type FileScanResult = (typeof FileScanResult)[keyof typeof FileScanResult];\n\n/** File type in the scanned model tree. */\nexport const FileType = {\n DIRECTORY: 'DIRECTORY',\n FILE: 'FILE',\n} as const;\n\n/** Union type of all possible file type values. */\nexport type FileType = (typeof FileType)[keyof typeof FileType];\n\n/** Status of a model file scan. */\nexport const ModelScanStatus = {\n SCANNED: 'SCANNED',\n SKIPPED: 'SKIPPED',\n ERROR: 'ERROR',\n} as const;\n\n/** Union type of all possible model scan status values. */\nexport type ModelScanStatus = (typeof ModelScanStatus)[keyof typeof ModelScanStatus];\n\n/** Results of rule evaluation. */\nexport const RuleEvaluationResult = {\n PASSED: 'PASSED',\n FAILED: 'FAILED',\n ERROR: 'ERROR',\n} as const;\n\n/** Union type of all possible rule evaluation result values. */\nexport type RuleEvaluationResult = (typeof RuleEvaluationResult)[keyof typeof RuleEvaluationResult];\n\n/** Rule evaluation states. */\nexport const RuleState = {\n DISABLED: 'DISABLED',\n ALLOWING: 'ALLOWING',\n BLOCKING: 'BLOCKING',\n} as const;\n\n/** Union type of all possible rule state values. */\nexport type RuleState = (typeof RuleState)[keyof typeof RuleState];\n\n/** Origin of the model security scan. */\nexport const ScanOrigin = {\n MODEL_SECURITY_SDK: 'MODEL_SECURITY_SDK',\n HUGGING_FACE: 'HUGGING_FACE',\n} as const;\n\n/** Union type of all possible scan origin values. */\nexport type ScanOrigin = (typeof ScanOrigin)[keyof typeof ScanOrigin];\n\n/** Fields available for date-based sorting. */\nexport const SortByDateField = {\n CREATED_AT: 'created_at',\n UPDATED_AT: 'updated_at',\n} as const;\n\n/** Union type of all possible sort-by-date field values. */\nexport type SortByDateField = (typeof SortByDateField)[keyof typeof SortByDateField];\n\n/** Fields available for file-based sorting. */\nexport const SortByFileField = {\n PATH: 'path',\n TYPE: 'type',\n} as const;\n\n/** Union type of all possible sort-by-file field values. */\nexport type SortByFileField = (typeof SortByFileField)[keyof typeof SortByFileField];\n\n/** Sort direction for list queries. */\nexport const SortDirection = {\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n\n/** Union type of all possible sort direction values. */\nexport type SortDirection = (typeof SortDirection)[keyof typeof SortDirection];\n\n/** Source type for model origin. */\nexport const SourceType = {\n LOCAL: 'LOCAL',\n HUGGING_FACE: 'HUGGING_FACE',\n S3: 'S3',\n GCS: 'GCS',\n AZURE: 'AZURE',\n ARTIFACTORY: 'ARTIFACTORY',\n GITLAB: 'GITLAB',\n ALL: 'ALL',\n} as const;\n\n/** Union type of all possible source type values. */\nexport type SourceType = (typeof SourceType)[keyof typeof SourceType];\n\n/**\n * Threat category codes for model scan issues.\n * Should be in sync with modelscan-pai issue codes.\n */\nexport const ThreatCategory = {\n PAIT_ARV_100: 'PAIT-ARV-100',\n PAIT_GGUF_100: 'PAIT-GGUF-100',\n PAIT_GGUF_101: 'PAIT-GGUF-101',\n PAIT_KERAS_100: 'PAIT-KERAS-100',\n PAIT_KERAS_101: 'PAIT-KERAS-101',\n PAIT_KERAS_102: 'PAIT-KERAS-102',\n PAIT_JOBLIB_100: 'PAIT-JOBLIB-100',\n PAIT_JOBLIB_101: 'PAIT-JOBLIB-101',\n PAIT_PKL_100: 'PAIT-PKL-100',\n PAIT_PKL_101: 'PAIT-PKL-101',\n PAIT_PYTCH_100: 'PAIT-PYTCH-100',\n PAIT_PYTCH_101: 'PAIT-PYTCH-101',\n PAIT_EXDIR_100: 'PAIT-EXDIR-100',\n PAIT_EXDIR_101: 'PAIT-EXDIR-101',\n PAIT_ONNX_200: 'PAIT-ONNX-200',\n PAIT_TF_200: 'PAIT-TF-200',\n PAIT_LMAFL_300: 'PAIT-LMAFL-300',\n PAIT_LITERT_300: 'PAIT-LITERT-300',\n PAIT_LITERT_301: 'PAIT-LITERT-301',\n PAIT_LITERT_302: 'PAIT-LITERT-302',\n PAIT_KERAS_300: 'PAIT-KERAS-300',\n PAIT_KERAS_301: 'PAIT-KERAS-301',\n PAIT_TCHST_300: 'PAIT-TCHST-300',\n PAIT_TCHST_301: 'PAIT-TCHST-301',\n PAIT_TF_300: 'PAIT-TF-300',\n PAIT_TF_301: 'PAIT-TF-301',\n PAIT_TF_302: 'PAIT-TF-302',\n PAIT_TMT_300: 'PAIT-TMT-300',\n PAIT_TMT_301: 'PAIT-TMT-301',\n UNAPPROVED_FORMATS: 'UNAPPROVED_FORMATS',\n} as const;\n\n/** Union type of all possible threat category values. */\nexport type ThreatCategory = (typeof ThreatCategory)[keyof typeof ThreatCategory];\n\n/** Security group states. */\nexport const ModelSecurityGroupState = {\n PENDING: 'PENDING',\n ACTIVE: 'ACTIVE',\n} as const;\n\n/** Union type of all possible model security group state values. */\nexport type ModelSecurityGroupState =\n (typeof ModelSecurityGroupState)[keyof typeof ModelSecurityGroupState];\n\n/** Rule types for different scanning approaches. */\nexport const RuleType = {\n METADATA: 'METADATA',\n ARTIFACT: 'ARTIFACT',\n} as const;\n\n/** Union type of all possible rule type values. */\nexport type RuleType = (typeof RuleType)[keyof typeof RuleType];\n\n/** Editable field types used by rule structure for UI rendering. */\nexport const RuleEditableFieldType = {\n SELECT: 'SELECT',\n LIST: 'LIST',\n} as const;\n\n/** Union type of all possible rule editable field type values. */\nexport type RuleEditableFieldType =\n (typeof RuleEditableFieldType)[keyof typeof RuleEditableFieldType];\n\n/** Allowed keys for rule field values configuration. */\nexport const RuleFieldValueKey = {\n APPROVED_FORMATS: 'approved_formats',\n APPROVED_LOCATIONS: 'approved_locations',\n APPROVED_LICENSES: 'approved_licenses',\n DENY_ORGS: 'deny_orgs',\n DENIED_ORG_MODELS: 'denied_org_models',\n APPROVED_ORG_MODELS: 'approved_org_models',\n} as const;\n\n/** Union type of all possible rule field value key values. */\nexport type RuleFieldValueKey = (typeof RuleFieldValueKey)[keyof typeof RuleFieldValueKey];\n","// src/models/model-security.ts — Zod schemas + types for AIRS Model Security API\n\nimport { z } from 'zod';\n\n// ---------------------------------------------------------------------------\n// Shared / utility schemas\n// ---------------------------------------------------------------------------\n\n/** Zod schema for model security pagination metadata. */\nexport const ModelSecurityPaginationSchema = z\n .object({\n total_items: z.number().int().nullable().optional(),\n })\n .passthrough();\n\n/** Pagination metadata for model security list responses. */\nexport type ModelSecurityPagination = z.infer<typeof ModelSecurityPaginationSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Labels\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a single label key-value pair. */\nexport const LabelSchema = z\n .object({\n key: z.string(),\n value: z.string(),\n })\n .passthrough();\n\n/** A single label key-value pair. */\nexport type Label = z.infer<typeof LabelSchema>;\n\n/** Zod schema for creating/setting labels on a scan. */\nexport const LabelsCreateRequestSchema = z\n .object({\n labels: z.array(LabelSchema),\n })\n .passthrough();\n\n/** Request body for creating or setting scan labels. */\nexport type LabelsCreateRequest = z.infer<typeof LabelsCreateRequestSchema>;\n\n/** Zod schema for labels response (empty body on success). */\nexport const LabelsResponseSchema = z.object({}).passthrough();\n\n/** Response from label create/set operations. */\nexport type LabelsResponse = z.infer<typeof LabelsResponseSchema>;\n\n/** Zod schema for a paginated list of label keys. */\nexport const LabelKeyListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n keys: z.array(z.string()),\n })\n .passthrough();\n\n/** Paginated list of distinct label keys. */\nexport type LabelKeyList = z.infer<typeof LabelKeyListSchema>;\n\n/** Zod schema for a paginated list of label values. */\nexport const LabelValueListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n values: z.array(z.string()),\n })\n .passthrough();\n\n/** Paginated list of distinct label values. */\nexport type LabelValueList = z.infer<typeof LabelValueListSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Eval summary\n// ---------------------------------------------------------------------------\n\n/** Zod schema for evaluation summary counts. */\nexport const EvalSummarySchema = z\n .object({\n rules_failed: z.number().int().optional().default(0),\n rules_passed: z.number().int().optional().default(0),\n total_rules: z.number().int().optional().default(0),\n })\n .passthrough();\n\n/** Summary of rule evaluation pass/fail counts. */\nexport type EvalSummary = z.infer<typeof EvalSummarySchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Model scan issues & file scan data\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a single issue detected during model scanning. */\nexport const ModelScanIssueSchema = z\n .object({\n description: z.string(),\n source: z.string(),\n threat: z.string().nullable().optional(),\n module: z.string().nullable().optional(),\n operator: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** A single issue detected during model file scanning. */\nexport type ModelScanIssue = z.infer<typeof ModelScanIssueSchema>;\n\n/** Zod schema for per-file scan data within a scan request. */\nexport const FileScanDataSchema = z\n .object({\n file_path: z.string(),\n modelscan_status: z.string(),\n blob_id: z.string(),\n error_message: z.string().nullable().optional(),\n formats: z.array(z.string()).nullable().optional(),\n issues_detected: z.array(ModelScanIssueSchema).nullable().optional(),\n })\n .passthrough();\n\n/** Per-file scan data included in a scan creation request. */\nexport type FileScanData = z.infer<typeof FileScanDataSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Scan details (nested in create request)\n// ---------------------------------------------------------------------------\n\n/** Zod schema for detailed scan results submitted with a scan creation. */\nexport const ScanDetailsSchema = z\n .object({\n scanner_version: z.string(),\n time_started: z.string(),\n files: z.array(FileScanDataSchema),\n total_files_scanned: z.number().int(),\n total_files_skipped: z.number().int(),\n model_formats: z.array(z.string()),\n model_size_bytes: z.number().int(),\n scan_duration_ms: z.number().int(),\n error_code: z.string().nullable().optional(),\n error_message: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** Detailed scan results submitted with a scan creation request. */\nexport type ScanDetails = z.infer<typeof ScanDetailsSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Scan create request\n// ---------------------------------------------------------------------------\n\n/** Zod schema for creating a new model security scan. */\nexport const ScanCreateRequestSchema = z\n .object({\n model_uri: z.string(),\n security_group_uuid: z.string(),\n scan_origin: z.string(),\n allow_patterns: z.array(z.string()).nullable().optional(),\n ignore_patterns: z.array(z.string()).nullable().optional(),\n labels: z.array(LabelSchema).nullable().optional(),\n model_author: z.string().nullable().optional(),\n model_name: z.string().nullable().optional(),\n model_version: z.string().nullable().optional(),\n scan_details: ScanDetailsSchema.nullable().optional(),\n })\n .passthrough();\n\n/** Request body for creating a new model security scan. */\nexport type ScanCreateRequest = z.infer<typeof ScanCreateRequestSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Scan base response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for the base scan response returned by the API. */\nexport const ScanBaseResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n model_uri: z.string(),\n owner: z.string(),\n scan_origin: z.string(),\n security_group_uuid: z.string(),\n security_group_name: z.string(),\n model_version_uuid: z.string(),\n eval_outcome: z.string(),\n source_type: z.string(),\n created_by: z.string().nullable().optional(),\n enabled_rule_count_snapshot: z.number().int().nullable().optional(),\n error_code: z.string().nullable().optional(),\n error_message: z.string().nullable().optional(),\n eval_summary: EvalSummarySchema.nullable().optional(),\n labels: z.array(LabelSchema).optional(),\n model_formats: z.array(z.string()).nullable().optional(),\n scanner_version: z.string().nullable().optional(),\n time_started: z.string().nullable().optional(),\n total_files_scanned: z.number().int().nullable().optional(),\n total_files_skipped: z.number().int().nullable().optional(),\n })\n .passthrough();\n\n/** Base scan response from the Model Security API. */\nexport type ScanBaseResponse = z.infer<typeof ScanBaseResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Scan list\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a paginated list of scans. */\nexport const ScanListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n scans: z.array(ScanBaseResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of model security scans. */\nexport type ScanList = z.infer<typeof ScanListSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — File response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a file entry in the scanned model tree. */\nexport const FileResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n path: z.string(),\n parent_path: z.string(),\n type: z.string(),\n result: z.string(),\n model_version_uuid: z.string(),\n blob_id: z.string().nullable().optional(),\n formats: z.array(z.string()).nullable().optional(),\n scan_uuid: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** A file entry in the scanned model tree. */\nexport type FileResponse = z.infer<typeof FileResponseSchema>;\n\n/** Zod schema for a paginated list of files. */\nexport const FileListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n files: z.array(FileResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of scanned model files. */\nexport type FileList = z.infer<typeof FileListSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Rule evaluation response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a single rule evaluation result. */\nexport const RuleEvaluationResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n result: z.string(),\n violation_count: z.number().int(),\n rule_instance_uuid: z.string(),\n scan_uuid: z.string(),\n rule_name: z.string(),\n rule_description: z.string(),\n rule_instance_state: z.string(),\n })\n .passthrough();\n\n/** A single rule evaluation result for a scan. */\nexport type RuleEvaluationResponse = z.infer<typeof RuleEvaluationResponseSchema>;\n\n/** Zod schema for a paginated list of rule evaluations. */\nexport const RuleEvaluationListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n evaluations: z.array(RuleEvaluationResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of rule evaluations. */\nexport type RuleEvaluationList = z.infer<typeof RuleEvaluationListSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Violation response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a single violation response. */\nexport const ViolationResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.string(),\n rule_instance_uuid: z.string(),\n rule_name: z.string(),\n rule_description: z.string(),\n rule_instance_state: z.string(),\n file: z.string().nullable().optional(),\n hash: z.string().nullable().optional(),\n module: z.string().nullable().optional(),\n operator: z.string().nullable().optional(),\n threat: z.string().nullable().optional(),\n threat_description: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** A single violation with detailed rule information. */\nexport type ViolationResponse = z.infer<typeof ViolationResponseSchema>;\n\n/** Zod schema for a paginated list of violations. */\nexport const ViolationListSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n violations: z.array(ViolationResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of rule violations. */\nexport type ViolationList = z.infer<typeof ViolationListSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Rule editable field & remediation\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a dropdown option on a rule editable field. */\nexport const RuleEditableFieldDropdownSchema = z\n .object({\n value: z.string(),\n label: z.string(),\n })\n .passthrough();\n\n/** A dropdown option for a rule editable field. */\nexport type RuleEditableFieldDropdown = z.infer<typeof RuleEditableFieldDropdownSchema>;\n\n/** Zod schema for a rule editable field definition. */\nexport const RuleEditableFieldSchema = z\n .object({\n attribute_name: z.string(),\n type: z.string(),\n display_name: z.string(),\n display_type: z.string(),\n description: z.string().nullable().optional(),\n dropdown_values: z.array(RuleEditableFieldDropdownSchema).nullable().optional(),\n })\n .passthrough();\n\n/** A rule editable field definition for UI rendering. */\nexport type RuleEditableField = z.infer<typeof RuleEditableFieldSchema>;\n\n/** Zod schema for rule remediation steps. */\nexport const RuleRemediationSchema = z\n .object({\n description: z.string(),\n steps: z.array(z.string()),\n url: z.string(),\n })\n .passthrough();\n\n/** Remediation steps for a security rule. */\nexport type RuleRemediation = z.infer<typeof RuleRemediationSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Rule configuration (used in group creation)\n// ---------------------------------------------------------------------------\n\n/** Zod schema for rule configuration during security group creation. */\nexport const RuleConfigurationSchema = z\n .object({\n field_values: z.record(z.unknown()).optional(),\n state: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** Configuration for customizing a rule during security group creation. */\nexport type RuleConfiguration = z.infer<typeof RuleConfigurationSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Model security rule response\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a model security rule definition. */\nexport const ModelSecurityRuleResponseSchema = z\n .object({\n uuid: z.string(),\n name: z.string(),\n description: z.string(),\n rule_type: z.string(),\n compatible_sources: z.array(z.string()),\n default_state: z.string(),\n remediation: RuleRemediationSchema,\n editable_fields: z.array(RuleEditableFieldSchema),\n constant_values: z.record(z.unknown()),\n default_values: z.record(z.unknown()),\n })\n .passthrough();\n\n/** A model security rule definition. */\nexport type ModelSecurityRuleResponse = z.infer<typeof ModelSecurityRuleResponseSchema>;\n\n/** Zod schema for a paginated list of security rules. */\nexport const ListModelSecurityRulesResponseSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n rules: z.array(ModelSecurityRuleResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of model security rules. */\nexport type ListModelSecurityRulesResponse = z.infer<typeof ListModelSecurityRulesResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Rule instance\n// ---------------------------------------------------------------------------\n\n/** Zod schema for a model security rule instance response. */\nexport const ModelSecurityRuleInstanceResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n security_group_uuid: z.string(),\n security_rule_uuid: z.string(),\n state: z.string(),\n rule: ModelSecurityRuleResponseSchema,\n field_values: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\n/** An instantiated rule that gets evaluated against scans. */\nexport type ModelSecurityRuleInstanceResponse = z.infer<\n typeof ModelSecurityRuleInstanceResponseSchema\n>;\n\n/** Zod schema for updating a rule instance. */\nexport const ModelSecurityRuleInstanceUpdateRequestSchema = z\n .object({\n security_group_uuid: z.string(),\n state: z.string().nullable().optional(),\n field_values: z.record(z.unknown()).nullable().optional(),\n })\n .passthrough();\n\n/** Request body for updating a rule instance. */\nexport type ModelSecurityRuleInstanceUpdateRequest = z.infer<\n typeof ModelSecurityRuleInstanceUpdateRequestSchema\n>;\n\n/** Zod schema for a paginated list of rule instances. */\nexport const ListModelSecurityRuleInstancesResponseSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n rule_instances: z.array(ModelSecurityRuleInstanceResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of model security rule instances. */\nexport type ListModelSecurityRuleInstancesResponse = z.infer<\n typeof ListModelSecurityRuleInstancesResponseSchema\n>;\n\n// ---------------------------------------------------------------------------\n// Management — Security group\n// ---------------------------------------------------------------------------\n\n/** Zod schema for creating a model security group. */\nexport const ModelSecurityGroupCreateRequestSchema = z\n .object({\n name: z.string(),\n source_type: z.string(),\n description: z.string().optional().default(''),\n rule_configurations: z.record(RuleConfigurationSchema).optional(),\n })\n .passthrough();\n\n/** Request body for creating a new model security group. */\nexport type ModelSecurityGroupCreateRequest = z.infer<typeof ModelSecurityGroupCreateRequestSchema>;\n\n/** Zod schema for a model security group response. */\nexport const ModelSecurityGroupResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n name: z.string(),\n description: z.string(),\n source_type: z.string(),\n state: z.string(),\n is_tombstone: z.boolean(),\n })\n .passthrough();\n\n/** A model security group with its configuration and state. */\nexport type ModelSecurityGroupResponse = z.infer<typeof ModelSecurityGroupResponseSchema>;\n\n/** Zod schema for updating a model security group. */\nexport const ModelSecurityGroupUpdateRequestSchema = z\n .object({\n name: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n })\n .passthrough();\n\n/** Request body for updating a model security group. */\nexport type ModelSecurityGroupUpdateRequest = z.infer<typeof ModelSecurityGroupUpdateRequestSchema>;\n\n/** Zod schema for a paginated list of security groups. */\nexport const ListModelSecurityGroupsResponseSchema = z\n .object({\n pagination: ModelSecurityPaginationSchema,\n security_groups: z.array(ModelSecurityGroupResponseSchema),\n })\n .passthrough();\n\n/** Paginated list of model security groups. */\nexport type ListModelSecurityGroupsResponse = z.infer<typeof ListModelSecurityGroupsResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — PyPI auth\n// ---------------------------------------------------------------------------\n\n/** Zod schema for PyPI authentication response. */\nexport const PyPIAuthResponseSchema = z\n .object({\n url: z.string(),\n expires_at: z.string(),\n })\n .passthrough();\n\n/** PyPI authentication response with Google Artifact Registry URL. */\nexport type PyPIAuthResponse = z.infer<typeof PyPIAuthResponseSchema>;\n","// src/models/red-team-enums.ts — typed enums for AIRS Red Teaming API values\n\n/** API endpoint accessibility type. */\nexport const ApiEndpointType = {\n PUBLIC: 'PUBLIC',\n PRIVATE: 'PRIVATE',\n NETWORK_BROKER: 'NETWORK_BROKER',\n} as const;\nexport type ApiEndpointType = (typeof ApiEndpointType)[keyof typeof ApiEndpointType];\n\n/** Attack lifecycle status. */\nexport const AttackStatus = {\n INIT: 'INIT',\n ATTACK: 'ATTACK',\n DETECTION: 'DETECTION',\n REPORT: 'REPORT',\n COMPLETED: 'COMPLETED',\n FAILED: 'FAILED',\n} as const;\nexport type AttackStatus = (typeof AttackStatus)[keyof typeof AttackStatus];\n\n/** Attack type classification. */\nexport const AttackType = {\n NORMAL: 'NORMAL',\n CUSTOM: 'CUSTOM',\n} as const;\nexport type AttackType = (typeof AttackType)[keyof typeof AttackType];\n\n/** Authentication type for target connections. */\nexport const AuthType = {\n OAUTH: 'OAUTH',\n ACCESS_TOKEN: 'ACCESS_TOKEN',\n} as const;\nexport type AuthType = (typeof AuthType)[keyof typeof AuthType];\n\n/** Target authentication type (distinct from Databricks AuthType). */\nexport const TargetAuthType = {\n HEADERS: 'HEADERS',\n BASIC_AUTH: 'BASIC_AUTH',\n OAUTH2: 'OAUTH2',\n} as const;\nexport type TargetAuthType = (typeof TargetAuthType)[keyof typeof TargetAuthType];\n\n/** Location for basic auth credentials. */\nexport const BasicAuthLocation = {\n HEADER: 'HEADER',\n PAYLOAD: 'PAYLOAD',\n} as const;\nexport type BasicAuthLocation = (typeof BasicAuthLocation)[keyof typeof BasicAuthLocation];\n\n/** Brand risk subcategories. */\nexport const BrandSubCategory = {\n COMPETITOR_ENDORSEMENTS: 'COMPETITOR_ENDORSEMENTS',\n BRAND_TARNISHING_SELF_CRITICISM: 'BRAND_TARNISHING_SELF_CRITICISM',\n DISCRIMINATING_CLAIMS: 'DISCRIMINATING_CLAIMS',\n POLITICAL_ENDORSEMENTS: 'POLITICAL_ENDORSEMENTS',\n} as const;\nexport type BrandSubCategory = (typeof BrandSubCategory)[keyof typeof BrandSubCategory];\n\n/** Compliance framework subcategories. */\nexport const ComplianceSubCategory = {\n OWASP: 'OWASP',\n MITRE_ATLAS: 'MITRE_ATLAS',\n NIST: 'NIST',\n DASF_V2: 'DASF_V2',\n} as const;\nexport type ComplianceSubCategory =\n (typeof ComplianceSubCategory)[keyof typeof ComplianceSubCategory];\n\n/** Whether a scan counts toward quota. */\nexport const CountedQuotaEnum = {\n HELD: 'HELD',\n COUNTED: 'COUNTED',\n NOT_COUNTED: 'NOT_COUNTED',\n} as const;\nexport type CountedQuotaEnum = (typeof CountedQuotaEnum)[keyof typeof CountedQuotaEnum];\n\n/** Date range filter for dashboard queries. */\nexport const DateRangeFilter = {\n LAST_7_DAYS: 'LAST_7_DAYS',\n LAST_15_DAYS: 'LAST_15_DAYS',\n LAST_30_DAYS: 'LAST_30_DAYS',\n ALL: 'ALL',\n} as const;\nexport type DateRangeFilter = (typeof DateRangeFilter)[keyof typeof DateRangeFilter];\n\n/** Error source for error log entries. */\nexport const ErrorSource = {\n TARGET: 'TARGET',\n JOB: 'JOB',\n SYSTEM: 'SYSTEM',\n VALIDATION: 'VALIDATION',\n TARGET_PROFILING: 'TARGET_PROFILING',\n} as const;\nexport type ErrorSource = (typeof ErrorSource)[keyof typeof ErrorSource];\n\n/** Red Team error type classification (prefixed to avoid conflict with SDK ErrorType). */\nexport const RedTeamErrorType = {\n CONTENT_FILTER: 'CONTENT_FILTER',\n RATE_LIMIT: 'RATE_LIMIT',\n AUTHENTICATION: 'AUTHENTICATION',\n NETWORK: 'NETWORK',\n VALIDATION: 'VALIDATION',\n NETWORK_CHANNEL: 'NETWORK_CHANNEL',\n UNKNOWN: 'UNKNOWN',\n} as const;\nexport type RedTeamErrorType = (typeof RedTeamErrorType)[keyof typeof RedTeamErrorType];\n\n/** Report download file format. */\nexport const FileFormat = {\n CSV: 'CSV',\n JSON: 'JSON',\n ALL: 'ALL',\n} as const;\nexport type FileFormat = (typeof FileFormat)[keyof typeof FileFormat];\n\n/** Dynamic scan goal type. */\nexport const GoalType = {\n BASE: 'BASE',\n TOOL_MISUSE: 'TOOL_MISUSE',\n GOAL_MANIPULATION: 'GOAL_MANIPULATION',\n} as const;\nexport type GoalType = (typeof GoalType)[keyof typeof GoalType];\n\n/** Goal type query parameter filter. */\nexport const GoalTypeQueryParam = {\n AGENT: 'AGENT',\n HUMAN_AUGMENTED: 'HUMAN_AUGMENTED',\n} as const;\nexport type GoalTypeQueryParam = (typeof GoalTypeQueryParam)[keyof typeof GoalTypeQueryParam];\n\n/** Guardrail action for runtime security policies. */\nexport const GuardrailAction = {\n ALLOW: 'ALLOW',\n BLOCK: 'BLOCK',\n} as const;\nexport type GuardrailAction = (typeof GuardrailAction)[keyof typeof GuardrailAction];\n\n/** Red team scan job status. */\nexport const JobStatus = {\n INIT: 'INIT',\n QUEUED: 'QUEUED',\n RUNNING: 'RUNNING',\n COMPLETED: 'COMPLETED',\n PARTIALLY_COMPLETE: 'PARTIALLY_COMPLETE',\n FAILED: 'FAILED',\n ABORTED: 'ABORTED',\n} as const;\nexport type JobStatus = (typeof JobStatus)[keyof typeof JobStatus];\n\n/** Job status values available for filtering (excludes INIT). */\nexport const JobStatusFilter = {\n QUEUED: 'QUEUED',\n RUNNING: 'RUNNING',\n COMPLETED: 'COMPLETED',\n PARTIALLY_COMPLETE: 'PARTIALLY_COMPLETE',\n FAILED: 'FAILED',\n ABORTED: 'ABORTED',\n} as const;\nexport type JobStatusFilter = (typeof JobStatusFilter)[keyof typeof JobStatusFilter];\n\n/** Red team scan job type. */\nexport const JobType = {\n STATIC: 'STATIC',\n DYNAMIC: 'DYNAMIC',\n CUSTOM: 'CUSTOM',\n} as const;\nexport type JobType = (typeof JobType)[keyof typeof JobType];\n\n/** Runtime security policy type. */\nexport const PolicyType = {\n PROMPT_INJECTION: 'PROMPT_INJECTION',\n TOXIC_CONTENT: 'TOXIC_CONTENT',\n CUSTOM_TOPIC_GUARDRAILS: 'CUSTOM_TOPIC_GUARDRAILS',\n MALICIOUS_CODE_DETECTION: 'MALICIOUS_CODE_DETECTION',\n MALICIOUS_URL_DETECTION: 'MALICIOUS_URL_DETECTION',\n SENSITIVE_DATA_PROTECTION: 'SENSITIVE_DATA_PROTECTION',\n} as const;\nexport type PolicyType = (typeof PolicyType)[keyof typeof PolicyType];\n\n/** Target profiling status. */\nexport const ProfilingStatus = {\n INIT: 'INIT',\n QUEUED: 'QUEUED',\n IN_PROGRESS: 'IN_PROGRESS',\n COMPLETED: 'COMPLETED',\n FAILED: 'FAILED',\n} as const;\nexport type ProfilingStatus = (typeof ProfilingStatus)[keyof typeof ProfilingStatus];\n\n/** Red Team risk category (prefixed to avoid conflict with SDK Category). */\nexport const RedTeamCategory = {\n SECURITY: 'SECURITY',\n SAFETY: 'SAFETY',\n COMPLIANCE: 'COMPLIANCE',\n BRAND: 'BRAND',\n} as const;\nexport type RedTeamCategory = (typeof RedTeamCategory)[keyof typeof RedTeamCategory];\n\n/** Target response mode. */\nexport const ResponseMode = {\n REST: 'REST',\n STREAMING: 'STREAMING',\n} as const;\nexport type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode];\n\n/** Risk rating levels. */\nexport const RiskRating = {\n LOW: 'LOW',\n MEDIUM: 'MEDIUM',\n HIGH: 'HIGH',\n CRITICAL: 'CRITICAL',\n} as const;\nexport type RiskRating = (typeof RiskRating)[keyof typeof RiskRating];\n\n/** Safety risk subcategories. */\nexport const SafetySubCategory = {\n BIAS: 'BIAS',\n CBRN: 'CBRN',\n CYBERCRIME: 'CYBERCRIME',\n DRUGS: 'DRUGS',\n HATE_TOXIC_ABUSE: 'HATE_TOXIC_ABUSE',\n NON_VIOLENT_CRIMES: 'NON_VIOLENT_CRIMES',\n POLITICAL: 'POLITICAL',\n SELF_HARM: 'SELF_HARM',\n SEXUAL: 'SEXUAL',\n VIOLENT_CRIMES_WEAPONS: 'VIOLENT_CRIMES_WEAPONS',\n} as const;\nexport type SafetySubCategory = (typeof SafetySubCategory)[keyof typeof SafetySubCategory];\n\n/** Security risk subcategories. */\nexport const SecuritySubCategory = {\n ADVERSARIAL_SUFFIX: 'ADVERSARIAL_SUFFIX',\n EVASION: 'EVASION',\n INDIRECT_PROMPT_INJECTION: 'INDIRECT_PROMPT_INJECTION',\n JAILBREAK: 'JAILBREAK',\n MULTI_TURN: 'MULTI_TURN',\n PROMPT_INJECTION: 'PROMPT_INJECTION',\n REMOTE_CODE_EXECUTION: 'REMOTE_CODE_EXECUTION',\n SYSTEM_PROMPT_LEAK: 'SYSTEM_PROMPT_LEAK',\n TOOL_LEAK: 'TOOL_LEAK',\n MALWARE_GENERATION: 'MALWARE_GENERATION',\n} as const;\nexport type SecuritySubCategory = (typeof SecuritySubCategory)[keyof typeof SecuritySubCategory];\n\n/** Severity filter levels. */\nexport const SeverityFilter = {\n LOW: 'LOW',\n MEDIUM: 'MEDIUM',\n HIGH: 'HIGH',\n CRITICAL: 'CRITICAL',\n} as const;\nexport type SeverityFilter = (typeof SeverityFilter)[keyof typeof SeverityFilter];\n\n/** Attack status query parameter filter. */\nexport const StatusQueryParam = {\n SUCCESSFUL: 'SUCCESSFUL',\n FAILED: 'FAILED',\n} as const;\nexport type StatusQueryParam = (typeof StatusQueryParam)[keyof typeof StatusQueryParam];\n\n/** Dynamic scan stream type. */\nexport const StreamType = {\n NORMAL: 'NORMAL',\n ADVERSARIAL: 'ADVERSARIAL',\n} as const;\nexport type StreamType = (typeof StreamType)[keyof typeof StreamType];\n\n/** Target connection provider type. */\nexport const TargetConnectionType = {\n DATABRICKS: 'DATABRICKS',\n BEDROCK: 'BEDROCK',\n OPENAI: 'OPENAI',\n HUGGING_FACE: 'HUGGING_FACE',\n CUSTOM: 'CUSTOM',\n REST: 'REST',\n STREAMING: 'STREAMING',\n WEBSOCKET: 'WEBSOCKET',\n} as const;\nexport type TargetConnectionType = (typeof TargetConnectionType)[keyof typeof TargetConnectionType];\n\n/** Target lifecycle status. */\nexport const TargetStatus = {\n DRAFT: 'DRAFT',\n VALIDATING: 'VALIDATING',\n VALIDATED: 'VALIDATED',\n ACTIVE: 'ACTIVE',\n INACTIVE: 'INACTIVE',\n FAILED: 'FAILED',\n PENDING_AUTH: 'PENDING_AUTH',\n} as const;\nexport type TargetStatus = (typeof TargetStatus)[keyof typeof TargetStatus];\n\n/** Target classification type. */\nexport const TargetType = {\n APPLICATION: 'APPLICATION',\n AGENT: 'AGENT',\n MODEL: 'MODEL',\n} as const;\nexport type TargetType = (typeof TargetType)[keyof typeof TargetType];\n","// src/models/red-team.ts — Zod schemas + types for AIRS Red Teaming API\n\nimport { z } from 'zod';\n\n// ---------------------------------------------------------------------------\n// Shared / utility schemas\n// ---------------------------------------------------------------------------\n\nexport const RedTeamPaginationSchema = z\n .object({ total_items: z.number().int().nullable().optional() })\n .passthrough();\nexport type RedTeamPagination = z.infer<typeof RedTeamPaginationSchema>;\n\nexport const CountByNameSchema = z\n .object({ name: z.string(), count: z.number().int() })\n .passthrough();\nexport type CountByName = z.infer<typeof CountByNameSchema>;\n\nexport const ValidationErrorSchema = z\n .object({\n loc: z.array(z.union([z.string(), z.number()])),\n msg: z.string(),\n type: z.string(),\n })\n .passthrough();\nexport type ValidationError = z.infer<typeof ValidationErrorSchema>;\n\nexport const HTTPValidationErrorSchema = z\n .object({ detail: z.array(ValidationErrorSchema).optional() })\n .passthrough();\nexport type HTTPValidationError = z.infer<typeof HTTPValidationErrorSchema>;\n\n// ---------------------------------------------------------------------------\n// Target context schemas (shared between data plane & management)\n// ---------------------------------------------------------------------------\n\nexport const TargetBackgroundSchema = z\n .object({\n industry: z.string().nullable().optional(),\n use_case: z.string().nullable().optional(),\n competitors: z.array(z.string()).nullable().optional(),\n })\n .passthrough();\nexport type TargetBackground = z.infer<typeof TargetBackgroundSchema>;\n\nexport const TargetAdditionalContextSchema = z\n .object({\n base_model: z.string().nullable().optional(),\n core_architecture: z.string().nullable().optional(),\n system_prompt: z.string().nullable().optional(),\n languages_supported: z.array(z.string()).nullable().optional(),\n banned_keywords: z.array(z.string()).nullable().optional(),\n tools_accessible: z.array(z.string()).nullable().optional(),\n })\n .passthrough();\nexport type TargetAdditionalContext = z.infer<typeof TargetAdditionalContextSchema>;\n\nexport const TargetMetadataSchema = z\n .object({\n multi_turn: z.boolean().optional(),\n multi_turn_error_message: z.string().nullable().optional(),\n rate_limit: z.number().int().nullable().optional(),\n rate_limit_enabled: z.boolean().optional(),\n rate_limit_error_code: z.number().int().nullable().optional(),\n rate_limit_error_json: z.record(z.unknown()).nullable().optional(),\n rate_limit_error_message: z.string().nullable().optional(),\n content_filter_enabled: z.boolean().optional(),\n content_filter_error_code: z.number().int().nullable().optional(),\n content_filter_error_json: z.record(z.unknown()).nullable().optional(),\n content_filter_error_message: z.string().nullable().optional(),\n probe_message: z.string().optional(),\n request_timeout: z.number().optional(),\n })\n .passthrough();\nexport type TargetMetadata = z.infer<typeof TargetMetadataSchema>;\n\n// ---------------------------------------------------------------------------\n// Multi-turn configuration schemas\n// ---------------------------------------------------------------------------\n\nexport const MultiTurnStatefulConfigSchema = z\n .object({\n type: z.string().default('stateful'),\n response_id_field: z.string(),\n request_id_field: z.string(),\n })\n .passthrough();\nexport type MultiTurnStatefulConfig = z.infer<typeof MultiTurnStatefulConfigSchema>;\n\nexport const MultiTurnStatelessConfigSchema = z\n .object({\n type: z.string().default('stateless'),\n assistant_role: z.string().nullable().optional(),\n })\n .passthrough();\nexport type MultiTurnStatelessConfig = z.infer<typeof MultiTurnStatelessConfigSchema>;\n\n// ---------------------------------------------------------------------------\n// Auth config schemas\n// ---------------------------------------------------------------------------\n\nexport const HeadersAuthConfigSchema = z\n .object({ auth_header: z.record(z.unknown()) })\n .passthrough();\nexport type HeadersAuthConfig = z.infer<typeof HeadersAuthConfigSchema>;\n\nexport const BasicAuthAuthConfigSchema = z\n .object({\n basic_auth_location: z.string().default('HEADER'),\n basic_auth_header: z.record(z.unknown()).nullable().optional(),\n })\n .passthrough();\nexport type BasicAuthAuthConfig = z.infer<typeof BasicAuthAuthConfigSchema>;\n\nexport const OAuth2AuthConfigSchema = z\n .object({\n oauth2_token_url: z.string(),\n oauth2_expiry_minutes: z.number().int().default(60),\n oauth2_headers: z.record(z.unknown()).optional(),\n oauth2_body_params: z.record(z.unknown()).optional(),\n oauth2_token_response_key: z.string().default('access_token'),\n oauth2_inject_header: z.record(z.unknown()),\n })\n .passthrough();\nexport type OAuth2AuthConfig = z.infer<typeof OAuth2AuthConfigSchema>;\n\nexport const AuthConfigSchema = z.union([\n HeadersAuthConfigSchema,\n BasicAuthAuthConfigSchema,\n OAuth2AuthConfigSchema,\n]);\nexport type AuthConfig = z.infer<typeof AuthConfigSchema>;\n\n// ---------------------------------------------------------------------------\n// Provider-specific connection parameter schemas\n// ---------------------------------------------------------------------------\n\nexport const OpenAIConnectionParamsSchema = z\n .object({\n api_key: z.string(),\n model_name: z.string(),\n })\n .passthrough();\nexport type OpenAIConnectionParams = z.infer<typeof OpenAIConnectionParamsSchema>;\n\nexport const HuggingfaceConnectionParamsSchema = z\n .object({\n api_key: z.string(),\n model_name: z.string(),\n })\n .passthrough();\nexport type HuggingfaceConnectionParams = z.infer<typeof HuggingfaceConnectionParamsSchema>;\n\nexport const DatabricksConnectionParamsSchema = z\n .object({\n auth_type: z.string(),\n workspace_url: z.string(),\n model_name: z.string(),\n access_token: z.string().nullable().optional(),\n client_id: z.string().nullable().optional(),\n secret: z.string().nullable().optional(),\n })\n .passthrough();\nexport type DatabricksConnectionParams = z.infer<typeof DatabricksConnectionParamsSchema>;\n\nexport const BedrockAccessConnectionParamsSchema = z\n .object({\n access_id: z.string(),\n access_secret: z.string(),\n region: z.string(),\n model_id: z.string(),\n session_token: z.string().nullable().optional(),\n })\n .passthrough();\nexport type BedrockAccessConnectionParams = z.infer<typeof BedrockAccessConnectionParamsSchema>;\n\n// ---------------------------------------------------------------------------\n// Connection parameter schemas (REST & Streaming)\n// ---------------------------------------------------------------------------\n\nexport const RestConnectionParamsSchema = z\n .object({\n api_endpoint: z.string().nullable().optional(),\n request_headers: z.record(z.unknown()).nullable().optional(),\n request_json: z.record(z.unknown()).nullable().optional(),\n response_json: z.record(z.unknown()).nullable().optional(),\n response_key: z.string().nullable().optional(),\n target_connection_config: z.unknown().nullable().optional(),\n curl: z.string().nullable().optional(),\n multi_turn_config: z.unknown().nullable().optional(),\n })\n .passthrough();\nexport type RestConnectionParams = z.infer<typeof RestConnectionParamsSchema>;\n\nexport const StreamingConnectionParamsSchema = RestConnectionParamsSchema.extend({\n response_stop_key: z.string(),\n response_stop_value: z.string(),\n}).passthrough();\nexport type StreamingConnectionParams = z.infer<typeof StreamingConnectionParamsSchema>;\n\nexport const WebSocketConnectionParamsSchema = RestConnectionParamsSchema.extend({\n ws_response_timeout: z.number().default(110),\n}).passthrough();\nexport type WebSocketConnectionParams = z.infer<typeof WebSocketConnectionParamsSchema>;\n\n/** Union of WebSocket, Streaming, and REST connection params. */\nexport const ConnectionParamsSchema = z.union([\n WebSocketConnectionParamsSchema,\n StreamingConnectionParamsSchema,\n RestConnectionParamsSchema,\n]);\nexport type ConnectionParams = z.infer<typeof ConnectionParamsSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Job / Scan schemas\n// ---------------------------------------------------------------------------\n\nexport const TargetJobRequestSchema = z\n .object({\n uuid: z.string(),\n version: z.number().int().nullable().optional(),\n })\n .passthrough();\nexport type TargetJobRequest = z.infer<typeof TargetJobRequestSchema>;\n\nexport const JobTimeRecordSchema = z\n .object({\n queued_at: z.string().nullable().optional(),\n started_at: z.string().nullable().optional(),\n completed_at: z.string().nullable().optional(),\n time_taken: z.string().nullable().optional(),\n })\n .passthrough();\nexport type JobTimeRecord = z.infer<typeof JobTimeRecordSchema>;\n\nexport const StaticJobMetadataSchema = z\n .object({\n categories: z.record(z.unknown()),\n rate_limit_enabled: z.boolean().optional(),\n rate_limit: z.number().int().nullable().optional(),\n rate_limit_error_code: z.number().int().nullable().optional(),\n rate_limit_error_message: z.string().nullable().optional(),\n rate_limit_error_json: z.unknown().optional(),\n content_filter_enabled: z.boolean().optional(),\n content_filter_error_code: z.number().int().nullable().optional(),\n content_filter_error_message: z.string().nullable().optional(),\n content_filter_error_json: z.unknown().optional(),\n })\n .passthrough();\nexport type StaticJobMetadata = z.infer<typeof StaticJobMetadataSchema>;\n\nexport const DynamicJobMetadataSchema = z\n .object({\n rate_limit_enabled: z.boolean().optional(),\n rate_limit: z.number().int().nullable().optional(),\n rate_limit_error_code: z.number().int().nullable().optional(),\n rate_limit_error_message: z.string().nullable().optional(),\n rate_limit_error_json: z.unknown().optional(),\n content_filter_enabled: z.boolean().optional(),\n content_filter_error_code: z.number().int().nullable().optional(),\n content_filter_error_message: z.string().nullable().optional(),\n content_filter_error_json: z.unknown().optional(),\n stream_breadth: z.number().int().optional(),\n stream_depth: z.number().int().optional(),\n max_tokens: z.number().int().optional(),\n context_size: z.number().int().optional(),\n attack_goals: z.array(z.unknown()).optional(),\n base_model: z.string().nullable().optional(),\n use_case: z.string().nullable().optional(),\n system_prompt: z.string().nullable().optional(),\n })\n .passthrough();\nexport type DynamicJobMetadata = z.infer<typeof DynamicJobMetadataSchema>;\n\nexport const CustomJobMetadataSchema = z\n .object({\n custom_prompt_sets: z.array(z.unknown()),\n rate_limit_enabled: z.boolean().optional(),\n rate_limit: z.number().int().nullable().optional(),\n rate_limit_error_code: z.number().int().nullable().optional(),\n rate_limit_error_message: z.string().nullable().optional(),\n rate_limit_error_json: z.unknown().optional(),\n content_filter_enabled: z.boolean().optional(),\n content_filter_error_code: z.number().int().nullable().optional(),\n content_filter_error_message: z.string().nullable().optional(),\n content_filter_error_json: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomJobMetadata = z.infer<typeof CustomJobMetadataSchema>;\n\nexport const JobCreateRequestSchema = z\n .object({\n name: z.string(),\n target: TargetJobRequestSchema,\n job_type: z.string(),\n job_metadata: z.union([\n StaticJobMetadataSchema,\n DynamicJobMetadataSchema,\n CustomJobMetadataSchema,\n ]),\n version: z.number().int().nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n })\n .passthrough();\nexport type JobCreateRequest = z.infer<typeof JobCreateRequestSchema>;\n\nexport const StaticJobReportStatsSchema = z\n .object({\n output_completion_percentage: z.number(),\n partial_report_unlocked: z.boolean().optional(),\n partial_report_unlocked_at: z.string().nullable().optional(),\n report_summary: z.string().nullable().optional(),\n })\n .passthrough();\nexport type StaticJobReportStats = z.infer<typeof StaticJobReportStatsSchema>;\n\nexport const DynamicJobReportStatsSchema = z\n .object({\n total_goals: z.number().int().optional(),\n total_streams: z.number().int().optional(),\n total_threats: z.number().int().optional(),\n goals_achieved: z.number().int().optional(),\n report_summary: z.string().nullable().optional(),\n })\n .passthrough();\nexport type DynamicJobReportStats = z.infer<typeof DynamicJobReportStatsSchema>;\n\nexport const TargetReferenceSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n target_type: z.string().nullable().optional(),\n connection_type: z.string().nullable().optional(),\n api_endpoint_type: z.string().nullable().optional(),\n response_mode: z.string().nullable().optional(),\n session_supported: z.boolean().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n status: z.string(),\n active: z.boolean(),\n validated: z.boolean(),\n version: z.number().int().nullable().optional(),\n secret_version: z.string().nullable().optional(),\n created_by_user_id: z.string().nullable().optional(),\n updated_by_user_id: z.string().nullable().optional(),\n created_at: z.string(),\n updated_at: z.string(),\n target_metadata: TargetMetadataSchema.optional(),\n target_background: TargetBackgroundSchema.nullable().optional(),\n profiling_status: z.string().nullable().optional(),\n additional_context: TargetAdditionalContextSchema.nullable().optional(),\n auth_type: z.string().nullable().optional(),\n })\n .passthrough();\nexport type TargetReference = z.infer<typeof TargetReferenceSchema>;\n\nexport const JobResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n name: z.string(),\n target: TargetReferenceSchema,\n job_type: z.string(),\n job_metadata: z.unknown(),\n version: z.number().int().nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n target_id: z.string(),\n target_type: z.string(),\n total: z.number().int().nullable().optional(),\n completed: z.number().int().nullable().optional(),\n status: z.string().optional(),\n score: z.number().nullable().optional(),\n asr: z.number().nullable().optional(),\n time_record: JobTimeRecordSchema.nullable().optional(),\n created_at: z.string().nullable().optional(),\n updated_at: z.string().nullable().optional(),\n created_by_user_id: z.string().nullable().optional(),\n report_stats: z.unknown().optional(),\n metering_quota_uuid: z.string().nullable().optional(),\n counted_towards_quota: z.string().optional(),\n invocation_id: z.string().nullable().optional(),\n })\n .passthrough();\nexport type JobResponse = z.infer<typeof JobResponseSchema>;\n\nexport const JobListResponseSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(JobResponseSchema),\n })\n .passthrough();\nexport type JobListResponse = z.infer<typeof JobListResponseSchema>;\n\nexport const JobAbortResponseSchema = z\n .object({\n job_id: z.string(),\n message: z.string(),\n })\n .passthrough();\nexport type JobAbortResponse = z.infer<typeof JobAbortResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Category schemas\n// ---------------------------------------------------------------------------\n\nexport const PrerequisiteModelSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n })\n .passthrough();\nexport type PrerequisiteModel = z.infer<typeof PrerequisiteModelSchema>;\n\nexport const SubCategoryModelSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n preselect: z.boolean().optional(),\n prerequisites: z.array(PrerequisiteModelSchema).nullable().optional(),\n active: z.boolean().optional(),\n })\n .passthrough();\nexport type SubCategoryModel = z.infer<typeof SubCategoryModelSchema>;\n\nexport const CategoryModelSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n preselect: z.boolean().optional(),\n sub_categories: z.array(SubCategoryModelSchema),\n })\n .passthrough();\nexport type CategoryModel = z.infer<typeof CategoryModelSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Attack schemas\n// ---------------------------------------------------------------------------\n\nexport const AttackOutputSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n attack_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n output: z.string(),\n threat: z.boolean().nullable().optional(),\n marked_safe: z.boolean().nullable().optional(),\n })\n .passthrough();\nexport type AttackOutput = z.infer<typeof AttackOutputSchema>;\n\nexport const AttackMultiTurnOutputSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n attack_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n output: z.string(),\n prompt: z.string(),\n turn: z.number().int(),\n threat: z.boolean().nullable().optional(),\n marked_safe: z.boolean().nullable().optional(),\n generation: z.number().int().optional(),\n multi_turn: z.boolean().optional(),\n })\n .passthrough();\nexport type AttackMultiTurnOutput = z.infer<typeof AttackMultiTurnOutputSchema>;\n\nexport const AttackListItemSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n prompt: z.string(),\n prompt_mapping_id: z.string(),\n prompt_id: z.string(),\n category: z.string(),\n sub_category: z.string(),\n category_display_name: z.string(),\n sub_category_display_name: z.string(),\n status: z.string().optional(),\n marked_safe: z.boolean().nullable().optional(),\n extra_info: z.record(z.unknown()).optional(),\n threat: z.boolean().nullable().optional(),\n attack_type: z.string().optional(),\n multi_turn: z.boolean().optional(),\n asr: z.number().nullable().optional(),\n version: z.number().int().nullable().optional(),\n severity: z.string().optional(),\n })\n .passthrough();\nexport type AttackListItem = z.infer<typeof AttackListItemSchema>;\n\nexport const AttackListResponseSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(AttackListItemSchema),\n })\n .passthrough();\nexport type AttackListResponse = z.infer<typeof AttackListResponseSchema>;\n\nexport const AttackDetailResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n prompt: z.string(),\n prompt_mapping_id: z.string(),\n prompt_id: z.string(),\n category: z.string(),\n sub_category: z.string(),\n category_display_name: z.string(),\n sub_category_display_name: z.string(),\n compliance_frameworks: z.array(z.unknown()),\n goal: z.string().nullable(),\n status: z.string().optional(),\n marked_safe: z.boolean().nullable().optional(),\n extra_info: z.record(z.unknown()).optional(),\n threat: z.boolean().nullable().optional(),\n attack_type: z.string().optional(),\n multi_turn: z.boolean().optional(),\n asr: z.number().nullable().optional(),\n version: z.number().int().nullable().optional(),\n severity: z.string().optional(),\n outputs: z.array(AttackOutputSchema).optional(),\n })\n .passthrough();\nexport type AttackDetailResponse = z.infer<typeof AttackDetailResponseSchema>;\n\nexport const AttackMultiTurnDetailResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n prompt: z.string(),\n prompt_mapping_id: z.string(),\n prompt_id: z.string(),\n category: z.string(),\n sub_category: z.string(),\n category_display_name: z.string(),\n sub_category_display_name: z.string(),\n compliance_frameworks: z.array(z.unknown()),\n goal: z.string().nullable(),\n status: z.string().optional(),\n marked_safe: z.boolean().nullable().optional(),\n extra_info: z.record(z.unknown()).optional(),\n threat: z.boolean().nullable().optional(),\n attack_type: z.string().optional(),\n multi_turn: z.boolean().optional(),\n asr: z.number().nullable().optional(),\n version: z.number().int().nullable().optional(),\n severity: z.string().optional(),\n outputs: z.array(AttackMultiTurnOutputSchema).optional(),\n })\n .passthrough();\nexport type AttackMultiTurnDetailResponse = z.infer<typeof AttackMultiTurnDetailResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Report schemas\n// ---------------------------------------------------------------------------\n\nexport const SubCategoryStatsSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n preselect: z.boolean().optional(),\n prerequisites: z.array(PrerequisiteModelSchema).nullable().optional(),\n active: z.boolean().optional(),\n successful: z.number().int(),\n failed: z.number().int(),\n total: z.number().int().optional(),\n })\n .passthrough();\nexport type SubCategoryStats = z.infer<typeof SubCategoryStatsSchema>;\n\nexport const CategoryReportSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n preselect: z.boolean().optional(),\n sub_categories: z.array(SubCategoryStatsSchema),\n asr: z.number(),\n total_prompts: z.number().int(),\n total_attacks: z.number().int(),\n successful: z.number().int(),\n failed: z.number().int(),\n })\n .passthrough();\nexport type CategoryReport = z.infer<typeof CategoryReportSchema>;\n\nexport const SeverityStatsSchema = z\n .object({\n severity: z.string(),\n successful: z.number().int().optional(),\n failed: z.number().int().optional(),\n })\n .passthrough();\nexport type SeverityStats = z.infer<typeof SeverityStatsSchema>;\n\nexport const SeverityReportSchema = z\n .object({\n stats: z.array(SeverityStatsSchema),\n successful: z.number().int().optional(),\n failed: z.number().int().optional(),\n total_attacks: z.number().int().optional(),\n })\n .passthrough();\nexport type SeverityReport = z.infer<typeof SeverityReportSchema>;\n\nexport const ComplianceTechniqueSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n compliance_id: z.string(),\n description: z.string(),\n link: z.string(),\n version: z.string(),\n active: z.boolean(),\n successful: z.number().int().optional(),\n failed: z.number().int().optional(),\n total: z.number().int().optional(),\n })\n .passthrough();\nexport type ComplianceTechnique = z.infer<typeof ComplianceTechniqueSchema>;\n\nexport const ComplianceReportSchema = z\n .object({\n id: z.string(),\n display_name: z.string(),\n description: z.string(),\n active: z.boolean(),\n version: z.string(),\n link: z.string(),\n techniques: z.array(ComplianceTechniqueSchema),\n score: z.number().int().optional(),\n })\n .passthrough();\nexport type ComplianceReport = z.infer<typeof ComplianceReportSchema>;\n\nexport const RuntimeSecurityPolicySchema = z\n .object({\n policy_id: z.string(),\n display_name: z.string(),\n config: z.record(z.unknown()),\n })\n .passthrough();\nexport type RuntimeSecurityPolicy = z.infer<typeof RuntimeSecurityPolicySchema>;\n\nexport const StaticJobRemediationSchema = z\n .object({\n remediation: z.string(),\n description: z.string(),\n mapping_remediation_id: z.string().nullable().optional(),\n subcategories: z.array(z.string()).nullable().optional(),\n effectiveness: z.number().int().optional(),\n ease_of_implementation: z.number().int().optional(),\n priority: z.number().int().optional(),\n resource_links: z.array(z.string()).optional(),\n categories: z.array(z.string()).nullable().optional(),\n })\n .passthrough();\nexport type StaticJobRemediation = z.infer<typeof StaticJobRemediationSchema>;\n\nexport const StaticJobRemediationRecommendationSchema = z\n .object({\n runtime_security_policy_configuration: z\n .array(RuntimeSecurityPolicySchema)\n .nullable()\n .optional(),\n other_measures: z.array(StaticJobRemediationSchema).optional(),\n })\n .passthrough();\nexport type StaticJobRemediationRecommendation = z.infer<\n typeof StaticJobRemediationRecommendationSchema\n>;\n\nexport const StaticJobReportSchema = z\n .object({\n severity_report: SeverityReportSchema,\n asr: z.number().nullable().optional(),\n score: z.number().nullable().optional(),\n security_report: CategoryReportSchema.nullable().optional(),\n safety_report: CategoryReportSchema.nullable().optional(),\n brand_report: CategoryReportSchema.nullable().optional(),\n compliance_report: z.array(ComplianceReportSchema).nullable().optional(),\n report_summary: z.string().nullable().optional(),\n recommendations: StaticJobRemediationRecommendationSchema.nullable().optional(),\n })\n .passthrough();\nexport type StaticJobReport = z.infer<typeof StaticJobReportSchema>;\n\nexport const DynamicJobReportSchema = z\n .object({\n total_goals: z.number().int().optional(),\n total_streams: z.number().int().optional(),\n total_threats: z.number().int().optional(),\n goals_achieved: z.number().int().optional(),\n report_summary: z.string().nullable().optional(),\n score: z.number().optional(),\n asr: z.number().optional(),\n })\n .passthrough();\nexport type DynamicJobReport = z.infer<typeof DynamicJobReportSchema>;\n\nexport const RemediationDetailSchema = z\n .object({\n remediation: z.string(),\n description: z.string(),\n resource_links: z.array(z.string()).optional(),\n priority_level: z.string().optional(),\n ease_of_implementation_level: z.string().optional(),\n effectiveness_level: z.string().optional(),\n })\n .passthrough();\nexport type RemediationDetail = z.infer<typeof RemediationDetailSchema>;\n\nexport const RemediationResponseSchema = z\n .object({ remediations: z.array(RemediationDetailSchema).optional() })\n .passthrough();\nexport type RemediationResponse = z.infer<typeof RemediationResponseSchema>;\n\nexport const RuntimeSecurityProfileResponseSchema = z\n .object({\n runtime_security_profile: z.array(RuntimeSecurityPolicySchema).nullable().optional(),\n })\n .passthrough();\nexport type RuntimeSecurityProfileResponse = z.infer<typeof RuntimeSecurityProfileResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Goal & Stream schemas (dynamic reports)\n// ---------------------------------------------------------------------------\n\nexport const GoalSchema = z\n .object({\n goal: z.string(),\n safe_response: z.string(),\n jailbroken_response: z.string(),\n goal_metadata: z.record(z.unknown()).optional(),\n custom_goal: z.boolean().optional(),\n goal_type: z.string().optional(),\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n goal_to_show: z.string().nullable().optional(),\n threat: z.boolean().optional(),\n version: z.number().int().nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n })\n .passthrough();\nexport type Goal = z.infer<typeof GoalSchema>;\n\nexport const GoalListResponseSchema = z\n .object({ pagination: RedTeamPaginationSchema, data: z.array(GoalSchema) })\n .passthrough();\nexport type GoalListResponse = z.infer<typeof GoalListResponseSchema>;\n\nexport const StreamIterationDataSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n stream_id: z.string(),\n goal_id: z.string(),\n iteration: z.number().int(),\n prompt: z.string(),\n techniques: z.string(),\n improvement: z.string(),\n prompts_objective: z.string(),\n summary: z.string(),\n output: z.string().nullable().optional(),\n score: z.number().int().nullable().optional(),\n judge_reasoning: z.string().nullable().optional(),\n threat: z.boolean().optional(),\n created_at: z.string().nullable().optional(),\n updated_at: z.string().nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n version: z.number().int().nullable().optional(),\n })\n .passthrough();\nexport type StreamIterationData = z.infer<typeof StreamIterationDataSchema>;\n\nexport const StreamDetailResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n goal_id: z.string(),\n stream_idx: z.number().int().optional(),\n iteration: z.number().int().optional(),\n goal: z.unknown().optional(),\n marked_safe: z.boolean().optional(),\n stream_type: z.string().nullable().optional(),\n threat: z.boolean().optional(),\n first_threat_iteration: StreamIterationDataSchema.nullable().optional(),\n created_at: z.string().nullable().optional(),\n updated_at: z.string().nullable().optional(),\n extra_info: z.record(z.unknown()).optional(),\n version: z.number().int().nullable().optional(),\n iterations: z.array(StreamIterationDataSchema).optional(),\n })\n .passthrough();\nexport type StreamDetailResponse = z.infer<typeof StreamDetailResponseSchema>;\n\nexport const StreamListResponseSchema = z\n .object({ pagination: RedTeamPaginationSchema, data: z.array(StreamDetailResponseSchema) })\n .passthrough();\nexport type StreamListResponse = z.infer<typeof StreamListResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Custom attack report schemas\n// ---------------------------------------------------------------------------\n\nexport const CustomAttackOutputSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n custom_attack_id: z.string(),\n job_id: z.string(),\n target_id: z.string(),\n output: z.string(),\n threat: z.boolean().nullable().optional(),\n marked_safe: z.boolean().nullable().optional(),\n })\n .passthrough();\nexport type CustomAttackOutput = z.infer<typeof CustomAttackOutputSchema>;\n\nexport const PropertyAssignmentSchema = z\n .object({\n name: z.string(),\n value: z.string(),\n })\n .passthrough();\nexport type PropertyAssignment = z.infer<typeof PropertyAssignmentSchema>;\n\nexport const PropertyValueStatisticSchema = z\n .object({\n value: z.string(),\n successful_attack_count: z.number().int(),\n total_attack_count: z.number().int(),\n success_rate: z.number(),\n })\n .passthrough();\nexport type PropertyValueStatistic = z.infer<typeof PropertyValueStatisticSchema>;\n\nexport const PropertyStatisticSchema = z\n .object({\n property_name: z.string(),\n values: z.array(PropertyValueStatisticSchema),\n })\n .passthrough();\nexport type PropertyStatistic = z.infer<typeof PropertyStatisticSchema>;\n\nexport const PromptSetSummarySchema = z\n .object({\n prompt_set_id: z.string(),\n prompt_set_name: z.string(),\n total_prompts: z.number().int(),\n total_attacks: z.number().int(),\n total_threats: z.number().int(),\n failed_attacks: z.number().int(),\n threat_rate: z.number(),\n property_names: z.array(z.string()).optional(),\n property_statistics: z.array(PropertyStatisticSchema).optional(),\n })\n .passthrough();\nexport type PromptSetSummary = z.infer<typeof PromptSetSummarySchema>;\n\nexport const CustomAttackReportResponseSchema = z\n .object({\n total_prompts: z.number().int(),\n total_attacks: z.number().int(),\n total_threats: z.number().int(),\n failed_attacks: z.number().int(),\n score: z.number(),\n asr: z.number(),\n custom_attack_reports: z.array(PromptSetSummarySchema).optional(),\n property_statistics: z.array(PropertyStatisticSchema).optional(),\n })\n .passthrough();\nexport type CustomAttackReportResponse = z.infer<typeof CustomAttackReportResponseSchema>;\n\nexport const PromptSetsReportResponseSchema = z\n .object({\n prompt_sets: z.array(PromptSetSummarySchema),\n total_prompt_sets: z.number().int(),\n applied_filters: z.record(z.unknown()).optional(),\n })\n .passthrough();\nexport type PromptSetsReportResponse = z.infer<typeof PromptSetsReportResponseSchema>;\n\nexport const PromptDetailResponseSchema = z\n .object({\n prompt_id: z.string(),\n prompt_text: z.string(),\n goal: z.string().nullable().optional(),\n user_defined_goal: z.boolean().optional(),\n properties: z.array(PropertyAssignmentSchema).optional(),\n attack_id: z.string().nullable().optional(),\n threat: z.boolean().nullable().optional(),\n attack_outputs: z.array(CustomAttackOutputSchema).optional(),\n asr: z.number().nullable().optional(),\n prompt_set_id: z.string().nullable().optional(),\n prompt_set_name: z.string().nullable().optional(),\n })\n .passthrough();\nexport type PromptDetailResponse = z.infer<typeof PromptDetailResponseSchema>;\n\nexport const CustomAttacksListResponseSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(z.unknown()),\n total_attacks: z.number().int(),\n total_threats: z.number().int(),\n })\n .passthrough();\nexport type CustomAttacksListResponse = z.infer<typeof CustomAttacksListResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Dashboard schemas\n// ---------------------------------------------------------------------------\n\nexport const RiskLevelSchema = z\n .object({\n risk_rating: z.string(),\n total: z.number().int(),\n targets_by_type: z.array(CountByNameSchema).optional(),\n })\n .passthrough();\nexport type RiskLevel = z.infer<typeof RiskLevelSchema>;\n\nexport const ScanStatisticsResponseSchema = z\n .object({\n total_scans: z.number().int(),\n targets_scanned: z.number().int(),\n targets_scanned_by_type: z.array(CountByNameSchema).optional(),\n scan_status: z.array(CountByNameSchema).optional(),\n risk_profile: z.array(RiskLevelSchema).optional(),\n })\n .passthrough();\nexport type ScanStatisticsResponse = z.infer<typeof ScanStatisticsResponseSchema>;\n\nexport const ScoreTrendSeriesSchema = z\n .object({\n label: z.string(),\n data: z.array(z.number().nullable()),\n })\n .passthrough();\nexport type ScoreTrendSeries = z.infer<typeof ScoreTrendSeriesSchema>;\n\nexport const ScoreTrendResponseSchema = z\n .object({\n labels: z.array(z.string()),\n series: z.array(ScoreTrendSeriesSchema),\n })\n .passthrough();\nexport type ScoreTrendResponse = z.infer<typeof ScoreTrendResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// DataPlane — Sentiment, Quota, Error Log schemas\n// ---------------------------------------------------------------------------\n\nexport const SentimentRequestSchema = z\n .object({\n job_id: z.string(),\n up_vote: z.boolean().optional(),\n down_vote: z.boolean().optional(),\n })\n .passthrough();\nexport type SentimentRequest = z.infer<typeof SentimentRequestSchema>;\n\nexport const SentimentResponseSchema = z\n .object({\n job_id: z.string(),\n up_vote: z.boolean().optional(),\n down_vote: z.boolean().optional(),\n })\n .passthrough();\nexport type SentimentResponse = z.infer<typeof SentimentResponseSchema>;\n\nexport const QuotaDetailsSchema = z\n .object({\n allocated: z.number().int(),\n unlimited: z.boolean(),\n consumed: z.number().int(),\n })\n .passthrough();\nexport type QuotaDetails = z.infer<typeof QuotaDetailsSchema>;\n\nexport const QuotaSummarySchema = z\n .object({\n static: QuotaDetailsSchema,\n dynamic: QuotaDetailsSchema,\n custom: QuotaDetailsSchema,\n })\n .passthrough();\nexport type QuotaSummary = z.infer<typeof QuotaSummarySchema>;\n\nexport const ErrorLogSchema = z\n .object({\n created_at: z.string(),\n updated_at: z.string(),\n job_id: z.string().nullable().optional(),\n target_id: z.string().nullable().optional(),\n target_version: z.number().int().nullable().optional(),\n attack_id: z.string().nullable().optional(),\n error_type: z.string().nullable().optional(),\n error_source: z.string().nullable().optional(),\n error_message: z.string().nullable().optional(),\n target_object: z.record(z.unknown()).nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n version: z.number().int().optional(),\n })\n .passthrough();\nexport type ErrorLog = z.infer<typeof ErrorLogSchema>;\n\nexport const ErrorLogListResponseSchema = z\n .object({ pagination: RedTeamPaginationSchema, data: z.array(ErrorLogSchema) })\n .passthrough();\nexport type ErrorLogListResponse = z.infer<typeof ErrorLogListResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Target schemas\n// ---------------------------------------------------------------------------\n\n/** Shared base fields for target create, update, and probe requests. */\nconst TargetRequestBaseFields = {\n name: z.string(),\n description: z.string().nullable().optional(),\n target_type: z.string().nullable().optional(),\n connection_type: z.string().nullable().optional(),\n api_endpoint_type: z.string().nullable().optional(),\n response_mode: z.string().nullable().optional(),\n connection_params: z\n .union([RestConnectionParamsSchema, StreamingConnectionParamsSchema])\n .nullable()\n .optional(),\n session_supported: z.boolean().optional(),\n target_metadata: TargetMetadataSchema.optional(),\n target_background: TargetBackgroundSchema.nullable().optional(),\n additional_context: TargetAdditionalContextSchema.nullable().optional(),\n extra_info: z.record(z.unknown()).nullable().optional(),\n network_broker_channel_uuid: z.string().nullable().optional(),\n} as const;\n\nexport const TargetCreateRequestSchema = z.object(TargetRequestBaseFields).strict();\nexport type TargetCreateRequest = z.infer<typeof TargetCreateRequestSchema>;\n\nexport const TargetUpdateRequestSchema = z.object(TargetRequestBaseFields).strict();\nexport type TargetUpdateRequest = z.infer<typeof TargetUpdateRequestSchema>;\n\nexport const TargetContextUpdateSchema = z\n .object({\n target_background: TargetBackgroundSchema.nullable().optional(),\n additional_context: TargetAdditionalContextSchema.nullable().optional(),\n })\n .passthrough();\nexport type TargetContextUpdate = z.infer<typeof TargetContextUpdateSchema>;\n\nexport const TargetResponseSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n name: z.string(),\n status: z.unknown(),\n active: z.boolean(),\n validated: z.boolean(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.unknown().optional(),\n target_type: z.unknown().optional(),\n connection_type: z.unknown().optional(),\n api_endpoint_type: z.unknown().optional(),\n response_mode: z.unknown().optional(),\n session_supported: z.boolean().optional(),\n extra_info: z.unknown().optional(),\n version: z.unknown().optional(),\n secret_version: z.unknown().optional(),\n created_by_user_id: z.unknown().optional(),\n updated_by_user_id: z.unknown().optional(),\n target_metadata: z.unknown().optional(),\n target_background: z.unknown().optional(),\n profiling_status: z.unknown().optional(),\n additional_context: z.unknown().optional(),\n auth_type: z.string().nullable().optional(),\n })\n .passthrough();\nexport type TargetResponse = z.infer<typeof TargetResponseSchema>;\n\nexport const TargetListItemSchema = z\n .object({\n uuid: z.string(),\n tsg_id: z.string(),\n name: z.string(),\n status: z.unknown(),\n active: z.boolean(),\n validated: z.boolean(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.unknown().optional(),\n target_type: z.unknown().optional(),\n connection_type: z.unknown().optional(),\n api_endpoint_type: z.unknown().optional(),\n response_mode: z.unknown().optional(),\n session_supported: z.boolean().optional(),\n extra_info: z.unknown().optional(),\n version: z.unknown().optional(),\n secret_version: z.unknown().optional(),\n created_by_user_id: z.unknown().optional(),\n updated_by_user_id: z.unknown().optional(),\n auth_type: z.string().nullable().optional(),\n })\n .passthrough();\nexport type TargetListItem = z.infer<typeof TargetListItemSchema>;\n\nexport const TargetListSchema = z\n .object({ pagination: RedTeamPaginationSchema, data: z.array(TargetListItemSchema).optional() })\n .passthrough();\nexport type TargetList = z.infer<typeof TargetListSchema>;\n\nexport const TargetProbeRequestSchema = z\n .object({\n ...TargetRequestBaseFields,\n uuid: z.string().nullable().optional(),\n probe_fields: z.array(z.string()).nullable().optional(),\n })\n .strict();\nexport type TargetProbeRequest = z.infer<typeof TargetProbeRequestSchema>;\n\nexport const TargetAuthValidationRequestSchema = z\n .object({\n auth_type: z.string(),\n auth_config: z.unknown(),\n target_id: z.string().nullable().optional(),\n network_broker_channel_uuid: z.string().nullable().optional(),\n })\n .passthrough();\nexport type TargetAuthValidationRequest = z.infer<typeof TargetAuthValidationRequestSchema>;\n\nexport const TargetAuthValidationResponseSchema = z\n .object({\n validated: z.boolean(),\n token_preview: z.string().nullable().optional(),\n expires_in: z.number().int().nullable().optional(),\n })\n .passthrough();\nexport type TargetAuthValidationResponse = z.infer<typeof TargetAuthValidationResponseSchema>;\n\nexport const TargetProfileResponseSchema = z\n .object({\n target_id: z.string(),\n target_version: z.number().int(),\n status: z.string(),\n profiling_status: z.unknown().optional(),\n target_background: z.unknown().optional(),\n additional_context: z.unknown().optional(),\n ai_generated_fields: z.unknown().optional(),\n other_details: z.unknown().optional(),\n })\n .passthrough();\nexport type TargetProfileResponse = z.infer<typeof TargetProfileResponseSchema>;\n\nexport const TargetTemplateCollectionSchema = z\n .object({\n OPENAI: z.record(z.unknown()),\n HUGGING_FACE: z.record(z.unknown()),\n DATABRICKS: z.record(z.unknown()),\n BEDROCK: z.record(z.unknown()),\n REST: z.record(z.unknown()),\n STREAMING: z.record(z.unknown()),\n WEBSOCKET: z.record(z.unknown()),\n })\n .passthrough();\nexport type TargetTemplateCollection = z.infer<typeof TargetTemplateCollectionSchema>;\n\nexport const BaseResponseSchema = z\n .object({\n message: z.string(),\n status: z.number().int(),\n })\n .passthrough();\nexport type BaseResponse = z.infer<typeof BaseResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Custom attack / prompt set schemas\n// ---------------------------------------------------------------------------\n\nexport const PromptSetStatsSchema = z\n .object({\n total_prompts: z.number().int(),\n active_prompts: z.number().int(),\n inactive_prompts: z.number().int(),\n failed_prompts: z.number().int().optional(),\n validation_prompts: z.number().int().optional(),\n })\n .passthrough();\nexport type PromptSetStats = z.infer<typeof PromptSetStatsSchema>;\n\nexport const CustomPromptSetCreateRequestSchema = z\n .object({\n name: z.string(),\n description: z.unknown().optional(),\n property_names: z.array(z.string()).optional(),\n })\n .passthrough();\nexport type CustomPromptSetCreateRequest = z.infer<typeof CustomPromptSetCreateRequestSchema>;\n\nexport const CustomPromptSetUpdateRequestSchema = z\n .object({\n name: z.unknown().optional(),\n description: z.unknown().optional(),\n archive: z.unknown().optional(),\n property_names: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptSetUpdateRequest = z.infer<typeof CustomPromptSetUpdateRequestSchema>;\n\nexport const CustomPromptSetArchiveRequestSchema = z.object({ archive: z.boolean() }).passthrough();\nexport type CustomPromptSetArchiveRequest = z.infer<typeof CustomPromptSetArchiveRequestSchema>;\n\nexport const CustomPromptSetResponseSchema = z\n .object({\n uuid: z.string(),\n name: z.string(),\n active: z.boolean(),\n archive: z.boolean(),\n status: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.unknown().optional(),\n property_names: z.array(z.string()).optional(),\n properties: z.array(z.unknown()).optional(),\n stats: z.unknown().optional(),\n extra_info: z.unknown().optional(),\n version: z.unknown().optional(),\n created_by_user_id: z.unknown().optional(),\n updated_by_user_id: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptSetResponse = z.infer<typeof CustomPromptSetResponseSchema>;\n\nexport const CustomPromptSetListItemSchema = z\n .object({\n uuid: z.string(),\n name: z.string(),\n active: z.boolean(),\n archive: z.boolean(),\n status: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n description: z.unknown().optional(),\n property_names: z.array(z.string()).optional(),\n stats: z.unknown().optional(),\n created_by_user_id: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptSetListItem = z.infer<typeof CustomPromptSetListItemSchema>;\n\nexport const CustomPromptSetListSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(CustomPromptSetListItemSchema).optional(),\n })\n .passthrough();\nexport type CustomPromptSetList = z.infer<typeof CustomPromptSetListSchema>;\n\nexport const CustomPromptSetReferenceSchema = z\n .object({\n uuid: z.string(),\n name: z.string(),\n status: z.string(),\n active: z.boolean(),\n tsg_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n version: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptSetReference = z.infer<typeof CustomPromptSetReferenceSchema>;\n\nexport const CustomPromptSetListActiveSchema = z\n .object({ data: z.array(CustomPromptSetReferenceSchema).optional() })\n .passthrough();\nexport type CustomPromptSetListActive = z.infer<typeof CustomPromptSetListActiveSchema>;\n\nexport const CustomPromptSetVersionInfoSchema = z\n .object({\n uuid: z.string(),\n status: z.string(),\n is_latest: z.boolean(),\n version: z.string().nullable().optional(),\n stats: PromptSetStatsSchema.nullable().optional(),\n snapshot_created_at: z.string().nullable().optional(),\n })\n .passthrough();\nexport type CustomPromptSetVersionInfo = z.infer<typeof CustomPromptSetVersionInfoSchema>;\n\nexport const CustomPromptCreateRequestSchema = z\n .object({\n prompt: z.string(),\n prompt_set_id: z.string(),\n goal: z.unknown().optional(),\n properties: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptCreateRequest = z.infer<typeof CustomPromptCreateRequestSchema>;\n\nexport const CustomPromptUpdateRequestSchema = z\n .object({\n prompt: z.unknown().optional(),\n goal: z.unknown().optional(),\n properties: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptUpdateRequest = z.infer<typeof CustomPromptUpdateRequestSchema>;\n\nexport const CustomPromptResponseSchema = z\n .object({\n uuid: z.string(),\n prompt: z.string(),\n user_defined_goal: z.boolean(),\n status: z.string(),\n active: z.boolean(),\n prompt_set_id: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n goal: z.unknown().optional(),\n properties: z.unknown().optional(),\n property_assignments: z.array(z.unknown()).optional(),\n detector_category: z.unknown().optional(),\n severity: z.unknown().optional(),\n extra_info: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptResponse = z.infer<typeof CustomPromptResponseSchema>;\n\nexport const CustomPromptListItemSchema = z\n .object({\n uuid: z.string(),\n prompt: z.string(),\n user_defined_goal: z.boolean(),\n status: z.string(),\n active: z.boolean(),\n created_at: z.string(),\n updated_at: z.string(),\n goal: z.unknown().optional(),\n properties: z.unknown().optional(),\n })\n .passthrough();\nexport type CustomPromptListItem = z.infer<typeof CustomPromptListItemSchema>;\n\nexport const CustomPromptListSchema = z\n .object({\n pagination: RedTeamPaginationSchema,\n data: z.array(CustomPromptListItemSchema).optional(),\n })\n .passthrough();\nexport type CustomPromptList = z.infer<typeof CustomPromptListSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Property schemas\n// ---------------------------------------------------------------------------\n\nexport const PropertyNameCreateRequestSchema = z.object({ name: z.string() }).passthrough();\nexport type PropertyNameCreateRequest = z.infer<typeof PropertyNameCreateRequestSchema>;\n\nexport const PropertyValueCreateRequestSchema = z\n .object({\n property_name: z.string(),\n property_value: z.string(),\n })\n .passthrough();\nexport type PropertyValueCreateRequest = z.infer<typeof PropertyValueCreateRequestSchema>;\n\nexport const PropertyDefinitionSchema = z\n .object({\n property_name: z.string(),\n created_at: z.string(),\n })\n .passthrough();\nexport type PropertyDefinition = z.infer<typeof PropertyDefinitionSchema>;\n\nexport const PropertyNamesListResponseSchema = z\n .object({ data: z.array(z.string()).optional() })\n .passthrough();\nexport type PropertyNamesListResponse = z.infer<typeof PropertyNamesListResponseSchema>;\n\nexport const PropertyValuesResponseSchema = z\n .object({\n name: z.string(),\n values: z.array(z.string()).optional(),\n })\n .passthrough();\nexport type PropertyValuesResponse = z.infer<typeof PropertyValuesResponseSchema>;\n\nexport const PropertyValuesMultipleResponseSchema = z\n .object({ data: z.record(z.array(z.string())).optional() })\n .passthrough();\nexport type PropertyValuesMultipleResponse = z.infer<typeof PropertyValuesMultipleResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Dashboard schemas\n// ---------------------------------------------------------------------------\n\nexport const DashboardOverviewResponseSchema = z\n .object({\n total_targets: z.number().int(),\n targets_by_type: z.array(CountByNameSchema).optional(),\n })\n .passthrough();\nexport type DashboardOverviewResponse = z.infer<typeof DashboardOverviewResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — EULA schemas\n// ---------------------------------------------------------------------------\n\nexport const EulaAcceptRequestSchema = z\n .object({\n eula_content: z.string(),\n accepted_at: z.string().nullable().optional(),\n })\n .passthrough();\nexport type EulaAcceptRequest = z.infer<typeof EulaAcceptRequestSchema>;\n\nexport const EulaContentResponseSchema = z\n .object({\n content: z.string(),\n })\n .passthrough();\nexport type EulaContentResponse = z.infer<typeof EulaContentResponseSchema>;\n\nexport const EulaResponseSchema = z\n .object({\n uuid: z.string().nullable().optional(),\n is_accepted: z.boolean(),\n accepted_at: z.string().nullable().optional(),\n accepted_by_user_id: z.string().nullable().optional(),\n })\n .passthrough();\nexport type EulaResponse = z.infer<typeof EulaResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Management — Instance/Licensing schemas\n// ---------------------------------------------------------------------------\n\nexport const DeviceInstanceSchema = z\n .object({\n app_id: z.string(),\n region: z.string(),\n tenant_id: z.string(),\n tsg_id: z.string(),\n })\n .passthrough();\nexport type DeviceInstance = z.infer<typeof DeviceInstanceSchema>;\n\nexport const DeviceLicenseSchema = z\n .object({\n authorizationCode: z.string().optional(),\n expirationDate: z.string().optional(),\n licensePanDbIdentification: z.string().optional(),\n partNumber: z.string().optional(),\n serialNumber: z.string().optional(),\n subtypeName: z.string().optional(),\n registrationDate: z.string().optional(),\n })\n .passthrough();\nexport type DeviceLicense = z.infer<typeof DeviceLicenseSchema>;\n\nexport const DeviceSchema = z\n .object({\n serial_number: z.string(),\n model: z.string().optional(),\n sku: z.string().optional(),\n device_type: z.string().optional(),\n device_name: z.string().optional(),\n tsg_id: z.string().optional(),\n support_account_id: z.string().optional(),\n asset_type: z.string().optional(),\n licenses: z.array(DeviceLicenseSchema).optional(),\n })\n .passthrough();\nexport type Device = z.infer<typeof DeviceSchema>;\n\nexport const DeviceStatusSchema = z\n .object({\n status: z.string(),\n error: z.string().optional(),\n serial_number: z.string().optional(),\n })\n .passthrough();\nexport type DeviceStatus = z.infer<typeof DeviceStatusSchema>;\n\nexport const DeviceRequestSchema = z\n .object({\n instance: DeviceInstanceSchema,\n created_by: z.string().optional(),\n devices: z.array(DeviceSchema).optional(),\n })\n .passthrough();\nexport type DeviceRequest = z.infer<typeof DeviceRequestSchema>;\n\nexport const DeviceResponseSchema = z\n .object({\n devices: z.array(DeviceStatusSchema).optional(),\n status: z.string().optional(),\n })\n .passthrough();\nexport type DeviceResponse = z.infer<typeof DeviceResponseSchema>;\n\nexport const DeploymentProfileAttributeSchema = z\n .object({\n quantity: z.number().optional(),\n unit_of_measure: z.string().optional(),\n })\n .passthrough();\nexport type DeploymentProfileAttribute = z.infer<typeof DeploymentProfileAttributeSchema>;\n\nexport const DeploymentProfileRequestSchema = z\n .object({\n dAuthCode: z.string().optional(),\n deploymentProfileId: z.string().optional(),\n license_expiration: z.string().optional(),\n profileName: z.string().optional(),\n subType: z.string().optional(),\n subscriptions: z.string().optional(),\n type: z.string().optional(),\n aveTextRecord: z.number().default(0),\n attributes: z.array(DeploymentProfileAttributeSchema).optional(),\n })\n .passthrough();\nexport type DeploymentProfileRequest = z.infer<typeof DeploymentProfileRequestSchema>;\n\nexport const InstanceExtraDetailsSchema = z\n .object({\n deployment_profiles: z.array(DeploymentProfileRequestSchema).optional(),\n airs_shared_by_tsg: z.string().optional(),\n airs_unshared_dps: z.string().optional(),\n })\n .passthrough();\nexport type InstanceExtraDetails = z.infer<typeof InstanceExtraDetailsSchema>;\n\nexport const InstanceRequestSchema = z\n .object({\n tsg_id: z.string(),\n tenant_id: z.string(),\n app_id: z.string(),\n region: z.string(),\n support_account_id: z.string().optional(),\n support_account_name: z.string().optional(),\n created_by: z.string().optional(),\n internal: z.boolean().optional(),\n tenant_instance_name: z.string().optional(),\n extra: InstanceExtraDetailsSchema.optional(),\n iam_controlled: z.boolean().optional(),\n platform_region: z.string().optional(),\n csp_tenant_id: z.string().optional(),\n tsg_instances: z.unknown().optional(),\n })\n .passthrough();\nexport type InstanceRequest = z.infer<typeof InstanceRequestSchema>;\n\nexport const InstanceResponseSchema = z\n .object({\n tsg_id: z.string(),\n tenant_id: z.string().optional(),\n app_id: z.string().optional(),\n is_success: z.boolean().optional(),\n })\n .passthrough();\nexport type InstanceResponse = z.infer<typeof InstanceResponseSchema>;\n\nexport const InstanceGetResponseSchema = z\n .object({\n tsg_id: z.string(),\n tenant_id: z.string(),\n app_id: z.string(),\n region: z.string(),\n support_account_id: z.string().optional(),\n support_account_name: z.string().optional(),\n created_by: z.string().optional(),\n internal: z.boolean().optional(),\n tenant_instance_name: z.string().optional(),\n deployment_profiles: z.array(DeploymentProfileRequestSchema).optional(),\n })\n .passthrough();\nexport type InstanceGetResponse = z.infer<typeof InstanceGetResponseSchema>;\n\nexport const RegistryCredentialsSchema = z\n .object({\n token: z.string(),\n expiry: z.string(),\n })\n .passthrough();\nexport type RegistryCredentials = z.infer<typeof RegistryCredentialsSchema>;\n","import type { OAuthClient } from '../../management/oauth-client.js';\nimport type { AuthAdapter, PreparedRequest } from '../types.js';\n\n/**\n * @internal\n * Auth adapter that attaches an OAuth2 bearer token via {@link OAuthClient} and clears the cached\n * token on 401/403 to force a refresh on the free-retry attempt.\n */\nexport class OAuthAuth implements AuthAdapter {\n constructor(private readonly oauthClient: OAuthClient) {}\n\n async prepare(req: PreparedRequest): Promise<PreparedRequest> {\n const token = await this.oauthClient.getToken();\n return {\n ...req,\n headers: { ...req.headers, Authorization: `Bearer ${token}` },\n };\n }\n\n async onUnauthorized(res: Response): Promise<boolean> {\n if (res.status === 401 || res.status === 403) {\n this.oauthClient.clearToken();\n return true;\n }\n return false;\n }\n}\n","import { z } from 'zod';\n\n/** @internal Zod schema for an OAuth2 token response. */\nexport const OAuthTokenResponseSchema = z\n .object({\n access_token: z.string(),\n token_type: z.string().optional(),\n expires_in: z.number(),\n scope: z.string().optional(),\n })\n .passthrough();\n\n/** @internal OAuth2 token response with access token and expiry. */\nexport type OAuthTokenResponse = z.infer<typeof OAuthTokenResponseSchema>;\n","import { DEFAULT_TOKEN_ENDPOINT } from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { OAuthTokenResponseSchema } from '../models/oauth-token.js';\n\n/** Snapshot of the current token state (never exposes the actual token). */\nexport interface TokenInfo {\n /** Whether a token has been fetched. */\n hasToken: boolean;\n /** Whether the token is valid (not expired and outside the pre-expiry buffer). */\n isValid: boolean;\n /** Whether the token has passed its expiry time. */\n isExpired: boolean;\n /** Whether the token is within the pre-expiry buffer window. */\n isExpiringSoon: boolean;\n /** Milliseconds until the token expires (0 if expired or no token). */\n expiresInMs: number;\n /** Unix timestamp (ms) when the token expires (0 if no token). */\n expiresAt: number;\n}\n\n/** Options for constructing an {@link OAuthClient}. */\nexport interface OAuthClientOptions {\n /** OAuth2 client ID. */\n clientId: string;\n /** OAuth2 client secret. */\n clientSecret: string;\n /** Tenant Service Group ID. */\n tsgId: string;\n /** OAuth2 token endpoint URL. Defaults to Palo Alto Networks auth endpoint. */\n tokenEndpoint?: string;\n /** Pre-expiry buffer in ms. Token refreshes this many ms before expiry. Defaults to 30000 (30s). */\n tokenBufferMs?: number;\n /** Callback invoked after each successful token refresh with current {@link TokenInfo}. */\n onTokenRefresh?: (info: TokenInfo) => void;\n}\n\nconst DEFAULT_TOKEN_BUFFER_MS = 30_000; // refresh 30s before expiry\n\n/**\n * OAuth2 client_credentials token manager.\n * Caches tokens, refreshes before expiry, and deduplicates concurrent requests.\n */\nexport class OAuthClient {\n public readonly tokenEndpoint: string;\n private readonly clientId: string;\n private readonly clientSecret: string;\n private readonly tsgId: string;\n private readonly tokenBufferMs: number;\n private readonly onTokenRefresh?: (info: TokenInfo) => void;\n\n private accessToken: string | null = null;\n private expiresAt = 0;\n private pendingFetch: Promise<string> | null = null;\n\n constructor(opts: OAuthClientOptions) {\n this.clientId = opts.clientId;\n this.clientSecret = opts.clientSecret;\n this.tsgId = opts.tsgId;\n this.tokenEndpoint = opts.tokenEndpoint ?? DEFAULT_TOKEN_ENDPOINT;\n this.tokenBufferMs = opts.tokenBufferMs ?? DEFAULT_TOKEN_BUFFER_MS;\n this.onTokenRefresh = opts.onTokenRefresh;\n }\n\n /**\n * Get a valid access token, refreshing if needed.\n * @returns Bearer access token string.\n */\n async getToken(): Promise<string> {\n if (this.accessToken && Date.now() < this.expiresAt - this.tokenBufferMs) {\n return this.accessToken;\n }\n\n if (this.pendingFetch) {\n return this.pendingFetch;\n }\n\n this.pendingFetch = this.fetchToken().finally(() => {\n this.pendingFetch = null;\n });\n\n return this.pendingFetch;\n }\n\n /**\n * Clear the cached token, forcing a fresh fetch on next call.\n */\n clearToken(): void {\n this.accessToken = null;\n this.expiresAt = 0;\n }\n\n /**\n * Check if the current token has passed its expiry time. Returns true if no token exists.\n * @returns Whether the token is expired.\n */\n isTokenExpired(): boolean {\n if (!this.accessToken) return true;\n return Date.now() >= this.expiresAt;\n }\n\n /**\n * Check if the token is within the pre-expiry buffer window.\n * Returns true if no token exists.\n * @param bufferMs - Custom buffer in ms. Defaults to the configured `tokenBufferMs`.\n * @returns Whether the token is expiring soon.\n */\n isTokenExpiringSoon(bufferMs?: number): boolean {\n if (!this.accessToken) return true;\n const buffer = bufferMs ?? this.tokenBufferMs;\n return Date.now() >= this.expiresAt - buffer;\n }\n\n /**\n * Get a snapshot of the current token state without exposing the actual token value.\n * @returns Current {@link TokenInfo}.\n */\n getTokenInfo(): TokenInfo {\n const now = Date.now();\n const hasToken = this.accessToken !== null;\n const isExpired = !hasToken || now >= this.expiresAt;\n const isExpiringSoon = !hasToken || now >= this.expiresAt - this.tokenBufferMs;\n const expiresInMs = hasToken ? Math.max(0, this.expiresAt - now) : 0;\n return {\n hasToken,\n isValid: hasToken && !isExpiringSoon,\n isExpired,\n isExpiringSoon,\n expiresInMs,\n expiresAt: hasToken ? this.expiresAt : 0,\n };\n }\n\n private async fetchToken(): Promise<string> {\n const credentials = btoa(`${this.clientId}:${this.clientSecret}`);\n const body = new URLSearchParams({\n grant_type: 'client_credentials',\n scope: `tsg_id:${this.tsgId}`,\n });\n\n let response: Response;\n try {\n response = await fetch(this.tokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Authorization: `Basic ${credentials}`,\n },\n body: body.toString(),\n });\n } catch (err) {\n throw new AISecSDKException(\n `Token request failed: ${(err as Error).message}`,\n ErrorType.OAUTH_ERROR,\n );\n }\n\n if (!response.ok) {\n let errorMsg: string;\n try {\n const errorBody = (await response.json()) as Record<string, unknown>;\n errorMsg =\n (errorBody.error_description as string) ??\n (errorBody.error as string) ??\n `Token request failed with status ${response.status}`;\n } catch {\n errorMsg = `Token request failed with status ${response.status}`;\n }\n throw new AISecSDKException(errorMsg, ErrorType.OAUTH_ERROR);\n }\n\n const data = OAuthTokenResponseSchema.parse(await response.json());\n this.accessToken = data.access_token;\n this.expiresAt = Date.now() + data.expires_in * 1000;\n\n if (this.onTokenRefresh) {\n try {\n this.onTokenRefresh(this.getTokenInfo());\n } catch {\n // Don't let callback errors block token delivery\n }\n }\n\n return this.accessToken;\n }\n}\n","import { OAuthClient } from './management/oauth-client.js';\nimport { AISecSDKException, ErrorType } from './errors.js';\nimport { MAX_NUMBER_OF_RETRIES } from './constants.js';\nimport type { TokenInfo } from './management/oauth-client.js';\n\n/** Resolved OAuth service configuration returned by {@link resolveOAuthConfig}. */\nexport interface OAuthServiceConfig {\n /** Resolved API base URL. */\n baseUrl: string;\n /** Configured OAuth2 token manager. */\n oauthClient: OAuthClient;\n /** Clamped retry count. */\n numRetries: number;\n /** Resolved Tenant Service Group ID. */\n tsgId: string;\n}\n\n/** Options for {@link resolveOAuthConfig}. */\nexport interface ResolveOAuthConfigOptions {\n clientId?: string;\n clientSecret?: string;\n tsgId?: string;\n baseUrl: string;\n numRetries?: number;\n tokenEndpoint?: string;\n tokenBufferMs?: number;\n onTokenRefresh?: (info: TokenInfo) => void;\n /** Primary env var prefix, e.g. `'PANW_RED_TEAM'`. */\n primaryEnvPrefix: string;\n /** Optional fallback prefix (typically `'PANW_MGMT'`). */\n fallbackEnvPrefix?: string;\n}\n\n/**\n * Resolve OAuth2 credentials from options → primary env vars → fallback env vars,\n * validate presence, clamp retries, and create an {@link OAuthClient}.\n *\n * @param opts - Resolution options.\n * @returns Resolved config with baseUrl, oauthClient, and numRetries.\n * @throws {AISecSDKException} When required credentials are missing.\n * @internal\n */\nexport function resolveOAuthConfig(opts: ResolveOAuthConfigOptions): OAuthServiceConfig {\n const { primaryEnvPrefix, fallbackEnvPrefix } = opts;\n\n const clientId =\n opts.clientId ??\n process.env[`${primaryEnvPrefix}_CLIENT_ID`] ??\n (fallbackEnvPrefix ? process.env[`${fallbackEnvPrefix}_CLIENT_ID`] : undefined);\n\n const clientSecret =\n opts.clientSecret ??\n process.env[`${primaryEnvPrefix}_CLIENT_SECRET`] ??\n (fallbackEnvPrefix ? process.env[`${fallbackEnvPrefix}_CLIENT_SECRET`] : undefined);\n\n const tsgId =\n opts.tsgId ??\n process.env[`${primaryEnvPrefix}_TSG_ID`] ??\n (fallbackEnvPrefix ? process.env[`${fallbackEnvPrefix}_TSG_ID`] : undefined);\n\n const tokenEndpoint =\n opts.tokenEndpoint ??\n process.env[`${primaryEnvPrefix}_TOKEN_ENDPOINT`] ??\n (fallbackEnvPrefix ? process.env[`${fallbackEnvPrefix}_TOKEN_ENDPOINT`] : undefined);\n\n const numRetries = Math.min(\n Math.max(opts.numRetries ?? MAX_NUMBER_OF_RETRIES, 0),\n MAX_NUMBER_OF_RETRIES,\n );\n\n const envHint = fallbackEnvPrefix\n ? `${primaryEnvPrefix}_CLIENT_ID / ${fallbackEnvPrefix}_CLIENT_ID`\n : `${primaryEnvPrefix}_CLIENT_ID`;\n\n if (!clientId) {\n throw new AISecSDKException(\n `clientId is required (option or ${envHint} env var)`,\n ErrorType.MISSING_VARIABLE,\n );\n }\n\n const secretHint = fallbackEnvPrefix\n ? `${primaryEnvPrefix}_CLIENT_SECRET / ${fallbackEnvPrefix}_CLIENT_SECRET`\n : `${primaryEnvPrefix}_CLIENT_SECRET`;\n\n if (!clientSecret) {\n throw new AISecSDKException(\n `clientSecret is required (option or ${secretHint} env var)`,\n ErrorType.MISSING_VARIABLE,\n );\n }\n\n const tsgHint = fallbackEnvPrefix\n ? `${primaryEnvPrefix}_TSG_ID / ${fallbackEnvPrefix}_TSG_ID`\n : `${primaryEnvPrefix}_TSG_ID`;\n\n if (!tsgId) {\n throw new AISecSDKException(\n `tsgId is required (option or ${tsgHint} env var)`,\n ErrorType.MISSING_VARIABLE,\n );\n }\n\n const oauthClient = new OAuthClient({\n clientId,\n clientSecret,\n tsgId,\n tokenEndpoint,\n tokenBufferMs: opts.tokenBufferMs,\n onTokenRefresh: opts.onTokenRefresh,\n });\n\n return { baseUrl: opts.baseUrl, oauthClient, numRetries, tsgId };\n}\n","import { AISecSDKException, ErrorType } from './errors.js';\nimport { isValidUuid } from './utils.js';\n\n/**\n * @internal\n * Throw `AISecSDKException(USER_REQUEST_PAYLOAD_ERROR)` if `value` is not a valid RFC 4122 UUID.\n */\nexport function assertUuid(value: string, fieldName: string): void {\n if (!isValidUuid(value)) {\n throw new AISecSDKException(\n `Invalid ${fieldName}: ${value}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n}\n\n/**\n * @internal\n * Throw `AISecSDKException(USER_REQUEST_PAYLOAD_ERROR)` if `value.length` is outside `[min, max]`.\n */\nexport function assertLength(value: string, min: number, max: number, fieldName: string): void {\n const len = value.length;\n if (len < min || len > max) {\n throw new AISecSDKException(\n `Invalid ${fieldName}: length ${len} not in [${min}, ${max}]`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n}\n","import { MGMT_PROFILE_PATH, MGMT_PROFILES_TSG_PATH } from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { assertUuid } from '../validators.js';\nimport {\n SecurityProfileSchema,\n SecurityProfileListResponseSchema,\n DeleteProfileResponseSchema,\n type SecurityProfile,\n type CreateSecurityProfileRequest,\n type SecurityProfileListResponse,\n type DeleteProfileResponse,\n} from '../models/mgmt-security-profile.js';\n\n/** Pagination parameters for list operations. */\nexport interface PaginationOptions {\n /** Starting offset. Defaults to 0. */\n offset?: number;\n /** Max items to return. Defaults to 100. */\n limit?: number;\n}\n\n/** @internal */\nexport interface ProfilesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n tsgId: string;\n numRetries: number;\n}\n\n/** Client for AIRS security profile CRUD operations. */\nexport class ProfilesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly tsgId: string;\n private readonly numRetries: number;\n\n constructor(opts: ProfilesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.tsgId = opts.tsgId;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new security profile.\n * @param body - Profile configuration.\n * @returns The created security profile.\n */\n async create(body: CreateSecurityProfileRequest): Promise<SecurityProfile> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_PROFILE_PATH,\n body,\n responseSchema: SecurityProfileSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List security profiles for the TSG.\n * @param opts - Pagination options.\n * @returns Paginated list of security profiles.\n */\n async list(opts?: PaginationOptions): Promise<SecurityProfileListResponse> {\n const params: Record<string, string> = {\n offset: String(opts?.offset ?? 0),\n limit: String(opts?.limit ?? 100),\n };\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MGMT_PROFILES_TSG_PATH}/${this.tsgId}`,\n params,\n responseSchema: SecurityProfileListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a security profile by UUID.\n * Fetches all profiles and filters — no dedicated API endpoint exists.\n * @param profileId - UUID of the profile to retrieve.\n * @returns The matching security profile.\n */\n async get(profileId: string): Promise<SecurityProfile> {\n const { ai_profiles } = await this.list();\n const profile = ai_profiles.find((p) => p.profile_id === profileId);\n if (!profile) {\n throw new AISecSDKException(\n `Profile not found: ${profileId}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n return profile;\n }\n\n /**\n * Get a security profile by name.\n * Returns the highest-revision match (latest version).\n * @param profileName - Name of the profile to retrieve.\n * @returns The matching security profile with the highest revision.\n */\n async getByName(profileName: string): Promise<SecurityProfile> {\n const { ai_profiles } = await this.list();\n const matches = ai_profiles.filter((p) => p.profile_name === profileName);\n if (matches.length === 0) {\n throw new AISecSDKException(\n `Profile not found: ${profileName}`,\n ErrorType.USER_REQUEST_PAYLOAD_ERROR,\n );\n }\n return matches.reduce((best, p) => ((p.revision ?? 0) > (best.revision ?? 0) ? p : best));\n }\n\n /**\n * Update an existing security profile.\n * @param profileId - UUID of the profile to update.\n * @param body - Updated profile configuration.\n * @returns The updated security profile.\n */\n async update(profileId: string, body: CreateSecurityProfileRequest): Promise<SecurityProfile> {\n assertUuid(profileId, 'profile_id');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MGMT_PROFILE_PATH}/uuid/${profileId}`,\n body,\n responseSchema: SecurityProfileSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a security profile.\n * @param profileId - UUID of the profile to delete.\n * @returns Deletion confirmation message.\n */\n async delete(profileId: string): Promise<DeleteProfileResponse> {\n assertUuid(profileId, 'profile_id');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_PROFILE_PATH}/${profileId}`,\n responseSchema: DeleteProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Force-delete a security profile, bypassing safety checks.\n * @param profileId - UUID of the profile to force-delete.\n * @param updatedBy - Email of the user performing the deletion.\n * @returns Deletion confirmation message.\n */\n async forceDelete(profileId: string, updatedBy: string): Promise<DeleteProfileResponse> {\n assertUuid(profileId, 'profile_id');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_PROFILE_PATH}/${profileId}/force`,\n params: { updated_by: updatedBy },\n responseSchema: DeleteProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_TOPIC_PATH, MGMT_TOPICS_TSG_PATH, MGMT_TOPIC_FORCE_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { assertUuid } from '../validators.js';\nimport {\n CustomTopicSchema,\n CustomTopicListResponseSchema,\n DeleteTopicResponseSchema,\n type CustomTopic,\n type CreateCustomTopicRequest,\n type CustomTopicListResponse,\n type DeleteTopicResponse,\n} from '../models/mgmt-custom-topic.js';\nimport type { PaginationOptions } from './profiles.js';\n\n/** @internal */\nexport interface TopicsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n tsgId: string;\n numRetries: number;\n}\n\n/** Client for AIRS custom topic CRUD operations. */\nexport class TopicsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly tsgId: string;\n private readonly numRetries: number;\n\n constructor(opts: TopicsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.tsgId = opts.tsgId;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new custom topic.\n * @param body - Topic definition with name, description, and examples.\n * @returns The created custom topic.\n */\n async create(body: CreateCustomTopicRequest): Promise<CustomTopic> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_TOPIC_PATH,\n body,\n responseSchema: CustomTopicSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List custom topics for the TSG.\n * @param opts - Pagination options.\n * @returns Paginated list of custom topics.\n */\n async list(opts?: PaginationOptions): Promise<CustomTopicListResponse> {\n const params: Record<string, string> = {\n offset: String(opts?.offset ?? 0),\n limit: String(opts?.limit ?? 100),\n };\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MGMT_TOPICS_TSG_PATH}/${this.tsgId}`,\n params,\n responseSchema: CustomTopicListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update an existing custom topic.\n * @param topicId - UUID of the topic to update.\n * @param body - Updated topic definition.\n * @returns The updated custom topic.\n */\n async update(topicId: string, body: CreateCustomTopicRequest): Promise<CustomTopic> {\n assertUuid(topicId, 'topic_id');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MGMT_TOPIC_PATH}/uuid/${topicId}`,\n body,\n responseSchema: CustomTopicSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a custom topic. Fails if topic is referenced by a profile.\n * @param topicId - UUID of the topic to delete.\n * @returns Deletion confirmation message.\n */\n async delete(topicId: string): Promise<DeleteTopicResponse> {\n assertUuid(topicId, 'topic_id');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_TOPIC_PATH}/${topicId}`,\n responseSchema: DeleteTopicResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Force-delete a custom topic, removing it from any referencing profiles.\n * @param topicId - UUID of the topic to force-delete.\n * @param updatedBy - Optional. Email of the user performing the deletion.\n * @returns Deletion confirmation message.\n */\n async forceDelete(topicId: string, updatedBy?: string): Promise<DeleteTopicResponse> {\n assertUuid(topicId, 'topic_id');\n const params: Record<string, string> | undefined = updatedBy\n ? { updated_by: updatedBy }\n : undefined;\n\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_TOPIC_FORCE_PATH}/${topicId}`,\n params,\n responseSchema: DeleteTopicResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_API_KEY_PATH, MGMT_API_KEYS_TSG_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport type { PaginationOptions } from './profiles.js';\nimport {\n ApiKeySchema,\n ApiKeyListResponseSchema,\n ApiKeyDeleteResponseSchema,\n type ApiKey,\n type ApiKeyCreateRequest,\n type ApiKeyRegenerateRequest,\n type ApiKeyListResponse,\n type ApiKeyDeleteResponse,\n} from '../models/mgmt-api-key.js';\n\n/** @internal */\nexport interface ApiKeysClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n tsgId: string;\n numRetries: number;\n}\n\n/** Client for AIRS API key management operations. */\nexport class ApiKeysClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly tsgId: string;\n private readonly numRetries: number;\n\n constructor(opts: ApiKeysClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.tsgId = opts.tsgId;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new API key.\n * @param body - API key creation request.\n * @returns The created API key.\n */\n async create(body: ApiKeyCreateRequest): Promise<ApiKey> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_API_KEY_PATH,\n body,\n responseSchema: ApiKeySchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List API keys for the TSG.\n * @param opts - Pagination options.\n * @returns Paginated list of API keys.\n */\n async list(opts?: PaginationOptions): Promise<ApiKeyListResponse> {\n const params: Record<string, string> = {\n offset: String(opts?.offset ?? 0),\n limit: String(opts?.limit ?? 100),\n };\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MGMT_API_KEYS_TSG_PATH}/${this.tsgId}`,\n params,\n responseSchema: ApiKeyListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete an API key by name.\n * @param apiKeyName - Name of the API key to delete.\n * @param updatedBy - Email of user performing the deletion.\n * @returns Deletion confirmation.\n */\n async delete(apiKeyName: string, updatedBy: string): Promise<ApiKeyDeleteResponse> {\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MGMT_API_KEY_PATH}/delete/${encodeURIComponent(apiKeyName)}`,\n params: { updated_by: updatedBy },\n responseSchema: ApiKeyDeleteResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Regenerate an API key.\n * @param apiKeyId - UUID of the API key to regenerate.\n * @param body - Regeneration request with rotation config.\n * @returns The regenerated API key.\n */\n async regenerate(apiKeyId: string, body: ApiKeyRegenerateRequest): Promise<ApiKey> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${MGMT_API_KEY_PATH}/regenerate/${encodeURIComponent(apiKeyId)}`,\n body,\n responseSchema: ApiKeySchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_CUSTOMER_APP_PATH, MGMT_CUSTOMER_APPS_TSG_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport type { PaginationOptions } from './profiles.js';\nimport {\n CustomerAppSchema,\n CustomerAppListResponseSchema,\n type CustomerApp,\n type CustomerAppListResponse,\n} from '../models/mgmt-customer-app.js';\n\n/** @internal */\nexport interface CustomerAppsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n tsgId: string;\n numRetries: number;\n}\n\n/** Client for AIRS customer application management operations. */\nexport class CustomerAppsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly tsgId: string;\n private readonly numRetries: number;\n\n constructor(opts: CustomerAppsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.tsgId = opts.tsgId;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Get a customer app by name.\n * @param appName - Name of the customer app.\n * @returns The customer app.\n */\n async get(appName: string): Promise<CustomerApp> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MGMT_CUSTOMER_APP_PATH,\n params: { app_name: appName },\n responseSchema: CustomerAppSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List customer apps for the TSG.\n * @param opts - Pagination options.\n * @returns Paginated list of customer apps.\n */\n async list(opts?: PaginationOptions): Promise<CustomerAppListResponse> {\n const params: Record<string, string> = {\n offset: String(opts?.offset ?? 0),\n limit: String(opts?.limit ?? 100),\n };\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MGMT_CUSTOMER_APPS_TSG_PATH}/${this.tsgId}`,\n params,\n responseSchema: CustomerAppListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a customer app.\n * @param customerAppId - UUID of the customer app to update.\n * @param request - Updated customer app data.\n * @returns The updated customer app.\n */\n async update(customerAppId: string, body: CustomerApp): Promise<CustomerApp> {\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: MGMT_CUSTOMER_APP_PATH,\n params: { customer_app_id: customerAppId },\n body,\n responseSchema: CustomerAppSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a customer app.\n * @param appName - Name of the customer app to delete.\n * @param updatedBy - Email of user performing the deletion.\n * @returns The deleted customer app.\n */\n async delete(appName: string, updatedBy: string): Promise<CustomerApp> {\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: MGMT_CUSTOMER_APP_PATH,\n params: { app_name: appName, updated_by: updatedBy },\n responseSchema: CustomerAppSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_DLP_PROFILES_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n DlpProfileListResponseSchema,\n type DlpProfileListResponse,\n} from '../models/mgmt-dlp-profile.js';\n\n/** @internal */\nexport interface DlpProfilesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for listing DLP profiles. */\nexport class DlpProfilesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: DlpProfilesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * List all DLP profiles for the TSG.\n * @returns List of DLP profiles.\n */\n async list(): Promise<DlpProfileListResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MGMT_DLP_PROFILES_PATH,\n responseSchema: DlpProfileListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_DEPLOYMENT_PROFILES_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n DeploymentProfilesResponseSchema,\n type DeploymentProfilesResponse,\n} from '../models/mgmt-deployment-profile.js';\n\n/** @internal */\nexport interface DeploymentProfilesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Options for listing deployment profiles. */\nexport interface DeploymentProfileListOptions {\n /** Include unactivated deployment profiles. */\n unactivated?: boolean;\n}\n\n/** Client for listing deployment profiles. */\nexport class DeploymentProfilesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: DeploymentProfilesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * List deployment profiles for the TSG.\n * @param opts - Optional filter options.\n * @returns Deployment profiles response.\n */\n async list(opts?: DeploymentProfileListOptions): Promise<DeploymentProfilesResponse> {\n const params: Record<string, string> = {};\n if (opts?.unactivated !== undefined) params.unactivated = String(opts.unactivated);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MGMT_DEPLOYMENT_PROFILES_PATH,\n params: Object.keys(params).length > 0 ? params : undefined,\n responseSchema: DeploymentProfilesResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MGMT_SCAN_LOGS_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { PaginatedScanResultsSchema, type PaginatedScanResults } from '../models/mgmt-scan-log.js';\n\n/** @internal */\nexport interface ScanLogsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Options for querying scan logs. */\nexport interface ScanLogQueryOptions {\n /** Time interval value. */\n time_interval: number;\n /** Time unit (e.g. 'hour', 'day'). */\n time_unit: string;\n /** Page number (1-based). */\n pageNumber: number;\n /** Number of records per page. */\n pageSize: number;\n /** Filter: 'all', 'benign', or 'threat'. */\n filter: string;\n /** Encrypted page token for pagination continuation. */\n page_token?: string;\n}\n\n/** Client for retrieving scan logs. */\nexport class ScanLogsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ScanLogsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Retrieve scan logs by time interval.\n * @param opts - Query options including time range, pagination, and filter.\n * @returns Paginated scan results.\n */\n async query(opts: ScanLogQueryOptions): Promise<PaginatedScanResults> {\n const params: Record<string, string> = {\n time_interval: String(opts.time_interval),\n time_unit: opts.time_unit,\n pageNumber: String(opts.pageNumber),\n pageSize: String(opts.pageSize),\n filter: opts.filter,\n };\n\n const body = opts.page_token ? { page_token: opts.page_token } : undefined;\n\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_SCAN_LOGS_PATH,\n params,\n body,\n responseSchema: PaginatedScanResultsSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport { MGMT_OAUTH_INVALIDATE_PATH, MGMT_OAUTH_TOKEN_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n Oauth2TokenSchema,\n type ClientIdAndCustomerApp,\n type Oauth2Token,\n} from '../models/mgmt-oauth.js';\n\n/** @internal */\nexport interface OAuthManagementClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Options for getting an OAuth token. */\nexport interface GetTokenOptions {\n /** Client ID and customer app. */\n body: ClientIdAndCustomerApp;\n /** Token TTL interval. */\n tokenTtlInterval?: number;\n /** Token TTL unit (e.g. 'hours'). */\n tokenTtlUnit?: string;\n}\n\n/** Client for OAuth token management operations. */\nexport class OAuthManagementClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: OAuthManagementClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Invalidate an OAuth token.\n * @param token - The OAuth token to invalidate.\n * @param body - Client ID and customer app.\n * @returns Confirmation string.\n */\n async invalidateToken(token: string, body: ClientIdAndCustomerApp): Promise<string> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_OAUTH_INVALIDATE_PATH,\n params: { token },\n body,\n responseSchema: z.string(),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get an OAuth token for client credentials.\n * @param opts - Token request options.\n * @returns OAuth2 token response.\n */\n async getAccessToken(opts: GetTokenOptions): Promise<Oauth2Token> {\n const params: Record<string, string> = {};\n if (opts.tokenTtlInterval !== undefined)\n params.tokenTtlInterval = String(opts.tokenTtlInterval);\n if (opts.tokenTtlUnit !== undefined) params.tokenTtlUnit = opts.tokenTtlUnit;\n\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MGMT_OAUTH_TOKEN_PATH,\n params: Object.keys(params).length > 0 ? params : undefined,\n body: opts.body,\n responseSchema: Oauth2TokenSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { DEFAULT_MGMT_ENDPOINT, MGMT_ENDPOINT } from '../constants.js';\nimport { OAuthAuth } from '../http/auth/oauth.js';\nimport { resolveOAuthConfig } from '../oauth-config.js';\nimport { ProfilesClient } from './profiles.js';\nimport { TopicsClient } from './topics.js';\nimport { ApiKeysClient } from './api-keys.js';\nimport { CustomerAppsClient } from './customer-apps.js';\nimport { DlpProfilesClient } from './dlp-profiles.js';\nimport { DeploymentProfilesClient } from './deployment-profiles.js';\nimport { ScanLogsClient } from './scan-logs.js';\nimport { OAuthManagementClient } from './oauth-management.js';\n\n/** Options for constructing a {@link ManagementClient}. */\nexport interface ManagementClientOptions {\n /** OAuth2 client ID. Falls back to `PANW_MGMT_CLIENT_ID` env var. */\n clientId?: string;\n /** OAuth2 client secret. Falls back to `PANW_MGMT_CLIENT_SECRET` env var. */\n clientSecret?: string;\n /** Tenant Service Group ID. Falls back to `PANW_MGMT_TSG_ID` env var. */\n tsgId?: string;\n /** Management API endpoint URL. Falls back to `PANW_MGMT_ENDPOINT` env var. */\n apiEndpoint?: string;\n /** OAuth2 token endpoint URL. Falls back to `PANW_MGMT_TOKEN_ENDPOINT` env var. */\n tokenEndpoint?: string;\n /** Max retry attempts (0–5). Defaults to 5. */\n numRetries?: number;\n}\n\n/**\n * Client for AIRS management API operations.\n * Authenticates via OAuth2 client_credentials flow.\n */\nexport class ManagementClient {\n public readonly profiles: ProfilesClient;\n public readonly topics: TopicsClient;\n public readonly apiKeys: ApiKeysClient;\n public readonly customerApps: CustomerAppsClient;\n public readonly dlpProfiles: DlpProfilesClient;\n public readonly deploymentProfiles: DeploymentProfilesClient;\n public readonly scanLogs: ScanLogsClient;\n public readonly oauth: OAuthManagementClient;\n\n constructor(opts: ManagementClientOptions = {}) {\n const apiEndpoint = opts.apiEndpoint ?? process.env[MGMT_ENDPOINT] ?? DEFAULT_MGMT_ENDPOINT;\n\n const { baseUrl, oauthClient, numRetries, tsgId } = resolveOAuthConfig({\n clientId: opts.clientId,\n clientSecret: opts.clientSecret,\n tsgId: opts.tsgId,\n baseUrl: apiEndpoint,\n numRetries: opts.numRetries,\n tokenEndpoint: opts.tokenEndpoint,\n primaryEnvPrefix: 'PANW_MGMT',\n });\n\n const auth = new OAuthAuth(oauthClient);\n\n this.profiles = new ProfilesClient({ baseUrl, auth, tsgId, numRetries });\n this.topics = new TopicsClient({ baseUrl, auth, tsgId, numRetries });\n this.apiKeys = new ApiKeysClient({ baseUrl, auth, tsgId, numRetries });\n this.customerApps = new CustomerAppsClient({ baseUrl, auth, tsgId, numRetries });\n this.dlpProfiles = new DlpProfilesClient({ baseUrl, auth, numRetries });\n this.deploymentProfiles = new DeploymentProfilesClient({ baseUrl, auth, numRetries });\n this.scanLogs = new ScanLogsClient({ baseUrl, auth, numRetries });\n this.oauth = new OAuthManagementClient({ baseUrl, auth, numRetries });\n }\n}\n","/**\n * Pagination + search options shared by every list endpoint across the OAuth domains.\n * Sub-clients extend this with endpoint-specific filter fields and merge their additions\n * into the params record returned by {@link serializeListing}.\n */\nexport interface ListingOptions {\n /** Number of records to skip from the start. */\n skip?: number;\n /** Max records to return. */\n limit?: number;\n /** Free-text search filter. */\n search?: string;\n}\n\n/**\n * @internal\n * Serialize the canonical listing fields into a string-keyed params record. Extra fields on\n * the input are ignored — callers add their own endpoint-specific filters to the result.\n */\nexport function serializeListing(opts?: ListingOptions): Record<string, string> {\n const params: Record<string, string> = {};\n if (opts?.skip !== undefined) params.skip = String(opts.skip);\n if (opts?.limit !== undefined) params.limit = String(opts.limit);\n if (opts?.search !== undefined) params.search = opts.search;\n return params;\n}\n","import {\n MODEL_SEC_SCANS_PATH,\n MODEL_SEC_EVALUATIONS_PATH,\n MODEL_SEC_VIOLATIONS_PATH,\n} from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing, type ListingOptions } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n ScanBaseResponseSchema,\n ScanListSchema,\n RuleEvaluationListSchema,\n RuleEvaluationResponseSchema,\n FileListSchema,\n LabelsResponseSchema,\n ViolationListSchema,\n ViolationResponseSchema,\n LabelKeyListSchema,\n LabelValueListSchema,\n type ScanCreateRequest,\n type ScanBaseResponse,\n type ScanList,\n type RuleEvaluationList,\n type RuleEvaluationResponse,\n type FileList,\n type LabelsCreateRequest,\n type LabelsResponse,\n type ViolationList,\n type ViolationResponse,\n type LabelKeyList,\n type LabelValueList,\n} from '../models/model-security.js';\n\n/** Pagination + filter options for model security scan listing. */\nexport interface ModelSecurityScanListOptions extends ListingOptions {\n /** Sort field: 'created_at' or 'updated_at'. */\n sort_by?: string;\n /** Sort order: 'asc' or 'desc'. */\n sort_order?: string;\n /** Search query (matches UUID or name, 3-1000 chars). */\n search_query?: string;\n /** Filter by evaluation outcomes (array). */\n eval_outcomes?: string[];\n /** Filter by source types (array). */\n source_types?: string[];\n /** Filter by security group UUID. */\n security_group_uuid?: string;\n /** Filter by start time (ISO datetime). */\n start_time?: string;\n /** Filter by end time (ISO datetime). */\n end_time?: string;\n /** Labels query filter (max 4096 chars). */\n labels_query?: string;\n}\n\n/** Options for listing rule evaluations within a scan. */\nexport interface ModelSecurityEvaluationListOptions extends ListingOptions {\n /** Sort field: 'created_at' or 'updated_at'. */\n sort_field?: string;\n /** Sort order: 'asc' or 'desc'. */\n sort_order?: string;\n /** Filter by evaluation result: 'PASSED', 'FAILED', or 'ERROR'. */\n result?: string;\n /** Filter by rule instance UUID. */\n rule_instance_uuid?: string;\n}\n\n/** Options for listing files within a scan. */\nexport interface ModelSecurityFileListOptions extends ListingOptions {\n /** Sort field: 'path' or 'type'. */\n sort_field?: string;\n /** Sort direction: 'asc' or 'desc'. */\n sort_dir?: string;\n /** Filter by file type. */\n type?: string;\n /** Filter by file result. */\n result?: string;\n /** Filter files by path within the scan (default \"/\"). */\n query_path?: string;\n}\n\n/** Options for listing label keys or values. */\nexport type ModelSecurityLabelListOptions = ListingOptions;\n\n/** Options for listing violations. */\nexport type ModelSecurityViolationListOptions = ListingOptions;\n\n/** @internal */\nexport interface ModelSecurityScansClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\nfunction buildScanListParams(\n opts?: ModelSecurityScanListOptions,\n): Record<string, string | string[]> {\n const params: Record<string, string | string[]> = serializeListing(opts);\n if (opts?.sort_by !== undefined) params.sort_by = opts.sort_by;\n if (opts?.sort_order !== undefined) params.sort_order = opts.sort_order;\n if (opts?.search_query !== undefined) params.search_query = opts.search_query;\n if (opts?.eval_outcomes !== undefined) params.eval_outcomes = opts.eval_outcomes;\n if (opts?.source_types !== undefined) params.source_types = opts.source_types;\n if (opts?.security_group_uuid !== undefined)\n params.security_group_uuid = opts.security_group_uuid;\n if (opts?.start_time !== undefined) params.start_time = opts.start_time;\n if (opts?.end_time !== undefined) params.end_time = opts.end_time;\n if (opts?.labels_query !== undefined) params.labels_query = opts.labels_query;\n return params;\n}\n\nfunction buildEvaluationListParams(\n opts?: ModelSecurityEvaluationListOptions,\n): Record<string, string> {\n const params = serializeListing(opts);\n if (opts?.sort_field !== undefined) params.sort_field = opts.sort_field;\n if (opts?.sort_order !== undefined) params.sort_order = opts.sort_order;\n if (opts?.result !== undefined) params.result = opts.result;\n if (opts?.rule_instance_uuid !== undefined) params.rule_instance_uuid = opts.rule_instance_uuid;\n return params;\n}\n\nfunction buildFileListParams(opts?: ModelSecurityFileListOptions): Record<string, string> {\n const params = serializeListing(opts);\n if (opts?.sort_field !== undefined) params.sort_field = opts.sort_field;\n if (opts?.sort_dir !== undefined) params.sort_dir = opts.sort_dir;\n if (opts?.type !== undefined) params.type = opts.type;\n if (opts?.result !== undefined) params.result = opts.result;\n if (opts?.query_path !== undefined) params.query_path = opts.query_path;\n return params;\n}\n\n/** Client for Model Security data plane scan operations. */\nexport class ModelSecurityScansClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ModelSecurityScansClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new model security scan.\n * @param body - Scan creation request body.\n * @returns The created scan response.\n */\n async create(body: ScanCreateRequest): Promise<ScanBaseResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SCANS_PATH,\n body,\n responseSchema: ScanBaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List model security scans with optional filters.\n * @param opts - Pagination and filter options.\n * @returns Paginated list of scans.\n */\n async list(opts?: ModelSecurityScanListOptions): Promise<ScanList> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SCANS_PATH,\n params: buildScanListParams(opts),\n responseSchema: ScanListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single scan by UUID.\n * @param uuid - Scan UUID.\n * @returns The scan response.\n */\n async get(uuid: string): Promise<ScanBaseResponse> {\n assertUuid(uuid, 'scan uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${uuid}`,\n responseSchema: ScanBaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get rule evaluations for a scan.\n * @param scanUuid - Scan UUID.\n * @param opts - Pagination and filter options.\n * @returns Paginated list of rule evaluations.\n */\n async getEvaluations(\n scanUuid: string,\n opts?: ModelSecurityEvaluationListOptions,\n ): Promise<RuleEvaluationList> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/evaluations`,\n params: buildEvaluationListParams(opts),\n responseSchema: RuleEvaluationListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get files for a scan.\n * @param scanUuid - Scan UUID.\n * @param opts - Pagination and file filter options.\n * @returns Paginated list of files.\n */\n async getFiles(scanUuid: string, opts?: ModelSecurityFileListOptions): Promise<FileList> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/files`,\n params: buildFileListParams(opts),\n responseSchema: FileListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Add labels to a scan (merge with existing).\n * @param scanUuid - Scan UUID.\n * @param body - Labels to add.\n * @returns Labels response.\n */\n async addLabels(scanUuid: string, body: LabelsCreateRequest): Promise<LabelsResponse> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/labels`,\n body,\n responseSchema: LabelsResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Set labels on a scan (replace all existing).\n * @param scanUuid - Scan UUID.\n * @param body - Labels to set.\n * @returns Labels response.\n */\n async setLabels(scanUuid: string, body: LabelsCreateRequest): Promise<LabelsResponse> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/labels`,\n body,\n responseSchema: LabelsResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete labels from a scan by key.\n * @param scanUuid - Scan UUID.\n * @param keys - Label keys to delete.\n * @returns Resolves when the labels are deleted.\n */\n async deleteLabels(scanUuid: string, keys: string[]): Promise<void> {\n assertUuid(scanUuid, 'scan uuid');\n await request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/labels`,\n params: { keys },\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get rule violations for a scan.\n * @param scanUuid - Scan UUID.\n * @param opts - Pagination options.\n * @returns Paginated list of violations.\n */\n async getViolations(\n scanUuid: string,\n opts?: ModelSecurityViolationListOptions,\n ): Promise<ViolationList> {\n assertUuid(scanUuid, 'scan uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/${scanUuid}/rule-violations`,\n params: serializeListing(opts),\n responseSchema: ViolationListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get distinct label keys across all scans.\n * @param opts - Pagination options.\n * @returns Paginated list of label keys.\n */\n async getLabelKeys(opts?: ModelSecurityLabelListOptions): Promise<LabelKeyList> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/label-keys`,\n params: serializeListing(opts),\n responseSchema: LabelKeyListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get distinct values for a label key.\n * @param key - Label key to get values for.\n * @param opts - Pagination options.\n * @returns Paginated list of label values.\n */\n async getLabelValues(key: string, opts?: ModelSecurityLabelListOptions): Promise<LabelValueList> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SCANS_PATH}/label-keys/${encodeURIComponent(key)}/values`,\n params: serializeListing(opts),\n responseSchema: LabelValueListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single rule evaluation by UUID.\n * @param uuid - Evaluation UUID.\n * @returns The rule evaluation response.\n */\n async getEvaluation(uuid: string): Promise<RuleEvaluationResponse> {\n assertUuid(uuid, 'evaluation uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_EVALUATIONS_PATH}/${uuid}`,\n responseSchema: RuleEvaluationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single violation by UUID.\n * @param uuid - Violation UUID.\n * @returns The violation response.\n */\n async getViolation(uuid: string): Promise<ViolationResponse> {\n assertUuid(uuid, 'violation uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_VIOLATIONS_PATH}/${uuid}`,\n responseSchema: ViolationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MODEL_SEC_SECURITY_GROUPS_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing, type ListingOptions } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n ModelSecurityGroupResponseSchema,\n ListModelSecurityGroupsResponseSchema,\n ModelSecurityRuleInstanceResponseSchema,\n ListModelSecurityRuleInstancesResponseSchema,\n type ModelSecurityGroupCreateRequest,\n type ModelSecurityGroupResponse,\n type ModelSecurityGroupUpdateRequest,\n type ListModelSecurityGroupsResponse,\n type ModelSecurityRuleInstanceResponse,\n type ModelSecurityRuleInstanceUpdateRequest,\n type ListModelSecurityRuleInstancesResponse,\n} from '../models/model-security.js';\n\n/** Options for listing security groups. */\nexport interface ModelSecurityGroupListOptions extends ListingOptions {\n /** Field to sort by: 'created_at' or 'updated_at'. */\n sort_field?: string;\n /** Sort direction: 'asc' or 'desc'. */\n sort_dir?: string;\n /** Filter by source types. */\n source_types?: string[];\n /** Search term (matches UUID or Name, 3-1000 chars). */\n search_query?: string;\n /** Filter by rule UUIDs with ALLOWING or BLOCKING state. */\n enabled_rules?: string[];\n}\n\n/** Options for listing rule instances within a security group. */\nexport interface ModelSecurityRuleInstanceListOptions extends ListingOptions {\n /** Filter by security rule UUID. */\n security_rule_uuid?: string;\n /** Filter by rule state: 'DISABLED', 'ALLOWING', or 'BLOCKING'. */\n state?: string;\n}\n\n/** @internal */\nexport interface ModelSecurityGroupsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\nfunction buildGroupListParams(\n opts?: ModelSecurityGroupListOptions,\n): Record<string, string | string[]> {\n const params: Record<string, string | string[]> = serializeListing(opts);\n if (opts?.sort_field !== undefined) params.sort_field = opts.sort_field;\n if (opts?.sort_dir !== undefined) params.sort_dir = opts.sort_dir;\n if (opts?.source_types !== undefined) params.source_types = opts.source_types;\n if (opts?.search_query !== undefined) params.search_query = opts.search_query;\n if (opts?.enabled_rules !== undefined) params.enabled_rules = opts.enabled_rules;\n return params;\n}\n\nfunction buildRuleInstanceListParams(\n opts?: ModelSecurityRuleInstanceListOptions,\n): Record<string, string> {\n const params = serializeListing(opts);\n if (opts?.security_rule_uuid !== undefined) params.security_rule_uuid = opts.security_rule_uuid;\n if (opts?.state !== undefined) params.state = opts.state;\n return params;\n}\n\n/** Client for Model Security management plane security group operations. */\nexport class ModelSecurityGroupsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ModelSecurityGroupsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new security group.\n * @param body - Security group creation request.\n * @returns The created security group.\n */\n async create(body: ModelSecurityGroupCreateRequest): Promise<ModelSecurityGroupResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SECURITY_GROUPS_PATH,\n body,\n responseSchema: ModelSecurityGroupResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List security groups with optional filters.\n * @param opts - Pagination and filter options.\n * @returns Paginated list of security groups.\n */\n async list(opts?: ModelSecurityGroupListOptions): Promise<ListModelSecurityGroupsResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SECURITY_GROUPS_PATH,\n params: buildGroupListParams(opts),\n responseSchema: ListModelSecurityGroupsResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single security group by UUID.\n * @param uuid - Security group UUID.\n * @returns The security group.\n */\n async get(uuid: string): Promise<ModelSecurityGroupResponse> {\n assertUuid(uuid, 'security group uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${uuid}`,\n responseSchema: ModelSecurityGroupResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update an existing security group.\n * @param uuid - Security group UUID.\n * @param body - Updated security group fields.\n * @returns The updated security group.\n */\n async update(\n uuid: string,\n body: ModelSecurityGroupUpdateRequest,\n ): Promise<ModelSecurityGroupResponse> {\n assertUuid(uuid, 'security group uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${uuid}`,\n body,\n responseSchema: ModelSecurityGroupResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a security group.\n * @param uuid - Security group UUID.\n * @returns Resolves when the security group is deleted.\n */\n async delete(uuid: string): Promise<void> {\n assertUuid(uuid, 'security group uuid');\n await request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${uuid}`,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List rule instances for a security group.\n * @param securityGroupUuid - Security group UUID.\n * @param opts - Pagination options.\n * @returns Paginated list of rule instances.\n */\n async listRuleInstances(\n securityGroupUuid: string,\n opts?: ModelSecurityRuleInstanceListOptions,\n ): Promise<ListModelSecurityRuleInstancesResponse> {\n assertUuid(securityGroupUuid, 'security group uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${securityGroupUuid}/rule-instances`,\n params: buildRuleInstanceListParams(opts),\n responseSchema: ListModelSecurityRuleInstancesResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single rule instance within a security group.\n * @param securityGroupUuid - Security group UUID.\n * @param ruleInstanceUuid - Rule instance UUID.\n * @returns The rule instance.\n */\n async getRuleInstance(\n securityGroupUuid: string,\n ruleInstanceUuid: string,\n ): Promise<ModelSecurityRuleInstanceResponse> {\n assertUuid(securityGroupUuid, 'security group uuid');\n assertUuid(ruleInstanceUuid, 'rule instance uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${securityGroupUuid}/rule-instances/${ruleInstanceUuid}`,\n responseSchema: ModelSecurityRuleInstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a rule instance within a security group.\n * @param securityGroupUuid - Security group UUID.\n * @param ruleInstanceUuid - Rule instance UUID.\n * @param body - Updated rule instance fields.\n * @returns The updated rule instance.\n */\n async updateRuleInstance(\n securityGroupUuid: string,\n ruleInstanceUuid: string,\n body: ModelSecurityRuleInstanceUpdateRequest,\n ): Promise<ModelSecurityRuleInstanceResponse> {\n assertUuid(securityGroupUuid, 'security group uuid');\n assertUuid(ruleInstanceUuid, 'rule instance uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_GROUPS_PATH}/${securityGroupUuid}/rule-instances/${ruleInstanceUuid}`,\n body,\n responseSchema: ModelSecurityRuleInstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { MODEL_SEC_SECURITY_RULES_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing, type ListingOptions } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n ListModelSecurityRulesResponseSchema,\n ModelSecurityRuleResponseSchema,\n type ListModelSecurityRulesResponse,\n type ModelSecurityRuleResponse,\n} from '../models/model-security.js';\n\n/** Options for listing security rules. */\nexport interface ModelSecurityRuleListOptions extends ListingOptions {\n /** Filter by source type. */\n source_type?: string;\n /** Search term (matches UUID or Name, 3-1000 chars). */\n search_query?: string;\n}\n\n/** @internal */\nexport interface ModelSecurityRulesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Model Security management plane security rule operations (read-only). */\nexport class ModelSecurityRulesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ModelSecurityRulesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * List available security rules.\n * @param opts - Pagination + filter options.\n * @returns Paginated list of security rules.\n */\n async list(opts?: ModelSecurityRuleListOptions): Promise<ListModelSecurityRulesResponse> {\n const params = serializeListing(opts);\n if (opts?.source_type !== undefined) params.source_type = opts.source_type;\n if (opts?.search_query !== undefined) params.search_query = opts.search_query;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: MODEL_SEC_SECURITY_RULES_PATH,\n params,\n responseSchema: ListModelSecurityRulesResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single security rule by UUID.\n * @param uuid - Security rule UUID.\n * @returns The security rule.\n */\n async get(uuid: string): Promise<ModelSecurityRuleResponse> {\n assertUuid(uuid, 'security rule uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${MODEL_SEC_SECURITY_RULES_PATH}/${uuid}`,\n responseSchema: ModelSecurityRuleResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import {\n DEFAULT_MODEL_SEC_DATA_ENDPOINT,\n DEFAULT_MODEL_SEC_MGMT_ENDPOINT,\n MODEL_SEC_DATA_ENDPOINT,\n MODEL_SEC_MGMT_ENDPOINT,\n MODEL_SEC_PYPI_AUTH_PATH,\n} from '../constants.js';\nimport { OAuthAuth } from '../http/auth/oauth.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { resolveOAuthConfig } from '../oauth-config.js';\nimport { ModelSecurityScansClient } from './scans-client.js';\nimport { ModelSecurityGroupsClient } from './security-groups-client.js';\nimport { ModelSecurityRulesClient } from './security-rules-client.js';\nimport { PyPIAuthResponseSchema, type PyPIAuthResponse } from '../models/model-security.js';\n\n/** Options for constructing a {@link ModelSecurityClient}. */\nexport interface ModelSecurityClientOptions {\n /** OAuth2 client ID. Falls back to `PANW_MODEL_SEC_CLIENT_ID`, then `PANW_MGMT_CLIENT_ID`. */\n clientId?: string;\n /** OAuth2 client secret. Falls back to `PANW_MODEL_SEC_CLIENT_SECRET`, then `PANW_MGMT_CLIENT_SECRET`. */\n clientSecret?: string;\n /** Tenant Service Group ID. Falls back to `PANW_MODEL_SEC_TSG_ID`, then `PANW_MGMT_TSG_ID`. */\n tsgId?: string;\n /** Data plane endpoint URL. Falls back to `PANW_MODEL_SEC_DATA_ENDPOINT`. */\n dataEndpoint?: string;\n /** Management plane endpoint URL. Falls back to `PANW_MODEL_SEC_MGMT_ENDPOINT`. */\n mgmtEndpoint?: string;\n /** OAuth2 token endpoint URL. Falls back to `PANW_MODEL_SEC_TOKEN_ENDPOINT`, then `PANW_MGMT_TOKEN_ENDPOINT`. */\n tokenEndpoint?: string;\n /** Max retry attempts (0-5). Defaults to 5. */\n numRetries?: number;\n}\n\n/**\n * Client for AIRS Model Security API operations.\n * Uses two base URLs: data plane for scans, management plane for security groups/rules.\n * Authenticates via OAuth2 client_credentials flow (shared token for both planes).\n */\nexport class ModelSecurityClient {\n /** Data plane scan operations. */\n public readonly scans: ModelSecurityScansClient;\n /** Management plane security group operations. */\n public readonly securityGroups: ModelSecurityGroupsClient;\n /** Management plane security rule operations (read-only). */\n public readonly securityRules: ModelSecurityRulesClient;\n\n private readonly mgmtEndpoint: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: ModelSecurityClientOptions = {}) {\n const dataEndpoint =\n opts.dataEndpoint ?? process.env[MODEL_SEC_DATA_ENDPOINT] ?? DEFAULT_MODEL_SEC_DATA_ENDPOINT;\n const mgmtEndpoint =\n opts.mgmtEndpoint ?? process.env[MODEL_SEC_MGMT_ENDPOINT] ?? DEFAULT_MODEL_SEC_MGMT_ENDPOINT;\n\n const { oauthClient, numRetries } = resolveOAuthConfig({\n clientId: opts.clientId,\n clientSecret: opts.clientSecret,\n tsgId: opts.tsgId,\n baseUrl: mgmtEndpoint,\n numRetries: opts.numRetries,\n tokenEndpoint: opts.tokenEndpoint,\n primaryEnvPrefix: 'PANW_MODEL_SEC',\n fallbackEnvPrefix: 'PANW_MGMT',\n });\n\n const auth = new OAuthAuth(oauthClient);\n this.auth = auth;\n this.mgmtEndpoint = mgmtEndpoint;\n this.numRetries = numRetries;\n\n this.scans = new ModelSecurityScansClient({ baseUrl: dataEndpoint, auth, numRetries });\n this.securityGroups = new ModelSecurityGroupsClient({\n baseUrl: mgmtEndpoint,\n auth,\n numRetries,\n });\n this.securityRules = new ModelSecurityRulesClient({\n baseUrl: mgmtEndpoint,\n auth,\n numRetries,\n });\n }\n\n /**\n * Get PyPI authentication credentials for Google Artifact Registry.\n * @returns PyPI auth response with URL and expiration.\n */\n async getPyPIAuth(): Promise<PyPIAuthResponse> {\n return request({\n method: 'GET',\n baseUrl: this.mgmtEndpoint,\n path: MODEL_SEC_PYPI_AUTH_PATH,\n responseSchema: PyPIAuthResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { RED_TEAM_SCAN_PATH, RED_TEAM_CATEGORIES_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { z } from 'zod';\nimport { serializeListing, type ListingOptions } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n JobResponseSchema,\n JobListResponseSchema,\n JobAbortResponseSchema,\n CategoryModelSchema,\n type JobCreateRequest,\n type JobResponse,\n type JobListResponse,\n type JobAbortResponse,\n type CategoryModel,\n} from '../models/red-team.js';\n\n/** Pagination + filter options for Red Team list operations. */\nexport type RedTeamListOptions = ListingOptions;\n\n/** Extended list options for scan/job listing. */\nexport interface RedTeamScanListOptions extends RedTeamListOptions {\n status?: string;\n job_type?: string;\n target_id?: string;\n}\n\n/** @internal */\nexport interface RedTeamScansClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team data plane scan operations. */\nexport class RedTeamScansClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamScansClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new red team scan job.\n * @param body - Job creation request body.\n * @returns The created job response.\n */\n async create(body: JobCreateRequest): Promise<JobResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_SCAN_PATH,\n body,\n responseSchema: JobResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List red team scan jobs with optional filters.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of scan jobs.\n */\n async list(opts?: RedTeamScanListOptions): Promise<JobListResponse> {\n const params = serializeListing(opts);\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.job_type !== undefined) params.job_type = opts.job_type;\n if (opts?.target_id !== undefined) params.target_id = opts.target_id;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: RED_TEAM_SCAN_PATH,\n params,\n responseSchema: JobListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a single scan job by ID.\n * @param jobId - The job UUID.\n * @returns The job response.\n */\n async get(jobId: string): Promise<JobResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_SCAN_PATH}/${jobId}`,\n responseSchema: JobResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Abort a running scan job.\n * @param jobId - The job UUID.\n * @returns The abort response.\n */\n async abort(jobId: string): Promise<JobAbortResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_SCAN_PATH}/${jobId}/abort`,\n responseSchema: JobAbortResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get all categories with subcategories.\n * @returns The list of category models.\n */\n async getCategories(): Promise<CategoryModel[]> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: RED_TEAM_CATEGORIES_PATH,\n responseSchema: z.array(CategoryModelSchema),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport {\n RED_TEAM_REPORT_STATIC_PATH,\n RED_TEAM_REPORT_DYNAMIC_PATH,\n RED_TEAM_REPORT_PATH,\n} from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n AttackListResponseSchema,\n AttackDetailResponseSchema,\n AttackMultiTurnDetailResponseSchema,\n StaticJobReportSchema,\n DynamicJobReportSchema,\n RemediationResponseSchema,\n RuntimeSecurityProfileResponseSchema,\n GoalListResponseSchema,\n StreamListResponseSchema,\n StreamDetailResponseSchema,\n type AttackListResponse,\n type AttackDetailResponse,\n type AttackMultiTurnDetailResponse,\n type StaticJobReport,\n type DynamicJobReport,\n type RemediationResponse,\n type RuntimeSecurityProfileResponse,\n type GoalListResponse,\n type StreamListResponse,\n type StreamDetailResponse,\n} from '../models/red-team.js';\nimport type { RedTeamListOptions } from './scans-client.js';\n\n/** Attack list filter options. */\nexport interface AttackListOptions extends RedTeamListOptions {\n status?: string;\n severity?: string;\n category?: string;\n sub_category?: string;\n attack_type?: string;\n threat?: boolean;\n}\n\n/** Goal list filter options. */\nexport interface GoalListOptions extends RedTeamListOptions {\n goal_type?: string;\n status?: string;\n count?: boolean;\n}\n\n/** @internal */\nexport interface RedTeamReportsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team data plane report operations. */\nexport class RedTeamReportsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamReportsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n // -----------------------------------------------------------------------\n // Static (attack library) report endpoints\n // -----------------------------------------------------------------------\n\n /**\n * List attacks for a static scan.\n * @param jobId - The job UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of attacks.\n */\n async listAttacks(jobId: string, opts?: AttackListOptions): Promise<AttackListResponse> {\n assertUuid(jobId, 'job id');\n const params = serializeListing(opts);\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.severity !== undefined) params.severity = opts.severity;\n if (opts?.category !== undefined) params.category = opts.category;\n if (opts?.sub_category !== undefined) params.sub_category = opts.sub_category;\n if (opts?.attack_type !== undefined) params.attack_type = opts.attack_type;\n if (opts?.threat !== undefined) params.threat = String(opts.threat);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/list-attacks`,\n params,\n responseSchema: AttackListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get attack details for a static scan.\n * @param jobId - The job UUID.\n * @param attackId - The attack UUID.\n * @returns The attack detail response.\n */\n async getAttackDetail(jobId: string, attackId: string): Promise<AttackDetailResponse> {\n assertUuid(jobId, 'job id');\n assertUuid(attackId, 'attack id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/attack/${attackId}`,\n responseSchema: AttackDetailResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get multi-turn attack details for a static scan.\n * @param jobId - The job UUID.\n * @param attackId - The attack UUID.\n * @returns The multi-turn attack detail response.\n */\n async getMultiTurnAttackDetail(\n jobId: string,\n attackId: string,\n ): Promise<AttackMultiTurnDetailResponse> {\n assertUuid(jobId, 'job id');\n assertUuid(attackId, 'attack id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/attack-multi-turn/${attackId}`,\n responseSchema: AttackMultiTurnDetailResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get the attack library report for a static scan.\n * @param jobId - The job UUID.\n * @returns The static job report.\n */\n async getStaticReport(jobId: string): Promise<StaticJobReport> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/report`,\n responseSchema: StaticJobReportSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get remediation recommendations for a static scan.\n * @param jobId - The job UUID.\n * @returns The remediation response.\n */\n async getStaticRemediation(jobId: string): Promise<RemediationResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/remediation`,\n responseSchema: RemediationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get runtime security profile config for a static scan.\n * @param jobId - The job UUID.\n * @returns The runtime security profile response.\n */\n async getStaticRuntimePolicy(jobId: string): Promise<RuntimeSecurityProfileResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_STATIC_PATH}/${jobId}/runtime-policy-config`,\n responseSchema: RuntimeSecurityProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n // -----------------------------------------------------------------------\n // Dynamic (agent) report endpoints\n // -----------------------------------------------------------------------\n\n /**\n * Get the agent scan report for a dynamic scan.\n * @param jobId - The job UUID.\n * @returns The dynamic job report.\n */\n async getDynamicReport(jobId: string): Promise<DynamicJobReport> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/report`,\n responseSchema: DynamicJobReportSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get remediation recommendations for a dynamic scan.\n * @param jobId - The job UUID.\n * @returns The remediation response.\n */\n async getDynamicRemediation(jobId: string): Promise<RemediationResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/remediation`,\n responseSchema: RemediationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get runtime security profile config for a dynamic scan.\n * @param jobId - The job UUID.\n * @returns The runtime security profile response.\n */\n async getDynamicRuntimePolicy(jobId: string): Promise<RuntimeSecurityProfileResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/runtime-policy-config`,\n responseSchema: RuntimeSecurityProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List goals for a dynamic scan.\n * @param jobId - The job UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of goals.\n */\n async listGoals(jobId: string, opts?: GoalListOptions): Promise<GoalListResponse> {\n assertUuid(jobId, 'job id');\n const params = serializeListing(opts);\n if (opts?.goal_type !== undefined) params.goal_type = opts.goal_type;\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.count !== undefined) params.count = String(opts.count);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/list-goals`,\n params,\n responseSchema: GoalListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List streams for a goal in a dynamic scan.\n * @param jobId - The job UUID.\n * @param goalId - The goal UUID.\n * @param opts - Optional pagination and search options.\n * @returns The paginated list of streams.\n */\n async listGoalStreams(\n jobId: string,\n goalId: string,\n opts?: RedTeamListOptions,\n ): Promise<StreamListResponse> {\n assertUuid(jobId, 'job id');\n assertUuid(goalId, 'goal id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/${jobId}/goal/${goalId}/list-streams`,\n params: serializeListing(opts),\n responseSchema: StreamListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n // -----------------------------------------------------------------------\n // Common report endpoints\n // -----------------------------------------------------------------------\n\n /**\n * Get stream details by stream ID.\n * @param streamId - The stream UUID.\n * @returns The stream detail response.\n */\n async getStreamDetail(streamId: string): Promise<StreamDetailResponse> {\n assertUuid(streamId, 'stream id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_DYNAMIC_PATH}/stream/${streamId}`,\n responseSchema: StreamDetailResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Download a report in the specified format.\n * @param jobId - The job UUID.\n * @param format - The file format (e.g. \"pdf\", \"csv\").\n * @returns The report data in the requested format (untyped — shape depends on `format`).\n */\n async downloadReport(jobId: string, format: string): Promise<unknown> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_PATH}/${jobId}/download`,\n params: { file_format: format },\n responseSchema: z.unknown(),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Generate a partial report for a running scan.\n * @param jobId - The job UUID.\n * @returns The partial report payload (untyped — schema not yet defined by the API).\n */\n async generatePartialReport(jobId: string): Promise<unknown> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_REPORT_PATH}/${jobId}/generate-partial-report`,\n responseSchema: z.unknown(),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport { RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n CustomAttackReportResponseSchema,\n PromptSetsReportResponseSchema,\n PromptDetailResponseSchema,\n CustomAttacksListResponseSchema,\n CustomAttackOutputSchema,\n PropertyStatisticSchema,\n type CustomAttackReportResponse,\n type PromptSetsReportResponse,\n type PromptDetailResponse,\n type CustomAttacksListResponse,\n type CustomAttackOutput,\n type PropertyStatistic,\n} from '../models/red-team.js';\nimport type { RedTeamListOptions } from './scans-client.js';\n\n/** Filter options for listing prompts by set in a report. */\nexport interface PromptsBySetListOptions extends RedTeamListOptions {\n is_threat?: boolean;\n}\n\n/** Filter options for listing custom attacks in a report. */\nexport interface CustomAttacksReportListOptions extends RedTeamListOptions {\n threat?: boolean;\n prompt_set_id?: string;\n property_value?: string;\n}\n\n/** @internal */\nexport interface RedTeamCustomAttackReportsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team custom attack report operations. */\nexport class RedTeamCustomAttackReportsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamCustomAttackReportsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Get custom attack report for a scan.\n * @param jobId - The job UUID.\n * @returns The custom attack report response.\n */\n async getReport(jobId: string): Promise<CustomAttackReportResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/report/${jobId}`,\n responseSchema: CustomAttackReportResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get prompt sets for a custom attack scan.\n * @param jobId - The job UUID.\n * @returns The prompt sets report response.\n */\n async getPromptSets(jobId: string): Promise<PromptSetsReportResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/report/${jobId}/prompt-sets`,\n responseSchema: PromptSetsReportResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get prompts for a specific prompt set in a scan.\n * @param jobId - The job UUID.\n * @param promptSetId - The prompt set UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The list of prompt detail responses.\n */\n async getPromptsBySet(\n jobId: string,\n promptSetId: string,\n opts?: PromptsBySetListOptions,\n ): Promise<PromptDetailResponse[]> {\n assertUuid(jobId, 'job id');\n assertUuid(promptSetId, 'prompt set id');\n\n const params = serializeListing(opts);\n if (opts?.is_threat !== undefined) params.is_threat = String(opts.is_threat);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/report/${jobId}/prompt-set/${promptSetId}/prompts`,\n params,\n responseSchema: z.array(PromptDetailResponseSchema),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get details for a specific prompt.\n * @param jobId - The job UUID.\n * @param promptId - The prompt UUID.\n * @returns The prompt detail response.\n */\n async getPromptDetail(jobId: string, promptId: string): Promise<PromptDetailResponse> {\n assertUuid(jobId, 'job id');\n assertUuid(promptId, 'prompt id');\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/report/${jobId}/prompt/${promptId}`,\n responseSchema: PromptDetailResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List custom attacks for a scan.\n * @param jobId - The job UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of custom attacks.\n */\n async listCustomAttacks(\n jobId: string,\n opts?: CustomAttacksReportListOptions,\n ): Promise<CustomAttacksListResponse> {\n assertUuid(jobId, 'job id');\n const params = serializeListing(opts);\n if (opts?.threat !== undefined) params.threat = String(opts.threat);\n if (opts?.prompt_set_id !== undefined) params.prompt_set_id = opts.prompt_set_id;\n if (opts?.property_value !== undefined) params.property_value = opts.property_value;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/job/${jobId}/list-custom-attacks`,\n params,\n responseSchema: CustomAttacksListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get attack outputs for a custom attack.\n * @param jobId - The job UUID.\n * @param attackId - The attack UUID.\n * @returns The list of attack outputs.\n */\n async getAttackOutputs(jobId: string, attackId: string): Promise<CustomAttackOutput[]> {\n assertUuid(jobId, 'job id');\n assertUuid(attackId, 'attack id');\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/job/${jobId}/attack/${attackId}/list-outputs`,\n responseSchema: z.array(CustomAttackOutputSchema),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get property statistics for a custom attack scan.\n * @param jobId - The job UUID.\n * @returns The list of property statistics.\n */\n async getPropertyStats(jobId: string): Promise<PropertyStatistic[]> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACKS_REPORT_PATH}/job/${jobId}/property-stats`,\n responseSchema: z.array(PropertyStatisticSchema),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport {\n RED_TEAM_TARGET_PATH,\n RED_TEAM_TARGET_VALIDATE_AUTH_PATH,\n RED_TEAM_TEMPLATE_PATH,\n} from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n TargetResponseSchema,\n TargetListSchema,\n TargetProfileResponseSchema,\n TargetAuthValidationResponseSchema,\n TargetTemplateCollectionSchema,\n BaseResponseSchema,\n type TargetCreateRequest,\n type TargetUpdateRequest,\n type TargetContextUpdate,\n type TargetResponse,\n type TargetList,\n type TargetProbeRequest,\n type TargetProfileResponse,\n type TargetAuthValidationRequest,\n type TargetAuthValidationResponse,\n type TargetTemplateCollection,\n type BaseResponse,\n} from '../models/red-team.js';\nimport type { RedTeamListOptions } from './scans-client.js';\n\n/** Target list filter options. */\nexport interface TargetListOptions extends RedTeamListOptions {\n target_type?: string;\n status?: string;\n}\n\n/** Options for target create/update operations. */\nexport interface TargetOperationOptions {\n /** Validate the target connection before saving. */\n validate?: boolean;\n}\n\n/** @internal */\nexport interface RedTeamTargetsClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team management plane target operations. */\nexport class RedTeamTargetsClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamTargetsClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new target.\n * @param body - Target creation request body.\n * @param opts - Optional operation options (e.g. validate connection).\n * @returns The created target response.\n */\n async create(body: TargetCreateRequest, opts?: TargetOperationOptions): Promise<TargetResponse> {\n const params: Record<string, string> = {};\n if (opts?.validate !== undefined) params.validate = String(opts.validate);\n\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_TARGET_PATH,\n body,\n params: Object.keys(params).length > 0 ? params : undefined,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List targets with optional filters.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of targets.\n */\n async list(opts?: TargetListOptions): Promise<TargetList> {\n const params = serializeListing(opts);\n if (opts?.target_type !== undefined) params.target_type = opts.target_type;\n if (opts?.status !== undefined) params.status = opts.status;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: RED_TEAM_TARGET_PATH,\n params,\n responseSchema: TargetListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a target by UUID.\n * @param uuid - The target UUID.\n * @returns The target response.\n */\n async get(uuid: string): Promise<TargetResponse> {\n assertUuid(uuid, 'target uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}`,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a target.\n * @param uuid - The target UUID.\n * @param body - Target update request body.\n * @param opts - Optional operation options (e.g. validate connection).\n * @returns The updated target response.\n */\n async update(\n uuid: string,\n body: TargetUpdateRequest,\n opts?: TargetOperationOptions,\n ): Promise<TargetResponse> {\n assertUuid(uuid, 'target uuid');\n const params: Record<string, string> = {};\n if (opts?.validate !== undefined) params.validate = String(opts.validate);\n\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}`,\n body,\n params: Object.keys(params).length > 0 ? params : undefined,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a target.\n * @param uuid - The target UUID.\n * @returns The delete response.\n */\n async delete(uuid: string): Promise<BaseResponse> {\n assertUuid(uuid, 'target uuid');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}`,\n responseSchema: BaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Run profiling probes on a target.\n * @param body - The probe request body.\n * @returns The target response after probing.\n */\n async probe(body: TargetProbeRequest): Promise<TargetResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/probe`,\n body,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get profiling results for a target.\n * @param uuid - The target UUID.\n * @returns The target profile response.\n */\n async getProfile(uuid: string): Promise<TargetProfileResponse> {\n assertUuid(uuid, 'target uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}/profile`,\n responseSchema: TargetProfileResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a target profile (background + additional context).\n * @param uuid - The target UUID.\n * @param body - The context update request body.\n * @returns The updated target response.\n */\n async updateProfile(uuid: string, body: TargetContextUpdate): Promise<TargetResponse> {\n assertUuid(uuid, 'target uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TARGET_PATH}/${uuid}/profile`,\n body,\n responseSchema: TargetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Validate target authentication credentials.\n * @param body - The auth validation request body.\n * @returns The auth validation response.\n */\n async validateAuth(body: TargetAuthValidationRequest): Promise<TargetAuthValidationResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_TARGET_VALIDATE_AUTH_PATH,\n body,\n responseSchema: TargetAuthValidationResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get target metadata (field definitions for target configuration).\n * @returns The target metadata object.\n */\n async getTargetMetadata(): Promise<Record<string, unknown>> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TEMPLATE_PATH}/target-metadata`,\n responseSchema: z.record(z.unknown()),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get target templates for all supported provider types.\n * @returns The collection of target templates keyed by provider.\n */\n async getTargetTemplates(): Promise<TargetTemplateCollection> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_TEMPLATE_PATH}/target-templates`,\n responseSchema: TargetTemplateCollectionSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { z } from 'zod';\nimport { RED_TEAM_CUSTOM_ATTACK_PATH, USER_AGENT } from '../constants.js';\nimport { AISecSDKException, ErrorType } from '../errors.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter, PreparedRequest } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { assertUuid } from '../validators.js';\nimport {\n BaseResponseSchema,\n CustomPromptSetResponseSchema,\n CustomPromptSetListSchema,\n CustomPromptSetListActiveSchema,\n CustomPromptSetReferenceSchema,\n CustomPromptSetVersionInfoSchema,\n CustomPromptResponseSchema,\n CustomPromptListSchema,\n PropertyNamesListResponseSchema,\n PropertyValuesResponseSchema,\n PropertyValuesMultipleResponseSchema,\n type CustomPromptSetCreateRequest,\n type CustomPromptSetUpdateRequest,\n type CustomPromptSetArchiveRequest,\n type CustomPromptSetResponse,\n type CustomPromptSetList,\n type CustomPromptSetListActive,\n type CustomPromptSetReference,\n type CustomPromptSetVersionInfo,\n type CustomPromptCreateRequest,\n type CustomPromptUpdateRequest,\n type CustomPromptResponse,\n type CustomPromptList,\n type PropertyNameCreateRequest,\n type PropertyValueCreateRequest,\n type PropertyNamesListResponse,\n type PropertyValuesResponse,\n type PropertyValuesMultipleResponse,\n type BaseResponse,\n} from '../models/red-team.js';\nimport type { RedTeamListOptions } from './scans-client.js';\n\n/** Prompt set list filter options. */\nexport interface PromptSetListOptions extends RedTeamListOptions {\n status?: string;\n active?: boolean;\n archive?: boolean;\n}\n\n/** Prompt list filter options. */\nexport interface PromptListOptions extends RedTeamListOptions {\n status?: string;\n active?: boolean;\n}\n\n/** @internal */\nexport interface RedTeamCustomAttacksClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team management plane custom attack operations. */\nexport class RedTeamCustomAttacksClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamCustomAttacksClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n // -----------------------------------------------------------------------\n // Prompt Set operations\n // -----------------------------------------------------------------------\n\n /**\n * Create a new custom prompt set.\n * @param body - Prompt set creation request body.\n * @returns The created prompt set response.\n */\n async createPromptSet(body: CustomPromptSetCreateRequest): Promise<CustomPromptSetResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set`,\n body,\n responseSchema: CustomPromptSetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List custom prompt sets.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of prompt sets.\n */\n async listPromptSets(opts?: PromptSetListOptions): Promise<CustomPromptSetList> {\n const params = serializeListing(opts);\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.active !== undefined) params.active = String(opts.active);\n if (opts?.archive !== undefined) params.archive = String(opts.archive);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/list-custom-prompt-sets`,\n params,\n responseSchema: CustomPromptSetListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a prompt set by UUID.\n * @param uuid - The prompt set UUID.\n * @returns The prompt set response.\n */\n async getPromptSet(uuid: string): Promise<CustomPromptSetResponse> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}`,\n responseSchema: CustomPromptSetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a prompt set.\n * @param uuid - The prompt set UUID.\n * @param body - Prompt set update request body.\n * @returns The updated prompt set response.\n */\n async updatePromptSet(\n uuid: string,\n body: CustomPromptSetUpdateRequest,\n ): Promise<CustomPromptSetResponse> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}`,\n body,\n responseSchema: CustomPromptSetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Archive or unarchive a prompt set.\n * @param uuid - The prompt set UUID.\n * @param body - Archive request body.\n * @returns The updated prompt set response.\n */\n async archivePromptSet(\n uuid: string,\n body: CustomPromptSetArchiveRequest,\n ): Promise<CustomPromptSetResponse> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}/archive`,\n body,\n responseSchema: CustomPromptSetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Resolve a prompt set reference for data plane consumption.\n * @param uuid - The prompt set UUID.\n * @returns The prompt set reference.\n */\n async getPromptSetReference(uuid: string): Promise<CustomPromptSetReference> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}/reference`,\n responseSchema: CustomPromptSetReferenceSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get version information for a prompt set.\n * @param uuid - The prompt set UUID.\n * @param opts - Optional query params (e.g. specific version ID).\n * @returns The prompt set version info.\n */\n async getPromptSetVersionInfo(\n uuid: string,\n opts?: { version?: string },\n ): Promise<CustomPromptSetVersionInfo> {\n assertUuid(uuid, 'prompt set uuid');\n const params: Record<string, string> = {};\n if (opts?.version !== undefined) params.version = opts.version;\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${uuid}/version-info`,\n params: Object.keys(params).length > 0 ? params : undefined,\n responseSchema: CustomPromptSetVersionInfoSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List active prompt sets (for data plane).\n * @returns The list of active prompt sets.\n */\n async listActivePromptSets(): Promise<CustomPromptSetListActive> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/active-custom-prompt-sets`,\n responseSchema: CustomPromptSetListActiveSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Download CSV template for a prompt set.\n * @param uuid - The prompt set UUID.\n * @returns The CSV template content (untyped — raw response from the API).\n */\n async downloadTemplate(uuid: string): Promise<unknown> {\n assertUuid(uuid, 'prompt set uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/download-template/${uuid}`,\n responseSchema: z.unknown(),\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Upload a CSV file of custom prompts for a prompt set.\n * Bypasses `request()` because the body is `FormData`, not JSON.\n * @param promptSetUuid - The prompt set UUID.\n * @param file - The CSV file blob.\n * @returns The upload response.\n */\n async uploadPromptsCsv(promptSetUuid: string, file: Blob): Promise<BaseResponse> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n\n const url = new URL(\n `${this.baseUrl.replace(/\\/+$/, '')}${RED_TEAM_CUSTOM_ATTACK_PATH}/upload-custom-prompts-csv`,\n );\n url.searchParams.set('prompt_set_uuid', promptSetUuid);\n\n const stub: PreparedRequest = {\n method: 'POST',\n url,\n headers: { 'User-Agent': USER_AGENT },\n };\n const prepared = await this.auth.prepare(stub);\n\n const formData = new FormData();\n formData.append('file', file);\n\n const response = await fetch(prepared.url.toString(), {\n method: 'POST',\n headers: prepared.headers,\n body: formData,\n });\n\n const text = await response.text();\n if (!response.ok) {\n throw new AISecSDKException(\n `Upload failed (${response.status}): ${text}`,\n ErrorType.SERVER_SIDE_ERROR,\n );\n }\n return text\n ? (JSON.parse(text) as BaseResponse)\n : ({ message: 'ok', status: 201 } as BaseResponse);\n }\n\n // -----------------------------------------------------------------------\n // Prompt operations\n // -----------------------------------------------------------------------\n\n /**\n * Create a new custom prompt.\n * @param body - Prompt creation request body.\n * @returns The created prompt response.\n */\n async createPrompt(body: CustomPromptCreateRequest): Promise<CustomPromptResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/custom-prompt`,\n body,\n responseSchema: CustomPromptResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List prompts in a prompt set.\n * @param promptSetUuid - The prompt set UUID.\n * @param opts - Optional pagination, search, and filter options.\n * @returns The paginated list of prompts.\n */\n async listPrompts(promptSetUuid: string, opts?: PromptListOptions): Promise<CustomPromptList> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n const params = serializeListing(opts);\n if (opts?.status !== undefined) params.status = opts.status;\n if (opts?.active !== undefined) params.active = String(opts.active);\n\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${promptSetUuid}/list-custom-prompts`,\n params,\n responseSchema: CustomPromptListSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get a prompt by UUID.\n * @param promptSetUuid - The prompt set UUID.\n * @param promptUuid - The prompt UUID.\n * @returns The prompt response.\n */\n async getPrompt(promptSetUuid: string, promptUuid: string): Promise<CustomPromptResponse> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n assertUuid(promptUuid, 'prompt uuid');\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${promptSetUuid}/custom-prompt/${promptUuid}`,\n responseSchema: CustomPromptResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update a prompt.\n * @param promptSetUuid - The prompt set UUID.\n * @param promptUuid - The prompt UUID.\n * @param body - Prompt update request body.\n * @returns The updated prompt response.\n */\n async updatePrompt(\n promptSetUuid: string,\n promptUuid: string,\n body: CustomPromptUpdateRequest,\n ): Promise<CustomPromptResponse> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n assertUuid(promptUuid, 'prompt uuid');\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${promptSetUuid}/custom-prompt/${promptUuid}`,\n body,\n responseSchema: CustomPromptResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a prompt.\n * @param promptSetUuid - The prompt set UUID.\n * @param promptUuid - The prompt UUID.\n * @returns The delete response.\n */\n async deletePrompt(promptSetUuid: string, promptUuid: string): Promise<BaseResponse> {\n assertUuid(promptSetUuid, 'prompt set uuid');\n assertUuid(promptUuid, 'prompt uuid');\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/custom-prompt-set/${promptSetUuid}/custom-prompt/${promptUuid}`,\n responseSchema: BaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n // -----------------------------------------------------------------------\n // Property operations\n // -----------------------------------------------------------------------\n\n /**\n * Get all property names.\n * @returns The list of property names.\n */\n async getPropertyNames(): Promise<PropertyNamesListResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-names`,\n responseSchema: PropertyNamesListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Create a new property name.\n * @param body - Property name creation request body.\n * @returns The creation response.\n */\n async createPropertyName(body: PropertyNameCreateRequest): Promise<BaseResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-names`,\n body,\n responseSchema: BaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get values for a property name.\n * @param propertyName - The property name to look up.\n * @returns The property values response.\n */\n async getPropertyValues(propertyName: string): Promise<PropertyValuesResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-values/${encodeURIComponent(propertyName)}`,\n responseSchema: PropertyValuesResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get values for multiple property names.\n * @param propertyNames - Array of property names to look up.\n * @returns The property values for all requested names.\n */\n async getPropertyValuesMultiple(\n propertyNames: string[],\n ): Promise<PropertyValuesMultipleResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-values`,\n params: { property_names: propertyNames },\n responseSchema: PropertyValuesMultipleResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Create a property value.\n * @param body - Property value creation request body.\n * @returns The creation response.\n */\n async createPropertyValue(body: PropertyValueCreateRequest): Promise<BaseResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_CUSTOM_ATTACK_PATH}/property-values`,\n body,\n responseSchema: BaseResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { RED_TEAM_EULA_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n EulaContentResponseSchema,\n EulaResponseSchema,\n type EulaAcceptRequest,\n type EulaContentResponse,\n type EulaResponse,\n} from '../models/red-team.js';\n\n/** @internal */\nexport interface RedTeamEulaClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team EULA management operations. */\nexport class RedTeamEulaClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamEulaClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Get the current EULA content.\n * @returns The EULA content response.\n */\n async getContent(): Promise<EulaContentResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_EULA_PATH}/content`,\n responseSchema: EulaContentResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get the current EULA acceptance status.\n * @returns The EULA status response.\n */\n async getStatus(): Promise<EulaResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_EULA_PATH}/status`,\n responseSchema: EulaResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Accept the EULA.\n * @param body - The acceptance request body.\n * @returns The EULA response with acceptance status.\n */\n async accept(body: EulaAcceptRequest): Promise<EulaResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_EULA_PATH}/accept`,\n body,\n responseSchema: EulaResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import { RED_TEAM_INSTANCES_PATH, RED_TEAM_REGISTRY_CREDENTIALS_PATH } from '../constants.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport {\n InstanceResponseSchema,\n InstanceGetResponseSchema,\n DeviceResponseSchema,\n RegistryCredentialsSchema,\n type InstanceRequest,\n type InstanceResponse,\n type InstanceGetResponse,\n type DeviceRequest,\n type DeviceResponse,\n type RegistryCredentials,\n} from '../models/red-team.js';\n\n/** @internal */\nexport interface RedTeamInstancesClientOptions {\n baseUrl: string;\n auth: AuthAdapter;\n numRetries: number;\n}\n\n/** Client for Red Team instance/licensing and registry credential operations. */\nexport class RedTeamInstancesClient {\n private readonly baseUrl: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamInstancesClientOptions) {\n this.baseUrl = opts.baseUrl;\n this.auth = opts.auth;\n this.numRetries = opts.numRetries;\n }\n\n /**\n * Create a new tenant instance.\n * @param body - The instance creation request.\n * @returns The instance response.\n */\n async createInstance(body: InstanceRequest): Promise<InstanceResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_INSTANCES_PATH,\n body,\n responseSchema: InstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get an existing tenant instance.\n * @param tenantId - The tenant ID.\n * @returns The instance details.\n */\n async getInstance(tenantId: string): Promise<InstanceGetResponse> {\n return request({\n method: 'GET',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}`,\n responseSchema: InstanceGetResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update an existing tenant instance.\n * @param tenantId - The tenant ID.\n * @param body - The instance update request.\n * @returns The instance response.\n */\n async updateInstance(tenantId: string, body: InstanceRequest): Promise<InstanceResponse> {\n return request({\n method: 'PUT',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}`,\n body,\n responseSchema: InstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete a tenant instance.\n * @param tenantId - The tenant ID.\n * @returns The instance response.\n */\n async deleteInstance(tenantId: string): Promise<InstanceResponse> {\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}`,\n responseSchema: InstanceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Create devices for a tenant instance.\n * @param tenantId - The tenant ID.\n * @param body - The device creation request.\n * @returns The device response with statuses.\n */\n async createDevices(tenantId: string, body: DeviceRequest): Promise<DeviceResponse> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}/devices`,\n body,\n responseSchema: DeviceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update devices for a tenant instance.\n * @param tenantId - The tenant ID.\n * @param body - The device update request.\n * @returns The device response with statuses.\n */\n async updateDevices(tenantId: string, body: DeviceRequest): Promise<DeviceResponse> {\n return request({\n method: 'PATCH',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}/devices`,\n body,\n responseSchema: DeviceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Delete devices from a tenant instance.\n * @param tenantId - The tenant ID.\n * @param serialNumbers - Comma-separated serial numbers to delete.\n * @returns The device response with statuses.\n */\n async deleteDevices(tenantId: string, serialNumbers: string): Promise<DeviceResponse> {\n return request({\n method: 'DELETE',\n baseUrl: this.baseUrl,\n path: `${RED_TEAM_INSTANCES_PATH}/${tenantId}/devices`,\n params: { serial_numbers: serialNumbers },\n responseSchema: DeviceResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get or create registry credentials.\n * @returns The registry credentials with token and expiry.\n */\n async getRegistryCredentials(): Promise<RegistryCredentials> {\n return request({\n method: 'POST',\n baseUrl: this.baseUrl,\n path: RED_TEAM_REGISTRY_CREDENTIALS_PATH,\n responseSchema: RegistryCredentialsSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n","import {\n DEFAULT_RED_TEAM_DATA_ENDPOINT,\n DEFAULT_RED_TEAM_MGMT_ENDPOINT,\n RED_TEAM_DATA_ENDPOINT,\n RED_TEAM_MGMT_ENDPOINT,\n RED_TEAM_DASHBOARD_PATH,\n RED_TEAM_QUOTA_PATH,\n RED_TEAM_ERROR_LOG_PATH,\n RED_TEAM_SENTIMENT_PATH,\n RED_TEAM_MGMT_DASHBOARD_PATH,\n} from '../constants.js';\nimport { OAuthAuth } from '../http/auth/oauth.js';\nimport { request } from '../http/request.js';\nimport type { AuthAdapter } from '../http/types.js';\nimport { serializeListing } from '../listing.js';\nimport { resolveOAuthConfig } from '../oauth-config.js';\nimport { assertUuid } from '../validators.js';\nimport { RedTeamScansClient, type RedTeamListOptions } from './scans-client.js';\nimport { RedTeamReportsClient } from './reports-client.js';\nimport { RedTeamCustomAttackReportsClient } from './custom-attack-reports-client.js';\nimport { RedTeamTargetsClient } from './targets-client.js';\nimport { RedTeamCustomAttacksClient } from './custom-attacks-client.js';\nimport { RedTeamEulaClient } from './eula-client.js';\nimport { RedTeamInstancesClient } from './instances-client.js';\nimport {\n ScanStatisticsResponseSchema,\n ScoreTrendResponseSchema,\n QuotaSummarySchema,\n ErrorLogListResponseSchema,\n SentimentResponseSchema,\n DashboardOverviewResponseSchema,\n type ScanStatisticsResponse,\n type ScoreTrendResponse,\n type QuotaSummary,\n type ErrorLogListResponse,\n type SentimentRequest,\n type SentimentResponse,\n type DashboardOverviewResponse,\n} from '../models/red-team.js';\n\n/** Options for constructing a {@link RedTeamClient}. */\nexport interface RedTeamClientOptions {\n /** OAuth2 client ID. Falls back to `PANW_RED_TEAM_CLIENT_ID`, then `PANW_MGMT_CLIENT_ID`. */\n clientId?: string;\n /** OAuth2 client secret. Falls back to `PANW_RED_TEAM_CLIENT_SECRET`, then `PANW_MGMT_CLIENT_SECRET`. */\n clientSecret?: string;\n /** Tenant Service Group ID. Falls back to `PANW_RED_TEAM_TSG_ID`, then `PANW_MGMT_TSG_ID`. */\n tsgId?: string;\n /** Data plane endpoint URL. Falls back to `PANW_RED_TEAM_DATA_ENDPOINT`. */\n dataEndpoint?: string;\n /** Management plane endpoint URL. Falls back to `PANW_RED_TEAM_MGMT_ENDPOINT`. */\n mgmtEndpoint?: string;\n /** OAuth2 token endpoint URL. Falls back to `PANW_RED_TEAM_TOKEN_ENDPOINT`, then `PANW_MGMT_TOKEN_ENDPOINT`. */\n tokenEndpoint?: string;\n /** Max retry attempts (0-5). Defaults to 5. */\n numRetries?: number;\n}\n\n/**\n * Client for AIRS Red Teaming API operations.\n * Uses two base URLs: data plane for scans/reports, management plane for targets/custom attacks.\n */\nexport class RedTeamClient {\n /** Data plane scan operations. */\n public readonly scans: RedTeamScansClient;\n /** Data plane report operations. */\n public readonly reports: RedTeamReportsClient;\n /** Data plane custom attack report operations. */\n public readonly customAttackReports: RedTeamCustomAttackReportsClient;\n /** Management plane target operations. */\n public readonly targets: RedTeamTargetsClient;\n /** Management plane custom attack/prompt set operations. */\n public readonly customAttacks: RedTeamCustomAttacksClient;\n /** Management plane EULA operations. */\n public readonly eula: RedTeamEulaClient;\n /** Management plane instance/licensing operations. */\n public readonly instances: RedTeamInstancesClient;\n\n private readonly dataEndpoint: string;\n private readonly mgmtEndpoint: string;\n private readonly auth: AuthAdapter;\n private readonly numRetries: number;\n\n constructor(opts: RedTeamClientOptions = {}) {\n const dataEndpoint =\n opts.dataEndpoint ?? process.env[RED_TEAM_DATA_ENDPOINT] ?? DEFAULT_RED_TEAM_DATA_ENDPOINT;\n const mgmtEndpoint =\n opts.mgmtEndpoint ?? process.env[RED_TEAM_MGMT_ENDPOINT] ?? DEFAULT_RED_TEAM_MGMT_ENDPOINT;\n\n const { oauthClient, numRetries } = resolveOAuthConfig({\n clientId: opts.clientId,\n clientSecret: opts.clientSecret,\n tsgId: opts.tsgId,\n baseUrl: dataEndpoint,\n numRetries: opts.numRetries,\n tokenEndpoint: opts.tokenEndpoint,\n primaryEnvPrefix: 'PANW_RED_TEAM',\n fallbackEnvPrefix: 'PANW_MGMT',\n });\n\n const auth = new OAuthAuth(oauthClient);\n this.auth = auth;\n this.dataEndpoint = dataEndpoint;\n this.mgmtEndpoint = mgmtEndpoint;\n this.numRetries = numRetries;\n\n this.scans = new RedTeamScansClient({ baseUrl: dataEndpoint, auth, numRetries });\n this.reports = new RedTeamReportsClient({ baseUrl: dataEndpoint, auth, numRetries });\n this.customAttackReports = new RedTeamCustomAttackReportsClient({\n baseUrl: dataEndpoint,\n auth,\n numRetries,\n });\n this.targets = new RedTeamTargetsClient({ baseUrl: mgmtEndpoint, auth, numRetries });\n this.customAttacks = new RedTeamCustomAttacksClient({\n baseUrl: mgmtEndpoint,\n auth,\n numRetries,\n });\n this.eula = new RedTeamEulaClient({ baseUrl: mgmtEndpoint, auth, numRetries });\n this.instances = new RedTeamInstancesClient({ baseUrl: mgmtEndpoint, auth, numRetries });\n }\n\n // -----------------------------------------------------------------------\n // Data plane convenience methods\n // -----------------------------------------------------------------------\n\n /**\n * Get scan statistics and risk profile (data plane dashboard).\n * @param params - Optional date range and target ID filters.\n * @returns The scan statistics response.\n */\n async getScanStatistics(params?: {\n date_range?: string;\n target_id?: string;\n }): Promise<ScanStatisticsResponse> {\n const p: Record<string, string> = {};\n if (params?.date_range !== undefined) p.date_range = params.date_range;\n if (params?.target_id !== undefined) p.target_id = params.target_id;\n\n return request({\n method: 'GET',\n baseUrl: this.dataEndpoint,\n path: `${RED_TEAM_DASHBOARD_PATH}/scan-statistics`,\n params: p,\n responseSchema: ScanStatisticsResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get score trend for a target (data plane dashboard).\n * @param targetId - The target UUID.\n * @returns The score trend response.\n */\n async getScoreTrend(targetId: string): Promise<ScoreTrendResponse> {\n assertUuid(targetId, 'target id');\n return request({\n method: 'GET',\n baseUrl: this.dataEndpoint,\n path: `${RED_TEAM_DASHBOARD_PATH}/score-trend`,\n params: { target_id: targetId },\n responseSchema: ScoreTrendResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get quota summary.\n * @returns The quota summary.\n */\n async getQuota(): Promise<QuotaSummary> {\n return request({\n method: 'POST',\n baseUrl: this.dataEndpoint,\n path: RED_TEAM_QUOTA_PATH,\n responseSchema: QuotaSummarySchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * List error logs for a scan job.\n * @param jobId - The job UUID.\n * @param opts - Optional pagination and search options.\n * @returns The paginated list of error logs.\n */\n async getErrorLogs(jobId: string, opts?: RedTeamListOptions): Promise<ErrorLogListResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.dataEndpoint,\n path: `${RED_TEAM_ERROR_LOG_PATH}/${jobId}`,\n params: serializeListing(opts),\n responseSchema: ErrorLogListResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Update sentiment for a scan report.\n * @param body - The sentiment request body.\n * @returns The sentiment response.\n */\n async updateSentiment(body: SentimentRequest): Promise<SentimentResponse> {\n return request({\n method: 'POST',\n baseUrl: this.dataEndpoint,\n path: RED_TEAM_SENTIMENT_PATH,\n body,\n responseSchema: SentimentResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n /**\n * Get sentiment for a scan report.\n * @param jobId - The job UUID.\n * @returns The sentiment response.\n */\n async getSentiment(jobId: string): Promise<SentimentResponse> {\n assertUuid(jobId, 'job id');\n return request({\n method: 'GET',\n baseUrl: this.dataEndpoint,\n path: `${RED_TEAM_SENTIMENT_PATH}/${jobId}`,\n responseSchema: SentimentResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n\n // -----------------------------------------------------------------------\n // Management plane convenience methods\n // -----------------------------------------------------------------------\n\n /**\n * Get management dashboard overview.\n * @returns The dashboard overview response.\n */\n async getDashboardOverview(): Promise<DashboardOverviewResponse> {\n return request({\n method: 'GET',\n baseUrl: this.mgmtEndpoint,\n path: RED_TEAM_MGMT_DASHBOARD_PATH,\n responseSchema: DashboardOverviewResponseSchema,\n auth: this.auth,\n numRetries: this.numRetries,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["ErrorType","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod"]}
|