Título, local, data e hora, fuso horário, repetição, convidados, alertas e notas — depois descarregue o ficheiro .ics ou abra-o diretamente no calendário. Também pode colar uma agenda ou anexar um documento ou uma fotografia para criar vários eventos de uma vez.

O que é jCal, e como ele difere de um arquivo .ics?

jCal é o iCalendar escrito em JSON, padronizado como RFC 7265 em 2014. Ele carrega exatamente os mesmos dados de um arquivo .ics — as mesmas propriedades, parâmetros e componentes — em arrays aninhados em vez de objetos, porque um componente pode repetir uma propriedade e a ordem pode ser significativa. Um calendário é ["vcalendar", [propriedades], [componentes]], cada propriedade é [nome, parâmetros, tipoDeValor, valor], então SUMMARY:Standup se torna ["summary", {}, "text", "Standup"]. Não é o mesmo que o Event do schema.org em JSON-LD, que descreve um evento para mecanismos de busca e mantém muito menos informação. O ICS Maker escreve .ics e jCal a partir de um único modelo de evento em vez de converter entre eles, então os dois não podem discordar sobre o que o evento é.

A estrutura

A RFC 7265 mapeia o iCalendar em arrays em vez de objetos, porque a ordem e a repetição importam em um calendário, e objetos JSON não oferecem nenhuma das duas. Um calendário é ["vcalendar", [properties], [components]], e cada propriedade é [name, parameters, valueType, value] — o nome em minúsculas, os parâmetros um objeto, o tipo um dos tipos de valor da RFC 5545.

Assim, SUMMARY:Standup se torna ["summary", {}, "text", "Standup"], e um início com fuso horário se torna ["dtstart", {"tzid":"Europe/London"}, "date-time", "2026-08-15T09:00:00"]. As datas-hora usam aqui a grafia ISO, não a forma compacta do iCalendar, e o fuso horário passa a ser um parâmetro.

Por que vale a pena ter

O iCalendar é um formato de texto com dobra de linhas, regras de escape e finais de linha CRLF, e analisá-lo corretamente dá mais trabalho do que parece. O jCal entrega a mesma semântica — fusos horários, regras de recorrência, alarmes, participantes — para qualquer coisa que já fale JSON, sem necessidade de escrever um analisador. Esse é um objetivo diferente do Event do schema.org, que esta página também pode gerar: o JSON-LD descreve um evento para um mecanismo de busca e achata a maior parte do que um calendário precisa.

Como esta página o gera

Ambos os formatos são escritos a partir do mesmo evento, e não convertidos um do outro. Um conversor herdaria todas as decisões de escape da forma em texto, e os valores do jCal são explicitamente desescapados — o JSON faz sua própria formatação de aspas. Escrever ambos a partir de um único modelo significa que eles não podem discordar sobre o que o evento é, apenas sobre como é grafado.

Perguntas

O que é jCal?
jCal é o formato JSON para iCalendar, padronizado como RFC 7265 em 2014. Ele representa exatamente os mesmos dados de um arquivo .ics — as mesmas propriedades, parâmetros e componentes — usando arrays JSON aninhados, de modo que pode ser convertido em qualquer direção sem perda de significado.
O jCal é o mesmo que JSON-LD ou o Event do schema.org?
Não. O jCal é um mapeamento completo do iCalendar, então carrega regras de recorrência, fusos horários, alarmes e status de participação dos convidados. O Event do schema.org em JSON-LD é uma descrição de um evento para mecanismos de busca e outros leitores, e deliberadamente mantém muito menos informação. Este construtor gera ambos, a partir do mesmo evento.
Por que o jCal usa arrays em vez de objetos?
Porque um componente de calendário pode carregar a mesma propriedade mais de uma vez — vários participantes, várias datas de exceção — e a ordem pode ser significativa. Um objeto JSON indexado pelo nome da propriedade não conseguiria representar nenhum dos dois casos, então a RFC 7265 usa arrays posicionais.
O que lê jCal?
É um formato de nicho, bem suportado em bibliotecas de calendário JavaScript como ical.js e disponível em vários kits de ferramentas iCalendar do lado do servidor. Aplicativos de calendário convencionais ainda esperam .ics, então use jCal entre seus próprios sistemas e entregue às pessoas o arquivo .ics.