Update an organization OAuth client
curl --request PATCH \
--url https://api.photon.codes/v1/organizations/{organizationId}/oauth/clients/{clientId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'if-match: <if-match>' \
--data '
{
"description": "<string>",
"name": "<string>",
"redirectUris": [
{
"default": true,
"uri": "<string>"
}
],
"scopes": [
"<string>"
]
}
'import requests
url = "https://api.photon.codes/v1/organizations/{organizationId}/oauth/clients/{clientId}"
payload = {
"description": "<string>",
"name": "<string>",
"redirectUris": [
{
"default": True,
"uri": "<string>"
}
],
"scopes": ["<string>"]
}
headers = {
"if-match": "<if-match>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'if-match': '<if-match>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
description: '<string>',
name: '<string>',
redirectUris: [{default: true, uri: '<string>'}],
scopes: ['<string>']
})
};
fetch('https://api.photon.codes/v1/organizations/{organizationId}/oauth/clients/{clientId}', 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}/oauth/clients/{clientId}",
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([
'description' => '<string>',
'name' => '<string>',
'redirectUris' => [
[
'default' => true,
'uri' => '<string>'
]
],
'scopes' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"if-match: <if-match>"
],
]);
$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}/oauth/clients/{clientId}"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"redirectUris\": [\n {\n \"default\": true,\n \"uri\": \"<string>\"\n }\n ],\n \"scopes\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("if-match", "<if-match>")
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}/oauth/clients/{clientId}")
.header("if-match", "<if-match>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"redirectUris\": [\n {\n \"default\": true,\n \"uri\": \"<string>\"\n }\n ],\n \"scopes\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/organizations/{organizationId}/oauth/clients/{clientId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["if-match"] = '<if-match>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"redirectUris\": [\n {\n \"default\": true,\n \"uri\": \"<string>\"\n }\n ],\n \"scopes\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"clientId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"name": "<string>",
"redirectUris": [
{
"default": true,
"uri": "<string>"
}
],
"scopes": [
"<string>"
],
"updatedAt": "2023-11-07T05:31:56Z"
}{
"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": "OAUTH_CLIENT_NOT_FOUND",
"status": 404,
"title": "OAuth Client Not Found",
"type": "https://photon.codes/docs/problems/oauth-client-not-found"
}{
"code": "ORGANIZATION_UNAVAILABLE",
"status": 409,
"title": "Organization Unavailable",
"type": "https://photon.codes/docs/problems/organization-unavailable"
}{
"code": "OAUTH_CLIENT_PRECONDITION_FAILED",
"status": 412,
"title": "OAuth Client Precondition Failed",
"type": "https://photon.codes/docs/problems/oauth-client-precondition-failed"
}{
"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"
}Organization OAuth
Update an organization OAuth client
Requires If-Match from the latest read. Stale versions return 412. A failed response may follow an applied provider update; reread before retrying. Version checking is not provider atomic CAS.
PATCH
/
v1
/
organizations
/
{organizationId}
/
oauth
/
clients
/
{clientId}
Update an organization OAuth client
curl --request PATCH \
--url https://api.photon.codes/v1/organizations/{organizationId}/oauth/clients/{clientId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'if-match: <if-match>' \
--data '
{
"description": "<string>",
"name": "<string>",
"redirectUris": [
{
"default": true,
"uri": "<string>"
}
],
"scopes": [
"<string>"
]
}
'import requests
url = "https://api.photon.codes/v1/organizations/{organizationId}/oauth/clients/{clientId}"
payload = {
"description": "<string>",
"name": "<string>",
"redirectUris": [
{
"default": True,
"uri": "<string>"
}
],
"scopes": ["<string>"]
}
headers = {
"if-match": "<if-match>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'if-match': '<if-match>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
description: '<string>',
name: '<string>',
redirectUris: [{default: true, uri: '<string>'}],
scopes: ['<string>']
})
};
fetch('https://api.photon.codes/v1/organizations/{organizationId}/oauth/clients/{clientId}', 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}/oauth/clients/{clientId}",
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([
'description' => '<string>',
'name' => '<string>',
'redirectUris' => [
[
'default' => true,
'uri' => '<string>'
]
],
'scopes' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"if-match: <if-match>"
],
]);
$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}/oauth/clients/{clientId}"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"redirectUris\": [\n {\n \"default\": true,\n \"uri\": \"<string>\"\n }\n ],\n \"scopes\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("if-match", "<if-match>")
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}/oauth/clients/{clientId}")
.header("if-match", "<if-match>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"redirectUris\": [\n {\n \"default\": true,\n \"uri\": \"<string>\"\n }\n ],\n \"scopes\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/organizations/{organizationId}/oauth/clients/{clientId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["if-match"] = '<if-match>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"redirectUris\": [\n {\n \"default\": true,\n \"uri\": \"<string>\"\n }\n ],\n \"scopes\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"clientId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"name": "<string>",
"redirectUris": [
{
"default": true,
"uri": "<string>"
}
],
"scopes": [
"<string>"
],
"updatedAt": "2023-11-07T05:31:56Z"
}{
"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": "OAUTH_CLIENT_NOT_FOUND",
"status": 404,
"title": "OAuth Client Not Found",
"type": "https://photon.codes/docs/problems/oauth-client-not-found"
}{
"code": "ORGANIZATION_UNAVAILABLE",
"status": 409,
"title": "Organization Unavailable",
"type": "https://photon.codes/docs/problems/organization-unavailable"
}{
"code": "OAUTH_CLIENT_PRECONDITION_FAILED",
"status": 412,
"title": "OAuth Client Precondition Failed",
"type": "https://photon.codes/docs/problems/oauth-client-precondition-failed"
}{
"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
Pattern:
^"[A-Za-z0-9_-]{43}"$Path Parameters
Maximum string length:
128Pattern:
^client_[A-Za-z0-9]+$Body
application/json
Response
Updated organization OAuth client.
Maximum string length:
128Pattern:
^client_[A-Za-z0-9]+$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))$Show child attributes
Show child attributes
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))$Was this page helpful?
⌘I