> ## Documentation Index
> Fetch the complete documentation index at: https://developers.govworx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Knowledge entry

> Fetch an API-managed Knowledge entry's current state, in the same shape as the create response. Returns the latest version — which may be an unpublished draft; check `publishedVersion` for the version currently live — with its full `interview` and `actions` content and every `referenceId`. 

Content is the *effective* content: GovWorx-side edits made inside the product are reflected here, not just what the API last wrote.

Use this to recover a card's state and `referenceId`s when they weren't stored locally, then send the result back as an append after editing the API-owned sections.

Only entries created via this API are visible here; a GovWorx-authored entry returns 404, the same as an entry that doesn't exist.



## OpenAPI

````yaml https://app.govworx.net/u/api-docs get /api/v1/external/knowledge/{knowledgeId}
openapi: 3.1.0
info:
  title: GovWorx Data API
  description: Interfaces to access data produced and organized by GovWorx Applications.
  termsOfService: http://swagger.io/terms/
  version: '1.0'
servers:
  - url: https://app.govworx.net
security: []
tags:
  - name: TRAIN
    description: Training Phase and Enrollment Records
  - name: Knowledge
    description: >-
      Push and version guide cards and instruction cards into GovWorx from
      external systems (e.g., APCO, PowerPhone, IAED). 


      ## Concepts


      **Knowledge entry:** A guide card or instruction card identified by a
      GovWorx-internal `id` and your partner-supplied `externalId`. Each entry
      carries one or more immutable versions.


      **Version:** An immutable snapshot of the guide card content created by
      `POST /` (create) or `POST /{knowledgeId}/versions` (append). Only one
      version is published (active) at a time.


      **Section ownership (`apiControl`):** A single top-level `apiControl`
      object on each request declares which sections are owned by the API and
      which are managed within GovWorx. API-owned sections are fully overwritten
      on every append. GovWorx-owned sections are editable inside GovWorx and
      carried forward automatically — do not include their content in append
      payloads. Flags are set once at creation and are immutable between
      versions.


      A question's `displayCriteria` condition follows the same rule as its
      `questionList`: a root question may carry its own condition, and a
      question inside a `relatedQuestions` group stacks its condition on top of
      the group's.


      **Card-level links (`actions.links`):** Follow the `links` flag in
      `apiControl`, like any other action-set section. Each link identifies its
      target by the target document's `targetExternalId` (that document's own
      `externalId`, under the same `provider`) rather than a GovWorx-internal id
      — GovWorx resolves it into the target section on every write. **The target
      document must already be loaded in this tenant** (it need not be
      published); load target documents before any document that links to them.
      A `targetExternalId` that cannot be resolved rejects the whole request
      (400). The `target*` response fields (`targetDocumentName`, etc.) are
      computed and stored at create/append time; `GET /{knowledgeId}` returns
      them exactly as stored, with no re-resolution, so a target renamed or
      deleted since the last write does not invalidate a read.


      ## referenceId lifecycle


      GovWorx assigns a stable `referenceId` to every item in every content list
      on create — any `referenceId` supplied on create is ignored, not stored,
      so a value copied from another card or from a deleted one can never
      collide with it. These identifiers are echoed back in the create/append
      response, and can also be read back at any time with `GET /{knowledgeId}`.
      If a card's `id` itself wasn't stored, `GET /` lists the tenant's
      API-managed entries to recover it. **Store them.** On future appends, echo
      a `referenceId` to update the existing item in place. Omit the
      `referenceId` to add a new item (a fresh id is generated). Supplying an
      unknown `referenceId` on append — one not present in the previous version
      — is rejected (400).


      Reference id formats: `q-{8 hex}` (questions), `si-{8 hex}` (spoken
      instructions), `ca-{8 hex}` (CAD actions), `sms-{8 hex}` (SMS messages),
      `dt-{8 hex}` (dispatch triggers), `lk-{8 hex}` (links), `md-{8 hex}`
      (media). A `referenceMedia` / `mediaRef` that named a supplied media id on
      create is repointed at that asset's new id.


      ## Authentication


      All endpoints require a bearer token with the `Manage Knowledge`
      permission, except the read-only lookup and GET endpoints, which also
      accept `View Knowledge`.
  - name: Audit Log Export
    description: Programmatically pull audit records into your SIEM solution
  - name: Media Ingest
    description: External media ingest — SRT radio traffic
  - name: Incident
    description: Upload a new Incident to the system
  - name: MCP Resources
    description: MCP Resource endpoints for external integrations
  - name: Quality Assurance
    description: QA evaluation and feedback report endpoints
  - name: Users
    description: User Records
