{"openapi":"3.1.0","info":{"title":"Consom'Action public API","version":"1.0.0","summary":"Read-only open data API of Consom'Action (Burkina Faso).","description":"Aggregate survey results, barometers, operator trust scores, indices and the open data catalogue. JSON keys are in English; labels follow `?lang=fr|en` or `Accept-Language`. Aggregates only: no individual data, test participations and excluded answers are left out. Anonymous: 60 requests/minute per IP; with an API key (`Authorization: Bearer <key>`): 600 requests/minute.","contact":{"name":"Consom'Action","email":"donnees@consomaction.bf"},"license":{"name":"ODbL 1.0 (data)","url":"https://opendatacommons.org/licenses/odbl/1-0/"}},"servers":[{"url":"https://dev.consomaction.bf/api/v1","description":"Consom'Action Burkina"}],"security":[[],{"bearer":[]}],"tags":[{"name":"meta"},{"name":"surveys"},{"name":"results"},{"name":"barometers"},{"name":"indices"},{"name":"datasets"},{"name":"prices","description":"Participatory price observatory: reference basket, statistics, ICP-CA index, daily aggregates (never individual reports)."},{"name":"comparators","description":"Field-based comparators (mystery shopping): announced offers, validated observations, Mobile Money fee simulation."}],"paths":{"/meta":{"get":{"tags":["meta"],"summary":"API metadata, licence, contact, last update and release calendar","operationId":"getMeta","parameters":[{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Meta"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/openapi.json":{"get":{"tags":["meta"],"summary":"This OpenAPI description","operationId":"getOpenApi","responses":{"200":{"description":"OpenAPI 3.1 document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/themes":{"get":{"tags":["meta"],"summary":"Topics with counts of public items","operationId":"listThemes","parameters":[{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Theme"}}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/surveys":{"get":{"tags":["surveys"],"summary":"Surveys currently open to the public","operationId":"listSurveys","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/page"},{"$ref":"#/components/parameters/per_page"},{"$ref":"#/components/parameters/theme"},{"$ref":"#/components/parameters/from"},{"$ref":"#/components/parameters/to"}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data","links","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Survey"}},"links":{"$ref":"#/components/schemas/Links"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/results":{"get":{"tags":["results"],"summary":"Published results (provisional or final)","operationId":"listResults","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/page"},{"$ref":"#/components/parameters/per_page"},{"$ref":"#/components/parameters/theme"},{"$ref":"#/components/parameters/from"},{"$ref":"#/components/parameters/to"},{"name":"status","in":"query","required":false,"description":"Publication status.","schema":{"type":"string","enum":["provisional","final"]}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data","links","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ResultSummary"}},"links":{"$ref":"#/components/schemas/Links"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/results/{slug}":{"get":{"tags":["results"],"summary":"Full published result with methodology and aggregate statistics","operationId":"getResult","parameters":[{"$ref":"#/components/parameters/lang"},{"name":"slug","in":"path","required":true,"description":"Identifiant public (slug).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Result"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/results/{slug}/questions/{code}":{"get":{"tags":["results"],"summary":"One published question","operationId":"getResultQuestion","parameters":[{"$ref":"#/components/parameters/lang"},{"name":"slug","in":"path","required":true,"description":"Identifiant public (slug).","schema":{"type":"string"}},{"name":"code","in":"path","required":true,"description":"Stable question code.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/QuestionResult"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/barometers":{"get":{"tags":["barometers"],"summary":"Public barometers","operationId":"listBarometers","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/page"},{"$ref":"#/components/parameters/per_page"},{"$ref":"#/components/parameters/theme"}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data","links","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BarometerSummary"}},"links":{"$ref":"#/components/schemas/Links"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/barometers/{slug}":{"get":{"tags":["barometers"],"summary":"Barometer waves, trends of recurring questions and operator trust scores","operationId":"getBarometer","parameters":[{"$ref":"#/components/parameters/lang"},{"name":"slug","in":"path","required":true,"description":"Identifiant public (slug).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Barometer"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/indices":{"get":{"tags":["indices"],"summary":"Published index values","operationId":"listIndices","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/page"},{"$ref":"#/components/parameters/per_page"},{"$ref":"#/components/parameters/from"},{"$ref":"#/components/parameters/to"},{"name":"code","in":"query","required":false,"description":"Index code (e.g. ICSE).","schema":{"type":"string"}},{"name":"geography","in":"query","required":false,"description":"Area code (e.g. BF).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data","links","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IndexValue"}},"links":{"$ref":"#/components/schemas/Links"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/datasets":{"get":{"tags":["datasets"],"summary":"Open data catalogue","operationId":"listDatasets","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/page"},{"$ref":"#/components/parameters/per_page"},{"$ref":"#/components/parameters/theme"},{"$ref":"#/components/parameters/from"},{"$ref":"#/components/parameters/to"},{"name":"source_type","in":"query","required":false,"description":"Dataset origin.","schema":{"type":"string","enum":["publication","barometer","indices"]}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data","links","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Dataset"}},"links":{"$ref":"#/components/schemas/Links"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/datasets/{slug}":{"get":{"tags":["datasets"],"summary":"Dataset details with methodology and citation","operationId":"getDataset","parameters":[{"$ref":"#/components/parameters/lang"},{"name":"slug","in":"path","required":true,"description":"Identifiant public (slug).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Dataset"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/prices/items":{"get":{"tags":["prices"],"summary":"Reference basket items with national statistics","operationId":"listPriceItems","parameters":[{"$ref":"#/components/parameters/lang"},{"name":"category","in":"query","required":false,"description":"Item category.","schema":{"type":"string","enum":["food","energy","water","transport","telecoms","health","hygiene","housing"]}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PriceItem"}},"meta":{"type":"object"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/prices/items/{code}":{"get":{"tags":["prices"],"summary":"One item: statistics by city and monthly series","operationId":"getPriceItem","parameters":[{"$ref":"#/components/parameters/lang"},{"name":"code","in":"path","required":true,"schema":{"type":"string"},"description":"Stable item code (e.g. riz_local)."}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/PriceItem"},{"type":"object","properties":{"cities":{"type":"array","items":{"type":"object","properties":{"city":{"type":"string"},"name":{"type":"string"},"region":{"type":"string"}}}},"series":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"period":{"type":"string"},"median":{"type":"number"}}}}}}}]},"meta":{"type":"object"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"404":{"$ref":"#/components/responses/NotFound"},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/prices/index":{"get":{"tags":["prices"],"summary":"Published Consom'Action price index (ICP-CA), national or by city","operationId":"getPriceIndex","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/from"},{"$ref":"#/components/parameters/to"},{"name":"city","in":"query","required":false,"description":"City slug (e.g. ouagadougou); national when omitted.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PriceIndexPoint"}},"meta":{"type":"object","properties":{"code":{"type":"string"},"base":{"type":"integer"},"method":{"type":"string"},"geography":{"type":"string"}}}}}}}},"304":{"description":"Not modified (If-None-Match)."},"404":{"$ref":"#/components/responses/NotFound"},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/prices/reports":{"get":{"tags":["prices"],"summary":"Daily aggregates of verified price reports (never individual reports)","operationId":"listPriceReportAggregates","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/from"},{"$ref":"#/components/parameters/to"},{"name":"item","in":"query","required":false,"description":"Item code.","schema":{"type":"string"}},{"name":"city","in":"query","required":false,"description":"City slug; all cities pooled when omitted.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Cache-Control":{"$ref":"#/components/headers/CacheControl"}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PriceDailyAggregate"}},"meta":{"type":"object"}}}}}},"304":{"description":"Not modified (If-None-Match)."},"404":{"$ref":"#/components/responses/NotFound"},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/Invalid"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/comparators":{"get":{"tags":["comparators"],"summary":"Published comparator categories","operationId":"listComparators","parameters":[{"$ref":"#/components/parameters/lang"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"name":{"type":"string"},"links":{"type":"object","properties":{"self":{"type":"string","format":"uri"}}}}}}}}}}}}}},"/comparators/{category}":{"get":{"tags":["comparators"],"summary":"Offers and validated observations of a comparator category","operationId":"showComparator","parameters":[{"$ref":"#/components/parameters/lang"},{"name":"category","in":"path","required":true,"schema":{"type":"string","enum":["mobile-money-fees","bank-fees","data-plans","service-quality"]}},{"name":"amount","in":"query","required":false,"description":"mobile-money-fees only: amount in FCFA to simulate.","schema":{"type":"integer","minimum":1}},{"name":"operation","in":"query","required":false,"description":"mobile-money-fees only.","schema":{"type":"string","enum":["withdrawal","transfer"],"default":"withdrawal"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Comparator"}}}}}},"404":{"description":"Unknown or unpublished category"},"422":{"description":"Invalid parameters"}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional API key (raises the quota). Also accepted in the X-Api-Key header."}},"parameters":{"lang":{"name":"lang","in":"query","required":false,"description":"Label language (defaults to Accept-Language, then French).","schema":{"type":"string","enum":["fr","en"]}},"page":{"name":"page","in":"query","required":false,"description":"Page number.","schema":{"type":"integer","minimum":1,"default":1}},"per_page":{"name":"per_page","in":"query","required":false,"description":"Items per page (max 100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},"theme":{"name":"theme","in":"query","required":false,"description":"Topic slug (see /themes).","schema":{"type":"string"}},"from":{"name":"from","in":"query","required":false,"description":"Start date (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},"to":{"name":"to","in":"query","required":false,"description":"End date (YYYY-MM-DD).","schema":{"type":"string","format":"date"}}},"headers":{"ETag":{"description":"Entity tag of the response body.","schema":{"type":"string"}},"CacheControl":{"description":"public, max-age=600","schema":{"type":"string"}}},"responses":{"NotFound":{"description":"Not found or not published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Invalid, expired or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Invalid":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"errors":{"type":"object"}}}}}},"TooManyRequests":{"description":"Quota exceeded.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"Links":{"type":"object","properties":{"first":{"type":["string","null"]},"last":{"type":["string","null"]},"prev":{"type":["string","null"]},"next":{"type":["string","null"]}}},"PaginationMeta":{"type":"object","properties":{"current_page":{"type":"integer"},"from":{"type":["integer","null"]},"last_page":{"type":"integer"},"per_page":{"type":"integer"},"to":{"type":["integer","null"]},"total":{"type":"integer"},"path":{"type":"string"}}},"Theme":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"color":{"type":["string","null"]},"results":{"type":"integer"},"open_surveys":{"type":"integer"},"datasets":{"type":"integer"}}},"ThemeRef":{"type":["object","null"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"Survey":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"theme":{"$ref":"#/components/schemas/ThemeRef"},"estimated_minutes":{"type":["integer","null"]},"questions":{"type":"integer"},"participants":{"type":["integer","null"]},"languages":{"type":"array","items":{"type":"string"}},"opened_at":{"type":["string","null"]},"closes_at":{"type":["string","null"]},"links":{"type":"object","properties":{"participate":{"type":"string","format":"uri"}}}}},"ResultSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"title":{"type":"string"},"theme":{"$ref":"#/components/schemas/ThemeRef"},"status":{"type":"string","enum":["provisional","final"]},"published_at":{"type":["string","null"]},"respondents":{"type":"integer"},"headline":{"type":["object","null"],"properties":{"question":{"type":"string"},"value":{"type":"number"},"unit":{"type":"string"},"text":{"type":"string"}}},"links":{"type":"object","properties":{"self":{"type":"string"},"html":{"type":"string"},"csv":{"type":"string"}}}}},"Question":{"type":"object","properties":{"code":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"respondents":{"type":"integer"},"missing":{"type":"integer"},"multiple":{"type":"boolean"},"chart":{"type":"string"},"reading":{"type":"string"},"distribution":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"},"percent":{"type":"number"}}}},"statistics":{"type":"object","properties":{"mean":{"type":"number"},"median":{"type":"number"},"sd":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"},"top2":{"type":"number"},"nps":{"type":"number"},"promoters":{"type":"number"},"passives":{"type":"number"},"detractors":{"type":"number"},"scale":{"type":"object","properties":{"min":{"type":"integer"},"max":{"type":"integer"}}}}},"links":{"type":"object"}}},"Result":{"allOf":[{"$ref":"#/components/schemas/ResultSummary"},{"type":"object","properties":{"description":{"type":"string"},"series":{"type":["object","null"],"properties":{"slug":{"type":"string"},"wave":{"type":["integer","null"]}}},"fieldwork":{"type":"object","properties":{"from":{"type":["string","null"]},"to":{"type":["string","null"]}}},"methodology":{"type":"object","properties":{"population":{"type":"string"},"recruitment":{"type":"string"},"collection":{"type":"string"},"limits":{"type":"string"},"incomplete_excluded":{"type":"integer"},"status_note":{"type":"string"},"notes":{"type":["string","null"]}}},"summary":{"type":["string","null"]},"key_takeaways":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"citation":{"type":"string"},"questions":{"type":"array","items":{"$ref":"#/components/schemas/Question"}},"notice":{"type":"string"}}}]},"QuestionResult":{"type":"object","properties":{"result":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"respondents":{"type":"integer"},"links":{"type":"object"}}},"question":{"$ref":"#/components/schemas/Question"}}},"BarometerSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"theme":{"$ref":"#/components/schemas/ThemeRef"},"periodicity":{"type":"string"},"waves":{"type":"integer"},"published_waves":{"type":"integer"},"links":{"type":"object"}}},"OperatorScore":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"rank":{"type":["integer","null"]},"respondents":{"type":"integer"},"rated":{"type":"boolean"},"score":{"type":["number","null"]},"confidence_interval":{"type":["array","null"],"items":{"type":"number"},"minItems":2,"maxItems":2},"components":{"type":"object","properties":{"satisfaction":{"type":["number","null"]},"trust":{"type":["number","null"]},"resolution":{"type":["number","null"]},"nps":{"type":["number","null"]}}},"nps":{"type":["number","null"]},"complaint_rate":{"type":["number","null"]},"evolution":{"type":["object","null"],"properties":{"previous":{"type":["number","null"]},"delta":{"type":["number","null"]},"significant":{"type":"boolean"}}},"top_problems":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"},"percent":{"type":"number"}}}}}},"Barometer":{"allOf":[{"$ref":"#/components/schemas/BarometerSummary"},{"type":"object","properties":{"wave_list":{"type":"array","items":{"type":"object","properties":{"number":{"type":"integer"},"title":{"type":"string"},"slug":{"type":"string"},"date":{"type":["string","null"]},"published":{"type":"boolean"},"status":{"type":["string","null"]},"respondents":{"type":["integer","null"]}}}},"evolutions":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"unit":{"type":"string"},"indicator":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"wave":{"type":"string"},"date":{"type":"string"},"value":{"type":"number"},"respondents":{"type":"integer"}}}},"delta":{"type":["number","null"]}}}},"trust_scores":{"type":["object","null"],"description":"Trust score = 40% satisfaction + 30% trust + 15% complaints dealt with + 15% normalised NPS, out of 100; rated from 30 respondents; 95% confidence interval.","properties":{"wave":{"type":"object"},"method":{"type":"object","properties":{"weights":{"type":"object"},"min_respondents":{"type":"integer"},"confidence_level":{"type":"number"},"description":{"type":"string"}}},"sectors":{"type":"array","items":{"type":"object","properties":{"sector":{"type":"string","enum":["electricity","water","telecom","mobile_money","bank","health","transport"]},"label":{"type":"string"},"operators":{"type":"array","items":{"$ref":"#/components/schemas/OperatorScore"}}}}}}}}}]},"IndexValue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"code":{"type":"string"},"label":{"type":"string"},"period":{"type":"string"},"period_start":{"type":"string","format":"date"},"period_end":{"type":["string","null"]},"value":{"type":"number"},"unit":{"type":"string"},"geography":{"type":"string"},"respondents":{"type":["integer","null"]},"method":{"type":["string","null"]},"source":{"type":["string","null"]},"published_at":{"type":["string","null"]}}},"Dataset":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"reference":{"type":"string","examples":["CA-DATA-2026-001"]},"title":{"type":"string"},"description":{"type":"string"},"source_type":{"type":"string","enum":["publication","barometer","indices"]},"theme":{"$ref":"#/components/schemas/ThemeRef"},"license":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"}}},"publisher":{"type":"string"},"source":{"type":["string","null"]},"periodicity":{"type":["string","null"]},"coverage":{"type":["string","null"]},"last_updated_at":{"type":["string","null"]},"published_at":{"type":["string","null"]},"downloads":{"type":"integer"},"formats":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string","enum":["csv","json","dictionary","scores"]},"size":{"type":"integer"},"url":{"type":"string"}}}},"links":{"type":"object"},"methodology":{"type":["string","null"]},"citation":{"type":"string"},"notice":{"type":"string"}}},"CalendarEntry":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["barometer","index"]},"title":{"type":"string"},"planned_at":{"type":"string","format":"date"},"status":{"type":"string","enum":["planned","published","postponed","cancelled"]},"series":{"type":["string","null"]},"index_code":{"type":["string","null"]}}},"Meta":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"api_version":{"type":"string"},"version":{"type":"string"},"publisher":{"type":"string"},"license":{"type":"object"},"contact":{"type":"object"},"documentation":{"type":"string"},"openapi":{"type":"string"},"last_updated_at":{"type":["string","null"]},"rate_limits":{"type":"object","properties":{"anonymous_per_minute":{"type":"integer"},"token_per_minute":{"type":"integer"}}},"cache_seconds":{"type":"integer"},"notice":{"type":"string"},"calendar":{"type":"array","items":{"$ref":"#/components/schemas/CalendarEntry"}}}},"PriceStat":{"type":["object","null"],"description":"Statistics over the last 30 days, in CFA francs for the reference quantity.","properties":{"median":{"type":"number"},"trimmed_mean":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"},"n":{"type":"integer"},"change_30d":{"type":["number","null"],"description":"% change of the median vs days 31-60."},"change_12m":{"type":["number","null"],"description":"% change vs the same 30 days one year earlier."}}},"PriceItem":{"type":"object","required":["code","name","category","unit","reference_quantity","weight"],"properties":{"code":{"type":"string","example":"riz_local"},"name":{"type":"string"},"category":{"type":"string","enum":["food","energy","water","transport","telecoms","health","hygiene","housing"]},"category_label":{"type":"string"},"unit":{"type":"string"},"reference_quantity":{"type":"number"},"reference_label":{"type":"string"},"weight":{"type":"number","description":"Weight in the index (per mille of the basket)."},"national":{"$ref":"#/components/schemas/PriceStat"}}},"PriceIndexPoint":{"type":"object","properties":{"code":{"type":"string","example":"ICP-CA"},"scope":{"type":"string","enum":["national","city"]},"city":{"type":["string","null"]},"period":{"type":"string","example":"2026-09"},"value":{"type":"number","description":"Index value, base 100."},"is_base":{"type":"boolean"},"reports":{"type":"integer"},"coverage":{"type":"number","description":"Share of basket items observed (%)."},"comment":{"type":["string","null"]},"published_at":{"type":["string","null"],"format":"date-time"}}},"PriceDailyAggregate":{"type":"object","properties":{"date":{"type":"string","format":"date"},"item":{"type":"string"},"city":{"type":["string","null"]},"n":{"type":"integer"},"median":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"}}},"Comparator":{"type":"object","properties":{"category":{"type":"string"},"name":{"type":"string"},"methodology":{"type":"string"},"data_updated_at":{"type":["string","null"],"format":"date-time"},"offers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"code":{"type":"string"},"name":{"type":"string"},"operator":{"type":["object","null"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"country":{"type":"string"},"attributes":{"type":"object","description":"Category-specific attributes (fee tiers, price, volume, delays)."},"announced_source":{"type":"object","properties":{"url":{"type":["string","null"]},"date":{"type":["string","null"],"format":"date"}}},"valid_from":{"type":["string","null"],"format":"date"},"valid_to":{"type":["string","null"],"format":"date"},"observations":{"type":"array","items":{"type":"object","properties":{"value":{"type":"object"},"observed_at":{"type":"string","format":"date-time"},"city":{"type":["string","null"]},"source":{"type":"string"}}}}}}},"simulation":{"type":"object","description":"Present for mobile-money-fees when amount is given.","properties":{"amount":{"type":"number"},"operation":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"operator":{"type":"string"},"announced":{"type":["number","null"]},"observed":{"type":["number","null"]},"observations":{"type":"integer"},"gap":{"type":["number","null"]},"gap_pct":{"type":["number","null"]}}}}}}}}}}}