---
title: "Revise the brand canon"
method: PATCH
path: "/projects/{id}/canon"
tags: ["Projects"]
---

# Revise the brand canon

`PATCH /projects/{id}/canon`

## Request

- Base URL: `https://api.epovest.com/v1`
- URL: `https://api.epovest.com/v1/projects/{id}/canon`
- Auth: HTTP bearer

Field by field: a sent field replaces the current wording (an empty string or `null` clears
it), an omitted field is kept as is. Any actual change records the next canon version,
immutable, and `version_created` says whether one was recorded; sending identical wording
records nothing. The canon is meant to stay stable, so confirm with the person before
calling. Manager or above.

## Request body

- CanonFields: The canon, field by field. A sent field replaces the current wording, an empty string or `null` clears it, and an omitted field is kept as is.
  - `canon_one_liner` string, nullable
  - `canon_short` string, nullable
  - `canon_long` string, nullable
  - `canon_category` string, nullable
  - `canon_language` string, nullable
  - `canon_perks` string[], nullable
  - `canon_website` string, nullable
  - `canon_legal_name` string, nullable
  - `canon_address` string, nullable
  - `canon_phone` string, nullable
  - `canon_whatsapp` string, nullable
  - `canon_email` string, nullable

## Response `200`

The project as it now stands, and whether a version was recorded.

- object
  - `project` Project, required
    - `id` string, uuid, required
    - `name` string, required
    - `canon` Canon, required: The brand identity sheet: the text every publication reuses as is, so all mentions tell the same entity. It lives in ONE language per project, its canonical language, and the facts are language-NEUTRAL and identical everywhere.
      - `one_liner` string, nullable, required
      - `short` string, nullable, required
      - `long` string, nullable, required
      - `category` string, nullable, required
      - `language` string, nullable, required: The canonical language, a short code like `en` or `pt-br`. Null when never declared.
      - `perks` string[], required: The ordered list of distinctive claims, written in the canonical language, meant to be hammered so the engines bring them up on their own: facts that hold and can be corroborated.
      - `website` string, nullable, required: The canonical address that identifies the entity, ONE URL only. A bare domain completes to https, and a trailing slash is dropped.
      - `legal_name` string, nullable, required: The registered name of the company that operates the brand, with its jurisdiction when it is stated: the name the AIs cross-read to anchor the entity.
      - `address` string, nullable, required
      - `phone` string, nullable, required
      - `whatsapp` string, nullable, required
      - `email` string, nullable, required
    - `canon_version` integer, nullable, required
    - `link_targets` string[], required: The free addresses of the brand set on the project, the ones read by `GET /projects/{id}/link-targets`.
    - `archived` boolean, required
    - `tracker_count` integer, required: How many trackers are still filed under it.
    - `created_at` string, date-time, required
  - `version_created` boolean, required

## Other responses

- `401`: `unauthenticated`: missing, unknown or revoked key.
- `403`: `insufficient_scope`: the credential may not do this, either because the key lacks the scope, or, on a one-click connection, because the person lacks the role the action needs (manager, or owner to start, pause and top up). On that path, read it as "this person may not do this" and tell them which role the action needs.
- `404`: `not_found`: unknown for this account.
- `422`: `invalid_canon`: a field is empty where it must not be, or past its cap.
- `429`: `rate_limited`: 120 requests per minute per credential, sliding window. Retry after `Retry-After` seconds.

---

[API](https://skmtc.dev/epovest/apis/epovest-api.md) · [All operations](https://skmtc.dev/epovest/apis/epovest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/epovest/apis/epovest-api/revisions/7a78ee27ecbb?raw)
