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

# Quotas

> Lister les quotas d'une étude et consulter le détail et la progression d'un quota.

## Lister les quotas d'une étude

Récupère tous les quotas d'une étude. Les quotas sont renvoyés par ordre de création décroissant (le plus récent en premier).

```http theme={null}
GET /api/v1/surveys/{SURVEY_ID}/quotas
```

### Paramètres

<ParamField path="SURVEY_ID" type="integer" required>
  L'identifiant de l'étude.
</ParamField>

### Champ `kind`

| Valeur                 | Description                    |
| ---------------------- | ------------------------------ |
| `questionnaire_quotas` | Quota avec une marge (leeway). |
| `target_quotas`        | Quota sans marge.              |
| `follow_up`            | Quota sans objectif.           |

### Champ `type`

| Valeur         | Description                      |
| -------------- | -------------------------------- |
| `FlatQuota`    | Quota sur une seule question.    |
| `CrossedQuota` | Quota croisé sur deux questions. |

<ResponseExample>
  ```json Réponse theme={null}
  {
    "quotas": [
      {
        "id": 6386,
        "kind": "questionnaire_quotas",
        "row_iteration_id": 158469,
        "column_iteration_id": 158467,
        "created_at": "2025-04-01T09:48:52.796+02:00",
        "updated_at": "2025-04-01T09:48:52.796+02:00",
        "type": "CrossedQuota"
      },
      {
        "id": 7130,
        "kind": "follow_up",
        "row_iteration_id": 158473,
        "column_iteration_id": 158469,
        "created_at": "2025-06-23T11:07:11.125+02:00",
        "updated_at": "2025-06-23T11:07:11.125+02:00",
        "type": "CrossedQuota"
      }
    ]
  }
  ```
</ResponseExample>

## Consulter le détail d'un quota

Récupère le détail et la progression d'un quota.

```http theme={null}
GET /api/v1/quotas/{QUOTA_ID}
```

### Paramètres

<ParamField path="QUOTA_ID" type="integer" required>
  L'identifiant du quota.
</ParamField>

### Champs de réponse

<ResponseField name="id" type="integer">
  ID du quota.
</ResponseField>

<ResponseField name="kind" type="string">
  Type de quota : `questionnaire_quotas`, `target_quotas` ou `follow_up` (voir ci-dessus).
</ResponseField>

<ResponseField name="type" type="string">
  `FlatQuota` (une seule question) ou `CrossedQuota` (croisé sur deux questions).
</ResponseField>

<ResponseField name="leeway" type="float">
  Marge autorisée sur l'objectif du quota (ex. `0.05`).
</ResponseField>

<ResponseField name="pretty_label_with_identifier" type="string">
  Libellé lisible du quota avec son identifiant (ex. `RS2 - age5`).
</ResponseField>

<ResponseField name="progress" type="object">
  Progression du quota.

  <Expandable title="détail de la progression">
    Objet imbriqué croisant les modalités. Chaque cellule contient : `objective` (l'objectif visé), `completes` (le nombre d'interviews complètes collectées) et `progress` (le taux d'avancement).
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json Réponse theme={null}
  {
    "id": 7132,
    "kind": "questionnaire_quotas",
    "row_iteration_id": 158467,
    "column_iteration_id": null,
    "created_at": "2025-06-23T11:19:51.357+02:00",
    "updated_at": "2025-06-23T11:19:51.357+02:00",
    "type": "FlatQuota",
    "leeway": 0.05,
    "pretty_label_with_identifier": "RS2 - age5",
    "progress": {
      "total": {
        "total": {
          "objective": 850,
          "completes": 800,
          "progress": 1
        }
      },
      "0-17": {
        "total": {
          "objective": 170,
          "completes": 0,
          "progress": 0
        }
      }
    }
  }
  ```
</ResponseExample>
