Set Objects
Sets objects on an entity’s profile.
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| InvalidJSONContent | 1200 |
curl --request POST \
--url https://{titleId}.playfabapi.com/Object/SetObjects \
--header 'Content-Type: application/json' \
--header 'X-EntityToken: <api-key>' \
--data '
{
"ExpectedProfileVersion": 5,
"Objects": [
{
"ObjectName": "SaveSate",
"DataObject": {
"PlayerDetails": {
"LastMissionSuccess": "2017-06-15T11:05:19Z",
"LastMissionFailure": "2017-06-12T11:05:19Z",
"MapPosition": [
22,
37.78
],
"IsPaidUpgrade": true
},
"GameSettings": {
"Screen": "FriendsList",
"Favorites": [
"Place 1",
"Place 2"
]
}
},
"SimpleStatements": {
"Read": [
{
"Friend": true
}
],
"Write": [
"Self"
]
}
}
],
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
'import requests
url = "https://{titleId}.playfabapi.com/Object/SetObjects"
payload = {
"ExpectedProfileVersion": 5,
"Objects": [
{
"ObjectName": "SaveSate",
"DataObject": {
"PlayerDetails": {
"LastMissionSuccess": "2017-06-15T11:05:19Z",
"LastMissionFailure": "2017-06-12T11:05:19Z",
"MapPosition": [22, 37.78],
"IsPaidUpgrade": True
},
"GameSettings": {
"Screen": "FriendsList",
"Favorites": ["Place 1", "Place 2"]
}
},
"SimpleStatements": {
"Read": [{ "Friend": True }],
"Write": ["Self"]
}
}
],
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
headers = {
"X-EntityToken": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-EntityToken': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ExpectedProfileVersion: 5,
Objects: [
{
ObjectName: 'SaveSate',
DataObject: {
PlayerDetails: {
LastMissionSuccess: '2017-06-15T11:05:19Z',
LastMissionFailure: '2017-06-12T11:05:19Z',
MapPosition: [22, 37.78],
IsPaidUpgrade: true
},
GameSettings: {Screen: 'FriendsList', Favorites: ['Place 1', 'Place 2']}
},
SimpleStatements: {Read: [{Friend: true}], Write: ['Self']}
}
],
Entity: {
Id: 'A8140AB9109712B',
Type: 'title_player_account',
TypeString: 'title_player_account'
}
})
};
fetch('https://{titleId}.playfabapi.com/Object/SetObjects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{titleId}.playfabapi.com/Object/SetObjects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ExpectedProfileVersion' => 5,
'Objects' => [
[
'ObjectName' => 'SaveSate',
'DataObject' => [
'PlayerDetails' => [
'LastMissionSuccess' => '2017-06-15T11:05:19Z',
'LastMissionFailure' => '2017-06-12T11:05:19Z',
'MapPosition' => [
22,
37.78
],
'IsPaidUpgrade' => true
],
'GameSettings' => [
'Screen' => 'FriendsList',
'Favorites' => [
'Place 1',
'Place 2'
]
]
],
'SimpleStatements' => [
'Read' => [
[
'Friend' => true
]
],
'Write' => [
'Self'
]
]
]
],
'Entity' => [
'Id' => 'A8140AB9109712B',
'Type' => 'title_player_account',
'TypeString' => 'title_player_account'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-EntityToken: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{titleId}.playfabapi.com/Object/SetObjects"
payload := strings.NewReader("{\n \"ExpectedProfileVersion\": 5,\n \"Objects\": [\n {\n \"ObjectName\": \"SaveSate\",\n \"DataObject\": {\n \"PlayerDetails\": {\n \"LastMissionSuccess\": \"2017-06-15T11:05:19Z\",\n \"LastMissionFailure\": \"2017-06-12T11:05:19Z\",\n \"MapPosition\": [\n 22,\n 37.78\n ],\n \"IsPaidUpgrade\": true\n },\n \"GameSettings\": {\n \"Screen\": \"FriendsList\",\n \"Favorites\": [\n \"Place 1\",\n \"Place 2\"\n ]\n }\n },\n \"SimpleStatements\": {\n \"Read\": [\n {\n \"Friend\": true\n }\n ],\n \"Write\": [\n \"Self\"\n ]\n }\n }\n ],\n \"Entity\": {\n \"Id\": \"A8140AB9109712B\",\n \"Type\": \"title_player_account\",\n \"TypeString\": \"title_player_account\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-EntityToken", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{titleId}.playfabapi.com/Object/SetObjects")
.header("X-EntityToken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ExpectedProfileVersion\": 5,\n \"Objects\": [\n {\n \"ObjectName\": \"SaveSate\",\n \"DataObject\": {\n \"PlayerDetails\": {\n \"LastMissionSuccess\": \"2017-06-15T11:05:19Z\",\n \"LastMissionFailure\": \"2017-06-12T11:05:19Z\",\n \"MapPosition\": [\n 22,\n 37.78\n ],\n \"IsPaidUpgrade\": true\n },\n \"GameSettings\": {\n \"Screen\": \"FriendsList\",\n \"Favorites\": [\n \"Place 1\",\n \"Place 2\"\n ]\n }\n },\n \"SimpleStatements\": {\n \"Read\": [\n {\n \"Friend\": true\n }\n ],\n \"Write\": [\n \"Self\"\n ]\n }\n }\n ],\n \"Entity\": {\n \"Id\": \"A8140AB9109712B\",\n \"Type\": \"title_player_account\",\n \"TypeString\": \"title_player_account\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Object/SetObjects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-EntityToken"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ExpectedProfileVersion\": 5,\n \"Objects\": [\n {\n \"ObjectName\": \"SaveSate\",\n \"DataObject\": {\n \"PlayerDetails\": {\n \"LastMissionSuccess\": \"2017-06-15T11:05:19Z\",\n \"LastMissionFailure\": \"2017-06-12T11:05:19Z\",\n \"MapPosition\": [\n 22,\n 37.78\n ],\n \"IsPaidUpgrade\": true\n },\n \"GameSettings\": {\n \"Screen\": \"FriendsList\",\n \"Favorites\": [\n \"Place 1\",\n \"Place 2\"\n ]\n }\n },\n \"SimpleStatements\": {\n \"Read\": [\n {\n \"Friend\": true\n }\n ],\n \"Write\": [\n \"Self\"\n ]\n }\n }\n ],\n \"Entity\": {\n \"Id\": \"A8140AB9109712B\",\n \"Type\": \"title_player_account\",\n \"TypeString\": \"title_player_account\"\n }\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {
"SetResults": [
{}
],
"ProfileVersion": 5
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}Authorizations
This API requires an Entity Session Token, available from the Entity GetEntityToken method.
Body
Sets JSON objects on the requested entity profile. May include a version number to be used to perform optimistic concurrency operations during update. If the current version differs from the version in the request the request will be ignored. If no version is set on the request then the value will always be updated if the values differ. Using the version value does not guarantee a write though, ConcurrentEditError may still occur if multiple clients are attempting to update the same profile.
Sets JSON objects on the requested entity profile. May include a version number to be used to perform optimistic concurrency operations during update. If the current version differs from the version in the request the request will be ignored. If no version is set on the request then the value will always be updated if the values differ. Using the version value does not guarantee a write though, ConcurrentEditError may still occur if multiple clients are attempting to update the same profile.
The entity to perform this action on.
Show child attributes
Show child attributes
Collection of objects to set on the profile.
Show child attributes
Show child attributes
The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
Optional field used for concurrency control. By specifying the previously returned ProfileVersion value from the GetObjects API or other APIs, you can ensure that the object update is performed only if the profile has not been updated since you last loaded that version. If the profile for the same entity has been updated, the operation will fail with an EntityProfileVersionMismatch error. The conflicting update can be caused by any operation that modifies the entity profile, including SetObjects, FinalizeFileUploads, and UpdateStatistics.
Was this page helpful?
curl --request POST \
--url https://{titleId}.playfabapi.com/Object/SetObjects \
--header 'Content-Type: application/json' \
--header 'X-EntityToken: <api-key>' \
--data '
{
"ExpectedProfileVersion": 5,
"Objects": [
{
"ObjectName": "SaveSate",
"DataObject": {
"PlayerDetails": {
"LastMissionSuccess": "2017-06-15T11:05:19Z",
"LastMissionFailure": "2017-06-12T11:05:19Z",
"MapPosition": [
22,
37.78
],
"IsPaidUpgrade": true
},
"GameSettings": {
"Screen": "FriendsList",
"Favorites": [
"Place 1",
"Place 2"
]
}
},
"SimpleStatements": {
"Read": [
{
"Friend": true
}
],
"Write": [
"Self"
]
}
}
],
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
'import requests
url = "https://{titleId}.playfabapi.com/Object/SetObjects"
payload = {
"ExpectedProfileVersion": 5,
"Objects": [
{
"ObjectName": "SaveSate",
"DataObject": {
"PlayerDetails": {
"LastMissionSuccess": "2017-06-15T11:05:19Z",
"LastMissionFailure": "2017-06-12T11:05:19Z",
"MapPosition": [22, 37.78],
"IsPaidUpgrade": True
},
"GameSettings": {
"Screen": "FriendsList",
"Favorites": ["Place 1", "Place 2"]
}
},
"SimpleStatements": {
"Read": [{ "Friend": True }],
"Write": ["Self"]
}
}
],
"Entity": {
"Id": "A8140AB9109712B",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
headers = {
"X-EntityToken": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-EntityToken': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ExpectedProfileVersion: 5,
Objects: [
{
ObjectName: 'SaveSate',
DataObject: {
PlayerDetails: {
LastMissionSuccess: '2017-06-15T11:05:19Z',
LastMissionFailure: '2017-06-12T11:05:19Z',
MapPosition: [22, 37.78],
IsPaidUpgrade: true
},
GameSettings: {Screen: 'FriendsList', Favorites: ['Place 1', 'Place 2']}
},
SimpleStatements: {Read: [{Friend: true}], Write: ['Self']}
}
],
Entity: {
Id: 'A8140AB9109712B',
Type: 'title_player_account',
TypeString: 'title_player_account'
}
})
};
fetch('https://{titleId}.playfabapi.com/Object/SetObjects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{titleId}.playfabapi.com/Object/SetObjects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ExpectedProfileVersion' => 5,
'Objects' => [
[
'ObjectName' => 'SaveSate',
'DataObject' => [
'PlayerDetails' => [
'LastMissionSuccess' => '2017-06-15T11:05:19Z',
'LastMissionFailure' => '2017-06-12T11:05:19Z',
'MapPosition' => [
22,
37.78
],
'IsPaidUpgrade' => true
],
'GameSettings' => [
'Screen' => 'FriendsList',
'Favorites' => [
'Place 1',
'Place 2'
]
]
],
'SimpleStatements' => [
'Read' => [
[
'Friend' => true
]
],
'Write' => [
'Self'
]
]
]
],
'Entity' => [
'Id' => 'A8140AB9109712B',
'Type' => 'title_player_account',
'TypeString' => 'title_player_account'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-EntityToken: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{titleId}.playfabapi.com/Object/SetObjects"
payload := strings.NewReader("{\n \"ExpectedProfileVersion\": 5,\n \"Objects\": [\n {\n \"ObjectName\": \"SaveSate\",\n \"DataObject\": {\n \"PlayerDetails\": {\n \"LastMissionSuccess\": \"2017-06-15T11:05:19Z\",\n \"LastMissionFailure\": \"2017-06-12T11:05:19Z\",\n \"MapPosition\": [\n 22,\n 37.78\n ],\n \"IsPaidUpgrade\": true\n },\n \"GameSettings\": {\n \"Screen\": \"FriendsList\",\n \"Favorites\": [\n \"Place 1\",\n \"Place 2\"\n ]\n }\n },\n \"SimpleStatements\": {\n \"Read\": [\n {\n \"Friend\": true\n }\n ],\n \"Write\": [\n \"Self\"\n ]\n }\n }\n ],\n \"Entity\": {\n \"Id\": \"A8140AB9109712B\",\n \"Type\": \"title_player_account\",\n \"TypeString\": \"title_player_account\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-EntityToken", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{titleId}.playfabapi.com/Object/SetObjects")
.header("X-EntityToken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ExpectedProfileVersion\": 5,\n \"Objects\": [\n {\n \"ObjectName\": \"SaveSate\",\n \"DataObject\": {\n \"PlayerDetails\": {\n \"LastMissionSuccess\": \"2017-06-15T11:05:19Z\",\n \"LastMissionFailure\": \"2017-06-12T11:05:19Z\",\n \"MapPosition\": [\n 22,\n 37.78\n ],\n \"IsPaidUpgrade\": true\n },\n \"GameSettings\": {\n \"Screen\": \"FriendsList\",\n \"Favorites\": [\n \"Place 1\",\n \"Place 2\"\n ]\n }\n },\n \"SimpleStatements\": {\n \"Read\": [\n {\n \"Friend\": true\n }\n ],\n \"Write\": [\n \"Self\"\n ]\n }\n }\n ],\n \"Entity\": {\n \"Id\": \"A8140AB9109712B\",\n \"Type\": \"title_player_account\",\n \"TypeString\": \"title_player_account\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Object/SetObjects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-EntityToken"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ExpectedProfileVersion\": 5,\n \"Objects\": [\n {\n \"ObjectName\": \"SaveSate\",\n \"DataObject\": {\n \"PlayerDetails\": {\n \"LastMissionSuccess\": \"2017-06-15T11:05:19Z\",\n \"LastMissionFailure\": \"2017-06-12T11:05:19Z\",\n \"MapPosition\": [\n 22,\n 37.78\n ],\n \"IsPaidUpgrade\": true\n },\n \"GameSettings\": {\n \"Screen\": \"FriendsList\",\n \"Favorites\": [\n \"Place 1\",\n \"Place 2\"\n ]\n }\n },\n \"SimpleStatements\": {\n \"Read\": [\n {\n \"Friend\": true\n }\n ],\n \"Write\": [\n \"Self\"\n ]\n }\n }\n ],\n \"Entity\": {\n \"Id\": \"A8140AB9109712B\",\n \"Type\": \"title_player_account\",\n \"TypeString\": \"title_player_account\"\n }\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {
"SetResults": [
{}
],
"ProfileVersion": 5
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}