API Specification
GameAnalytics Organization API (v1)
Download OpenAPI specification:Download
REST API for managing organizations resources. Base URL: https://organization.gameanalytics.com.
List all games
Returns all games in an organization.
- sort: Property to sort games by. It should have the format
[property]:[order], where[property]is one of:- id
- title
- created_at
- archived_at
- dau
- wau
- mau
And [order] is either asc (for sorting in ascending order) or desc (for
descending).
Authorizations:
query Parameters
| page[size] | integer (Page[Size]) [ 1 .. 100 ] Default: 10 Maximum number of games to be returned. |
Page[Offset] (integer) or Page[Offset] (null) (Page[Offset]) Starting index of games to be returned. | |
| sort | string (Sort) Default: "id:asc" Enum: "id:asc" "id:desc" "title:asc" "title:desc" "created_at:asc" "created_at:desc" "archived_at:asc" "archived_at:desc" "dau:asc" "dau:desc" "mau:asc" "mau:desc" "wau:asc" "wau:desc" Property to sort games by. |
Filter[Studio.Id] (integer) or Filter[Studio.Id] (null) (Filter[Studio.Id]) Only return games from studio with the given id. | |
Filter[Title] (string) or Filter[Title] (null) (Filter[Title]) Only return games matching title. | |
Array of Expand[] (strings) or Expand[] (null) (Expand[]) Expand related object in response. Allowed values: |
Responses
Response samples
- 200
- 422
{- "data": [
- {
- "id": 1,
- "title": "My game",
- "is_disabled": true,
- "is_archived": true,
- "created_at": "2019-08-24T14:15:22Z",
- "archived_at": "2019-08-24T14:15:22Z",
- "platform": "android",
- "store_platform": "alternate_app_dist_android",
- "sdk_used": "unity",
- "bundle_id": "string",
- "googleplay_key": "string",
- "key": "string",
- "secret_key": "string",
- "studio": 0,
- "organization": 0,
- "metrics": {
- "DAU": 0,
- "WAU": 0,
- "MAU": 0
}
}
], - "meta": {
- "total": 1
}
}Create a game
Create a game in the studio identified by studio_id. The studio must not be archived.The platform, store_platform and sdk_used fields must obey the mapping defined in https://organization.gameanalytics.com/api/v1/game_platforms..
Authorizations:
query Parameters
Array of Expand[] (strings) or Expand[] (null) (Expand[]) Expand related object in response. Allowed values: |
Request Body schema: application/jsonrequired
| studio_id required | integer (Studio Id) Id for the studio the game will be created in. |
| title required | string (Title) [ 1 .. 191 ] characters |
| sdk_used required | string (SDKUsed) Enum: "unity" "unreal" "ios_native" "tvos_native" "android_native" "javascript" "adobe_air" "cocos2d" "cordova" "construct" "defold" "gamemaker" "godot" "roblox" "flutter" "csharp" "cpp" "collection_api" "other" SDK used for game.This value must obey the mapping defined in https://organization.gameanalytics.com/api/v1/game_platforms. |
| platform required | string (Platform) Enum: "android" "browser" "huawei_android" "ios" "linux" "macos" "meta_vr_android" "nintendo" "other" "playstation" "roblox" "tvos" "windows" "xbox" Platform game is developed for. |
| store_platform | string (StorePlatform) Default: "other" Enum: "alternate_app_dist_android" "alternate_app_dist_ios" "apple_ios" "apple_mac" "apple_tv" "ea_app" "epic_store" "gog" "google_play" "huawei_android" "huawei_appgallery" "itch_io" "linux" "meta_quest_store" "microsoft_store_windows" "microsoft_store_xbox" "nintendo_store" "oculus_app_lab" "other" "playstation_store" "roblox" "steam" "xbox_app" Store platform game is developed for.This value must obey the mapping defined in https://organization.gameanalytics.com/api/v1/game_platforms.. |
Bundle Id (string) or Bundle Id (null) (Bundle Id) The unique identifier for your game as defined in the App Store or Play Store. | |
Googleplay Key (string) or Googleplay Key (null) (Googleplay Key) Play Store licensing key used for validating IAP with Google payment servers. |
Responses
Request samples
- Payload
{- "studio_id": 0,
- "title": "string",
- "sdk_used": "unity",
- "platform": "android",
- "store_platform": "alternate_app_dist_android",
- "bundle_id": "string",
- "googleplay_key": "string"
}Response samples
- 201
- 404
- 422
{- "data": {
- "id": 1,
- "title": "My game",
- "is_disabled": true,
- "is_archived": true,
- "created_at": "2019-08-24T14:15:22Z",
- "archived_at": "2019-08-24T14:15:22Z",
- "platform": "android",
- "store_platform": "alternate_app_dist_android",
- "sdk_used": "unity",
- "bundle_id": "string",
- "googleplay_key": "string",
- "key": "string",
- "secret_key": "string",
- "studio": 0,
- "organization": 0,
- "metrics": {
- "DAU": 0,
- "WAU": 0,
- "MAU": 0
}
}
}Get single game
Get game identified by game_id.
Authorizations:
path Parameters
| game_id required | integer (Game Id) |
query Parameters
Array of Expand[] (strings) or Expand[] (null) (Expand[]) Expand related object in response. Allowed values: |
Responses
Response samples
- 200
- 404
- 422
{- "data": {
- "id": 1,
- "title": "My game",
- "is_disabled": true,
- "is_archived": true,
- "created_at": "2019-08-24T14:15:22Z",
- "archived_at": "2019-08-24T14:15:22Z",
- "platform": "android",
- "store_platform": "alternate_app_dist_android",
- "sdk_used": "unity",
- "bundle_id": "string",
- "googleplay_key": "string",
- "key": "string",
- "secret_key": "string",
- "studio": 0,
- "organization": 0,
- "metrics": {
- "DAU": 0,
- "WAU": 0,
- "MAU": 0
}
}
}List all studios
Returns all studios in an organization.
- sort: Property to sort studios by. It should have the format
[property]:[order], where[property]is one of:- id
- name
- created_at
- archived_at
And [order] is either asc (for sorting in ascending order) or desc (for
descending).
Authorizations:
query Parameters
| page[size] | integer (Page[Size]) [ 1 .. 100 ] Default: 10 Maximum number of studios to be returned. |
Page[Offset] (integer) or Page[Offset] (null) (Page[Offset]) Starting index of studios to be returned. | |
| sort | string (Sort) Default: "id:asc" Enum: "id:asc" "id:desc" "name:asc" "name:desc" "created_at:asc" "created_at:desc" "archived_at:asc" "archived_at:desc" Property to sort studios by. |
Filter[Name] (string) or Filter[Name] (null) (Filter[Name]) Only return studios matching name. | |
Array of Expand[] (strings) or Expand[] (null) (Expand[]) Expand related object in response. Allowed values: |
Responses
Response samples
- 200
- 422
{- "data": [
- {
- "id": 1,
- "name": "My studio",
- "is_archived": true,
- "created_at": "2019-08-24T14:15:22Z",
- "archived_at": "2019-08-24T14:15:22Z"
}
], - "meta": {
- "total": 1
}
}Create a studio
Create a studio with the given name.
Authorizations:
query Parameters
Array of Expand[] (strings) or Expand[] (null) (Expand[]) Expand related object in response. Allowed values: |
Request Body schema: application/jsonrequired
| name required | string (Name) [ 1 .. 191 ] characters Studio name |
Responses
Request samples
- Payload
{- "name": "string"
}Response samples
- 201
- 422
{- "data": {
- "id": 1,
- "name": "My studio",
- "is_archived": true,
- "created_at": "2019-08-24T14:15:22Z",
- "archived_at": "2019-08-24T14:15:22Z"
}
}Get single studio
Authorizations:
path Parameters
| studio_id required | integer (Studio Id) |
query Parameters
Array of Expand[] (strings) or Expand[] (null) (Expand[]) Expand related object in response. Allowed values: |
Responses
Response samples
- 200
- 404
- 422
{- "data": {
- "id": 1,
- "name": "My studio",
- "is_archived": true,
- "created_at": "2019-08-24T14:15:22Z",
- "archived_at": "2019-08-24T14:15:22Z"
}
}List all users
Lists all users with access to the organization, either directly or through a studio or game in the organization. Also returns the users' highest level of access.
- sort: Property to sort users by. It should have the format
[property]:[order], where[property]is one of:- id
- full_name
- access_level
- last_logged_in_at
And [order] is either asc (for sorting in ascending order) or desc (for
descending).
Authorizations:
query Parameters
| page[size] | integer (Page[Size]) [ 1 .. 100 ] Default: 10 Maximum number of users to be returned. |
Page[Offset] (integer) or Page[Offset] (null) (Page[Offset]) Starting index of users to be returned. | |
| sort | string (Sort) Default: "id:asc" Enum: "id:asc" "id:desc" "full_name:asc" "full_name:desc" "access_level:asc" "access_level:desc" "last_logged_in_at:asc" "last_logged_in_at:desc" Property to sort users by. |
Filter Studio Id (integer) or Filter Studio Id (null) (Filter Studio Id) Only return users with access to studio matching id. | |
Filter Access Resource (string) or Filter Access Resource (null) (Filter Access Resource) Only return users whose access matches the given resource. | |
Filter Access Level (string) or Filter Access Level (null) (Filter Access Level) Only return users whose access matches the given level. | |
Filter Name (string) or Filter Name (null) (Filter Name) Only return users matching the given name. |
Responses
Response samples
- 200
- 422
{- "data": [
- {
- "id": 1,
- "first_name": "John",
- "last_name": "Doe",
- "full_name": "John Doe",
- "email": "john.doe@example.com",
- "last_logged_in_at": "2019-08-24T14:15:22Z",
- "access": {
- "resource": "game",
- "access_level": "viewer"
}
}
], - "meta": {
- "total": 1
}
}Get single user
Retrieve a single user, identified by user_id. Also return the user's highest level
of access in the organization.
Authorizations:
path Parameters
| user_id required | integer (User Id) |
Responses
Response samples
- 200
- 404
- 422
{- "id": 1,
- "first_name": "John",
- "last_name": "Doe",
- "full_name": "John Doe",
- "email": "john.doe@example.com",
- "last_logged_in_at": "2019-08-24T14:15:22Z",
- "access": {
- "resource": "game",
- "access_level": "viewer"
}
}Invite users
Invite users to a game, studio or organization. Up to 20 invites can be sent per request.
For each invite, if a user is already associated with the given email, the invite will give access to the game/studio/organization to that user. If the user does not exist, a new user will be created once the invite is accepted.
If one of the invites is to be sent to a user who already has a higher access than the one requested, a 409 Conflict response is returned.
If an invite that gives higher access has already been sent, a 409 Conflict response is
returned. This behavior can be overriden by setting the override flag to true. This will
send an invite regardless of already existing invites. However, the restriction on not allowing
sending an invite if the user already has higher access cannot be overriden.
Authorizations:
Request Body schema: application/jsonrequired
| override | boolean (Override) Default: false Ignore warnings and send invites even if invites for higher ACLs already exist |
required | Array of objects (Invites) Invites to send |
Responses
Request samples
- Payload
{- "override": false,
- "invites": [
- {
- "email": "user@example.com",
- "resource": {
- "access_level": "viewer",
- "access_resource": "game",
- "studio_id": 1,
- "game_id": 2
}
}
]
}Response samples
- 201
- 404
- 409
- 422
{- "data": [
- {
- "email": "user@example.com",
- "status": "success"
}
], - "meta": {
- "total": 1
}
}Replace ACL
Replace a user's accesses in an organization.
Multiple accesses can be given at once. Note that not all access combinations are possible; for example, a user can't have both organization access and studio access at the same time. Updating a primary owner's access is also not possible. If any incompatible combinations are found, no accesses are replaced and a 409 Conflict response is returned.
Authorizations:
path Parameters
| user_id required | integer (User Id) |
Request Body schema: application/jsonrequired
required | Array of objects (Acls) List of ACLs to update | ||||||||||||
Array
| |||||||||||||
Responses
Request samples
- Payload
{- "acls": [
- {
- "resource": {
- "access_level": "viewer",
- "access_resource": "game",
- "studio_id": 1,
- "game_id": 2
}
}
]
}Response samples
- 200
- 404
- 409
- 422
{- "data": [
- {
- "resource": {
- "access_level": "viewer",
- "access_resource": "game",
- "studio_id": 1,
- "game_id": 2
}
}
], - "meta": {
- "total": 1
}
}Upload icon
Upload an icon for a game, studio or organization.
Authorizations:
Request Body schema: multipart/form-datarequired
| file required | string <binary> (File) |
| entity_type required | string (Entity Type) Enum: "organization" "studio" "game" |
Studio Id (integer) or Studio Id (null) (Studio Id) | |
Game Id (integer) or Game Id (null) (Game Id) |
Responses
Response samples
- 200
- 404
- 422
{- "data": {
- "entity_type": "game",
- "game": {
- "id": 1,
- "title": "My game",
- "is_disabled": true,
- "is_archived": true,
- "created_at": "2019-08-24T14:15:22Z",
- "archived_at": "2019-08-24T14:15:22Z",
- "platform": "android",
- "store_platform": "alternate_app_dist_android",
- "sdk_used": "unity",
- "bundle_id": "string",
- "googleplay_key": "string",
- "key": "string",
- "secret_key": "string",
- "studio": 0,
- "organization": 0,
- "metrics": {
- "DAU": 0,
- "WAU": 0,
- "MAU": 0
}
}
}
}