object: "qr_group". Status and destination are nullable because they’re inheritable — when set, child codes that don’t override them inherit. See the inheritance model.
Example
Identifiers
string
required
Always
"qr_group".string (uuid)
required
Stable UUID. The value child codes carry in their
group_id.string
required
Operator-facing name. Required on
POST. Free-form, not unique.string | null
Free-form description. Operator-facing.
Status
string | null
required
One of
unconfigured, active, inactive, archived, or null.When non-null, every child code that doesn’t override this inherits the value at scan time. When null, each child uses its own status.Destination
object
required
Inheritable destination. When
destination.type is non-null, child codes that don’t set their own destination inherit this one at scan time. When null, each child uses its own destination.Exactly one of chatbot, page, knowledge_base, or url is non-null when type is set.Knowledge
Knowledge linked to this QR group itself, on top of the chatbot’s own. When a visitor scans it and lands on a chatbot, the chatbot searches its own knowledge plus these articles and folders, so item-specific content (the manual for the TV in one room) lives here instead of on the shared chatbot. See Scan-specific knowledge. It applies to every code in the group, alongside each code’s own links.string[]
required
UUIDs of Articles linked to this QR group. Write the desired set with
article_ids and the join is fully replaced.string[]
required
UUIDs of Article Categories linked to this QR group. Every article inside a linked category and its sub-categories (now and in future) is included.
Timestamps
string (datetime)
required
When the group was created. ISO 8601.
string (datetime)
required
Last mutation. ISO 8601.
Listing the group’s children
QR Groups don’t expose achildren[] array on the group object. To list child codes, query the QR Codes endpoint and filter by group_id:
Properties
Group properties are a flat list of{ key, value, sort_order } rows hung off the group, in the same shape as QR code properties. List them with GET /qr-groups/{id}/properties and replace the full set with PUT /qr-groups/{id}/properties (an empty properties array clears them):
Delete behaviour
DELETE /qr-groups/{id} returns 204 No Content. The group row is removed and every child has its group_id set to null (ON DELETE SET NULL at the database). Child codes are not deleted.

