Example

Home Assistant — daily briefing from Tidy calendar

Pull today's Tidy calendar events into a Home Assistant sensor and announce them over a speaker each morning.

1. Configure the REST sensor

Home Assistant's rest integration can call Tidy directly — we stay well under the rate limit with a 10-minute poll.

rest:
  - scan_interval: 600  # 10 min
    resource: https://qa.tidy.engineering/api/v1/calendar/events
    params:
      start: "{{ now().isoformat() }}"
      end: "{{ (now() + timedelta(days=1)).isoformat() }}"
    headers:
      Authorization: !secret tidy_pat_bearer
    sensor:
      - name: "Tidy events today"
        value_template: "{{ value_json.events | length }}"
        json_attributes:
          - events

2. Automation: announce at 07:00

- alias: "Morning briefing — announce Tidy events"
  trigger:
    - platform: time
      at: "07:00:00"
  action:
    - service: tts.cloud_say
      data:
        entity_id: media_player.kitchen_speaker
        message: >-
          Good morning. You have
          {{ states('sensor.tidy_events_today') }} events today.
          {% for e in state_attr('sensor.tidy_events_today', 'events') %}
            At {{ as_timestamp(e.start_at) | timestamp_custom('%H:%M') }},
            {{ e.title }}.
          {% endfor %}

Sandbox vs production

In sandbox, seeded calendar events populate the sensor immediately — no need to wait for real syncs to land. In production, Tidy's Google/Outlook sync keeps the sensor current.

Other ideas

  • Flash a light red when a task.due_soon event arrives (via webhook → Home Assistant webhook automation).
  • Dim the office lights during a meeting by monitoring calendar.event_in_progress.
  • Use /api/v1/notifications to read the pending digest and push it to a HomeKit home hub.