The CLIF public API provides the read-only data the public Board of Estimates dashboard needs: meeting dates, departments, public settings, texts and page content. It returns JSON and exposes only data that administrators have marked as public.
Base URL#
All endpoints below are relative to this address. Always use HTTPS.
Organization and access#
The API needs no credentials. It works out which organization a request belongs to from the address of the calling website (the
Origin header) or, failing that, from the API host name, and returns that organization's data only.
Endpoints#
| Method | Path | Purpose |
|---|---|---|
| GET | /api/MeetingSchedule | Board meeting dates. |
| GET | /api/Department | Departments (agencies). |
| GET | /api/Parameter | Public parameters. |
| GET | /api/LanguageResource | Public texts. |
| GET | /api/PagePart | Public page content blocks. |
| GET | /api/Tenant | Organization details. |
| POST | /api/Exception | Report an error from the public site. |
Meeting dates#
Returns the Board meetings as an object that maps each meeting id to its start date and time.
curl https://staging-api.interflow-ai.com/api/MeetingSchedule \
-H "Origin: https://your-public-site"{
"ab12cd34ef": "2025-03-05T09:00:00",
"gh56ij78kl": "2025-03-19T09:00:00"
}Departments#
Returns the departments as an object that maps each department id to its name.
{
"k3n8p2q7rs": "Department of Public Works",
"t5v9w1x4yz": "Department of Finance"
}Public parameters#
Returns the parameters marked Is Public, by name.
{
"PublicArtPercent": "1"
}Public texts#
Returns the language resources marked Is Public, by key, so the public site can show the same wording as CLIF.
{
"Home": "Home",
"Search": "Search"
}Page content#
Returns the page parts marked Is Public: HTML content by access name.
{
"public-introduction": "<p>Welcome to the Board of Estimates dashboard.</p>"
}Organization#
Returns the organization the request belongs to, with its properties as strings (for example its id, logo and web address).
{
"TenantId": "m2n4b6v8c0",
"LogoId": "seal",
"Domain": "https://public.example.org"
}Report an error#
Lets the public site record an error in CLIF's Error Logs. The body is a JSON string whose content is the exception serialized with Json.NET, so the full exception (type, message, stack trace) can be rebuilt on the server. The response has no body.
catch (Exception ex)
{
// The body is a JSON string that itself contains the Json.NET-serialized exception.
var body = JsonConvert.SerializeObject(JsonConvert.SerializeObject(ex));
using var content = new StringContent(body, Encoding.UTF8, "application/json");
await http.PostAsync("https://staging-api.interflow-ai.com/api/Exception", content);
}