Get the field map
Read the field map of a game: every field and event it sends, and the state each is in.
GET /v1/games/{game}/field-map · requires players:read
Call it to see which of the names your game sends the community has approved, which are waiting for approval, and which it marked unused. A key reads the map and proposes to it; it cannot approve its own map. The field map explains how a name becomes a field.
Path parameters
Prop
Type
Returns
Prop
Type
Each field holds:
Prop
Type
Each event holds key, sourceKey, label (what it reads on CEEJAY's screens), keepsQuantity (whether the quantity you send is stored), state and rewardMode (once or each: how its reward is granted, when it has one).
Example
curl https://ceejay.communitystudios.xyz/api/v1/games/rugby_manager/field-map \
-H "Authorization: Bearer $CEEJAY_API_KEY"The TypeScript tab calls ceejay.fieldMap.get from the TypeScript SDK. It returns the data of the response below.
{
"success": true,
"data": {
"fields": [
{
"key": "std.level",
"sourceKey": "level",
"name": "Game level",
"type": "number",
"options": [],
"unit": null,
"scale": null,
"category": "progress",
"standard": true,
"sensitive": false,
"state": "approved"
},
{
"key": "league_position",
"sourceKey": "league_position",
"name": "League position",
"type": "number",
"options": [],
"unit": null,
"scale": null,
"category": "progress",
"standard": false,
"sensitive": false,
"state": "approved"
},
{
"key": "coins_spent_cents",
"sourceKey": "coins_spent_cents",
"name": "Coins spent cents",
"type": "number",
"options": [],
"unit": null,
"scale": 0.01,
"category": "progress",
"standard": false,
"sensitive": false,
"state": "proposed"
}
],
"events": [
{
"key": "match_won",
"sourceKey": "match_won",
"label": "Won a match",
"keepsQuantity": false,
"state": "approved",
"rewardMode": "each"
}
],
"limits": {
"ownFields": 25,
"events": 25
}
}
}What is not in the map
The response contains no player values, samples or pending values, because they come from real players and have not been classified as sensitive. The community's team sees them in the dashboard.
A paused game can still be read.
The scope
players:read is part of *, so a Full Access key can call this.
Limits
This request is counted against the key's own requests per minute: 60 unless a higher limit was set on it, and never more than 600. Rate limits has the numbers and the headers.
Errors
| Status | code | error | When |
|---|---|---|---|
403 | community_not_active | This community is no longer active on CEEJAY | The community removed CEEJAY from its server |
403 | game_not_allowed | This API key is limited to other games | The key is limited to other games of the community |
403 | audience_not_allowed | A game made for children cannot connect players or send player data | The game is set up as made for children. Such a game connects nobody and takes no player data |
404 | not_available | This is not available on this instance yet. | Connect is not enabled for this instance. It is enabled per instance. The body adds feature, which is players. Retrying will not change the response |
404 | game_not_found | Game not found | The community has no game with this slug, or the game was removed. A slug that is not 2 to 32 lower-case letters, digits and underscores, starting with a letter, gets this response too |
Every error body also carries requestId, and a 400 with the code bad_request names the invalid field in field. Match on code, not on the message text, which can change.
The errors every request shares (401, 403 for a missing scope, 405, 429, 500) are on the Errors page.

