{"type":"api","title":"List AI Validation Jobs","meta":{"id":"/apps/pubhub/media/ai-defense-management-api/5e02ab7415425725ff5bd941112be2bb3794df69/262737b2-b3c2-32cd-b07b-fdbdcd23918f","info":{"title":"API for Cisco AI Defense platform services","description":"API for Cisco AI Defense platform services","version":"1.1.0","contact":{"name":"API Support","url":"https://www.cisco.com/site/us/en/products/security/ai-defense/index.html"},"license":{"name":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}},"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"Policies","description":"API endpoints for AI Defense policy management"},{"name":"Applications","description":"API endpoints for AI Defense application management"},{"name":"Connections","description":"API endpoints for AI Defense connection management"},{"name":"Events","description":"API endpoints for AI Defense runtime events management"},{"name":"AiValidationAPI"},{"name":"AwsCredentialsService"},{"name":"ScanManagerAPI"},{"name":"MCP Registry (Beta)"},{"name":"Resource Connections (Beta)","description":"API endpoints for AI Defense resource connection management"}],"x-parser-conf":{"overview":{"markdownPath":"reference/overview.md"}},"swagger":"2.0","host":"api.security.cisco.com","basePath":"/api/ai-defense/v1","schemes":["https"],"securityDefinitions":{"ApiKeyAuth":{"type":"apiKey","description":"API key for tenant authentication","name":"X-Cisco-AI-Defense-Tenant-API-Key","in":"header"}}},"spec":{"summary":"List AI Validation Jobs","description":"Retrieves a list of AI validation jobs with comprehensive filtering, sorting, and offset-based pagination support. Follows standard product pagination pattern with limit/offset. Includes detailed job information, configuration details, and attack counts.","operationId":"AiValidationAPI_ListAiValidationJobs","responses":{"200":{"description":"A successful response.","schema":{"type":"object","example":{"jobs":[{"job":{"task_id":"b0902628-89a5-4c3c-9145-f0e4c1adcd72","status":"JOB_COMPLETED","started_at":"2023-10-01T12:05:00Z"},"config":{"validation_scan_name":"Test Validation","asset_type":"APPLICATION"},"attack_counts":{"num_attacks":100,"num_successful_attacks":15}}],"paging":{"count":20,"offset":0,"total":150}},"properties":{"jobs":{"type":"array","items":{"type":"object","example":{"job":{"task_id":"b0902628-89a5-4c3c-9145-f0e4c1adcd72","status":"JOB_COMPLETED","started_at":"2023-10-01T12:05:00Z"},"config":{"validation_scan_name":"Test Validation","asset_type":"APPLICATION"},"attack_counts":{"num_attacks":100,"num_successful_attacks":15}},"properties":{"job":{"title":"Reuse existing job details structure","type":"object","example":{"task_id":"b0902628-89a5-4c3c-9145-f0e4c1adcd72","tenant_id":"tenant_id","config_id":"config_id","run_count":1,"status":"JOB_CREATED","progress":50,"total_num_prompts":100,"error_message":"","created_at":"2023-10-01T12:00:00Z","started_at":"2023-10-01T12:05:00Z","completed_at":"2023-10-01T12:10:00Z"},"properties":{"task_id":{"type":"string","title":"task_id is the id of the temporal workflow","description":"task_id is the id of the temporal workflow"},"tenant_id":{"type":"string","title":"tenant_id is the tenant used to run the ai_validation_job","description":"tenant_id is the tenant used to run the ai_validation_job"},"config_id":{"type":"string","title":"config_id is the configuration used to configure the model validation run, see table model_validation_config","description":"config_id is the configuration used to configure the model validation run, see table model_validation_config"},"run_count":{"type":"integer","format":"int64","title":"run_count is the number of runs performed, will increment if temporal task fails, we will retry up to 5 times","description":"run_count is the number of runs performed, will increment if temporal task fails, we will retry up to 5 times"},"status":{"title":"status shows if the ai_validation_job is Status_Unkown, Created, In_Process, Failed or Completed","type":"string","enum":["STATUS_UNKNOWN","JOB_CREATED","JOB_IN_PROGRESS","JOB_COMPLETED","JOB_FAILED"],"default":"STATUS_UNKNOWN","description":"Enum values not prefixed with JOB_STATUS_ to preserve backwards compatibility\nwith existing clients, database values, and API contracts.\n\n - STATUS_UNKNOWN: ENUM_VALUE_PREFIX\nENUM_ZERO_VALUE_SUFFIX\n\nDefault unknown state\n - JOB_CREATED: ENUM_VALUE_PREFIX\n\nJob has been created\n - JOB_IN_PROGRESS: ENUM_VALUE_PREFIX\n\nJob is currently in progress\n - JOB_COMPLETED: ENUM_VALUE_PREFIX\n\nJob has been completed successfully\n - JOB_FAILED: ENUM_VALUE_PREFIX\n\nJob has failed","$$ref":"#/definitions/v1JobStatus"},"progress":{"type":"integer","format":"int64","title":"progress is the percent (0-100) of the current ai_validation_job completed - based on ai_validation_results","description":"progress is the percent (0-100) of the current ai_validation_job completed - based on ai_validation_results"},"total_num_prompts":{"type":"integer","format":"int64","title":"total_num_prompts is the total number of prompts in the Prompt bank / corpus used for ai_validation","description":"total_num_prompts is the total number of prompts in the Prompt bank / corpus used for ai_validation"},"error_message":{"type":"string","title":"error_message is the reason why ai_validation_job failed e.g. issue with temporal","description":"error_message is the reason why ai_validation_job failed e.g. issue with temporal"},"created_at":{"type":"string","format":"date-time","title":"created_at is the timestamp the ai_validation_job was created","description":"created_at is the timestamp the ai_validation_job was created"},"started_at":{"type":"string","format":"date-time","title":"started_at is the timestamp the ai_validation_job was started","description":"started_at is the timestamp the ai_validation_job was started"},"completed_at":{"type":"string","format":"date-time","title":"completed_at is the timestamp the ai_validation_job was completed","description":"completed_at is the timestamp the ai_validation_job was completed"}},"description":"Response for getting an AI validation job. Contains details about the job including its status, progress, and timestamps.","$$ref":"#/definitions/v1AiValidationJobsResponseDetails"},"config":{"type":"object","example":{"config_id":"b0902628-89a5-4c3c-9145-f0e4c1adcd72","tenant_id":"tenant_id","asset_type":"MODEL","application_id":"application_id","ai_asset_name":"model_name","validation_scan_name":"validation_scan_name","model_provider":"Anthropic","model_endpoint_url_model_id":"https://api.anthropic.com/v1/models/claude-2","model_request_template":"{\"prompt\": \"{{prompt}}\"}","model_response_json_path":"response.text","created_at":"2023-10-01T12:00:00Z","updated_at":"2023-10-01T12:05:00Z"},"properties":{"config_id":{"type":"string","title":"config_id is the configuration used to configure the model validation run, see table model_validation_config","description":"config_id is the configuration used to configure the model validation run, see table model_validation_config"},"tenant_id":{"type":"string","title":"tenant_id is the tenant used to run the ai_validation_job","description":"tenant_id is the tenant used to run the ai_validation_job"},"asset_type":{"title":"asset_type is the asset type e.g. Model or Application","type":"string","enum":["UNKNOWN","APPLICATION","MODEL","EXTERNAL"],"default":"UNKNOWN","description":"Enum values not prefixed with ASSET_TYPE_ to preserve backwards compatibility\nwith existing clients, database values, and API contracts.\n\n - UNKNOWN: ENUM_VALUE_PREFIX\nENUM_ZERO_VALUE_SUFFIX\n - APPLICATION: ENUM_VALUE_PREFIX\n - MODEL: ENUM_VALUE_PREFIX\n - EXTERNAL: ENUM_VALUE_PREFIX","$$ref":"#/definitions/v1AssetType"},"application_id":{"type":"string","title":"application_id is the application used to run the ai_validation_job\nwe only have application_id if asset_type is application","description":"application_id is the application used to run the ai_validation_job\nwe only have application_id if asset_type is application"},"ai_asset_name":{"type":"string","title":"ai_asset_name is only set if asset_type is model (for multi cloud defence)","description":"ai_asset_name is only set if asset_type is model (for multi cloud defence)"},"validation_scan_name":{"type":"string","title":"validation_scan_name is the name of the ai model validation run","description":"validation_scan_name is the name of the ai model validation run"},"model_provider":{"type":"string","title":"model_provider is the model provider used e.g. Anthropic Claude","description":"model_provider is the model provider used e.g. Anthropic Claude"},"model_endpoint_url_model_id":{"type":"string","title":"model_endpoint_url_model_id is the endpoint url or the model_id of the model to validate","description":"model_endpoint_url_model_id is the endpoint url or the model_id of the model to validate"},"model_request_template":{"type":"string","title":"model_request_template is the request template for the model","description":"model_request_template is the request template for the model"},"model_response_json_path":{"type":"string","title":"model_response_json_path is the response json path of the model","description":"model_response_json_path is the response json path of the model"},"created_at":{"type":"string","format":"date-time","title":"created_at is the timestamp the ai_validation_config was created","description":"created_at is the timestamp the ai_validation_config was created"},"updated_at":{"type":"string","format":"date-time","title":"created_at is the timestamp the ai_validation_config was updated, currently updates are not supported","description":"created_at is the timestamp the ai_validation_config was updated, currently updates are not supported"},"aws_region":{"description":"The region that the bedrock request will be handled from.","type":"string","enum":["AWS_REGION_UNSPECIFIED","AWS_REGION_US_EAST_1","AWS_REGION_US_WEST_2","AWS_REGION_EU_CENTRAL_1","AWS_REGION_AP_NORTHEAST_1"],"default":"AWS_REGION_UNSPECIFIED","$$ref":"#/definitions/generativevalidationAWSRegion"},"max_tokens":{"type":"integer","format":"int32","title":"Inference Parameters(Optional) for bedrock models","description":"Inference Parameters(Optional) for bedrock models"},"temperature":{"type":"number","format":"float","description":"temperature is a value between 0 and 1 that controls the randomness of the output."},"top_p":{"type":"number","format":"float","description":"top_p is a value between 0 and 1 that controls the diversity of the output."},"stop_sequences":{"type":"array","items":{"type":"string"},"description":"Converse API allows a maximum of 4 stop sequences to be passed in the request."},"additional_config":{"type":"string","title":"additional_config is a string that contains additional configuration for the validation run","description":"additional_config is a string that contains additional configuration for the validation run"},"external_api_provider":{"title":"external api provider contains the provider information for the external validation","type":"string","enum":["EXTERNAL_API_PROVIDER_UNSPECIFIED","EXTERNAL_API_PROVIDER_AZURE_OPENAI","EXTERNAL_API_PROVIDER_OPENAI","EXTERNAL_API_PROVIDER_ANTHROPIC","EXTERNAL_API_PROVIDER_GEMINI","EXTERNAL_API_PROVIDER_MISTRAL","EXTERNAL_API_PROVIDER_CUSTOM"],"default":"EXTERNAL_API_PROVIDER_UNSPECIFIED","description":"ExternalApiProvider specifies the external API provider to use for the model connection\nspec.","$$ref":"#/definitions/generativevalidationExternalApiProvider"},"multi_turn_enabled":{"type":"boolean","description":"If set to true, run multi-turn attack prompts against the asset type."},"description":{"type":"string","title":"description is a string that was provided when the config was created","description":"description is a string that was provided when the config was created"},"language":{"description":"Language specifies the language in which users evaluate their AI application.","type":"string","enum":["LANGUAGE_EN","LANGUAGE_JA","LANGUAGE_FR","LANGUAGE_DE"],"default":"LANGUAGE_EN","title":"- LANGUAGE_EN: ENUM_ZERO_VALUE_SUFFIX\nWe use EN as the default value because prior to 2.10 we didn't\nhave a language option for generative testing, and we implicitly\nassumed english was the language.\nBy making EN the default we ensure these previous versions are compatible,\nand will default to using EN correctly.\nENUM_FIELD_NAMES_ZERO_VALUE_END_WITH\nEnglish\n - LANGUAGE_JA: Japanese\n - LANGUAGE_FR: French\n - LANGUAGE_DE: German","$$ref":"#/definitions/generativevalidationLanguage"},"prompt_bank":{"title":"PromptBank specifies the size of the prompt bank","type":"string","enum":["PROMPT_BANK_UNSPECIFIED","PROMPT_BANK_DEFAULT","PROMPT_BANK_QUICK_SCAN","PROMPT_BANK_DEMO_SCAN","PROMPT_BANK_MAX"],"default":"PROMPT_BANK_UNSPECIFIED","description":"Schema for generativevalidationPromptBank","$$ref":"#/definitions/generativevalidationPromptBank"}},"description":"Response for getting an AI validation configuration. Contains details about the configuration including asset type, model provider, and request templates.","title":"GetAiValidationConfigResponse","$$ref":"#/definitions/v1GetAiValidationConfigResponse"},"attack_counts":{"title":"Attack count information","type":"object","properties":{"num_attacks":{"type":"integer","format":"int64","title":"total number of attacks/results for this validation job","description":"total number of attacks/results for this validation job"},"num_successful_attacks":{"type":"integer","format":"int64","title":"number of successful attacks for this validation job","description":"number of successful attacks for this validation job"},"num_skipped_attacks":{"type":"integer","format":"int64","title":"number of skipped attacks for this validation job","description":"number of skipped attacks for this validation job"}},"description":"Schema for v1AttackCounts","$$ref":"#/definitions/v1AttackCounts"}},"description":"Validation job with full details, reusing existing job and config structures, and attack counts.","title":"ValidationJobWithDetails","$$ref":"#/definitions/v1ValidationJobWithDetails"},"title":"jobs contains the list of validation job details matching the request filters","description":"jobs contains the list of validation job details matching the request filters"},"paging":{"title":"paging contains pagination details","type":"object","properties":{"count":{"type":"integer","format":"int32","title":"count is the number of items returned in this response","description":"count is the number of items returned in this response"},"offset":{"type":"integer","format":"int32","title":"offset is the current offset used for pagination","description":"offset is the current offset used for pagination"},"total":{"type":"integer","format":"int32","title":"total is the total number of items available","description":"total is the total number of items available"}},"description":"Schema for ai_validationv1Paging","$$ref":"#/definitions/ai_validationv1Paging"}},"description":"Response containing a list of AI validation jobs with detailed information and standard paging details including count, offset, and total.","title":"ListAiValidationJobsResponse","$$ref":"#/definitions/v1ListAiValidationJobsResponse"}},"default":{"description":"An unexpected error response.","schema":{"type":"object","properties":{"code":{"type":"integer","format":"int32","description":"The code integer"},"message":{"type":"string","description":"The message string"},"details":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string","description":"The @type string"}},"additionalProperties":true,"description":"Contains additional error details specific to the operation","$$ref":"#/definitions/AdditionalErrorDetails"},"description":"The details array"}},"description":"Details about API errors including code, message, and additional details","example":{"code":13,"message":"Internal","details":[]},"$$ref":"#/definitions/ErrorDetails"}}},"parameters":[{"name":"limit","description":"Pagination - Number of records to retrieve, default and max value is 100","in":"query","required":false,"type":"integer","format":"int32"},{"name":"offset","description":"Offset for pagination","in":"query","required":false,"type":"integer","format":"int32"},{"name":"sort_by","description":"Sorting - Field name to sort the validation jobs returned","in":"query","required":false,"type":"string","enum":["VALIDATION_JOB_SORT_BY_UNSPECIFIED","VALIDATION_JOB_SORT_BY_STARTED_AT","VALIDATION_JOB_SORT_BY_CREATED_AT","VALIDATION_JOB_SORT_BY_STATUS","VALIDATION_JOB_SORT_BY_VALIDATION_SCAN_NAME","VALIDATION_JOB_SORT_BY_ASSET_TYPE","VALIDATION_JOB_SORT_BY_AI_ASSET_NAME","VALIDATION_JOB_SORT_BY_MODEL_ENDPOINT_URL_MODEL_ID"],"default":"VALIDATION_JOB_SORT_BY_UNSPECIFIED"},{"name":"order","description":"Sort order of the validation jobs returned","in":"query","required":false,"type":"string","enum":["SORT_ORDER_UNSPECIFIED","SORT_ORDER_ASC","SORT_ORDER_DESC"],"default":"SORT_ORDER_UNSPECIFIED"},{"name":"status","description":"Filtering\nstatus filters for a specific job status\n\n - STATUS_UNKNOWN: ENUM_VALUE_PREFIX\nENUM_ZERO_VALUE_SUFFIX\n\nDefault unknown state\n - JOB_CREATED: ENUM_VALUE_PREFIX\n\nJob has been created\n - JOB_IN_PROGRESS: ENUM_VALUE_PREFIX\n\nJob is currently in progress\n - JOB_COMPLETED: ENUM_VALUE_PREFIX\n\nJob has been completed successfully\n - JOB_FAILED: ENUM_VALUE_PREFIX\n\nJob has failed","in":"query","required":false,"type":"string","enum":["STATUS_UNKNOWN","JOB_CREATED","JOB_IN_PROGRESS","JOB_COMPLETED","JOB_FAILED"],"default":"STATUS_UNKNOWN"},{"name":"started_after","description":"started_after filters for jobs started after this timestamp","in":"query","required":false,"type":"string","format":"date-time"},{"name":"started_before","description":"started_before filters for jobs started before this timestamp","in":"query","required":false,"type":"string","format":"date-time"},{"name":"asset_type","description":"Config-based filtering\nasset_type filters for specific asset type\n\n - UNKNOWN: ENUM_VALUE_PREFIX\nENUM_ZERO_VALUE_SUFFIX\n - APPLICATION: ENUM_VALUE_PREFIX\n - MODEL: ENUM_VALUE_PREFIX\n - EXTERNAL: ENUM_VALUE_PREFIX","in":"query","required":false,"type":"string","enum":["UNKNOWN","APPLICATION","MODEL","EXTERNAL"],"default":"UNKNOWN"},{"name":"ai_asset_name","description":"ai_asset_name filters for specific AI asset name","in":"query","required":false,"type":"string"},{"name":"model_endpoint_url_model_id","description":"model_endpoint_url_model_id filters for specific model endpoint or model ID","in":"query","required":false,"type":"string"},{"name":"search_string","description":"search_string is used to search using pattern matching across multiple string based fields:\nai_asset_name, validation_scan_name, model_provider, model_endpoint_url_model_id.\nThis is an OR search across these fields.","in":"query","required":false,"type":"string"},{"name":"aws_region","description":"The region related to the ai_asset_name","in":"query","required":false,"type":"string","enum":["AWS_REGION_UNSPECIFIED","AWS_REGION_US_EAST_1","AWS_REGION_US_WEST_2","AWS_REGION_EU_CENTRAL_1","AWS_REGION_AP_NORTHEAST_1"],"default":"AWS_REGION_UNSPECIFIED"}],"tags":["AiValidationAPI"],"__originalOperationId":"AiValidationAPI_ListAiValidationJobs","consumes":["application/json"],"produces":["application/json"],"security":[{"ApiKeyAuth":[]}],"method":"get","path":"/ai-validation/jobs"}}