# @kentcdodds/canva ## Intent Provide a complete, reusable Canva Connect API package for Kody workflows. It covers every operation in the configured Canva OpenAPI surface while keeping mutations explicit, previewable, and safe to publish as a community package. ## What it does - Create, inspect, search, resize, merge, import, or export Canva designs - Upload, inspect, rename, tag, or delete assets - Create and organize folders; list or move their contents - Read and write comment threads and replies - Work with brand templates, autofill datasets, user capabilities, and OIDC - Dispatch any supported Connect operation by lowercase OpenAPI slug via `./api` Mutations (`POST` / `PATCH` / `DELETE`) require explicit confirmation and support dry-run previews. Preview APIs are marked in the operations catalog and can change without notice. ## Prerequisites / setup 1. Create a Canva Connect API integration. 2. Set redirect URI to `https://kody.codes/connect/oauth`. 3. Save the OAuth integration in Kody as **`canva`**. 4. Connect or reconnect at `https://kody.codes/connect/oauth?provider=canva`. 5. Approve hosts `api.canva.com` and `www.canva.com`. Grant only the scopes your workflows need. The full surface may use: - `asset:read`, `asset:write` - `brandtemplate:content:read`, `brandtemplate:content:write`, `brandtemplate:meta:read` - `comment:read`, `comment:write` - `design:content:read`, `design:content:write`, `design:meta:read` - `folder:read`, `folder:write`, `folder:permission:write` - `profile:read` 6. Agents: see [`AGENTS.md`](./AGENTS.md) for import paths, smoke, and dryRun. ## Done when - The `canva` OAuth integration is connected - Smoke test returns `{ ok: true }` with status/shape only (no profile PII) - Mutations refuse without `confirm: true`; `dryRun: true` never calls Canva