openapi: 3.1.0
info:
  title: GoGuides Public Machine API
  version: '2026-08-29'
  summary: Public machine-readable web intelligence, trust, provenance, and verified-text
    interfaces.
  description: "Canonical public API contract for GoGuides machine-readable interfaces.\n\
    \nThis contract documents observed production behavior. It does not imply\nthat\
    \ every GoGuides human-readable page is a JSON API.\n\nPrimary machine interfaces:\n\
    \  - Trust Evaluate\n  - Web State\n  - Trust Signal Feed\n  - Verified Text\n\
    \nHuman-readable Trust Record and history resources are linked from API\nresponses\
    \ but are not modeled here as JSON APIs.\n"
  license:
    name: GoGuides Data License 2.0
    url: https://www.goguides.com/data-license
servers:
- url: https://www.goguides.com
  description: GoGuides production
tags:
- name: Evaluate
  description: Trust and public-eligibility evaluation.
- name: Web State
  description: Latest public objective Web State V3 observation.
- name: Signal
  description: Public trust broadcast signal.
- name: Verified Text
  description: Source-attributed hash-verified text lookup.
paths:
  /evaluate/{domain}:
    get:
      tags:
      - Evaluate
      operationId: evaluateDomain
      summary: Evaluate a domain
      description: 'Returns the GoGuides trust evaluation for a domain.


        When available, state_url points to the corresponding Web State V3

        resource. The semantics object provides discovery of the Web State

        bitmask contracts.

        '
      parameters:
      - $ref: '#/components/parameters/DomainPath'
      responses:
        '200':
          description: Evaluation completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvaluateResponse'
        '400':
          description: Invalid or missing evaluation input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvaluateError'
        '500':
          $ref: '#/components/responses/InternalError'
  /evaluate.php:
    get:
      tags:
      - Evaluate
      operationId: evaluateDomainQuery
      summary: Evaluate a domain using the query interface
      parameters:
      - name: domain
        in: query
        required: true
        schema:
          type: string
        example: example.com
      - name: format
        in: query
        required: false
        schema:
          type: string
          enum:
          - json
      responses:
        '200':
          description: Evaluation completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvaluateResponse'
        '400':
          description: Missing domain for a machine JSON request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvaluateError'
  /state/{domain}:
    get:
      tags:
      - Web State
      operationId: getWebState
      summary: Get latest public Web State V3
      description: 'Returns the latest normalized objective Web State V3 observation
        for

        a publicly eligible domain.


        The endpoint does not trigger a crawl. It reads the latest stored

        provenance observation.


        State properties that were not observed may be omitted. A numeric

        value of zero is meaningful and is not equivalent to an omitted field.


        The schema_type_mask and ai_policy_mask integer values are retained

        for compact machine use. Their decoded companion objects expose

        versioned semantics.

        '
      parameters:
      - $ref: '#/components/parameters/DomainPath'
      responses:
        '200':
          description: Latest public Web State observation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebStateObserved'
        '403':
          description: Domain exists or was evaluated but Web State is not publicly
            available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebStateNotPublic'
        '404':
          description: 'No stored public Web State observation was found.


            Note: malformed path values that do not match the production

            rewrite route may instead receive an Apache HTML 404 before the

            request reaches the Web State application.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebStateNotObserved'
        '500':
          description: Internal Web State error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebStateError'
  /signal.json:
    get:
      tags:
      - Signal
      operationId: getTrustSignal
      summary: Get a public GoGuides trust signal
      description: 'Returns the current public trust broadcast signal.


        The optional domain parameter requests evaluation of that domain as

        the candidate signal. Public trust policy remains authoritative; a

        requested domain that does not clear the public broadcast gate

        produces a no_signal response rather than forcing publication.

        '
      parameters:
      - name: domain
        in: query
        required: false
        description: Optional candidate domain.
        schema:
          type: string
        example: example.com
      responses:
        '200':
          description: Public signal or explicit no_signal response.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/TrustSignal'
                - $ref: '#/components/schemas/NoTrustSignal'
  /verified-text:
    get:
      tags:
      - Verified Text
      operationId: getVerifiedText
      summary: Search or retrieve GoGuides Verified Text
      description: "Supports two machine-readable modes.\n\nTopic lookup:\n  ?q=gravity&format=json\n\
        \nFull verified record:\n  ?source_key=oewn&chunk_id=oewn:gravity:noun:06900188&format=json\n\
        \nTopic results contain previews. The preview itself is not the complete\n\
        SHA-256 verification scope. Full-record hash verification applies to\nthe\
        \ returned normalized verified_text value.\n"
      parameters:
      - name: q
        in: query
        required: false
        description: Natural topic query.
        schema:
          type: string
      - name: source_key
        in: query
        required: false
        description: Verified-text source identifier.
        schema:
          type: string
      - name: chunk_id
        in: query
        required: false
        description: Exact verified-text chunk identifier.
        schema:
          type: string
      - name: format
        in: query
        required: false
        schema:
          type: string
          enum:
          - json
      responses:
        '200':
          description: Topic lookup, full record, or lookup landing response.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/VerifiedTopicResponse'
                - $ref: '#/components/schemas/VerifiedTextRecord'
                - $ref: '#/components/schemas/VerifiedTextReady'
        '404':
          description: Topic or exact verified-text record not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifiedTextNotFound'
        '500':
          description: Verified Text server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifiedTextError'
  /changes/{domain}:
    get:
      summary: Get historical Web State change intelligence for a domain
      description: Compares consecutive Web State V3 observations of the same requested
        URL. No crawl is triggered.
      parameters:
      - name: domain
        in: path
        required: true
        schema:
          type: string
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 25
      responses:
        '200':
          description: Observed change intelligence
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeIntelligenceResponse'
        '400':
          description: Invalid or missing domain
        '403':
          description: Domain not publicly available
        '404':
          description: Insufficient Web State V3 history
        '500':
          description: Internal error
