Calendars and contacts
ics createics createics writeics writeics parseics parsevcard createvcard createvcard parse

ics create <json_events>


Description

    Create an iCalendar text. An event: start (required), end, all_day, timezone, summary, description, location, url, status, uid (by default a hash of the event: the same event always has the same UID), dtstamp, organizer (an email or {email, name}), attendees (emails or {email, name, role, partstat, rsvp}), rrule (FREQ=...), alarm_minutes_before (or alarms: [{minutes_before}]), other (see ics parse). DTSTAMP is the current UTC time without params.now

Parameters

    json_events:   The events: JSON array, or one object - String - required
admin
json load "tuto_ev" (ics parse (ics create "{\"uid\": \"a@example.com\", \"summary\": \"Point\", \"start\": \"2026-11-16\"}")); -> "[res]" (json select "tuto_ev" "/[0]/summary"); json unload "tuto_ev"; [res]
mentdb
Point

ics create <json_events> <json_params>


Description

    Create an iCalendar text with parameters: prodid, calendar_name (NAME and X-WR-CALNAME), method (PUBLISH, REQUEST...), timezone (for the local date-times of the events), now (DTSTAMP, for fixed results)

Parameters

    json_events:   The events - String - required
    json_params:   The parameters - String - required
admin
ics create "[{\"uid\": \"kickoff@example.com\", \"summary\": \"Kick-off, projet ETL\", \"description\": \"Salle 2; apporter le plan\", \"location\": \"Saint-Denis\", \"start\": \"2026-11-16T09:00:00\", \"end\": \"2026-11-16T10:30:00\", \"timezone\": \"Indian/Reunion\", \"organizer\": {\"email\": \"chef@example.com\", \"name\": \"La Cheffe\"}, \"attendees\": [\"a@example.com\", {\"email\": \"b@example.com\", \"name\": \"Bob\", \"role\": \"REQ-PARTICIPANT\", \"rsvp\": true}], \"url\": \"https://example.com/kickoff\", \"rrule\": \"FREQ=WEEKLY;BYDAY=MO;COUNT=4\", \"alarm_minutes_before\": 15}]" "{\"now\": \"2026-11-04T08:00:00Z\"}"
mentdb
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//MentDB//MQL//EN CALSCALE:GREGORIAN BEGIN:VTIMEZONE TZID:Indian/Reunion BEGIN:STANDARD DTSTART:19700101T000000 TZOFFSETFROM:+0400 TZOFFSETTO:+0400 END:STANDARD END:VTIMEZONE BEGIN:VEVENT UID:kickoff@example.com DTSTAMP:20261104T080000Z DTSTART;TZID=Indian/Reunion:20261116T090000 DTEND;TZID=Indian/Reunion:20261116T103000 SUMMARY:Kick-off\, projet ETL DESCRIPTION:Salle 2\; apporter le plan LOCATION:Saint-Denis URL:https://example.com/kickoff ORGANIZER;CN="La Cheffe":mailto:chef@example.com ATTENDEE:mailto:a@example.com ATTENDEE;CN="Bob";ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:b@example.com RRULE:FREQ=WEEKLY;BYDAY=MO;COUNT=4 BEGIN:VALARM ACTION:DISPLAY DESCRIPTION:Kick-off\, projet ETL TRIGGER:-PT15M END:VALARM END:VEVENT END:VCALENDAR
An all-day event and a UTC event in a named calendar
admin
ics create "[{\"summary\": \"Noel\", \"start\": \"2026-12-25\", \"end\": \"2026-12-26\"}, {\"summary\": \"Audit\", \"start\": \"2026-12-01T08:00:00Z\", \"end\": \"2026-12-01T09:00:00Z\"}]" "{\"now\": \"2026-11-04T08:00:00Z\", \"calendar_name\": \"Agenda\", \"method\": \"PUBLISH\"}"
mentdb
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//MentDB//MQL//EN CALSCALE:GREGORIAN METHOD:PUBLISH NAME:Agenda X-WR-CALNAME:Agenda BEGIN:VEVENT UID:d6444bfe8c9beab7e8359772d10f4702@mentdb DTSTAMP:20261104T080000Z DTSTART;VALUE=DATE:20261225 DTEND;VALUE=DATE:20261226 SUMMARY:Noel END:VEVENT BEGIN:VEVENT UID:b617d17397bb9ebc24b8138c4630ba29@mentdb DTSTAMP:20261104T080000Z DTSTART:20261201T080000Z DTEND:20261201T090000Z SUMMARY:Audit END:VEVENT END:VCALENDAR
Used in use cases (1 recipe)

    Integrator & ETL developer › Send an appointment and a contact that open in every calendar and phone
Often used with

    equal  ·  file delete  ·  file exist  ·  file mkdir  ·  ics parse  ·  qr create  ·  qr read  ·  string contains

