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

> Associe e desassocie módulos de um curso, e defina a sua ordem e obrigatoriedade.

# Módulos do Curso

Após criar um curso e os seus módulos separadamente, é necessário associar explicitamente os módulos ao curso. A associação define a posição do módulo, se é obrigatório e a sua carga horária dentro deste curso específico.

***

## Listar módulos associáveis

Devolve os módulos que pertencem à mesma instituição e ainda não estão associados 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>

***

## Associar 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 associação 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         | Substitui o valor padrão `is_required` do módulo       |
| `modules[].workload`                 | integer | Não         | Substitui 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>

***

## Desassociar 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 desassociar |

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

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