components:
  parameters:
    DomainPath:
      name: domain
      in: path
      required: true
      description: Normalized DNS domain name.
      schema:
        type: string
        pattern: ^[A-Za-z0-9.-]+$
      example: example.com
  responses:
    InternalError:
      description: Internal server error.
  schemas:
    SemanticsDiscovery:
      type: object
      required:
      - web_state_version
      - bitmasks
      properties:
        web_state_version:
          type: string
          const: web-state-v3
        bitmasks:
          type: object
          required:
          - ai_policy_mask
          - schema_type_mask
          properties:
            ai_policy_mask:
              $ref: '#/components/schemas/SemanticsReference'
            schema_type_mask:
              $ref: '#/components/schemas/SemanticsReference'
    SemanticsReference:
      type: object
      required:
      - version
      - url
      properties:
        version:
          type: string
        url:
          type: string
          format: uri
    MachineUse:
      type: object
      properties:
        version:
          type: string
        status:
          type: string
        read:
          type: boolean
        summarize:
          type: boolean
        cite:
          type: boolean
        recommend:
          type: boolean
        transact:
          type: boolean
        sensitive_advice:
          type: boolean
        decision:
          type: string
        basis:
          type: array
          items:
            type: string
        limits:
          type: array
          items:
            type: string
      additionalProperties: true
    EvaluateResponse:
      type: object
      required:
      - system
      - api_version
      - source
      - query
      - observed
      - public_eligible
      - machine_use
      - result
      - ts_utc
      properties:
        system:
          type: string
          const: GoGuides Trust Evaluate
        api_version:
          type: string
          const: evaluate-v3.2
        source:
          type: string
          const: goguides
        license:
          type: string
          format: uri
        license_version:
          type: string
        query:
          type: string
        query_normalized:
          type: string
        self_url:
          type: string
          format: uri
        signal_url:
          type: string
          format: uri
        trust_id:
          type: string
        favicon_seed:
          type: string
        favicon_url:
          type: string
          format: uri
        observed:
          type: boolean
        known_to_queue:
          type: boolean
        trust_state:
          type: string
        lookup_type:
          type: string
        public_eligible:
          type: boolean
        profile_allowed:
          type: boolean
        favicon_allowed:
          type: boolean
        policy_status:
          type: string
        status:
          type: string
        filter_reason:
          type: string
        ai_rank:
          type: integer
        grade:
          type: string
        trust_confidence:
          type: number
        confidence:
          type: number
          description: Legacy alias. Prefer trust_confidence where present.
        source_type:
          type: string
        summary:
          type: object
          additionalProperties: true
        machine_use:
          $ref: '#/components/schemas/MachineUse'
        documentation:
          type: object
          additionalProperties: true
        verification:
          type: object
          additionalProperties: true
        crawl_status:
          type: object
          additionalProperties: true
        activity_signal:
          type: object
          additionalProperties: true
        freshness:
          type: object
          additionalProperties: true
        last_crawled_at:
          type: string
        signal_last_changed_at:
          type: string
        first_seen:
          type: string
        last_observed:
          type: string
        record_freshness_label:
          type: string
        days_observed:
          type: integer
        trust_record_age:
          type: integer
        trust_measurement_count:
          type: integer
        observation_count:
          type: integer
          description: Legacy alias. Prefer trust_measurement_count.
        observation_span:
          type: object
          additionalProperties: true
        stability_window:
          type: object
          additionalProperties: true
        current_trust_state_since:
          type: string
        days_since_last_change:
          type: integer
        rank_algo_state_changes:
          type: integer
        trust_record_fingerprint:
          type: string
        provenance:
          type: object
          additionalProperties: true
        policy_review:
          type: object
          additionalProperties: true
        gate:
          type: object
          additionalProperties: true
        matched_domain:
          type: string
        matched_url:
          type: string
        history_url:
          type: string
          format: uri
        verify_url:
          type: string
          format: uri
        state_url:
          type: string
          format: uri
        semantics:
          $ref: '#/components/schemas/SemanticsDiscovery'
        result:
          type: object
          additionalProperties: true
        error:
          type: string
        ts_utc:
          type: string
      additionalProperties: true
    EvaluateError:
      type: object
      required:
      - system
      - api_version
      - status
      - error
      properties:
        system:
          type: string
          const: GoGuides Trust Evaluate
        api_version:
          type: string
          const: evaluate-v3.2
        source:
          type: string
          const: goguides
        status:
          type: string
          const: error
        error:
          type: string
        message:
          type: string
        self_url:
          type: string
          format: uri
        example_url:
          type: string
          format: uri
        signal_url:
          type: string
          format: uri
        license:
          type: string
          format: uri
        license_version:
          type: string
        ts_utc:
          type: string
      additionalProperties: true
    WebStateObserved:
      type: object
      required:
      - system
      - api_version
      - scope
      - domain
      - status
      - public_eligible
      - observation
      - state
      - semantics
      - links
      - license
      - license_version
      - ts_utc
      properties:
        system:
          type: string
          const: GoGuides Web State
        api_version:
          type: string
          const: web-state-v3
        scope:
          type: string
          const: objective_web_state_v3
        domain:
          type: string
        status:
          type: string
          const: observed
        public_eligible:
          type: boolean
          const: true
        observation:
          $ref: '#/components/schemas/WebStateObservation'
        state:
          $ref: '#/components/schemas/WebStateFields'
        semantics:
          $ref: '#/components/schemas/SemanticsDiscovery'
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
            evaluate:
              type: string
              format: uri
            history:
              type: string
              format: uri
            verify:
              type: string
              format: uri
          additionalProperties: true
        license:
          type: string
          format: uri
        license_version:
          type: string
        ts_utc:
          type: string
      additionalProperties: true
    WebStateObservation:
      type: object
      properties:
        id:
          type: integer
        requested_url:
          type: string
          format: uri
        final_url:
          type: string
          format: uri
        http_status:
          type: integer
        first_observed_at:
          type: string
        last_observed_at:
          type: string
        observation_count:
          type: integer
      additionalProperties: true
    WebStateFields:
      type: object
      description: 'Objective Web State V3 values. Unobserved values may be omitted.

        Zero is a legitimate observed numeric value and must not be

        interpreted as absence.

        '
      properties:
        text_simhash:
          type: string
          description: Compact textual similarity fingerprint.
        structured_data_sha256:
          type: string
          pattern: ^[0-9a-f]{64}$
        schema_type_mask:
          type: integer
          minimum: 0
        headers_sha256:
          type: string
          pattern: ^[0-9a-f]{64}$
        word_count:
          type: integer
          minimum: 0
        internal_link_count:
          type: integer
          minimum: 0
        external_link_count:
          type: integer
          minimum: 0
        outbound_links_sha256:
          type: string
          pattern: ^[0-9a-f]{64}$
        ai_policy_mask:
          type: integer
          minimum: 0
        schema_types:
          $ref: '#/components/schemas/DecodedSchemaTypes'
        ai_policy:
          $ref: '#/components/schemas/DecodedAiPolicy'
      additionalProperties: false
    DecodedSchemaTypes:
      type: object
      required:
      - mask_version
      - set_bits
      - types
      - unknown_bits
      - semantics_url
      properties:
        mask_version:
          type: string
          const: schema-type-mask-v1
        set_bits:
          type: array
          items:
            type: integer
            minimum: 0
        types:
          type: array
          items:
            type: string
        unknown_bits:
          type: array
          items:
            type: integer
            minimum: 0
        semantics_url:
          type: string
          format: uri
    DecodedAiPolicy:
      type: object
      required:
      - mask_version
      - scope
      - robots_agent
      - set_bits
      - flags
      - unknown_bits
      - semantics_url
      properties:
        mask_version:
          type: string
          const: ai-policy-mask-v1
        scope:
          type: string
          const: observed_machine_directives
        robots_agent:
          type: string
          const: GoGuidesCrawler
        set_bits:
          type: array
          items:
            type: integer
            minimum: 0
        flags:
          type: array
          items:
            type: string
        unknown_bits:
          type: array
          items:
            type: integer
            minimum: 0
        semantics_url:
          type: string
          format: uri
    WebStateNotPublic:
      type: object
      required:
      - system
      - api_version
      - scope
      - domain
      - status
      - public_eligible
      properties:
        system:
          type: string
          const: GoGuides Web State
        api_version:
          type: string
          const: web-state-v3
        scope:
          type: string
          const: objective_web_state_v3
        domain:
          type: string
        status:
          type: string
          const: not_publicly_available
        policy_status:
          type: string
        public_eligible:
          type: boolean
          const: false
        license:
          type: string
          format: uri
        license_version:
          type: string
        ts_utc:
          type: string
      additionalProperties: true
    WebStateNotObserved:
      type: object
      required:
      - system
      - api_version
      - scope
      - domain
      - status
      - public_eligible
      properties:
        system:
          type: string
          const: GoGuides Web State
        api_version:
          type: string
          const: web-state-v3
        scope:
          type: string
          const: objective_web_state_v3
        domain:
          type: string
        status:
          type: string
          const: not_observed
        public_eligible:
          type: boolean
          const: true
        evaluate_url:
          type: string
          format: uri
        history_url:
          type: string
          format: uri
        license:
          type: string
          format: uri
        license_version:
          type: string
        ts_utc:
          type: string
      additionalProperties: true
    WebStateError:
      type: object
      required:
      - system
      - api_version
      - status
      - error
      properties:
        system:
          type: string
          const: GoGuides Web State
        api_version:
          type: string
          const: web-state-v3
        scope:
          type: string
        domain:
          type: string
        status:
          type: string
          const: error
        error:
          type: string
        message:
          type: string
        license:
          type: string
          format: uri
        license_version:
          type: string
        ts_utc:
          type: string
      additionalProperties: true
    TrustSignal:
      type: object
      required:
      - system
      - api_version
      - source
      - domain
      - filtered
      - machine_use
      properties:
        system:
          type: string
          const: GoGuides Trust Signal Feed
        api_version:
          type: string
          const: signal-v2
        source:
          type: string
          const: goguides
        domain:
          type: string
        grade:
          type: string
        ai_rank:
          type: integer
        verify_url:
          type: string
          format: uri
        evaluate_url:
          type: string
          format: uri
        history_url:
          type: string
          format: uri
        favicon_url:
          type: string
          format: uri
        filtered:
          type: boolean
          const: false
        public_eligible:
          type: boolean
        profile_allowed:
          type: boolean
        favicon_allowed:
          type: boolean
        policy_status:
          type: string
        lookup_type:
          type: string
        notes:
          type: string
        machine_use:
          $ref: '#/components/schemas/MachineUse'
        gate:
          type: object
          additionalProperties: true
        verification:
          type: object
          additionalProperties: true
        first_seen_utc:
          type: string
        verified_since_utc:
          type: string
        signal_last_changed_at:
          type: string
        last_crawled_at:
          type: string
        activity_signal:
          type: object
          additionalProperties: true
        broadcast_fingerprint:
          type: string
        self_url:
          type: string
          format: uri
        priority:
          type: string
        trust_id:
          type: string
        favicon_seed:
          type: string
        trust_state:
          type: string
        confidence:
          type: number
        trust_score_bucket:
          type: string
        observed:
          type: boolean
        known_to_queue:
          type: boolean
        source_type:
          type: string
        algo_version:
          type: string
        crawl_status:
          type: object
          additionalProperties: true
        freshness:
          type: object
          additionalProperties: true
        last_observed_utc:
          type: string
        content_last_changed:
          type: string
        documentation:
          type: object
          additionalProperties: true
        license:
          type: string
          format: uri
        license_version:
          type: string
      additionalProperties: true
    NoTrustSignal:
      type: object
      required:
      - system
      - api_version
      - source
      - status
      - lookup_type
      - filtered
      - public_eligible
      - machine_use
      properties:
        system:
          type: string
          const: GoGuides Trust Signal Feed
        api_version:
          type: string
          const: signal-v2
        source:
          type: string
          const: goguides
        status:
          type: string
          const: no_signal
        lookup_type:
          type: string
          const: no_signal
        filtered:
          type: boolean
          const: true
        public_eligible:
          type: boolean
          const: false
        policy_status:
          type: string
        filter_reason:
          type: string
        notes:
          type: string
        candidate_domain:
          type: string
        candidate_gate_status:
          type: string
        candidate_gate_policy:
          type: string
        candidate_ai_rank:
          type: integer
        candidate_grade:
          type: string
        documentation:
          type: object
          additionalProperties: true
        machine_use:
          $ref: '#/components/schemas/MachineUse'
        license:
          type: string
          format: uri
        license_version:
          type: string
        ts_utc:
          type: string
      additionalProperties: true
    VerifiedTopicResult:
      type: object
      required:
      - source_key
      - source_title
      - license_code
      - chunk_id
      - title
      - hash_alg
      - hash_sha256
      - normalizer
      - integrity
      - machine_use
      properties:
        source_key:
          type: string
        source_title:
          type: string
        license_code:
          type: string
        attribution:
          type:
          - string
          - 'null'
        license_url:
          type:
          - string
          - 'null'
        chunk_id:
          type: string
        title:
          type: string
        section:
          type: string
        hash_alg:
          type: string
          const: sha256
        hash_sha256:
          type: string
          pattern: ^[0-9a-f]{64}$
        normalizer:
          type: object
          properties:
            name:
              type: string
            version:
              type: string
        verified_text_preview:
          type: string
        verified_text_preview_length:
          type: integer
        verified_text_preview_truncated:
          type: boolean
        verified_text_length:
          type: integer
        source_url:
          type: string
          format: uri
        observed_at:
          type: string
        integrity:
          type: object
          properties:
            hash_check:
              type: string
              enum:
              - match
              - mismatch
            hash_scope:
              type: string
              const: full_normalized_text
            preview_is_hash_verified:
              type: boolean
              const: false
            computed_sha256:
              type: string
              pattern: ^[0-9a-f]{64}$
          additionalProperties: true
        machine_use:
          $ref: '#/components/schemas/MachineUse'
        record_url:
          type: string
        json_url:
          type: string
        full_record_url:
          type: string
      additionalProperties: true
    VerifiedTopicResponse:
      type: object
      required:
      - system
      - api_version
      - status
      - mode
      - response_type
      - query
      - result_count
      - results
      properties:
        system:
          type: string
          const: GoGuides Verified Text
        api_version:
          type: string
          const: verified-text-v1
        status:
          type: string
          enum:
          - ok
          - not_found
        mode:
          type: string
          const: topic_lookup
        response_type:
          type: string
          const: verified_topic_preview
        query:
          type: string
        query_topic_key:
          type: string
        topic_key:
          type: string
        resolved_topic_key:
          type: string
        alias_applied:
          type: boolean
        exact_title_query:
          type: string
        exact_title_fallback_applied:
          type: boolean
        lookup_strategy:
          type: string
        chunk_prefixes:
          type: array
          items:
            type: string
        result_count:
          type: integer
          minimum: 0
        results:
          type: array
          items:
            $ref: '#/components/schemas/VerifiedTopicResult'
        goguides_data_license:
          type: string
          format: uri
        goguides_data_license_version:
          type: string
        documentation:
          type: object
          additionalProperties: true
      additionalProperties: true
    VerifiedTextRecord:
      type: object
      required:
      - system
      - api_version
      - status
      - response_type
      - source_key
      - chunk_id
      - hash_alg
      - hash_sha256
      - verified_text
      - integrity
      - machine_use
      properties:
        system:
          type: string
          const: GoGuides Verified Text
        api_version:
          type: string
          const: verified-text-v1
        status:
          type: string
          const: ok
        response_type:
          type: string
          const: verified_text_record
        source_key:
          type: string
        source_title:
          type: string
        license_code:
          type: string
        attribution:
          type:
          - string
          - 'null'
        license_url:
          type:
          - string
          - 'null'
        chunk_id:
          type: string
        title:
          type: string
        section:
          type: string
        hash_alg:
          type: string
          const: sha256
        hash_sha256:
          type: string
          pattern: ^[0-9a-f]{64}$
        normalizer:
          type: object
          properties:
            name:
              type: string
            version:
              type: string
        verified_text:
          type: string
        source_url:
          type: string
          format: uri
        observed_at:
          type: string
        integrity:
          type: object
          properties:
            hash_check:
              type: string
              enum:
              - match
              - mismatch
            hash_scope:
              type: string
              const: full_normalized_text
            computed_sha256:
              type: string
              pattern: ^[0-9a-f]{64}$
          additionalProperties: true
        machine_use:
          $ref: '#/components/schemas/MachineUse'
        goguides_data_license:
          type: string
          format: uri
        goguides_data_license_version:
          type: string
        documentation:
          type: object
          additionalProperties: true
      additionalProperties: true
    VerifiedTextReady:
      type: object
      required:
      - system
      - api_version
      - status
      - response_type
      properties:
        system:
          type: string
          const: GoGuides Verified Text
        api_version:
          type: string
          const: verified-text-v1
        status:
          type: string
          const: ready
        response_type:
          type: string
          const: verified_text_lookup_landing
        description:
          type: string
        query_parameter:
          type: string
        examples:
          type: array
          items:
            type: string
      additionalProperties: true
    VerifiedTextNotFound:
      type: object
      required:
      - system
      - api_version
      - status
      properties:
        system:
          type: string
          const: GoGuides Verified Text
        api_version:
          type: string
          const: verified-text-v1
        status:
          type: string
          const: not_found
        mode:
          type: string
        source_key:
          type: string
        chunk_id:
          type: string
        query:
          type: string
        message:
          type: string
      additionalProperties: true
    VerifiedTextError:
      type: object
      required:
      - system
      - api_version
      - status
      - error
      properties:
        system:
          type: string
          const: GoGuides Verified Text
        api_version:
          type: string
          const: verified-text-v1
        status:
          type: string
          const: error
        mode:
          type: string
        error:
          type: string
        message:
          type: string
      additionalProperties: true
    ChangeFlags:
      type: object
      properties:
        content_changed:
          type:
          - boolean
          - 'null'
        structured_data_changed:
          type:
          - boolean
          - 'null'
        schema_types_changed:
          type:
          - boolean
          - 'null'
        headers_changed:
          type:
          - boolean
          - 'null'
        word_count_changed:
          type:
          - boolean
          - 'null'
        internal_links_changed:
          type:
          - boolean
          - 'null'
        external_links_changed:
          type:
          - boolean
          - 'null'
        outbound_links_changed:
          type:
          - boolean
          - 'null'
        ai_policy_changed:
          type:
          - boolean
          - 'null'
        http_status_changed:
          type:
          - boolean
          - 'null'
    ChangeEvent:
      type: object
      properties:
        from_observation_id:
          type: integer
        to_observation_id:
          type: integer
        observed_at:
          type: string
        changed:
          type: boolean
        changes:
          $ref: '#/components/schemas/ChangeFlags'
        refresh_recommended:
          type: boolean
        refresh_reason:
          type: array
          items:
            type: string
    ChangeIntelligenceResponse:
      type: object
      properties:
        system:
          type: string
        api_version:
          type: string
          const: change-intelligence-v1
        scope:
          type: string
          const: objective_web_state_v3
        domain:
          type: string
        status:
          type: string
        public_eligible:
          type: boolean
        tracked_url:
          type: string
        comparison_scope:
          type: string
        latest_change:
          oneOf:
          - $ref: '#/components/schemas/ChangeEvent'
          - type: 'null'
        events:
          type: array
          items:
            $ref: '#/components/schemas/ChangeEvent'
        license:
          type: string
        license_version:
          type: string
        ts_utc:
          type: string
