Calendar

manifest.json 120 lines

Files · 6
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120{
  "id": "com.lattice.calendar",
  "name": "Calendar",
  "icon": "📅",
  "color": "#ec4899",
  "description": "Plan one-off and recurring calendar events.",
  "requested_permissions": {
    "storage": ["kv", "sql"],
    "network": { "allowlist": [] },
    "notifications": true,
    "events": {
      "event-created": {
        "description": "A one-off event or recurring series was created.",
        "schema": {
          "type": "object",
          "properties": {
            "id": { "type": "integer", "description": "Event or recurring-series ID." },
            "title": { "type": "string", "description": "Event or series title." },
            "date": { "type": "string", "description": "Local YYYY-MM-DD event date; series start date for recurring events." },
            "time": { "type": "string", "description": "Local HH:MM; empty means no time." },
            "location": { "type": "string", "description": "Venue or address; empty means none." },
            "description": { "type": "string", "description": "Event details; empty means none." },
            "recurrence": {
              "type": "object",
              "properties": {
                "frequency": { "type": "string", "enum": ["daily", "weekly", "monthly", "yearly"], "description": "Repeat frequency." },
                "interval": { "type": "integer", "description": "Number of frequency units between repetitions." },
                "daysOfWeek": {
                  "type": "array",
                  "items": { "type": "integer", "description": "Weekday number, 0=Sunday through 6=Saturday." },
                  "description": "Weekly weekdays; empty uses startDate’s weekday; ignored for other frequencies."
                },
                "startDate": { "type": "string", "description": "First eligible local date, YYYY-MM-DD." },
                "endDate": { "type": ["string", "null"], "description": "Inclusive final local date, YYYY-MM-DD; null means no end date." }
              },
              "required": ["frequency", "interval", "daysOfWeek", "startDate", "endDate"],
              "description": "Recurrence pattern; omitted for one-off events."
            }
          },
          "required": ["id", "title", "date", "time", "location", "description"]
        }
      },
      "event-updated": {
        "description": "A one-off event or recurring series was updated.",
        "schema": {
          "type": "object",
          "properties": {
            "id": { "type": "integer", "description": "Event or recurring-series ID." },
            "title": { "type": "string", "description": "Event or series title." },
            "date": { "type": "string", "description": "Local YYYY-MM-DD event date; series start date for recurring events." },
            "time": { "type": "string", "description": "Local HH:MM; empty means no time." },
            "location": { "type": "string", "description": "Venue or address; empty means none." },
            "description": { "type": "string", "description": "Event details; empty means none." },
            "recurrence": {
              "type": "object",
              "properties": {
                "frequency": { "type": "string", "enum": ["daily", "weekly", "monthly", "yearly"], "description": "Repeat frequency." },
                "interval": { "type": "integer", "description": "Number of frequency units between repetitions." },
                "daysOfWeek": {
                  "type": "array",
                  "items": { "type": "integer", "description": "Weekday number, 0=Sunday through 6=Saturday." },
                  "description": "Weekly weekdays; empty uses startDate’s weekday; ignored for other frequencies."
                },
                "startDate": { "type": "string", "description": "First eligible local date, YYYY-MM-DD." },
                "endDate": { "type": ["string", "null"], "description": "Inclusive final local date, YYYY-MM-DD; null means no end date." }
              },
              "required": ["frequency", "interval", "daysOfWeek", "startDate", "endDate"],
              "description": "Recurrence pattern; omitted for one-off events."
            }
          },
          "required": ["id", "title", "date", "time", "location", "description"]
        }
      },
      "event-removed": {
        "description": "A one-off event or recurring series was removed.",
        "schema": {
          "type": "object",
          "properties": {
            "id": { "type": "integer", "description": "Event or recurring-series ID." },
            "title": { "type": "string", "description": "Event or series title." }
          },
          "required": ["id", "title"]
        }
      }
    },
    "listeners": {
      "add-event": {
        "description": "Create a one-off event or recurring series.",
        "schema": {
          "type": "object",
          "properties": {
            "title": { "type": "string", "description": "Nonempty event title." },
            "date": { "type": "string", "description": "Local YYYY-MM-DD; required for one-off events, ignored for recurring series." },
            "time": { "type": "string", "description": "Local HH:MM; omitted or empty means no time." },
            "location": { "type": "string", "description": "Venue or address; omitted or empty means none." },
            "description": { "type": "string", "description": "Event details; omitted or empty means none." },
            "recurrence": {
              "type": "object",
              "description": "Series pattern; omitted creates a one-off event using date.",
              "properties": {
                "frequency": { "type": "string", "enum": ["daily", "weekly", "monthly", "yearly"], "description": "Repeat frequency; omitted creates a one-off event using date." },
                "interval": { "type": "integer", "description": "Frequency units between repetitions; omitted or zero defaults to 1." },
                "daysOfWeek": {
                  "type": "array",
                  "items": { "type": "integer", "description": "Weekday number, 0=Sunday through 6=Saturday." },
                  "description": "Weekly weekdays; omitted/empty uses startDate’s weekday; ignored for other frequencies."
                },
                "startDate": { "type": "string", "description": "First eligible local YYYY-MM-DD; omitted or empty defaults to local today." },
                "endDate": { "type": ["string", "null"], "description": "Inclusive final local YYYY-MM-DD; omitted, empty or null means no end date." }
              },
              "required": []
            },
            "color": { "type": "string", "description": "Display color; omitted or empty defaults to #4f46e5." }
          },
          "required": ["title"]
        }
      }
    }
  }
}