Agenda do Médio Tejo

Para quem faz sítios

Os dados

A agenda do Médio Tejo em formatos que outras máquinas leem: calendários e feeds para subscrever, uma caixa pronta a colar no seu sítio, e uma API em JSON para quem quiser montar o seu próprio desenho. É a agenda — o que está para vir.

Não é preciso conta, nem chave, nem pedir autorização. Os endereços abaixo respondem a qualquer pedido, de qualquer origem, e não lhe vamos cobrar nada — a agenda é pública e é para ser usada.

Calendários e feeds

iCalendar para calendários, RSS para leitores de notícias. Subscreve-se uma vez, e o que entrar na agenda aparece lá sozinho. O arquivo das edições passadas dos ciclos vive nas páginas deles e não sai por aqui; quem o quiser, escreva.

https://mediotejo.coreto.org/agenda.ics
Calendário iCalendar com os próximos 100 eventos. Para subscrever, não para descarregar uma vez.
https://mediotejo.coreto.org/feed.xml
RSS 2.0 com os próximos 50 eventos dos 11 concelhos.

Por concelho

Cada concelho tem os seus dois endereços. O padrão é /agenda/<concelho>.ics e /feed/<concelho>.xml.

Cada evento tem também o seu próprio calendário, em /evento/<endereço>/agenda.ics — é o botão «adicionar ao calendário» da ficha.

A caixa para o seu sítio

A agenda de um concelho dentro da sua página, que se atualiza sozinha. Escolha em baixo, copie o código e está feito: não há nada para instalar do seu lado.

Disposição
A sua cor
Mostrar

Fica assim

A moldura a tracejado é desta página e não vai no código — está aqui para se ver onde a caixa acaba.

Copie

Cole esta linha no sítio onde a agenda deve aparecer. A caixa ajusta a altura ao conteúdo sozinha.

<script
  src="https://mediotejo.coreto.org/widget/embed.js"
  data-concelho="abrantes"
  async></script>

O nosso gestor de conteúdos não deixa colar <script>?

Acontece em muitos. Use o iframe diretamente — funciona igual, mas a altura fica fixa no valor abaixo, calculado para o que escolheu.

<iframe
  src="https://mediotejo.coreto.org/widget/abrantes"
  title="Agenda cultural de Abrantes"
  width="100%"
  height="588"
  loading="lazy"
  style="border:0"></iframe>

Todas as opções

O construtor cobre o que quase toda a gente precisa. Esta é a lista completa, para quem quiser escrever o código à mão ou montá-lo a partir do seu gestor de conteúdos.

Ver a lista dos atributos
Atributos aceites pela caixa, valores possíveis e comportamento por omissão
AtributoValoresPor omissãoO que faz
data-concelhotomar, ourem, torres-novas, …obrigatórioO concelho cuja programação aparece na caixa.
data-espacocine-teatro-paraiso, complexo-cultural-levada-tomar, …o concelho todoRestringe a caixa a um espaço. É esta a opção para um museu ou uma coletividade que só quer mostrar a sua própria programação.
data-ciclocaminhos, festival-zero, …todosRestringe a caixa a um ciclo ou festival. Serve a quem organiza um: a caixa passa a mostrar só o programa dele, no concelho escolhido.
data-categoriamusica, teatro, exposicoes, …todasRestringe a caixa a uma categoria.
data-quantos1 a 205Quantos eventos mostrar.
data-gratissimdesligadoMostra apenas eventos de entrada livre.
data-disposicaocartazes, lista, muralcartazesCartazes para uma coluna normal, lista para uma coluna estreita sem espaço para imagens, mural para uma faixa larga.
data-cor#40c0c4, #b0122a, …a cor desta agendaA cor da instituição. Onde é texto, é escurecida ou aclarada até se ler sobre o fundo — a caixa nunca fica ilegível por causa de uma cor de marca.
data-temaauto, light, darkautoCom auto, a caixa segue a preferência de quem visita. Fixe light ou dark se o seu sítio tiver um fundo só.
data-letraOpen Sans, Georgia, serif, …a letra do CoretoO tipo de letra do seu sítio, para a caixa deixar de se distinguir do resto da página. Escreva a pilha como a tem no CSS. (Herdar não dá: um iframe tem documento próprio e o CSS não atravessa a fronteira.)
data-cabecalhosim, naosimDesligue se a sua página já tiver um título por cima da caixa.
data-moldurasim, naosimA linha à volta da caixa. Desligue para a fundir com o seu fundo.
data-titulotextoAgenda cultural — CoretoO nome que os leitores de ecrã anunciam ao encontrar a caixa.
data-pesquisatextosem pesquisaSó eventos com estas palavras no título, no subtítulo, no sítio ou no resumo — sem acentos e pelo radical: «fado» encontra «fados». É a opção para uma filarmónica ou um festival que quer mostrar só o que é seu.

Um valor que não seja reconhecido é ignorado e vale o valor por omissão. Um erro de escrita do seu lado nunca deixa a caixa em branco.

A letra pequena

A API em JSON

Para quem quer montar a lista com o seu próprio desenho, ou levar a agenda inteira de uma vez.

