{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "schemaVersion": {
          "const": 1
        },
        "installationId": {
          "$ref": "#/$defs/d0_installationId"
        },
        "status": {
          "const": "unavailable"
        },
        "reason": {
          "enum": [
            "indexer_disabled",
            "not_yet_safe",
            "indexer_unavailable",
            "indexer_mismatch",
            "source_disabled"
          ]
        }
      },
      "required": [
        "schemaVersion",
        "installationId",
        "status",
        "reason"
      ],
      "additionalProperties": false
    },
    {
      "$ref": "#/$defs/d1_publicAvailable"
    }
  ],
  "$defs": {
    "d0_installationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "d3_timestamp": {
      "type": "string",
      "format": "date-time"
    },
    "d4_activityCategory": {
      "enum": [
        "all",
        "protocol",
        "players",
        "measurement"
      ]
    },
    "d6_decimal": {
      "type": "string",
      "format": "uint256-decimal"
    },
    "d7_bytes32": {
      "type": "string",
      "pattern": "^0x[0-9a-f]{64}$"
    },
    "d5_chain": {
      "type": "object",
      "properties": {
        "target": {
          "enum": [
            "anvil",
            "sepolia",
            "mainnet"
          ]
        },
        "chainId": {
          "$ref": "#/$defs/d6_decimal"
        },
        "confirmations": {
          "const": "12"
        },
        "deploymentBlock": {
          "$ref": "#/$defs/d6_decimal"
        },
        "economyDeploymentBlock": {
          "$ref": "#/$defs/d6_decimal"
        },
        "indexedThroughBlock": {
          "$ref": "#/$defs/d6_decimal"
        },
        "safeThroughBlock": {
          "$ref": "#/$defs/d6_decimal"
        },
        "safeBlockHash": {
          "$ref": "#/$defs/d7_bytes32"
        },
        "safeBlockTimestamp": {
          "$ref": "#/$defs/d3_timestamp"
        }
      },
      "required": [
        "target",
        "chainId",
        "confirmations",
        "deploymentBlock",
        "economyDeploymentBlock",
        "indexedThroughBlock",
        "safeThroughBlock",
        "safeBlockHash",
        "safeBlockTimestamp"
      ],
      "additionalProperties": false
    },
    "d9_versionId": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9._-]{2,127}$"
    },
    "d8_release": {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/d9_versionId"
        },
        "protocolRevision": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9.-]{2,63}$"
        },
        "rewardModelRevision": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9.-]{2,63}$"
        }
      },
      "required": [
        "id",
        "protocolRevision",
        "rewardModelRevision"
      ],
      "additionalProperties": false
    },
    "d11_address": {
      "type": "string",
      "pattern": "^0x[0-9a-f]{40}$"
    },
    "d10_identities": {
      "type": "object",
      "properties": {
        "core": {
          "$ref": "#/$defs/d11_address"
        },
        "tokenFactory": {
          "$ref": "#/$defs/d11_address"
        },
        "mining": {
          "$ref": "#/$defs/d11_address"
        },
        "token": {
          "$ref": "#/$defs/d11_address"
        },
        "collection": {
          "$ref": "#/$defs/d11_address"
        },
        "miningImplementation": {
          "$ref": "#/$defs/d11_address"
        },
        "miningImplementationVersion": {
          "$ref": "#/$defs/d6_decimal"
        },
        "miningStorageLayoutDigest": {
          "$ref": "#/$defs/d7_bytes32"
        }
      },
      "required": [
        "core",
        "tokenFactory",
        "mining",
        "token",
        "collection",
        "miningImplementation",
        "miningImplementationVersion",
        "miningStorageLayoutDigest"
      ],
      "additionalProperties": false
    },
    "d12_eventType": {
      "enum": [
        "system.settlement_completed",
        "system.round_released",
        "player.squeek_minted",
        "player.squeeks_merged",
        "player.rewards_claimed",
        "measurement.distance_milestone",
        "measurement.daily_distance_milestone",
        "measurement.speed_milestone",
        "measurement.speed_record",
        "measurement.rpm_record",
        "measurement.distance_streak"
      ]
    },
    "d16_eventId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512
    },
    "d17_chainSource": {
      "type": "object",
      "properties": {
        "kind": {
          "const": "chain"
        },
        "chainId": {
          "$ref": "#/$defs/d6_decimal"
        },
        "target": {
          "enum": [
            "anvil",
            "sepolia",
            "mainnet"
          ]
        },
        "releaseId": {
          "$ref": "#/$defs/d9_versionId"
        },
        "contractAddress": {
          "$ref": "#/$defs/d11_address"
        },
        "blockNumber": {
          "$ref": "#/$defs/d6_decimal"
        },
        "blockHash": {
          "$ref": "#/$defs/d7_bytes32"
        },
        "transactionHash": {
          "$ref": "#/$defs/d7_bytes32"
        },
        "transactionIndex": {
          "$ref": "#/$defs/d6_decimal"
        },
        "logIndex": {
          "$ref": "#/$defs/d6_decimal"
        },
        "confirmationStatus": {
          "const": "safe"
        }
      },
      "required": [
        "kind",
        "chainId",
        "target",
        "releaseId",
        "contractAddress",
        "blockNumber",
        "blockHash",
        "transactionHash",
        "transactionIndex",
        "logIndex",
        "confirmationStatus"
      ],
      "additionalProperties": false
    },
    "d15_chainEnvelope": {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/d16_eventId"
        },
        "eventVersion": {
          "const": 1
        },
        "occurredAt": {
          "$ref": "#/$defs/d3_timestamp"
        },
        "recordedAt": {
          "$ref": "#/$defs/d3_timestamp"
        },
        "source": {
          "$ref": "#/$defs/d17_chainSource"
        }
      },
      "required": [
        "id",
        "eventVersion",
        "occurredAt",
        "recordedAt",
        "source"
      ]
    },
    "d14_settlementCompleted": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d15_chainEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "system.settlement_completed"
            },
            "payload": {
              "type": "object",
              "properties": {
                "previousSettledThroughRound": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "settledThroughRound": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "activeRoundCount": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "workAdded": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "completedBlockCount": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "firstCompletedBlock": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/d6_decimal"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastCompletedBlock": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/d6_decimal"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "cumulativeWork": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "blockHeight": {
                  "$ref": "#/$defs/d6_decimal"
                }
              },
              "required": [
                "previousSettledThroughRound",
                "settledThroughRound",
                "activeRoundCount",
                "workAdded",
                "completedBlockCount",
                "firstCompletedBlock",
                "lastCompletedBlock",
                "cumulativeWork",
                "blockHeight"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d19_asset": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/$defs/d11_address"
        },
        "symbol": {
          "type": "string",
          "pattern": "^[A-Z0-9]{1,16}$"
        },
        "decimals": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255
        }
      },
      "required": [
        "address",
        "symbol",
        "decimals"
      ],
      "additionalProperties": false
    },
    "d18_roundReleased": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d15_chainEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "system.round_released"
            },
            "payload": {
              "type": "object",
              "properties": {
                "roundId": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "completedBlockCount": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "cumulativeWork": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "amountBaseUnits": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "asset": {
                  "$ref": "#/$defs/d19_asset"
                }
              },
              "required": [
                "roundId",
                "completedBlockCount",
                "cumulativeWork",
                "amountBaseUnits",
                "asset"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d20_squeekMinted": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d15_chainEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "player.squeek_minted"
            },
            "payload": {
              "type": "object",
              "properties": {
                "owner": {
                  "$ref": "#/$defs/d11_address"
                },
                "tokenId": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "firstRound": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "weight": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "nextMergeBlock": {
                  "$ref": "#/$defs/d6_decimal"
                }
              },
              "required": [
                "owner",
                "tokenId",
                "firstRound",
                "weight",
                "nextMergeBlock"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d21_squeeksMerged": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d15_chainEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "player.squeeks_merged"
            },
            "payload": {
              "type": "object",
              "properties": {
                "owner": {
                  "$ref": "#/$defs/d11_address"
                },
                "survivorTokenId": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "donorTokenId": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "level": {
                  "type": "integer",
                  "minimum": 2,
                  "maximum": 14
                },
                "effectiveRound": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "nextMergeBlock": {
                  "$ref": "#/$defs/d6_decimal"
                }
              },
              "required": [
                "owner",
                "survivorTokenId",
                "donorTokenId",
                "level",
                "effectiveRound",
                "nextMergeBlock"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d22_rewardsClaimed": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d15_chainEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "player.rewards_claimed"
            },
            "payload": {
              "type": "object",
              "properties": {
                "owner": {
                  "$ref": "#/$defs/d11_address"
                },
                "tokenIds": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 32,
                  "items": {
                    "$ref": "#/$defs/d6_decimal"
                  }
                },
                "amountBaseUnits": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "asset": {
                  "$ref": "#/$defs/d19_asset"
                }
              },
              "required": [
                "owner",
                "tokenIds",
                "amountBaseUnits",
                "asset"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d25_measurementSource": {
      "type": "object",
      "properties": {
        "kind": {
          "const": "measurement"
        },
        "installationId": {
          "$ref": "#/$defs/d0_installationId"
        },
        "receiptCursor": {
          "$ref": "#/$defs/d6_decimal"
        },
        "telemetryId": {
          "type": "string",
          "format": "uuid"
        },
        "observedAt": {
          "$ref": "#/$defs/d3_timestamp"
        },
        "receivedAt": {
          "$ref": "#/$defs/d3_timestamp"
        },
        "policyVersion": {
          "$ref": "#/$defs/d9_versionId"
        },
        "disposition": {
          "const": "accepted"
        }
      },
      "required": [
        "kind",
        "installationId",
        "receiptCursor",
        "telemetryId",
        "observedAt",
        "receivedAt",
        "policyVersion",
        "disposition"
      ],
      "additionalProperties": false
    },
    "d24_measurementEnvelope": {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/d16_eventId"
        },
        "eventVersion": {
          "const": 1
        },
        "occurredAt": {
          "$ref": "#/$defs/d3_timestamp"
        },
        "recordedAt": {
          "$ref": "#/$defs/d3_timestamp"
        },
        "source": {
          "$ref": "#/$defs/d25_measurementSource"
        }
      },
      "required": [
        "id",
        "eventVersion",
        "occurredAt",
        "recordedAt",
        "source"
      ]
    },
    "d23_distanceMilestone": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d24_measurementEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "measurement.distance_milestone"
            },
            "payload": {
              "type": "object",
              "properties": {
                "thresholdDistanceMm": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "observedLifetimeDistanceMm": {
                  "$ref": "#/$defs/d6_decimal"
                }
              },
              "required": [
                "thresholdDistanceMm",
                "observedLifetimeDistanceMm"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d27_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "d26_dailyDistanceMilestone": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d24_measurementEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "measurement.daily_distance_milestone"
            },
            "payload": {
              "type": "object",
              "properties": {
                "thresholdDistanceMm": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "observedDayDistanceMm": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "utcDate": {
                  "$ref": "#/$defs/d27_date"
                }
              },
              "required": [
                "thresholdDistanceMm",
                "observedDayDistanceMm",
                "utcDate"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d28_speedMilestone": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d24_measurementEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "measurement.speed_milestone"
            },
            "payload": {
              "type": "object",
              "properties": {
                "thresholdSpeedMmPerSecond": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "observedSpeedMmPerSecond": {
                  "$ref": "#/$defs/d6_decimal"
                }
              },
              "required": [
                "thresholdSpeedMmPerSecond",
                "observedSpeedMmPerSecond"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d29_speedRecord": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d24_measurementEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "measurement.speed_record"
            },
            "payload": {
              "type": "object",
              "properties": {
                "previousRecordMmPerSecond": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/d6_decimal"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "recordMmPerSecond": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "observedSpeedMmPerSecond": {
                  "$ref": "#/$defs/d6_decimal"
                }
              },
              "required": [
                "previousRecordMmPerSecond",
                "recordMmPerSecond",
                "observedSpeedMmPerSecond"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d30_rpmRecord": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d24_measurementEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "measurement.rpm_record"
            },
            "payload": {
              "type": "object",
              "properties": {
                "previousRecordRpmMilli": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/d6_decimal"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "recordRpmMilli": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "observedRpmMilli": {
                  "$ref": "#/$defs/d6_decimal"
                }
              },
              "required": [
                "previousRecordRpmMilli",
                "recordRpmMilli",
                "observedRpmMilli"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d31_distanceStreak": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d24_measurementEnvelope"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "measurement.distance_streak"
            },
            "payload": {
              "type": "object",
              "properties": {
                "days": {
                  "type": "integer",
                  "minimum": 2,
                  "maximum": 3650
                },
                "minimumDailyDistanceMm": {
                  "$ref": "#/$defs/d6_decimal"
                },
                "endingUtcDate": {
                  "$ref": "#/$defs/d27_date"
                }
              },
              "required": [
                "days",
                "minimumDailyDistanceMm",
                "endingUtcDate"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "payload"
          ]
        }
      ],
      "unevaluatedProperties": false
    },
    "d13_event": {
      "oneOf": [
        {
          "$ref": "#/$defs/d14_settlementCompleted"
        },
        {
          "$ref": "#/$defs/d18_roundReleased"
        },
        {
          "$ref": "#/$defs/d20_squeekMinted"
        },
        {
          "$ref": "#/$defs/d21_squeeksMerged"
        },
        {
          "$ref": "#/$defs/d22_rewardsClaimed"
        },
        {
          "$ref": "#/$defs/d23_distanceMilestone"
        },
        {
          "$ref": "#/$defs/d26_dailyDistanceMilestone"
        },
        {
          "$ref": "#/$defs/d28_speedMilestone"
        },
        {
          "$ref": "#/$defs/d29_speedRecord"
        },
        {
          "$ref": "#/$defs/d30_rpmRecord"
        },
        {
          "$ref": "#/$defs/d31_distanceStreak"
        }
      ]
    },
    "d32_cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^[A-Za-z0-9_-]+$"
    },
    "d2_publicAvailableProperties": {
      "type": "object",
      "properties": {
        "generatedAt": {
          "$ref": "#/$defs/d3_timestamp"
        },
        "catalogVersion": {
          "const": "public-activity-v1"
        },
        "category": {
          "$ref": "#/$defs/d4_activityCategory"
        },
        "chain": {
          "$ref": "#/$defs/d5_chain"
        },
        "release": {
          "$ref": "#/$defs/d8_release"
        },
        "identities": {
          "$ref": "#/$defs/d10_identities"
        },
        "activeEventTypes": {
          "type": "array",
          "minItems": 1,
          "maxItems": 11,
          "uniqueItems": true,
          "items": {
            "$ref": "#/$defs/d12_eventType"
          }
        },
        "events": {
          "type": "array",
          "maxItems": 100,
          "items": {
            "$ref": "#/$defs/d13_event"
          }
        },
        "nextCursor": {
          "oneOf": [
            {
              "$ref": "#/$defs/d32_cursor"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "generatedAt",
        "catalogVersion",
        "category",
        "chain",
        "release",
        "identities",
        "activeEventTypes",
        "events",
        "nextCursor"
      ]
    },
    "d1_publicAvailable": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/d2_publicAvailableProperties"
        },
        {
          "type": "object",
          "properties": {
            "schemaVersion": {
              "const": 1
            },
            "installationId": {
              "$ref": "#/$defs/d0_installationId"
            },
            "status": {
              "const": "available"
            }
          },
          "required": [
            "schemaVersion",
            "installationId",
            "status"
          ]
        }
      ],
      "unevaluatedProperties": false
    }
  },
  "$comment": "Public response structure from source snapshot 9e38b9313c9b4926ad15c7cd691d7f5789bdbc55. See endpoint notes for semantic constraints."
}