ics write <json_events> <out_path>


Description

    Write an iCalendar file (UTF-8, the folder must exist): {file, bytes, events}

Parameters

    json_events:   The events - String - required
    out_path:   The file to write - String - required
admin
if (equal (file exist "tmp") "0") {file mkdir "tmp";}; ics write "[{\"summary\": \"Noel\", \"start\": \"2026-12-25\", \"end\": \"2026-12-26\"}, {\"summary\": \"Audit\", \"start\": \"2026-12-01T08:00:00Z\", \"end\": \"2026-12-01T09:00:00Z\"}]" "tmp/tuto_etl_cal.ics"; json load "tuto_ev" (ics parse "tmp/tuto_etl_cal.ics"); -> "[res]" (json select "tuto_ev" "/[0]/summary"); json unload "tuto_ev"; file delete "tmp/tuto_etl_cal.ics"; [res]
mentdb
Noel

ics write <json_events> <out_path> <json_params>


Description

    Write an iCalendar file with the parameters of ics create

Parameters

    json_events:   The events - String - required
    out_path:   The file to write - String - required
    json_params:   The parameters - String - required
admin
if (equal (file exist "tmp") "0") {file mkdir "tmp";}; -> "[res]" (ics write "[{\"summary\": \"Noel\", \"start\": \"2026-12-25\", \"end\": \"2026-12-26\"}, {\"summary\": \"Audit\", \"start\": \"2026-12-01T08:00:00Z\", \"end\": \"2026-12-01T09:00:00Z\"}]" "tmp/tuto_etl_cal.ics" "{\"now\": \"2026-11-04T08:00:00Z\"}"); file delete "tmp/tuto_etl_cal.ics"; [res]
mentdb
{"file": "tmp/tuto_etl_cal.ics", "bytes": 421, "events": 2}

ics parse <text_or_path>


Description

    Read iCalendar events from a text or a file: JSON array of {uid, summary, description, location, url, status, dtstamp, start, end, all_day, tzid, end_tzid, rrule, organizer, organizer_name, attendees, alarm_minutes_before, alarms, other}, only the fields present (all_day always with start). The dates are written as ISO dates. Long lines are unfolded and texts unescaped. Its result can be given to ics create

Parameters

    text_or_path:   The text, starting with BEGIN:VCALENDAR, or a file path - String - required
admin
ics parse "BEGIN:VCALENDAR VERSION:2.0 BEGIN:VEVENT UID:42@example.com SUMMARY:Point d'avancement DTSTART;TZID=Europe/Paris:20261116T140000 DTEND;TZID=Europe/Paris:20261116T150000 RRULE:FREQ=WEEKLY;COUNT=3 ATTENDEE;CN=Ana:mailto:ana@example.com BEGIN:VALARM TRIGGER:-PT1H ACTION:DISPLAY END:VALARM END:VEVENT BEGIN:VEVENT UID:43@example.com SUMMARY:Ferie DTSTART;VALUE=DATE:20261225 END:VEVENT END:VCALENDAR"
mentdb
[{"uid": "42@example.com", "summary": "Point d'avancement", "start": "2026-11-16T14:00:00", "all_day": false, "tzid": "Europe/Paris", "end": "2026-11-16T15:00:00", "rrule": "FREQ=WEEKLY;COUNT=3", "attendees": [{"email": "ana@example.com", "name": "Ana"}], "alarm_minutes_before": 60, "alarms": [{"trigger": "-PT1H", "action": "DISPLAY", "minutes_before": 60}]}, {"uid": "43@example.com", "summary": "Ferie", "start": "2026-12-25", "all_day": true}]

ics parse <text_or_path> <json_params>


Description

    Read iCalendar events with parameters: max_events (100000), max_bytes (32 MB)

Parameters

    text_or_path:   The text or the file path - String - required
    json_params:   The parameters - String - required
admin
ics parse "BEGIN:VCALENDAR VERSION:2.0 BEGIN:VEVENT UID:42@example.com SUMMARY:Point d'avancement DTSTART;TZID=Europe/Paris:20261116T140000 DTEND;TZID=Europe/Paris:20261116T150000 RRULE:FREQ=WEEKLY;COUNT=3 ATTENDEE;CN=Ana:mailto:ana@example.com BEGIN:VALARM TRIGGER:-PT1H ACTION:DISPLAY END:VALARM END:VEVENT BEGIN:VEVENT UID:43@example.com SUMMARY:Ferie DTSTART;VALUE=DATE:20261225 END:VEVENT END:VCALENDAR" "{\"max_events\": 5}"
mentdb
[{"uid": "42@example.com", "summary": "Point d'avancement", "start": "2026-11-16T14:00:00", "all_day": false, "tzid": "Europe/Paris", "end": "2026-11-16T15:00:00", "rrule": "FREQ=WEEKLY;COUNT=3", "attendees": [{"email": "ana@example.com", "name": "Ana"}], "alarm_minutes_before": 60, "alarms": [{"trigger": "-PT1H", "action": "DISPLAY", "minutes_before": 60}]}, {"uid": "43@example.com", "summary": "Ferie", "start": "2026-12-25", "all_day": true}]
Used in use cases (1 recipe)

    Integrator & ETL developer › Send an appointment and a contact that open in every calendar and phone
