{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/palo-alto-networks/main/json-schema/palo-alto-networks-job-response-schema-schema.json", "title": "JobResponseSchema", "description": "Job response schema. ONLY to be used in API response.", "x-generated": "2026-10-04", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/palo-alto-networks-scan-api-openapi.yml#/components/schemas/JobResponseSchema", "properties": { "uuid": { "type": "string", "format": "uuid", "title": "Uuid" }, "tsg_id": { "type": "string", "title": "Tsg Id" }, "name": { "type": "string", "maxLength": 255, "minLength": 3, "title": "Name", "description": "Job name (3-255 characters)" }, "target": { "$ref": "#/$defs/TargetReferenceSchema", "description": "Full target configuration" }, "job_type": { "$ref": "#/$defs/JobType", "description": "Type of job to execute" }, "job_metadata": { "anyOf": [ { "$ref": "#/$defs/StaticJobMetadata" }, { "$ref": "#/$defs/DynamicJobMetadata" }, { "$ref": "#/$defs/CustomJobMetadata" }, { "$ref": "#/$defs/ClaraJobMetadata" } ], "title": "Job Metadata", "description": "Job-specific metadata" }, "version": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Version", "description": "Job version" }, "extra_info": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Extra Info" }, "target_id": { "type": "string", "format": "uuid", "title": "Target Id", "description": "Target UUID (denormalized)" }, "target_type": { "type": "string", "title": "Target Type", "description": "Target type (APPLICATION, AGENT, MODEL)" }, "total": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Total", "description": "Total tasks in job" }, "completed": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Completed", "description": "Completed tasks" }, "status": { "$ref": "#/$defs/JobStatus", "description": "Current job status", "default": "INIT" }, "score": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Score", "description": "Overall job performance score (0-100)" }, "asr": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Asr", "description": "Updated Attack Success Rate (0-100)" }, "time_record": { "anyOf": [ { "$ref": "#/$defs/JobTimeRecord" }, { "type": "null" } ], "description": "Job timing information" }, "created_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Created At", "description": "Creation timestamp" }, "updated_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updated At", "description": "Last update timestamp" }, "created_by_user_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Created By User Id", "description": "UUID of the user creating this job" }, "report_stats": { "anyOf": [ { "$ref": "#/$defs/StaticJobReportStats" }, { "$ref": "#/$defs/DynamicJobReportStats" }, { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Report Stats", "description": "Report statistics (StaticJobReportStats for STATIC/CUSTOM jobs, DynamicJobReportStats for DYNAMIC jobs)" }, "metering_quota_uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Metering Quota Uuid", "description": "UUID of the metering quota used for this job" }, "counted_towards_quota": { "$ref": "#/$defs/CountedQuotaEnum", "description": "Whether this job is counted towards quota consumption", "default": "HELD" }, "invocation_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Invocation Id", "description": "Restate invocationId of this job" } }, "type": "object", "required": [ "uuid", "tsg_id", "name", "target", "job_type", "job_metadata", "target_id", "target_type" ], "$defs": { "ApiEndpointType": { "type": "string", "enum": [ "PUBLIC", "PRIVATE", "NETWORK_BROKER" ], "title": "ApiEndpointType", "description": "API endpoint accessibility type." }, "AuthType": { "type": "string", "enum": [ "HEADERS", "BASIC_AUTH", "OAUTH2", "CUSTOM_TARGET_ADAPTER" ], "title": "AuthType", "description": "Authentication method for target API access." }, "BrandSubCategory": { "type": "string", "enum": [ "COMPETITOR_ENDORSEMENTS", "BRAND_TARNISHING_SELF_CRITICISM", "DISCRIMINATING_CLAIMS", "POLITICAL_ENDORSEMENTS" ], "title": "BrandSubCategory" }, "Category": { "type": "string", "enum": [ "SECURITY", "SAFETY", "COMPLIANCE", "BRAND" ], "title": "Category" }, "ClaraJobMetadata": { "properties": { "scan_name": { "type": "string", "maxLength": 255, "minLength": 3, "title": "Scan Name" }, "categories": { "additionalProperties": { "items": { "anyOf": [ { "$ref": "#/$defs/SecuritySubCategory" }, { "$ref": "#/$defs/SafetySubCategory" }, { "$ref": "#/$defs/BrandSubCategory" }, { "$ref": "#/$defs/ComplianceSubCategory" } ] }, "type": "array" }, "propertyNames": { "$ref": "#/$defs/Category" }, "type": "object", "title": "Categories", "description": "Auto-derived from uploaded prompt data — determines report sections" }, "language": { "type": "null", "title": "Language", "description": "Always None — CLARA is English-only" } }, "type": "object", "required": [ "scan_name" ], "title": "ClaraJobMetadata", "description": "Metadata for CLARA scan jobs. Intentionally minimal —\nno rate_limit/content_filter since CLARA doesn't execute attacks.\n" }, "ComplianceSubCategory": { "type": "string", "enum": [ "OWASP", "MITRE_ATLAS", "NIST", "DASF_V2" ], "title": "ComplianceSubCategory" }, "CountedQuotaEnum": { "type": "string", "enum": [ "HELD", "COUNTED", "NOT_COUNTED" ], "title": "CountedQuotaEnum", "description": "Enum for counting Quota." }, "CustomJobMetadata": { "properties": { "rate_limit_enabled": { "type": "boolean", "title": "Rate Limit Enabled", "default": false }, "rate_limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Rate Limit" }, "rate_limit_error_code": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Rate Limit Error Code" }, "rate_limit_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Rate Limit Error Message" }, "rate_limit_error_json": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Rate Limit Error Json" }, "content_filter_enabled": { "type": "boolean", "title": "Content Filter Enabled", "description": "Enable content filtering", "default": false }, "content_filter_error_code": { "anyOf": [ { "type": "integer", "maximum": 599.0, "minimum": 400.0 }, { "type": "null" } ], "title": "Content Filter Error Code", "description": "HTTP error code for content filter (400-599)" }, "content_filter_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Content Filter Error Message", "description": "Content filter error message" }, "content_filter_error_json": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Content Filter Error Json" }, "language": { "anyOf": [ { "$ref": "#/$defs/LanguageOptionSchema" }, { "type": "null" } ], "description": "Language for this scan. None = English." }, "custom_prompt_sets": { "items": { "type": "string", "format": "uuid" }, "type": "array", "minItems": 1, "title": "Custom Prompt Sets", "description": "List of custom prompt set UUIDs" } }, "type": "object", "required": [ "custom_prompt_sets" ], "title": "CustomJobMetadata", "description": "Enhanced metadata for custom attack jobs." }, "DynamicJobMetadata": { "properties": { "rate_limit_enabled": { "type": "boolean", "title": "Rate Limit Enabled", "default": false }, "rate_limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Rate Limit" }, "rate_limit_error_code": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Rate Limit Error Code" }, "rate_limit_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Rate Limit Error Message" }, "rate_limit_error_json": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Rate Limit Error Json" }, "content_filter_enabled": { "type": "boolean", "title": "Content Filter Enabled", "description": "Enable content filtering", "default": false }, "content_filter_error_code": { "anyOf": [ { "type": "integer", "maximum": 599.0, "minimum": 400.0 }, { "type": "null" } ], "title": "Content Filter Error Code", "description": "HTTP error code for content filter (400-599)" }, "content_filter_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Content Filter Error Message", "description": "Content filter error message" }, "content_filter_error_json": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Content Filter Error Json" }, "language": { "anyOf": [ { "$ref": "#/$defs/LanguageOptionSchema" }, { "type": "null" } ], "description": "Language for this scan. None = English." }, "stream_breadth": { "type": "integer", "maximum": 20.0, "minimum": 1.0, "title": "Stream Breadth", "description": "Number of parallel attack streams (1-20)", "default": 6 }, "stream_depth": { "type": "integer", "maximum": 20.0, "minimum": 1.0, "title": "Stream Depth", "description": "Depth of each attack stream (1-20)", "default": 10 }, "max_tokens": { "type": "integer", "maximum": 4096.0, "minimum": 128.0, "title": "Max Tokens", "description": "Maximum tokens per response (128-4096)", "default": 256 }, "context_size": { "type": "integer", "maximum": 20.0, "minimum": 1.0, "title": "Context Size", "description": "Context window size (1-20)", "default": 10 }, "attack_goals": { "items": { "type": "string" }, "type": "array", "title": "Attack Goals", "description": "List of attack objectives" }, "base_model": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Base Model", "description": "Base model identifier" }, "use_case": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Use Case", "description": "Attack use case description" }, "system_prompt": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "System Prompt", "description": "Custom system prompt" }, "goal_categories": { "anyOf": [ { "items": { "$ref": "#/$defs/GoalCategory" }, "type": "array" }, { "type": "null" } ], "title": "Goal Categories", "description": "Selected goal categories for this scan. Valid values: GOAL_MANIPULATION, PRIVILEGE_MISUSE, TOOL_MISUSE, TOOL_CHAINING, TOXIC_CONTENT_GENERATION. Only used when goal_categories feature flag is enabled." } }, "type": "object", "title": "DynamicJobMetadata", "description": "Enhanced metadata for dynamic attack jobs with proper constraints." }, "DynamicJobReportStats": { "properties": { "total_goals": { "type": "integer", "minimum": 0.0, "title": "Total Goals", "description": "Total number of goals tested", "default": 0 }, "total_streams": { "type": "integer", "minimum": 0.0, "title": "Total Streams", "description": "Total number of attack streams", "default": 0 }, "total_threats": { "type": "integer", "minimum": 0.0, "title": "Total Threats", "description": "Total number of threats detected", "default": 0 }, "goals_achieved": { "type": "integer", "minimum": 0.0, "title": "Goals Achieved", "description": "Number of goals with at least one threat", "default": 0 }, "report_summary": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Report Summary", "description": "LLM-generated executive summary for the dynamic job" } }, "type": "object", "title": "DynamicJobReportStats" }, "GoalCategory": { "type": "string", "enum": [ "GOAL_MANIPULATION", "PRIVILEGE_MISUSE", "TOOL_MISUSE", "TOOL_CHAINING", "TOXIC_CONTENT_GENERATION", "CUSTOM" ], "title": "GoalCategory" }, "JobStatus": { "type": "string", "enum": [ "INIT", "QUEUED", "RUNNING", "COMPLETED", "PARTIALLY_COMPLETE", "FAILED", "ABORTED" ], "title": "JobStatus", "description": "Complete job status enum including internal INIT status." }, "JobTimeRecord": { "properties": { "queued_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Queued At", "description": "Job queue timestamp" }, "started_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Started At", "description": "Job start timestamp" }, "completed_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Completed At", "description": "Job completion timestamp" }, "time_taken": { "anyOf": [ { "type": "string", "format": "duration" }, { "type": "null" } ], "title": "Time Taken", "description": "Total execution time" } }, "type": "object", "title": "JobTimeRecord", "description": "Enhanced time tracking with validation." }, "JobType": { "type": "string", "enum": [ "STATIC", "DYNAMIC", "CUSTOM", "CLARA" ], "title": "JobType", "description": "Type of job execution." }, "LanguageOptionSchema": { "properties": { "code": { "type": "string", "title": "Code" }, "name": { "type": "string", "title": "Name" } }, "type": "object", "required": [ "code", "name" ], "title": "LanguageOptionSchema", "description": "Language representation with code and display name." }, "ProfilingStatus": { "type": "string", "enum": [ "INIT", "QUEUED", "IN_PROGRESS", "COMPLETED", "FAILED", "PARTIALLY_COMPLETE" ], "title": "ProfilingStatus", "description": "Status of target profiling workflow." }, "ResponseMode": { "type": "string", "enum": [ "REST", "STREAMING", "WEBSOCKET", "WEBSOCKET_STREAMING" ], "title": "ResponseMode", "description": "Response mode for target interactions." }, "SafetySubCategory": { "type": "string", "enum": [ "BIAS", "CBRN", "CYBERCRIME", "DRUGS", "HATE_TOXIC_ABUSE", "NON_VIOLENT_CRIMES", "POLITICAL", "SELF_HARM", "SEXUAL", "VIOLENT_CRIMES_WEAPONS" ], "title": "SafetySubCategory" }, "SecuritySubCategory": { "type": "string", "enum": [ "ADVERSARIAL_SUFFIX", "EVASION", "INDIRECT_PROMPT_INJECTION", "JAILBREAK", "MULTI_TURN", "PROMPT_INJECTION", "REMOTE_CODE_EXECUTION", "SYSTEM_PROMPT_LEAK", "TOOL_LEAK", "MALWARE_GENERATION" ], "title": "SecuritySubCategory" }, "StaticJobMetadata": { "properties": { "rate_limit_enabled": { "type": "boolean", "title": "Rate Limit Enabled", "default": false }, "rate_limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Rate Limit" }, "rate_limit_error_code": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Rate Limit Error Code" }, "rate_limit_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Rate Limit Error Message" }, "rate_limit_error_json": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Rate Limit Error Json" }, "content_filter_enabled": { "type": "boolean", "title": "Content Filter Enabled", "description": "Enable content filtering", "default": false }, "content_filter_error_code": { "anyOf": [ { "type": "integer", "maximum": 599.0, "minimum": 400.0 }, { "type": "null" } ], "title": "Content Filter Error Code", "description": "HTTP error code for content filter (400-599)" }, "content_filter_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Content Filter Error Message", "description": "Content filter error message" }, "content_filter_error_json": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Content Filter Error Json" }, "language": { "anyOf": [ { "$ref": "#/$defs/LanguageOptionSchema" }, { "type": "null" } ], "description": "Language for this scan. None = English." }, "categories": { "additionalProperties": { "items": { "anyOf": [ { "$ref": "#/$defs/SecuritySubCategory" }, { "$ref": "#/$defs/SafetySubCategory" }, { "$ref": "#/$defs/BrandSubCategory" }, { "$ref": "#/$defs/ComplianceSubCategory" } ] }, "type": "array" }, "propertyNames": { "$ref": "#/$defs/Category" }, "type": "object", "title": "Categories", "description": "Attack categories and their subcategories" }, "include_file_attacks": { "type": "boolean", "title": "Include File Attacks", "description": "Start-scan toggle: when true, include multimodal file (document) attacks alongside text for the selected categories — but only for targets whose validation probe found them file-capable. When false (default), the scan is text-only.", "default": false } }, "type": "object", "required": [ "categories" ], "title": "StaticJobMetadata", "description": "Enhanced metadata for static attack jobs with validation." }, "StaticJobReportStats": { "properties": { "output_completion_percentage": { "type": "number", "minimum": 0.0, "title": "Output Completion Percentage", "description": "Percentage of attack outputs that completed successfully (0-100)" }, "partial_report_unlocked": { "type": "boolean", "title": "Partial Report Unlocked", "description": "Whether user has unlocked this partial report with a credit", "default": false }, "partial_report_unlocked_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Partial Report Unlocked At", "description": "Timestamp when the partial report was unlocked" }, "report_summary": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Report Summary", "description": "Report summary from the LLM for the statics job run" } }, "type": "object", "required": [ "output_completion_percentage" ], "title": "StaticJobReportStats", "description": "Report statistics for static jobs stored in job.report_stats JSONB field.\nTracks output completion and partial report unlock status.\n" }, "TargetAdditionalContext": { "properties": { "base_model": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Base Model", "description": "Base model name (e.g., GPT-4, Claude)" }, "core_architecture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Core Architecture", "description": "Core architecture details" }, "system_prompt": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "System Prompt", "description": "System prompt" }, "languages_supported": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Languages Supported", "description": "Supported languages" }, "banned_keywords": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Banned Keywords", "description": "Banned keywords/phrases" }, "tools_accessible": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Tools Accessible", "description": "Accessible tools/capabilities" } }, "type": "object", "title": "TargetAdditionalContext", "description": "Additional context - used in create/update API requests and stored in DB/GCS.\n\nSingle value fields are strings.\nList fields are lists of strings.\n" }, "TargetBackground": { "properties": { "industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Industry", "description": "Target's industry (e.g., Healthcare, Finance)" }, "use_case": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Use Case", "description": "Primary use case (e.g., Customer Support, Code Assistant)" }, "competitors": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Competitors", "description": "Known competitor products" }, "agentic_profiling_enabled": { "type": "boolean", "title": "Agentic Profiling Enabled", "description": "Whether agentic profiling is enabled for this target", "default": true } }, "type": "object", "title": "TargetBackground", "description": "Target background - used in create/update API requests and stored in DB/GCS.\n\nRequired fields for activation:\n- industry (string, required)\n- use_case (string, required)\n\nOptional field:\n- competitors (list of strings)\n" }, "TargetConnectionType": { "type": "string", "enum": [ "DATABRICKS", "BEDROCK", "OPENAI", "HUGGING_FACE", "CUSTOM", "REST", "STREAMING", "WEBSOCKET", "WEBSOCKET_STREAMING", "MS_COPILOT_STUDIO", "CUSTOM_TARGET_ADAPTER" ], "title": "TargetConnectionType", "description": "Connection type/provider for the target." }, "TargetMetadata": { "properties": { "multi_turn": { "type": "boolean", "title": "Multi Turn", "description": "Whether target supports multi-turn conversations (Probe 2 result)", "default": false }, "multi_turn_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Multi Turn Error Message", "description": "Concise error message if Probe 2 failed" }, "supports_multimodal_files": { "type": "boolean", "title": "Supports Multimodal Files", "description": "Whether the target accepted a sample file attack at validation time (Probe 3). When False, scans against this target run text-only.", "default": false }, "supports_multimodal_files_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Supports Multimodal Files Error Message", "description": "Concise error message if the multimodal file probe failed" }, "rate_limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Rate Limit", "description": "Current rate limit value" }, "rate_limit_enabled": { "type": "boolean", "title": "Rate Limit Enabled", "description": "Whether rate limiting is enabled", "default": false }, "rate_limit_error_code": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Rate Limit Error Code", "description": "HTTP status code for rate limit errors" }, "rate_limit_error_json": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Rate Limit Error Json", "description": "JSON structure of rate limit error response" }, "rate_limit_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Rate Limit Error Message", "description": "Raw error message string for rate limit errors" }, "content_filter_enabled": { "type": "boolean", "title": "Content Filter Enabled", "description": "Whether content filtering is enabled", "default": false }, "content_filter_error_code": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Content Filter Error Code", "description": "HTTP status code for content filter errors" }, "content_filter_error_json": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Content Filter Error Json", "description": "JSON structure of content filter error response" }, "content_filter_error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Content Filter Error Message", "description": "Raw error message string for content filter errors" }, "probe_message": { "type": "string", "title": "Probe Message", "default": "Hello, this is a test message from the red team validation system." }, "request_timeout": { "type": "number", "title": "Request Timeout", "description": "Request timeout in seconds", "default": 110 } }, "type": "object", "title": "TargetMetadata", "description": "Metadata stored in the database for targets (user-provided + computed fields).\n\nInherits the multimodal-capability fields from ``MultiModalResult`` and the\nmulti-turn fields from ``MultiTurnResult``. The base order\n``(MultiModalResult, MultiTurnResult)`` keeps the serialized field order\n``multi_turn, multi_turn_error_message, supports_multimodal_files,\nsupports_multimodal_files_error_message, rate_limit, …`` identical to before this\nrefactor — which preserves the Restate journal bytes for pre-V4 in-flight scans.\n" }, "TargetReferenceSchema": { "properties": { "uuid": { "type": "string", "format": "uuid", "title": "Uuid" }, "tsg_id": { "type": "string", "title": "Tsg Id" }, "name": { "type": "string", "title": "Name", "description": "Target name" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description", "description": "Optional target description", "default": null }, "target_type": { "anyOf": [ { "$ref": "#/$defs/TargetType" }, { "type": "null" } ], "description": "Type of target" }, "connection_type": { "anyOf": [ { "$ref": "#/$defs/TargetConnectionType" }, { "type": "null" } ], "description": "Connection type/provider for the target" }, "api_endpoint_type": { "anyOf": [ { "$ref": "#/$defs/ApiEndpointType" }, { "type": "null" } ], "description": "Accessibility type of the API endpoint" }, "response_mode": { "anyOf": [ { "$ref": "#/$defs/ResponseMode" }, { "type": "null" } ], "description": "Response mode for API interactions" }, "auth_type": { "anyOf": [ { "$ref": "#/$defs/AuthType" }, { "type": "null" } ], "description": "Authentication method for target API access" }, "session_supported": { "type": "boolean", "title": "Session Supported", "description": "Whether target supports session for multi-turn conversations", "default": false }, "extra_info": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Extra Info", "description": "Additional configuration or metadata for the target", "default": {} }, "adapter_uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Adapter Uuid", "description": "Custom adapter this target uses. Required when connection_type is CUSTOM_TARGET_ADAPTER; must be null for every other connection type." }, "status": { "$ref": "#/$defs/TargetStatus", "description": "Target status" }, "active": { "type": "boolean", "title": "Active", "description": "Whether target is active" }, "validated": { "type": "boolean", "title": "Validated", "description": "Whether target is validated" }, "version": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Version", "description": "Configuration version" }, "secret_version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Secret Version", "description": "Secret Manager version for connection_params. When present, sensitive connection data is stored in Secret Manager. When None, connection_params are stored in GCS (legacy)." }, "created_by_user_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Created By User Id", "description": "User ID of target creator" }, "updated_by_user_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Updated By User Id", "description": "User ID of last target updater" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At", "description": "Creation timestamp" }, "updated_at": { "type": "string", "format": "date-time", "title": "Updated At", "description": "Last update timestamp" }, "profiling_status": { "anyOf": [ { "$ref": "#/$defs/ProfilingStatus" }, { "type": "null" } ], "description": "Status of the profiling workflow" }, "canonical_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Canonical Id", "description": "Partner-supplied stable identifier. Null for targets without partner integration metadata (most targets)." }, "target_metadata": { "$ref": "#/$defs/TargetMetadata", "description": "Target metadata and configuration options" }, "adapter_secret_version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Adapter Secret Version", "description": "Frozen Secret Manager version of the referenced adapter, pinned at scan (job) creation so an adapter edited mid-scan doesn't change the script/secrets that scan uses. Server-managed; null for non-adapter targets." }, "target_background": { "anyOf": [ { "$ref": "#/$defs/TargetBackground" }, { "type": "null" } ], "description": "Target background info: industry, use_case, competitors" }, "profiling_progress": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Profiling Progress", "description": "Profiling progress percentage (0–100)" }, "additional_context": { "anyOf": [ { "$ref": "#/$defs/TargetAdditionalContext" }, { "type": "null" } ], "description": "Additional context with source tracking (user + profiler)" } }, "type": "object", "required": [ "uuid", "tsg_id", "name", "status", "active", "validated", "created_at", "updated_at" ], "title": "TargetReferenceSchema" }, "TargetStatus": { "type": "string", "enum": [ "DRAFT", "VALIDATING", "VALIDATED", "ACTIVE", "INACTIVE", "FAILED", "PENDING_AUTH" ], "title": "TargetStatus", "description": "Status enumeration for scan targets." }, "TargetType": { "type": "string", "enum": [ "APPLICATION", "AGENT", "MODEL" ], "title": "TargetType", "description": "Target Types Available" } } }