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

# Every check of a domain's latest technical audit, with what was found and how to fix it



## OpenAPI

````yaml /api-reference/openapi.json get /api/v2/brands/{brand_id}/technical_audit/checks
openapi: 3.0.1
info:
  title: Cognizo Public API
  version: v1
  description: >-
    Public REST API for Cognizo. Authenticate with an API key via the
    `X-API-KEY` header.
servers:
  - url: https://core.cognizo.ai
security:
  - apiKey: []
paths:
  /api/v2/brands/{brand_id}/technical_audit/checks:
    parameters:
      - name: brand_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
    get:
      tags:
        - Technical audit
      summary: >-
        Every check of a domain's latest technical audit, with what was found
        and how to fix it
      operationId: list_brand_technical_audit_checks
      parameters:
        - name: filter[domain_id]
          in: query
          required: false
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: >-
            sections in order; rows missing → partial → good → not applicable,
            then by priority. Reach carries the AI assistants row
            (access.ai_bots) and, part_of it, one row per AI crawler
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      domain:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          domain:
                            type: string
                        required:
                          - id
                          - domain
                      sections:
                        type: array
                        items:
                          type: object
                          properties:
                            key:
                              type: string
                              enum:
                                - reach
                                - seo
                                - cite
                            title:
                              type: string
                            checks:
                              type: array
                              items:
                                $ref: '#/components/schemas/technical_audit_check'
                          required:
                            - key
                            - title
                            - checks
                      robots_txt:
                        type: object
                        nullable: true
                        properties:
                          url:
                            type: string
                          final_url:
                            type: string
                            nullable: true
                          status:
                            type: integer
                            nullable: true
                          body:
                            type: string
                        required:
                          - url
                          - final_url
                          - status
                          - body
                      reason_labels:
                        type: object
                        additionalProperties:
                          type: string
                        description: >-
                          Customer copy for every reason key in
                          site.content.substantive / site.content.outdated page
                          details (`detail.reasons`)
                    required:
                      - domain
                      - sections
                      - robots_txt
                      - reason_labels
                required:
                  - data
        '403':
          description: >-
            organization access revoked (ORGANIZATION_ACCESS_REVOKED): the
            access token's organization is no longer one of the user's
            memberships (they left, were removed, or the organization was
            deleted). The session itself is still valid: drop the organization's
            client state and refresh the session, which moves it to another
            organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: >-
            brand not found (NOT_FOUND): no such brand, or it belongs to another
            organization (the two are indistinguishable by design).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
