}}
La Especificación de objeto principal de calendario y programación de Internet ( iCalendar ) es un tipo de medio que permite a los usuarios almacenar e intercambiar información de calendario y programación, como eventos, tareas pendientes, entradas de diario e información de disponibilidad. [1] Los archivos formateados de acuerdo con la especificación generalmente tienen una extensión de .ics
. Con software de apoyo , como un lector de correo electrónico o una aplicación de calendario , los destinatarios de un archivo de datos de iCalendar pueden responder al remitente fácilmente o proponer otra fecha / hora de reunión. El formato de archivo se especifica en un estándar de Internet propuesto(RFC 5545) para el intercambio de datos de calendario. [nb 1]
{{Formato de archivo de Infobox | nombre = iCalendar | icon = | logo = | captura de pantalla = | título = | extensión = .ical, .ics, .ifb, .icalendar | mime = texto / calendario | código de tipo = | tipo uniforme = | magia = | propietario = | genre = intercambio de datos de calendario | contenedor para = | contenido por = | extendido desde = | extendido a = | estándar = RFC 5545
(actualizado por: RFC 5546, RFC 6868, RFC 7529, RFC]] (anteriormente iCal), IBM Notes (anteriormente Lotus Notes), [2] Yahoo! Calendar , Evolution (software) , eM Client , extensión Lightning para Mozilla Thunderbird y SeaMonkey , y parcialmente por Microsoft Outlook y Novell GroupWise .
iCalendar está diseñado para ser independiente del protocolo de transporte. Por ejemplo, ciertos eventos se pueden enviar por correo electrónico tradicional o se pueden compartir y editar archivos de calendario completos mediante un servidor WebDav o SyncML . Los servidores web simples (que usan solo el protocolo HTTP) se utilizan a menudo para distribuir datos de iCalendar sobre un evento y para publicar las horas ocupadas de un individuo. Los editores pueden incrustar datos de iCalendar en páginas web utilizando hCalendar , una representación de microformato 1: 1 de iCalendar en HTML semántico (X) .
Historia y diseño
iCalendar fue creado por primera vez en 1998 [3] por el Grupo de Trabajo de Calendario y Programación del Grupo de Trabajo de Ingeniería de Internet , presidido por Anik Ganguly de Open Text Corporation , y fue escrito por Frank Dawson de Lotus Development Corporation y Derik Stenerson de Microsoft Corporation . iCalendar se basa en gran medida en el vCalendar anterior del Consorcio de correo de Internet (IMC). Los archivos de datos de iCalendar son archivos de texto sin formato con la extensión .ics
o .ifb
(solo para archivos que contienen información de disponibilidad). RFC 5545 reemplazó a RFC 2445 en septiembre de 2009 y ahora define el estándar.
Los datos de iCalendar tienen el tipo de contenido MIME texto / calendario .
La extensión del nombre de archivo de ics
se utilizará para archivos que contienen información de calendario y programación, ifb
para archivos con información de tiempo libre u ocupado consistente con este tipo de contenido MIME. Los códigos de tipo de archivo equivalentes en los entornos del sistema operativo Apple Macintosh son iCal
y iFBf
.
De forma predeterminada, iCalendar usa el juego de caracteres UTF-8 ; se puede especificar un juego de caracteres diferente utilizando el parámetro MIME "charset" (si el método de transporte utilizado es compatible con MIME, como correo electrónico o HTTP ).
Cada línea termina con CR + LF (en hexadecimal : 0D0A). Las líneas deben limitarse a 75 octetos (no caracteres) de longitud. Cuando un elemento de datos es demasiado largo para caber en una sola línea, se puede continuar en las siguientes líneas comenzando las líneas de continuación con un carácter de espacio (en hexadecimal: 20) o un carácter de tabulación (en hexadecimal: 09).
Los avances de línea reales en los elementos de datos se codifican como una barra invertida seguida de la letra no N (los bytes 5C 6E o 5C 4E en UTF-8).
Limitaciones y futuro
El formato iCalendar está diseñado para transmitir datos basados en el calendario, como eventos, y no describe intencionalmente qué hacer con esos datos. Por lo tanto, es posible que se necesite otra programación para negociar qué hacer con estos datos. [nb 2]
iCalendar está destinado a "proporcionar la definición de un formato común para intercambiar abiertamente información de calendario y programación a través de Internet". Si bien las funciones más utilizadas por los usuarios son ampliamente compatibles con iCalendar, algunas funciones más avanzadas tienen problemas. Por ejemplo, la mayoría de los proveedores no admiten Diarios (VJOURNAL). Los VTODO también han tenido problemas de conversión. [nb 3]
El calendario de iCalendar tampoco es compatible con algunos calendarios no gregorianos , como los calendarios lunares utilizados en Israel y Arabia Saudita . [nb 4]
El memorando "Protocolo de acceso al calendario" ( RFC 4324) fue un intento inicial de un sistema universal para crear calendarios en tiempo real. Este protocolo fue finalmente abandonado, posiblemente debido a su excesiva complejidad. Independientemente, el código basado en iCalendar, como GroupDAV y CalDAV , ahora se usa con más frecuencia en paquetes de software de cliente y servidor .
El IETF "Calendaring and Scheduling Working Group" (ietf-calsify WG) ha publicado revisiones adicionales propuestas a las normas iCalendar [4] (como RFC-borradores / "Propuesta"), [5] pero a partir de enero de 2011, el grupo ha 'terminó'. [6] El trabajo está siendo recogido por el "Grupo de Trabajo de Extensiones de Calendario" (ietf-calext WG). [7]
Especificaciones técnicas
Objeto principal
El elemento de nivel superior en iCalendar es el objeto principal de calendario y programación, una colección de información de calendario y programación. Normalmente, esta información constará de un único objeto iCalendar. Sin embargo, se pueden agrupar varios objetos de iCalendar.
La primera línea debe ser BEGIN:VCALENDAR
y la última línea debe ser END:VCALENDAR
; el contenido entre estas líneas se llama "icalbody".
El cuerpo DEBE incluir las propiedades de calendario "PRODID" y "VERSION". Además, DEBE incluir al menos un componente de calendario. [8]
VERSION:1.0
se utilizó para especificar que los datos están en el antiguo formato vCalendar.
El cuerpo del objeto iCalendar (el icalbody) se compone de una lista de propiedades de calendario y uno o más componentes de calendario. Las propiedades del calendario se aplican a todo el calendario. Los componentes del calendario son varias propiedades del calendario que crean un esquema de calendario (diseño). Por ejemplo, el componente de calendario puede especificar un evento, una lista de tareas pendientes, una entrada de diario, información de zona horaria, información de tiempo libre / ocupado o una alarma. No se permiten líneas vacías en algunas versiones de uso (calendario de Google).
Aquí hay un ejemplo simple [nb 5] de un objeto iCalendar, evento "Fiesta del Día de la Bastilla " que ocurre desde el 14 de julio de 1997 a las 17:00 (UTC) hasta el 15 de julio de 1997 a las 03:59:59 (UTC):
COMIENZO: VCALENDARVERSIÓN: 2.0PRODID: - // hacksw / handcal // NONSGML v1.0 // ESCOMIENZO: VEVENTUID: [email protected]DTSTAMP: 19970714T170000ZORGANIZADOR; CN = John Doe: MAILTO: [email protected]DTSTART: 19970714T170000ZDTEND: 19970715T035959ZRESUMEN: Fiesta del Día de la BastillaGEO: 48.85299; 2.36885FIN: VEVENTFIN: VCALENDAR
Hay muchos tipos diferentes de componentes que se pueden usar en iCalendar, como se describe a continuación. [nb 6]
Eventos (VEVENT)
VEVENT
describe un evento, que tiene una cantidad de tiempo programada en un calendario. Normalmente, cuando un usuario acepta el evento del calendario, esto hará que ese tiempo se considere ocupado. [nb 7] A VEVENT
puede incluir un VALARM
que permite una alarma. Tales eventos tienen una DTSTART
que establece una hora de inicio y una DTEND
que establece una hora de finalización. Si el evento del calendario es recurrente, DTSTART
configura el inicio del primer evento.
Un código VALARM (recordatorio 1 día antes):
COMIENZO: VALARMGATILLO: -PT1440MACCIÓN: PANTALLADESCRIPCIÓN: RecordatorioFIN: VALARM
VEVENT
también se utiliza para eventos de calendario sin una hora específica, como aniversarios y recordatorios diarios. [nb 8] Si el usuario necesita enviar una cancelación para un evento, el UID debe ser el mismo que el del evento original y las propiedades del componente deben configurarse para cancelar.
MÉTODO: CANCELARESTADO: CANCELADO
Para enviar un UPDATE
para un evento, UID
debe coincidir con el original UID
. La otra propiedad del componente que se establecerá es:
SECUENCIA:
Es decir, para la primera actualización:
SECUENCIA: 1
En Microsoft Outlook, SUMMARY
corresponde a la entrada "Asunto" del formulario "Cita" y DESCRIPTION
al texto descriptivo que se encuentra debajo. Además, Outlook 2002 y Outlook 2003 exigen ay UID
a DTSTAMP
.
Tareas pendientes (VTODO)
VTODO explica un elemento de tarea pendiente, es decir, un elemento de acción o asignación.
No todas las aplicaciones de calendario reconocen elementos VTODO. En particular, Outlook no exporta Tareas como elementos VTODO e ignora los elementos VTODO en los calendarios importados. [9]
El siguiente es un ejemplo de una tarea pendiente que vence el 15 de abril de 1998. [nb 5] Se ha especificado una alarma de audio para recordarle al usuario del calendario al mediodía, el día antes de que la tarea pendiente se complete y se repita cada hora. , cuatro veces más. El elemento SEQUENCE muestra que esta tarea pendiente se ha modificado dos veces desde que se creó inicialmente.
COMIENZO: VCALENDARVERSIÓN: 2.0PRODID: - // Corporación ABC // NONSGML Mi producto // ESCOMIENZO: VTODODTSTAMP: 19980130T134500ZSECUENCIA: 2UID: [email protected]VENCIMIENTO: 19980415T235959ESTADO: NECESIDADES-ACCIÓNRESUMEN: Presentar impuestos sobre la rentaCOMIENZO: VALARMACCIÓN: AUDIOGATILLO: 19980414T120000ADJUNTE; FMTTYPE = audio / basic: http: //example.com/pub/audio- archivos / ssbanner.audREPETIR: 4DURACIÓN: PT1HFIN: VALARMFIN: VTODOFIN: VCALENDAR
Entrada de diario (VJOURNAL)
VJOURNAL es una entrada de diario. Adjuntan texto descriptivo a una fecha particular del calendario, se pueden usar para registrar un registro diario de actividades o logros, o describen el progreso con una entrada de tareas relacionadas. Un componente de calendario "VJOURNAL" no ocupa tiempo en un calendario, por lo que no tiene ningún efecto sobre el tiempo libre u ocupado (al igual que las entradas TRANSPARENTES). En la práctica, pocos programas admiten entradas de VJOURNAL, aunque existen ejemplos: el software Chirp de Plum Canary usa VTODO y VJOURNAL juntos. También KOrganizer del escritorio KDE y Evolution del escritorio GNOME son compatibles con VJOURNAL.
El siguiente es un ejemplo de una entrada de diario: [nb 5]
COMIENZO: VCALENDARVERSIÓN: 2.0PRODID: - // Corporación ABC // NONSGML Mi producto // ESCOMIENZO: VJOURNALDTSTAMP: 19970324T120000ZUID: [email protected]ORGANIZADOR: MAILTO: [email protected]ESTADO: BORRADORCLASE: PÚBLICOCATEGORÍAS: Informe del proyecto, XYZ, Reunión semanalDESCRIPCIÓN: Actas de la reunión de revisión del proyecto xyz \ n Agenda \ n1. Revisión de los requisitos de la versión 1.0 del proyecto. \ N2. Definición de los procesos del proyecto. \ n3. Revisión del cronograma del proyecto. \ N Participantes: John Smith \, Jane Doe \, Jim Dandy \ n-Fue decidió que los requisitos deben ser aprobados por marketing de productos. \ n-Se aceptaron los procesos del proyecto. \ n -La programación del proyecto debe tener en cuenta los días festivos programados y tiempo de vacaciones de los empleados. Consulte con RR.HH. para obtener información específica. fechas. \ n-El nuevo horario se distribuirá el viernes. \ n- Se cancela la reunión de las próximas semanas. No hay reunión hasta el 23 de marzo.FIN: VJOURNALFIN: VCALENDAR
(Nota: este ejemplo está tomado de RFC 2445 con la corrección de cambiar la palabra 'CATEGORÍA' a 'CATEGORÍAS', que es un error en el RFC original)
Tiempo libre / ocupado (VFREEBUSY)
VFREEBUSY es una solicitud de tiempo libre / ocupado, es una respuesta a una solicitud o es un conjunto publicado de tiempo ocupado. [ aclaración necesaria ] [nb 9]
El siguiente es un ejemplo de información publicada sobre horas ocupadas: [nb 10]
COMIENZO: VCALENDARVERSIÓN: 2.0PRODID: - // Software RDU // NONSGML HandCal // ENCOMIENZO: VFREEBUSYDTSTAMP: 20151013T080000ZUID: [email protected]ORGANIZADOR: MAILTO: [email protected]DTSTART: 19980313T141711ZDTEND: 19980410T141711ZFREEBUSY: 19980314T233000Z / 19980315T003000ZFREEBUSY: 19980316T153000Z / 19980316T163000ZFREEBUSY: 19980318T030000Z / 19980318T040000ZURL: http: //www.example.com/calendar/busytime/jsmith.ifbFIN: VFREEBUSYFIN: VCALENDAR
Otros tipos de componentes
Otros tipos de componentes incluyen DISPONIBILIDAD , VTIMEZONE (zonas horarias) y VALARM (alarmas). Algunos componentes pueden incluir otros componentes (VALARM a menudo se incluye en otros componentes). [nb 11]
Distribuir actualizaciones
El campo UID distribuye actualizaciones cuando cambia un evento programado. Cuando el evento se genera por primera vez, se crea un identificador único global . Si un evento posterior se distribuye con el mismo UID, reemplaza al original. [nb 12]
Extensiones de calendario
vCalendar e iCalendar admiten extensiones de software privadas , con un prefijo "X-", algunas de las cuales son de uso común.
Algunos de estos incluyen:
- X-RECURRENCE-ID: extensión vCalendar 1.0 que imita el iCalendar 2.0 RECURRENCE-ID (Nokia S60 3rd Edition)
- X-EPOCAGENDAENTRYTYPE: define el tipo de calendario del cliente
- X-FUNAMBOL-AALARMOPTIONS
- X-FUNAMBOL-ALLDAY - Bandera de evento de todo el día
- X-MICROSOFT-CDO-ALLDAYEVENT - Bandera de evento de todo el día de Microsoft Outlook
- X-MICROSOFT-CDO-BUSYSTATUS: información de estado de Microsoft Outlook
- ESTADO PREVISTO PARA X-MICROSOFT-CDO
- X-WR-CALNAME: el nombre para mostrar del calendario
- X-WR-CALDESC: una descripción del calendario
- X-WR-RELCALID: un identificador único global para el calendario [10]
- X-WR-TIMEZONE
- X-PUBLISHED-TTL: intervalo de actualización recomendado para la suscripción al calendario
- X-ALT-DESC: se utiliza para incluir marcado HTML en la descripción de un evento. La etiqueta DESCRIPTION estándar debe contener una versión que no sea HTML.
vCalendar 1.0
El diseño de iCalendar se basó en el formato de archivo anterior vCalendar creado por Internet Mail Consortium (IMC). [11]
A continuación, se muestra un ejemplo de información en formato vCalendar:
COMIENZO: VCALENDARVERSIÓN: 1.0COMIENZO: VEVENTCATEGORÍAS: ENCUENTROESTADO: TENTATIVODTSTART: 19960401T033000ZDTEND: 19960401T043000ZRESUMEN: Revisión de su propuestaDESCRIPCIÓN: Steve y John revisarán el material de propuesta más recienteCLASE: PRIVADAFIN: VEVENTFIN: VCALENDAR
Tiene la extensión de archivo .vcs. Después del lanzamiento de iCalendar, Internet Mail Consortium declaró que "espera que todos los desarrolladores de vCalendar aprovechen estos nuevos estándares abiertos y hagan que su software sea compatible con vCalendar 1.0 e iCalendar". [12]
Representaciones
xCal
xCal es una representación XML de los datos de iCalendar, como se define en RFC 6321 .
jCal
jCal es una representación JSON de datos de iCalendar, como se define en RFC 7265 .
hCalendar
hCalendar es una representación HTML (x) de un subconjunto de datos de iCalendar utilizando microformatos .
hEvent
hEvent es una representación HTML de un subconjunto de datos de iCalendar que utiliza microformatos que abordan algunos problemas de accesibilidad con el formato hCalendar.
Ver también
- Lista de aplicaciones compatibles con iCalendar
- CalDAV
- GrupoDAV
- hCalendar
- La programación OSID proporciona una abstracción de la interfaz de software para usar protocolos de calendario.
- vCard
- xCal
- Webcal - no oficial identificador uniforme de recursos (URI) de esquema
- Archivo zip
Notas
- ^ El estándar y el tipo de archivo a veces se denominan "iCal", que era el nombre delprograma de calendario de Apple Inc. hasta 2012 (ver iCal ), que proporciona una de las implementaciones del estándar.
- ^ Un estándar complementario, "Interoperabilidad independiente del transporte de iCalendar" ( iTIP ) (RFC 2446), define un protocolo para intercambiar objetos de iCalendar con el propósito de programar y programar grupos entre "Usuarios de calendario" (CU); quien inicia el intercambio de datos asume el papel de "Organizador". Este estándar define métodos como PUBLICAR, SOLICITAR, RESPONDER, AGREGAR, CANCELAR, ACTUALIZAR, CONTAR (para negociar un cambio en la entrada) y RECHAZAR-CONTADOR (para rechazar la contrapropuesta). Otro estándar complementario, el "Protocolo de interoperabilidad basado en mensajes iCalendar ( iMIP )" (RFC 2447), define un método estándar para implementar iTIP en transportes estándar basados en correo electrónico de Internet. La "Guía para el calendario de Internet" (RFC 3283) explica cómo iCalendar interactúa con otros lenguajes de calendario (actuales y futuros).
- ^ CalConnect, 2004
- ^ Aunque existen asignaciones uno a uno entre gregoriano y muchas otras escalas de calendario, la falta de valores CALSCALE definidos para esos calendarios y las limitaciones en varios campos de fecha pueden hacer que el soporte nativo sea imposible. Por ejemplo, elaño del calendario hebreo puede contener 12 o 13 meses, y laescala del calendario basada en el emperador japonés contiene muchas eras.
- ^ a b c De RFC 2445
- ^ Tenga en cuenta que Apple iCal y Microsoft Outlook utilizan descriptores adicionales, como se indica a continuación, para proporcionar más información sobre el calendario.
X-WR-CALNAME: Fiestas de la Revolución
X-WR-CALDESC: Celebraciones de diversas actividades revolucionarias.
X-WR-RELCALID: 3E26604A-50F4-4449-8B3E-E4F4932D05B5
X-WR-TIMEZONE: US / Pacific
Donde X-WR-RELCALID es un UUID . - ^ Pero un evento puede configurarse como "TRANSPARENTE" para cambiar esta interpretación.
- ^ Estos eventos tendrían un
DATE
tipo de valor para laDTSTART
propiedad en lugar del predeterminadoDATE-TIME
y no es necesario que incluyan unaDTEND
propiedad. - ^ Como se describe en RFC 2445:
Cuando se utiliza para solicitar información de tiempo libre / ocupado, la propiedad "ATTENDEE" especifica los usuarios del calendario cuyo tiempo libre / ocupado se solicita; la propiedad "ORGANIZER" especifica el usuario del calendario que solicita el tiempo libre / ocupado; las propiedades "DTSTART" y "DTEND" especifican la ventana de tiempo para la que se solicita el tiempo de disponibilidad; las propiedades "UID" y "DTSTAMP" se especifican para ayudar en la secuenciación adecuada de múltiples solicitudes de tiempo libre / ocupado.
Cuando se utiliza para responder a una solicitud de tiempo libre / ocupado, la propiedad "ATTENDEE" especifica el usuario de calendario que responde a la solicitud de tiempo libre / ocupado; la propiedad "ORGANIZER" especifica el usuario del calendario que solicitó originalmente el tiempo libre / ocupado; la propiedad "FREEBUSY" especifica la información de tiempo libre / ocupado (si existe); y las propiedades "UID" y "DTSTAMP" se especifican para ayudar en la secuenciación adecuada de múltiples respuestas de tiempo libre / ocupado.
Cuando se utiliza para publicar el tiempo ocupado, la propiedad "ORGANIZER" especifica el usuario de calendario asociado con el tiempo ocupado publicado; las propiedades "DTSTART" y "DTEND" especifican una ventana de tiempo inclusiva que rodea la información de tiempo ocupado; la propiedad "FREEBUSY" especifica la información de tiempo ocupado publicada; y la propiedad "DTSTAMP" especifica la fecha / hora en que se creó el objeto iCalendar.
- ^ De RFC 2445 El objeto iCalendar podría colocarse en alguna URL con la extensión ".ifb"
- ^ Algunos componentes a menudo se definen para admitir otros componentes definidos después de ellos (VTIMEZONE se usa a menudo de esta manera). [ aclaración necesaria ]
- ^ Un UID de ejemplo podría ser "[email protected]", para la quinta reunión de la clase 131 en el semestre 2 en una universidad hipotética.
Referencias
- ^ Desruisseaux, Bernard, ed. (Septiembre de 2009). "Especificación de objeto principal de programación y calendario de Internet (iCalendar)" . Grupo de trabajo de ingeniería de Internet . Consultado el 7 de diciembre de 2018 .
- ^ "IBM Lotus Notes 8.5 iCalendar: Interoperabilidad, implementación y aplicación" . IBM DeveloperWorks . Consultado el 5 de abril de 2015 .
- ^ "iCalendar.org" . Contenido Z . Consultado el 28 de marzo de 2018 .
- ^ "Simplificación de estándares de calendario y programación (calsify)" . IETF . Consultado el 5 de abril de 2015 .
- ^ "Simplificación de estándares de calendario y programación (calsify)" . IETF . Consultado el 5 de abril de 2015 .
- ^ Lear, Eliot (10 de diciembre de 2010). "el final del grupo de trabajo de Calsify, no el final de la lista de correo" . lista de correo ietf-calsify . Consultado el 5 de abril de 2015 .
- ^ "Extensiones de calendario (calext)" . IETF . Consultado el 1 de diciembre de 2016 .
- ^ "[rfc5545] Sección 3.6 Componentes del calendario" . Especificación de objetos centrales de programación y calendario de Internet . Consultado el 1 de julio de 2020 .
- ^ "[RFC5546] Sección 3.4 Métodos para componentes VTODO" . Red de desarrolladores de Microsoft . Consultado el 7 de agosto de 2015 .
- ^ "[MS-OXCICAL]: Propiedad: X-WR-RELCALID" . msdn.microsoft.com . Consultado el 23 de febrero de 2016 .
- ^ "vCalendar: el formato de intercambio de programación y calendario electrónico, versión 1.0" . Consorcio de correo de Internet . 1996-09-18. Archivado desde el original el 21 de marzo de 2016 . Consultado el 28 de marzo de 2018 .
- ^ "Intercambio de datos personales - vCard y vCalendar" . Consorcio de correo de Internet . 2006-11-26. Archivado desde el original el 6 de septiembre de 2015 . Consultado el 28 de febrero de 2016 .
enlaces externos
- RFC 5545 Especificación de objeto principal de programación y calendario de Internet (iCalendar) (reemplaza a RFC 2445)
- RFC 5546 iCalendar Transport-Independent Interoperability Protocol (iTIP) (reemplaza RFC 2446)
- RFC 6047 iCalendar Message-Based Interoperability Protocol (iMIP) (reemplaza RFC 2447)
- RFC 6321 xCal: El formato XML para iCalendar (Representación XML de iCalendar)
- Actualización RFC 6868 de los formatos de datos para incluir ciertos caracteres, prohibidos por la especificación existente, en los valores de los parámetros
- RFC 7265 jCal: El formato JSON para iCalendar
- RFC 7986 Nuevas propiedades para iCalendar (propiedades adicionales a la especificación de iCalendar)
- "Una introducción al calendario y la programación de Internet" . CalConnect . 2011-10-20.
- "Intercambio de datos personales - vCard y vCalendar" . Consorcio de correo de Internet . Archivado desde el original el 27 de febrero de 2017. - Esto describe la relación de vCard, vCalendar e iCalendar, e incluye la solicitud de IMC para que los implementadores admitan tanto vCalendar como iCalendar.
- "Recursos de iCalendar" . - Una lista de recursos para iCalendar y estándares relacionados.