externalDocs:
  description: GovWorx Developer Docs
  url: https://api.govworx.ai
paths:
  /api/v1/external/knowledge/{knowledgeId}:
    get:
      tags:
        - Knowledge
      summary: Get Knowledge entry
      description: >-
        Fetch an API-managed Knowledge entry's current state, in the same shape
        as the create response. Returns the latest version — which may be an
        unpublished draft; check `publishedVersion` for the version currently
        live — with its full `interview` and `actions` content and every
        `referenceId`. 


        Content is the *effective* content: GovWorx-side edits made inside the
        product are reflected here, not just what the API last wrote.


        Use this to recover a card's state and `referenceId`s when they weren't
        stored locally, then send the result back as an append after editing the
        API-owned sections.


        Only entries created via this API are visible here; a GovWorx-authored
        entry returns 404, the same as an entry that doesn't exist.
      operationId: getKnowledge
      parameters:
        - name: knowledgeId
          in: path
          description: GovWorx internal Knowledge id returned from the create endpoint.
          required: true
          schema:
            type: integer
            format: int64
          example: 12345
      responses:
        '200':
          description: >-
            Knowledge entry returned, with its latest version's full content and
            referenceIds.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ExternalKnowledgeDetailDto'
        '401':
          description: Missing or invalid bearer token.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorInfo'
              example:
                info: Authentication required
        '403':
          description: >-
            Token does not have the View Knowledge or Manage Knowledge
            permission.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorInfo'
              example:
                info: >-
                  Access denied — View Knowledge or Manage Knowledge permission
                  required
        '404':
          description: >-
            No Knowledge entry with this id exists for the tenant, or it was not
            created via the external API.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorInfo'
              example:
                info: 'Knowledge not found: 12345'
