Developers
API documentation
Public JSON endpoints for published content, dashboards, search, feeds, and selected submission workflows across Dzaleka Online Services.
Base URL
https://services.dzaleka.com/api
Authentication
Read access is public. Some action endpoints accept JSON submissions without account auth.
Format
JSON responses by default. RSS is available at /api/rss.
Rate limiting
Collection and search endpoints are limited to 60 requests per minute per IP.
Discovery
Agents can discover this API from Link response headers on HTML pages, the API catalog at /.well-known/api-catalog, the browser tool server card at /.well-known/mcp/server-card.json, and the OpenAPI document below.
API catalog
/.well-known/api-catalogWell-known discovery document in Linkset JSON format for agents and automated API clients.
application/linkset+json
MCP server card
/.well-known/mcp/server-card.jsonSEP-1649-style discovery document describing the browser-side WebMCP tool surface and where to learn more about it.
application/json
OpenAPI description
/api/openapi.jsonMachine-readable OpenAPI 3.1 document for the public API.
application/openapi+json
API status
/api/statusLightweight health and discovery status document.
application/json
Homepage Link header
</.well-known/api-catalog>; rel="api-catalog"; type="application/linkset+json", </api/openapi.json>; rel="service-desc"; type="application/openapi+json", </api-docs>; rel="service-doc"; type="text/html", </api/status>; rel="status"; type="application/json"
Markdown negotiation
HTML pages also respond in markdown when the request sends Accept: text/markdown. Those responses return Content-Type: text/markdown, Vary: Accept, and an x-markdown-tokens estimate for agents.
Browser agent tools
On supported browsers, site pages also publish read-only WebMCP tools for search, services search, weather summary, urgent help contacts, language support routes, and newcomer first steps. The published server card lives at /.well-known/mcp/server-card.json, and published agent skills are available at /.well-known/agent-skills/index.json.
Collection endpoints
These endpoints share the same public response pattern. `GET` returns the full collection, `POST` returns the same collection with optional metadata and stats, and `OPTIONS` is available for CORS.
Services
/api/servicesservicesPublished service organisations and support listings.
Resources
/api/resourcesresourcesPublished resources, documents, and downloads.
Events
/api/eventseventsPublished community events and activity listings.
Photos
/api/photosphotosPhoto gallery items and related metadata.
Jobs
/api/jobsjobsPublished job listings and opportunity notices.
News
/api/newsnewsPublished news articles and updates.
Courses
/api/coursescoursesPublished e-learning course records and learning resources.
Community Voices
/api/community-voicescommunity-voicesCommunity stories and voice submissions that are already published.
Profiles
/api/profilesprofilesPublished skills exchange profiles.
Talents
/api/talentstalentsTalent directory records exposed through the API.
Marketplace Listings
/api/marketplacemarketplacePublished marketplace product and service listings.
Stores
/api/storesstoresPublished marketplace stores and vendor storefronts.
Rights Navigator
/api/rightsrightsPublished rights and legal guidance entries from the rights navigator.
Artists
/api/artistsartistsPublished artist profiles used by the public art catalogue.
Artworks
/api/artworksartworksPublished artwork records from the public art catalogue.
Poets
/api/poetspoetsPublished poet profiles and creative directory entries.
Dancers
/api/dancersdancersPublished dancer and dance crew profiles.
Docs
/api/docsdocsDocumentation pages from the docs content collection.
Pages
/api/pagespagesPublished markdown reference pages served through the catch-all page route.
Search and feeds
Search
/api/searchSearch across multiple collections with rate limiting and a short cache.
- `q` required search query, minimum 2 characters
- `collections` optional comma-separated list such as `services,resources,news`
- `limit` optional results per collection, default `10`
https://services.dzaleka.com/api/search?q=education&collections=services,events&limit=5Search Index
/api/search-index.jsonFlat public search index used by site search and lightweight integrations.
https://services.dzaleka.com/api/search-index.jsonRSS Feed
/api/rssXML RSS feed for the latest news items.
https://services.dzaleka.com/api/rssData snapshots and dashboard endpoints
Emergency Alerts
/api/alertsCurated high-priority alert items for the data page and crisis messaging.
https://services.dzaleka.com/api/alertsPopulation Snapshot
/api/populationPopulation totals, demographic split, nationality breakdown, and trend series.
https://services.dzaleka.com/api/populationFinance Snapshot
/api/financeUNHCR funding snapshot used by the data dashboard.
https://services.dzaleka.com/api/financeWeather
/api/weatherCurrent weather and forecast data, with a safe fallback if the upstream weather source is unavailable.
https://services.dzaleka.com/api/weatherWeather Alerts
/api/weather-alertsWeather alert feed for the weather page, sourced from the upstream CAP RSS feed when available.
https://services.dzaleka.com/api/weather-alertsGeolocation
/api/geolocationSame-origin geolocation proxy returning coarse location data or a safe unavailable response.
https://services.dzaleka.com/api/geolocationCharts
/api/chartsPrepared chart series used by visual dashboard sections.
https://services.dzaleka.com/api/chartsAnalytics Pageviews
/api/analytics/pageviewsLightweight pageview total used by analytics widgets.
https://services.dzaleka.com/api/analytics/pageviewsAction and submission endpoints
These endpoints accept request bodies and are used for export flows, skills matching, visit booking confirmations, and community voice submissions.
Export
/api/exportExport multiple content collections in one response, with optional metadata and stats.
- `GET` returns the export endpoint description and supported collections.
- `POST` accepts a JSON body with `collections` and optional `options.includeMetadata` / `options.includeStats`.
curl -X POST "https://services.dzaleka.com/api/export" -H "Content-Type: application/json" -d '{"collections":["services","resources","events"],"options":{"includeMetadata":true,"includeStats":true}}'Match Category
/api/match-categoryAccepts a skills category and returns a simple matching confirmation response for the skills exchange flow.
- Body requires `category`.
curl -X POST "https://services.dzaleka.com/api/match-category" -H "Content-Type: application/json" -d '{"category":"Business"}'Submit Voice
/api/submit-voiceSubmits a community voice/story payload for follow-up review and email notification.
- Body requires `title`, `author`, and `content`.
curl -X POST "https://services.dzaleka.com/api/submit-voice" -H "Content-Type: application/json" -d '{"title":"Story title","author":"Name","content":"Story text"}'Send Booking Confirmation
/api/send-booking-confirmationProcesses a visit booking request and sends a booking confirmation email.
- Used by the visit booking flow. Requires booking details in JSON.
curl -X POST "https://services.dzaleka.com/api/send-booking-confirmation" -H "Content-Type: application/json" -d '{"name":"Visitor","email":"visitor@example.com","visitDate":"2026-04-20","visitTime":"10:00","groupSize":"2-5","tourType":"standard","meetingPoint":"appfactory","paymentMethod":"cash"}'Example responses
Collection response shape
{
"status": "success",
"count": 147,
"data": {
"services": [
{
"id": "sample-service",
"collection": "services",
"title": "Sample service"
}
]
}
}Search response shape
{
"status": "success",
"query": "education",
"totalResults": 3,
"results": {
"services": [
{
"slug": "sample-service",
"title": "Education service",
"collection": "services",
"url": "/services/sample-service"
}
],
"events": [
{
"slug": "sample-event",
"title": "Education workshop",
"collection": "events",
"url": "/events/sample-event"
}
]
},
"cached": false
}Export response shape
{
"status": "success",
"data": {
"services": [
{
"id": "sample-service",
"title": "Sample service"
}
],
"resources": [
{
"id": "sample-resource",
"title": "Sample resource"
}
],
"metadata": {
"exportDate": "2026-04-14T01:00:00.000Z",
"totalCollections": 2,
"collections": [
"services",
"resources"
]
},
"stats": {
"totalItems": 2,
"itemsPerCollection": {
"services": 1,
"resources": 1
}
}
}
}