30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

Update Consent Category

consent/update-category changes how a category is presented: its name, its description, whether it appears in the preference centre, and where it sits in the order.

What it deliberately cannot change is whether the category is strictly necessary.

At a glance

Abilityconsent/update-category
ToolsetCookieYes — toolset/cookieyes
GroupCookieYes › Consent Categories
RequiresCookieYes, active on the site
Capabilitymanage_options
SafetyWrites data
RepeatableNot idempotent — each call changes the row set, so re-running is not a no-op
Ships inAcrossAI Abilities Manager 0.0.34 and later

The flag that is not here

The strictly necessary flag decides whether a category loads before a visitor has chosen anything. Flip it on and the category stops being a choice; flip it off and things that were loading immediately stop until someone consents.

Either direction is a decision about what the site is claiming and what law it is claiming it under. That is not a configuration change, and it is not something to do on an assistant’s reading of a sentence, so it is not exposed. The settings screen has it.

What is here is presentation. Renaming a category, improving its description, hiding one from the preference centre, reordering them — all real work, none of it changing what loads when.

The sell_personal_data flag is here, because it is a disclosure rather than a loading rule: it marks the category as counting as selling or sharing personal information, which is what several US state laws turn on.

Names and descriptions follow the same per-language rule as cookies: a string sets every language, a map sets the ones it names.

Input

NameTypeRequiredWhat it is
idintegerYesCategory ID, from consent/list-categories.
namestring | objectNoA plain string is applied to every language. A map keyed by language code sets them individually, and languages you leave out keep the text they already had.
descriptionstring | objectNoA plain string is applied to every language. A map keyed by language code sets them individually, and languages you leave out keep the text they already had.
visiblebooleanNoWhether the category is shown in the preference centre.
priorityintegerNoOrdering within the preference centre.
sell_personal_databooleanNoWhether this category counts as selling or sharing personal information.

What comes back

NameTypeWhat it is
categoryobjectThe category after the write.
banner_refreshedbooleanWhether the cached banner was rebuilt after the write. This is the field that says the change actually reached visitors.
languagesarrayThe languages the banner is built for.
renderedobjectThe size of the built banner, per language.
pending_rebuildbooleanWhether the banner is still waiting to be rebuilt. True after a write means the change is stored but not yet being served.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation.

Example

Ask your assistant:

Rename the “Advertisement” category to “Marketing” and move it last.

It resolves to one call:

{
  "ability": "consent/update-category",
  "parameters": {
    "id": 4,
    "name": "Marketing",
    "priority": 90
  }
}

Worth knowing

  • Strictly necessary is not changeable here, by design.
  • Hiding a category removes a visitor’s ability to reject it. That is a bigger change than it looks.
  • A string name overwrites every language’s name at once.
  • Check banner_refreshed before assuming visitors see the new wording.

Related abilities


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading