{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/snyk/main/json-schema/snyk-dry-run-job-response-attributes-schema.json", "title": "DryRunJobResponseAttributes", "description": "Attributes for a dry run job response", "x-generated": "2026-10-04", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/snyk-containerregistryimportpolicy-api-openapi.yml#/components/schemas/DryRunJobResponseAttributes", "properties": { "completed_at": { "description": "When the job completed processing (only present when status is completed or failed)", "format": "date-time", "type": "string" }, "error_message": { "description": "Error message if the job failed (only present when status is failed)", "type": "string" }, "policy": { "$ref": "#/$defs/ContainerRegistryPolicy" }, "result": { "$ref": "#/$defs/DryRunPolicyResult" }, "started_at": { "description": "When the job started processing (only present when status is running, completed, or failed)", "format": "date-time", "type": "string" }, "status": { "description": "The current status of the dry run job", "enum": [ "pending", "running", "completed", "failed" ], "type": "string" } }, "required": [ "status", "policy" ], "type": "object", "$defs": { "ContainerRegistryPolicy": { "description": "A policy", "properties": { "delete_images": { "description": "Delete images no longer matching the policy. False by default.", "type": "boolean" }, "import_policy": { "$ref": "#/$defs/PolicyComponent" }, "name": { "type": "string" }, "schedule_frequency_hours": { "description": "The frequency of the import policy in hours.", "minimum": 2, "type": "integer" } }, "required": [ "name", "import_policy" ], "type": "object" }, "DryRunPolicyResult": { "description": "The results of a dry run policy execution", "properties": { "images_to_delete": { "description": "List of images grouped by repositories that would be deleted based on the policy rules (only populated when delete_images is enabled)", "items": { "$ref": "#/$defs/RepositoryGroup" }, "type": "array" }, "images_to_import": { "description": "List of images grouped by repositories that would be imported based on the policy rules", "items": { "$ref": "#/$defs/RepositoryGroup" }, "type": "array" }, "total_images_processed": { "description": "Total number of images that were evaluated during the policy test, including both matching and non-matching images", "type": "integer" } }, "required": [ "images_to_import", "images_to_delete", "total_images_processed" ], "type": "object" }, "ImageTag": { "description": "A tag within a repository", "properties": { "observed_at": { "description": "When the image was first observed", "format": "date-time", "type": "string" }, "tag": { "description": "The tag name", "type": "string" } }, "required": [ "tag" ], "type": "object" }, "PolicyComponent": { "description": "A component policy, an overall policy is made up of one or more component policies combined in various ways.", "properties": { "name": { "type": "string" }, "policy": { "type": "object" }, "sub_policies": { "items": { "type": "object" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "RepositoryGroup": { "description": "A repository with its matching tags grouped together", "properties": { "repository": { "description": "The repository name", "type": "string" }, "tags": { "items": { "$ref": "#/$defs/ImageTag" }, "type": "array" } }, "required": [ "repository", "tags" ], "type": "object" } } }