---
title: "The module vocabulary for the editor"
method: GET
path: "/api/company-roles/catalog"
tags: ["Company Roles"]
---

# The module vocabulary for the editor

`GET /api/company-roles/catalog`

Every module a company role may contain, with its pt-PT label AND the
rules needed to predict what granting it will actually do.

Pure vocabulary, so the derivation lives in `app/permissions/modules.py`
beside the constants and the gate that reads them — this handler is the HTTP
half and nothing else (house rule). See `modules.module_catalog` for why the
implication rules are on the wire rather than re-declared in JavaScript.

    [{"key": "modulo.avaliador", "label": "Avaliador de Viaturas",
      "ungateable": false, "implies": ["modulo.viaturas"], "implied_by": []},
     {"key": "modulo.viaturas",  "label": "Viaturas",
      "ungateable": false, "implies": [], "implied_by": ["modulo.avaliador"]},
     {"key": "modulo.suporte",   "label": "Suporte",
      "ungateable": true,  "implies": [], "implied_by": []},
     ...]

## Headers

- `x-api-token` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/multigest/apis/multigest-protected-api.md) · [All operations](https://skmtc.dev/multigest/apis/multigest-protected-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/multigest/multigest-protected-api/revisions/8492136eefc5/schema)
