Begin a Build from an exported game or from project source
Requires builds.write for the Game.
curl --request POST \
--url https://api.summer.games/v1/management/games/{gameId}/build-publications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"build": {
"executionMode": "standalone",
"version": "<string>",
"targetPlatforms": [],
"client": {
"entryPoint": "<string>"
},
"gameId": "<string>",
"permissions": []
},
"source": {
"kind": "exported-game",
"archiveSha256": "<string>",
"sizeBytes": 21474836480,
"uploadId": "<string>"
},
"clientVersion": "<string>"
}
'import requests
url = "https://api.summer.games/v1/management/games/{gameId}/build-publications"
payload = {
"build": {
"executionMode": "standalone",
"version": "<string>",
"targetPlatforms": [],
"client": { "entryPoint": "<string>" },
"gameId": "<string>",
"permissions": []
},
"source": {
"kind": "exported-game",
"archiveSha256": "<string>",
"sizeBytes": 21474836480,
"uploadId": "<string>"
},
"clientVersion": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
build: {
executionMode: 'standalone',
version: '<string>',
targetPlatforms: [],
client: {entryPoint: '<string>'},
gameId: '<string>',
permissions: []
},
source: {
kind: 'exported-game',
archiveSha256: '<string>',
sizeBytes: 21474836480,
uploadId: '<string>'
},
clientVersion: '<string>'
})
};
fetch('https://api.summer.games/v1/management/games/{gameId}/build-publications', 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://api.summer.games/v1/management/games/{gameId}/build-publications",
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([
'build' => [
'executionMode' => 'standalone',
'version' => '<string>',
'targetPlatforms' => [
],
'client' => [
'entryPoint' => '<string>'
],
'gameId' => '<string>',
'permissions' => [
]
],
'source' => [
'kind' => 'exported-game',
'archiveSha256' => '<string>',
'sizeBytes' => 21474836480,
'uploadId' => '<string>'
],
'clientVersion' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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://api.summer.games/v1/management/games/{gameId}/build-publications"
payload := strings.NewReader("{\n \"build\": {\n \"executionMode\": \"standalone\",\n \"version\": \"<string>\",\n \"targetPlatforms\": [],\n \"client\": {\n \"entryPoint\": \"<string>\"\n },\n \"gameId\": \"<string>\",\n \"permissions\": []\n },\n \"source\": {\n \"kind\": \"exported-game\",\n \"archiveSha256\": \"<string>\",\n \"sizeBytes\": 21474836480,\n \"uploadId\": \"<string>\"\n },\n \"clientVersion\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
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://api.summer.games/v1/management/games/{gameId}/build-publications")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"build\": {\n \"executionMode\": \"standalone\",\n \"version\": \"<string>\",\n \"targetPlatforms\": [],\n \"client\": {\n \"entryPoint\": \"<string>\"\n },\n \"gameId\": \"<string>\",\n \"permissions\": []\n },\n \"source\": {\n \"kind\": \"exported-game\",\n \"archiveSha256\": \"<string>\",\n \"sizeBytes\": 21474836480,\n \"uploadId\": \"<string>\"\n },\n \"clientVersion\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.summer.games/v1/management/games/{gameId}/build-publications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"build\": {\n \"executionMode\": \"standalone\",\n \"version\": \"<string>\",\n \"targetPlatforms\": [],\n \"client\": {\n \"entryPoint\": \"<string>\"\n },\n \"gameId\": \"<string>\",\n \"permissions\": []\n },\n \"source\": {\n \"kind\": \"exported-game\",\n \"archiveSha256\": \"<string>\",\n \"sizeBytes\": 21474836480,\n \"uploadId\": \"<string>\"\n },\n \"clientVersion\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"operationId": "<string>",
"publicationId": "<string>",
"buildId": "<string>",
"sourceId": "<string>",
"state": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"retryable": true
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"retryable": true
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"retryable": true
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"retryable": true
}
}Authorizations
Your Summer account token. An agent gets it by signing in with OAuth: summer login --store in the Summer CLI, or the Summer connector in an AI app. Agent tokens can call only the operations on these pages. Publishing needs an approval from the game's owner first.
Headers
1Path Parameters
^game_[A-Za-z0-9_-]{8,123}$Body
- Option 1
- Option 2
- Option 3
A game without a host targets iOS and names its client in build.client. A hosted game uploads a summer-bundle, declares its full server-only summer.build.v2 intent, and names the client scene in exportedClient. Intake verifies both packs, configuration and declarations. The export stamp selects the template set; Platform packages the exported server without rebuilding it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The client pack's version: canonical vMAJOR.MINOR.PATCH with optional positive -rREVISION. A client version names exactly one pack for the Game.
Client scene for a hosted bundle; the hosted Build remains server-only.
Show child attributes
Show child attributes
curl --request POST \
--url https://api.summer.games/v1/management/games/{gameId}/build-publications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"build": {
"executionMode": "standalone",
"version": "<string>",
"targetPlatforms": [],
"client": {
"entryPoint": "<string>"
},
"gameId": "<string>",
"permissions": []
},
"source": {
"kind": "exported-game",
"archiveSha256": "<string>",
"sizeBytes": 21474836480,
"uploadId": "<string>"
},
"clientVersion": "<string>"
}
'import requests
url = "https://api.summer.games/v1/management/games/{gameId}/build-publications"
payload = {
"build": {
"executionMode": "standalone",
"version": "<string>",
"targetPlatforms": [],
"client": { "entryPoint": "<string>" },
"gameId": "<string>",
"permissions": []
},
"source": {
"kind": "exported-game",
"archiveSha256": "<string>",
"sizeBytes": 21474836480,
"uploadId": "<string>"
},
"clientVersion": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
build: {
executionMode: 'standalone',
version: '<string>',
targetPlatforms: [],
client: {entryPoint: '<string>'},
gameId: '<string>',
permissions: []
},
source: {
kind: 'exported-game',
archiveSha256: '<string>',
sizeBytes: 21474836480,
uploadId: '<string>'
},
clientVersion: '<string>'
})
};
fetch('https://api.summer.games/v1/management/games/{gameId}/build-publications', 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://api.summer.games/v1/management/games/{gameId}/build-publications",
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([
'build' => [
'executionMode' => 'standalone',
'version' => '<string>',
'targetPlatforms' => [
],
'client' => [
'entryPoint' => '<string>'
],
'gameId' => '<string>',
'permissions' => [
]
],
'source' => [
'kind' => 'exported-game',
'archiveSha256' => '<string>',
'sizeBytes' => 21474836480,
'uploadId' => '<string>'
],
'clientVersion' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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://api.summer.games/v1/management/games/{gameId}/build-publications"
payload := strings.NewReader("{\n \"build\": {\n \"executionMode\": \"standalone\",\n \"version\": \"<string>\",\n \"targetPlatforms\": [],\n \"client\": {\n \"entryPoint\": \"<string>\"\n },\n \"gameId\": \"<string>\",\n \"permissions\": []\n },\n \"source\": {\n \"kind\": \"exported-game\",\n \"archiveSha256\": \"<string>\",\n \"sizeBytes\": 21474836480,\n \"uploadId\": \"<string>\"\n },\n \"clientVersion\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
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://api.summer.games/v1/management/games/{gameId}/build-publications")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"build\": {\n \"executionMode\": \"standalone\",\n \"version\": \"<string>\",\n \"targetPlatforms\": [],\n \"client\": {\n \"entryPoint\": \"<string>\"\n },\n \"gameId\": \"<string>\",\n \"permissions\": []\n },\n \"source\": {\n \"kind\": \"exported-game\",\n \"archiveSha256\": \"<string>\",\n \"sizeBytes\": 21474836480,\n \"uploadId\": \"<string>\"\n },\n \"clientVersion\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.summer.games/v1/management/games/{gameId}/build-publications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"build\": {\n \"executionMode\": \"standalone\",\n \"version\": \"<string>\",\n \"targetPlatforms\": [],\n \"client\": {\n \"entryPoint\": \"<string>\"\n },\n \"gameId\": \"<string>\",\n \"permissions\": []\n },\n \"source\": {\n \"kind\": \"exported-game\",\n \"archiveSha256\": \"<string>\",\n \"sizeBytes\": 21474836480,\n \"uploadId\": \"<string>\"\n },\n \"clientVersion\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"operationId": "<string>",
"publicationId": "<string>",
"buildId": "<string>",
"sourceId": "<string>",
"state": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"retryable": true
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"retryable": true
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"retryable": true
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"retryable": true
}
}
