API reference

Public profile

3 endpoints, served at https://orbitwrite.com/api/v1. Each one lists the credentials it accepts, its parameters and every response it can give.

Read the workspace's public-page settings#

GET/api/v1/public-profile

The page's custom links, channel order and linkable channels (each with the public URL the page links to and whether it is hidden). Any member may read (publicProfile:read).

Authentication

A signed-in session only. The Orbitwrite app calls this; an API key is refused.

Query parameters

organizationIdstringRequired

At least 1 character.

Responses

200PublicProfileSettings

The page's settings

Response attributes
channelOrderstring[]Required

Channel ids in the order they appear on the page. Empty when the workspace hasn't set an explicit order.

channelsPublicProfileChannel[]Required

The connected channels that can appear on the page — those with a public profile URL — in the page's saved order, hidden ones included. Slack, Discord and any channel without a resolvable profile URL are omitted; a custom link covers those.

Child attributes
idstringRequired
platformstringRequired
handlestring | any | nullRequired
displayNamestring | any | nullRequired
urlstringRequired

The public profile URL the page links this channel to.

hiddenbooleanRequired

Whether the workspace has hidden this channel from the page.

400Error

Invalid request

Response attributes
errorstringRequired
issuesany[]
401Error

Not signed in

Response attributes
errorstringRequired
issuesany[]
403Error

Not a member of the organization

Response attributes
errorstringRequired
issuesany[]
GET /api/v1/public-profile
curl -X GET "https://orbitwrite.com/api/v1/public-profile?organizationId=organizationId" \
  -H "Authorization: Bearer $ORBITWRITE_API_KEY"
Response
{
  "links": [
    {
      "id": "string",
      "title": "string",
      "url": "string",
      "icon": {
        "host": "string",
        "url": "string"
      }
    }
  ],
  "channelOrder": [
    "string"
  ],
  "channels": [
    {
      "id": "string",
      "platform": "string",
      "handle": "string",
      "displayName": "string",
      "url": "string",
      "hidden": true
    }
  ]
}

Save the workspace's public-page settings#

PATCH/api/v1/public-profile

Requires publicProfile:update. A partial save — an omitted field is left unchanged, so reordering channels can't wipe the custom links.

Authentication

A signed-in session only. The Orbitwrite app calls this; an API key is refused.

Body application/json

organizationIdstringRequired

At least 1 character.

channelOrderstring[]

Responses

200PublicProfileSettings

The saved settings

Response attributes
channelOrderstring[]Required

Channel ids in the order they appear on the page. Empty when the workspace hasn't set an explicit order.

channelsPublicProfileChannel[]Required

The connected channels that can appear on the page — those with a public profile URL — in the page's saved order, hidden ones included. Slack, Discord and any channel without a resolvable profile URL are omitted; a custom link covers those.

Child attributes
idstringRequired
platformstringRequired
handlestring | any | nullRequired
displayNamestring | any | nullRequired
urlstringRequired

The public profile URL the page links this channel to.

hiddenbooleanRequired

Whether the workspace has hidden this channel from the page.

400Error

Invalid request

Response attributes
errorstringRequired
issuesany[]
401Error

Not signed in

Response attributes
errorstringRequired
issuesany[]
403Error

Not a member of the organization

Response attributes
errorstringRequired
issuesany[]
PATCH /api/v1/public-profile
curl -X PATCH "https://orbitwrite.com/api/v1/public-profile" \
  -H "Authorization: Bearer $ORBITWRITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "organizationId": "string"
}'
Response
{
  "links": [
    {
      "id": "string",
      "title": "string",
      "url": "string",
      "icon": {
        "host": "string",
        "url": "string"
      }
    }
  ],
  "channelOrder": [
    "string"
  ],
  "channels": [
    {
      "id": "string",
      "platform": "string",
      "handle": "string",
      "displayName": "string",
      "url": "string",
      "hidden": true
    }
  ]
}

Show or hide one channel on the public page#

POST/api/v1/public-profile/channels/{accountId}/visibility

Requires publicProfile:update. The flag is stored on the channel row, but showing a channel publicly is a public-profile decision, not a channel-management one.

Authentication

A signed-in session only. The Orbitwrite app calls this; an API key is refused.

Path parameters

accountIdstringRequired

At least 1 character.

Body application/json

hiddenbooleanRequired

Responses

200PublicProfileMutationResult

The mutation was applied

Response attributes
okbooleanRequired
400Error

Invalid request

Response attributes
errorstringRequired
issuesany[]
401Error

Not signed in

Response attributes
errorstringRequired
issuesany[]
403Error

Not a member of the organization

Response attributes
errorstringRequired
issuesany[]
404Error

The resource does not exist

Response attributes
errorstringRequired
issuesany[]
POST /api/v1/public-profile/channels/{accountId}/visibility
curl -X POST "https://orbitwrite.com/api/v1/public-profile/channels/{accountId}/visibility" \
  -H "Authorization: Bearer $ORBITWRITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "hidden": true
}'
Response
{
  "ok": true
}