components:
  schemas:
    technical_audit_check:
      description: >-
        One row of the checks list. `evidence` is typed per check family, chosen
        by `key`.
      oneOf:
        - $ref: '#/components/schemas/technical_audit_check_for_ai_bot'
        - $ref: '#/components/schemas/technical_audit_check_for_ai_bots'
        - $ref: '#/components/schemas/technical_audit_check_for_robots'
        - $ref: '#/components/schemas/technical_audit_check_for_server'
        - $ref: '#/components/schemas/technical_audit_check_for_homepage_https'
        - $ref: >-
            #/components/schemas/technical_audit_check_for_homepage_http_redirect
        - $ref: '#/components/schemas/technical_audit_check_for_homepage_reachable'
        - $ref: '#/components/schemas/technical_audit_check_for_homepage_indexable'
        - $ref: '#/components/schemas/technical_audit_check_for_sitemap_declared'
        - $ref: '#/components/schemas/technical_audit_check_for_sitemap_valid'
        - $ref: '#/components/schemas/technical_audit_check_for_schema_homepage'
        - $ref: '#/components/schemas/technical_audit_check_for_schema_valid'
        - $ref: '#/components/schemas/technical_audit_check_for_schema_type_mismatch'
        - $ref: '#/components/schemas/technical_audit_check_for_schema_same_as'
        - $ref: '#/components/schemas/technical_audit_check_for_schema_recommended'
        - $ref: '#/components/schemas/technical_audit_check_for_bot_protection'
        - $ref: '#/components/schemas/technical_audit_check_for_listing_pages'
      discriminator:
        propertyName: key
        mapping:
          access.ai_bot.oai_searchbot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.chatgpt_user: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.gptbot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.claude_searchbot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.claude_user: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.claudebot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.perplexitybot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.perplexity_user: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.googlebot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.google_extended: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.bingbot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.applebot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.applebot_extended: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.meta_externalagent: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.ccbot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.amazonbot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bot.duckassistbot: '#/components/schemas/technical_audit_check_for_ai_bot'
          access.ai_bots: '#/components/schemas/technical_audit_check_for_ai_bots'
          access.robots.reachable: '#/components/schemas/technical_audit_check_for_robots'
          access.server: '#/components/schemas/technical_audit_check_for_server'
          access.homepage.https: '#/components/schemas/technical_audit_check_for_homepage_https'
          access.homepage.http_redirect: >-
            #/components/schemas/technical_audit_check_for_homepage_http_redirect
          access.homepage.reachable: '#/components/schemas/technical_audit_check_for_homepage_reachable'
          access.homepage.indexable: '#/components/schemas/technical_audit_check_for_homepage_indexable'
          access.sitemap.declared: '#/components/schemas/technical_audit_check_for_sitemap_declared'
          access.sitemap.valid: '#/components/schemas/technical_audit_check_for_sitemap_valid'
          site.schema.organization_homepage: '#/components/schemas/technical_audit_check_for_schema_homepage'
          site.schema.website_homepage: '#/components/schemas/technical_audit_check_for_schema_homepage'
          site.schema.valid: '#/components/schemas/technical_audit_check_for_schema_valid'
          site.schema.type_mismatch: '#/components/schemas/technical_audit_check_for_schema_type_mismatch'
          site.schema.same_as: '#/components/schemas/technical_audit_check_for_schema_same_as'
          site.schema.recommended: '#/components/schemas/technical_audit_check_for_schema_recommended'
          site.access.bot_protection: '#/components/schemas/technical_audit_check_for_bot_protection'
          site.schema.article: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.schema.faq: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.pages.errors: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.links.broken_internal: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.snippets.blocked: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.indexing.noindex: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.redirects.chains: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.canonical.issues: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.sitemap.mismatch: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.social.open_graph: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.headings.single_h1: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.headings.h1_descriptive: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.headings.hierarchy: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.titles.unique: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.titles.length: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.titles.relevant: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.meta_description.present: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.meta_description.relevant: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.images.alt: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.images.alt_descriptive: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.articles.dates: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.articles.author: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.content.substantive: '#/components/schemas/technical_audit_check_for_listing_pages'
          site.content.outdated: '#/components/schemas/technical_audit_check_for_listing_pages'
    error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Stable machine-readable reason; see `error_code`.
            message:
              type: string
            details:
              type: array
              items:
                $ref: '#/components/schemas/error_detail'
          required:
            - code
            - message
      required:
        - error
    technical_audit_check_for_ai_bot:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.ai_bot.oai_searchbot
                - access.ai_bot.chatgpt_user
                - access.ai_bot.gptbot
                - access.ai_bot.claude_searchbot
                - access.ai_bot.claude_user
                - access.ai_bot.claudebot
                - access.ai_bot.perplexitybot
                - access.ai_bot.perplexity_user
                - access.ai_bot.googlebot
                - access.ai_bot.google_extended
                - access.ai_bot.bingbot
                - access.ai_bot.applebot
                - access.ai_bot.applebot_extended
                - access.ai_bot.meta_externalagent
                - access.ai_bot.ccbot
                - access.ai_bot.amazonbot
                - access.ai_bot.duckassistbot
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_ai_bot'
          required:
            - key
            - evidence
    technical_audit_check_for_ai_bots:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.ai_bots
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_ai_bots'
          required:
            - key
            - evidence
    technical_audit_check_for_robots:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.robots.reachable
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_robots'
          required:
            - key
            - evidence
    technical_audit_check_for_server:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.server
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_server'
          required:
            - key
            - evidence
    technical_audit_check_for_homepage_https:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.homepage.https
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_homepage_https'
          required:
            - key
            - evidence
    technical_audit_check_for_homepage_http_redirect:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.homepage.http_redirect
            evidence:
              $ref: >-
                #/components/schemas/technical_audit_evidence_homepage_http_redirect
          required:
            - key
            - evidence
    technical_audit_check_for_homepage_reachable:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.homepage.reachable
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_homepage_reachable'
          required:
            - key
            - evidence
    technical_audit_check_for_homepage_indexable:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.homepage.indexable
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_homepage_indexable'
          required:
            - key
            - evidence
    technical_audit_check_for_sitemap_declared:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.sitemap.declared
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_sitemap_declared'
          required:
            - key
            - evidence
    technical_audit_check_for_sitemap_valid:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - access.sitemap.valid
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_sitemap_valid'
          required:
            - key
            - evidence
    technical_audit_check_for_schema_homepage:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - site.schema.organization_homepage
                - site.schema.website_homepage
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_schema_homepage'
          required:
            - key
            - evidence
    technical_audit_check_for_schema_valid:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - site.schema.valid
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_schema_valid'
          required:
            - key
            - evidence
    technical_audit_check_for_schema_type_mismatch:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - site.schema.type_mismatch
            evidence:
              $ref: >-
                #/components/schemas/technical_audit_evidence_schema_type_mismatch
          required:
            - key
            - evidence
    technical_audit_check_for_schema_same_as:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - site.schema.same_as
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_schema_same_as'
          required:
            - key
            - evidence
    technical_audit_check_for_schema_recommended:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - site.schema.recommended
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_schema_recommended'
          required:
            - key
            - evidence
    technical_audit_check_for_bot_protection:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - site.access.bot_protection
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_bot_protection'
          required:
            - key
            - evidence
    technical_audit_check_for_listing_pages:
      allOf:
        - $ref: '#/components/schemas/technical_audit_check_base'
        - type: object
          properties:
            key:
              type: string
              enum:
                - site.schema.article
                - site.schema.faq
                - site.pages.errors
                - site.links.broken_internal
                - site.snippets.blocked
                - site.indexing.noindex
                - site.redirects.chains
                - site.canonical.issues
                - site.sitemap.mismatch
                - site.social.open_graph
                - site.headings.single_h1
                - site.headings.h1_descriptive
                - site.headings.hierarchy
                - site.titles.unique
                - site.titles.length
                - site.titles.relevant
                - site.meta_description.present
                - site.meta_description.relevant
                - site.images.alt
                - site.images.alt_descriptive
                - site.articles.dates
                - site.articles.author
                - site.content.substantive
                - site.content.outdated
            evidence:
              $ref: '#/components/schemas/technical_audit_evidence_listing_pages'
          required:
            - key
            - evidence
    error_detail:
      type: object
      properties:
        field:
          type: string
          nullable: true
        code:
          type: string
        message:
          type: string
      required:
        - code
        - message
        - field
    technical_audit_check_base:
      type: object
      properties:
        section:
          type: string
          enum:
            - reach
            - seo
            - cite
        title:
          type: string
        type:
          type: string
          enum:
            - technical
            - content
        channel:
          type: string
          enum:
            - website
        priority:
          type: string
          enum:
            - high
            - medium
            - low
        status:
          type: string
          enum:
            - good
            - partial
            - missing
            - not_applicable
          description: >-
            After page dismissals (all affected pages dismissed → good). A
            whole-dismissed check keeps its real status but counts in no total,
            like not_applicable.
        affected_count:
          type: integer
          nullable: true
          description: Affected pages not dismissed; null for a site-level check
        total_count:
          type: integer
          nullable: true
        change:
          type: string
          enum:
            - new
            - fixed
            - null
          nullable: true
        why:
          type: string
        explanation:
          type: object
          properties:
            what:
              type: string
            expectation:
              type: string
            how_to_fix:
              type: string
            passed:
              type: string
              description: >-
                One plain sentence saying what is true now; shown instead of
                how_to_fix when the check passes
          required:
            - what
            - expectation
            - how_to_fix
            - passed
        dismissed:
          allOf:
            - $ref: '#/components/schemas/technical_audit_dismissal_marker'
          nullable: true
          description: >-
            The whole-check dismissal, or null (always null on the AI assistants
            row)
        dismissed_pages:
          type: integer
          description: Affected pages the team dismissed (taken off affected_count)
        part_of:
          type: string
          enum:
            - access.ai_bots
            - null
          nullable: true
          description: >-
            The row this check is shown inside instead of on its own: every
            AI-crawler check is part of the AI assistants row (access.ai_bots).
            The checks table shows the rows where this is null; every total
            counts them.
      required:
        - section
        - title
        - type
        - channel
        - priority
        - status
        - affected_count
        - total_count
        - change
        - why
        - explanation
        - dismissed
        - dismissed_pages
        - part_of
    technical_audit_evidence_ai_bot:
      type: object
      description: One AI crawler's robots.txt decision
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        bot:
          type: string
          description: robots.txt token
        company:
          type: string
        purpose:
          type: string
        product:
          type: string
        role:
          type: string
          enum:
            - search
            - answers
            - training
        site:
          type: string
          nullable: true
        allowed:
          type: boolean
        group:
          type: string
          nullable: true
          description: The robots.txt group that decided (a token or *)
        line_number:
          type: integer
          nullable: true
        rule:
          type: string
          nullable: true
          description: The deciding line, as written
    technical_audit_evidence_ai_bots:
      type: object
      description: 'The AI assistants row: every crawler check it stands for'
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        check_keys:
          type: array
          items:
            type: string
          description: The crawler checks this row stands for, in catalogue order
        blocked_count:
          type: integer
          description: Crawlers blocked and not dismissed
        bots:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
              bot:
                type: string
              company:
                type: string
              product:
                type: string
              role:
                type: string
                enum:
                  - search
                  - answers
                  - training
              site:
                type: string
                nullable: true
              purpose:
                type: string
              status:
                type: string
                enum:
                  - good
                  - partial
                  - missing
                  - not_applicable
              priority:
                type: string
                enum:
                  - high
                  - medium
                  - low
              dismissed:
                type: boolean
                description: The team dismissed this crawler's check
            required:
              - key
              - status
              - priority
              - dismissed
    technical_audit_evidence_robots:
      type: object
      description: >-
        robots.txt as fetched (its body is served once, as robots_txt on the
        check list)
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        url:
          type: string
        final_url:
          type: string
          nullable: true
        status:
          type: integer
          nullable: true
        fetched_at:
          type: string
          format: date-time
    technical_audit_evidence_server:
      type: object
      description: The homepage requested as each AI search crawler robots.txt allows
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        bots:
          type: array
          items:
            type: object
            properties:
              bot:
                type: string
              product:
                type: string
              role:
                type: string
              site:
                type: string
                nullable: true
              status:
                type: integer
                nullable: true
              reason:
                type: string
                nullable: true
                enum:
                  - challenge
                  - forbidden
                  - rate_limited
                  - null
                description: Why the crawler was blocked; null when it wasn't
              vendor:
                type: string
                nullable: true
        vendor:
          type: string
          nullable: true
          description: The bot-protection vendor recognised, if any
        vendor_refused:
          type: boolean
          description: False when a 429 behind a CDN came from the origin, not the CDN
        vendor_fix:
          type: string
          nullable: true
          description: >-
            The setting to change — vendor-specific when a vendor was
            recognised, otherwise generic
    technical_audit_evidence_homepage_https:
      type: object
      description: The HTTPS fetch's error, if any
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        error:
          type: string
          nullable: true
    technical_audit_evidence_homepage_http_redirect:
      type: object
      description: Where http:// ends up
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        final_url:
          type: string
          nullable: true
    technical_audit_evidence_homepage_reachable:
      type: object
      description: The homepage fetch
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        status:
          type: integer
          nullable: true
        final_url:
          type: string
          nullable: true
    technical_audit_evidence_homepage_indexable:
      type: object
      description: The homepage's robots directives
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        meta_robots:
          type: string
          nullable: true
        x_robots_tag:
          type: string
          nullable: true
    technical_audit_evidence_sitemap_declared:
      type: object
      description: Sitemaps robots.txt names
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        sitemaps:
          type: array
          items:
            type: string
    technical_audit_evidence_sitemap_valid:
      type: object
      description: The first sitemap that listed URLs, or every one tried
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        url:
          type: string
        url_count:
          type: integer
        tried:
          type: array
          items:
            type: string
    technical_audit_evidence_schema_homepage:
      type: object
      description: The homepage's structured data
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        homepage:
          type: string
        found_types:
          type: array
          items:
            type: string
          description: schema.org types the homepage has
    technical_audit_evidence_schema_valid:
      type: object
      description: >-
        Template-wide problems, reported once (per-page problems are on the
        pages)
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        site_wide:
          type: array
          items:
            type: object
            description: A problem a shared template puts on most pages, reported once
            properties:
              type:
                type: string
              missing:
                type: array
                items:
                  type: string
                description: site.schema.valid only
              pages:
                type: integer
                description: Pages carrying it
              current:
                type: object
                additionalProperties: true
                nullable: true
                description: >-
                  A JSON-LD block (schema.org); <angle-bracketed> values are
                  placeholders
              suggested:
                type: object
                additionalProperties: true
                nullable: true
                description: 'site.schema.valid only: the corrected block'
              note:
                type: string
              example_urls:
                type: array
                items:
                  type: string
              found:
                type: string
              fix:
                type: string
        site_wide_count:
          type: integer
    technical_audit_evidence_schema_type_mismatch:
      type: object
      description: The same mismatched block on many pages, named once
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        site_wide:
          type: array
          items:
            type: object
            description: A problem a shared template puts on most pages, reported once
            properties:
              type:
                type: string
              missing:
                type: array
                items:
                  type: string
                description: site.schema.valid only
              pages:
                type: integer
                description: Pages carrying it
              current:
                type: object
                additionalProperties: true
                nullable: true
                description: >-
                  A JSON-LD block (schema.org); <angle-bracketed> values are
                  placeholders
              suggested:
                type: object
                additionalProperties: true
                nullable: true
                description: 'site.schema.valid only: the corrected block'
              note:
                type: string
              example_urls:
                type: array
                items:
                  type: string
              found:
                type: string
              fix:
                type: string
        site_wide_count:
          type: integer
    technical_audit_evidence_schema_same_as:
      type: object
      description: The homepage Organization's sameAs links
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        same_as:
          type: array
          items:
            type: string
          description: Profile links found
        suggested:
          type: object
          additionalProperties: true
          nullable: true
          description: >-
            A JSON-LD block (schema.org); <angle-bracketed> values are
            placeholders
    technical_audit_evidence_schema_recommended:
      type: object
      description: Schema types worth adding, grouped by page type
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        groups:
          type: array
          items:
            type: object
            properties:
              page_type:
                type: string
              page_count:
                type: integer
              sample_urls:
                type: array
                items:
                  type: string
              recommended_types:
                type: array
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    pages:
                      type: integer
                  required:
                    - type
                    - pages
    technical_audit_evidence_bot_protection:
      type: object
      description: Pages behind bot protection, by reason
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
        reasons:
          type: object
          additionalProperties:
            type: integer
          description: Block reason → pages
    technical_audit_evidence_listing_pages:
      type: object
      description: A check that lists pages; its detail is on each page
      properties:
        note:
          type: string
          description: >-
            Why the check couldn't run or what was assumed (e.g. no sitemap to
            compare)
        found:
          type: string
          description: 'Site-level checks, when failing: one plain sentence on what we saw'
        fix:
          type: string
          description: >-
            Site-level checks, when failing: one plain sentence on what to
            change
        check_finding:
          type: object
          description: >-
            Checks that list pages: what was found across the site and what to
            change, said once above the page list
          properties:
            found:
              type: string
              nullable: true
            fix:
              type: string
            snippet:
              type: string
              nullable: true
              description: Example HTML / JSON-LD to paste
          required:
            - found
            - fix
            - snippet
    technical_audit_dismissal_marker:
      type: object
      description: >-
        Set when the team dismissed this finding: who, when and why. A dismissed
        finding is still shown, but no longer counts as a problem.
      properties:
        id:
          type: string
          format: uuid
          description: Pass to DELETE /technical_audit/dismissals/{dismissal_id} to undo
        by:
          type: string
          nullable: true
          description: Name (or email) of whoever dismissed it, when known
        at:
          type: string
          format: date-time
        reason:
          type: string
          nullable: true
      required:
        - id
        - by
        - at
        - reason
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-KEY

````

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