{
  "name": "FALASTEEN.AI",
  "description": "A non-commercial, public-interest research archive for Palestine. Every factual claim is cited to a checkable source.",
  "homepage": "https://falasteen.ai/",
  "generated": "2026-08-22T16:08:58.380Z",
  "contract": {
    "kind": "static-files",
    "detail": "This is a statically built site. Every entry below is a file served from a CDN — no application server, no application-level authentication or rate limit, and no key. CDN abuse controls may still apply. Fetch the files directly. CORS is open on the endpoints marked cors: true.",
    "versioning": "Paths are stable, and retired paths redirect where possible. Response fields may be added; a breaking field rename or removal requires a new versioned endpoint or contract."
  },
  "licence": {
    "id": "falasteen-attribution",
    "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
    "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
    "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
  },
  "endpoints": [
    {
      "id": "village-dossier",
      "title": "Village dossier",
      "url": "https://falasteen.ai/atlas/{key}.json",
      "example": "https://falasteen.ai/atlas/lifta.json",
      "method": "GET",
      "media": "application/json",
      "count": 614,
      "recordCount": 430,
      "atlasRecordCount": 425,
      "writtenRecordCount": 189,
      "writtenWithoutAtlasMatch": 5,
      "detail": "614 addressable keys covering 430 village records: 425 sites in the Atlas's 1948 village layer, plus 5 written records without an Atlas match. A mapped record with a written page may answer to both our slug (`lifta`) and its lowercased Wikidata QID (`q2599091`); map-only records generally answer to the QID and unmatched written records to the slug. Do not infer one depopulation year from this endpoint—read each dossier's `depopulated` field.",
      "shape": {
        "key": "string — canonical internal dossier key, usually the written slug; an alias URL may return the same dossier with a key different from the requested filename",
        "name": "string",
        "nameAr": "string | null — Arabic name",
        "district": "string | null — British Mandate district",
        "population": "number | null — PRE-1948 population. Never a present-day figure.",
        "slug": "string | null — our record slug, when a written record exists",
        "qid": "string | null — Wikidata QID",
        "wikipedia": "string | null — Wikidata-provided English Wikipedia URL",
        "lat": "number | null",
        "lon": "number | null",
        "depopulated": "string | null — date or year of depopulation",
        "href": "string | null — path to the written record on this site",
        "excerpt": "string | null",
        "image": "string | null — normally a root-relative locally hosted image derivative; may be an absolute licence-checked source-host fallback when no derivative exists",
        "imageCredit": "string | null",
        "people": "array — poets and figures joined to this village",
        "heroes": "array — documented individuals; READ `status`, see caution",
        "testimonies": "array",
        "poems": "array",
        "culture": "array",
        "timeline": "array",
        "families": "array",
        "books": "array",
        "places": "array — other places linked to this one",
        "other": "array — linked records that do not fit a named bucket",
        "nearby": "array — nearest villages by haversine distance",
        "join": "object | null — provenance of how this dossier was assembled",
        "counts": "object — per-bucket totals. The uncapped people and heroes buckets overlap on figures, while returned arrays are capped independently. Use `peopleUnique` rather than adding the bucket counts."
      },
      "caution": [
        "Relationship arrays are relevance-sorted previews capped at 12 entries per bucket; `nearby` is capped at five. The `counts` object reports uncapped totals. Use the repository graph.json when complete edge enumeration is required.",
        "Every joined item carries `evidence` (the literal text that justified the link) and `confidence` (`certain` from a structured field, `probable` inferred from prose). A `probable` link is a reading aid, never a citation. Render it as a pointer — \"mentioned in\" — not as an assertion.",
        "A relation ending in `-near` means NEAR, not IN. \"Beita, near Nablus\" is not Nablus.",
        "The `heroes` array is NOT a list of the dead. Each entry includes a `status` field: killed, survived, missing, imprisoned, displaced, injured, or null for figures joined through a non-status relation. Never infer death from presence in this array or from a null status; read both `status` and `relation`."
      ],
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        },
        {
          "id": "CC0-1.0",
          "summary": "CC0 1.0 Universal. No attribution required; we credit it anyway.",
          "attribution": "Coordinates: Wikidata",
          "url": "https://creativecommons.org/publicdomain/zero/1.0/"
        },
        {
          "id": "ODbL-1.0",
          "summary": "Open Database License 1.0. Attribution is a legal obligation, not a courtesy, and it must travel with any derivative.",
          "attribution": "© OpenStreetMap contributors",
          "url": "https://www.openstreetmap.org/copyright"
        }
      ],
      "cors": false
    },
    {
      "id": "place-dossier",
      "title": "Place dossier — cities and camps",
      "url": "https://falasteen.ai/atlas/place/{slug}.json",
      "example": "https://falasteen.ai/atlas/place/gaza-city.json",
      "method": "GET",
      "media": "application/json",
      "count": 42,
      "detail": "Dossiers for cities, towns and refugee camps. These are the densest records in the archive: most of the people it holds were born in, wrote from, or were killed in a city rather than a village. The shared field names make the two dossier families easy to consume, but their geography is not semantically identical.",
      "shape": {
        "key": "string — the place slug this dossier answers to",
        "name": "string",
        "nameAr": "string — Arabic name",
        "district": "string — present-day region or governorate descriptor; unlike village-dossier, this is not a British Mandate district",
        "population": "null — retained for structural compatibility; this endpoint does not assert a current population",
        "slug": "string — written place-record slug",
        "qid": "null — no Wikidata QID is emitted by the current place join",
        "wikipedia": "null — no Wikipedia URL is emitted by the current place join",
        "lat": "number",
        "lon": "number",
        "depopulated": "null — not applicable to this current-place dossier family",
        "href": "string — path to the written place record",
        "excerpt": "string",
        "image": "string | null — root-relative locally hosted image derivative",
        "imageCredit": "string | null",
        "people": "array — poets and figures joined to this place",
        "heroes": "array — documented individuals; READ `status`, see caution",
        "testimonies": "array",
        "poems": "array",
        "culture": "array",
        "timeline": "array",
        "families": "array",
        "books": "array",
        "places": "array — other places linked to this one",
        "other": "array — linked records that do not fit a named bucket",
        "nearby": "array — nearby villages",
        "join": "null — no village-geodata join applies to these place records",
        "counts": "object — per-bucket totals. The uncapped people and heroes buckets overlap on figures, while returned arrays are capped independently. Use `peopleUnique` rather than adding the bucket counts."
      },
      "caution": [
        "Every caution on village-dossier applies here unchanged."
      ],
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        },
        {
          "id": "CC0-1.0",
          "summary": "CC0 1.0 Universal. No attribution required; we credit it anyway.",
          "attribution": "Coordinates: Wikidata",
          "url": "https://creativecommons.org/publicdomain/zero/1.0/"
        },
        {
          "id": "ODbL-1.0",
          "summary": "Open Database License 1.0. Attribution is a legal obligation, not a courtesy, and it must travel with any derivative.",
          "attribution": "© OpenStreetMap contributors",
          "url": "https://www.openstreetmap.org/copyright"
        }
      ],
      "cors": false
    },
    {
      "id": "registry",
      "title": "The registry of names",
      "url": "https://falasteen.ai/registry/names.json",
      "method": "GET",
      "media": "application/json",
      "count": 72835,
      "bytes": 7199800,
      "detail": "Every documented name of those killed in Gaza, as one file. Rows are positional arrays, not objects, because at this length the key repetition would triple the transfer size.",
      "shape": {
        "source": "string — the compiling body, stated in the file itself",
        "sourceUrl": "string",
        "count": "number",
        "names": "[name, arabicName, age, sex, dateOfBirth][] — sex is \"m\" | \"f\"; any field may be empty where the source list left it empty"
      },
      "caution": [
        "This is a memorial, not a dataset to be aggregated casually. The list is the Gaza Ministry of Health record as compiled by Tech for Palestine; it is acknowledged by its own publishers to be incomplete, and later revisions have added and corrected names. Cite the compiler and the retrieval date, and do not present the count as a final figure."
      ],
      "licence": [
        {
          "id": "public-domain",
          "summary": "Published for open use by Tech for Palestine, from Gaza Ministry of Health lists via Iraq Body Count.",
          "attribution": "Names: Gaza Ministry of Health, compiled by Tech for Palestine (https://data.techforpalestine.org/docs/killed-in-gaza/)",
          "url": "https://data.techforpalestine.org/docs/killed-in-gaza/"
        }
      ],
      "cors": false
    },
    {
      "id": "knowledge-pack",
      "title": "Archive knowledge pack",
      "url": "https://falasteen.ai/brain/knowledge.json",
      "method": "GET",
      "media": "application/json",
      "count": 838,
      "bytes": 1909794,
      "detail": "The build-generated passage index behind Ask the archive: one compact entry per published content record, with a canonical path and a plain-text excerpt of the record body. It is useful for retrieval and discovery, not as a substitute for the cited page.",
      "shape": {
        "count": "number",
        "entries": "{ id, type, title, subtitle, desc, url, text }[] — url is a root-relative canonical path; text is plain text clipped to 2,200 characters"
      },
      "caution": [
        "The `text` field is deliberately clipped and may not include the record’s Sources section. Follow `url`, inspect the complete record and cite that page.",
        "Collection labels in `type` are internal stable identifiers (for example `resources` routes publicly under `/research/`). Use `url` rather than constructing a route from `type`."
      ],
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "briefing-packet",
      "title": "Briefing Room packet",
      "url": "https://falasteen.ai/briefings/{id}.json",
      "example": "https://falasteen.ai/briefings/icj-order-26-january-2024.json",
      "method": "GET",
      "media": "application/json",
      "count": 3,
      "ids": [
        "saffuriyya-one-village-one-record",
        "icj-order-26-january-2024",
        "jerusalem-source-film-001"
      ],
      "detail": "One compact, printable source packet per published Briefing Room file. The HTML folio and JSON response are rendered from the same committed object, so the central sentence, limits, source ledger, reading connections, rights state and correction route cannot drift between formats.",
      "shape": {
        "schemaVersion": "number — response contract version",
        "licence": "object — reuse summary for FALASTEEN editorial text; source rights remain separate",
        "packet": "object — id, folio, kind, title, optional Arabic title, reviewedAt, stable HTML/JSON/source-record URLs, deck, scope, thesis, tags, sourced points, explicit limits, caveated reading connections, rights, source ledger, correction state and citation",
        "sourceIds": "The thesis uses `thesisSourceIds`; every point, limit and connection carries `sourceIds`. Resolve each id against `packet.sources[].id` rather than inferring support from list position."
      },
      "caution": [
        "A briefing is orientation, not a replacement for the complete record or source document. Follow the source ledger before repeating a claim.",
        "Reading connections are editorial navigation with an explicit caveat. They are not a machine-generated claim that every linked record proves every briefing point.",
        "Rights are packet-specific. `packet.rights` describes the editorial or media reuse state; each primary source retains its own terms."
      ],
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-dispatches-rss",
      "title": "RSS — Dispatches from the media desk",
      "url": "https://falasteen.ai/feeds/dispatches.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "Original, dated and bylined FALASTEEN.AI analysis, with the source trail and correction history attached.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-dispatches-json",
      "title": "JSON Feed — Dispatches from the media desk",
      "url": "https://falasteen.ai/feeds/dispatches.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "Original, dated and bylined FALASTEEN.AI analysis, with the source trail and correction history attached. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-majlis-rss",
      "title": "RSS — The Majlis Board",
      "url": "https://falasteen.ai/feeds/majlis.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "Approved public questions, replies, memories, corrections and suggestions from the FALASTEEN Majlis. Private submissions never enter this feed.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-majlis-json",
      "title": "JSON Feed — The Majlis Board",
      "url": "https://falasteen.ai/feeds/majlis.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "Approved public questions, replies, memories, corrections and suggestions from the FALASTEEN Majlis. Private submissions never enter this feed. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-villages-rss",
      "title": "RSS — The villages of 1948",
      "url": "https://falasteen.ai/feeds/villages.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "Written records of Palestinian villages depopulated in 1948 — district, date of depopulation, pre-1948 population, sources, and map coordinates.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-villages-json",
      "title": "JSON Feed — The villages of 1948",
      "url": "https://falasteen.ai/feeds/villages.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "Written records of Palestinian villages depopulated in 1948 — district, date of depopulation, pre-1948 population, sources, and map coordinates. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-timeline-rss",
      "title": "RSS — The documented chronology",
      "url": "https://falasteen.ai/feeds/timeline.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "The record from the Ottoman land code to the present, each entry linked to the primary documents it rests on.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-timeline-json",
      "title": "JSON Feed — The documented chronology",
      "url": "https://falasteen.ai/feeds/timeline.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "The record from the Ottoman land code to the present, each entry linked to the primary documents it rests on. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-figures-rss",
      "title": "RSS — Figures",
      "url": "https://falasteen.ai/feeds/figures.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "Historians, medics, journalists, leaders and artists of Palestine — cited biographies with verified portraits.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-figures-json",
      "title": "JSON Feed — Figures",
      "url": "https://falasteen.ai/feeds/figures.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "Historians, medics, journalists, leaders and artists of Palestine — cited biographies with verified portraits. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-poems-rss",
      "title": "RSS — Poems",
      "url": "https://falasteen.ai/feeds/poems.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "Palestinian poetry held in the archive, in Arabic and English, with the poet, the year and the source of each text.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-poems-json",
      "title": "JSON Feed — Poems",
      "url": "https://falasteen.ai/feeds/poems.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "Palestinian poetry held in the archive, in Arabic and English, with the poet, the year and the source of each text. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-movements-rss",
      "title": "RSS — Movements",
      "url": "https://falasteen.ai/feeds/movements.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "The organisations of the Palestinian national movement, presented through their own founding documents.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-movements-json",
      "title": "JSON Feed — Movements",
      "url": "https://falasteen.ai/feeds/movements.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "The organisations of the Palestinian national movement, presented through their own founding documents. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-research-rss",
      "title": "RSS — Research and primary sources",
      "url": "https://falasteen.ai/feeds/research.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "Human-rights reports, UN documents, legal findings and journalism, catalogued with publisher and date.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-research-json",
      "title": "JSON Feed — Research and primary sources",
      "url": "https://falasteen.ai/feeds/research.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "Human-rights reports, UN documents, legal findings and journalism, catalogued with publisher and date. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-testimonies-rss",
      "title": "RSS — Testimonies",
      "url": "https://falasteen.ai/feeds/testimonies.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "Survivor testimony quoted exactly as published, each with a link to the oral-history archive that recorded it.",
      "shape": "RSS 2.0 with an Atom self link. Descriptions are plain text, never markup.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-testimonies-json",
      "title": "JSON Feed — Testimonies",
      "url": "https://falasteen.ai/feeds/testimonies.json",
      "method": "GET",
      "media": "application/feed+json",
      "detail": "Survivor testimony quoted exactly as published, each with a link to the oral-history archive that recorded it. The structured fields this collection carries survive in each item's `_falasteen` object, where RSS would have flattened them into prose.",
      "shape": "JSON Feed 1.1. `date_published` is OMITTED, not faked, on collections that carry no publication date.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "feed-all",
      "title": "FALASTEEN.AI — everything",
      "url": "https://falasteen.ai/rss.xml",
      "method": "GET",
      "media": "application/rss+xml",
      "detail": "The archive and its dated media desk in one stream: dispatches, research, poetry, chronology, villages, testimony, movements and names.",
      "shape": "RSS 2.0.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": false
    },
    {
      "id": "search-index",
      "title": "Search index",
      "url": "https://falasteen.ai/search-index.json",
      "method": "GET",
      "media": "application/json",
      "schemaVersion": 1,
      "detail": "The self-describing flat index behind the command palette: published content records included in search plus the archive rooms a reader can navigate to. It is not a complete enumeration of the registry or Atlas. Resolve each item’s `u` path against `baseUrl`.",
      "shape": {
        "version": "number — response contract version",
        "generatedAt": "ISO 8601 build timestamp",
        "baseUrl": "absolute canonical site URL",
        "scope": {
          "includes": "Published content-collection records included in command-palette search, plus navigable archive rooms.",
          "excludes": [
            "Individual rows in the 72,835-name registry (use /registry/names.json or the paginated /registry/names/ pages).",
            "Atlas-only village dossiers that do not yet have written record pages (use /atlas/{key}.json).",
            "Internal organisation-directory records that do not have public detail pages."
          ]
        },
        "count": "number — rows in items",
        "schema": {
          "g": "string — result group heading",
          "c": "string — collection or result-type label",
          "t": "string — title or primary name",
          "a": "string, optional — Arabic title or name",
          "s": "string, optional — one-line subtitle",
          "d": "string, optional — one-line description",
          "u": "string — root-relative canonical path on baseUrl",
          "x": "string, optional — additional search terms",
          "y": "string[], optional — alternate names and transliterations",
          "m": "1, optional — present only when the record has an Atlas point",
          "v": "string, optional — Atlas deep-link key; present with m"
        },
        "items": "array — compact records matching schema"
      },
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": true
    },
    {
      "id": "image-manifest",
      "title": "Image derivative manifest",
      "url": "https://falasteen.ai/images/manifest.json",
      "method": "GET",
      "media": "application/json",
      "detail": "Maps original image URLs to locally hosted AVIF/WebP/JPEG derivatives and their widths where those derivatives are available. Records without a confirmed derivative may retain their cited original HTTPS source URL.",
      "shape": "{ images: { [originalUrl]: { formats: { avif|webp|jpeg: { sources: { w, path }[] } } } } }",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The manifest is ours. The images are not — each carries its own credit on the record page that uses it."
        }
      ],
      "cors": false
    },
    {
      "id": "llms",
      "title": "llms.txt",
      "url": "https://falasteen.ai/llms.txt",
      "method": "GET",
      "media": "text/plain",
      "detail": "The archive described for a language model: what it holds, how it sources, and how it wants to be cited. Read this before summarising the site.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": false
    },
    {
      "id": "sitemap",
      "title": "Sitemap index",
      "url": "https://falasteen.ai/sitemap-index.xml",
      "method": "GET",
      "media": "application/xml",
      "detail": "The static public route inventory advertised to crawlers. Embeddable card fragments are excluded; page-level robots metadata remains authoritative for noindex routes.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "The archive holds no copyright in the primary sources it quotes. Quotations, testimony and poetry carry their own rights and their own cited source; follow the source link on the record before republishing."
        }
      ],
      "cors": false
    },
    {
      "id": "embed",
      "title": "Embeddable record cards",
      "url": "https://falasteen.ai/embed/{kind}/{slug}/",
      "example": "https://falasteen.ai/embed/village/lifta/",
      "method": "GET",
      "media": "text/html",
      "detail": "A standalone HTML card for one record, meant to be iframed on another site. It runs no site JavaScript, sets no cookies and sends no analytics to FALASTEEN.AI. It loads a same-origin stylesheet of self-hosted typefaces and otherwise uses inline card CSS. `kind` is one of village, name, poem. Each card credits the archive and links back to the full record.",
      "shape": "HTML document. Maximum width 540px; fixed height by kind: village 330px, name 370px, poem 355px.",
      "licence": [
        {
          "id": "falasteen-attribution",
          "summary": "Editorial text and summaries written for this archive are free to quote and teach from with attribution to FALASTEEN.AI.",
          "attribution": "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
          "note": "Embedding is expressly invited. Do not strip the FALASTEEN.AI credit or the link to the record — they are the terms."
        }
      ],
      "cors": false
    }
  ],
  "notServed": [
    {
      "what": "Geodata (boundaries, the Green Line, the 1948 village layer, landmarks)",
      "where": "src/data/geo/*.json in the repository",
      "why": "Compiled into the map page and the atlas dossiers at build time rather than served as standalone files. Coordinates for every Atlas-mapped village are available through the village-dossier endpoint above (`lat`, `lon`); an unmatched written record may return null for both. Boundary files derive from Natural Earth; depending on the file, the build performs exact topological union and shared-edge extraction or bounding-box clipping, then documented simplification and coordinate rounding. See src/data/geo/README.md and each feature’s provenance and note fields.",
      "upstream": [
        {
          "name": "Natural Earth",
          "what": "Land, coastline, national boundaries at 1:10m",
          "url": "https://www.naturalearthdata.com/",
          "licence": "Public domain"
        },
        {
          "name": "Wikidata",
          "what": "Depopulated villages of 1948 and city coordinates",
          "url": "https://www.wikidata.org/",
          "licence": "CC0 1.0"
        },
        {
          "name": "OpenStreetMap contributors",
          "what": "Geocoding of the places in this archive (via Nominatim)",
          "url": "https://www.openstreetmap.org/copyright",
          "licence": "ODbL 1.0 — attribution required"
        }
      ]
    },
    {
      "what": "The connection graph itself",
      "where": "src/data/connections/graph.json in the repository",
      "why": "Not served whole. Place dossiers expose relevance-sorted relationship previews with evidence and confidence, capped at 12 entries per bucket, while `counts` preserves uncapped totals. Use src/data/connections/graph.json in the repository when complete edge enumeration is required."
    },
    {
      "what": "Private Majlis form submissions",
      "where": "Netlify Forms moderation inbox",
      "why": "A submission is private editorial input, not a public post. Only a message whose writer consented to publication and which a person reviewed and deliberately committed to the approved Majlis collection can appear on the board, in search or in the Majlis feeds documented above. Email addresses and moderation metadata are never served."
    }
  ],
  "attribution": {
    "required": [
      "FALASTEEN.AI — A Living Archive for Palestine (https://falasteen.ai)",
      "© OpenStreetMap contributors",
      "Names: Gaza Ministry of Health, compiled by Tech for Palestine (https://data.techforpalestine.org/docs/killed-in-gaza/)"
    ],
    "courtesy": [
      "Boundaries: Natural Earth",
      "Coordinates: Wikidata"
    ],
    "oneLine": "Data: FALASTEEN.AI · Boundaries: Natural Earth (public domain) · Coordinates: Wikidata (CC0) · Geocoding: © OpenStreetMap contributors (ODbL) · Names: Gaza Ministry of Health via Tech for Palestine"
  },
  "contact": {
    "corrections": "The archive would rather be corrected than believed. Every record page carries its sources; if one is wrong, say so through the contact desk.",
    "about": "https://falasteen.ai/about/",
    "contact": "https://falasteen.ai/contact/"
  }
}