Aller au contenu principal

Questions (Votez)

Endpoints CRUD pour les questions d'une campagne et leurs options de réponse. Module requis : Votez.

Les modifications structurelles sont bloquées une fois la campagne publiée. Configurez avant PublierCampagne.

Routes

Toutes les routes sont sous le préfixe /b2b/v1/campagnes/{campagneId}/questions.

Liste des questions

GET /b2b/v1/campagnes/{campagneId}/questions

Réponse

[
{
"id": 1,
"nom": "acceptation-convention",
"texte": "Acceptez-vous la convention collective 2026-2029 ?",
"typeQuestion": "Proposition",
"minReponses": 1,
"maxReponses": 1,
"abstentionPermise": true,
"ordre": 1,
"options": [
{ "id": "...", "texte": "Oui", "ordre": 1 },
{ "id": "...", "texte": "Non", "ordre": 2 }
]
}
]

Obtenir une question

GET /b2b/v1/campagnes/{campagneId}/questions/{questionId}
NomEmplacementTypeDescription
campagneIdPathGuidIdentifiant de la campagne
questionIdPathintIdentifiant numérique de la question

Créer une question

POST /b2b/v1/campagnes/{campagneId}/questions

Corps de la requête

{
"nom": "acceptation-convention",
"texte": "Acceptez-vous la convention collective 2026-2029 ?",
"typeQuestion": "Proposition",
"minReponses": 1,
"maxReponses": 1,
"abstentionPermise": true,
"options": [
{ "texte": "Oui" },
{ "texte": "Non" }
]
}

Types de questions

typeQuestionUsage
PropositionQuestion Oui/Non/Abstention
ChoixLibreChoix multiple, minReponses/maxReponses paramétrables
ElectionÉlection de candidats (options = candidats)

Réponse

1

L'identifiant numérique de la question créée.

Erreurs possibles

CodeHTTPSignification
Question.MinReponsesNegatif400minReponses négatif
Question.MaxReponsesTropBas400maxReponses < 1
Question.MinSuperieurMax400minReponses > maxReponses
Question.NomDejaUtilise409Le nom est déjà utilisé dans cette campagne
Question.PosteRequisPourElection400Question de type Election sans poste

Modifier une question

PUT /b2b/v1/campagnes/{campagneId}/questions/{questionId}

Erreurs possibles

CodeHTTPSignification
Question.NotFound404La question n'existe pas
Question.ModificationRestrictionsInterdite400Les restrictions ne peuvent pas changer pendant un vote ouvert

Supprimer une question

DELETE /b2b/v1/campagnes/{campagneId}/questions/{questionId}

Erreurs possibles

CodeHTTPSignification
Question.ADesVotes409Des votes ont été enregistrés — suppression bloquée

Réordonner les questions

POST /b2b/v1/campagnes/{campagneId}/questions/reorder

Corps de la requête

Tableau JSON de tous les questionId dans l'ordre voulu :

[3, 1, 2]

Erreurs possibles

CodeHTTPSignification
Question.OrdreIdsDupliques400La liste contient des doublons
Question.OrdreIdsManquants400La liste ne couvre pas toutes les questions

Ajouter une option à une question

POST /b2b/v1/campagnes/{campagneId}/questions/{questionId}/options

Corps de la requête

{
"texte": "Oui",
"information": null
}

Réponse

"3fa85f64-5717-4562-b3fc-2c963f66afa6"

L'identifiant Guid de l'option créée.


Modifier une option

PUT /b2b/v1/campagnes/{campagneId}/questions/{questionId}/options/{optionId}

Supprimer une option

DELETE /b2b/v1/campagnes/{campagneId}/questions/{questionId}/options/{optionId}

Voir aussi