> ## 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.

# Módulos do Curso

> Vincule e desvincule módulos de um curso, e defina sua ordem e obrigatoriedade.

# Módulos do Curso

Após criar um curso e seus módulos separadamente, você deve vincular explicitamente os módulos ao curso. O vínculo define a posição do módulo, se ele é obrigatório e sua carga horária dentro deste curso específico.

***

## Listar módulos vinculáveis

Retorna os módulos que pertencem à mesma instituição e ainda não estão vinculados a este curso.

```http theme={null}
GET /courses/{course_uuid}/attach/modules
```

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.dokstamp.com/courses/c3d4e5f6-a7b8-9012-cdef-123456789012/attach/modules" \
    -H "Authorization: Bearer {TOKEN}" \
    -H "Accept: application/json" \
    -H "X-Tenant: {TENANT}"
  ```
</CodeGroup>

***

## Vincular módulos a um curso

```http theme={null}
POST /courses/{course_uuid}/attach/modules
```

| Parâmetro                            | Tipo    | Obrigatório | Descrição                                                |
| ------------------------------------ | ------- | ----------- | -------------------------------------------------------- |
| `modules`                            | array   | Sim         | Array de objetos de vínculo de módulo                    |
| `modules[].uuid`                     | string  | Sim         | UUID do módulo                                           |
| `modules[].order`                    | integer | Não         | Posição no currículo do curso                            |
| `modules[].is_required`              | boolean | Não         | Sobrescreve o valor padrão `is_required` do módulo       |
| `modules[].workload`                 | integer | Não         | Sobrescreve a carga horária padrão do módulo neste curso |
| `modules[].course_module_group_uuid` | string  | Não         | Atribui o módulo a um grupo de módulos                   |

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.dokstamp.com/courses/c3d4e5f6-a7b8-9012-cdef-123456789012/attach/modules" \
    -H "Authorization: Bearer {TOKEN}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "X-Tenant: {TENANT}" \
    -d '{
      "modules": [
        {
          "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
          "order": 1,
          "is_required": true,
          "workload": 80
        },
        {
          "uuid": "c3d4e5f6-a7b8-9012-cdef-123456789013",
          "order": 2,
          "is_required": true,
          "workload": 60
        }
      ]
    }'
  ```
</CodeGroup>

***

## Desvincular módulos de um curso

```http theme={null}
DELETE /courses/{course_uuid}/detach/modules
```

| Parâmetro | Tipo  | Obrigatório | Descrição                               |
| --------- | ----- | ----------- | --------------------------------------- |
| `modules` | array | Sim         | Array de UUIDs de módulos a desvincular |

```json theme={null}
{ "modules": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"] }
```

<Warning>
  Desvincular um módulo de um curso não exclui o módulo em si — apenas a associação é removida. O módulo permanece disponível para ser vinculado a outros cursos.
</Warning>
