Portal — Organization
Organization endpoints allow you to retrieve and update your organization's profile, regional configuration, and settings.
All portal endpoints require a JWT Bearer token. See Authentication for how to obtain one.
OrganizationResponse schema
All organization endpoints return an OrganizationResponse object:
| Field | Type | Description |
|---|---|---|
id | uuid | Organization identifier |
name | string | Display name |
slug | string | URL-safe identifier |
schemaName | string | Internal database schema name |
contactEmail | string (nullable) | Billing/contact email |
defaultRegion | string (nullable) | Default Object Storage region for uploads |
allowedRegions | string[] | Permitted Object Storage regions |
planTier | string | Current plan tier |
monthlyDocLimit | integer | Monthly normalization quota |
isActive | boolean | Whether the organization is active |
createdAt | datetime | Creation timestamp |
Available regions: ca-central-1, us-east-2, eu-central-1
GET /api/portal/organization
Retrieve the details of your organization.
Request
GET https://api.pdfcanon.com/api/portal/organization
Authorization: Bearer <access_token>
Response (200 OK)
Returns an OrganizationResponse object.
Example
- cURL
- Node.js
- Python
curl https://api.pdfcanon.com/api/portal/organization \
-H "Authorization: Bearer eyJ..."
const response = await fetch(
"https://api.pdfcanon.com/api/portal/organization",
{
headers: { Authorization: `Bearer ${accessToken}` },
},
);
const org = await response.json();
console.log(org.name, org.defaultRegion);
import httpx
resp = httpx.get(
"https://api.pdfcanon.com/api/portal/organization",
headers={"Authorization": f"Bearer {access_token}"},
)
org = resp.raise_for_status().json()
print(org["name"], org["defaultRegion"])
PUT /api/portal/organization
Update the organization's display name or slug.
Request
PUT https://api.pdfcanon.com/api/portal/organization
Authorization: Bearer <access_token>
Content-Type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | New display name |
slug | string | ✅ | New URL-safe slug |
Response (200 OK)
Returns the updated OrganizationResponse object.
Example
- cURL
- Node.js
curl -X PUT https://api.pdfcanon.com/api/portal/organization \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d '{"name": "Acme Corporation", "slug": "acme-corp"}'
const response = await fetch(
"https://api.pdfcanon.com/api/portal/organization",
{
method: "PUT",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ name: "Acme Corporation", slug: "acme-corp" }),
},
);
const org = await response.json();
PUT /api/portal/organization/settings
Update organization settings including region configuration and billing contact.
Request
PUT https://api.pdfcanon.com/api/portal/organization/settings
Authorization: Bearer <access_token>
Content-Type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
contact_email | string (nullable) | No | Billing/contact email |
default_region | string (nullable) | No | Default Object Storage region. Must be in allowed_regions. |
allowed_regions | string[] | No | Permitted Object Storage regions. Must contain at least one entry. |
Response (200 OK)
Returns the updated OrganizationResponse object.
Example
- cURL
- Node.js
curl -X PUT https://api.pdfcanon.com/api/portal/organization/settings \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d '{
"contact_email": "billing@acme.com",
"default_region": "eu-central-1",
"allowed_regions": ["eu-central-1", "ca-central-1"]
}'
const response = await fetch(
"https://api.pdfcanon.com/api/portal/organization/settings",
{
method: "PUT",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
contact_email: "billing@acme.com",
default_region: "eu-central-1",
allowed_regions: ["eu-central-1", "ca-central-1"],
}),
},
);
const org = await response.json();
POST /api/portal/organization/deactivate
Deactivate your organization. This action is irreversible. All API keys will be revoked and normalization will be disabled.
This action is permanent. Contact support if you deactivate by mistake.
Request
POST https://api.pdfcanon.com/api/portal/organization/deactivate
Authorization: Bearer <access_token>
Response
| Status | Description |
|---|---|
200 | Organization deactivated |
401 | Unauthorized |
Example
- cURL
curl -X POST https://api.pdfcanon.com/api/portal/organization/deactivate \
-H "Authorization: Bearer eyJ..."