Often used with

    equal  ·  file delete  ·  file exist  ·  file mkdir  ·  ics create  ·  qr create  ·  qr read  ·  string contains

vcard create <json_contact>


Description

    Create a vCard 4.0 text from an object, or several from an array: fn (or name; by default from n, then org), n {family, given, additional, prefix, suffix}, org, org_units, title, tel and email (a value or {value, type}, or a list; type: a word or a list), adr {type, po_box, extended, street, city, region, postal_code, country} or a list, url (one or a list), note, bday (YYYY-MM-DD), uid

Parameters

    json_contact:   The contact: JSON object, or an array - String - required
admin
vcard create "{\"fn\": \"Jean Dupont\", \"n\": {\"family\": \"Dupont\", \"given\": \"Jean\", \"prefix\": \"M.\"}, \"org\": \"ACME\", \"title\": \"Directeur\", \"tel\": [{\"value\": \"+262 692 00 00 00\", \"type\": [\"cell\", \"work\"]}], \"email\": {\"value\": \"jean@example.com\", \"type\": \"work\"}, \"adr\": {\"type\": \"work\", \"street\": \"1 rue de Paris\", \"city\": \"Saint-Denis\", \"postal_code\": \"97400\", \"country\": \"France\"}, \"url\": \"https://example.com\", \"note\": \"Client depuis 2019; VIP\", \"bday\": \"1985-04-12\"}"
mentdb
BEGIN:VCARD VERSION:4.0 FN:Jean Dupont N:Dupont;Jean;;M.; ORG:ACME TITLE:Directeur TEL;TYPE=cell,work:+262 692 00 00 00 EMAIL;TYPE=work:jean@example.com ADR;TYPE=work:;;1 rue de Paris;Saint-Denis;;97400;France URL:https://example.com NOTE:Client depuis 2019\; VIP BDAY:19850412 END:VCARD

vcard create <json_contact> <json_params>


Description

    Create a vCard with parameters: version (4.0 or 3.0). In 3.0 the N property is always written, the types are in upper case and BDAY has dashes

Parameters

    json_contact:   The contact - String - required
    json_params:   The parameters - String - required
admin
vcard create "{\"fn\": \"Bob\", \"tel\": {\"value\": \"0692\", \"type\": \"cell\"}, \"bday\": \"1990-01-31\"}" "{\"version\": \"3.0\"}"
mentdb
BEGIN:VCARD VERSION:3.0 FN:Bob N:;;;; TEL;TYPE=CELL:0692 BDAY:1990-01-31 END:VCARD
Used in use cases (1 recipe)

    Integrator & ETL developer › Send an appointment and a contact that open in every calendar and phone
Often used with

    equal  ·  file delete  ·  file exist  ·  file mkdir  ·  ics create  ·  ics parse  ·  qr create  ·  qr read

vcard parse <text>


Description

    Read the contacts of a text (versions 2.1, 3.0 and 4.0): JSON array of {version, fn, n, org, org_units, title, tel, email, adr, url, note, bday, uid, other}, tel and email as [{value, types}]. TYPE parameters in any form, the bare types of 2.1, QUOTED-PRINTABLE with its charset, groups (item1.EMAIL). PHOTO and other unknown properties go in other when they are short (4096 characters at most). Its result can be given to vcard create, which does not write other back

Parameters

    text:   The text with BEGIN:VCARD - String - required
admin
vcard parse "BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Dupr=C3=A9;Ren=C3=A9 FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Ren=C3=A9 Dupr=C3=A9 TEL;WORK;VOICE:+33 1 23 45 67 89 EMAIL;INTERNET:rene@example.com END:VCARD BEGIN:VCARD VERSION:3.0 FN:Bob TEL;TYPE=CELL,VOICE:0692 END:VCARD"
mentdb
[{"version": "2.1", "n": {"family": "Dupré", "given": "René", "additional": "", "prefix": "", "suffix": ""}, "fn": "René Dupré", "tel": [{"value": "+33 1 23 45 67 89", "types": ["work", "voice"]}], "email": [{"value": "rene@example.com", "types": ["internet"]}]}, {"version": "3.0", "fn": "Bob", "tel": [{"value": "0692", "types": ["cell", "voice"]}]}]