Skip to main content

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
GET POST OPTIONS
services

Published service organisations and support listings.

Resources

/api/resources
GET POST OPTIONS
resources

Published resources, documents, and downloads.

Events

/api/events
GET POST OPTIONS
events

Published community events and activity listings.

Photos

/api/photos
GET POST OPTIONS
photos

Photo gallery items and related metadata.

Jobs

/api/jobs
GET POST OPTIONS
jobs

Published job listings and opportunity notices.

News

/api/news
GET POST OPTIONS
news

Published news articles and updates.

Courses

/api/courses
GET POST OPTIONS
courses

Published e-learning course records and learning resources.

Community Voices

/api/community-voices
GET POST OPTIONS
community-voices

Community stories and voice submissions that are already published.

Profiles

/api/profiles
GET POST OPTIONS
profiles

Published skills exchange profiles.

Talents

/api/talents
GET POST OPTIONS
talents

Talent directory records exposed through the API.

Marketplace Listings

/api/marketplace
GET POST OPTIONS
marketplace

Published marketplace product and service listings.

Stores

/api/stores
GET POST OPTIONS
stores

Published marketplace stores and vendor storefronts.

Rights Navigator

/api/rights
GET POST OPTIONS
rights

Published rights and legal guidance entries from the rights navigator.

Artists

/api/artists
GET POST OPTIONS
artists

Published artist profiles used by the public art catalogue.

Artworks

/api/artworks
GET POST OPTIONS
artworks

Published artwork records from the public art catalogue.

Poets

/api/poets
GET POST OPTIONS
poets

Published poet profiles and creative directory entries.

Dancers

/api/dancers
GET POST OPTIONS
dancers

Published dancer and dance crew profiles.

Docs

/api/docs
GET POST OPTIONS
docs

Documentation pages from the docs content collection.

Pages

/api/pages
GET POST OPTIONS
pages

Published markdown reference pages served through the catch-all page route.

Search and feeds

Search

/api/search
GET OPTIONS

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
GET

Flat public search index used by site search and lightweight integrations.

https://services.dzaleka.com/api/search-index.json

RSS Feed

/api/rss
GET

XML RSS feed for the latest news items.

https://services.dzaleka.com/api/rss

Data snapshots and dashboard endpoints

Emergency Alerts

/api/alerts
GET

Curated high-priority alert items for the data page and crisis messaging.

https://services.dzaleka.com/api/alerts

Population Snapshot

/api/population
GET

Population totals, demographic split, nationality breakdown, and trend series.

https://services.dzaleka.com/api/population

Finance Snapshot

/api/finance
GET

UNHCR funding snapshot used by the data dashboard.

https://services.dzaleka.com/api/finance

Weather

/api/weather
GET

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
GET

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
GET

Same-origin geolocation proxy returning coarse location data or a safe unavailable response.

https://services.dzaleka.com/api/geolocation

Charts

/api/charts
GET

Prepared chart series used by visual dashboard sections.

https://services.dzaleka.com/api/charts

Analytics Pageviews

/api/analytics/pageviews
GET

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
GET POST OPTIONS

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
POST

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
POST

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
POST

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
      }
    }
  }
}