Replace developer app configuration
curl --request PATCH \
--url https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"expectedVersion": "<string>",
"name": "<string>",
"publicKeys": [
{
"alg": "RS256",
"e": "<string>",
"kid": "<string>",
"kty": "RSA",
"n": "<string>"
}
],
"redirectUris": [
"<string>"
],
"requestedPermissions": [
"<string>"
],
"description": "<string>",
"websiteUrl": "<string>"
}
'import requests
url = "https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId}"
payload = {
"expectedVersion": "<string>",
"name": "<string>",
"publicKeys": [
{
"alg": "RS256",
"e": "<string>",
"kid": "<string>",
"kty": "RSA",
"n": "<string>"
}
],
"redirectUris": ["<string>"],
"requestedPermissions": ["<string>"],
"description": "<string>",
"websiteUrl": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
expectedVersion: '<string>',
name: '<string>',
publicKeys: [{alg: 'RS256', e: '<string>', kid: '<string>', kty: 'RSA', n: '<string>'}],
redirectUris: ['<string>'],
requestedPermissions: ['<string>'],
description: '<string>',
websiteUrl: '<string>'
})
};
fetch('https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId}', 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.photon.codes/v1/organizations/{organizationId}/apps/{appId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'expectedVersion' => '<string>',
'name' => '<string>',
'publicKeys' => [
[
'alg' => 'RS256',
'e' => '<string>',
'kid' => '<string>',
'kty' => 'RSA',
'n' => '<string>'
]
],
'redirectUris' => [
'<string>'
],
'requestedPermissions' => [
'<string>'
],
'description' => '<string>',
'websiteUrl' => '<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.photon.codes/v1/organizations/{organizationId}/apps/{appId}"
payload := strings.NewReader("{\n \"expectedVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"publicKeys\": [\n {\n \"alg\": \"RS256\",\n \"e\": \"<string>\",\n \"kid\": \"<string>\",\n \"kty\": \"RSA\",\n \"n\": \"<string>\"\n }\n ],\n \"redirectUris\": [\n \"<string>\"\n ],\n \"requestedPermissions\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"websiteUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId}")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"expectedVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"publicKeys\": [\n {\n \"alg\": \"RS256\",\n \"e\": \"<string>\",\n \"kid\": \"<string>\",\n \"kty\": \"RSA\",\n \"n\": \"<string>\"\n }\n ],\n \"redirectUris\": [\n \"<string>\"\n ],\n \"requestedPermissions\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"websiteUrl\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expectedVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"publicKeys\": [\n {\n \"alg\": \"RS256\",\n \"e\": \"<string>\",\n \"kid\": \"<string>\",\n \"kty\": \"RSA\",\n \"n\": \"<string>\"\n }\n ],\n \"redirectUris\": [\n \"<string>\"\n ],\n \"requestedPermissions\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"websiteUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"appId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"createdByAccountId": "<string>",
"description": "<string>",
"developerOrganizationId": "<string>",
"name": "<string>",
"publicKeys": [
{
"alg": "RS256",
"e": "<string>",
"kid": "<string>",
"kty": "RSA",
"n": "<string>"
}
],
"redirectUris": [
"<string>"
],
"requestedPermissions": [
"<string>"
],
"status": "active",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedByAccountId": "<string>",
"version": "<string>",
"websiteUrl": "<string>"
}{
"code": "INVALID_ARGUMENT",
"status": 400,
"title": "Invalid Argument",
"type": "https://photon.codes/docs/problems/invalid-argument"
}{
"code": "NOT_AUTHENTICATED",
"status": 401,
"title": "Not Authenticated",
"type": "https://photon.codes/docs/problems/not-authenticated"
}{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"type": "https://photon.codes/docs/problems/forbidden"
}{
"code": "APP_INSTALLATION_CONFIG_NOT_FOUND",
"status": 404,
"title": "App Installation Configuration Not Found",
"type": "https://photon.codes/docs/problems/app-installation-config-not-found"
}{
"code": "APP_INSTALLATION_CONFIG_VERSION_CONFLICT",
"status": 409,
"title": "App Installation Configuration Version Conflict",
"type": "https://photon.codes/docs/problems/app-installation-config-version-conflict"
}{
"code": "VALIDATION_FAILED",
"issues": [
{
"code": "invalid_type",
"location": "json",
"message": "Expected a string.",
"path": "/name"
}
],
"status": 422,
"title": "Request Validation Failed",
"type": "https://photon.codes/docs/problems/validation-failed"
}{
"code": "INTERNAL_ERROR",
"status": 500,
"title": "Internal Server Error",
"type": "https://photon.codes/docs/problems/internal-error"
}{
"code": "UPSTREAM_FAILURE",
"status": 502,
"title": "Upstream Service Failure",
"type": "https://photon.codes/docs/problems/upstream-failure"
}{
"code": "UPSTREAM_UNAVAILABLE",
"status": 503,
"title": "Upstream Service Unavailable",
"type": "https://photon.codes/docs/problems/upstream-unavailable"
}{
"code": "UPSTREAM_TIMEOUT",
"status": 504,
"title": "Upstream Service Timeout",
"type": "https://photon.codes/docs/problems/upstream-timeout"
}App Installation Configurations
Replace developer app configuration
PATCH
/
v1
/
organizations
/
{organizationId}
/
apps
/
{appId}
Replace developer app configuration
curl --request PATCH \
--url https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"expectedVersion": "<string>",
"name": "<string>",
"publicKeys": [
{
"alg": "RS256",
"e": "<string>",
"kid": "<string>",
"kty": "RSA",
"n": "<string>"
}
],
"redirectUris": [
"<string>"
],
"requestedPermissions": [
"<string>"
],
"description": "<string>",
"websiteUrl": "<string>"
}
'import requests
url = "https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId}"
payload = {
"expectedVersion": "<string>",
"name": "<string>",
"publicKeys": [
{
"alg": "RS256",
"e": "<string>",
"kid": "<string>",
"kty": "RSA",
"n": "<string>"
}
],
"redirectUris": ["<string>"],
"requestedPermissions": ["<string>"],
"description": "<string>",
"websiteUrl": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
expectedVersion: '<string>',
name: '<string>',
publicKeys: [{alg: 'RS256', e: '<string>', kid: '<string>', kty: 'RSA', n: '<string>'}],
redirectUris: ['<string>'],
requestedPermissions: ['<string>'],
description: '<string>',
websiteUrl: '<string>'
})
};
fetch('https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId}', 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.photon.codes/v1/organizations/{organizationId}/apps/{appId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'expectedVersion' => '<string>',
'name' => '<string>',
'publicKeys' => [
[
'alg' => 'RS256',
'e' => '<string>',
'kid' => '<string>',
'kty' => 'RSA',
'n' => '<string>'
]
],
'redirectUris' => [
'<string>'
],
'requestedPermissions' => [
'<string>'
],
'description' => '<string>',
'websiteUrl' => '<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.photon.codes/v1/organizations/{organizationId}/apps/{appId}"
payload := strings.NewReader("{\n \"expectedVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"publicKeys\": [\n {\n \"alg\": \"RS256\",\n \"e\": \"<string>\",\n \"kid\": \"<string>\",\n \"kty\": \"RSA\",\n \"n\": \"<string>\"\n }\n ],\n \"redirectUris\": [\n \"<string>\"\n ],\n \"requestedPermissions\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"websiteUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId}")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"expectedVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"publicKeys\": [\n {\n \"alg\": \"RS256\",\n \"e\": \"<string>\",\n \"kid\": \"<string>\",\n \"kty\": \"RSA\",\n \"n\": \"<string>\"\n }\n ],\n \"redirectUris\": [\n \"<string>\"\n ],\n \"requestedPermissions\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"websiteUrl\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/organizations/{organizationId}/apps/{appId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expectedVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"publicKeys\": [\n {\n \"alg\": \"RS256\",\n \"e\": \"<string>\",\n \"kid\": \"<string>\",\n \"kty\": \"RSA\",\n \"n\": \"<string>\"\n }\n ],\n \"redirectUris\": [\n \"<string>\"\n ],\n \"requestedPermissions\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"websiteUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"appId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"createdByAccountId": "<string>",
"description": "<string>",
"developerOrganizationId": "<string>",
"name": "<string>",
"publicKeys": [
{
"alg": "RS256",
"e": "<string>",
"kid": "<string>",
"kty": "RSA",
"n": "<string>"
}
],
"redirectUris": [
"<string>"
],
"requestedPermissions": [
"<string>"
],
"status": "active",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedByAccountId": "<string>",
"version": "<string>",
"websiteUrl": "<string>"
}{
"code": "INVALID_ARGUMENT",
"status": 400,
"title": "Invalid Argument",
"type": "https://photon.codes/docs/problems/invalid-argument"
}{
"code": "NOT_AUTHENTICATED",
"status": 401,
"title": "Not Authenticated",
"type": "https://photon.codes/docs/problems/not-authenticated"
}{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"type": "https://photon.codes/docs/problems/forbidden"
}{
"code": "APP_INSTALLATION_CONFIG_NOT_FOUND",
"status": 404,
"title": "App Installation Configuration Not Found",
"type": "https://photon.codes/docs/problems/app-installation-config-not-found"
}{
"code": "APP_INSTALLATION_CONFIG_VERSION_CONFLICT",
"status": 409,
"title": "App Installation Configuration Version Conflict",
"type": "https://photon.codes/docs/problems/app-installation-config-version-conflict"
}{
"code": "VALIDATION_FAILED",
"issues": [
{
"code": "invalid_type",
"location": "json",
"message": "Expected a string.",
"path": "/name"
}
],
"status": 422,
"title": "Request Validation Failed",
"type": "https://photon.codes/docs/problems/validation-failed"
}{
"code": "INTERNAL_ERROR",
"status": 500,
"title": "Internal Server Error",
"type": "https://photon.codes/docs/problems/internal-error"
}{
"code": "UPSTREAM_FAILURE",
"status": 502,
"title": "Upstream Service Failure",
"type": "https://photon.codes/docs/problems/upstream-failure"
}{
"code": "UPSTREAM_UNAVAILABLE",
"status": 503,
"title": "Upstream Service Unavailable",
"type": "https://photon.codes/docs/problems/upstream-unavailable"
}{
"code": "UPSTREAM_TIMEOUT",
"status": 504,
"title": "Upstream Service Timeout",
"type": "https://photon.codes/docs/problems/upstream-timeout"
}Authorizations
Account Service Key, prefixed with pho_ask_, sent as Authorization: Bearer <key>. Acts on behalf of its owning account, subject to the permissions and credential restrictions of each operation. Account access tokens and OAuth grants also use the Bearer header. In organizations that require SSO, Account Service Keys are not accepted for managing the organization's SSO settings, deleting the organization, or checking whether it can be deleted.
Headers
Identifies one logical mutation across retries.
Required string length:
1 - 255Pattern:
^[\x21-\x7e]{1,255}$Body
application/json
Pattern:
^[1-9][0-9]{0,18}$Required string length:
1 - 256Required array length:
1 - 16 elements- Option 1
- Option 2
Show child attributes
Show child attributes
Required array length:
1 - 32 elementsMaximum string length:
4096Minimum array length:
1Maximum string length:
500Maximum string length:
2048Response
Replaced public app configuration; replay returns the original result.
Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Maximum string length:
500Required string length:
1 - 256Required array length:
1 - 16 elements- Option 1
- Option 2
Show child attributes
Show child attributes
Required array length:
1 - 32 elementsMaximum string length:
4096Minimum array length:
1Available options:
active, disabled, retired Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Pattern:
^[1-9][0-9]{0,18}$Maximum string length:
2048Was this page helpful?
⌘I