Skip to content

Site administration API ​

GET /api/v1/site is public and returns siteName, accentColor, hasLogo, demoEnabled, and cliDownloadUrl (the rdesk CLI download link, or null). GET /site/logo returns the current PNG, JPEG, or WebP logo with a five-minute public cache header, or 404 when absent. Neither route discloses access rules or credentials.

All /api/v1/admin routes require a signed-in instance owner. An organization owner is not automatically an instance owner. These routes do not accept API tokens.

Method and path suffix under /api/v1/adminSuccessPurpose
GET /site200 JSONEffective settings, locks, allowed users, and read-only URLs
PATCH /site200 JSONUpdate optional site settings
PUT /site/logo200 JSONUpload raw image bytes; returns { "hasLogo": true }
DELETE /site/logo204Remove logo
POST /allowed-users201 JSONAdd { "login": "github-name" }
DELETE /allowed-users/:login204Remove a runtime allowed login
GET /storage200 JSONStorage type and redacted configuration
POST /storage/test200 JSONTest an S3 configuration; returns { "ok": true }
PUT /storage200 JSONSave S3 configuration
DELETE /storage200 JSONClear saved storage configuration
GET /mail200 JSONMail transport and redacted configuration
POST /mail/test200 JSONTest SMTP settings; returns { "ok": true }
PUT /mail200 JSONSave SMTP settings
DELETE /mail200 JSONClear saved mail configuration
GET /owners200 JSON{ "items": [...] } of instance owners
POST /owners201 JSONGrant ownership by { "githubLogin": "name" }
DELETE /owners/:userId204Revoke ownership

PATCH /site accepts any subset of branding (siteName, accentColor), public-page (landingEnabled, rootPath, footerLinks, showTesterSignInLink, cliDownloadUrl), access (allowedOrgs, orgCreation), and limit (maxUploadMb, statsRetentionDays, retainReleasesPerChannel, maxTestersPerOrg) fields. See the response's locked mapping for settings pinned by environment variables. values contains resolved settings, while readOnly contains baseUrl and trustedOrigins.

The logo body must be a nonempty PNG, JPEG, or WebP image of at most 512 KiB. Send bytes directly, not multipart form data.

S3 input requires bucket, accessKeyId, and optionally endpoint, region and secretAccessKey. SMTP input requires host, from, and optionally port, secure, user, and password. Omit an existing secret to retain it. Responses use hasSecret or hasPassword; they never return the secret. Saving credentials requires RD_MASTER_KEY. An environment-pinned storage or mail transport takes precedence over saved settings. Use the corresponding /test route to validate credentials before saving.

For organization mail status and templates, see Email.