文件预览

SKILL.md

查看 Userorbit 技能包中的文件内容。

文件内容

SKILL.md

---
name: userorbit
description: Manage Userorbit resources via the public API. Create and manage feedback, announcements, roadmap topics, help center articles, boards, tags, subscribers, and more.
metadata:
  clawdbot:
    requires:
      env:
        - USERORBIT_API_KEY
        - USERORBIT_TEAM_ID
---

# Userorbit API

Manage Userorbit resources programmatically via the REST API.

## Setup

Before the first API call, verify that `USERORBIT_API_KEY` and `USERORBIT_TEAM_ID` environment variables are set. If they are missing, ask the user to provide them (available in Settings → API or from the Userorbit onboarding page).

## Making API calls

Use `curl` directly with the environment variables:

- Base URL: `https://api.userorbit.com/api/v1`
- All endpoints use **POST**
- Endpoint format: `<resource>.<action>` (e.g., `announcements.list`, `feedbacks.create`)
- Success response: `{ "data": ... }`
- List response: `{ "pagination": { "offset", "limit", "total" }, "data": [...] }`
- Error response: `{ "error": "..." }`

Usage:
```bash
curl -s -X POST "https://api.userorbit.com/api/v1/<endpoint>" \
  -H "Authorization: Bearer ${USERORBIT_API_KEY}" \
  -H "Content-Type: application/json" \
  -H "x-team-id: ${USERORBIT_TEAM_ID}" \
  -d '<json body>'
```

Example:
```bash
curl -s -X POST "https://api.userorbit.com/api/v1/announcements.list" \
  -H "Authorization: Bearer ${USERORBIT_API_KEY}" \
  -H "Content-Type: application/json" \
  -H "x-team-id: ${USERORBIT_TEAM_ID}" \
  -d '{"limit": 5}' | jq '.data'
```

## Resources

### Feedback

User-submitted feedback with voting, status tracking, and board organization.

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `feedbacks.create` | `title` |
| List | `feedbacks.list` | - |
| Get | `feedbacks.info` | `id` |
| Update | `feedbacks.update` | `id` |
| Delete | `feedbacks.delete` | `id` |
| Archive | `feedbacks.archive` | `id` |
| Restore | `feedbacks.restore` | `id` |
| Vote | `feedbacks.vote` | `id` |

Statuses: `in_review`, `planned`, `in_progress`, `completed`, `closed`

Sort modes for list: `newest`, `top` (by votes), `trending` (activity)

### Feedback Boards

Organize feedback into boards.

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `feedback-boards.create` | `name` |
| List | `feedback-boards.list` | - |
| Get | `feedback-boards.info` | `id` |
| Update | `feedback-boards.update` | `id` |
| Delete | `feedback-boards.delete` | `id` |

### Feedback Comments

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `feedback-comments.create` | `id` (feedbackId), `text` |
| List | `feedback-comments.list` | - |
| Update | `feedback-comments.update` | `id`, `text` |
| Delete | `feedback-comments.delete` | `id` |

Comments support `type`: `"public"` or `"private"` (internal notes).

### Announcements

Product updates and changelogs. Require a `collectionId` (category).

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `announcements.create` | `collectionId`, `title`, `text`, `meta` |
| List | `announcements.list` | - |
| Get | `announcements.info` | `id` |
| Update | `announcements.update` | `id` |
| Delete | `announcements.delete` | `id` |
| Search | `announcements.search` | `query` |
| Archive | `announcements.archive` | `id` |
| Restore | `announcements.restore` | `id` |
| Pin | `announcements.pin` | `id` |
| Unpin | `announcements.unpin` | `id` |

The `meta` object supports: `ctaTitle`, `ctaLink`, `ctaImage`, `description`, `feedback`.

Set `publish: true` to publish immediately. Use `scheduledAt` (ISO date) to schedule.

### Announcement Comments

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `announcement-comments.create` | `id` (announcementId), `text` |
| List | `announcement-comments.list` | `id` (announcementId) |
| Update | `announcement-comments.update` | `id`, `text` |
| Delete | `announcement-comments.delete` | `id` |

### Roadmaps

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `roadmaps.create` | `name` |
| List | `roadmaps.list` | - |
| Get | `roadmaps.info` | `id` |
| Update | `roadmaps.update` | `id` |
| Delete | `roadmaps.delete` | `id` |
| Stages | `roadmaps.stages` | `id` |

