> ## Documentation Index
> Fetch the complete documentation index at: https://synapse-docs.apart.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Validate Bundle Candidate

> Dry-run: would these documents bundle? Pure read; never commits.



## OpenAPI

````yaml /openapi.json post /v1/organizations/{organization_id}/apps/{app_id}/bundle-candidates/validate
openapi: 3.1.0
info:
  description: Are we on the same page?
  title: Synapse
  version: 0.1.0
servers: []
security: []
paths:
  /v1/organizations/{organization_id}/apps/{app_id}/bundle-candidates/validate:
    post:
      tags:
        - v1-platform
      summary: Validate Bundle Candidate
      description: 'Dry-run: would these documents bundle? Pure read; never commits.'
      operationId: >-
        validate_bundle_candidate_v1_organizations__organization_id__apps__app_id__bundle_candidates_validate_post
      parameters:
        - in: path
          name: organization_id
          required: true
          schema:
            format: uuid
            title: Organization Id
            type: string
        - in: path
          name: app_id
          required: true
          schema:
            format: uuid
            title: App Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BundleCandidateValidationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BundleCandidateValidation'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Authentication required
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Insufficient scope
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Resource not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Request validation failed
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal server error
      security:
        - BearerAuth: []
        - ApiKeyAuth: []
        - SessionCookie: []
components:
  schemas:
    BundleCandidateValidationRequest:
      additionalProperties: false
      properties:
        base_bundle_id:
          format: uuid
          title: Base Bundle Id
          type: string
        contents:
          $ref: '#/components/schemas/BundleCandidateContents'
      required:
        - base_bundle_id
      title: BundleCandidateValidationRequest
      type: object
    BundleCandidateValidation:
      properties:
        changed_kinds:
          items:
            enum:
              - experience
              - scorecard
              - context
              - guardrail
              - adaptive_policy
              - report_template
            type: string
          title: Changed Kinds
          type: array
        existing_bundle_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          title: Existing Bundle Id
        existing_bundle_status:
          anyOf:
            - enum:
                - draft
                - validated
                - published
                - deprecated
                - archived
              type: string
            - type: 'null'
          title: Existing Bundle Status
        fingerprint:
          anyOf:
            - type: string
            - type: 'null'
          title: Fingerprint
        issues:
          items:
            $ref: '#/components/schemas/CandidateIssue'
          title: Issues
          type: array
        latest_published_bundle_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          title: Latest Published Bundle Id
        latest_published_experience_version_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          title: Latest Published Experience Version Id
        truncated:
          default: false
          title: Truncated
          type: boolean
        valid:
          title: Valid
          type: boolean
      required:
        - valid
      title: BundleCandidateValidation
      type: object
    ApiErrorResponse:
      additionalProperties: false
      properties:
        detail:
          anyOf:
            - $ref: '#/components/schemas/ErrorDetail'
            - type: string
            - items: {}
              type: array
            - additionalProperties: true
              type: object
          title: Detail
      required:
        - detail
      title: ApiErrorResponse
      type: object
    BundleCandidateContents:
      additionalProperties: false
      description: Documents that replace the base bundle's; omitted kinds keep the base's.
      properties:
        adaptive_policy:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Adaptive Policy
        context:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Context
        experience:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Experience
        guardrail:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Guardrail
        report_template:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Report Template
        scorecard:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Scorecard
      title: BundleCandidateContents
      type: object
    CandidateIssue:
      description: One authoring issue, as the bundle gate and the dry-run report it.
      properties:
        code:
          title: Code
          type: string
        kind:
          enum:
            - experience
            - scorecard
            - context
            - guardrail
            - adaptive_policy
            - report_template
          title: Kind
          type: string
        message:
          title: Message
          type: string
        path:
          title: Path
          type: string
        refs:
          $ref: '#/components/schemas/CandidateIssueRefs'
        severity:
          enum:
            - error
            - warning
          title: Severity
          type: string
      required:
        - code
        - severity
        - kind
        - path
        - message
      title: CandidateIssue
      type: object
    ErrorDetail:
      additionalProperties: false
      description: Stable structured detail returned by versioned API errors.
      properties:
        code:
          title: Code
          type: string
        context:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Context
        message:
          title: Message
          type: string
        request_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Request Id
      required:
        - code
        - message
      title: ErrorDetail
      type: object
    CandidateIssueRefs:
      description: The things an authoring issue points at (all optional).
      properties:
        field_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Field Id
        option_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Option Id
        question_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Question Id
        rule_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Rule Id
        scenario_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Scenario Id
        section_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Section Id
      title: CandidateIssueRefs
      type: object
  securitySchemes:
    BearerAuth:
      description: Named syn_ API key or migration-only legacy key.
      scheme: bearer
      type: http
    ApiKeyAuth:
      description: Header alias for a named or legacy API key.
      in: header
      name: X-API-Key
      type: apiKey
    SessionCookie:
      description: Opaque administrator browser session.
      in: cookie
      name: synapse_session
      type: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.