> ## Documentation Index
> Fetch the complete documentation index at: https://help.skillsdb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# The Skill Request object

> The workflow by which someone asks for a skill to be added to the library

<Info>
  **Quick Summary:** A skill request proposes a name and description for a new library skill. Approving it creates the skill and assigns it to the requester; rejecting it records the decision. Either way the decision is final — a decided request returns a conflict if decided again.
</Info>

## Attributes

| Field           | Type           | Description                            |
| --------------- | -------------- | -------------------------------------- |
| `id`            | string         | Opaque request id                      |
| `name`          | string \| null | The requested skill name               |
| `description`   | string \| null | The requested description              |
| `status`        | string         | `pending`, `approved` or `rejected`    |
| `requestedById` | string \| null | Person id who requested the skill      |
| `requestedAt`   | string \| null | When it was requested (ISO 8601 UTC)   |
| `reviewedById`  | string \| null | Person id who decided it, once decided |
| `decidedAt`     | string \| null | When it was decided                    |
| `reviewNotes`   | string \| null | Review notes, once decided             |

```json theme={null}
{
  "id": "17",
  "name": "Hydraulic Systems",
  "description": "Maintenance of hydraulic power units.",
  "status": "approved",
  "requestedById": "91",
  "requestedAt": "2026-03-01T09:00:00.000Z",
  "reviewedById": "88",
  "decidedAt": "2026-03-02T14:00:00.000Z",
  "reviewNotes": "Approved for the fabrication track."
}
```

## Workflow

1. `POST /api/v1/skill-requests` submits a proposed name and description. The request starts `pending`.
2. `POST /api/v1/skill-requests/{id}/approve` accepts it, with optional `notes`. **Approving creates the skill in the library and assigns it to the requester.**
3. `POST /api/v1/skill-requests/{id}/reject` declines it, with optional `notes`.

Filter the list with `status=pending|approved|rejected`. The underlying record also carries a category and a free-text category suggestion; both are deprecated and neither is exposed.
