# Stats Service

## Get parcels with peer counts

> Returns a list of parcels with their current peer density information. Parcels represent geographic coordinates in Decentraland, and this endpoint helps identify areas with high user concentration. The peer count for each parcel indicates how many users are currently present in that geographic area, enabling crowd visualization and hotspot detection.<br>

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/parcels":{"get":{"tags":["Stats Service"],"summary":"Get parcels with peer counts","description":"Returns a list of parcels with their current peer density information. Parcels represent geographic coordinates in Decentraland, and this endpoint helps identify areas with high user concentration. The peer count for each parcel indicates how many users are currently present in that geographic area, enabling crowd visualization and hotspot detection.\n","operationId":"getParcels","responses":{"200":{"description":"List of parcels with peer counts","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"peersCount":{"type":"number","description":"Number of peers in this parcel"},"parcel":{"type":"object","properties":{"x":{"type":"number","description":"X coordinate"},"y":{"type":"number","description":"Y coordinate"}},"required":["x","y"]}},"required":["peersCount","parcel"]}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}}}}}}}
```

## Get all connected peers

> Returns a list of all peers (users) currently active in the archipelago system. Each peer includes their unique identifier, Ethereum address, current position coordinates, assigned island, and last heartbeat timestamp. This endpoint provides a comprehensive view of all active users in the system at any given moment.<br>

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/peers":{"get":{"tags":["Stats Service"],"summary":"Get all connected peers","description":"Returns a list of all peers (users) currently active in the archipelago system. Each peer includes their unique identifier, Ethereum address, current position coordinates, assigned island, and last heartbeat timestamp. This endpoint provides a comprehensive view of all active users in the system at any given moment.\n","operationId":"getPeers","responses":{"200":{"description":"List of connected peers","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Success status"},"peers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Peer ID"},"address":{"type":"string","description":"Peer address"},"lastPing":{"type":"number","description":"Last ping timestamp"},"parcel":{"type":"array","items":{"type":"number"},"description":"Parcel coordinates [x, y]"},"position":{"type":"array","items":{"type":"number"},"description":"Position coordinates [x, y, z]"}},"required":["id","address","lastPing","parcel","position"]},"description":"List of peers"}},"required":["ok","peers"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}}}}}}}
```

## Get specific peer information

> Returns information about a specific peer

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/peers/{id}":{"get":{"tags":["Stats Service"],"summary":"Get specific peer information","description":"Returns information about a specific peer","operationId":"getPeer","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Peer ID"}],"responses":{"200":{"description":"Peer information","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Success status"},"peer":{"description":"Peer information","type":"object","properties":{"id":{"type":"string","description":"Peer ID"},"address":{"type":"string","description":"Peer address"},"lastPing":{"type":"number","description":"Last ping timestamp"},"parcel":{"type":"array","items":{"type":"number"},"description":"Parcel coordinates [x, y]"},"position":{"type":"array","items":{"type":"number"},"description":"Position coordinates [x, y, z]"}},"required":["id","address","lastPing","parcel","position"]}},"required":["ok","peer"]}}}},"404":{"description":"Peer not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Success status"},"peer":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"Peer information (null when not found)"}},"required":["ok","peer"]}}}}}}}}}
```

## Get all islands

> Returns a list of all active islands in the archipelago system. Islands are dynamic clusters of peers that are continuously recalculated based on user positions. Each island entry includes the island identifier, current peer count, maximum capacity, center coordinates (x, y, z), radius, and the list of peers currently assigned to that island. Islands are created, merged, and split dynamically to maintain optimal distribution of users across the metaverse.<br>

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/islands":{"get":{"tags":["Stats Service"],"summary":"Get all islands","description":"Returns a list of all active islands in the archipelago system. Islands are dynamic clusters of peers that are continuously recalculated based on user positions. Each island entry includes the island identifier, current peer count, maximum capacity, center coordinates (x, y, z), radius, and the list of peers currently assigned to that island. Islands are created, merged, and split dynamically to maintain optimal distribution of users across the metaverse.\n","operationId":"getIslands","responses":{"200":{"description":"List of islands","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Success status"},"islands":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Island ID"},"peers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Peer ID"},"address":{"type":"string","description":"Peer address"},"lastPing":{"type":"number","description":"Last ping timestamp"},"parcel":{"type":"array","items":{"type":"number"},"description":"Parcel coordinates [x, y]"},"position":{"type":"array","items":{"type":"number"},"description":"Position coordinates [x, y, z]"}},"required":["id","address","lastPing","parcel","position"]},"description":"List of peers in this island"},"maxPeers":{"type":"number","description":"Maximum number of peers allowed"},"center":{"type":"array","items":{"type":"number"},"description":"Center coordinates [x, y, z]"},"radius":{"type":"number","description":"Island radius"}},"required":["id","peers","maxPeers","center","radius"]},"description":"List of islands"}},"required":["ok","islands"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}}}}}}}
```

