<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>init.Tasks API changelog</title>
  <link href="https://devs.inittasks.com/changelog.xml" rel="self"/>
  <link href="https://devs.inittasks.com/changelog"/>
  <id>tag:devs.inittasks.com,2026:api-changelog</id>
  <updated>2026-09-15T00:00:00Z</updated>
  <entry>
    <title>Webhooks</title>
    <id>tag:devs.inittasks.com,2026-09-15:webhooks</id>
    <updated>2026-09-15T00:00:00Z</updated>
    <link href="https://devs.inittasks.com/changelog#webhooks"/>
    <content type="text">Subscribe to thin events over `/webhooks`: create, rotate a secret with a 24-hour overlap, ping, read the last 100 deliveries, redeliver one.

Events carry an id and a type, never the object — the server cannot read your content. There is deliberately no `todo.completed`: `status` is encrypted, so the server cannot tell a completion from a rename. Fetch the object and decide.

Inbound is best-effort and at-most-once. Reconcile with `updated_since` polling.</content>
  </entry>
  <entry>
    <title>v1</title>
    <id>tag:devs.inittasks.com,2026-09-15:v1</id>
    <updated>2026-09-15T00:00:00Z</updated>
    <link href="https://devs.inittasks.com/changelog#v1"/>
    <content type="text">The first public version: containers, to-dos, inbox, tags, attachments, filters, views, search, trash and settings, plus `/keys`, `/grants` and `/sessions`.

Personal access tokens for your own scripts; OAuth 2.1 with PKCE and native approval for apps. Fine-grained scopes. RFC 9457 problem+json on every error. Cursor pagination in a stable order. `Idempotency-Key` on writes.</content>
  </entry>
</feed>
