Dictionaries API API pour gérer les dictionnaires CSPro.
Authentification Requise Toutes les requêtes nécessitent un Bearer token OAuth2.
Voir OAuth2 Authentication pour obtenir un token.
Authorization: Bearer YOUR_ACCESS_TOKENEndpoints
GET /api/dictionaries Liste tous les dictionnaires disponibles.
Request:
curl -X GET http://localhost:8080/api/dictionaries \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response (200 OK):
[
{
"name": "EVAL_DICT",
"label": "eval",
"version": "1.0",
"created_at": "2026-01-15T10:30:00Z"
},
{
"name": "KAIROS_DICT",
"label": "kairos",
"version": "2.0",
"created_at": "2026-02-20T14:00:00Z"
}
]GET /api/dictionaries/{name}
Récupère les détails d'un dictionnaire spécifique.
Parameters:
name(path, required): Nom du dictionnaire (ex:EVAL_DICT)
Request:
curl -X GET http://localhost:8080/api/dictionaries/EVAL_DICT \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response (200 OK):
{
"name": "EVAL_DICT",
"label": "eval",
"version": "1.0",
"description": "Enquête d'évaluation",
"levels": [
{
"name": "level_1",
"label": "Ménages"
}
],
"records": [
{
"name": "producteurs",
"label": "Producteurs"
}
],
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-15T10:30:00Z"
}Response (404 Not Found):
{
"error": "Dictionary not found",
"message": "Dictionary 'UNKNOWN_DICT' does not exist"
}GET /api/dictionaries/{name}/cases Liste les questionnaires (cases) d'un dictionnaire.
Parameters:
name(path, required): Nom du dictionnairelimit(query, optional): Nombre max de résultats (défaut: 100)offset(query, optional): Offset pour pagination (défaut: 0)
Request:
curl -X GET "http://localhost:8080/api/dictionaries/EVAL_DICT/cases?limit=10&offset=0" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response (200 OK):
{
"total": 1250,
"limit": 10,
"offset": 0,
"data": [
{
"guid": "abc123-def456-ghi789",
"case_label": "001-2025-001",
"modified_date": "2026-01-15T12:00:00Z",
"verified": true,
"deleted": false
},
{
"guid": "xyz789-uvw456-rst123",
"case_label": "001-2025-002",
"modified_date": "2026-01-15T13:30:00Z",
"verified": false,
"deleted": false
}
]
}POST /api/dictionaries Upload un nouveau dictionnaire CSPro (.dcf).
Request:
curl -X POST http://localhost:8080/api/dictionaries \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@survey.dcf" \
-F "label=survey"Response (201 Created):
{
"message": "Dictionary uploaded successfully",
"name": "SURVEY_DICT",
"label": "survey"
}Response (400 Bad Request):
{
"error": "Invalid file format",
"message": "File must be a valid CSPro .dcf file"
}DELETE /api/dictionaries/{name}
Supprime un dictionnaire.
Request:
curl -X DELETE http://localhost:8080/api/dictionaries/EVAL_DICT \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response (200 OK):
{
"message": "Dictionary deleted successfully",
"name": "EVAL_DICT"
}Response (409 Conflict):
{
"error": "Cannot delete dictionary",
"message": "Dictionary has associated cases. Delete cases first."
}Exemples d'Utilisation
Java (Spring Boot)
@Service
@RequiredArgsConstructor
public class DictionaryService {
private final CSWebApiService cswebApi;
public List<Dictionary> getAllDictionaries() {
ResponseEntity<Dictionary[]> response = cswebApi.get(
"/dictionaries",
Dictionary[].class
);
return Arrays.asList(response.getBody());
}
public Dictionary getDictionary(String name) {
ResponseEntity<Dictionary> response = cswebApi.get(
"/dictionaries/" + name,
Dictionary.class
);
return response.getBody();
}
}PHP (Laravel)
use App\Services\CSWebApiService;
class DictionaryController extends Controller
{
public function index(CSWebApiService $cswebApi)
{
$dictionaries = $cswebApi->get('/dictionaries');
return response()->json($dictionaries);
}
public function show(string $name, CSWebApiService $cswebApi)
{
$dictionary = $cswebApi->get("/dictionaries/{$name}");
return response()->json($dictionary);
}
}Ressources
- OAuth Authentication : API - OAuth2
- Breakout API : API - Breakout
- Webhooks API : API - Webhooks
CSWeb Community Platform v2.0 - Dictionaries API