## Get specific island information

> Returns information about a specific island

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/islands/{id}":{"get":{"tags":["Stats Service"],"summary":"Get specific island information","description":"Returns information about a specific island","operationId":"getIsland","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Island ID"}],"responses":{"200":{"description":"Island information","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Island ID"},"peers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Peer ID"},"address":{"type":"string","description":"Peer address"},"lastPing":{"type":"number","description":"Last ping timestamp"},"parcel":{"type":"array","items":{"type":"number"},"description":"Parcel coordinates [x, y]"},"position":{"type":"array","items":{"type":"number"},"description":"Position coordinates [x, y, z]"}},"required":["id","address","lastPing","parcel","position"]},"description":"List of peers in this island"},"maxPeers":{"type":"number","description":"Maximum number of peers allowed"},"center":{"type":"array","items":{"type":"number"},"description":"Center coordinates [x, y, z]"},"radius":{"type":"number","description":"Island radius"}},"required":["id","peers","maxPeers","center","radius"]}}}},"404":{"description":"Island not found","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","description":"HTTP status code"},"body":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"Island information (null when not found)"}},"required":["status","body"]}}}}}}}}}
```

## Get hot scenes data

> Returns data about popular scenes (hot scenes) in Decentraland based on current user activity. This endpoint provides information about scenes that are currently attracting high user traffic, including scene metadata, user counts, geographic coordinates, thumbnails, and project details. Hot scenes help identify trending areas and popular destinations in the metaverse.<br>

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/hot-scenes":{"get":{"tags":["Stats Service"],"summary":"Get hot scenes data","description":"Returns data about popular scenes (hot scenes) in Decentraland based on current user activity. This endpoint provides information about scenes that are currently attracting high user traffic, including scene metadata, user counts, geographic coordinates, thumbnails, and project details. Hot scenes help identify trending areas and popular destinations in the metaverse.\n","operationId":"getHotScenes","responses":{"200":{"description":"Hot scenes data","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Scene ID"},"name":{"type":"string","description":"Scene name"},"baseCoords":{"type":"array","items":{"type":"number"},"description":"Base coordinates [x, y]"},"usersTotalCount":{"type":"number","description":"Total number of users in scene"},"parcels":{"type":"array","items":{"type":"array","items":{"type":"number"}},"description":"List of parcel coordinates"},"thumbnail":{"type":"string","description":"Scene thumbnail URL"},"projectId":{"type":"string","description":"Project ID"},"creator":{"type":"string","description":"Creator name"},"description":{"type":"string","description":"Scene description"}},"required":["id","name","baseCoords","usersTotalCount","parcels"]}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}}}}}}}
```

## Get core service status

> Returns the operational status of the Archipelago core service. The core service is responsible for implementing the archipelago clustering logic, managing island creation/merging/splitting, processing peer position updates, and publishing island change notifications. This endpoint allows monitoring of the core service health and availability.<br>

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/core-status":{"get":{"tags":["Stats Service"],"summary":"Get core service status","description":"Returns the operational status of the Archipelago core service. The core service is responsible for implementing the archipelago clustering logic, managing island creation/merging/splitting, processing peer position updates, and publishing island change notifications. This endpoint allows monitoring of the core service health and availability.\n","operationId":"getCoreStatus","responses":{"200":{"description":"Core service status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"Core service status"},"timestamp":{"type":"string","format":"date-time","description":"Status timestamp"}},"required":["status"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}}}}}}}
```

## Get parcels (backwards compatibility)

> Backwards compatibility endpoint for parcels

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/comms/parcels":{"get":{"tags":["Stats Service"],"deprecated":true,"summary":"Get parcels (backwards compatibility)","description":"Backwards compatibility endpoint for parcels","operationId":"getCommsParcels","responses":{"200":{"description":"List of parcels with peer counts","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"peersCount":{"type":"number","description":"Number of peers in this parcel"},"parcel":{"type":"object","properties":{"x":{"type":"number","description":"X coordinate"},"y":{"type":"number","description":"Y coordinate"}},"required":["x","y"]}},"required":["peersCount","parcel"]}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}}}}}}}
```

## Get peers (backwards compatibility)

