curl --request PATCH \
--url https://app.hookie.ai/admin/api/projects/{project_id}/portals/{portal_id} \
--header 'Content-Type: application/json' \
--cookie hookie_session= \
--data '
{
"name": "<string>",
"event_types": [
"<string>"
],
"branding": {
"logo_url": "<string>",
"primary_color": "<string>"
},
"enabled": true,
"embed_origins": [
"<string>"
]
}
'const options = {
method: 'PATCH',
headers: {cookie: 'hookie_session=', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
event_types: ['<string>'],
branding: {logo_url: '<string>', primary_color: '<string>'},
enabled: true,
embed_origins: ['<string>']
})
};
fetch('https://app.hookie.ai/admin/api/projects/{project_id}/portals/{portal_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.hookie.ai/admin/api/projects/{project_id}/portals/{portal_id}"
payload = {
"name": "<string>",
"event_types": ["<string>"],
"branding": {
"logo_url": "<string>",
"primary_color": "<string>"
},
"enabled": True,
"embed_origins": ["<string>"]
}
headers = {
"cookie": "hookie_session=",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"ok": true
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}Update a customer portal (PATCH, same as PUT)
PATCH is accepted on this path and behaves exactly as PUT does: only the fields sent change, and slug cannot be changed.
curl --request PATCH \
--url https://app.hookie.ai/admin/api/projects/{project_id}/portals/{portal_id} \
--header 'Content-Type: application/json' \
--cookie hookie_session= \
--data '
{
"name": "<string>",
"event_types": [
"<string>"
],
"branding": {
"logo_url": "<string>",
"primary_color": "<string>"
},
"enabled": true,
"embed_origins": [
"<string>"
]
}
'const options = {
method: 'PATCH',
headers: {cookie: 'hookie_session=', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
event_types: ['<string>'],
branding: {logo_url: '<string>', primary_color: '<string>'},
enabled: true,
embed_origins: ['<string>']
})
};
fetch('https://app.hookie.ai/admin/api/projects/{project_id}/portals/{portal_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.hookie.ai/admin/api/projects/{project_id}/portals/{portal_id}"
payload = {
"name": "<string>",
"event_types": ["<string>"],
"branding": {
"logo_url": "<string>",
"primary_color": "<string>"
},
"enabled": True,
"embed_origins": ["<string>"]
}
headers = {
"cookie": "hookie_session=",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"ok": true
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}Authorizations
The console's sealed session cookie, set by WorkOS AuthKit. Mutating requests also require the X-Requested-With CSRF header.
Body
PATCH is accepted on this path and behaves identically. slug cannot be changed. Only the fields sent change; an omitted field keeps its current value.
Trimmed. Omitted or blank leaves the existing name unchanged.
Replaces the exposed datasets when sent; omitted keeps them. An empty list exposes nothing: the portal's customers receive nothing.
What the portal page applies (#198, PORT-12). Only these two keys; anything else is a 400. Omit to keep what is stored; {} clears it.
Show child attributes
Show child attributes
true or false; omitted keeps the current state. A switched-off portal refuses its tokens and delivers nothing to its customers' destinations.
The sites allowed to frame the portal page (#198, PORT-13): its CSP frame-ancestors. Empty (the default) means no site may. Omit to keep what is stored.
10An exact https origin, e.g. https://app.example.com: no path, no wildcard. A trailing slash is removed.
Response
Updated.
true