---
title: "Is this workspace a design partner?"
method: GET
path: "/design-partner/status/"
tags: ["design-partner"]
---

# Is this workspace a design partner?

`GET /design-partner/status/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/design-partner/status/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

The probe the dashboard uses to decide whether the design partner page exists for this workspace, plus everything that page needs above the fold. Answers 200 with `is_design_partner: false` rather than a 404 so an ordinary session never logs an auth failure for a page it was never offered.

## Response `200`

Successful Response

- DesignPartnerStatusReadSchema: Whether the caller's workspace is a design partner, and its badges. One read for three consumers (the sidebar item, the route guard and the page), so a workspace that is not a partner costs exactly one cheap query per session rather than three.
  - `badges` DesignPartnerBadgeReadSchema[], required: The workspace's badges, newest award first. Empty both for non-partners and for partners nobody has written a badge for yet. The page says so plainly rather than hiding the section.
    - `awarded_at` string, date-time, required: The date shown on the badge.
    - `description` string, required: What this workspace's feedback made possible, in our words.
    - `icon` string, required: Icon token for the frontend's curated set. An unrecognised token falls back to a default rather than breaking the page, so the set can grow without a backend release.
    - `id` string, uuid, required: The badge's ID.
    - `title` string, required: The badge's name.
  - `is_design_partner` boolean, required: Whether the caller's workspace is a design partner.
  - `slack` DesignPartnerSlackReadSchema, required: The workspace's shared Slack channel and its one invitation. Both belong to the organization, so every member of a partner workspace reads the same block: the same channel, the same invitation, whoever sent it. A Slack Connect guest can invite their own colleagues, so the second person through the door is Slack's job rather than ours.
    - `channel_failure_message` string, nullable, required: What to tell the reader when provisioning failed. Null otherwise.
    - `channel_name` string, nullable, required: The channel's name, without the leading hash. Null until it is ready.
    - `channel_state` 'none' | 'provisioning' | 'ready' | 'failed', required: Where the workspace's channel is. 'none' means nobody has sent an invite yet, which is what puts the form on the page. 'provisioning' is the run that creates it, which the page polls. 'failed' carries a sentence.
    - `channel_url` string, nullable, required: A link that opens the channel in the reader's Slack. Null until it is ready.
    - `invite_can_send` boolean, required: Whether to offer the form. False while a run is in flight, while the invitation that went out is still live at Slack, and after a refusal about our own Slack workspace's settings that no retry fixes. Decided here so the page holds no copy of the lifetime and no opinion about which refusals are worth another press.
    - `invite_email` string, nullable, required: The address the invitation went to.
    - `invite_message` string, nullable, required: What to tell the reader when Slack refused, already written for a person rather than a log. Null when nothing was refused.
    - `invite_sent_at` string, date-time, nullable, required: When Slack accepted the invitation.
    - `invite_status` 'none' | 'sent' | 'refused', required: What became of the workspace's invitation.
  - `started_at` string, date-time, nullable, required: Partner since. Null when the workspace is not a design partner.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