https://mediotejo.coreto.org/api/events
A agenda em JSON, com filtros. É a base da caixa e de qualquer integração.
https://mediotejo.coreto.org/dados.json
O catálogo de uma vez, sem paginar, com a data de geração, a contagem e a licença dentro do próprio ficheiro.
https://mediotejo.coreto.org/dados.csv
O mesmo, para quem abre folhas de cálculo: abre no Excel e no LibreOffice, com os metadados em linhas «#» à cabeça.
https://mediotejo.coreto.org/sitemap.xml
Mapa do sítio: as páginas fixas, os 11 concelhos, os espaços, os ciclos com programação e os eventos por acontecer.

GET /api/events devolve { events, total, page, limit, license, attribution, documentation }. Aceita pedidos de qualquer origem (CORS aberto) e responde sempre em UTF-8. Um parâmetro inválido devolve 400 com a lista dos parâmetros aceites dentro da própria resposta.

Cada evento traz as colunas do cartão e, ao lado dos identificadores, o que eles querem dizer: municipality_name, category_name, venue_name, o updated_at e as sessions com data, hora de início e hora de fim.

Parâmetros aceites pelo endereço /api/events
ParâmetroValoresO que faz
municipalitytomar, abrantes, ourem, …Identificador do concelho. Um só de cada vez.
categorymusica, teatro, exposicoes, …Categoria do evento, pelo identificador do catálogo.
fromAAAA-MM-DDSó eventos a partir desta data. Por omissão, hoje.
toAAAA-MM-DDSó eventos que comecem até esta data.
free1 ou 0A 1, devolve apenas eventos de entrada livre.
accessible1 ou 0A 1, devolve apenas eventos com acesso a cadeiras de rodas: o que o evento declara ou, quando o evento nada diz, o que o espaço declara.
lgp1 ou 0A 1, devolve apenas eventos com interpretação declarada em Língua Gestual Portuguesa.
audiodescricao1 ou 0A 1, devolve apenas eventos com audiodescrição declarada.
legendas1 ou 0A 1, devolve apenas eventos com legendagem declarada.
relaxada1 ou 0A 1, devolve apenas eventos declarados como sessão relaxada.
familia1 ou 0A 1, devolve apenas eventos para crianças e famílias: da categoria «Infantil e família», ou com público declarado infantil ou familiar — sem sessões para escolas nem idade mínima acima dos 12 anos.
venueidentificador do espaçoEventos de um espaço.
seriesidentificador do ciclo, como caminhosEventos de um ciclo ou festival. O identificador de cada evento vem no campo `series_id` da própria resposta.
qtextoPesquisa no título, no subtítulo, no sítio e no resumo, e também no nome da categoria, do espaço e do concelho — sem acentos e pelo radical das palavras, no singular e no plural: «fado» encontra «fados», «virginia» encontra o Teatro Virgínia, «exposição» encontra «exposições».
page1 a 200Página de resultados. Por omissão, 1.
limit1 a 100Resultados por página. Por omissão, 24.
https://mediotejo.coreto.org/api/events?municipality=tomar&limit=10
Ver a resposta
{
  "events": [
    {
      "id": "…",
      "slug": "…",
      "title": "…",
      "municipality_id": "tomar",
      "venue_id": "…",
      "location_name": null,
      "category_slug": "musica",
      "date_start": "2027-01-01",
      "date_end": "2027-01-01",
      "is_ongoing": false,
      "is_free": true,
      "price_display": null,
      "image_url": "…",
      "image_alt": "…",
      "series_id": null,
      "image_miniatura": "…",
      "image_width": 600,
      "image_height": 848,
      "wheelchair_accessible": true,
      "has_sign_language": false,
      "has_audio_description": false,
      "has_subtitles": false,
      "is_relaxed_performance": false,
      "audience": "all_ages",
      "url": "https://mediotejo.coreto.org/evento/…",
      "municipality_name": "Tomar",
      "category_name": "Música",
      "venue_name": "…",
      "updated_at": "2026-12-20T03:12:44.000Z",
      "sessions": [{ "date": "2027-01-01", "start_time": "21:30", "end_time": null }]
    }
  ],
  "total": 37,
  "page": 1,
  "limit": 10
}

Cada evento traz ainda category_confidence e category_source: o grau de confiança, de 0 a 1, e a origem da categoria — para quem quiser saber como ela foi decidida.

Sem nos deitar abaixo

Licença

Uma data, uma hora, um local e um preço são factos: não têm autor. A compilação — o trabalho de reunir, normalizar e ligar tudo isto — é disponibilizada sob CC BY 4.0: pode usá-la para o que quiser, incluindo comercialmente, desde que diga de onde veio e ligue para o Coreto.

Os textos de apresentação, os cartazes e as fotografias não são nossos e não vão nesta licença: continuam de quem os fez. Por isso nenhum destes endereços — a API, o dados.json, o dados.csv, os feeds RSS e os calendários — leva a descrição que cada organizador escreveu, nem um excerto dela: levam os factos (o título, as datas, o sítio, o preço, a categoria, a acessibilidade) e a ligação para a ficha do evento, onde o texto está inteiro. Para republicar uma descrição ou um cartaz, o pedido é a quem organiza — e o campo url de cada evento leva lá.

O image_url de alguns eventos aponta para uma cópia nossa, redimensionada, do cartaz que a câmara publicou — é mais rápida e não morre quando a câmara arruma a pasta do ano. Guardar uma cópia não a torna nossa: continua de quem a fez, e quem a quiser republicar continua a ter de pedir a quem organiza. O image_miniatura é a mesma imagem a 400 píxeis, para listas; é nulo quando o cartaz é servido de casa de quem o publicou.

Atribuição sugerida: «Dados da agenda cultural Coreto, CC BY 4.0».