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

# Get Google eligibility evidence

> Returns resolver-derived URL Inspection eligibility dimensions, two-inspection confirmed transitions, and sitemap submission state for a fixed 7, 28, or 90 day window. Evidence is dated from successful measurements. Detail lists are capped while totals are not.



## OpenAPI

````yaml /openapi.json get /projects/{projectId}/audit/eligibility
openapi: 3.1.0
info:
  title: DevTune API
  version: 2.0.0
  description: >-
    API for programmatic access to your AI visibility data, webhook
    subscriptions, and automation workflows. Use this API to integrate DevTune
    data into CI/CD pipelines, BI tools, AI agents, and operational systems.
servers:
  - url: https://devtune.ai/api/v2
    description: Production
security:
  - bearerAuth: []
paths:
  /projects/{projectId}/audit/eligibility:
    get:
      summary: Get Google eligibility evidence
      description: >-
        Returns resolver-derived URL Inspection eligibility dimensions,
        two-inspection confirmed transitions, and sitemap submission state for a
        fixed 7, 28, or 90 day window. Evidence is dated from successful
        measurements. Detail lists are capped while totals are not.
      operationId: getGoogleEligibility
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: windowDays
          in: query
          schema:
            type: integer
            default: 28
            enum:
              - 7
              - 28
              - 90
          description: >-
            Fixed rolling window in days. Supported values are 7, 28, and 90.
            Defaults to 28.
        - name: evidenceLimit
          in: query
          description: >-
            Maximum page, transition, and sitemap evidence rows returned per
            list. Aggregate totals are not capped.
          schema:
            type: integer
            minimum: 1
            maximum: 25
            default: 10
      responses:
        '200':
          description: Google eligibility
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/GoogleEligibilityData'
                  meta:
                    $ref: '#/components/schemas/Meta'
                required:
                  - data
                  - meta
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/RateLimitExceededError'
components:
  schemas:
    GoogleEligibilityData:
      type: object
      additionalProperties: false
      properties:
        window:
          type: object
          additionalProperties: false
          properties:
            days:
              type: integer
              enum:
                - 7
                - 28
                - 90
            dateFrom:
              type: string
              format: date
            dateTo:
              type: string
              format: date
          required:
            - days
            - dateFrom
            - dateTo
        totals:
          type: object
          additionalProperties: false
          properties:
            inspectedPages:
              type: integer
              minimum: 0
            indexedPages:
              type: integer
              minimum: 0
            inspectionPropertiesMeasured:
              type: integer
              minimum: 0
            nonIndexedPages:
              type: integer
              minimum: 0
            inspectionErrors:
              type: integer
              minimum: 0
            pendingConfirmationPages:
              type: integer
              minimum: 0
            confirmedTransitionPages:
              type: integer
              minimum: 0
            pagesWithAssociatedSitemaps:
              type: integer
              minimum: 0
            sitemapPropertiesMeasured:
              type: integer
              minimum: 0
            sitemapSubmissions:
              type: integer
              minimum: 0
            sitemapSubmissionsWithErrors:
              type: integer
              minimum: 0
            sitemapSubmissionsWithWarnings:
              type: integer
              minimum: 0
          required:
            - inspectedPages
            - indexedPages
            - inspectionPropertiesMeasured
            - nonIndexedPages
            - inspectionErrors
            - pendingConfirmationPages
            - confirmedTransitionPages
            - pagesWithAssociatedSitemaps
            - sitemapPropertiesMeasured
            - sitemapSubmissions
            - sitemapSubmissionsWithErrors
            - sitemapSubmissionsWithWarnings
        verdicts:
          type: array
          minItems: 9
          maxItems: 9
          items:
            type: object
            additionalProperties: false
            properties:
              verdict:
                type: string
                enum:
                  - indexed
                  - crawled_not_indexed
                  - discovered_not_crawled
                  - duplicate_canonical
                  - blocked_by_robots
                  - blocked_by_noindex
                  - fetch_error
                  - excluded
                  - error
              totalCount:
                type: integer
                minimum: 0
            required:
              - verdict
              - totalCount
        pages:
          type: array
          maxItems: 25
          items:
            type: object
            additionalProperties: false
            properties:
              domainCanonical:
                type: string
                maxLength: 512
              pagePath:
                type: string
                maxLength: 2048
              verdict:
                type: string
                enum:
                  - indexed
                  - crawled_not_indexed
                  - discovered_not_crawled
                  - duplicate_canonical
                  - blocked_by_robots
                  - blocked_by_noindex
                  - fetch_error
                  - excluded
                  - error
              confirmedVerdict:
                type:
                  - string
                  - 'null'
                enum:
                  - indexed
                  - crawled_not_indexed
                  - discovered_not_crawled
                  - duplicate_canonical
                  - blocked_by_robots
                  - blocked_by_noindex
                  - fetch_error
                  - excluded
                  - null
              pendingVerdict:
                type:
                  - string
                  - 'null'
                enum:
                  - indexed
                  - crawled_not_indexed
                  - discovered_not_crawled
                  - duplicate_canonical
                  - blocked_by_robots
                  - blocked_by_noindex
                  - fetch_error
                  - excluded
                  - null
              coverageState:
                type:
                  - string
                  - 'null'
                maxLength: 512
              googleCanonical:
                type:
                  - string
                  - 'null'
                maxLength: 2048
              userCanonical:
                type:
                  - string
                  - 'null'
                maxLength: 2048
              robotsTxtState:
                type:
                  - string
                  - 'null'
                maxLength: 256
              indexingState:
                type:
                  - string
                  - 'null'
                maxLength: 256
              pageFetchState:
                type:
                  - string
                  - 'null'
                maxLength: 256
              crawledAs:
                type:
                  - string
                  - 'null'
                maxLength: 256
              associatedSitemapCount:
                type: integer
                minimum: 0
              associatedSitemaps:
                type: array
                maxItems: 10
                items:
                  type: string
                  maxLength: 2048
              referringUrlCount:
                type: integer
                minimum: 0
              referringUrls:
                type: array
                maxItems: 10
                items:
                  type: string
                  maxLength: 2048
              richResults:
                type:
                  - object
                  - 'null'
                additionalProperties: true
              dimensions:
                $ref: '#/components/schemas/GoogleEligibilityDimensions'
              observedAt:
                type: string
                format: date-time
              lastCrawlTime:
                type:
                  - string
                  - 'null'
                format: date-time
            required:
              - domainCanonical
              - pagePath
              - verdict
              - confirmedVerdict
              - pendingVerdict
              - coverageState
              - googleCanonical
              - userCanonical
              - robotsTxtState
              - indexingState
              - pageFetchState
              - crawledAs
              - associatedSitemapCount
              - associatedSitemaps
              - referringUrlCount
              - referringUrls
              - richResults
              - dimensions
              - observedAt
              - lastCrawlTime
        transitions:
          type: array
          maxItems: 25
          items:
            type: object
            additionalProperties: false
            properties:
              domainCanonical:
                type: string
                maxLength: 512
              pagePath:
                type: string
                maxLength: 2048
              previousConfirmedVerdict:
                type: string
                enum:
                  - indexed
                  - crawled_not_indexed
                  - discovered_not_crawled
                  - duplicate_canonical
                  - blocked_by_robots
                  - blocked_by_noindex
                  - fetch_error
                  - excluded
              confirmedVerdict:
                type: string
                enum:
                  - indexed
                  - crawled_not_indexed
                  - discovered_not_crawled
                  - duplicate_canonical
                  - blocked_by_robots
                  - blocked_by_noindex
                  - fetch_error
                  - excluded
              coverageState:
                type:
                  - string
                  - 'null'
                maxLength: 512
              dimensions:
                $ref: '#/components/schemas/GoogleEligibilityDimensions'
              observedAt:
                type: string
                format: date-time
              transitionedAt:
                type: string
                format: date-time
            required:
              - domainCanonical
              - pagePath
              - previousConfirmedVerdict
              - confirmedVerdict
              - coverageState
              - dimensions
              - observedAt
              - transitionedAt
        sitemaps:
          type: array
          maxItems: 25
          items:
            type: object
            additionalProperties: false
            properties:
              domainCanonical:
                type: string
                maxLength: 512
              sitemapUrl:
                type: string
                maxLength: 2048
              sitemapType:
                type:
                  - string
                  - 'null'
                maxLength: 64
              isPending:
                type: boolean
              isSitemapsIndex:
                type: boolean
              lastSubmitted:
                type:
                  - string
                  - 'null'
                format: date-time
              lastDownloaded:
                type:
                  - string
                  - 'null'
                format: date-time
              errorCount:
                type:
                  - integer
                  - 'null'
                minimum: 0
              warningCount:
                type:
                  - integer
                  - 'null'
                minimum: 0
              submittedUrlCount:
                type:
                  - integer
                  - 'null'
                minimum: 0
              fetchedAt:
                type: string
                format: date-time
            required:
              - domainCanonical
              - sitemapUrl
              - sitemapType
              - isPending
              - isSitemapsIndex
              - lastSubmitted
              - lastDownloaded
              - errorCount
              - warningCount
              - submittedUrlCount
              - fetchedAt
      required:
        - window
        - totals
        - verdicts
        - pages
        - transitions
        - sitemaps
    Meta:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        projectId:
          type: string
          format: uuid
    GoogleEligibilityDimensions:
      type: object
      additionalProperties: false
      properties:
        canonical:
          type: string
          enum:
            - pass
            - fail
            - unmeasured
        crawlable:
          type: string
          enum:
            - pass
            - fail
            - unmeasured
        indexed:
          type: string
          enum:
            - pass
            - fail
            - unmeasured
        structuredData:
          type: string
          enum:
            - pass
            - fail
            - unmeasured
      required:
        - canonical
        - crawlable
        - indexed
        - structuredData
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        status:
          type: integer
      required:
        - error
        - message
        - status
  responses:
    BadRequestError:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnauthorizedError:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ForbiddenError:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFoundError:
      description: Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimitExceededError:
      description: Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  headers:
    X-RateLimit-Limit:
      description: Maximum requests per window
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests remaining in current window
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix timestamp when the window resets
      schema:
        type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key with dtk_live_ prefix. Obtain it from API Keys in the account
        sidebar. New keys start with all supported scopes selected for the
        chosen project, and you can narrow them to specific read/write scopes as
        needed.

````