MANIFEST_NOT_A_TABLE | The document is not a table (an array, a string, null, a date, a Map). |
MANIFEST_NOT_DATA | The document holds a cycle or a value JSON cannot carry. |
MANIFEST_TOO_LARGE | Larger than 64 KB as JSON. Nothing else is checked. |
MANIFEST_TOO_MANY_ERRORS | Last entry when more than 50 errors were found. |
MANIFEST_FIELD_REQUIRED | A required field is missing (hosting.url for an external app, hosting.allowed_hosts for a hosted one). |
MANIFEST_FIELD_UNKNOWN | A key that is not a manifest field. The fix names the near key or lists the accepted ones. |
MANIFEST_FIELD_TYPE | A value of the wrong type (a string where an array is expected, a TOML date). |
MANIFEST_FIELD_NOT_FOR_MODE | hosting.url, auth.callback_url or an absolute webhook uri on a hosted app; allowed_hosts on external. |
MANIFEST_LIST_TOO_LONG | A list over its limit. |
MANIFEST_LIST_EMPTY | A webhook entry with no topic. |
MANIFEST_VALUE_NOT_ALLOWED | A value outside a fixed list (hosting.mode, a data definition’s owner, type, visibility). |
MANIFEST_NAME_INVALID | name empty, too long, on two lines, with an invisible character or surrounding spaces. |
MANIFEST_HANDLE_INVALID | handle is not 3-40 lowercase letters and digits joined by single hyphens. |
MANIFEST_HANDLE_RESERVED | handle is reserved by Tassyir (www, api, tassyir, google-sheets, …). |
MANIFEST_API_VERSION_UNSUPPORTED | api_version is not a supported version. |
MANIFEST_SCOPE_UNKNOWN | Not a scope. The fix names the near scope or lists them. |
MANIFEST_SCOPE_NOT_AVAILABLE | A scope apps cannot request yet (write_storefront). |
MANIFEST_SCOPE_DUPLICATE | A scope listed twice in one list. |
MANIFEST_SCOPE_REQUIRED_AND_OPTIONAL | A scope in both scopes and optional_scopes. |
MANIFEST_SCOPE_ALREADY_IMPLIED | An optional scope a required one already implies. |
MANIFEST_SCOPE_NEEDS_ANOTHER | A scope that opens nothing alone (read_customer_contact without read_orders). |
MANIFEST_SCOPE_REASON_MISSING | A requested scope without a reason. |
MANIFEST_SCOPE_REASON_UNUSED | A reason for a scope the manifest does not request, or for a name that is not a scope. |
MANIFEST_SCOPE_REASON_INVALID | A reason too short, too long, on two lines or with an invisible character. |
MANIFEST_URL_INVALID | An absolute URL breaks a URL rule (http, port, credentials, query, fragment, capitals, a bad path). |
MANIFEST_URL_HOST_NOT_ALLOWED | Such a URL points at an IP address, a private name or a Tassyir domain. |
MANIFEST_PATH_INVALID | admin.page or a relative webhook uri breaks the path rules. |
MANIFEST_HOST_INVALID | An allowed_hosts entry is not a hostname (a URL, a port, a path, capitals, a misplaced wildcard). |
MANIFEST_HOST_NOT_ALLOWED | An allowed_hosts entry is an IP address, a private name or a Tassyir domain. |
MANIFEST_HOST_DUPLICATE | An allowed_hosts entry listed twice. |
MANIFEST_TOPIC_UNKNOWN | Not a webhook topic. The fix names the near topic (orders/create → orders/created). |
MANIFEST_TOPIC_DUPLICATE | A topic subscribed twice in the manifest. |
MANIFEST_TOPIC_SCOPE_MISSING | A topic whose resource needs a scope the manifest does not request. |
MANIFEST_DATA_KEY_INVALID | A data definition’s key is not [a-z][a-z0-9_]{0,63}. |
MANIFEST_DATA_KEY_DUPLICATE | Two data definitions with the same owner and key. |
MANIFEST_BLOCKS_NOT_AVAILABLE | [[storefront.blocks]] before they are available (Phase 2). |
MANIFEST_BLOCKS_SCOPE_MISSING | Storefront blocks without write_storefront (once available). |
MANIFEST_BLOCK_SCRIPT_NOT_ALLOWED | A block key that would put code on the storefront (script, js, html, src, on…). |
MANIFEST_BLOCK_HANDLE_INVALID | A block handle breaks the handle rules. |
MANIFEST_BLOCK_HANDLE_DUPLICATE | Two blocks with the same handle. |
MANIFEST_BLOCK_TEMPLATE_INVALID | A block template is not a lowercase relative .liquid path of the bundle. |