Oneprofile Design Partner API

Endpoints for the design partner program's customer surface: whether this workspace is a design partner, the badges its feedback has earned, and sending and reading that feedback.

GitHub OpenAPI

Operations 4

GET /design-partner/feedback/ List the workspace's design partner feedback #
POST /design-partner/feedback/ Send design partner feedback #
POST /design-partner/slack-channel/invite/ Send the workspace's shared Slack channel invite #
GET /design-partner/status/ Is this workspace a design partner? #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/getoneprofile-ai:getoneprofile-ai-design-partner-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

getoneprofile-ai-design-partner-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@getoneprofile.ai
    name: Oneprofile Support
  description: REST API reference for Oneprofile, the GTM data layer for your CRM. Manage tables, enrichments, and integrations. Authenticate with an API key to get started.
  termsOfService: https://www.getoneprofile.ai/terms
  title: Reference | Oneprofile Design Partner API
  version: 1.0.42765316646
tags:
- description: 'Endpoints for the design partner program''s customer surface: whether this workspace is a design partner, the badges its feedback has earned, and sending and reading that feedback.'
  name: design-partner
paths:
  /design-partner/feedback/:
    get:
      description: 'Everything this workspace has told us, newest first. The whole organization sees every member''s submissions: the page is addressed to the organization, and a partner should be able to read what a colleague already asked for instead of asking again.'
      operationId: list_design_partner_feedback
      parameters:
      - description: The number of items to return.
        in: query
        name: limit
        required: false
        schema:
          default: 10
          description: The number of items to return.
          maximum: 100
          minimum: 1
          title: Limit
          type: integer
      - in: query
        name: order_by
        required: false
        schema:
          $ref: '#/components/schemas/OrderingParametersForIdCreatedAt'
          default: created_at
          enum:
          - id
          - created_at
          type: string
      - in: query
        name: order_direction
        required: false
        schema:
          default: desc
          enum:
          - asc
          - desc
          title: Order Direction
          type: string
      - description: Set the cursor to the next or previous page. You can get the cursor from the previous page's response.
        in: query
        name: cursor
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Set the cursor to the next or previous page. You can get the cursor from the previous page's response.
          title: Cursor for pagination.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_DesignPartnerFeedbackReadSchema_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: List the workspace's design partner feedback
      tags:
      - design-partner
    post:
      description: 'Record one submission from the caller. Any member of a design partner workspace may submit. Requires a signed-in user rather than an API key: the record is of who said this, and an API key has no person behind it.'
      operationId: submit_design_partner_feedback
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DesignPartnerFeedbackCreateSchema'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DesignPartnerFeedbackReadSchema'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: Send design partner feedback
      tags:
      - design-partner
  /design-partner/slack-channel/invite/:
    post:
      description: 'Send the workspace''s invitation to the address in the body. With no channel yet this starts the run that creates one and sends the invitation from inside it, and answers `provisioning` for the page to poll; with a channel ready the invitation goes out immediately.


        A workspace gets one invitation to its channel, so a second call while the first is still live is a 409 rather than a second email. Nothing here happens on a page load: the address is required, so a call without a body is a 422.


        A refusal Slack itself made, their Slack being on a free plan for instance, is not an error: it comes back in the body with a sentence to show them.'
      operationId: invite_to_design_partner_slack_channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DesignPartnerSlackInviteCreateSchema'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DesignPartnerSlackReadSchema'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found
        '409':
          description: The invitation cannot be sent as things stand.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: Send the workspace's shared Slack channel invite
      tags:
      - design-partner
  /design-partner/status/:
    get:
      description: '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.'
      operationId: get_design_partner_status
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DesignPartnerStatusReadSchema'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
      - APIKeyHeader: []
      - HTTPBearer: []
      summary: Is this workspace a design partner?
      tags:
      - design-partner
