Mettre à jour les statistiques
Update statistics on an entity profile. Depending on the statistic definition, this may result in entity being ranked on various leaderboards.
Allowed entity token types: title, title_player_account, game_server
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| APINotEnabledForGameClientAccess | 1082 |
| EntityIsNotAMember | 1615 |
| EntityTypeMismatchWithStatDefinition | 1582 |
| InvalidEntityType | 1373 |
| InvalidEntityTypeForAggregation | 23006 |
| InvalidExternalEntityId | 1594 |
| InvalidStatisticScore | 1563 |
| MetadataLengthExceeded | 23014 |
| NotAuthorized | 1089 |
| StatisticColumnLengthMismatch | 1593 |
| StatisticNotFound | 1195 |
| StatisticUpdateNotAllowedWhileLinked | 23010 |
| TransactionAlreadyApplied | 1596 |
| UpdatingStatisticsUsingTransactionIdNotAvailableForFreeTier | 1595 |
curl --request POST \
--url https://{titleId}.playfabapi.com/Statistic/UpdateStatistics \
--header 'Content-Type: application/json' \
--header 'X-EntityToken: <api-key>' \
--data '
{
"Statistics": [
{
"Name": "RoundsWon",
"Metadata": "BestRun:34.13,Car:13452",
"Scores": [
"100",
"200"
]
},
{
"Name": "FastestTimesByMap",
"Metadata": "Car:13452",
"Scores": [
"200",
"300"
]
},
{
"Name": "TotalCarTime",
"Scores": [
"300",
"400"
]
}
],
"Entity": {
"Id": "A197412JDA",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
'import requests
url = "https://{titleId}.playfabapi.com/Statistic/UpdateStatistics"
payload = {
"Statistics": [
{
"Name": "RoundsWon",
"Metadata": "BestRun:34.13,Car:13452",
"Scores": ["100", "200"]
},
{
"Name": "FastestTimesByMap",
"Metadata": "Car:13452",
"Scores": ["200", "300"]
},
{
"Name": "TotalCarTime",
"Scores": ["300", "400"]
}
],
"Entity": {
"Id": "A197412JDA",
"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({
Statistics: [
{Name: 'RoundsWon', Metadata: 'BestRun:34.13,Car:13452', Scores: ['100', '200']},
{Name: 'FastestTimesByMap', Metadata: 'Car:13452', Scores: ['200', '300']},
{Name: 'TotalCarTime', Scores: ['300', '400']}
],
Entity: {
Id: 'A197412JDA',
Type: 'title_player_account',
TypeString: 'title_player_account'
}
})
};
fetch('https://{titleId}.playfabapi.com/Statistic/UpdateStatistics', 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/Statistic/UpdateStatistics",
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([
'Statistics' => [
[
'Name' => 'RoundsWon',
'Metadata' => 'BestRun:34.13,Car:13452',
'Scores' => [
'100',
'200'
]
],
[
'Name' => 'FastestTimesByMap',
'Metadata' => 'Car:13452',
'Scores' => [
'200',
'300'
]
],
[
'Name' => 'TotalCarTime',
'Scores' => [
'300',
'400'
]
]
],
'Entity' => [
'Id' => 'A197412JDA',
'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/Statistic/UpdateStatistics"
payload := strings.NewReader("{\n \"Statistics\": [\n {\n \"Name\": \"RoundsWon\",\n \"Metadata\": \"BestRun:34.13,Car:13452\",\n \"Scores\": [\n \"100\",\n \"200\"\n ]\n },\n {\n \"Name\": \"FastestTimesByMap\",\n \"Metadata\": \"Car:13452\",\n \"Scores\": [\n \"200\",\n \"300\"\n ]\n },\n {\n \"Name\": \"TotalCarTime\",\n \"Scores\": [\n \"300\",\n \"400\"\n ]\n }\n ],\n \"Entity\": {\n \"Id\": \"A197412JDA\",\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/Statistic/UpdateStatistics")
.header("X-EntityToken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Statistics\": [\n {\n \"Name\": \"RoundsWon\",\n \"Metadata\": \"BestRun:34.13,Car:13452\",\n \"Scores\": [\n \"100\",\n \"200\"\n ]\n },\n {\n \"Name\": \"FastestTimesByMap\",\n \"Metadata\": \"Car:13452\",\n \"Scores\": [\n \"200\",\n \"300\"\n ]\n },\n {\n \"Name\": \"TotalCarTime\",\n \"Scores\": [\n \"300\",\n \"400\"\n ]\n }\n ],\n \"Entity\": {\n \"Id\": \"A197412JDA\",\n \"Type\": \"title_player_account\",\n \"TypeString\": \"title_player_account\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Statistic/UpdateStatistics")
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 \"Statistics\": [\n {\n \"Name\": \"RoundsWon\",\n \"Metadata\": \"BestRun:34.13,Car:13452\",\n \"Scores\": [\n \"100\",\n \"200\"\n ]\n },\n {\n \"Name\": \"FastestTimesByMap\",\n \"Metadata\": \"Car:13452\",\n \"Scores\": [\n \"200\",\n \"300\"\n ]\n },\n {\n \"Name\": \"TotalCarTime\",\n \"Scores\": [\n \"300\",\n \"400\"\n ]\n }\n ],\n \"Entity\": {\n \"Id\": \"A197412JDA\",\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": {
"ProfileVersion": 56,
"Statistics": {
"SpeedRuns": {
"Name": "SpeedRuns",
"Value": 89
}
},
"Entity": {
"Id": "184131840178",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}Autorisations
This API requires an Entity Session Token, available from the Entity GetEntityToken method.
Corps
Collection of statistics to update, maximum 50.
Show child attributes
Show child attributes
The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
The optional entity to perform this action on. Defaults to the currently logged in entity.
Show child attributes
Show child attributes
Optional transactionId of this update which can be used to ensure idempotence.
Réponse
The Http status code. If X-ReportErrorAsSuccess header is set to true, this will report the actual http error code.
The Http status code as a string.
Show child attributes
Show child attributes
{
"ProfileVersion": 56,
"Statistics": {
"SpeedRuns": { "Name": "SpeedRuns", "Value": 89 }
},
"Entity": {
"Id": "184131840178",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
Sujets connexes
Mettre à jour les statistiques du personnageMettre à jour les statistiques du joueurStatistiques basées sur les événements et statistiques gérées par le titreStatistiques et classements basés sur les événementsPremier aperçu des statistiques basées sur les événementsCette page vous a-t-elle été utile ?
curl --request POST \
--url https://{titleId}.playfabapi.com/Statistic/UpdateStatistics \
--header 'Content-Type: application/json' \
--header 'X-EntityToken: <api-key>' \
--data '
{
"Statistics": [
{
"Name": "RoundsWon",
"Metadata": "BestRun:34.13,Car:13452",
"Scores": [
"100",
"200"
]
},
{
"Name": "FastestTimesByMap",
"Metadata": "Car:13452",
"Scores": [
"200",
"300"
]
},
{
"Name": "TotalCarTime",
"Scores": [
"300",
"400"
]
}
],
"Entity": {
"Id": "A197412JDA",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
'import requests
url = "https://{titleId}.playfabapi.com/Statistic/UpdateStatistics"
payload = {
"Statistics": [
{
"Name": "RoundsWon",
"Metadata": "BestRun:34.13,Car:13452",
"Scores": ["100", "200"]
},
{
"Name": "FastestTimesByMap",
"Metadata": "Car:13452",
"Scores": ["200", "300"]
},
{
"Name": "TotalCarTime",
"Scores": ["300", "400"]
}
],
"Entity": {
"Id": "A197412JDA",
"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({
Statistics: [
{Name: 'RoundsWon', Metadata: 'BestRun:34.13,Car:13452', Scores: ['100', '200']},
{Name: 'FastestTimesByMap', Metadata: 'Car:13452', Scores: ['200', '300']},
{Name: 'TotalCarTime', Scores: ['300', '400']}
],
Entity: {
Id: 'A197412JDA',
Type: 'title_player_account',
TypeString: 'title_player_account'
}
})
};
fetch('https://{titleId}.playfabapi.com/Statistic/UpdateStatistics', 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/Statistic/UpdateStatistics",
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([
'Statistics' => [
[
'Name' => 'RoundsWon',
'Metadata' => 'BestRun:34.13,Car:13452',
'Scores' => [
'100',
'200'
]
],
[
'Name' => 'FastestTimesByMap',
'Metadata' => 'Car:13452',
'Scores' => [
'200',
'300'
]
],
[
'Name' => 'TotalCarTime',
'Scores' => [
'300',
'400'
]
]
],
'Entity' => [
'Id' => 'A197412JDA',
'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/Statistic/UpdateStatistics"
payload := strings.NewReader("{\n \"Statistics\": [\n {\n \"Name\": \"RoundsWon\",\n \"Metadata\": \"BestRun:34.13,Car:13452\",\n \"Scores\": [\n \"100\",\n \"200\"\n ]\n },\n {\n \"Name\": \"FastestTimesByMap\",\n \"Metadata\": \"Car:13452\",\n \"Scores\": [\n \"200\",\n \"300\"\n ]\n },\n {\n \"Name\": \"TotalCarTime\",\n \"Scores\": [\n \"300\",\n \"400\"\n ]\n }\n ],\n \"Entity\": {\n \"Id\": \"A197412JDA\",\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/Statistic/UpdateStatistics")
.header("X-EntityToken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Statistics\": [\n {\n \"Name\": \"RoundsWon\",\n \"Metadata\": \"BestRun:34.13,Car:13452\",\n \"Scores\": [\n \"100\",\n \"200\"\n ]\n },\n {\n \"Name\": \"FastestTimesByMap\",\n \"Metadata\": \"Car:13452\",\n \"Scores\": [\n \"200\",\n \"300\"\n ]\n },\n {\n \"Name\": \"TotalCarTime\",\n \"Scores\": [\n \"300\",\n \"400\"\n ]\n }\n ],\n \"Entity\": {\n \"Id\": \"A197412JDA\",\n \"Type\": \"title_player_account\",\n \"TypeString\": \"title_player_account\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Statistic/UpdateStatistics")
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 \"Statistics\": [\n {\n \"Name\": \"RoundsWon\",\n \"Metadata\": \"BestRun:34.13,Car:13452\",\n \"Scores\": [\n \"100\",\n \"200\"\n ]\n },\n {\n \"Name\": \"FastestTimesByMap\",\n \"Metadata\": \"Car:13452\",\n \"Scores\": [\n \"200\",\n \"300\"\n ]\n },\n {\n \"Name\": \"TotalCarTime\",\n \"Scores\": [\n \"300\",\n \"400\"\n ]\n }\n ],\n \"Entity\": {\n \"Id\": \"A197412JDA\",\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": {
"ProfileVersion": 56,
"Statistics": {
"SpeedRuns": {
"Name": "SpeedRuns",
"Value": 89
}
},
"Entity": {
"Id": "184131840178",
"Type": "title_player_account",
"TypeString": "title_player_account"
}
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}