# Places

Operations for discovering and managing places (scenes) in Genesis City. Places are deployable scenes located at specific parcel coordinates in the main Decentraland world.

## List places with filters

> Retrieve a paginated list of places (scenes) in Genesis City with extensive filtering and sorting options.\
> \
> \*\*Common Use Cases:\*\*\
> \- Get most popular places: \`?order\_by=like\_score\&limit=20\`\
> \- Search by name: \`?search=casino\`\
> \- Find places at coordinates: \`?positions=-23,-96\`\
> \- Get user's favorites: \`?only\_favorites=true\` (requires auth)\
> \
> \*\*Performance Tips:\*\*\
> \- Use pagination (limit/offset) for large result sets\
> \- Cache results when possible\
> \- Use \`with\_realms\_detail=true\` only when you need real-time user counts<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[],"paths":{"/places":{"get":{"tags":["Places"],"summary":"List places with filters","description":"Retrieve a paginated list of places (scenes) in Genesis City with extensive filtering and sorting options.\n\n**Common Use Cases:**\n- Get most popular places: `?order_by=like_score&limit=20`\n- Search by name: `?search=casino`\n- Find places at coordinates: `?positions=-23,-96`\n- Get user's favorites: `?only_favorites=true` (requires auth)\n\n**Performance Tips:**\n- Use pagination (limit/offset) for large result sets\n- Cache results when possible\n- Use `with_realms_detail=true` only when you need real-time user counts\n","operationId":"getPlaces","parameters":[{"name":"limit","in":"query","description":"Maximum number of places to return (max 100)","required":false,"schema":{"type":"integer","minimum":0,"maximum":100,"default":100}},{"name":"offset","in":"query","description":"Number of places to skip for pagination","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"positions","in":"query","description":"Filter by specific parcel coordinates. Format: `\"x,y\"` (e.g., `\"-23,-96\"`).\nCan specify multiple positions to get places at any of those coordinates.\n","required":false,"schema":{"type":"array","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"},"maxItems":1000},"style":"form","explode":true},{"name":"only_favorites","in":"query","description":"Show only the authenticated user's favorite places.\nRequires authentication. Returns empty list if not authenticated.\n","required":false,"schema":{"type":"boolean","default":false}},{"name":"only_highlighted","in":"query","description":"Show only places marked as highlighted by moderators","required":false,"schema":{"type":"boolean","default":false}},{"name":"order_by","in":"query","description":"Sort places by this field:\n- `like_score`: VP-weighted like ratio (default, best quality)\n- `most_active`: Current user count (trending now)\n- `updated_at`: Recently updated content\n- `created_at`: Newly created places\n- `user_visits`: Most visited in last 30 days\n","required":false,"schema":{"type":"string","enum":["like_score","most_active","updated_at","created_at","user_visits"],"default":"like_score"}},{"name":"order","in":"query","description":"Sort direction (ascending or descending)","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"with_realms_detail","in":"query","description":"Include real-time realm and user count details. **Experimental feature.**\nAdds `realms_detail` array with per-realm user counts and active parcels.\nNote: Slightly slower response time.\n","required":false,"schema":{"type":"boolean","default":false}},{"name":"search","in":"query","description":"Full-text search in place title, description, and owner.\nMinimum 3 characters required. Returns empty array if too short.\n","required":false,"schema":{"type":"string","minLength":3}},{"name":"categories","in":"query","description":"Filter by categories (e.g., \"art-gallery\", \"social\", \"game\").\nGet available categories from `/categories` endpoint.\nMultiple categories return places matching ANY category (OR logic).\n","required":false,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true},{"name":"owner","in":"query","description":"Filter by owner's Ethereum address (case-insensitive).\nMust be a valid Ethereum address format.\n","required":false,"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}},{"name":"sdk","in":"query","description":"Filter by SDK version (major version matching).\nMatches exact version or any version starting with the given prefix.\nExample: `sdk=7` matches \"7\", \"7.0.0\", \"7.3.27\", etc.\nPlaces with null SDK values are treated as SDK6 (legacy scenes).\nUse `6` for SDK6/legacy scenes (including null), `7` for SDK7 scenes.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved places","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","description":"A place (scene) in Genesis City or a Decentraland World.\n\n**Place ID Persistence:** The UUID is preserved across scene redeployments when:\n- New deployment contains all previous parcels (growing)\n- New deployment keeps the same base parcel (reshaping/shrinking)\n\nThe UUID changes when the scene moves to different parcels with a different base.\nThis ensures favorites, likes, and social data persist through scene updates.\n","properties":{"id":{"type":"string","format":"uuid","description":"Persistent unique identifier for the place. This UUID is maintained across scene\nredeployments as long as the scene keeps the same base parcel or contains all\nprevious parcels. See \"Place ID Semantics\" in the API description for details.\n"},"title":{"type":"string","maxLength":50,"description":"Display name of the place","nullable":true},"description":{"type":"string","maxLength":5000,"description":"Long-form description of the place content","nullable":true},"image":{"type":"string","format":"uri","description":"URL to the place thumbnail/preview image (from navmapThumbnail or generated)","nullable":true},"owner":{"type":"string","maxLength":42,"description":"Ethereum address of the place owner","nullable":true},"positions":{"type":"array","description":"All parcel coordinates occupied by this place. Places can span multiple parcels.\n**UUID Preservation:** If a new deployment contains all these parcels plus additional ones,\nthe Place UUID is preserved (scene growth). However, if parcels are removed or changed,\nthe UUID may change unless the base_position remains the same.\n","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"}},"base_position":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$","description":"Primary/spawn coordinate for the place. This is the main parcel where users spawn\nwhen entering the scene. **Important:** The base parcel is key to Place ID persistence -\nkeeping the same base parcel across deployments preserves the Place UUID and all\nassociated user data (favorites, likes, etc.).\n"},"contact_name":{"type":"string","maxLength":5000,"description":"Contact person name for the place","nullable":true},"contact_email":{"type":"string","maxLength":5000,"description":"Contact email for the place","nullable":true},"content_rating":{"type":"string","maxLength":1,"description":"Age appropriateness rating:\n- PR: Pre-Teen (10+)\n- E: Everyone (all ages)\n- T: Teen (13+)\n- A: Adult (18+)\n- R: Restricted (18+, explicit)\n","enum":["PR","E","T","A","R"]},"likes":{"type":"integer","minimum":0,"description":"Total number of likes received"},"dislikes":{"type":"integer","minimum":0,"description":"Total number of dislikes received"},"like_score":{"type":"number","minimum":0,"maximum":1,"description":"Quality score (0-1) based on VP-weighted likes/dislikes.\nHigher score = better quality. Null if insufficient votes.\n","nullable":true},"like_rate":{"type":"number","minimum":0,"maximum":1,"description":"Simple like ratio (likes / total votes), not VP-weighted","nullable":true},"ranking":{"type":"number","description":"External ranking value for custom ordering","nullable":true,"default":0},"highlighted":{"type":"boolean","description":"True if this place is highlighted/featured by administrators.\nHighlighted places appear at the top of listing endpoints.\n"},"favorites":{"type":"integer","minimum":0,"description":"Number of users who favorited this place"},"disabled":{"type":"boolean","description":"True if place is disabled (not shown publicly)"},"disabled_at":{"type":"string","format":"date-time","description":"Timestamp when place was disabled","nullable":true},"created_at":{"type":"string","format":"date-time","description":"When the place was first created"},"updated_at":{"type":"string","format":"date-time","description":"Last update to place metadata"},"deployed_at":{"type":"string","format":"date-time","description":"Last scene deployment timestamp"},"user_like":{"type":"boolean","description":"True if authenticated user liked this place"},"user_dislike":{"type":"boolean","description":"True if authenticated user disliked this place"},"user_favorite":{"type":"boolean","description":"True if authenticated user favorited this place"},"user_count":{"type":"integer","minimum":0,"description":"Current number of users in the place (real-time)"},"user_visits":{"type":"integer","minimum":0,"description":"Total unique users who visited in the last 30 days"},"categories":{"type":"array","description":"Categories/tags assigned to this place","items":{"type":"string"}},"realms_detail":{"type":"array","description":"Per-realm user distribution (only if with_realms_detail=true)","items":{"type":"object","description":"A Decentraland realm (server) with real-time user data","properties":{"serverName":{"type":"string","description":"Human-readable realm server name"},"url":{"type":"string","format":"uri","description":"Realm connection URL"},"usersCount":{"type":"integer","minimum":0,"description":"Total users currently in this realm"},"userParcels":{"type":"array","description":"Coordinates where users are located in this realm","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer"},"description":"[x, y] coordinate pair"}}}}},"sdk":{"type":"string","description":"SDK/runtime version (e.g., \"7\" for SDK7)","nullable":true},"connected_addresses":{"type":"array","description":"List of wallet addresses currently connected to this place.\nOnly included when `with_connected_users=true` query parameter is set.\n","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}},"total":{"type":"integer","description":"Total number of places matching the query (for pagination)"}}}}}},"400":{"description":"Bad request - Invalid parameters or malformed request","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"500":{"description":"Internal server error - Something went wrong on the server","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## Get specific places by IDs

> Retrieve multiple specific places by their UUIDs in a single request.\
> Maximum 100 place IDs per request.\
> \
> \*\*Use Cases:\*\*\
> \- Fetch details for a known set of places\
> \- Resolve place IDs from external sources\
> \- Batch operations for better performance\
> \
> \*\*Note:\*\* Results are returned in the same order as requested IDs when available.<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[],"paths":{"/places":{"post":{"tags":["Places"],"summary":"Get specific places by IDs","description":"Retrieve multiple specific places by their UUIDs in a single request.\nMaximum 100 place IDs per request.\n\n**Use Cases:**\n- Fetch details for a known set of places\n- Resolve place IDs from external sources\n- Batch operations for better performance\n\n**Note:** Results are returned in the same order as requested IDs when available.\n","operationId":"getPlacesByIds","parameters":[{"name":"offset","in":"query","description":"Number of results to skip","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","description":"Maximum number of results (max 100)","required":false,"schema":{"type":"integer","minimum":0,"maximum":100,"default":100}},{"name":"order_by","in":"query","description":"Sort field","required":false,"schema":{"type":"string","enum":["like_score","updated_at","created_at"],"default":"like_score"}},{"name":"order","in":"query","description":"Sort direction","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"search","in":"query","description":"Optional text search filter (minimum 3 characters)","required":false,"schema":{"type":"string","minLength":3}}],"requestBody":{"required":true,"description":"Array of place UUIDs to retrieve","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":100}}}},"responses":{"200":{"description":"Successfully retrieved places","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","description":"A place (scene) in Genesis City or a Decentraland World.\n\n**Place ID Persistence:** The UUID is preserved across scene redeployments when:\n- New deployment contains all previous parcels (growing)\n- New deployment keeps the same base parcel (reshaping/shrinking)\n\nThe UUID changes when the scene moves to different parcels with a different base.\nThis ensures favorites, likes, and social data persist through scene updates.\n","properties":{"id":{"type":"string","format":"uuid","description":"Persistent unique identifier for the place. This UUID is maintained across scene\nredeployments as long as the scene keeps the same base parcel or contains all\nprevious parcels. See \"Place ID Semantics\" in the API description for details.\n"},"title":{"type":"string","maxLength":50,"description":"Display name of the place","nullable":true},"description":{"type":"string","maxLength":5000,"description":"Long-form description of the place content","nullable":true},"image":{"type":"string","format":"uri","description":"URL to the place thumbnail/preview image (from navmapThumbnail or generated)","nullable":true},"owner":{"type":"string","maxLength":42,"description":"Ethereum address of the place owner","nullable":true},"positions":{"type":"array","description":"All parcel coordinates occupied by this place. Places can span multiple parcels.\n**UUID Preservation:** If a new deployment contains all these parcels plus additional ones,\nthe Place UUID is preserved (scene growth). However, if parcels are removed or changed,\nthe UUID may change unless the base_position remains the same.\n","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"}},"base_position":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$","description":"Primary/spawn coordinate for the place. This is the main parcel where users spawn\nwhen entering the scene. **Important:** The base parcel is key to Place ID persistence -\nkeeping the same base parcel across deployments preserves the Place UUID and all\nassociated user data (favorites, likes, etc.).\n"},"contact_name":{"type":"string","maxLength":5000,"description":"Contact person name for the place","nullable":true},"contact_email":{"type":"string","maxLength":5000,"description":"Contact email for the place","nullable":true},"content_rating":{"type":"string","maxLength":1,"description":"Age appropriateness rating:\n- PR: Pre-Teen (10+)\n- E: Everyone (all ages)\n- T: Teen (13+)\n- A: Adult (18+)\n- R: Restricted (18+, explicit)\n","enum":["PR","E","T","A","R"]},"likes":{"type":"integer","minimum":0,"description":"Total number of likes received"},"dislikes":{"type":"integer","minimum":0,"description":"Total number of dislikes received"},"like_score":{"type":"number","minimum":0,"maximum":1,"description":"Quality score (0-1) based on VP-weighted likes/dislikes.\nHigher score = better quality. Null if insufficient votes.\n","nullable":true},"like_rate":{"type":"number","minimum":0,"maximum":1,"description":"Simple like ratio (likes / total votes), not VP-weighted","nullable":true},"ranking":{"type":"number","description":"External ranking value for custom ordering","nullable":true,"default":0},"highlighted":{"type":"boolean","description":"True if this place is highlighted/featured by administrators.\nHighlighted places appear at the top of listing endpoints.\n"},"favorites":{"type":"integer","minimum":0,"description":"Number of users who favorited this place"},"disabled":{"type":"boolean","description":"True if place is disabled (not shown publicly)"},"disabled_at":{"type":"string","format":"date-time","description":"Timestamp when place was disabled","nullable":true},"created_at":{"type":"string","format":"date-time","description":"When the place was first created"},"updated_at":{"type":"string","format":"date-time","description":"Last update to place metadata"},"deployed_at":{"type":"string","format":"date-time","description":"Last scene deployment timestamp"},"user_like":{"type":"boolean","description":"True if authenticated user liked this place"},"user_dislike":{"type":"boolean","description":"True if authenticated user disliked this place"},"user_favorite":{"type":"boolean","description":"True if authenticated user favorited this place"},"user_count":{"type":"integer","minimum":0,"description":"Current number of users in the place (real-time)"},"user_visits":{"type":"integer","minimum":0,"description":"Total unique users who visited in the last 30 days"},"categories":{"type":"array","description":"Categories/tags assigned to this place","items":{"type":"string"}},"realms_detail":{"type":"array","description":"Per-realm user distribution (only if with_realms_detail=true)","items":{"type":"object","description":"A Decentraland realm (server) with real-time user data","properties":{"serverName":{"type":"string","description":"Human-readable realm server name"},"url":{"type":"string","format":"uri","description":"Realm connection URL"},"usersCount":{"type":"integer","minimum":0,"description":"Total users currently in this realm"},"userParcels":{"type":"array","description":"Coordinates where users are located in this realm","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer"},"description":"[x, y] coordinate pair"}}}}},"sdk":{"type":"string","description":"SDK/runtime version (e.g., \"7\" for SDK7)","nullable":true},"connected_addresses":{"type":"array","description":"List of wallet addresses currently connected to this place.\nOnly included when `with_connected_users=true` query parameter is set.\n","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}},"total":{"type":"integer","description":"Total number of places matching the query (for pagination)"}}}}}},"400":{"description":"Bad request - Invalid parameters or malformed request","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## Get a specific place by ID

> Retrieve detailed information about a single place by its UUID.\
> \
> Returns 404 if the place doesn't exist or has been disabled.\
> \
> \*\*Performance:\*\* This endpoint includes aggregated user data (likes, favorites, visits).<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[],"paths":{"/places/{place_id}":{"get":{"tags":["Places"],"summary":"Get a specific place by ID","description":"Retrieve detailed information about a single place by its UUID.\n\nReturns 404 if the place doesn't exist or has been disabled.\n\n**Performance:** This endpoint includes aggregated user data (likes, favorites, visits).\n","operationId":"getPlace","parameters":[{"name":"place_id","in":"path","required":true,"description":"Unique identifier (UUID) of the place","schema":{"type":"string","format":"uuid"}},{"name":"with_realms_detail","in":"query","description":"Include real-time realm and user distribution data","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Place found and returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","description":"A place (scene) in Genesis City or a Decentraland World.\n\n**Place ID Persistence:** The UUID is preserved across scene redeployments when:\n- New deployment contains all previous parcels (growing)\n- New deployment keeps the same base parcel (reshaping/shrinking)\n\nThe UUID changes when the scene moves to different parcels with a different base.\nThis ensures favorites, likes, and social data persist through scene updates.\n","properties":{"id":{"type":"string","format":"uuid","description":"Persistent unique identifier for the place. This UUID is maintained across scene\nredeployments as long as the scene keeps the same base parcel or contains all\nprevious parcels. See \"Place ID Semantics\" in the API description for details.\n"},"title":{"type":"string","maxLength":50,"description":"Display name of the place","nullable":true},"description":{"type":"string","maxLength":5000,"description":"Long-form description of the place content","nullable":true},"image":{"type":"string","format":"uri","description":"URL to the place thumbnail/preview image (from navmapThumbnail or generated)","nullable":true},"owner":{"type":"string","maxLength":42,"description":"Ethereum address of the place owner","nullable":true},"positions":{"type":"array","description":"All parcel coordinates occupied by this place. Places can span multiple parcels.\n**UUID Preservation:** If a new deployment contains all these parcels plus additional ones,\nthe Place UUID is preserved (scene growth). However, if parcels are removed or changed,\nthe UUID may change unless the base_position remains the same.\n","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"}},"base_position":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$","description":"Primary/spawn coordinate for the place. This is the main parcel where users spawn\nwhen entering the scene. **Important:** The base parcel is key to Place ID persistence -\nkeeping the same base parcel across deployments preserves the Place UUID and all\nassociated user data (favorites, likes, etc.).\n"},"contact_name":{"type":"string","maxLength":5000,"description":"Contact person name for the place","nullable":true},"contact_email":{"type":"string","maxLength":5000,"description":"Contact email for the place","nullable":true},"content_rating":{"type":"string","maxLength":1,"description":"Age appropriateness rating:\n- PR: Pre-Teen (10+)\n- E: Everyone (all ages)\n- T: Teen (13+)\n- A: Adult (18+)\n- R: Restricted (18+, explicit)\n","enum":["PR","E","T","A","R"]},"likes":{"type":"integer","minimum":0,"description":"Total number of likes received"},"dislikes":{"type":"integer","minimum":0,"description":"Total number of dislikes received"},"like_score":{"type":"number","minimum":0,"maximum":1,"description":"Quality score (0-1) based on VP-weighted likes/dislikes.\nHigher score = better quality. Null if insufficient votes.\n","nullable":true},"like_rate":{"type":"number","minimum":0,"maximum":1,"description":"Simple like ratio (likes / total votes), not VP-weighted","nullable":true},"ranking":{"type":"number","description":"External ranking value for custom ordering","nullable":true,"default":0},"highlighted":{"type":"boolean","description":"True if this place is highlighted/featured by administrators.\nHighlighted places appear at the top of listing endpoints.\n"},"favorites":{"type":"integer","minimum":0,"description":"Number of users who favorited this place"},"disabled":{"type":"boolean","description":"True if place is disabled (not shown publicly)"},"disabled_at":{"type":"string","format":"date-time","description":"Timestamp when place was disabled","nullable":true},"created_at":{"type":"string","format":"date-time","description":"When the place was first created"},"updated_at":{"type":"string","format":"date-time","description":"Last update to place metadata"},"deployed_at":{"type":"string","format":"date-time","description":"Last scene deployment timestamp"},"user_like":{"type":"boolean","description":"True if authenticated user liked this place"},"user_dislike":{"type":"boolean","description":"True if authenticated user disliked this place"},"user_favorite":{"type":"boolean","description":"True if authenticated user favorited this place"},"user_count":{"type":"integer","minimum":0,"description":"Current number of users in the place (real-time)"},"user_visits":{"type":"integer","minimum":0,"description":"Total unique users who visited in the last 30 days"},"categories":{"type":"array","description":"Categories/tags assigned to this place","items":{"type":"string"}},"realms_detail":{"type":"array","description":"Per-realm user distribution (only if with_realms_detail=true)","items":{"type":"object","description":"A Decentraland realm (server) with real-time user data","properties":{"serverName":{"type":"string","description":"Human-readable realm server name"},"url":{"type":"string","format":"uri","description":"Realm connection URL"},"usersCount":{"type":"integer","minimum":0,"description":"Total users currently in this realm"},"userParcels":{"type":"array","description":"Coordinates where users are located in this realm","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer"},"description":"[x, y] coordinate pair"}}}}},"sdk":{"type":"string","description":"SDK/runtime version (e.g., \"7\" for SDK7)","nullable":true},"connected_addresses":{"type":"array","description":"List of wallet addresses currently connected to this place.\nOnly included when `with_connected_users=true` query parameter is set.\n","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}}}}}},"404":{"description":"Resource not found - Place/world doesn't exist or is disabled","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## Get categories for a place

> Retrieve all categories assigned to a specific place.\
> \
> Categories are automatically assigned based on scene tags and can also be manually curated.<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[],"paths":{"/places/{place_id}/categories":{"get":{"tags":["Places"],"summary":"Get categories for a place","description":"Retrieve all categories assigned to a specific place.\n\nCategories are automatically assigned based on scene tags and can also be manually curated.\n","operationId":"getPlaceCategories","parameters":[{"name":"place_id","in":"path","required":true,"description":"UUID of the place","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Categories retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","description":"A content category for organizing places and worlds","properties":{"name":{"type":"string","description":"Unique category identifier (slug)"},"active":{"type":"boolean","description":"Whether this category is currently active/visible"},"count":{"type":"integer","minimum":0,"description":"Number of places/worlds in this category"},"i18n":{"type":"object","description":"Internationalized display labels","properties":{"en":{"type":"string","description":"English display name"}}}}}}}}}}},"404":{"description":"Resource not found - Place/world doesn't exist or is disabled","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"500":{"description":"Internal server error - Something went wrong on the server","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## Update place content rating 🔒

> Update the content rating for a place. \*\*Requires authentication.\*\*\
> \
> Content ratings help users filter appropriate content:\
> \- \*\*PR\*\* (Pre-Teen): Suitable for ages 10+\
> \- \*\*E\*\* (Everyone): Suitable for all ages\
> \- \*\*T\*\* (Teen): Suitable for ages 13+\
> \- \*\*A\*\* (Adult): Suitable for ages 18+, may contain mature content\
> \- \*\*R\*\* (Restricted): Adults only, explicit content\
> \
> \*\*Note:\*\* Only authorized moderators can change ratings.<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Decentraland authentication token obtained from the Decentraland SDK or auth services.\n\nTo authenticate:\n1. Use Decentraland's authentication SDK in your application\n2. Get the auth token from the SDK\n3. Include in requests: `Authorization: Bearer <token>`\n"}}},"paths":{"/places/{place_id}/rating":{"put":{"tags":["Places"],"summary":"Update place content rating 🔒","description":"Update the content rating for a place. **Requires authentication.**\n\nContent ratings help users filter appropriate content:\n- **PR** (Pre-Teen): Suitable for ages 10+\n- **E** (Everyone): Suitable for all ages\n- **T** (Teen): Suitable for ages 13+\n- **A** (Adult): Suitable for ages 18+, may contain mature content\n- **R** (Restricted): Adults only, explicit content\n\n**Note:** Only authorized moderators can change ratings.\n","operationId":"updatePlaceRating","parameters":[{"name":"place_id","in":"path","required":true,"description":"UUID of the place to rate","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content_rating"],"properties":{"content_rating":{"type":"string","enum":["PR","E","T","A","R"],"description":"New content rating:\n- **PR** (Pre-Teen): Ages 10+\n- **E** (Everyone): All ages\n- **T** (Teen): Ages 13+\n- **A** (Adult): Ages 18+, mature content\n- **R** (Restricted): Adults only, explicit content\n"},"comment":{"type":"string","description":"Optional explanation for the rating change (for moderation log)"}}}}}},"responses":{"200":{"description":"Rating updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized - Missing or invalid authentication token","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"403":{"description":"Forbidden - user not authorized to update ratings","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"404":{"description":"Resource not found - Place/world doesn't exist or is disabled","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## Update place ranking 🔒 (Service token)

> Update the ranking score for a place. \*\*Requires service token authentication.\*\*\
> \
> This endpoint uses a pre-configured service token for authentication, intended for\
> service-to-service calls from the data team's systems. The token must be provided\
> in the Authorization header as \`Bearer \<token>\` or just \`\<token>\`.\
> \
> The ranking value is used to order places in listings. Higher ranking values appear first\
> (after highlighted places). This endpoint is intended for the data team to curate\
> place ordering based on quality metrics or promotional needs.\
> \
> \*\*Use Cases:\*\*\
> \- Promote high-quality places in listings\
> \- Adjust place ordering based on data analysis\
> \- Set custom ordering for promotional periods\
> \
> \*\*Authentication:\*\*\
> Set the \`DATA\_TEAM\_AUTH\_TOKEN\` environment variable on the server, then use that\
> token value in the Authorization header when calling this endpoint.<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[{"ServiceToken":[]}],"components":{"securitySchemes":{"ServiceToken":{"type":"http","scheme":"bearer","description":"Pre-configured service token for service-to-service authentication.\n\nThis authentication method is used for internal service calls, such as\nthe data team's ranking updates. The token value must match the\n`DATA_TEAM_AUTH_TOKEN` environment variable configured on the server.\n\nTo authenticate:\nInclude in requests: `Authorization: Bearer <service-token>` or `Authorization: <service-token>`\n"}}},"paths":{"/places/{place_id}/ranking":{"put":{"tags":["Places"],"summary":"Update place ranking 🔒 (Service token)","description":"Update the ranking score for a place. **Requires service token authentication.**\n\nThis endpoint uses a pre-configured service token for authentication, intended for\nservice-to-service calls from the data team's systems. The token must be provided\nin the Authorization header as `Bearer <token>` or just `<token>`.\n\nThe ranking value is used to order places in listings. Higher ranking values appear first\n(after highlighted places). This endpoint is intended for the data team to curate\nplace ordering based on quality metrics or promotional needs.\n\n**Use Cases:**\n- Promote high-quality places in listings\n- Adjust place ordering based on data analysis\n- Set custom ordering for promotional periods\n\n**Authentication:**\nSet the `DATA_TEAM_AUTH_TOKEN` environment variable on the server, then use that\ntoken value in the Authorization header when calling this endpoint.\n","operationId":"updatePlaceRanking","parameters":[{"name":"place_id","in":"path","required":true,"description":"UUID of the place to update ranking","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ranking"],"properties":{"ranking":{"type":"number","nullable":true,"description":"Ranking score for ordering places. Higher values appear first in listings\n(after highlighted places). Set to null to remove ranking.\n"}}}}}},"responses":{"200":{"description":"Ranking updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","description":"A place (scene) in Genesis City or a Decentraland World.\n\n**Place ID Persistence:** The UUID is preserved across scene redeployments when:\n- New deployment contains all previous parcels (growing)\n- New deployment keeps the same base parcel (reshaping/shrinking)\n\nThe UUID changes when the scene moves to different parcels with a different base.\nThis ensures favorites, likes, and social data persist through scene updates.\n","properties":{"id":{"type":"string","format":"uuid","description":"Persistent unique identifier for the place. This UUID is maintained across scene\nredeployments as long as the scene keeps the same base parcel or contains all\nprevious parcels. See \"Place ID Semantics\" in the API description for details.\n"},"title":{"type":"string","maxLength":50,"description":"Display name of the place","nullable":true},"description":{"type":"string","maxLength":5000,"description":"Long-form description of the place content","nullable":true},"image":{"type":"string","format":"uri","description":"URL to the place thumbnail/preview image (from navmapThumbnail or generated)","nullable":true},"owner":{"type":"string","maxLength":42,"description":"Ethereum address of the place owner","nullable":true},"positions":{"type":"array","description":"All parcel coordinates occupied by this place. Places can span multiple parcels.\n**UUID Preservation:** If a new deployment contains all these parcels plus additional ones,\nthe Place UUID is preserved (scene growth). However, if parcels are removed or changed,\nthe UUID may change unless the base_position remains the same.\n","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"}},"base_position":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$","description":"Primary/spawn coordinate for the place. This is the main parcel where users spawn\nwhen entering the scene. **Important:** The base parcel is key to Place ID persistence -\nkeeping the same base parcel across deployments preserves the Place UUID and all\nassociated user data (favorites, likes, etc.).\n"},"contact_name":{"type":"string","maxLength":5000,"description":"Contact person name for the place","nullable":true},"contact_email":{"type":"string","maxLength":5000,"description":"Contact email for the place","nullable":true},"content_rating":{"type":"string","maxLength":1,"description":"Age appropriateness rating:\n- PR: Pre-Teen (10+)\n- E: Everyone (all ages)\n- T: Teen (13+)\n- A: Adult (18+)\n- R: Restricted (18+, explicit)\n","enum":["PR","E","T","A","R"]},"likes":{"type":"integer","minimum":0,"description":"Total number of likes received"},"dislikes":{"type":"integer","minimum":0,"description":"Total number of dislikes received"},"like_score":{"type":"number","minimum":0,"maximum":1,"description":"Quality score (0-1) based on VP-weighted likes/dislikes.\nHigher score = better quality. Null if insufficient votes.\n","nullable":true},"like_rate":{"type":"number","minimum":0,"maximum":1,"description":"Simple like ratio (likes / total votes), not VP-weighted","nullable":true},"ranking":{"type":"number","description":"External ranking value for custom ordering","nullable":true,"default":0},"highlighted":{"type":"boolean","description":"True if this place is highlighted/featured by administrators.\nHighlighted places appear at the top of listing endpoints.\n"},"favorites":{"type":"integer","minimum":0,"description":"Number of users who favorited this place"},"disabled":{"type":"boolean","description":"True if place is disabled (not shown publicly)"},"disabled_at":{"type":"string","format":"date-time","description":"Timestamp when place was disabled","nullable":true},"created_at":{"type":"string","format":"date-time","description":"When the place was first created"},"updated_at":{"type":"string","format":"date-time","description":"Last update to place metadata"},"deployed_at":{"type":"string","format":"date-time","description":"Last scene deployment timestamp"},"user_like":{"type":"boolean","description":"True if authenticated user liked this place"},"user_dislike":{"type":"boolean","description":"True if authenticated user disliked this place"},"user_favorite":{"type":"boolean","description":"True if authenticated user favorited this place"},"user_count":{"type":"integer","minimum":0,"description":"Current number of users in the place (real-time)"},"user_visits":{"type":"integer","minimum":0,"description":"Total unique users who visited in the last 30 days"},"categories":{"type":"array","description":"Categories/tags assigned to this place","items":{"type":"string"}},"realms_detail":{"type":"array","description":"Per-realm user distribution (only if with_realms_detail=true)","items":{"type":"object","description":"A Decentraland realm (server) with real-time user data","properties":{"serverName":{"type":"string","description":"Human-readable realm server name"},"url":{"type":"string","format":"uri","description":"Realm connection URL"},"usersCount":{"type":"integer","minimum":0,"description":"Total users currently in this realm"},"userParcels":{"type":"array","description":"Coordinates where users are located in this realm","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer"},"description":"[x, y] coordinate pair"}}}}},"sdk":{"type":"string","description":"SDK/runtime version (e.g., \"7\" for SDK7)","nullable":true},"connected_addresses":{"type":"array","description":"List of wallet addresses currently connected to this place.\nOnly included when `with_connected_users=true` query parameter is set.\n","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}}}}}},"401":{"description":"Unauthorized - missing or invalid token","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"403":{"description":"Forbidden - invalid authorization token","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"404":{"description":"Resource not found - Place/world doesn't exist or is disabled","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"500":{"description":"Internal server error - service authentication not configured","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## Update place highlight status 🔒 (Admin only)

> Update the highlight status for a place. \*\*Requires authentication and admin privileges.\*\*\
> \
> Highlighted places receive special promotion and appear at the top of listings.\
> This endpoint is only available to administrators.\
> \
> \*\*Use Cases:\*\*\
> \- Feature exceptional places on the overview page\
> \- Promote seasonal or event-related places\
> \- Curate the best content for new users<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Decentraland authentication token obtained from the Decentraland SDK or auth services.\n\nTo authenticate:\n1. Use Decentraland's authentication SDK in your application\n2. Get the auth token from the SDK\n3. Include in requests: `Authorization: Bearer <token>`\n"}}},"paths":{"/places/{place_id}/highlight":{"put":{"tags":["Places"],"summary":"Update place highlight status 🔒 (Admin only)","description":"Update the highlight status for a place. **Requires authentication and admin privileges.**\n\nHighlighted places receive special promotion and appear at the top of listings.\nThis endpoint is only available to administrators.\n\n**Use Cases:**\n- Feature exceptional places on the overview page\n- Promote seasonal or event-related places\n- Curate the best content for new users\n","operationId":"updatePlaceHighlight","parameters":[{"name":"place_id","in":"path","required":true,"description":"UUID of the place to highlight/unhighlight","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["highlighted"],"properties":{"highlighted":{"type":"boolean","description":"Set to true to highlight the place (feature it), false to remove highlight.\nOnly administrators can update this field.\n"}}}}}},"responses":{"200":{"description":"Highlight status updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","description":"A place (scene) in Genesis City or a Decentraland World.\n\n**Place ID Persistence:** The UUID is preserved across scene redeployments when:\n- New deployment contains all previous parcels (growing)\n- New deployment keeps the same base parcel (reshaping/shrinking)\n\nThe UUID changes when the scene moves to different parcels with a different base.\nThis ensures favorites, likes, and social data persist through scene updates.\n","properties":{"id":{"type":"string","format":"uuid","description":"Persistent unique identifier for the place. This UUID is maintained across scene\nredeployments as long as the scene keeps the same base parcel or contains all\nprevious parcels. See \"Place ID Semantics\" in the API description for details.\n"},"title":{"type":"string","maxLength":50,"description":"Display name of the place","nullable":true},"description":{"type":"string","maxLength":5000,"description":"Long-form description of the place content","nullable":true},"image":{"type":"string","format":"uri","description":"URL to the place thumbnail/preview image (from navmapThumbnail or generated)","nullable":true},"owner":{"type":"string","maxLength":42,"description":"Ethereum address of the place owner","nullable":true},"positions":{"type":"array","description":"All parcel coordinates occupied by this place. Places can span multiple parcels.\n**UUID Preservation:** If a new deployment contains all these parcels plus additional ones,\nthe Place UUID is preserved (scene growth). However, if parcels are removed or changed,\nthe UUID may change unless the base_position remains the same.\n","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"}},"base_position":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$","description":"Primary/spawn coordinate for the place. This is the main parcel where users spawn\nwhen entering the scene. **Important:** The base parcel is key to Place ID persistence -\nkeeping the same base parcel across deployments preserves the Place UUID and all\nassociated user data (favorites, likes, etc.).\n"},"contact_name":{"type":"string","maxLength":5000,"description":"Contact person name for the place","nullable":true},"contact_email":{"type":"string","maxLength":5000,"description":"Contact email for the place","nullable":true},"content_rating":{"type":"string","maxLength":1,"description":"Age appropriateness rating:\n- PR: Pre-Teen (10+)\n- E: Everyone (all ages)\n- T: Teen (13+)\n- A: Adult (18+)\n- R: Restricted (18+, explicit)\n","enum":["PR","E","T","A","R"]},"likes":{"type":"integer","minimum":0,"description":"Total number of likes received"},"dislikes":{"type":"integer","minimum":0,"description":"Total number of dislikes received"},"like_score":{"type":"number","minimum":0,"maximum":1,"description":"Quality score (0-1) based on VP-weighted likes/dislikes.\nHigher score = better quality. Null if insufficient votes.\n","nullable":true},"like_rate":{"type":"number","minimum":0,"maximum":1,"description":"Simple like ratio (likes / total votes), not VP-weighted","nullable":true},"ranking":{"type":"number","description":"External ranking value for custom ordering","nullable":true,"default":0},"highlighted":{"type":"boolean","description":"True if this place is highlighted/featured by administrators.\nHighlighted places appear at the top of listing endpoints.\n"},"favorites":{"type":"integer","minimum":0,"description":"Number of users who favorited this place"},"disabled":{"type":"boolean","description":"True if place is disabled (not shown publicly)"},"disabled_at":{"type":"string","format":"date-time","description":"Timestamp when place was disabled","nullable":true},"created_at":{"type":"string","format":"date-time","description":"When the place was first created"},"updated_at":{"type":"string","format":"date-time","description":"Last update to place metadata"},"deployed_at":{"type":"string","format":"date-time","description":"Last scene deployment timestamp"},"user_like":{"type":"boolean","description":"True if authenticated user liked this place"},"user_dislike":{"type":"boolean","description":"True if authenticated user disliked this place"},"user_favorite":{"type":"boolean","description":"True if authenticated user favorited this place"},"user_count":{"type":"integer","minimum":0,"description":"Current number of users in the place (real-time)"},"user_visits":{"type":"integer","minimum":0,"description":"Total unique users who visited in the last 30 days"},"categories":{"type":"array","description":"Categories/tags assigned to this place","items":{"type":"string"}},"realms_detail":{"type":"array","description":"Per-realm user distribution (only if with_realms_detail=true)","items":{"type":"object","description":"A Decentraland realm (server) with real-time user data","properties":{"serverName":{"type":"string","description":"Human-readable realm server name"},"url":{"type":"string","format":"uri","description":"Realm connection URL"},"usersCount":{"type":"integer","minimum":0,"description":"Total users currently in this realm"},"userParcels":{"type":"array","description":"Coordinates where users are located in this realm","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer"},"description":"[x, y] coordinate pair"}}}}},"sdk":{"type":"string","description":"SDK/runtime version (e.g., \"7\" for SDK7)","nullable":true},"connected_addresses":{"type":"array","description":"List of wallet addresses currently connected to this place.\nOnly included when `with_connected_users=true` query parameter is set.\n","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}}}}}},"401":{"description":"Unauthorized - Missing or invalid authentication token","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"403":{"description":"Forbidden - user is not an admin","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}},"404":{"description":"Resource not found - Place/world doesn't exist or is disabled","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## Get lightweight place status

> Retrieve basic status information for multiple places (up to 100).\
> \
> \*\*Lightweight Alternative:\*\* Returns only essential fields (ID, title, position, disabled status).\
> Use this instead of full place details when you only need to check if places exist or are enabled.\
> \
> \*\*Performance:\*\* Faster than full place queries, suitable for status checks.<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[],"paths":{"/places/status":{"post":{"tags":["Places"],"summary":"Get lightweight place status","description":"Retrieve basic status information for multiple places (up to 100).\n\n**Lightweight Alternative:** Returns only essential fields (ID, title, position, disabled status).\nUse this instead of full place details when you only need to check if places exist or are enabled.\n\n**Performance:** Faster than full place queries, suitable for status checks.\n","operationId":"getPlacesStatus","requestBody":{"required":true,"description":"Array of place UUIDs to check","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":100}}}},"responses":{"200":{"description":"Status retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","description":"Lightweight place status information","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string","nullable":true},"base_position":{"type":"string"},"disabled":{"type":"boolean","description":"True if place is not publicly visible"},"world":{"type":"boolean","description":"True if this is a world, false if Genesis City place"},"world_name":{"type":"string","nullable":true,"description":"World name if this is a world"}}}},"total":{"type":"integer","description":"Number of places found"}}}}}},"400":{"description":"Bad request - Invalid parameters or malformed request","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## List destinations (places + worlds)

> Retrieve a paginated list of both places and worlds with comprehensive filtering options.\
> \
> \*\*Authentication:\*\* Optional. When authenticated, enables \`only\_favorites\` filtering and populates\
> \`user\_like\`, \`user\_dislike\`, and \`user\_favorite\` fields in responses.\
> \
> \*\*Key Features:\*\*\
> \- Combines Genesis City places and Decentraland Worlds in a single response\
> \- \*\*Highlighted destinations are always returned first\*\*, followed by \*\*ranking value\*\* (descending), then by the specified order\_by\
> \- Filter places by exact coordinates (pointer)\
> \- Filter worlds by exact name (world\_names) or LIKE matching (names)\
> \- Filter by SDK version with prefix matching (e.g., sdk=7 matches 7.x.x; null values treated as SDK6)\
> \- Include connected user wallet addresses (with\_connected\_users)\
> \- Include live event status (with\_live\_events)\
> \
> \*\*Common Use Cases:\*\*\
> \- Get all destinations: \`?limit=50\`\
> \- Filter worlds by exact name: \`?world\_names=mycoolworld.dcl.eth\`\
> \- Filter worlds by name pattern: \`?names=art\&names=gallery\`\
> \- Filter by SDK7: \`?sdk=7\`\
> \- Get only places: \`?only\_places=true\`\
> \- Get only worlds: \`?only\_worlds=true\`\
> \- Include connected users: \`?with\_connected\_users=true\`\
> \- Include live event status: \`?with\_live\_events=true\`<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"},{"name":"Worlds","description":"Operations for Decentraland Worlds - privately owned virtual spaces that exist outside Genesis City.\nWorlds can be accessed via unique URLs and have their own rules and configurations.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[{},{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Decentraland authentication token obtained from the Decentraland SDK or auth services.\n\nTo authenticate:\n1. Use Decentraland's authentication SDK in your application\n2. Get the auth token from the SDK\n3. Include in requests: `Authorization: Bearer <token>`\n"}}},"paths":{"/destinations":{"get":{"tags":["Places","Worlds"],"summary":"List destinations (places + worlds)","description":"Retrieve a paginated list of both places and worlds with comprehensive filtering options.\n\n**Authentication:** Optional. When authenticated, enables `only_favorites` filtering and populates\n`user_like`, `user_dislike`, and `user_favorite` fields in responses.\n\n**Key Features:**\n- Combines Genesis City places and Decentraland Worlds in a single response\n- **Highlighted destinations are always returned first**, followed by **ranking value** (descending), then by the specified order_by\n- Filter places by exact coordinates (pointer)\n- Filter worlds by exact name (world_names) or LIKE matching (names)\n- Filter by SDK version with prefix matching (e.g., sdk=7 matches 7.x.x; null values treated as SDK6)\n- Include connected user wallet addresses (with_connected_users)\n- Include live event status (with_live_events)\n\n**Common Use Cases:**\n- Get all destinations: `?limit=50`\n- Filter worlds by exact name: `?world_names=mycoolworld.dcl.eth`\n- Filter worlds by name pattern: `?names=art&names=gallery`\n- Filter by SDK7: `?sdk=7`\n- Get only places: `?only_places=true`\n- Get only worlds: `?only_worlds=true`\n- Include connected users: `?with_connected_users=true`\n- Include live event status: `?with_live_events=true`\n","operationId":"getDestinations","parameters":[{"name":"limit","in":"query","description":"Maximum number of destinations to return (max 100)","required":false,"schema":{"type":"integer","minimum":0,"maximum":100,"default":100}},{"name":"offset","in":"query","description":"Number of destinations to skip for pagination","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"pointer","in":"query","description":"Filter places by specific parcel coordinates (exact match).  Worlds are excluded.\nFormat: `\"x,y\"` (e.g., `\"-23,-96\"`).\n","required":false,"schema":{"type":"array","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"},"maxItems":1000},"style":"form","explode":true},{"name":"world_names","in":"query","description":"Filter worlds by exact name match.\nExample: `world_names=mycoolworld.dcl.eth`\n","required":false,"schema":{"type":"array","items":{"type":"string"},"maxItems":1000},"style":"form","explode":true},{"name":"names","in":"query","description":"Filter worlds by name using LIKE matching (partial match, case-insensitive).\nExample: `names=art` matches \"art-gallery\", \"digital-art\", etc.\n","required":false,"schema":{"type":"array","items":{"type":"string"},"maxItems":1000},"style":"form","explode":true},{"name":"only_favorites","in":"query","description":"Show only the authenticated user's favorite destinations.\nReturns empty list if not authenticated.\n","required":false,"schema":{"type":"boolean","default":false}},{"name":"only_highlighted","in":"query","description":"Show only highlighted/featured destinations","required":false,"schema":{"type":"boolean","default":false}},{"name":"order_by","in":"query","description":"Sort destinations by:\n- `like_score`: VP-weighted like ratio (default)\n- `most_active`: Current user count\n- `updated_at`: Recently updated\n- `created_at`: Newest first\n","required":false,"schema":{"type":"string","enum":["like_score","most_active","updated_at","created_at"],"default":"like_score"}},{"name":"order","in":"query","description":"Sort direction","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"with_realms_detail","in":"query","description":"Include real-time realm and user count details","required":false,"schema":{"type":"boolean","default":false}},{"name":"with_connected_users","in":"query","description":"Include the list of connected user wallet addresses for each destination.\nWhen enabled, adds `connected_addresses` array to each destination.\n","required":false,"schema":{"type":"boolean","default":false}},{"name":"with_live_events","in":"query","description":"Include whether the destination has a live event.\nWhen enabled, adds `live` boolean to each destination.\nData is cached for 5 minutes for performance.\n","required":false,"schema":{"type":"boolean","default":false}},{"name":"search","in":"query","description":"Full-text search in title, description, owner (min 3 chars)","required":false,"schema":{"type":"string","minLength":3}},{"name":"categories","in":"query","description":"Filter by categories","required":false,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true},{"name":"owner","in":"query","description":"Filter by owner's Ethereum address","required":false,"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}},{"name":"creator_address","in":"query","description":"Filter by creator's Ethereum address","required":false,"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}},{"name":"only_worlds","in":"query","description":"Show only worlds (excludes places)","required":false,"schema":{"type":"boolean","default":false}},{"name":"only_places","in":"query","description":"Show only places (excludes worlds)","required":false,"schema":{"type":"boolean","default":false}},{"name":"sdk","in":"query","description":"Filter by SDK version.\nPlaces with null SDK values are treated as SDK6 (legacy scenes).\nExample: `7` for SDK7 scenes, `6` for SDK6/legacy scenes.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Destinations retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","description":"A place (scene) in Genesis City or a Decentraland World.\n\n**Place ID Persistence:** The UUID is preserved across scene redeployments when:\n- New deployment contains all previous parcels (growing)\n- New deployment keeps the same base parcel (reshaping/shrinking)\n\nThe UUID changes when the scene moves to different parcels with a different base.\nThis ensures favorites, likes, and social data persist through scene updates.\n","properties":{"id":{"type":"string","format":"uuid","description":"Persistent unique identifier for the place. This UUID is maintained across scene\nredeployments as long as the scene keeps the same base parcel or contains all\nprevious parcels. See \"Place ID Semantics\" in the API description for details.\n"},"title":{"type":"string","maxLength":50,"description":"Display name of the place","nullable":true},"description":{"type":"string","maxLength":5000,"description":"Long-form description of the place content","nullable":true},"image":{"type":"string","format":"uri","description":"URL to the place thumbnail/preview image (from navmapThumbnail or generated)","nullable":true},"owner":{"type":"string","maxLength":42,"description":"Ethereum address of the place owner","nullable":true},"positions":{"type":"array","description":"All parcel coordinates occupied by this place. Places can span multiple parcels.\n**UUID Preservation:** If a new deployment contains all these parcels plus additional ones,\nthe Place UUID is preserved (scene growth). However, if parcels are removed or changed,\nthe UUID may change unless the base_position remains the same.\n","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"}},"base_position":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$","description":"Primary/spawn coordinate for the place. This is the main parcel where users spawn\nwhen entering the scene. **Important:** The base parcel is key to Place ID persistence -\nkeeping the same base parcel across deployments preserves the Place UUID and all\nassociated user data (favorites, likes, etc.).\n"},"contact_name":{"type":"string","maxLength":5000,"description":"Contact person name for the place","nullable":true},"contact_email":{"type":"string","maxLength":5000,"description":"Contact email for the place","nullable":true},"content_rating":{"type":"string","maxLength":1,"description":"Age appropriateness rating:\n- PR: Pre-Teen (10+)\n- E: Everyone (all ages)\n- T: Teen (13+)\n- A: Adult (18+)\n- R: Restricted (18+, explicit)\n","enum":["PR","E","T","A","R"]},"likes":{"type":"integer","minimum":0,"description":"Total number of likes received"},"dislikes":{"type":"integer","minimum":0,"description":"Total number of dislikes received"},"like_score":{"type":"number","minimum":0,"maximum":1,"description":"Quality score (0-1) based on VP-weighted likes/dislikes.\nHigher score = better quality. Null if insufficient votes.\n","nullable":true},"like_rate":{"type":"number","minimum":0,"maximum":1,"description":"Simple like ratio (likes / total votes), not VP-weighted","nullable":true},"ranking":{"type":"number","description":"External ranking value for custom ordering","nullable":true,"default":0},"highlighted":{"type":"boolean","description":"True if this place is highlighted/featured by administrators.\nHighlighted places appear at the top of listing endpoints.\n"},"favorites":{"type":"integer","minimum":0,"description":"Number of users who favorited this place"},"disabled":{"type":"boolean","description":"True if place is disabled (not shown publicly)"},"disabled_at":{"type":"string","format":"date-time","description":"Timestamp when place was disabled","nullable":true},"created_at":{"type":"string","format":"date-time","description":"When the place was first created"},"updated_at":{"type":"string","format":"date-time","description":"Last update to place metadata"},"deployed_at":{"type":"string","format":"date-time","description":"Last scene deployment timestamp"},"user_like":{"type":"boolean","description":"True if authenticated user liked this place"},"user_dislike":{"type":"boolean","description":"True if authenticated user disliked this place"},"user_favorite":{"type":"boolean","description":"True if authenticated user favorited this place"},"user_count":{"type":"integer","minimum":0,"description":"Current number of users in the place (real-time)"},"user_visits":{"type":"integer","minimum":0,"description":"Total unique users who visited in the last 30 days"},"categories":{"type":"array","description":"Categories/tags assigned to this place","items":{"type":"string"}},"realms_detail":{"type":"array","description":"Per-realm user distribution (only if with_realms_detail=true)","items":{"type":"object","description":"A Decentraland realm (server) with real-time user data","properties":{"serverName":{"type":"string","description":"Human-readable realm server name"},"url":{"type":"string","format":"uri","description":"Realm connection URL"},"usersCount":{"type":"integer","minimum":0,"description":"Total users currently in this realm"},"userParcels":{"type":"array","description":"Coordinates where users are located in this realm","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer"},"description":"[x, y] coordinate pair"}}}}},"sdk":{"type":"string","description":"SDK/runtime version (e.g., \"7\" for SDK7)","nullable":true},"connected_addresses":{"type":"array","description":"List of wallet addresses currently connected to this place.\nOnly included when `with_connected_users=true` query parameter is set.\n","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}},"total":{"type":"integer","description":"Total number of places matching the query (for pagination)"}}}}}},"400":{"description":"Bad request - Invalid parameters or malformed request","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```

## Get specific destinations by IDs

> Retrieve multiple specific destinations (places and/or worlds) by their UUIDs in a single request.\
> Maximum 100 destination IDs per request.\
> \
> \*\*Authentication:\*\* Optional. When authenticated, enables \`only\_favorites\` filtering and populates\
> \`user\_like\`, \`user\_dislike\`, and \`user\_favorite\` fields in responses.\
> \
> \*\*Use Cases:\*\*\
> \- Fetch details for a known set of destinations\
> \- Resolve destination IDs from external sources\
> \- Batch operations for better performance\
> \
> \*\*Note:\*\* Results are returned in the same order as requested IDs when available.\
> All query parameters from the GET endpoint are supported for additional filtering.<br>

```json
{"openapi":"3.0.3","info":{"title":"Decentraland Places API","version":"1.0.0"},"tags":[{"name":"Places","description":"Operations for discovering and managing places (scenes) in Genesis City.\nPlaces are deployable scenes located at specific parcel coordinates in the main Decentraland world.\n"},{"name":"Worlds","description":"Operations for Decentraland Worlds - privately owned virtual spaces that exist outside Genesis City.\nWorlds can be accessed via unique URLs and have their own rules and configurations.\n"}],"servers":[{"url":"https://places.decentraland.org/api","description":"Production server"},{"url":"http://localhost:4000/api","description":"Development server"}],"security":[{},{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Decentraland authentication token obtained from the Decentraland SDK or auth services.\n\nTo authenticate:\n1. Use Decentraland's authentication SDK in your application\n2. Get the auth token from the SDK\n3. Include in requests: `Authorization: Bearer <token>`\n"}}},"paths":{"/destinations":{"post":{"tags":["Places","Worlds"],"summary":"Get specific destinations by IDs","description":"Retrieve multiple specific destinations (places and/or worlds) by their UUIDs in a single request.\nMaximum 100 destination IDs per request.\n\n**Authentication:** Optional. When authenticated, enables `only_favorites` filtering and populates\n`user_like`, `user_dislike`, and `user_favorite` fields in responses.\n\n**Use Cases:**\n- Fetch details for a known set of destinations\n- Resolve destination IDs from external sources\n- Batch operations for better performance\n\n**Note:** Results are returned in the same order as requested IDs when available.\nAll query parameters from the GET endpoint are supported for additional filtering.\n","operationId":"getDestinationsByIds","parameters":[{"name":"offset","in":"query","description":"Number of results to skip","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","description":"Maximum number of results (max 100)","required":false,"schema":{"type":"integer","minimum":0,"maximum":100,"default":100}},{"name":"order_by","in":"query","description":"Sort field","required":false,"schema":{"type":"string","enum":["like_score","most_active","updated_at","created_at"],"default":"like_score"}},{"name":"order","in":"query","description":"Sort direction","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"search","in":"query","description":"Optional text search filter (minimum 3 characters)","required":false,"schema":{"type":"string","minLength":3}},{"name":"with_connected_users","in":"query","description":"Include connected user wallet addresses for each destination","required":false,"schema":{"type":"boolean","default":false}},{"name":"with_realms_detail","in":"query","description":"Include real-time realm data for each place","required":false,"schema":{"type":"boolean","default":false}},{"name":"only_favorites","in":"query","description":"Show only the authenticated user's favorite destinations.\nReturns empty list if not authenticated.\n","required":false,"schema":{"type":"boolean","default":false}},{"name":"only_highlighted","in":"query","description":"Show only highlighted destinations","required":false,"schema":{"type":"boolean","default":false}},{"name":"only_worlds","in":"query","description":"Show only worlds (excludes places)","required":false,"schema":{"type":"boolean","default":false}},{"name":"only_places","in":"query","description":"Show only places (excludes worlds)","required":false,"schema":{"type":"boolean","default":false}},{"name":"sdk","in":"query","description":"Filter by SDK version.\nPlaces with null SDK values are treated as SDK6 (legacy scenes).\n","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Array of destination UUIDs to retrieve","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":100}}}},"responses":{"200":{"description":"Successfully retrieved destinations","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","description":"A place (scene) in Genesis City or a Decentraland World.\n\n**Place ID Persistence:** The UUID is preserved across scene redeployments when:\n- New deployment contains all previous parcels (growing)\n- New deployment keeps the same base parcel (reshaping/shrinking)\n\nThe UUID changes when the scene moves to different parcels with a different base.\nThis ensures favorites, likes, and social data persist through scene updates.\n","properties":{"id":{"type":"string","format":"uuid","description":"Persistent unique identifier for the place. This UUID is maintained across scene\nredeployments as long as the scene keeps the same base parcel or contains all\nprevious parcels. See \"Place ID Semantics\" in the API description for details.\n"},"title":{"type":"string","maxLength":50,"description":"Display name of the place","nullable":true},"description":{"type":"string","maxLength":5000,"description":"Long-form description of the place content","nullable":true},"image":{"type":"string","format":"uri","description":"URL to the place thumbnail/preview image (from navmapThumbnail or generated)","nullable":true},"owner":{"type":"string","maxLength":42,"description":"Ethereum address of the place owner","nullable":true},"positions":{"type":"array","description":"All parcel coordinates occupied by this place. Places can span multiple parcels.\n**UUID Preservation:** If a new deployment contains all these parcels plus additional ones,\nthe Place UUID is preserved (scene growth). However, if parcels are removed or changed,\nthe UUID may change unless the base_position remains the same.\n","items":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$"}},"base_position":{"type":"string","pattern":"^-?\\d{1,3},-?\\d{1,3}$","description":"Primary/spawn coordinate for the place. This is the main parcel where users spawn\nwhen entering the scene. **Important:** The base parcel is key to Place ID persistence -\nkeeping the same base parcel across deployments preserves the Place UUID and all\nassociated user data (favorites, likes, etc.).\n"},"contact_name":{"type":"string","maxLength":5000,"description":"Contact person name for the place","nullable":true},"contact_email":{"type":"string","maxLength":5000,"description":"Contact email for the place","nullable":true},"content_rating":{"type":"string","maxLength":1,"description":"Age appropriateness rating:\n- PR: Pre-Teen (10+)\n- E: Everyone (all ages)\n- T: Teen (13+)\n- A: Adult (18+)\n- R: Restricted (18+, explicit)\n","enum":["PR","E","T","A","R"]},"likes":{"type":"integer","minimum":0,"description":"Total number of likes received"},"dislikes":{"type":"integer","minimum":0,"description":"Total number of dislikes received"},"like_score":{"type":"number","minimum":0,"maximum":1,"description":"Quality score (0-1) based on VP-weighted likes/dislikes.\nHigher score = better quality. Null if insufficient votes.\n","nullable":true},"like_rate":{"type":"number","minimum":0,"maximum":1,"description":"Simple like ratio (likes / total votes), not VP-weighted","nullable":true},"ranking":{"type":"number","description":"External ranking value for custom ordering","nullable":true,"default":0},"highlighted":{"type":"boolean","description":"True if this place is highlighted/featured by administrators.\nHighlighted places appear at the top of listing endpoints.\n"},"favorites":{"type":"integer","minimum":0,"description":"Number of users who favorited this place"},"disabled":{"type":"boolean","description":"True if place is disabled (not shown publicly)"},"disabled_at":{"type":"string","format":"date-time","description":"Timestamp when place was disabled","nullable":true},"created_at":{"type":"string","format":"date-time","description":"When the place was first created"},"updated_at":{"type":"string","format":"date-time","description":"Last update to place metadata"},"deployed_at":{"type":"string","format":"date-time","description":"Last scene deployment timestamp"},"user_like":{"type":"boolean","description":"True if authenticated user liked this place"},"user_dislike":{"type":"boolean","description":"True if authenticated user disliked this place"},"user_favorite":{"type":"boolean","description":"True if authenticated user favorited this place"},"user_count":{"type":"integer","minimum":0,"description":"Current number of users in the place (real-time)"},"user_visits":{"type":"integer","minimum":0,"description":"Total unique users who visited in the last 30 days"},"categories":{"type":"array","description":"Categories/tags assigned to this place","items":{"type":"string"}},"realms_detail":{"type":"array","description":"Per-realm user distribution (only if with_realms_detail=true)","items":{"type":"object","description":"A Decentraland realm (server) with real-time user data","properties":{"serverName":{"type":"string","description":"Human-readable realm server name"},"url":{"type":"string","format":"uri","description":"Realm connection URL"},"usersCount":{"type":"integer","minimum":0,"description":"Total users currently in this realm"},"userParcels":{"type":"array","description":"Coordinates where users are located in this realm","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer"},"description":"[x, y] coordinate pair"}}}}},"sdk":{"type":"string","description":"SDK/runtime version (e.g., \"7\" for SDK7)","nullable":true},"connected_addresses":{"type":"array","description":"List of wallet addresses currently connected to this place.\nOnly included when `with_connected_users=true` query parameter is set.\n","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}}}},"total":{"type":"integer","description":"Total number of places matching the query (for pagination)"}}}}}},"400":{"description":"Bad request - Invalid parameters or malformed request","content":{"application/json":{"schema":{"type":"object","description":"Standard error response","properties":{"ok":{"type":"boolean","description":"Always false for errors"},"error":{"type":"string","description":"Human-readable error message"}}}}}}}}}}}
```