### Stages

Columns within a roadmap (e.g., "Planned", "In Progress", "Done").

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `stages.create` | `title`, `roadmapId` |
| List | `stages.list` | `roadmapId` |
| Get | `stages.info` | `id` |
| Update | `stages.update` | `id` |
| Delete | `stages.delete` | `id` |

### Topics (Roadmap Items)

Items that live on a roadmap stage.

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `topics.create` | `title` |
| List | `topics.list` | `roadmapId`, `stageId` |
| Get | `topics.info` | `id` |
| Update | `topics.update` | `id` |
| Delete | `topics.delete` | `id` |
| Count | `topics.count` | - |

### Topic Comments

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `topic-comments.create` | `id` (topicId), `text` |
| List | `topic-comments.list` | `id` (topicId) |
| Update | `topic-comments.update` | `id`, `text` |
| Delete | `topic-comments.delete` | `id` |

### Articles (Help Center)

Knowledge base articles with publishing workflow.

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `articles.create` | `title`, `text`, `collectionIds` |
| List | `articles.list` | - |
| Get | `articles.info` | `id` |
| Update | `articles.update` | `id` |
| Delete | `articles.delete` | `id` |
| Search | `articles.search` | `query` |
| Publish | `articles.publish` | `id` |
| Unpublish | `articles.unpublish` | `id` |
| Archive | `articles.archive` | `id` |
| Revisions | `articles.revisions` | `id` |
| Restore | `articles.restore` | `id`, `revisionId` |

Article statuses: `draft`, `published`, `archived`

### Article Collections (Help Center Categories)

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `article-collections.create` | `name` |
| List | `article-collections.list` | - |
| Get | `article-collections.info` | `id` |
| Update | `article-collections.update` | `id` |
| Delete | `article-collections.delete` | `id` |

### Article Votes

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Get | `article-votes.info` | `id` (articleId) |
| Vote | `article-votes.create` | `id` (articleId), `value` (`helpful` or `not_helpful`) |
| Remove | `article-votes.delete` | `id` (articleId) |

### Collections (Announcement Categories)

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `collections.create` | `name` |
| List | `collections.list` | - |
| Get | `collections.info` | `id` |
| Update | `collections.update` | `id` |
| Delete | `collections.delete` | `id` |

### Tags

Labels for organizing feedback.

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `tags.create` | `name` |
| List | `tags.list` | - |
| Get | `tags.info` | `id` |
| Update | `tags.update` | `id`, `name` |
| Delete | `tags.delete` | `id` |

### Subscribers

Public users who interact with your product.

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `subscribers.create` | `email`, `name`, `password` |
| List | `subscribers.list` | - |
| Update | `subscribers.update` | `id` |
| Delete | `subscribers.delete` | `id` |
| Count | `subscribers.count` | - |
| Search | `subscribers.search` | - |

### Projects

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `projects.create` | `name` |
| List | `projects.list` | - |
| Get | `projects.info` | `id` |
| Update | `projects.update` | `id` |
| Delete | `projects.delete` | `id` |

### Feedback Board Tags

Associate tags with feedback boards.

| Operation | Endpoint | Required fields |
|-----------|----------|-----------------|
| Create | `feedback-board-tags.create` | `boardId`, `tagId` |
| List | `feedback-board-tags.list` | `boardId` |
| Update | `feedback-board-tags.update` | `boardId`, `oldTagId`, `newTagId` |
| Delete | `feedback-board-tags.delete` | `boardId`, `tagId` |

## Common Workflows

### Create and publish an announcement
1. Call `collections.list` to find the right `collectionId`
2. Call `announcements.create` with `collectionId`, `title`, `text`, `meta`, and `publish: true`

### Add a topic to a roadmap
1. Call `roadmaps.list` to find the `roadmapId`
2. Call `roadmaps.stages` with the `id` to find the `stageId`
3. Call `topics.create` with `title`, `roadmapId`, `stageId`, and `publish: true`

### Publish a help center article
1. Call `article-collections.list` to find collection IDs
2. Call `articles.create` with `title`, `text`, and `collectionIds`
3. Call `articles.publish` with the article `id`

## Detailed API Reference

For full request/response schemas with all optional fields, see `references/api.md`.