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

# Cursos

> Crie e faça a gestão de programas académicos. Os cursos são a entidade central que liga instituições, módulos, turmas e certificados.

# Cursos

Um curso representa um programa académico — uma licenciatura, diploma, curso profissional ou programa de formação. Liga módulos num currículo estruturado e fornece o contexto académico para os certificados.

***

## O objeto curso

```json theme={null}
{
  "uuid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
  "code": "BCS-2024",
  "name": "Bachelor of Computer Science",
  "description": "A 4-year undergraduate program in computer science.",
  "workload_hours": 3200,
  "area": "Technology",
  "version": "2024.1",
  "status": "active",
  "institution": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Federal University of Technology"
  },
  "organization": null,
  "created_at": "2024-01-15T10:00:00.000000Z"
}
```

| Campo            | Tipo         | Descrição                                     |
| ---------------- | ------------ | --------------------------------------------- |
| `uuid`           | string       | Identificador único                           |
| `code`           | string       | Código interno do curso                       |
| `name`           | string       | Nome do curso (máx. 255 caracteres)           |
| `description`    | string       | Descrição do programa                         |
| `workload_hours` | integer      | Total de horas do programa                    |
| `area`           | string       | Área do conhecimento (ex.: Tecnologia, Saúde) |
| `version`        | string       | Versão do currículo                           |
| `status`         | enum         | `draft`, `active`, `archived`                 |
| `institution`    | object       | Instituição pai                               |
| `organization`   | object\|null | Subunidade opcional (faculdade/departamento)  |

***

## Listar cursos

```http theme={null}
GET /courses
```

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.dokstamp.com/courses?where[status]=active&sort[column]=name" \
    -H "Authorization: Bearer {TOKEN}" \
    -H "Accept: application/json" \
    -H "X-Tenant: {TENANT}"
  ```
</CodeGroup>

***

## Criar um curso

```http theme={null}
POST /courses
```

| Parâmetro           | Tipo    | Obrigatório | Descrição                                   |
| ------------------- | ------- | ----------- | ------------------------------------------- |
| `name`              | string  | Sim         | Nome do curso                               |
| `institution_uuid`  | string  | Sim         | UUID da instituição pai                     |
| `code`              | string  | Não         | Código interno                              |
| `description`       | string  | Não         | Descrição do programa                       |
| `workload_hours`    | integer | Não         | Total de horas do programa                  |
| `area`              | string  | Não         | Área do conhecimento                        |
| `version`           | string  | Não         | Versão do currículo                         |
| `status`            | enum    | Não         | `draft` (padrão), `active`, `archived`      |
| `organization_uuid` | string  | Não         | UUID da subunidade (faculdade/departamento) |

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.dokstamp.com/courses \
    -H "Authorization: Bearer {TOKEN}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "X-Tenant: {TENANT}" \
    -d '{
      "name": "Bachelor of Computer Science",
      "code": "BCS-2024",
      "institution_uuid": "550e8400-e29b-41d4-a716-446655440000",
      "workload_hours": 3200,
      "area": "Technology",
      "version": "2024.1",
      "status": "active"
    }'
  ```
</CodeGroup>

**Resposta `201`:**

```json theme={null}
{
  "data": {
    "uuid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
    "name": "Bachelor of Computer Science",
    "status": "active",
    ...
  }
}
```

***

## Obter, atualizar, eliminar

```http theme={null}
GET    /courses/{uuid}
PATCH  /courses/{uuid}
PUT    /courses/{uuid}
DELETE /courses/{uuid}
DELETE /courses/batch/destroy
```

***

## Transições de estado

| Estado     | Significado                                                      |
| ---------- | ---------------------------------------------------------------- |
| `draft`    | O curso está a ser configurado — ainda não aceita matrículas     |
| `active`   | O curso está ativo — os certificados podem ser emitidos          |
| `archived` | O curso já não é oferecido — os registos históricos são mantidos |

***

## Próximos passos para cursos

Após criar um curso:

1. **Associar módulos** → [Módulos do Curso](/pt/api-reference/courses/modules)
2. **Criar grupos de módulos** → [Grupos de Módulos](/pt/api-reference/courses/module-groups)
3. **Criar turmas** → [Turmas](/pt/api-reference/courses/cohorts)
4. **Emitir certificados** → [Certificados](/pt/api-reference/certificates/overview)
