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:
- events2. 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_soonevent arrives (via webhook → Home Assistant webhook automation). - Dim the office lights during a meeting by monitoring
calendar.event_in_progress. - Use
/api/v1/notificationsto read the pending digest and push it to a HomeKit home hub.