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-catalog Well-known discovery document in Linkset JSON format for agents and automated API clients.
application/linkset+json
MCP server card
/.well-known/mcp/server-card.json SEP-1649-style discovery document describing the browser-side WebMCP tool surface and where to learn more about it.
application/json
OpenAPI description
/api/openapi.json Machine-readable OpenAPI 3.1 document for the public API.
application/openapi+json
API status
/api/status Lightweight 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/services services Published service organisations and support listings.
Resources
/api/resources resources Published resources, documents, and downloads.
Events
/api/events events Published community events and activity listings.
Photos
/api/photos photos Photo gallery items and related metadata.
Jobs
/api/jobs jobs Published job listings and opportunity notices.
News
/api/news news Published news articles and updates.
Courses
/api/courses courses Published e-learning course records and learning resources.
Community Voices
/api/community-voices community-voices Community stories and voice submissions that are already published.
Profiles
/api/profiles profiles Published skills exchange profiles.
Talents
/api/talents talents Talent directory records exposed through the API.
Marketplace Listings
/api/marketplace marketplace Published marketplace product and service listings.
Stores
/api/stores stores Published marketplace stores and vendor storefronts.
Rights Navigator
/api/rights rights Published rights and legal guidance entries from the rights navigator.
Artists
/api/artists artists Published artist profiles used by the public art catalogue.
Artworks
/api/artworks artworks Published artwork records from the public art catalogue.
Poets
/api/poets poets Published poet profiles and creative directory entries.
Dancers
/api/dancers dancers Published dancer and dance crew profiles.
Docs
/api/docs docs Documentation pages from the docs content collection.
Pages
/api/pages pages Published markdown reference pages served through the catch-all page route.
Search and feeds
Search
/api/search Search 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=5 Search Index
/api/search-index.json Flat public search index used by site search and lightweight integrations.
https://services.dzaleka.com/api/search-index.json RSS Feed
/api/rss XML RSS feed for the latest news items.
https://services.dzaleka.com/api/rss Data snapshots and dashboard endpoints
Emergency Alerts
/api/alerts Curated high-priority alert items for the data page and crisis messaging.
https://services.dzaleka.com/api/alerts Population Snapshot
/api/population Population totals, demographic split, nationality breakdown, and trend series.
https://services.dzaleka.com/api/population Finance Snapshot
/api/finance UNHCR funding snapshot used by the data dashboard.
https://services.dzaleka.com/api/finance Weather
/api/weather Current weather and forecast data, with a safe fallback if the upstream weather source is unavailable.
https://services.dzaleka.com/api/weather Weather Alerts
/api/weather-alerts Weather alert feed for the weather page, sourced from the upstream CAP RSS feed when available.
https://services.dzaleka.com/api/weather-alerts Geolocation
/api/geolocation Same-origin geolocation proxy returning coarse location data or a safe unavailable response.
https://services.dzaleka.com/api/geolocation Charts
/api/charts Prepared chart series used by visual dashboard sections.
https://services.dzaleka.com/api/charts Analytics Pageviews
/api/analytics/pageviews Lightweight pageview total used by analytics widgets.
https://services.dzaleka.com/api/analytics/pageviews Action 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/export Export 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-category Accepts 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-voice Submits 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-confirmation Processes 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
}
}
}
}