{
 "about": "The hand-kept register of every outside body this site takes data from or cites: who they are (bodies only), what they publish, what we take, the licence as published. tools/source-index.mjs adds the counts and writes sources.json and index.md from it. A body's own folder (sources/<id>/) appears as it is built; MeteoAlarm is first. `entity` is the id of the same body in entities/ (incident.entities@), where one exists. `also` lists the plain names a body is written by, for the linker.",
 "by": "incident.sources@web-summit.dinis",
 "updated": "2026-11-11T06:26:00Z",
 "sources": [
  {
   "id": "meteoalarm",
   "node": "source:meteoalarm",
   "name": "MeteoAlarm",
   "group": "official",
   "kind": "EUMETNET's system that carries Europe's national weather warnings",
   "hosts": [
    "feeds.meteoalarm.org",
    "www.meteoalarm.org",
    "meteoalarm.org",
    "api.meteoalarm.org"
   ],
   "publishes": "each national service's warnings as CAP messages: JSON and Atom feeds per country (open); an EDR API with the archive, MQTT, metadata (token or MeteoGate key)",
   "we_take": "the time IPMA issued each warning, and which message it replaced",
   "licence": {
    "status": "read",
    "summary": "CC BY 4.0 equivalent, with additional requirements (name the national service, keep the time of issue, link www.meteoalarm.org, publish the disclaimer; real time if operational)",
    "url": "https://www.meteoalarm.org/en/live/page/terms-and-conditions",
    "read_utc": "2026-11-11T02:15:31Z",
    "access": "yes, open feeds",
    "manipulate": "yes, with conditions",
    "detail": "meteoalarm/source.json"
   },
   "section": "meteoalarm/index.html",
   "formats": [
    "JSON",
    "Atom XML",
    "CAP 1.2 XML",
    "GeoJSON"
   ],
   "reads": "about hourly by tools/source-meteoalarm.mjs; about every 5 to 30 minutes by the meteorologist's refresh.py",
   "entity": "body/meteoalarm"
  },
  {
   "id": "ipma",
   "node": "source:ipma",
   "name": "IPMA (Instituto Português do Mar e da Atmosfera)",
   "group": "official",
   "kind": "Portugal's national meteorological service: it issues the warnings",
   "hosts": [
    "api.ipma.pt",
    "www.ipma.pt"
   ],
   "publishes": "warnings, forecasts, station observations, communiqués, sea state (open data as JSON; RSS)",
   "we_take": "the warnings in force, the hour-by-hour forecast for Lisbon, the stations' observations, the communiqués",
   "licence": {
    "status": "kept by incident.ipma@",
    "note": "see sources/ipma/ (incident.ipma@'s section). The earlier check (research/weather-sites/meteoalarm-check.json) records that IPMA asks for the source to be named."
   },
   "section": "ipma/index.html",
   "owner": "incident.ipma@web-summit.dinis",
   "formats": [
    "JSON",
    "RSS"
   ],
   "reads": "every 5 to 30 minutes (refresh.py); hourly by incident.ipma@",
   "entity": "body/ipma",
   "also": [
    "IPMA",
    "Instituto Português do Mar e da Atmosfera"
   ]
  },
  {
   "id": "anepc",
   "node": "source:anepc",
   "name": "ANEPC (Autoridade Nacional de Emergência e Proteção Civil)",
   "group": "official",
   "kind": "Portugal's civil protection authority",
   "hosts": [
    "prociv.gov.pt",
    "www.prociv.gov.pt",
    "prociv-portal.geomai.mai.gov.pt"
   ],
   "publishes": "notices to the population (numbered: 'Aviso 21' is on Storm Charles), news and communiqués, the framework of alert and warning levels, and a map of occurrences (an ArcGIS application on another host)",
   "we_take": "its notices and the state of alert",
   "licence": {
    "status": "read",
    "summary": "no licence stated on the site; it points to the law on access to and reuse of administrative documents (Lei n.º 26/2016, LADA), under which reuse is asked of its access officer",
    "as_published": "A Lei n.º 26/2016, de 22 de agosto, aprovou o regime de acesso à informação administrativa e ambiental e de reutilização dos documentos administrativos (LADA).",
    "url": "https://prociv.gov.pt/pt/avisos-legais/acesso-a-informacao/",
    "read_utc": "2026-11-11T06:26:00Z",
    "access": "yes, public pages",
    "manipulate": "not stated for the site's pages: we quote its notices with the source and the time read, and link",
    "note": "the page (dated 31.01.2023) names the access officer's role and how to ask; contact details are not repeated here"
   },
   "entity": "body/anepc",
   "also": [
    "ANEPC",
    "Proteção Civil"
   ],
   "endpoints": [
    {
     "what": "notices to the population",
     "address": "https://prociv.gov.pt/pt/avisos-a-populacao/",
     "format": "web pages",
     "we_read": "by the researcher, for timeline rows"
    },
    {
     "what": "news and communiqués",
     "address": "https://prociv.gov.pt/pt/noticias/",
     "format": "web pages",
     "we_read": "by the researcher, for timeline rows"
    },
    {
     "what": "occurrences, on a map",
     "address": "https://prociv-portal.geomai.mai.gov.pt/ (an ArcGIS Experience application linked from the front page)",
     "format": "a web map application",
     "we_read": "no: not mapped yet; no feed is linked from the front page"
    }
   ]
  },
  {
   "id": "government",
   "node": "source:government",
   "name": "The Government of Portugal",
   "group": "official",
   "kind": "the government portal and the Ministry of Internal Administration",
   "hosts": [
    "portugal.gov.pt",
    "www.portugal.gov.pt",
    "www.mai.gov.pt"
   ],
   "publishes": "communiqués, declarations (the alert situation)",
   "we_take": "the declaration of the alert situation and its terms",
   "licence": {
    "status": "read",
    "summary": "not stated: the portal's legal notice (Aviso Legal) has credits and an accessibility statement, and no licence or terms of reuse",
    "url": "https://portugal.gov.pt/pt/gc25/aviso-legal",
    "read_utc": "2026-11-11T02:22:00Z",
    "access": "yes, public pages",
    "manipulate": "not stated: we quote official communiqués with the source and the time read, and link"
   },
   "entity": "body/government"
  },
  {
   "id": "websummit",
   "node": "source:websummit",
   "name": "Web Summit",
   "group": "official",
   "kind": "the organiser of the conference held in Lisbon on these days",
   "hosts": [
    "websummit.com"
   ],
   "publishes": "its event updates, schedule and blog",
   "we_take": "its statements on what goes ahead, moves or is cancelled",
   "licence": {
    "status": "read",
    "summary": "all rights reserved; its terms forbid automated access to its website and app, and copying, archiving, storing or summarising their content",
    "as_published": "48.2. Users must not use or permit the use of any bot, script, macro, browser extension, scraper, artificial intelligence agent or other automated means (“Automation”) to access, interact with or perform any action in the Digital Platforms. […] 52.1 […] You agree not copy, publish, republish, redistribute, archive, store, adapt, alter, modify, translate, create derivative works from, summarise, photocopy, scan, syndicate, sell, licence, frame, harvest, scrape, grant or purport to grant any rights in or otherwise make available any content from the Digital Platforms.",
    "url": "https://websummit.com/terms-and-conditions/",
    "read_utc": "2026-11-11T05:25:00Z",
    "access": "public pages; automated access is forbidden by its terms (\"Digital Platforms\" is its websites, their subdomains and its apps)",
    "manipulate": "no",
    "note": "\"Terms and conditions\", marked \"Updated October 27, 2026\"; sections 48.2 and 52.1 quoted in part. This agent read the front page (02:22 UTC) and rendered this terms page once (05:25 UTC) to learn the terms, and makes no further requests to it. Other agents read websummit.com on a schedule (tools/websummit-poll.sh, every 2 minutes) and capture its pages: whether that continues is Dinis's decision. A careful reading, not legal advice"
   },
   "reads": "none: automated reading forbidden by its terms (48.2, 52.1); on hold since 05:27 UTC 11 Nov; decision with Dinis",
   "entity": "organisation/websummit",
   "hold": "automated reading forbidden by its terms (48.2, 52.1); on hold since 05:27 UTC 11 Nov; decision with Dinis",
   "automated_reads_record": [
    {
     "what": "the 2-minute poll by incident.dev@ (websummit-poll.sh, websummit.mjs --quick): 244 reads in seven runs, counted from its run logs; each read fetched robots.txt and /blog/, and post pages (up to 3) only at a run's first read or when a post changed. Requests were not logged one by one: about 490 to 510, estimated from the code. robots.txt was obeyed (it disallows /api/ only); the terms were not read before the poll started",
     "when": "first request 2026-11-10T21:18:48Z, last 2026-11-11T05:27:31Z, stopped 05:27:38Z; short gaps at 00:16, 01:42 and 02:01",
     "where": "as reported by incident.dev@ on 11 November, 05:28 UTC; the watch file: incidents/2026-11-10-storm-charles/data/watch/websummit.json"
    },
    {
     "what": "full reads and hand-run reads by incident.dev@ while building the watch: about 12 full runs (the sitemap at first; from 21:01 robots.txt, sitemap.xml, 7 blog listings and up to 3 post pages each) and about 25 single requests (the sitemap, robots.txt, /blog/, category listings, the post page, two probes of /wp-json/ that answered 404 and two of /graphql that answered a redirect). About 150 requests, estimated, not logged one by one",
     "when": "2026-11-10, 19:43 to 21:40 UTC",
     "where": "as reported by incident.dev@ on 11 November, 05:28 UTC"
    },
    {
     "what": "page captures (screenshot, HTML, hash) by incident.archivist@: 15 evidence records under evidence/websummit/",
     "when": "2026-11-11T02:16:26Z to 2026-11-11T05:23:40Z",
     "where": "evidence/websummit/ (set to not shown during the hold, by the archivist)"
    },
    {
     "what": "its front page, once, and its Terms and conditions page, rendered once, by incident.sources@ (to find and read the terms)",
     "when": "2026-11-11T02:22Z and 2026-11-11T05:25Z",
     "where": "nothing kept in git but the two quoted sections"
    },
    {
     "what": "reads by incident.researcher@ and the perplexity agent for timeline rows (the event update, the schedule, session pages)",
     "when": "10 and 11 November; the times are on each row and in data/decisions/addresses.json",
     "where": "incidents/2026-11-10-storm-charles/timeline.md"
    },
    {
     "what": "in all, incident.dev@'s estimate: about 640 to 660 requests to websummit.com hosts, nearly all to robots.txt and /blog/. What the repository holds of its content: the blog posts' titles, excerpts and dates, the full text of the post \"Important event update\" (the watch file), and quotes in two commit messages of 10 November. Nothing has been removed: that waits for Dinis",
     "when": "2026-11-10T19:43Z to 2026-11-11T05:27Z",
     "where": "incidents/2026-11-10-storm-charles/data/watch/websummit.json"
    }
   ]
  },
  {
   "id": "cml",
   "node": "source:cml",
   "name": "Câmara Municipal de Lisboa",
   "group": "official",
   "kind": "Lisbon's city council",
   "hosts": [
    "informacao.lisboa.pt",
    "www.lisboa.pt"
   ],
   "publishes": "municipal notices (closures, civil protection in the city)",
   "we_take": "its notices",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "body/camara-lisboa"
  },
  {
   "id": "aemet",
   "node": "source:aemet",
   "name": "AEMET (Agencia Estatal de Meteorología)",
   "group": "official",
   "kind": "Spain's national meteorological service",
   "hosts": [
    "www.aemet.es"
   ],
   "publishes": "warnings and forecasts for Spain",
   "we_take": "nothing directly yet: cited in research (what Wikipedia attributes to it)",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "body/aemet",
   "also": [
    "AEMET"
   ]
  },
  {
   "id": "nhc",
   "node": "source:nhc",
   "name": "NHC (US National Hurricane Center, NOAA)",
   "group": "official",
   "kind": "the US centre for tropical cyclones",
   "hosts": [
    "www.nhc.noaa.gov"
   ],
   "publishes": "tropical weather outlooks and advisories",
   "we_take": "nothing directly yet: cited in research",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "also": [
    "NHC",
    "National Hurricane Center"
   ]
  },
  {
   "id": "noaa-awc",
   "node": "source:noaa-awc",
   "name": "NOAA Aviation Weather Center",
   "group": "official",
   "kind": "a US public service that redistributes the world's aviation reports",
   "hosts": [
    "aviationweather.gov"
   ],
   "publishes": "TAF and METAR as JSON (for Lisbon airport, IPMA's own forecast and the airport's observations)",
   "we_take": "LPPT's TAF and METAR",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "formats": [
    "JSON"
   ],
   "reads": "with every refresh.py run",
   "also": [
    "Aviation Weather Center"
   ]
  },
  {
   "id": "amn",
   "node": "source:amn",
   "name": "Autoridade Marítima Nacional",
   "group": "official",
   "kind": "Portugal's maritime authority",
   "hosts": [
    "www.amn.pt"
   ],
   "publishes": "notices on ports and bars (open, conditioned, closed)",
   "we_take": "the state of the ports and bars",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "body/amn"
  },
  {
   "id": "metro",
   "node": "source:metro",
   "name": "Metropolitano de Lisboa",
   "group": "transport",
   "kind": "Lisbon's metro operator",
   "hosts": [
    "www.metrolisboa.pt"
   ],
   "publishes": "service notices",
   "we_take": "service changes",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "service/metro"
  },
  {
   "id": "carris",
   "node": "source:carris",
   "name": "Carris",
   "group": "transport",
   "kind": "Lisbon's bus and tram operator",
   "hosts": [
    "www.carris.pt"
   ],
   "publishes": "service notices",
   "we_take": "service changes",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "service/carris"
  },
  {
   "id": "cp",
   "node": "source:cp",
   "name": "CP (Comboios de Portugal)",
   "group": "transport",
   "kind": "the national rail operator",
   "hosts": [
    "www.cp.pt"
   ],
   "publishes": "service notices",
   "we_take": "service changes",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "service/cp",
   "also": [
    "CP",
    "Comboios de Portugal"
   ]
  },
  {
   "id": "ttsl",
   "node": "source:ttsl",
   "name": "Transtejo Soflusa",
   "group": "transport",
   "kind": "the Tagus ferry operator",
   "hosts": [
    "www.ttsl.pt"
   ],
   "publishes": "service notices",
   "we_take": "ferry suspensions",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "service/ferries",
   "also": [
    "Transtejo Soflusa",
    "TTSL"
   ]
  },
  {
   "id": "rede-expressos",
   "node": "source:rede-expressos",
   "name": "Rede Expressos",
   "group": "transport",
   "kind": "an intercity coach operator",
   "hosts": [
    "www.rede-expressos.pt"
   ],
   "publishes": "service notices",
   "we_take": "service changes",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "service/rede-expressos"
  },
  {
   "id": "lisbon-airport",
   "node": "source:lisbon-airport",
   "name": "Lisbon airport (ANA Aeroportos de Portugal)",
   "group": "transport",
   "kind": "the airport operator",
   "hosts": [
    "www.aeroportolisboa.pt",
    "www.ana.pt"
   ],
   "publishes": "flight information, notices",
   "we_take": "notices on operations",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "service/airport",
   "also": [
    "ANA Aeroportos de Portugal",
    "Lisbon airport"
   ]
  },
  {
   "id": "lusoponte",
   "node": "source:lusoponte",
   "name": "Lusoponte",
   "group": "transport",
   "kind": "the concessionaire of the Vasco da Gama and 25 de Abril bridges",
   "hosts": [
    "www.lusoponte.pt"
   ],
   "publishes": "traffic notices",
   "we_take": "bridge restrictions",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "organisation/lusoponte"
  },
  {
   "id": "venues",
   "node": "source:venues",
   "name": "FIL and MEO Arena",
   "group": "transport",
   "kind": "the conference's venues",
   "hosts": [
    "www.fil.pt",
    "www.meoarena.pt"
   ],
   "publishes": "venue notices",
   "we_take": "venue notices",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "also": [
    "FIL",
    "MEO Arena",
    "Feira Internacional de Lisboa"
   ],
   "entity": "place/venue"
  },
  {
   "id": "met-no",
   "node": "source:met-no",
   "name": "MET Norway",
   "group": "official",
   "kind": "Norway's meteorological institute (an open forecast API for any point)",
   "hosts": [
    "api.met.no",
    "www.yr.no"
   ],
   "publishes": "point forecasts as JSON",
   "we_take": "a second model's wind and rain for Lisbon, for comparison only (not a forecast of ours)",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "formats": [
    "JSON"
   ]
  },
  {
   "id": "open-meteo",
   "node": "source:open-meteo",
   "name": "Open-Meteo",
   "group": "reference",
   "kind": "an open weather API over public models",
   "hosts": [
    "api.open-meteo.com",
    "open-meteo.com"
   ],
   "publishes": "model forecasts as JSON",
   "we_take": "a model's hourly wind and rain for Lisbon, for comparison only",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "formats": [
    "JSON"
   ]
  },
  {
   "id": "eumetsat",
   "node": "source:eumetsat",
   "name": "EUMETSAT",
   "group": "official",
   "kind": "Europe's weather-satellite organisation",
   "hosts": [
    "www.eumetsat.int",
    "view.eumetsat.int",
    "user.eumetsat.int"
   ],
   "publishes": "satellite imagery and its licence",
   "we_take": "links only; no image is embedded (research/weather-sites/imagery.json)",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   }
  },
  {
   "id": "copernicus-ems",
   "node": "source:copernicus-ems",
   "name": "Copernicus Emergency Management Service",
   "group": "official",
   "kind": "the EU's emergency mapping service",
   "hosts": [
    "mapping.emergency.copernicus.eu",
    "emergency.copernicus.eu"
   ],
   "publishes": "rapid-mapping activations",
   "we_take": "nothing directly yet: cited in research",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   }
  },
  {
   "id": "wikipedia",
   "node": "source:wikipedia",
   "name": "Wikipedia and Wikidata",
   "group": "reference",
   "kind": "the encyclopaedia; read by incident.wikipedia@",
   "hosts": [
    "pt.wikipedia.org",
    "en.wikipedia.org",
    "zh.wikipedia.org",
    "fr.wikipedia.org",
    "es.wikipedia.org",
    "www.wikidata.org"
   ],
   "publishes": "articles, their revisions and footnotes (API)",
   "we_take": "the articles on the storm, their revisions and claims, compared with this site",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "section": "../research/wikipedia/index.html",
   "owner": "incident.wikipedia@web-summit.dinis",
   "also": [
    "Wikipedia",
    "Wikidata"
   ]
  },
  {
   "id": "lusa",
   "node": "source:lusa",
   "name": "Lusa",
   "group": "press",
   "kind": "Portugal's news agency",
   "hosts": [
    "www.lusa.pt"
   ],
   "publishes": "agency copy, carried by most outlets",
   "we_take": "named where an outlet credits it",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/lusa"
  },
  {
   "id": "jornaldenegocios",
   "node": "source:jornaldenegocios",
   "name": "Jornal de Negócios",
   "group": "press",
   "kind": "a Portuguese daily",
   "hosts": [
    "www.jornaldenegocios.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "read",
    "summary": "all rights reserved: reproduction in whole or in part forbidden without prior written permission",
    "as_published": "Copyright © 2026. Todos os direitos reservados. É expressamente proibida a reprodução na totalidade ou em parte, em qualquer tipo de suporte, sem prévia permissão por escrito da Medialivre S.A.",
    "url": "https://www.jornaldenegocios.pt/institucional/detalhe/20150902-1659-33jn-1-3-disclaimer",
    "read_utc": "2026-11-11T02:22:00Z",
    "access": "yes, public pages (some behind a paywall)",
    "manipulate": "no: we link, and quote a short excerpt with the source; no copy of an article is kept in git or shown",
    "note": "the page's general conditions (dated 21 August 2008) also limit use to the reader's personal needs. incident.weatherwatch@'s reading of the same page finds automated access named: this agent read its front page and this page once each at 02:22 UTC, before knowing, and makes no further requests to it"
   },
   "entity": "outlet/negocios"
  },
  {
   "id": "observador",
   "node": "source:observador",
   "name": "Observador",
   "group": "press",
   "kind": "a Portuguese online daily",
   "hosts": [
    "observador.pt"
   ],
   "publishes": "articles, live blogs",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "read",
    "summary": "all rights reserved: no use without Observador's express consent, except private use allowed by law",
    "as_published": "Todo este conteúdo é propriedade do Observador, é protegido por direitos de autor ao abrigo das leis portuguesas e da União Europeia – pelo que não pode ser utilizado sem o consentimento, expressamente definido como tal, do Observador, exceto para os fins de utilização privada permitidos pela lei.",
    "url": "https://observador.pt/termos-e-condicoes/",
    "read_utc": "2026-11-11T02:22:00Z",
    "access": "yes, public pages (some behind a paywall)",
    "manipulate": "no: we link, and quote a short excerpt with the source; no copy of an article is kept in git or shown"
   },
   "entity": "outlet/observador"
  },
  {
   "id": "noticiasaominuto",
   "node": "source:noticiasaominuto",
   "name": "Notícias ao Minuto",
   "group": "press",
   "kind": "a Portuguese online outlet",
   "hosts": [
    "www.noticiasaominuto.com"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/noticias-ao-minuto"
  },
  {
   "id": "rtp",
   "node": "source:rtp",
   "name": "RTP",
   "group": "press",
   "kind": "Portugal's public broadcaster",
   "hosts": [
    "www.rtp.pt"
   ],
   "publishes": "articles, broadcasts",
   "we_take": "short excerpts with a link; words said on air are marked as such",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/rtp"
  },
  {
   "id": "dn",
   "node": "source:dn",
   "name": "Diário de Notícias",
   "group": "press",
   "kind": "a Portuguese daily",
   "hosts": [
    "www.dn.pt",
    "dinheirovivo.dn.pt",
    "dnbrasil.dn.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/dn",
   "also": [
    "Diário de Notícias",
    "DN"
   ]
  },
  {
   "id": "cnnportugal",
   "node": "source:cnnportugal",
   "name": "CNN Portugal / TVI",
   "group": "press",
   "kind": "a Portuguese broadcaster",
   "hosts": [
    "cnnportugal.iol.pt",
    "away.iol.pt"
   ],
   "publishes": "articles, broadcasts",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/cnn-portugal",
   "also": [
    "CNN Portugal",
    "TVI"
   ]
  },
  {
   "id": "dnoticias",
   "node": "source:dnoticias",
   "name": "Diário de Notícias da Madeira",
   "group": "press",
   "kind": "Madeira's daily",
   "hosts": [
    "www.dnoticias.pt",
    "dnoticias.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/dnoticias"
  },
  {
   "id": "publico",
   "node": "source:publico",
   "name": "Público",
   "group": "press",
   "kind": "a Portuguese daily",
   "hosts": [
    "www.publico.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/publico"
  },
  {
   "id": "expresso",
   "node": "source:expresso",
   "name": "Expresso",
   "group": "press",
   "kind": "a Portuguese weekly",
   "hosts": [
    "expresso.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/expresso"
  },
  {
   "id": "theportugalnews",
   "node": "source:theportugalnews",
   "name": "The Portugal News",
   "group": "press",
   "kind": "an English-language weekly in Portugal",
   "hosts": [
    "www.theportugalnews.com"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/portugal-news"
  },
  {
   "id": "eco",
   "node": "source:eco",
   "name": "ECO",
   "group": "press",
   "kind": "a Portuguese economic outlet",
   "hosts": [
    "eco.sapo.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/eco"
  },
  {
   "id": "euronews",
   "node": "source:euronews",
   "name": "Euronews",
   "group": "press",
   "kind": "a European broadcaster",
   "hosts": [
    "www.euronews.com",
    "pt.euronews.com",
    "l.euronews.com"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/euronews"
  },
  {
   "id": "cmjornal",
   "node": "source:cmjornal",
   "name": "Correio da Manhã",
   "group": "press",
   "kind": "a Portuguese daily",
   "hosts": [
    "www.cmjornal.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/correio-da-manha"
  },
  {
   "id": "sapo",
   "node": "source:sapo",
   "name": "SAPO and the outlets it hosts (Tek, Jornal Económico, Executive Digest, 24 Notícias, O Digital)",
   "group": "press",
   "kind": "a Portuguese portal",
   "hosts": [
    "tek.sapo.pt",
    "jornaleconomico.sapo.pt",
    "executivedigest.sapo.pt",
    "24noticias.sapo.pt",
    "odigital.sapo.pt",
    "tempo.sapo.pt",
    "sapo.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/sapo",
   "also": [
    "SAPO",
    "SAPO Tek",
    "Jornal Económico",
    "Executive Digest",
    "24 Notícias"
   ]
  },
  {
   "id": "rr",
   "node": "source:rr",
   "name": "Rádio Renascença",
   "group": "press",
   "kind": "a Portuguese radio",
   "hosts": [
    "rr.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/renascenca",
   "also": [
    "Renascença",
    "Rádio Renascença"
   ]
  },
  {
   "id": "tsf",
   "node": "source:tsf",
   "name": "TSF",
   "group": "press",
   "kind": "a Portuguese news radio",
   "hosts": [
    "www.tsf.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/tsf"
  },
  {
   "id": "jn",
   "node": "source:jn",
   "name": "Jornal de Notícias",
   "group": "press",
   "kind": "a Portuguese daily",
   "hosts": [
    "www.jn.pt"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/jn"
  },
  {
   "id": "elpais",
   "node": "source:elpais",
   "name": "El País",
   "group": "press",
   "kind": "a Spanish daily",
   "hosts": [
    "elpais.com"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   }
  },
  {
   "id": "madeiraislandnews",
   "node": "source:madeiraislandnews",
   "name": "Madeira Island News",
   "group": "press",
   "kind": "an English-language outlet on Madeira",
   "hosts": [
    "www.madeiraislandnews.com"
   ],
   "publishes": "articles",
   "we_take": "short excerpts with a link",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "entity": "outlet/madeira-island-news"
  },
  {
   "id": "bluesky",
   "node": "source:bluesky",
   "name": "Bluesky",
   "group": "platform",
   "kind": "a public social network with an open API; read by incident.social@",
   "hosts": [
    "bsky.app",
    "api.bsky.app",
    "public.api.bsky.app"
   ],
   "publishes": "public posts (AT Protocol API)",
   "we_take": "posts by official and public-role accounts; a private person is never named or linked",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "owner": "incident.social@web-summit.dinis",
   "section": "../research/social/index.html"
  },
  {
   "id": "mastodon",
   "node": "source:mastodon",
   "name": "Mastodon servers",
   "group": "platform",
   "kind": "public federated social servers",
   "hosts": [
    "mastodon.social",
    "masto.pt",
    "social.vivaldi.net"
   ],
   "publishes": "public posts",
   "we_take": "posts by public-role accounts; a private person is never named or linked",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   },
   "also": [
    "Mastodon"
   ]
  },
  {
   "id": "youtube",
   "node": "source:youtube",
   "name": "YouTube",
   "group": "platform",
   "kind": "a video platform",
   "hosts": [
    "www.youtube.com"
   ],
   "publishes": "broadcasts and channels of bodies and outlets",
   "we_take": "links to official broadcasts",
   "licence": {
    "status": "not read yet",
    "note": "this agent has not yet read the body's terms page; until it has, we link and quote short excerpts only"
   }
  }
 ]
}