> Backwards compatibility endpoint for peers

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/comms/peers":{"get":{"tags":["Stats Service"],"deprecated":true,"summary":"Get peers (backwards compatibility)","description":"Backwards compatibility endpoint for peers","operationId":"getCommsPeers","responses":{"200":{"description":"List of connected peers","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Success status"},"peers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Peer ID"},"address":{"type":"string","description":"Peer address"},"lastPing":{"type":"number","description":"Last ping timestamp"},"parcel":{"type":"array","items":{"type":"number"},"description":"Parcel coordinates [x, y]"},"position":{"type":"array","items":{"type":"number"},"description":"Position coordinates [x, y, z]"}},"required":["id","address","lastPing","parcel","position"]},"description":"List of peers"}},"required":["ok","peers"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}}}}}}}
```

## Get specific peer (backwards compatibility)

> Backwards compatibility endpoint for specific peer

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/comms/peers/{id}":{"get":{"tags":["Stats Service"],"deprecated":true,"summary":"Get specific peer (backwards compatibility)","description":"Backwards compatibility endpoint for specific peer","operationId":"getCommsPeer","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Peer ID"}],"responses":{"200":{"description":"Peer information","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Peer ID"},"address":{"type":"string","description":"Peer address"},"lastPing":{"type":"number","description":"Last ping timestamp"},"parcel":{"type":"array","items":{"type":"number"},"description":"Parcel coordinates [x, y]"},"position":{"type":"array","items":{"type":"number"},"description":"Position coordinates [x, y, z]"}},"required":["id","address","lastPing","parcel","position"]}}}},"404":{"description":"Peer not found"}}}}}}
```

## Get islands (backwards compatibility)

> Backwards compatibility endpoint for islands

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/comms/islands":{"get":{"tags":["Stats Service"],"deprecated":true,"summary":"Get islands (backwards compatibility)","description":"Backwards compatibility endpoint for islands","operationId":"getCommsIslands","responses":{"200":{"description":"List of islands","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Success status"},"islands":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Island ID"},"peers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Peer ID"},"address":{"type":"string","description":"Peer address"},"lastPing":{"type":"number","description":"Last ping timestamp"},"parcel":{"type":"array","items":{"type":"number"},"description":"Parcel coordinates [x, y]"},"position":{"type":"array","items":{"type":"number"},"description":"Position coordinates [x, y, z]"}},"required":["id","address","lastPing","parcel","position"]},"description":"List of peers in this island"},"maxPeers":{"type":"number","description":"Maximum number of peers allowed"},"center":{"type":"array","items":{"type":"number"},"description":"Center coordinates [x, y, z]"},"radius":{"type":"number","description":"Island radius"}},"required":["id","peers","maxPeers","center","radius"]},"description":"List of islands"}},"required":["ok","islands"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"Error code"}},"required":["error"]}}}}}}}}}
```

## Get specific island (backwards compatibility)

> Backwards compatibility endpoint for specific island

```json
{"openapi":"3.1.0","info":{"title":"Archipelago Workers API","version":"1.0.0"},"servers":[{"url":"https://archipelago-ea-stats.decentraland.org","description":"Stats service - Production"},{"url":"https://archipelago-ea-stats.zone","description":"Stats service - Development"},{"url":"https://archipelago-ea-ws-connector.decentraland.org","description":"WebSocket Connector service - Production"},{"url":"https://archipelago-ea-ws-connector.zone","description":"WebSocket Connector service - Development"}],"security":[],"paths":{"/comms/islands/{id}":{"get":{"tags":["Stats Service"],"deprecated":true,"summary":"Get specific island (backwards compatibility)","description":"Backwards compatibility endpoint for specific island","operationId":"getCommsIsland","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Island ID"}],"responses":{"200":{"description":"Island information","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Island ID"},"peers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Peer ID"},"address":{"type":"string","description":"Peer address"},"lastPing":{"type":"number","description":"Last ping timestamp"},"parcel":{"type":"array","items":{"type":"number"},"description":"Parcel coordinates [x, y]"},"position":{"type":"array","items":{"type":"number"},"description":"Position coordinates [x, y, z]"}},"required":["id","address","lastPing","parcel","position"]},"description":"List of peers in this island"},"maxPeers":{"type":"number","description":"Maximum number of peers allowed"},"center":{"type":"array","items":{"type":"number"},"description":"Center coordinates [x, y, z]"},"radius":{"type":"number","description":"Island radius"}},"required":["id","peers","maxPeers","center","radius"]}}}},"404":{"description":"Island not found"}}}}}}
```
