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": "amazon_appstore",
- "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.
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) <= 191 characters |
sdk_used required | string (SDKUsed) Enum: "unity" "unreal" "ios_native" "tvos_native" "android_native" "javascript" "adobe_air" "cocos2d" "cordova" "soldar2d" "construct" "defold" "gamemaker" "godot" "roblox" "stencyl" "xamarin" "flutter" "csharp" "cpp" "collection_api" "other" SDK used for game. |
platform required | string (Platform) Enum: "android" "huawei_android" "amazon_android" "browser" "ios" "tvos" "playstation" "xbox" "nintendo" "linux" "windows" "meta_vr_android" "macos" "other" Platform game is developed for. |
StorePlatform (string) or null Platform game is developed for. | |
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": "amazon_appstore",
- "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": "amazon_appstore",
- "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": "amazon_appstore",
- "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) 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": "amazon_appstore",
- "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
}
}
}
}