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

> Crie e faça a gestão de módulos de cursos — as disciplinas ou unidades curriculares individuais que compõem um curso.

# Módulos

Módulos são as disciplinas, unidades curriculares ou unidades individuais que compõem um curso. Crie os módulos ao nível da instituição e, em seguida, associe-os a um ou mais cursos.

***

## O objeto módulo

```json theme={null}
{
  "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "code": "CS101",
  "name": "Introduction to Programming",
  "description": "Fundamentals of programming using Python.",
  "syllabus": "Variables, control flow, functions, OOP basics.",
  "workload": 80,
  "credits": 4,
  "modality": "hybrid",
  "level": "undergraduate",
  "is_active": true,
  "is_required": true,
  "institution": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Federal University of Technology"
  }
}
```

| Campo         | Tipo    | Descrição                                                    |
| ------------- | ------- | ------------------------------------------------------------ |
| `uuid`        | string  | Identificador único                                          |
| `code`        | string  | Código do módulo (único por instituição, máx. 20 caracteres) |
| `name`        | string  | Nome do módulo (máx. 150 caracteres)                         |
| `description` | string  | Descrição resumida                                           |
| `syllabus`    | string  | Conteúdo completo da ementa                                  |
| `workload`    | integer | Carga horária total (sem sinal)                              |
| `credits`     | integer | Créditos académicos (sem sinal)                              |
| `modality`    | enum    | `in_person`, `online`, `hybrid`                              |
| `level`       | enum    | `undergraduate`, `graduate`, `technical`, `open`             |
| `is_active`   | boolean | Indica se o módulo está ativo                                |
| `is_required` | boolean | Indica se o módulo é obrigatório no curso                    |

***

## Listar módulos

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

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

***

## Criar um módulo

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

| Parâmetro          | Tipo    | Obrigatório | Descrição                                        |
| ------------------ | ------- | ----------- | ------------------------------------------------ |
| `name`             | string  | Sim         | Nome do módulo                                   |
| `institution_uuid` | string  | Sim         | UUID da instituição pai                          |
| `code`             | string  | Não         | Código do módulo (único por instituição)         |
| `description`      | string  | Não         | Descrição resumida                               |
| `syllabus`         | string  | Não         | Ementa completa                                  |
| `workload`         | integer | Não         | Total de horas de contacto                       |
| `credits`          | integer | Não         | Créditos académicos                              |
| `modality`         | enum    | Não         | `in_person`, `online`, `hybrid`                  |
| `level`            | enum    | Não         | `undergraduate`, `graduate`, `technical`, `open` |
| `is_active`        | boolean | Não         | Padrão: `true`                                   |
| `is_required`      | boolean | Não         | Padrão: `false`                                  |

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.dokstamp.com/modules \
    -H "Authorization: Bearer {TOKEN}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "X-Tenant: {TENANT}" \
    -d '{
      "name": "Introduction to Programming",
      "code": "CS101",
      "institution_uuid": "550e8400-e29b-41d4-a716-446655440000",
      "workload": 80,
      "credits": 4,
      "modality": "hybrid",
      "level": "undergraduate",
      "is_active": true,
      "is_required": true
    }'
  ```
</CodeGroup>

***

## Obter, atualizar, eliminar

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

<Info>
  Após criar os módulos, associe-os a um curso utilizando `POST /courses/{uuid}/attach/modules`. Consulte [Módulos do Curso](/pt/api-reference/courses/modules).
</Info>
