{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "snapshot": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "description": "Resource identifier returned by the operation."
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "createdAt": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string"
        },
        "completedAt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "state": {
          "type": "string",
          "enum": [
            "pending",
            "running",
            "complete"
          ],
          "description": "Saved lifecycle or evidence state, as enumerated for this record."
        },
        "inventoryCount": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "processedCount": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "completeCount": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "unknownCount": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "pendingCount": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "edgeCount": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "revision": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991,
          "description": "Optimistic concurrency revision; supply it as expectedRevision on the next write."
        },
        "busy": {
          "type": "boolean"
        },
        "retryAfterSeconds": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "scope": {
          "type": "object",
          "properties": {
            "domain": {
              "type": "string"
            },
            "hostPolicy": {
              "type": "string",
              "const": "exact_hostname"
            },
            "seeds": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "domain",
            "hostPolicy",
            "seeds"
          ],
          "additionalProperties": false
        },
        "coverage": {
          "type": "object",
          "properties": {
            "inventory": {
              "type": "string",
              "enum": [
                "declared_complete",
                "partial"
              ]
            },
            "representation": {
              "type": "string",
              "const": "raw_html"
            },
            "completeSiteCensus": {
              "type": "boolean",
              "const": false
            },
            "allInventoryPagesComplete": {
              "type": "boolean"
            },
            "renderedVisibility": {
              "type": "boolean",
              "const": false
            },
            "iframes": {
              "type": "boolean",
              "const": false
            },
            "shadowRoots": {
              "type": "boolean",
              "const": false
            },
            "canonicalAliasesMerged": {
              "type": "boolean",
              "const": false
            }
          },
          "required": [
            "inventory",
            "representation",
            "completeSiteCensus",
            "allInventoryPagesComplete",
            "renderedVisibility",
            "iframes",
            "shadowRoots",
            "canonicalAliasesMerged"
          ],
          "additionalProperties": false,
          "description": "Dataset scope and completeness, including limits on what these results establish."
        },
        "version": {
          "type": "string",
          "const": "internal-links-v1"
        }
      },
      "required": [
        "id",
        "projectId",
        "createdAt",
        "expiresAt",
        "completedAt",
        "state",
        "inventoryCount",
        "processedCount",
        "completeCount",
        "unknownCount",
        "pendingCount",
        "edgeCount",
        "revision",
        "busy",
        "retryAfterSeconds",
        "scope",
        "coverage",
        "version"
      ],
      "additionalProperties": false
    },
    "limits": {
      "type": "object",
      "properties": {
        "inventoryPages": {
          "type": "number",
          "const": 100
        },
        "pagesPerRequest": {
          "type": "number",
          "const": 3
        },
        "pageBytes": {
          "type": "number",
          "const": 2097152
        },
        "pageTimeoutMs": {
          "type": "number",
          "const": 20000
        },
        "requestTimeoutMs": {
          "type": "number",
          "const": 65000
        },
        "edgesPerPage": {
          "type": "number",
          "const": 200
        },
        "evidenceBytesPerPage": {
          "type": "number",
          "const": 131072
        },
        "workspacePagesPerDay": {
          "type": "number",
          "const": 300
        },
        "retainedSnapshotsPerProject": {
          "type": "number",
          "const": 20
        },
        "retentionDays": {
          "type": "number",
          "const": 30
        },
        "pageSize": {
          "type": "number",
          "const": 100
        },
        "leaseMs": {
          "type": "number",
          "const": 90000
        }
      },
      "required": [
        "inventoryPages",
        "pagesPerRequest",
        "pageBytes",
        "pageTimeoutMs",
        "requestTimeoutMs",
        "edgesPerPage",
        "evidenceBytesPerPage",
        "workspacePagesPerDay",
        "retainedSnapshotsPerProject",
        "retentionDays",
        "pageSize",
        "leaseMs"
      ],
      "additionalProperties": false
    },
    "retryAt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "snapshot",
    "limits"
  ],
  "additionalProperties": false
}
