Palo Alto Networks Scan API

Operations for creating and managing scan jobs.

OpenAPI Specification

palo-alto-networks-scan-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Prisma AIRS Red Teaming Dataplane Scan API
  description: Red Teaming Data Plane API - Data processing and scanning services for AI/ML model security. © 2025 Palo Alto Networks, Inc
  version: 0.7.75
  termsOfService: https://www.paloaltonetworks.com/content/dam/pan/en_US/assets/pdf/legal/palo-alto-networks-end-user-license-agreement-eula.pdf
  license:
    name: MIT
    url: https://opensource.org/license/mit
  contact:
    email: support@paloaltonetworks.com
    name: Palo Alto Networks Technical Support
    url: https://support.paloaltonetworks.com
servers:
- url: https://api.sase.paloaltonetworks.com/ai-red-teaming/data-plane
security:
- bearerAuth: []
tags:
- name: Scan
  description: Operations for creating and managing scan jobs.
paths:
  /v1/scan:
    post:
      tags:
      - Scan
      summary: Create scan
      description: Create a new scan target.
      operationId: create_job_v1_scan_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobCreateRequestSchema'
      responses:
        200:
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponseSchema'
        422:
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Scan
      summary: List scans
      description: List jobs with filtering and pagination.
      operationId: list_jobs_v1_scan_get
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          description: Number of jobs to return (1-100)
          default: 50
          title: Limit
        description: Number of jobs to return (1-100)
      - name: skip
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: Number of jobs to skip for pagination
          default: 0
          title: Skip
        description: Number of jobs to skip for pagination
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/JobStatusFilter'
          - type: 'null'
          description: Filter by job status
          title: Status
        description: Filter by job status
      - name: job_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/JobType'
          - type: 'null'
          description: Filter by job type
          title: Job Type
        description: Filter by job type
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 255
          - type: 'null'
          description: Search jobs by name
          title: Search
        description: Search jobs by name
      - name: target_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter by target UUID
          title: Target Id
        description: Filter by target UUID
      responses:
        200:
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobListResponseSchema'
        422:
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/scan/{job_id}:
    get:
      tags:
      - Scan
      summary: Get scan details
      description: Get a job by its ID.
      operationId: get_job_v1_scan__job_id__get
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Job Id
      responses:
        200:
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponseSchema'
        422:
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/scan/{job_id}/abort:
    post:
      tags:
      - Scan
      summary: Abort scan
      description: Abort a running job by cancelling its workflow and updating status.
      operationId: abort_job_v1_scan__job_id__abort_post
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Job Id
      responses:
        200:
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAbortResponseSchema'
        422:
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    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: '#/components/schemas/LanguageOptionSchema'
          - type: 'null'
          description: Language for this scan. None = English.
        categories:
          additionalProperties:
            items:
              anyOf:
              - $ref: '#/components/schemas/SecuritySubCategory'
              - $ref: '#/components/schemas/SafetySubCategory'
              - $ref: '#/components/schemas/BrandSubCategory'
              - $ref: '#/components/schemas/ComplianceSubCategory'
            type: array
          propertyNames:
            $ref: '#/components/schemas/Category'
          type: object
          title: Categories
          description: Attack categories and their subcategories
          example:
            COMPLIANCE:
            - OWASP
            - NIST
            SAFETY:
            - BIAS
            SECURITY:
            - ADVERSARIAL_SUFFIX
            - JAILBREAK
        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.
    AuthType:
      type: string
      enum:
      - HEADERS
      - BASIC_AUTH
      - OAUTH2
      - CUSTOM_TARGET_ADAPTER
      title: AuthType
      description: Authentication method for target API access.
    PaginationSchema:
      properties:
        total_items:
          anyOf:
          - type: integer
          - type: 'null'
          title: Total Items
      type: object
      title: PaginationSchema
    Category:
      type: string
      enum:
      - SECURITY
      - SAFETY
      - COMPLIANCE
      - BRAND
      title: Category
    ResponseMode:
      type: string
      enum:
      - REST
      - STREAMING
      - WEBSOCKET
      - WEBSOCKET_STREAMING
      title: ResponseMode
      description: Response mode for target interactions.
    GoalCategory:
      type: string
      enum:
      - GOAL_MANIPULATION
      - PRIVILEGE_MISUSE
      - TOOL_MISUSE
      - TOOL_CHAINING
      - TOXIC_CONTENT_GENERATION
      - CUSTOM
      title: GoalCategory
    ClaraJobMetadata:
      properties:
        scan_name:
          type: string
          maxLength: 255
          minLength: 3
          title: Scan Name
        categories:
          additionalProperties:
            items:
              anyOf:
              - $ref: '#/components/schemas/SecuritySubCategory'
              - $ref: '#/components/schemas/SafetySubCategory'
              - $ref: '#/components/schemas/BrandSubCategory'
              - $ref: '#/components/schemas/ComplianceSubCategory'
            type: array
          propertyNames:
            $ref: '#/components/schemas/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 —

        no rate_limit/content_filter since CLARA doesn''t execute attacks.

        '
    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: '#/components/schemas/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: '#/components/schemas/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.
    CountedQuotaEnum:
      type: string
      enum:
      - HELD
      - COUNTED
      - NOT_COUNTED
      title: CountedQuotaEnum
      description: Enum for counting Quota.
    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.


        Required fields for activation:

        - industry (string, required)

        - use_case (string, required)


        Optional field:

        - competitors (list of strings)

        '
    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.


        Single value fields are strings.

        List fields are lists of strings.

        '
    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: '#/components/schemas/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.
    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
          examples:
          - Session ID extraction failed
          - Assistant role not configured
        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
          examples:
          - 'HTTP 400: target rejected file payload'
          - File delivery not configured
        rate_limit:
          anyOf:
          - type: integer
          - type: 'null'
          title: Rate Limit
          description: Current rate limit value
          examples:
          - 996
        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
          examples:
          - 429
        rate_limit_error_json:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Rate Limit Error Json
          description: JSON structure of rate limit error response
          examples:
          - error:
              code: rate_limit_exceeded
              message: 'Rate limit reached for o1-preview on requests per min (RPM): Limit 20, Used 20, Requested 1. Please try again in 3s. Visit https://platform.openai.com/account/rate-limits to learn more.'
              param: 'null'
              type: requests
        rate_limit_error_message:
          anyOf:
          - type: string
          - type: 'null'
          title: Rate Limit Error Message
          description: Raw error message string for rate limit errors
          examples:
          - 'Rate limit reached for o1-preview on requests per min (RPM): Limit 20, Used 20, Requested 1. Please try again in 3s.'
        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
          examples:
          - 400
        content_filter_error_json:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Content Filter Error Json
          description: JSON structure of content filter error response
          examples:
          - error:
              code: invalid_prompt
              message: 'Invalid prompt: your prompt was flagged as potentially violating our usage policy. Please try again with a different prompt.'
              type: invalid_request_error
        content_filter_error_message:
          anyOf:
          - type: string
          - type: 'null'
          title: Content Filter Error Message
          description: Raw error message string for content filter errors
          examples:
          - 'Invalid prompt: your prompt was flagged as potentially violating our usage policy. Please try again with a different prompt.'
        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
          examples:
          - 110
      type: object
      title: TargetMetadata
      description: 'Metadata stored in the database for targets (user-provided + computed fields).


        Inherits the multimodal-capability fields from ``MultiModalResult`` and the

        multi-turn fields from ``MultiTurnResult``. The base order

        ``(MultiModalResult, MultiTurnResult)`` keeps the serialized field order

        ``multi_turn, multi_turn_error_message, supports_multimodal_files,

        supports_multimodal_files_error_message, rate_limit, …`` identical to before this

        refactor — which preserves the Restate journal bytes for pre-V4 in-flight scans.

        '
    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.

        Tracks output completion and partial report unlock status.

        '
    JobType:
      type: string
      enum:
      - STATIC
      - DYNAMIC
      - CUSTOM
      - CLARA
      title: JobType
      description: Type of job execution.
    JobAbortResponseSchema:
      properties:
        job_id:
          type: string
          format: uuid
          title: Job Id
          description: UUID of the aborted job
        message:
          type: string
          title: Message
          description: Status message
      type: object
      required:
      - job_id
      - message
      title: JobAbortResponseSchema
      description: Response schema for job abort operation.
    JobCreateRequestSchema:
      properties:
        name:
          type: string
          maxLength: 255
          minLength: 3
          title: Name
          description: Job name (3-255 characters)
        target:
          $ref: '#/components/schemas/TargetJobRequest'
          description: Target reference for job creation
        job_type:
          $ref: '#/components/schemas/JobType'
          description: Type of job to execute
        job_metadata:
          anyOf:
          - $ref: '#/components/schemas/StaticJobMetadata'
          - $ref: '#/components/schemas/DynamicJobMetadata'
          - $ref: '#/components/schemas/CustomJobMetadata'
          - $ref: '#/components/schemas/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
      additionalProperties: false
      type: object
      required:
      - name
      - target
      - job_type
      - job_metadata
      title: JobCreateRequestSchema
      description: Request schema for creating jobs.
    TargetReferenceSchema:
      properties:
        uuid:
          type: string
          format: uuid
          title: Uuid
        tsg_id:
          type: string
          title: Tsg Id
        name:
          type: string
          title: Name
          description: Target name
          examples:
          - GPT 4.1 Nano
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Optional target description
          default: null
          examples:
          - AI model for testing
        target_type:
          anyOf:
          - $ref: '#/components/schemas/TargetType'
          - type: 'null'
          description: Type of target
        connection_type:
          anyOf:
          - $ref: '#/components/schemas/TargetConnectionType'
          - type: 'null'
          description: Connection type/provider for the target
          examples:
          - CUSTOM
          - OPENAI
          - BEDROCK
        api_endpoint_type:
          anyOf:
          - $ref: '#/components/schemas/ApiEndpointType'
          - type: 'null'
          description: Accessibility type of the API endpoint
          examples:
          - PUBLIC
          - PRIVATE
          - NETWORK_BROKER
        response_mode:
          anyOf:
          - $ref: '#/components/schemas/ResponseMode'
          - type: 'null'
          description: Response mode for API interactions
          examples:
          - REST
          - STREAMING
          - WEBSOCKET
        auth_type:
          anyOf:
          - $ref: '#/components/schemas/AuthType'
          - type: 'null'
          description: Authentication method for target API access
          examples:
          - HEADERS
          - BASIC_AUTH
          - OAUTH2
        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: {}
          examples:
          - custom_key: custom_value
        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: '#/components/schemas/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: '#/components/schemas/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: '#/components/schemas/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: '#/components/schemas/TargetBackground'
          - type: 'null'
          description: 'Target background info: industry, use_case, competitors'
        profiling_progress:
          anyOf:
          - type: integer
          - t

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/palo-alto-networks/refs/heads/main/openapi/palo-alto-networks-scan-api-openapi.yml