components:
  schemas:
    ForbiddenResponse:
      properties:
        detail:
          description: The detail of why the request is forbidden.
          title: Detail
          type: string
      required:
      - detail
      title: ForbiddenResponse
      type: object
    DesignPartnerSlackInviteCreateSchema:
      description: The address a workspace wants its shared Slack channel invitation sent to.
      properties:
        email:
          description: Where Slack sends the invitation. Typed by the caller rather than taken from their account, because the person who should be in the channel is not always the person setting it up.
          format: email
          maxLength: 320
          title: Email
          type: string
      required:
      - email
      title: DesignPartnerSlackInviteCreateSchema
      type: object
    UnprocessableEntityIssue:
      properties:
        input:
          anyOf:
          - type: string
          - type: integer
          - type: number
          - type: boolean
          - items: {}
            type: array
          - additionalProperties: true
            type: object
          description: The user's input that caused the error.
          title: Input
        loc:
          description: The location of the error. Always contains 1 or 2 elements. The first element is the type of location (e.g. 'body', 'query', 'path', 'header'). The second element is the name of the field that caused the error. If the error is not related to a specific field, the second element is not present.
          items:
            type: string
          title: Loc
          type: array
        msg:
          description: The message of the error. The error message to show to the user.
          title: Msg
          type: string
        type:
          description: The type of the error. Useful for frontend code to handle different types of errors.
          title: Type
          type: string
      required:
      - loc
      - msg
      - type
      - input
      title: UnprocessableEntityIssue
      type: object
    NotFoundResponse:
      properties:
        detail:
          description: The detail of why the resource was not found.
          title: Detail
          type: string
      required:
      - detail
      title: NotFoundResponse
      type: object
    DesignPartnerSlackReadSchema:
      description: '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.'
      properties:
        channel_failure_message:
          anyOf:
          - type: string
          - type: 'null'
          description: What to tell the reader when provisioning failed. Null otherwise.
          title: Channel Failure Message
        channel_name:
          anyOf:
          - type: string
          - type: 'null'
          description: The channel's name, without the leading hash. Null until it is ready.
          title: Channel Name
        channel_state:
          description: 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.
          enum:
          - none
          - provisioning
          - ready
          - failed
          title: Channel State
          type: string
        channel_url:
          anyOf:
          - type: string
          - type: 'null'
          description: A link that opens the channel in the reader's Slack. Null until it is ready.
          title: Channel Url
        invite_can_send:
          description: 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.
          title: Invite Can Send
          type: boolean
        invite_email:
          anyOf:
          - type: string
          - type: 'null'
          description: The address the Slack invitation went to.
          title: Invite Email
        invite_message:
          anyOf:
          - type: string
          - type: 'null'
          description: What to tell the reader when Slack refused, already written for a person rather than a log. Null when nothing was refused.
          title: Invite Message
        invite_sent_at:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: When Slack accepted the invitation.
          title: Invite Sent At
        invite_status:
          description: What became of the workspace's Slack invitation.
          enum:
          - none
          - sent
          - refused
          title: Invite Status
          type: string
      required:
      - channel_state
      - channel_failure_message
      - channel_name
      - channel_url
      - invite_status
      - invite_email
      - invite_sent_at
      - invite_message
      - invite_can_send
      title: DesignPartnerSlackReadSchema
      type: object
    DesignPartnerFeedbackCreateSchema:
      description: One submission from a member of a design partner workspace.
      properties:
        body:
          description: What they want to tell us. Free text, no categories, no form.
          maxLength: 5000
          minLength: 1
          title: Body
          type: string
      required:
      - body
      title: DesignPartnerFeedbackCreateSchema
      type: object
    ServerErrorResponse:
      properties:
        detail:
          description: The detail of why the server returned an error.
          title: Detail
          type: string
      required:
      - detail
      title: ServerErrorResponse
      type: object
    DesignPartnerFeedbackStatus:
      description: What the partner's page says we did with one submission.
      enum:
      - seen
      - planned
      - shipped
      title: DesignPartnerFeedbackStatus
      type: string
    DesignPartnerStatusReadSchema:
      description: '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.'
      properties:
        badges:
          description: 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.
          items:
            $ref: '#/components/schemas/DesignPartnerBadgeReadSchema'
          title: Badges
          type: array
        is_design_partner:
          description: Whether the caller's workspace is a design partner.
          title: Is Design Partner
          type: boolean
        slack:
          anyOf:
          - $ref: '#/components/schemas/DesignPartnerSlackReadSchema'
          - type: 'null'
          description: The shared Slack channel block. Null for a workspace that is not a design partner, and null when this deployment has no Slack workspace configured. The page hides the section rather than offering a button that cannot work.
        started_at:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Partner since. Null when the workspace is not a design partner.
          title: Started At
      required:
      - is_design_partner
      - started_at
      - badges
      - slack
      title: DesignPartnerStatusReadSchema
      type: object
    DesignPartnerFeedbackReadSchema:
      description: 'One stored submission, as the workspace''s own history shows it.


        The whole workspace sees every member''s submissions: the page is addressed

        to the organization, and a partner should be able to see what their

        colleagues have already asked for rather than repeating it.'
      properties:
        badge_id:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: The badge it led to, when it shipped. Null otherwise.
          title: Badge Id
        body:
          description: What they wrote.
          title: Body
          type: string
        created_at:
          description: When they wrote it.
          format: date-time
          title: Created At
          type: string
        id:
          description: The submission's ID.
          format: uuid
          title: Id
          type: string
        status:
          anyOf:
          - $ref: '#/components/schemas/DesignPartnerFeedbackStatus'
          - type: 'null'
          description: 'What our team did with it: ''seen'', ''planned'' or ''shipped'', the furthest one reached. Null while nobody on our team has seen it.'
        user_email:
          description: Who wrote it, as their email was at the time they wrote it.
          title: User Email
          type: string
        user_id:
          description: Clerk user ID of who wrote it, so the page can show their name and tell the reader which submissions are their own.
          title: User Id
          type: string
      required:
      - id
      - user_id
      - user_email
      - body
      - created_at
      - status
      - badge_id
      title: DesignPartnerFeedbackReadSchema
      type: object
    DesignPartnerBadgeReadSchema:
      description: One badge on the design partner page.
      properties:
        awarded_at:
          description: The date shown on the badge.
          format: date-time
          title: Awarded At
          type: string
        description:
          description: What this workspace's feedback made possible, in our words.
          title: Description
          type: string
        icon:
          description: 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.
          title: Icon
          type: string
        id:
          description: The badge's ID.
          format: uuid
          title: Id
          type: string
        title:
          description: The badge's name.
          title: Title
          type: string
      required:
      - id
      - title
      - description
      - icon
      - awarded_at
      title: DesignPartnerBadgeReadSchema
      type: object
    OrderingParametersForIdCreatedAt:
      enum:
      - id
      - created_at
      title: OrderingParametersForIdCreatedAt
      type: string
    UnprocessableEntityResponse:
      properties:
        detail:
          description: The detail of the error. This is the error message to show to the user. You should also use the issues field to show more detailed error messages per field. Use this field for a single liner error message.
          title: Detail
          type: string
        issues:
          description: The issues that caused the error. There can be multiple issues. Each issue is a user-facing error message.
          items:
            $ref: '#/components/schemas/UnprocessableEntityIssue'
          title: Issues
          type: array
      required:
      - detail
      - issues
      title: UnprocessableEntityResponse
      type: object
    UnauthorizedResponse:
      properties:
        detail:
          description: The detail of why the request is unauthorized.
          title: Detail
          type: string
      required:
      - detail
      title: UnauthorizedResponse
      type: object
    PaginatedResponse_DesignPartnerFeedbackReadSchema_:
      properties:
        data:
          description: The list of ResponseItems.
          items:
            $ref: '#/components/schemas/DesignPartnerFeedbackReadSchema'
          title: Data
          type: array
        next_page_cursor:
          anyOf:
          - type: string
          - type: 'null'
          description: The cursor to the next page. If there are no more pages, this is None.
        previous_page_cursor:
          anyOf:
          - type: string
          - type: 'null'
          description: The cursor to the previous page. If there are no previous pages, this is None.
      title: PaginatedResponse[DesignPartnerFeedbackReadSchema]
      type: object
  securitySchemes:
    APIKeyHeader:
      in: header
      name: X-API-Key
      type: apiKey
    HTTPBearer:
      scheme: bearer
      type: http