Customer
The visitors who have an account on a website, and the groups they are segmented into — by hand in a MANUAL group, by a rule in a DYNAMIC one. A customer belongs to one website, and signs in to it on the site itself; what is managed here is who they are, which groups they are in, and whether they may sign in at all. The fields a website adds to its customers — customer_attributes, in sections of customer_attribute_groups — are defined here too, and put in order with :move.
List customer_attribute_groups
A section the customer form in the admin gathers customer attributes under — «Personal», «Preferences». An attribute names its section in group_id; the registration form on the site lists its fields flat and ignores sections. Deleting a section moves its attributes to the default one. At most 20 per website.
path Parameters
website_idId of the parent website.
query Parameters
page_sizeRows per page. Over the maximum is clamped, not rejected.
page_tokenOpaque token from a previous next_page_token. A token minted under a different order_by/filter is rejected.
skipRows to skip before the page (AIP-158). skip + page_size is capped at 10000; beyond that is OUT_OF_RANGE.
order_byComma-separated field [asc|desc], at most 3 keys. Default: sort_order asc. Sortable: sort_order.
filterAIP-160 subset (§8). Filterable: display_name. A field outside the list is INVALID_ARGUMENT.
List customer_attribute_groups › Responses
One page of customer_attribute_groups.
This page of customer_attribute_groups, in the requested order.
next_page_tokenOpaque. Absent or empty means this was the last page.
total_sizeRows in the whole filtered collection, not in this page.
Create customer_attribute_group
Adds a section. display_name is required; a website that already has 20 sections answers FAILED_PRECONDITION. The new section comes last in sort_order.
path Parameters
website_idId of the parent website.
Create customer_attribute_group › Request Body
display_nameThe section's heading, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe heading in other languages: an object from a locale (de, pt-BR) to the heading in it, each at most 255 characters. Replaced whole when sent.
Create customer_attribute_group › Responses
The created resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
display_nameThe section's heading, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe heading in other languages: an object from a locale (de, pt-BR) to the heading in it, each at most 255 characters. Replaced whole when sent.
sort_orderWhere the section stands among the website's sections: they are shown in ascending sort_order. A new section comes last; :move is the only way to change it.
Get customer_attribute_group
A section the customer form in the admin gathers customer attributes under — «Personal», «Preferences». An attribute names its section in group_id; the registration form on the site lists its fields flat and ignores sections. Deleting a section moves its attributes to the default one. At most 20 per website.
path Parameters
website_idId of the parent website.
attribute_group_idId of the parent attribute_group.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get customer_attribute_group › Responses
The resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
display_nameThe section's heading, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe heading in other languages: an object from a locale (de, pt-BR) to the heading in it, each at most 255 characters. Replaced whole when sent.
sort_orderWhere the section stands among the website's sections: they are shown in ascending sort_order. A new section comes last; :move is the only way to change it.
Delete customer_attribute_group
Deletes a section and moves every field in it to the default section — group_id cleared — before it answers. The fields themselves stay.
path Parameters
website_idId of the parent website.
attribute_group_idId of the parent attribute_group.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete customer_attribute_group › Responses
Deleted. No body (§7).
Update customer_attribute_group
A section the customer form in the admin gathers customer attributes under — «Personal», «Preferences». An attribute names its section in group_id; the registration form on the site lists its fields flat and ignores sections. Deleting a section moves its attributes to the default one. At most 20 per website.
path Parameters
website_idId of the parent website.
attribute_group_idId of the parent attribute_group.
query Parameters
update_maskComma-separated field paths to merge. A field named here and sent as null is cleared; without the mask a null is dropped (§7, §11).
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Update customer_attribute_group › Request Body
display_nameThe section's heading, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe heading in other languages: an object from a locale (de, pt-BR) to the heading in it, each at most 255 characters. Replaced whole when sent.
Update customer_attribute_group › Responses
The updated resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
display_nameThe section's heading, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe heading in other languages: an object from a locale (de, pt-BR) to the heading in it, each at most 255 characters. Replaced whole when sent.
sort_orderWhere the section stands among the website's sections: they are shown in ascending sort_order. A new section comes last; :move is the only way to change it.
Move (customer_attribute_groups)
Moves a section to another place among the website's sections. Send {"after_id": "..."} to put it right after that section, or {"after_id": null} (or {}) to put it first. Answers the moved section with its new sort_order; the other sections are renumbered around it.
path Parameters
website_idId of the parent website.
attribute_group_idId of the parent attribute_group.
Move (customer_attribute_groups) › Request Body optional
Move (customer_attribute_groups) › Responses
The affected resource, or the method’s own response object (§10).
List customer_attributes
A field the tenant adds to the website's customers — a birth date, a loyalty number, a preferred store — with its type, its label in each language, whether it is required and whether the registration form asks for it. A customer's values are kept in their attributes under the field's key. A field is switched off with is_active rather than deleted when its values are worth keeping: deleting it removes them from every customer. At most 100 per website.
path Parameters
website_idId of the parent website.
query Parameters
page_sizeRows per page. Over the maximum is clamped, not rejected.
page_tokenOpaque token from a previous next_page_token. A token minted under a different order_by/filter is rejected.
skipRows to skip before the page (AIP-158). skip + page_size is capped at 10000; beyond that is OUT_OF_RANGE.
order_byComma-separated field [asc|desc], at most 3 keys. Default: sort_order asc. Sortable: key, sort_order.
filterAIP-160 subset (§8). Filterable: display_name, group_id, is_active, is_required, key, show_in_registration, type. A field outside the list is INVALID_ARGUMENT.
List customer_attributes › Responses
One page of customer_attributes.
This page of customer_attributes, in the requested order.
next_page_tokenOpaque. Absent or empty means this was the last page.
total_sizeRows in the whole filtered collection, not in this page.
Create customer_attribute
Adds a field to the website's customers. key, display_name and type are required; a key another field of the website has answers ALREADY_EXISTS, and a website that already has 100 fields answers FAILED_PRECONDITION. The new field comes last in sort_order.
path Parameters
website_idId of the parent website.
Create customer_attribute › Request Body
display_nameThe field's label, shown wherever labels has none for the locale. Not blank, at most 255 characters.
keyThe name a customer's value is stored under in their attributes, and the name a registration form sends it as: a lowercase letter, then up to 63 lowercase letters, digits and underscores. Unique on the website, and none of a customer's own field names (email, display_name, tags, ...). Required on create and fixed afterwards.
labelsThe label in other languages: an object from a locale (de, pt-BR) to the label in it, each at most 255 characters. A locale it leaves out shows display_name. Replaced whole when sent.
descriptionThe hint shown under the field on a form. At most 2000 characters.
typeWhat the field holds, and so which control a form draws: TEXT, TEXTAREA, NUMBER, BOOLEAN, DATE (a YYYY-MM-DD string), SELECT (one of options) or MULTISELECT (any of them). Required on create and fixed afterwards.
optionsThe choices of a SELECT or MULTISELECT field, in the order a form lists them: each {value, display_name, labels}, where value is what a customer's attributes stores and is unique within the field. At least one and at most 100 for those two types, none for the others. Replaced whole when sent.
is_requiredWhether a form refuses to save the customer without a value for it. false when omitted.
show_in_registrationWhether the website's registration form asks for it. false when omitted — the field is then filled in the admin only.
is_activeWhether the field is in use. Switching it off takes it off every form and stops new values being accepted, while the values customers already hold stay readable — the way to retire a field without losing them. true when omitted.
min_lengthThe fewest characters a TEXT or TEXTAREA value may have. Not allowed on other types.
max_lengthThe most characters a TEXT or TEXTAREA value may have — at most 1024 for TEXT and 8192 for TEXTAREA, which is also the limit when it is omitted. Not allowed on other types.
min_valueThe smallest value a NUMBER field accepts. Not allowed on other types.
max_valueThe largest value a NUMBER field accepts. Not allowed on other types.
group_idThe customer_attribute_groups section the admin's customer form shows the field in — an id of a group of the website. Without one the field is in the default section; deleting its group puts it back there.
Create customer_attribute › Responses
The created resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
keyThe name a customer's value is stored under in their attributes, and the name a registration form sends it as: a lowercase letter, then up to 63 lowercase letters, digits and underscores. Unique on the website, and none of a customer's own field names (email, display_name, tags, ...). Required on create and fixed afterwards.
display_nameThe field's label, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe label in other languages: an object from a locale (de, pt-BR) to the label in it, each at most 255 characters. A locale it leaves out shows display_name. Replaced whole when sent.
descriptionThe hint shown under the field on a form. At most 2000 characters.
typeWhat the field holds, and so which control a form draws: TEXT, TEXTAREA, NUMBER, BOOLEAN, DATE (a YYYY-MM-DD string), SELECT (one of options) or MULTISELECT (any of them). Required on create and fixed afterwards.
optionsThe choices of a SELECT or MULTISELECT field, in the order a form lists them: each {value, display_name, labels}, where value is what a customer's attributes stores and is unique within the field. At least one and at most 100 for those two types, none for the others. Replaced whole when sent.
is_requiredWhether a form refuses to save the customer without a value for it. false when omitted.
show_in_registrationWhether the website's registration form asks for it. false when omitted — the field is then filled in the admin only.
is_activeWhether the field is in use. Switching it off takes it off every form and stops new values being accepted, while the values customers already hold stay readable — the way to retire a field without losing them. true when omitted.
min_lengthThe fewest characters a TEXT or TEXTAREA value may have. Not allowed on other types.
max_lengthThe most characters a TEXT or TEXTAREA value may have — at most 1024 for TEXT and 8192 for TEXTAREA, which is also the limit when it is omitted. Not allowed on other types.
min_valueThe smallest value a NUMBER field accepts. Not allowed on other types.
max_valueThe largest value a NUMBER field accepts. Not allowed on other types.
group_idThe customer_attribute_groups section the admin's customer form shows the field in — an id of a group of the website. Without one the field is in the default section; deleting its group puts it back there.
sort_orderWhere the field stands among the website's fields: lists and forms show them in ascending sort_order. A new field comes last; :move is the only way to change it.
Get customer_attribute
A field the tenant adds to the website's customers — a birth date, a loyalty number, a preferred store — with its type, its label in each language, whether it is required and whether the registration form asks for it. A customer's values are kept in their attributes under the field's key. A field is switched off with is_active rather than deleted when its values are worth keeping: deleting it removes them from every customer. At most 100 per website.
path Parameters
website_idId of the parent website.
attribute_idId of the parent attribute.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get customer_attribute › Responses
The resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
keyThe name a customer's value is stored under in their attributes, and the name a registration form sends it as: a lowercase letter, then up to 63 lowercase letters, digits and underscores. Unique on the website, and none of a customer's own field names (email, display_name, tags, ...). Required on create and fixed afterwards.
display_nameThe field's label, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe label in other languages: an object from a locale (de, pt-BR) to the label in it, each at most 255 characters. A locale it leaves out shows display_name. Replaced whole when sent.
descriptionThe hint shown under the field on a form. At most 2000 characters.
typeWhat the field holds, and so which control a form draws: TEXT, TEXTAREA, NUMBER, BOOLEAN, DATE (a YYYY-MM-DD string), SELECT (one of options) or MULTISELECT (any of them). Required on create and fixed afterwards.
optionsThe choices of a SELECT or MULTISELECT field, in the order a form lists them: each {value, display_name, labels}, where value is what a customer's attributes stores and is unique within the field. At least one and at most 100 for those two types, none for the others. Replaced whole when sent.
is_requiredWhether a form refuses to save the customer without a value for it. false when omitted.
show_in_registrationWhether the website's registration form asks for it. false when omitted — the field is then filled in the admin only.
is_activeWhether the field is in use. Switching it off takes it off every form and stops new values being accepted, while the values customers already hold stay readable — the way to retire a field without losing them. true when omitted.
min_lengthThe fewest characters a TEXT or TEXTAREA value may have. Not allowed on other types.
max_lengthThe most characters a TEXT or TEXTAREA value may have — at most 1024 for TEXT and 8192 for TEXTAREA, which is also the limit when it is omitted. Not allowed on other types.
min_valueThe smallest value a NUMBER field accepts. Not allowed on other types.
max_valueThe largest value a NUMBER field accepts. Not allowed on other types.
group_idThe customer_attribute_groups section the admin's customer form shows the field in — an id of a group of the website. Without one the field is in the default section; deleting its group puts it back there.
sort_orderWhere the field stands among the website's fields: lists and forms show them in ascending sort_order. A new field comes last; :move is the only way to change it.
Delete customer_attribute
Deletes a field. Switch is_active off instead to keep the values customers hold under it.
path Parameters
website_idId of the parent website.
attribute_idId of the parent attribute.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete customer_attribute › Responses
Deleted. No body (§7).
Update customer_attribute
Changes a field. key and type are fixed and refused here, and sort_order is changed with :move. The result is checked as a whole: options only on SELECT and MULTISELECT, a length only on TEXT and TEXTAREA, a range only on NUMBER.
path Parameters
website_idId of the parent website.
attribute_idId of the parent attribute.
query Parameters
update_maskComma-separated field paths to merge. A field named here and sent as null is cleared; without the mask a null is dropped (§7, §11).
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Update customer_attribute › Request Body
display_nameThe field's label, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe label in other languages: an object from a locale (de, pt-BR) to the label in it, each at most 255 characters. A locale it leaves out shows display_name. Replaced whole when sent.
descriptionThe hint shown under the field on a form. At most 2000 characters.
optionsThe choices of a SELECT or MULTISELECT field, in the order a form lists them: each {value, display_name, labels}, where value is what a customer's attributes stores and is unique within the field. At least one and at most 100 for those two types, none for the others. Replaced whole when sent.
is_requiredWhether a form refuses to save the customer without a value for it. false when omitted.
show_in_registrationWhether the website's registration form asks for it. false when omitted — the field is then filled in the admin only.
is_activeWhether the field is in use. Switching it off takes it off every form and stops new values being accepted, while the values customers already hold stay readable — the way to retire a field without losing them. true when omitted.
min_lengthThe fewest characters a TEXT or TEXTAREA value may have. Not allowed on other types.
max_lengthThe most characters a TEXT or TEXTAREA value may have — at most 1024 for TEXT and 8192 for TEXTAREA, which is also the limit when it is omitted. Not allowed on other types.
min_valueThe smallest value a NUMBER field accepts. Not allowed on other types.
max_valueThe largest value a NUMBER field accepts. Not allowed on other types.
group_idThe customer_attribute_groups section the admin's customer form shows the field in — an id of a group of the website. Without one the field is in the default section; deleting its group puts it back there.
Update customer_attribute › Responses
The updated resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
keyThe name a customer's value is stored under in their attributes, and the name a registration form sends it as: a lowercase letter, then up to 63 lowercase letters, digits and underscores. Unique on the website, and none of a customer's own field names (email, display_name, tags, ...). Required on create and fixed afterwards.
display_nameThe field's label, shown wherever labels has none for the locale. Not blank, at most 255 characters.
labelsThe label in other languages: an object from a locale (de, pt-BR) to the label in it, each at most 255 characters. A locale it leaves out shows display_name. Replaced whole when sent.
descriptionThe hint shown under the field on a form. At most 2000 characters.
typeWhat the field holds, and so which control a form draws: TEXT, TEXTAREA, NUMBER, BOOLEAN, DATE (a YYYY-MM-DD string), SELECT (one of options) or MULTISELECT (any of them). Required on create and fixed afterwards.
optionsThe choices of a SELECT or MULTISELECT field, in the order a form lists them: each {value, display_name, labels}, where value is what a customer's attributes stores and is unique within the field. At least one and at most 100 for those two types, none for the others. Replaced whole when sent.
is_requiredWhether a form refuses to save the customer without a value for it. false when omitted.
show_in_registrationWhether the website's registration form asks for it. false when omitted — the field is then filled in the admin only.
is_activeWhether the field is in use. Switching it off takes it off every form and stops new values being accepted, while the values customers already hold stay readable — the way to retire a field without losing them. true when omitted.
min_lengthThe fewest characters a TEXT or TEXTAREA value may have. Not allowed on other types.
max_lengthThe most characters a TEXT or TEXTAREA value may have — at most 1024 for TEXT and 8192 for TEXTAREA, which is also the limit when it is omitted. Not allowed on other types.
min_valueThe smallest value a NUMBER field accepts. Not allowed on other types.
max_valueThe largest value a NUMBER field accepts. Not allowed on other types.
group_idThe customer_attribute_groups section the admin's customer form shows the field in — an id of a group of the website. Without one the field is in the default section; deleting its group puts it back there.
sort_orderWhere the field stands among the website's fields: lists and forms show them in ascending sort_order. A new field comes last; :move is the only way to change it.
Move (customer_attributes)
Moves a field to another place among the website's fields. Send {"after_id": "..."} to put it right after that field, or {"after_id": null} (or {}) to put it first. Answers the moved field with its new sort_order; the other fields are renumbered around it.
path Parameters
website_idId of the parent website.
attribute_idId of the parent attribute.
Move (customer_attributes) › Request Body optional
Move (customer_attributes) › Responses
The affected resource, or the method’s own response object (§10).
List customer_groups
A group the website's customers are segmented into — what a page can be shown to or hidden from, and whose version of a page a customer sees. A MANUAL group holds the customers assigned to it; a DYNAMIC one holds whoever matches its rule. Deleting a group takes it off every customer.
path Parameters
website_idId of the parent website.
query Parameters
page_sizeRows per page. Over the maximum is clamped, not rejected.
page_tokenOpaque token from a previous next_page_token. A token minted under a different order_by/filter is rejected.
skipRows to skip before the page (AIP-158). skip + page_size is capped at 10000; beyond that is OUT_OF_RANGE.
order_byComma-separated field [asc|desc], at most 3 keys. Default: create_time desc. Sortable: create_time, display_name.
filterAIP-160 subset (§8). Filterable: create_time, display_name, priority, type. A field outside the list is INVALID_ARGUMENT.
List customer_groups › Responses
One page of customer_groups.
This page of customer_groups, in the requested order.
next_page_tokenOpaque. Absent or empty means this was the last page.
total_sizeRows in the whole filtered collection, not in this page.
Create customer_group
A group the website's customers are segmented into — what a page can be shown to or hidden from, and whose version of a page a customer sees. A MANUAL group holds the customers assigned to it; a DYNAMIC one holds whoever matches its rule. Deleting a group takes it off every customer.
path Parameters
website_idId of the parent website.
Create customer_group › Request Body
display_nameThe group's name, unique on the website — how the tenant tells groups apart wherever one is picked. Not blank, at most 255 characters.
descriptionWhat the group is for, for the people who manage it. At most 2000 characters.
typeHow the group gets its members: MANUAL — the customers put in it by hand, DYNAMIC — the customers its rule matches. MANUAL when omitted; fixed at creation.
ruleWho is in a DYNAMIC group: a filter over a customer's email, tags and create_time, written like the filter of the customers List — the group holds exactly the customers that List returns for it, and group_ids follows a new rule shortly after it is saved. A rule that does not parse or names another field is refused. Without a rule the group has no members. A MANUAL group has none. At most 2000 characters.
priorityWhich group wins when a customer is in several that each have their own version of a page: the higher number. 0 when omitted.
Create customer_group › Responses
The created resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
display_nameThe group's name, unique on the website — how the tenant tells groups apart wherever one is picked. Not blank, at most 255 characters.
descriptionWhat the group is for, for the people who manage it. At most 2000 characters.
typeHow the group gets its members: MANUAL — the customers put in it by hand, DYNAMIC — the customers its rule matches. MANUAL when omitted; fixed at creation.
ruleWho is in a DYNAMIC group: a filter over a customer's email, tags and create_time, written like the filter of the customers List — the group holds exactly the customers that List returns for it, and group_ids follows a new rule shortly after it is saved. A rule that does not parse or names another field is refused. Without a rule the group has no members. A MANUAL group has none. At most 2000 characters.
priorityWhich group wins when a customer is in several that each have their own version of a page: the higher number. 0 when omitted.
Get customer_group
A group the website's customers are segmented into — what a page can be shown to or hidden from, and whose version of a page a customer sees. A MANUAL group holds the customers assigned to it; a DYNAMIC one holds whoever matches its rule. Deleting a group takes it off every customer.
path Parameters
website_idId of the parent website.
customer_group_idId of the parent customer_group.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get customer_group › Responses
The resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
display_nameThe group's name, unique on the website — how the tenant tells groups apart wherever one is picked. Not blank, at most 255 characters.
descriptionWhat the group is for, for the people who manage it. At most 2000 characters.
typeHow the group gets its members: MANUAL — the customers put in it by hand, DYNAMIC — the customers its rule matches. MANUAL when omitted; fixed at creation.
ruleWho is in a DYNAMIC group: a filter over a customer's email, tags and create_time, written like the filter of the customers List — the group holds exactly the customers that List returns for it, and group_ids follows a new rule shortly after it is saved. A rule that does not parse or names another field is refused. Without a rule the group has no members. A MANUAL group has none. At most 2000 characters.
priorityWhich group wins when a customer is in several that each have their own version of a page: the higher number. 0 when omitted.
Delete customer_group
Deletes a group and takes it off every customer who was in it — out of manual_group_ids and group_ids alike — before it answers.
path Parameters
website_idId of the parent website.
customer_group_idId of the parent customer_group.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete customer_group › Responses
Deleted. No body (§7).
Update customer_group
A group the website's customers are segmented into — what a page can be shown to or hidden from, and whose version of a page a customer sees. A MANUAL group holds the customers assigned to it; a DYNAMIC one holds whoever matches its rule. Deleting a group takes it off every customer.
path Parameters
website_idId of the parent website.
customer_group_idId of the parent customer_group.
query Parameters
update_maskComma-separated field paths to merge. A field named here and sent as null is cleared; without the mask a null is dropped (§7, §11).
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Update customer_group › Request Body
display_nameThe group's name, unique on the website — how the tenant tells groups apart wherever one is picked. Not blank, at most 255 characters.
descriptionWhat the group is for, for the people who manage it. At most 2000 characters.
ruleWho is in a DYNAMIC group: a filter over a customer's email, tags and create_time, written like the filter of the customers List — the group holds exactly the customers that List returns for it, and group_ids follows a new rule shortly after it is saved. A rule that does not parse or names another field is refused. Without a rule the group has no members. A MANUAL group has none. At most 2000 characters.
priorityWhich group wins when a customer is in several that each have their own version of a page: the higher number. 0 when omitted.
Update customer_group › Responses
The updated resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
display_nameThe group's name, unique on the website — how the tenant tells groups apart wherever one is picked. Not blank, at most 255 characters.
descriptionWhat the group is for, for the people who manage it. At most 2000 characters.
typeHow the group gets its members: MANUAL — the customers put in it by hand, DYNAMIC — the customers its rule matches. MANUAL when omitted; fixed at creation.
ruleWho is in a DYNAMIC group: a filter over a customer's email, tags and create_time, written like the filter of the customers List — the group holds exactly the customers that List returns for it, and group_ids follows a new rule shortly after it is saved. A rule that does not parse or names another field is refused. Without a rule the group has no members. A MANUAL group has none. At most 2000 characters.
priorityWhich group wins when a customer is in several that each have their own version of a page: the higher number. 0 when omitted.
List customers
A visitor who has an account on the website — registered on the site itself or added here by the tenant. A customer belongs to one website: the same address on another website is another customer. Groups are assigned by hand in manual_group_ids; group_ids is the resulting membership. The fields the website adds to its customers are filled in attributes.
path Parameters
website_idId of the parent website.
query Parameters
page_sizeRows per page. Over the maximum is clamped, not rejected.
page_tokenOpaque token from a previous next_page_token. A token minted under a different order_by/filter is rejected.
skipRows to skip before the page (AIP-158). skip + page_size is capped at 10000; beyond that is OUT_OF_RANGE.
order_byComma-separated field [asc|desc], at most 3 keys. Default: create_time desc. Sortable: create_time, email.
filterAIP-160 subset (§8). Filterable: create_time, display_name, email, is_active, tags. A field outside the list is INVALID_ARGUMENT.
List customers › Responses
One page of customers.
This page of customers, in the requested order.
next_page_tokenOpaque. Absent or empty means this was the last page.
total_sizeRows in the whole filtered collection, not in this page.
Create customer
Adds a customer to the website, as if they had registered on it: email and password are required, and an address the website already has answers ALREADY_EXISTS. Groups are given in manual_group_ids and must be MANUAL groups of the same website.
path Parameters
website_idId of the parent website.
Create customer › Request Body
emailThe address the customer signs in to the website with. Unique on the website, compared and stored lowercase with surrounding spaces dropped. Required on create and fixed afterwards.
display_nameThe name the customer is greeted by on the website and listed under in the admin. At most 255 characters.
tagsFree-form labels to segment customers by, each 1 to 64 characters; a repeated one is kept once. filter=tags:"vip" lists the customers carrying a tag.
manual_group_idsThe groups this customer was put in by hand — ids of customer_groups of the website whose type is MANUAL. A deleted group drops out of it on its own.
is_activeWhether the customer may sign in. A new customer is active; switching it off keeps the account but stops its sessions from being renewed.
attributesThe customer's values of the fields the website defines in customer_attributes: an object from a field's key to its value — a string for TEXT, TEXTAREA, SELECT and DATE (YYYY-MM-DD), a number for NUMBER, true or false for BOOLEAN, an array of option values for MULTISELECT. Replaced whole when sent: a field it leaves out, or sends as null, an empty string or an empty array, has no value, and a field with is_required must have one — on create too, where an absent object counts as an empty one. A key the website has no field for, or a value its field does not accept, is refused on attributes.<key>. The value of a field switched off with is_active is kept as it is: sent back unchanged it is accepted, changed it is refused. Deleting a field removes its value from every customer. Omitted when empty.
passwordThe customer's password: at least 8 characters with a letter and a digit. Required on create; on update it sets a new one and signs the customer out of every session. Write-only — never returned.
Create customer › Responses
The created resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
emailThe address the customer signs in to the website with. Unique on the website, compared and stored lowercase with surrounding spaces dropped. Required on create and fixed afterwards.
display_nameThe name the customer is greeted by on the website and listed under in the admin. At most 255 characters.
tagsFree-form labels to segment customers by, each 1 to 64 characters; a repeated one is kept once. filter=tags:"vip" lists the customers carrying a tag.
manual_group_idsThe groups this customer was put in by hand — ids of customer_groups of the website whose type is MANUAL. A deleted group drops out of it on its own.
group_idsEvery group the customer is in: the ones in manual_group_ids and the DYNAMIC ones whose rule they match, derived again whenever the customer is written and whenever such a rule changes. This is the membership the website decides by, and it is maintained by the server.
is_activeWhether the customer may sign in. A new customer is active; switching it off keeps the account but stops its sessions from being renewed.
attributesThe customer's values of the fields the website defines in customer_attributes: an object from a field's key to its value — a string for TEXT, TEXTAREA, SELECT and DATE (YYYY-MM-DD), a number for NUMBER, true or false for BOOLEAN, an array of option values for MULTISELECT. Replaced whole when sent: a field it leaves out, or sends as null, an empty string or an empty array, has no value, and a field with is_required must have one — on create too, where an absent object counts as an empty one. A key the website has no field for, or a value its field does not accept, is refused on attributes.<key>. The value of a field switched off with is_active is kept as it is: sent back unchanged it is accepted, changed it is refused. Deleting a field removes its value from every customer. Omitted when empty.
Get customer
A visitor who has an account on the website — registered on the site itself or added here by the tenant. A customer belongs to one website: the same address on another website is another customer. Groups are assigned by hand in manual_group_ids; group_ids is the resulting membership. The fields the website adds to its customers are filled in attributes.
path Parameters
website_idId of the parent website.
customer_idId of the parent customer.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get customer › Responses
The resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
emailThe address the customer signs in to the website with. Unique on the website, compared and stored lowercase with surrounding spaces dropped. Required on create and fixed afterwards.
display_nameThe name the customer is greeted by on the website and listed under in the admin. At most 255 characters.
tagsFree-form labels to segment customers by, each 1 to 64 characters; a repeated one is kept once. filter=tags:"vip" lists the customers carrying a tag.
manual_group_idsThe groups this customer was put in by hand — ids of customer_groups of the website whose type is MANUAL. A deleted group drops out of it on its own.
group_idsEvery group the customer is in: the ones in manual_group_ids and the DYNAMIC ones whose rule they match, derived again whenever the customer is written and whenever such a rule changes. This is the membership the website decides by, and it is maintained by the server.
is_activeWhether the customer may sign in. A new customer is active; switching it off keeps the account but stops its sessions from being renewed.
attributesThe customer's values of the fields the website defines in customer_attributes: an object from a field's key to its value — a string for TEXT, TEXTAREA, SELECT and DATE (YYYY-MM-DD), a number for NUMBER, true or false for BOOLEAN, an array of option values for MULTISELECT. Replaced whole when sent: a field it leaves out, or sends as null, an empty string or an empty array, has no value, and a field with is_required must have one — on create too, where an absent object counts as an empty one. A key the website has no field for, or a value its field does not accept, is refused on attributes.<key>. The value of a field switched off with is_active is kept as it is: sent back unchanged it is accepted, changed it is refused. Deleting a field removes its value from every customer. Omitted when empty.
Delete customer
Deletes a customer together with their sessions: whoever was signed in as them is signed out. The address becomes free to register again.
path Parameters
website_idId of the parent website.
customer_idId of the parent customer.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete customer › Responses
Deleted. No body (§7).
Update customer
Changes a customer. email is fixed and refused here; a password in the body replaces the customer's password and signs them out of every session they have on the website.
path Parameters
website_idId of the parent website.
customer_idId of the parent customer.
query Parameters
update_maskComma-separated field paths to merge. A field named here and sent as null is cleared; without the mask a null is dropped (§7, §11).
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Update customer › Request Body
display_nameThe name the customer is greeted by on the website and listed under in the admin. At most 255 characters.
tagsFree-form labels to segment customers by, each 1 to 64 characters; a repeated one is kept once. filter=tags:"vip" lists the customers carrying a tag.
manual_group_idsThe groups this customer was put in by hand — ids of customer_groups of the website whose type is MANUAL. A deleted group drops out of it on its own.
is_activeWhether the customer may sign in. A new customer is active; switching it off keeps the account but stops its sessions from being renewed.
attributesThe customer's values of the fields the website defines in customer_attributes: an object from a field's key to its value — a string for TEXT, TEXTAREA, SELECT and DATE (YYYY-MM-DD), a number for NUMBER, true or false for BOOLEAN, an array of option values for MULTISELECT. Replaced whole when sent: a field it leaves out, or sends as null, an empty string or an empty array, has no value, and a field with is_required must have one — on create too, where an absent object counts as an empty one. A key the website has no field for, or a value its field does not accept, is refused on attributes.<key>. The value of a field switched off with is_active is kept as it is: sent back unchanged it is accepted, changed it is refused. Deleting a field removes its value from every customer. Omitted when empty.
passwordThe customer's password: at least 8 characters with a letter and a digit. Required on create; on update it sets a new one and signs the customer out of every session. Write-only — never returned.
Update customer › Responses
The updated resource.
nameThe resource name (§5) — the identity of this resource, and the path that addresses it: websites/{website}/cms_pages/{cms_page}. It is the handle to store, not a human label.
idThe last segment of name on its own, for a client that needs to build a child URL. Unique inside its parent, never across the platform.
create_timeWhen the resource was created (RFC 3339, UTC).
update_timeWhen the resource last changed (RFC 3339, UTC).
etagVersion of the persisted state. Send it back in If-Match on Update or Delete and the write is rejected with ABORTED if anyone else changed the resource meanwhile (§14).
emailThe address the customer signs in to the website with. Unique on the website, compared and stored lowercase with surrounding spaces dropped. Required on create and fixed afterwards.
display_nameThe name the customer is greeted by on the website and listed under in the admin. At most 255 characters.
tagsFree-form labels to segment customers by, each 1 to 64 characters; a repeated one is kept once. filter=tags:"vip" lists the customers carrying a tag.
manual_group_idsThe groups this customer was put in by hand — ids of customer_groups of the website whose type is MANUAL. A deleted group drops out of it on its own.
group_idsEvery group the customer is in: the ones in manual_group_ids and the DYNAMIC ones whose rule they match, derived again whenever the customer is written and whenever such a rule changes. This is the membership the website decides by, and it is maintained by the server.
is_activeWhether the customer may sign in. A new customer is active; switching it off keeps the account but stops its sessions from being renewed.
attributesThe customer's values of the fields the website defines in customer_attributes: an object from a field's key to its value — a string for TEXT, TEXTAREA, SELECT and DATE (YYYY-MM-DD), a number for NUMBER, true or false for BOOLEAN, an array of option values for MULTISELECT. Replaced whole when sent: a field it leaves out, or sends as null, an empty string or an empty array, has no value, and a field with is_required must have one — on create too, where an absent object counts as an empty one. A key the website has no field for, or a value its field does not accept, is refused on attributes.<key>. The value of a field switched off with is_active is kept as it is: sent back unchanged it is accepted, changed it is refused. Deleting a field removes its value from every customer. Omitted when empty.