components:
  schemas:
    ExternalKnowledgeDetailDto:
      type: object
      description: Detail view of a Knowledge entry, including its version list.
      properties:
        id:
          type: integer
          format: int64
          description: GovWorx internal Knowledge id. Use this in subsequent API calls.
          example: 12345
        name:
          type: string
          description: Human-readable name of the Knowledge entry.
          example: Cardiac Arrest - Adult
        description:
          type: string
          description: Optional description shown in the GovWorx UI.
        source:
          type: string
          description: >-
            Source of the entry. API_IMPORT indicates it was loaded via this
            API.
          example: API_IMPORT
        provider:
          type: string
          description: >-
            Identifier of the organization that authored this Knowledge entry.
            Common values include APCO, PowerPhone, IAED, or a tenant-internal
            name for in-house authoring.
          example: APCO
        knowledgeType:
          type: string
          description: Classification of the Knowledge entry.
          enum:
            - GUIDE_CARD
            - INSTRUCTION_CARD
            - POLICY
            - MEMO_BRIEFING
            - TRAINING
            - GENERAL_KNOWLEDGE
            - NON_EMERGENCY_LINE_ABILITY
          example: GUIDE_CARD
        externalId:
          type: string
          description: Partner-supplied identifier if one was provided on create.
          example: apco-card-cardiac-arrest-adult
        publishedVersion:
          type: integer
          format: int32
          description: >-
            Version number of the currently published version, or null if none
            is published.
          example: 3
        createdAt:
          type: string
          format: date-time
          description: >-
            UTC timestamp when this entry was created (i.e., when GovWorx
            received and stored the first version).
        updatedAt:
          type: string
          format: date-time
          description: >-
            UTC timestamp when this entry was last modified — a new version was
            added, the published version changed, or metadata was updated.
        versions:
          type: array
          description: >-
            The version(s) for this Knowledge entry, including their interview
            and action content. Every current endpoint returning this shape
            (create, GET) populates exactly one — the version just created, or
            the latest version — not the full version history.
          items:
            $ref: '#/components/schemas/ExternalKnowledgeVersionDetailDto'
    ErrorInfo:
      type: object
      properties:
        info:
          type: string
        reason:
          type: string
    ExternalKnowledgeVersionDetailDto:
      type: object
      description: >-
        Full detail of a Knowledge version, including its normalized interview
        and action content. All `referenceId` values in the returned content are
        GovWorx-generated stable identifiers. Store these ids — they must be
        echoed in future append requests to update existing items in place.
      properties:
        version:
          type: integer
          format: int32
          description: >-
            Monotonic version number, unique per Knowledge id. Use this in
            version-scoped routes.
          example: 3
        externalVersion:
          type: string
          description: Optional partner-supplied version label.
          example: v1.2.0
        isPublished:
          type: boolean
          description: >-
            True if this version is the currently published version for the
            Knowledge entry.
        description:
          type: string
          description: >-
            Optional description of this version, as provided on create or
            append.
        createdAt:
          type: string
          format: date-time
          description: >-
            UTC timestamp when this version was created (i.e., when GovWorx
            received and stored the payload).
        publishedAt:
          type: string
          format: date-time
          description: >-
            UTC timestamp when this version was last published (made active), or
            null if never published.
        apiControl:
          $ref: '#/components/schemas/KnowledgeApiControl'
          description: >-
            The active API ownership flags for this version. Echoes what was
            declared on create and is immutable between versions. Use this to
            confirm which sections are API-controlled vs GovWorx-controlled.
        interview:
          $ref: '#/components/schemas/AssistDigestV3'
          description: >-
            Interview (question list) content for this version with all
            GovWorx-generated `referenceId`s populated. Null if this knowledge
            type does not carry interview content.
        actions:
          $ref: '#/components/schemas/ActionSetDigest'
          description: >-
            Action set content for this version with all GovWorx-generated
            `referenceId`s populated across spoken instructions (`si-`), CAD
            actions (`ca-`), SMS messages (`sms-`), and dispatch triggers
            (`dt-`). Null if no action content exists for this version.
    KnowledgeApiControl:
      type: object
      description: >-
        Centralized per-section API ownership flags for this Knowledge entry.
        Declares which sections are owned by the external API (API-controlled)
        and which are managed within GovWorx (GovWorx-controlled). All flags
        default to false (GovWorx-controlled) when absent or null. 


        **Flags are set once at creation and are immutable.** You do not need to
        send `apiControl` on append — omitting it is the recommended approach
        and the stored flags are used automatically. If you do include it, each
        flag must match the creation value (400 if different). To change
        ownership of any section, delete the Knowledge entry and recreate it.
      properties:
        questions:
          type: boolean
          default: false
          description: >-
            If true, the `questionList` (including all conditional
            sub-questions, and each question's `displayCriteria` condition) and
            the `intent` field are owned by the API. Each append fully
            overwrites — omitting, null, or `[]` → empty. If false (default),
            interview questions and their conditions are editable in GovWorx. On
            append, `questionList`/`intent` may be omitted, sent empty, or
            echoed back unchanged — all are ignored and the stored content is
            kept; a differing value is rejected (400).
        incidentType:
          type: boolean
          default: false
          description: >-
            Reserved for future use — must be false or omitted. Incident type
            assignment from the API payload is not yet supported; incident types
            are always carried forward from the previous version and remain
            editable in GovWorx regardless of this flag.
        spokenInstructions:
          type: boolean
          default: false
          description: >-
            If true, the `spokenInstructions` list and the `purpose` field are
            owned by the API. Each append fully overwrites. If false (default),
            spoken instructions are editable in GovWorx. On append,
            `spokenInstructions`/`purpose` may be omitted, sent empty, or echoed
            back unchanged — all are ignored and the stored content is kept; a
            differing value is rejected (400).
        cadActions:
          type: boolean
          default: false
          description: >-
            If true, the `cadActions` list is owned by the API. Each append
            fully overwrites. If false (default), CAD actions are editable in
            GovWorx. On append, `cadActions` may be omitted, sent empty, or
            echoed back unchanged — all are ignored and the stored content is
            kept; a differing value is rejected (400).
        smsMessages:
          type: boolean
          default: false
          description: >-
            If true, the `smsMessages` list is owned by the API. Each append
            fully overwrites. If false (default), SMS messages are editable in
            GovWorx. On append, `smsMessages` may be omitted, sent empty, or
            echoed back unchanged — all are ignored and the stored content is
            kept; a differing value is rejected (400).
        dispatchTriggers:
          type: boolean
          default: false
          description: >-
            If true, the `dispatchTriggers` list is owned by the API. Each
            append fully overwrites. If false (default), dispatch triggers are
            editable in GovWorx. On append, `dispatchTriggers` may be omitted,
            sent empty, or echoed back unchanged — all are ignored and the
            stored content is kept; a differing value is rejected (400).
        links:
          type: boolean
          default: false
          description: >-
            If true, the card-level `links` list is owned by the API. Each
            link's `targetExternalId` is resolved server-side into the target
            Knowledge entry on every write; the target document must already
            exist in this tenant. Each append fully overwrites. If false
            (default), links are editable in GovWorx and must not be included in
            create payloads. On append, `links` may be omitted, sent empty, or
            echoed back unchanged — all are ignored and the stored content is
            kept; a differing value is rejected (400).
    AssistDigestV3:
      type: object
      description: >-
        Structured interview content for a guide card: the questions a calltaker
        asks the caller and the reference content shown alongside them.
      properties:
        id:
          type: string
          description: >-
            Stable identifier within the document, assigned by the author or
            generator.
        name:
          type: string
          description: Display name of the guide card.
          example: Cardiac Arrest - Adult
        intent:
          type: string
          description: Short statement of when this guide card applies.
          example: Caller reports an unresponsive adult with no pulse.
        service:
          type: string
          description: >-
            Optional service category (e.g., MEDICAL, FIRE, LAW). Used
            internally for routing.
          example: MEDICAL
        isRoot:
          type: boolean
          description: >-
            True if this is the entry-point guide card for the protocol. Default
            false.
        disciplines:
          type: array
          description: >-
            Disciplines (id + name, e.g. EMD, LAW, FIRE) this guide card applies
            to. Absent if none selected.
          items:
            $ref: '#/components/schemas/DisciplineDto'
        questionList:
          type: array
          description: Ordered list of interview questions asked by the calltaker.
          items:
            $ref: '#/components/schemas/Question'
    ActionSetDigest:
      type: object
      description: >-
        Action content for a guide card: spoken instructions, CAD actions, and
        SMS messages.
      properties:
        id:
          type: string
          description: Stable identifier within the document.
        name:
          type: string
          description: Display name of the action set.
          example: Cardiac Arrest - Actions
        purpose:
          type: string
          description: >-
            Short statement of what these actions accomplish. Ownership follows
            the `spokenInstructions` flag in the Knowledge entry's `apiControl`.
        disciplines:
          type: array
          description: >-
            Disciplines (id + name, e.g. EMD, LAW, FIRE) this card applies to.
            Absent if none selected.
          items:
            $ref: '#/components/schemas/DisciplineDto'
        spokenInstructions:
          type: array
          description: Instructions the calltaker reads aloud to the caller.
          items:
            $ref: '#/components/schemas/SpokenInstruction'
        cadActions:
          type: array
          description: Steps the calltaker or dispatcher performs in the CAD system.
          items:
            $ref: '#/components/schemas/CADAction'
        smsMessages:
          type: array
          description: SMS messages the calltaker may send to the caller.
          items:
            $ref: '#/components/schemas/SMSMessage'
        dispatchTriggers:
          type: array
          description: >-
            Cues for the calltaker to update CAD priority/code (e.g., dispatch
            code changes).
          items:
            $ref: '#/components/schemas/DispatchTrigger'
        media:
          type: array
          description: >-
            Media assets (images, videos) referenced by spoken instructions or
            SMS messages.
          items:
            $ref: '#/components/schemas/ActionSetMedia'
        links:
          type: array
          description: >-
            Card-level conditional links to other guide cards or instruction
            cards. Each link is independent of any individual spoken
            instruction. displayCriteria describes when the link should be
            suggested (null = always show). Ownership follows the `links` flag
            in the Knowledge entry's `apiControl`: if true, links are owned by
            the API and each `targetExternalId` is resolved server-side; if
            false (default), links are authored inside GovWorx. On create, this
            field must be omitted — supplying it is rejected (400). On append,
            it may be omitted, sent empty, or echoed back unchanged — all are
            ignored and the stored content is kept; a differing value is
            rejected (400).
          items:
            $ref: '#/components/schemas/Link'
    DisciplineDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
    Question:
      type: object
      description: A single interview question.
      properties:
        id:
          type: integer
          format: int64
          description: >-
            Sequential identifier within the questionList. Assigned by GovWorx
            on import; partners may omit.
        referenceId:
          type: string
          description: 'Stable identifier for cross-references (format: q-{8 hex chars}).'
          example: q-1a2b3c4d
        externalReferenceId:
          type: string
          description: >-
            Optional identifier owned by the partner. GovWorx stores and returns
            it exactly as sent; it is never generated, never required to be
            unique, and never used to identify or match items — referenceId
            stays the only item identity. Max 255 characters; a blank value is
            treated as absent. On append to an API-owned section, an item sent
            without it is stored without it. In a GovWorx-owned section the
            stored value is carried forward, and an echo that adds, changes, or
            removes it is rejected (400).
          maxLength: 255
        text:
          type: string
          description: The question as it should be asked to the caller.
          example: Is the patient breathing normally?
        intent:
          type: string
          description: What the calltaker is trying to learn from this question.
        lowQualityCriteria:
          type: string
          description: Description of a poor-quality answer to this question.
        highQualityCriteria:
          type: string
          description: Description of a high-quality answer to this question.
        evaluatable:
          type: boolean
          description: Whether this question can be evaluated/scored. Default true if null.
        useInAssist:
          type: boolean
          description: >-
            Whether this question is used by the AI assist system. Default true
            if null.
        displayCriteria:
          type: string
          description: >-
            Natural-language condition making this question applicable, which
            may be compound. Null or empty means the question always applies. On
            a question inside a relatedQuestions group this stacks with the
            group's own condition.
          example: If the patient fell from something other than the ground
        isCritical:
          type: boolean
          description: Critical questions weigh heavily in evaluation. Default false.
        required:
          type: boolean
          description: Whether this question must be asked. Default true if null.
        relatedQuestions:
          type: array
          description: Follow-up question groups shown conditionally based on the answer.
          items:
            $ref: '#/components/schemas/RelatedQuestionGroup'
    SpokenInstruction:
      type: object
      description: A single spoken instruction read to the caller.
      properties:
        referenceId:
          type: string
          description: 'Stable identifier (format: si-{8 hex chars}).'
          example: si-1a2b3c4d
        externalReferenceId:
          type: string
          description: >-
            Optional identifier owned by the partner. GovWorx stores and returns
            it exactly as sent; it is never generated, never required to be
            unique, and never used to identify or match items — referenceId
            stays the only item identity. Max 255 characters; a blank value is
            treated as absent. On append to an API-owned section, an item sent
            without it is stored without it. In a GovWorx-owned section the
            stored value is carried forward, and an echo that adds, changes, or
            removes it is rejected (400).
          maxLength: 255
        instruction:
          type: string
          description: The instruction text to read.
          example: Place the heel of one hand on the center of the chest.
        sequence:
          type: integer
          format: int32
          description: Delivery order (0-based).
        conditionedOn:
          type: string
          description: Natural-language condition describing when this instruction applies.
        referenceMedia:
          type: string
          description: >-
            Reference id of an associated media asset, matching
            ActionSetMedia.referenceId.
        evaluatable:
          type: boolean
          description: >-
            Whether this instruction can be evaluated/scored. Default true if
            null.
        useInAssist:
          type: boolean
          description: >-
            Whether this instruction is used by the AI assist system. Default
            true if null.
        required:
          type: boolean
          description: >-
            Whether this instruction is required to be delivered. Default true
            if null.
        isCritical:
          type: boolean
          description: >-
            Critical instructions weigh heavily in evaluation. Default false if
            null.
    CADAction:
      type: object
      description: A CAD-system action the calltaker or dispatcher performs.
      properties:
        referenceId:
          type: string
          description: 'Stable identifier (format: ca-{8 hex chars}).'
          example: ca-1a2b3c4d
        externalReferenceId:
          type: string
          description: >-
            Optional identifier owned by the partner. GovWorx stores and returns
            it exactly as sent; it is never generated, never required to be
            unique, and never used to identify or match items — referenceId
            stays the only item identity. Max 255 characters; a blank value is
            treated as absent. On append to an API-owned section, an item sent
            without it is stored without it. In a GovWorx-owned section the
            stored value is carried forward, and an echo that adds, changes, or
            removes it is rejected (400).
          maxLength: 255
        instruction:
          type: string
          description: What to do in CAD.
          example: Enter call type CARDIAC.
        role:
          type: string
          description: Who performs the action.
          enum:
            - CALLTAKER
            - DISPATCHER
          example: CALLTAKER
        conditionedOn:
          type: string
          description: Natural-language condition describing when this action applies.
        sequence:
          type: integer
          format: int32
          description: Delivery order (0-based).
        evaluatable:
          type: boolean
          description: Whether this action can be evaluated/scored. Default true if null.
        useInAssist:
          type: boolean
          description: >-
            Whether this action is used by the AI assist system. Default true if
            null.
        required:
          type: boolean
          description: Whether this action is required. Default true if null.
    SMSMessage:
      type: object
      description: SMS message template that may be sent to the caller.
      properties:
        referenceId:
          type: string
          description: 'Stable identifier (format: sms-{8 hex chars}).'
          example: sms-1a2b3c4d
        externalReferenceId:
          type: string
          description: >-
            Optional identifier owned by the partner. GovWorx stores and returns
            it exactly as sent; it is never generated, never required to be
            unique, and never used to identify or match items — referenceId
            stays the only item identity. Max 255 characters; a blank value is
            treated as absent. On append to an API-owned section, an item sent
            without it is stored without it. In a GovWorx-owned section the
            stored value is carried forward, and an echo that adds, changes, or
            removes it is rejected (400).
          maxLength: 255
        message:
          type: string
          description: Message body.
          example: We've dispatched help. Stay on the line.
        mediaRef:
          type: string
          description: >-
            Reference id of an associated media asset, matching
            ActionSetMedia.referenceId.
        conditionedOn:
          type: string
          description: >-
            Natural-language condition describing when this message should be
            sent.
        sequence:
          type: integer
          format: int32
          description: Delivery order (0-based).
    DispatchTrigger:
      type: object
      description: A cue for the calltaker to set/update the CAD dispatch code or priority.
      properties:
        referenceId:
          type: string
          description: 'Stable identifier (format: dt-{8 hex chars}).'
          example: dt-1a2b3c4d
        externalReferenceId:
          type: string
          description: >-
            Optional identifier owned by the partner. GovWorx stores and returns
            it exactly as sent; it is never generated, never required to be
            unique, and never used to identify or match items — referenceId
            stays the only item identity. Max 255 characters; a blank value is
            treated as absent. On append to an API-owned section, an item sent
            without it is stored without it. In a GovWorx-owned section the
            stored value is carried forward, and an echo that adds, changes, or
            removes it is rejected (400).
          maxLength: 255
        dispatchCode:
          type: string
          description: The CAD dispatch code to apply.
          example: 29B
        condition:
          type: string
          description: >-
            Natural-language condition describing when this trigger fires. Null
            means it fires whenever the guide card becomes active.
        sequence:
          type: integer
          format: int32
          description: Delivery order (0-based).
        pinnedCode:
          type: boolean
          description: >-
            When true, this trigger always appears at the top of the All
            Triggers panel in Assist while its guide card is active.
        fallbackTrigger:
          type: boolean
          description: >-
            When true, this trigger fires automatically if no other code has
            been sent to CAD. Only one fallback trigger per guide card per
            tenant is supported.
    ActionSetMedia:
      type: object
      description: A media asset referenced by spoken instructions or SMS messages.
      properties:
        referenceId:
          type: string
          description: >-
            Stable identifier referenced by SpokenInstruction.referenceMedia or
            SMSMessage.mediaRef.
        name:
          type: string
          description: Display name.
        description:
          type: string
          description: Short description of the media asset.
        mediaType:
          type: string
          description: Type of media.
          enum:
            - IMAGE
            - VIDEO
          example: IMAGE
        url:
          type: string
          description: Public URL to the media asset.
    Link:
      type: object
      description: Conditional link to another guide card or instruction card.
      properties:
        id:
          type: integer
          format: int64
          description: Sequential identifier within the links array.
        referenceId:
          type: string
          description: 'Stable identifier (format: lk-{8 hex chars}).'
          example: lk-1a2b3c4d
        externalReferenceId:
          type: string
          description: >-
            Optional identifier owned by the partner. GovWorx stores and returns
            it exactly as sent; it is never generated, never required to be
            unique, and never used to identify or match items — referenceId
            stays the only item identity. Max 255 characters; a blank value is
            treated as absent. On append to an API-owned section, an item sent
            without it is stored without it. In a GovWorx-owned section the
            stored value is carried forward, and an echo that adds, changes, or
            removes it is rejected (400).
          maxLength: 255
        displayCriteria:
          type: string
          description: >-
            Natural-language condition describing when this link should be
            suggested.
        targetExternalId:
          type: string
          description: >-
            The target document's externalId (per provider/tenant). Required on
            an API-controlled link; resolved server-side into the target* fields
            below on every write. The target document must already exist in this
            tenant.
          example: cpr-instructions
        targetSectionId:
          type: integer
          format: int64
          description: >-
            Target knowledge section id. Null if the link has not yet been
            resolved. Server-resolved from `targetExternalId` on an
            API-controlled link; ignored on write otherwise.
        targetDocumentName:
          type: string
          description: Resolved on fetch; ignored on write.
          readOnly: true
        targetKnowledgeType:
          type: string
          description: Resolved on fetch; ignored on write.
          readOnly: true
        targetKnowledgeId:
          type: integer
          format: int64
          description: Resolved on fetch; ignored on write.
          readOnly: true
    RelatedQuestionGroup:
      type: object
      description: Group of related follow-up questions shown conditionally.
      properties:
        id:
          type: integer
          format: int64
          description: Sequential identifier within the relatedQuestions array.
        displayCriteria:
          type: string
          description: Natural-language condition describing when this group is shown.
        questionList:
          type: array
          description: Questions in this group.
          items:
            $ref: '#/components/schemas/Question'

````

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