Posts, categories, tags and authors, each with a per-view overlay of its own. Categories form a tree reordered with :move, and :set_posts replaces the posts of one category in a single call.
List blog_authors
Someone a post can be credited to: a name, a slug, a portrait and a short biography. The name, the biography and the slug are translatable per view; the portrait and is_active are not.
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, slug.
filterAIP-160 subset (§8). Filterable: audience, create_time, display_name, is_active, slug. A field outside the list is INVALID_ARGUMENT.
List blog_authors › Responses
One page of blog_authors.
This page of blog_authors, 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 blog_author
Someone a post can be credited to: a name, a slug, a portrait and a short biography. The name, the biography and the slug are translatable per view; the portrait and is_active are not.
path Parameters
website_idId of the parent website.
Create blog_author › Request Body
display_nameThe name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the author is shown on the site. It is one of the two fields a view cannot override, so an author is hidden everywhere or nowhere.
bioThe short biography rendered under the byline and on the author's own page.
avatar_media_idThe media resource used as the author's portrait.
audienceWho the author's own page is for, with the values of a post's audience. It hides the author's page, their place in the author list and their byline from other readers; the posts they wrote stay as visible as they are, shown without the byline.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Create blog_author › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the author is shown on the site. It is one of the two fields a view cannot override, so an author is hidden everywhere or nowhere.
bioThe short biography rendered under the byline and on the author's own page.
avatar_media_idThe media resource used as the author's portrait.
audienceWho the author's own page is for, with the values of a post's audience. It hides the author's page, their place in the author list and their byline from other readers; the posts they wrote stay as visible as they are, shown without the byline.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
List views
What one view says instead of the master author: the name in the byline, the biography and the URL segment. The portrait and is_active stay on the author itself.
path Parameters
website_idId of the parent website.
author_idId of the parent author.
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: none — this collection serves its documented order only.
filterAIP-160 subset (§8). Filterable: none. A field outside the list is INVALID_ARGUMENT.
List views › Responses
One page of views.
This page of views, 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 view
What one view says instead of the master author: the name in the byline, the biography and the URL segment. The portrait and is_active stay on the author itself.
path Parameters
website_idId of the parent website.
author_idId of the parent author.
Create view › Request Body
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
bioThis view's biography for the author.
slugThis view's URL segment for the author's page.
Create view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_author_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
bioThis view's biography for the author.
slugThis view's URL segment for the author's page.
Get view
What one view says instead of the master author: the name in the byline, the biography and the URL segment. The portrait and is_active stay on the author itself.
path Parameters
website_idId of the parent website.
author_idId of the parent author.
view_idThe view this overlay speaks for. Fixed by the URL.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_author_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
bioThis view's biography for the author.
slugThis view's URL segment for the author's page.
Delete view
What one view says instead of the master author: the name in the byline, the biography and the URL segment. The portrait and is_active stay on the author itself.
path Parameters
website_idId of the parent website.
author_idId of the parent author.
view_idThe view this overlay speaks for. Fixed by the URL.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete view › Responses
Deleted. No body (§7).
Update view
What one view says instead of the master author: the name in the byline, the biography and the URL segment. The portrait and is_active stay on the author itself.
path Parameters
website_idId of the parent website.
author_idId of the parent author.
view_idThe view this overlay speaks for. Fixed by the URL.
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 view › Request Body
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
bioThis view's biography for the author.
slugThis view's URL segment for the author's page.
Update view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_author_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
bioThis view's biography for the author.
slugThis view's URL segment for the author's page.
Get blog_author
Someone a post can be credited to: a name, a slug, a portrait and a short biography. The name, the biography and the slug are translatable per view; the portrait and is_active are not.
path Parameters
website_idId of the parent website.
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.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get blog_author › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the author is shown on the site. It is one of the two fields a view cannot override, so an author is hidden everywhere or nowhere.
bioThe short biography rendered under the byline and on the author's own page.
avatar_media_idThe media resource used as the author's portrait.
audienceWho the author's own page is for, with the values of a post's audience. It hides the author's page, their place in the author list and their byline from other readers; the posts they wrote stay as visible as they are, shown without the byline.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Delete blog_author
Someone a post can be credited to: a name, a slug, a portrait and a short biography. The name, the biography and the slug are translatable per view; the portrait and is_active are not.
path Parameters
website_idId of the parent website.
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.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete blog_author › Responses
Deleted. No body (§7).
Update blog_author
Someone a post can be credited to: a name, a slug, a portrait and a short biography. The name, the biography and the slug are translatable per view; the portrait and is_active are not.
path Parameters
website_idId of the parent website.
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.
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 blog_author › Request Body
display_nameThe name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the author is shown on the site. It is one of the two fields a view cannot override, so an author is hidden everywhere or nowhere.
bioThe short biography rendered under the byline and on the author's own page.
avatar_media_idThe media resource used as the author's portrait.
audienceWho the author's own page is for, with the values of a post's audience. It hides the author's page, their place in the author list and their byline from other readers; the posts they wrote stay as visible as they are, shown without the byline.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Update blog_author › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the author is shown on the site. It is one of the two fields a view cannot override, so an author is hidden everywhere or nowhere.
bioThe short biography rendered under the byline and on the author's own page.
avatar_media_idThe media resource used as the author's portrait.
audienceWho the author's own page is for, with the values of a post's audience. It hides the author's page, their place in the author list and their byline from other readers; the posts they wrote stay as visible as they are, shown without the byline.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
List blog_categories
A section of the blog. Categories form a tree: parent_id names the one above, path and url_path are maintained by the server, and the shape is changed with :move rather than by writing those fields. :set_posts replaces the posts of one category in a single call.
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: path asc. Sortable: create_time, path, sort_order, url_path.
filterAIP-160 subset (§8). Filterable: audience, create_time, display_name, is_active, parent_id, path, slug, url_path, visible_view_ids. A field outside the list is INVALID_ARGUMENT.
List blog_categories › Responses
One page of blog_categories.
This page of blog_categories, 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 blog_category
A section of the blog. Categories form a tree: parent_id names the one above, path and url_path are maintained by the server, and the shape is changed with :move rather than by writing those fields. :set_posts replaces the posts of one category in a single call.
path Parameters
website_idId of the parent website.
Create blog_category › Request Body
display_nameThe name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the category is shown. Hiding one hides its whole subtree on the site.
parent_idThe category this one hangs under; empty at the root. Settable on create and immutable afterwards — moving a category is :move, which recomputes the whole subtree.
descriptionThe blurb rendered on the category's own page.
visible_view_idsThe views this category appears in. Empty means every view, not none.
audienceWho the category is for, with the values of a post's audience. It narrows the whole subtree: a subcategory, and every post in the category or below it, reaches only readers this category is for too — the strictest audience on the way up wins. A category not everybody may read is left out of the sitemap, the menus of anonymous visitors and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Create blog_category › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
parent_idThe category this one hangs under; empty at the root. Settable on create and immutable afterwards — moving a category is :move, which recomputes the whole subtree.
pathThe category's position in the tree: the ids of its ancestors and its own, in order. Sorting by it is what renders a whole tree in one page.
url_pathThe category's full URL path on the live site — its own slug behind the slugs of its ancestors.
levelHow deep the category sits, counting the root as 0. Server-maintained, like the rest of the tree bookkeeping.
sort_orderThe category's position among its siblings. Set by :move, never by a write.
descriptionThe blurb rendered on the category's own page.
is_activeWhether the category is shown. Hiding one hides its whole subtree on the site.
visible_view_idsThe views this category appears in. Empty means every view, not none.
audienceWho the category is for, with the values of a post's audience. It narrows the whole subtree: a subcategory, and every post in the category or below it, reaches only readers this category is for too — the strictest audience on the way up wins. A category not everybody may read is left out of the sitemap, the menus of anonymous visitors and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
List views
What one view says instead of the master category: its name, its blurb and its URL segment. The shape of the tree is not overridable — a category has the same parent and the same siblings in every view.
path Parameters
website_idId of the parent website.
category_idId of the parent category.
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: none — this collection serves its documented order only.
filterAIP-160 subset (§8). Filterable: none. A field outside the list is INVALID_ARGUMENT.
List views › Responses
One page of views.
This page of views, 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 view
What one view says instead of the master category: its name, its blurb and its URL segment. The shape of the tree is not overridable — a category has the same parent and the same siblings in every view.
path Parameters
website_idId of the parent website.
category_idId of the parent category.
Create view › Request Body
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
descriptionThis view's blurb for the category.
slugThis view's URL segment for the category, so a translated section gets a translated URL.
Create view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_category_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
descriptionThis view's blurb for the category.
slugThis view's URL segment for the category, so a translated section gets a translated URL.
Get view
What one view says instead of the master category: its name, its blurb and its URL segment. The shape of the tree is not overridable — a category has the same parent and the same siblings in every view.
path Parameters
website_idId of the parent website.
category_idId of the parent category.
view_idThe view this overlay speaks for. Fixed by the URL.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_category_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
descriptionThis view's blurb for the category.
slugThis view's URL segment for the category, so a translated section gets a translated URL.
Delete view
What one view says instead of the master category: its name, its blurb and its URL segment. The shape of the tree is not overridable — a category has the same parent and the same siblings in every view.
path Parameters
website_idId of the parent website.
category_idId of the parent category.
view_idThe view this overlay speaks for. Fixed by the URL.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete view › Responses
Deleted. No body (§7).
Update view
What one view says instead of the master category: its name, its blurb and its URL segment. The shape of the tree is not overridable — a category has the same parent and the same siblings in every view.
path Parameters
website_idId of the parent website.
category_idId of the parent category.
view_idThe view this overlay speaks for. Fixed by the URL.
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 view › Request Body
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
descriptionThis view's blurb for the category.
slugThis view's URL segment for the category, so a translated section gets a translated URL.
Update view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_category_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
descriptionThis view's blurb for the category.
slugThis view's URL segment for the category, so a translated section gets a translated URL.
Get blog_category
A section of the blog. Categories form a tree: parent_id names the one above, path and url_path are maintained by the server, and the shape is changed with :move rather than by writing those fields. :set_posts replaces the posts of one category in a single call.
path Parameters
website_idId of the parent website.
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.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get blog_category › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
parent_idThe category this one hangs under; empty at the root. Settable on create and immutable afterwards — moving a category is :move, which recomputes the whole subtree.
pathThe category's position in the tree: the ids of its ancestors and its own, in order. Sorting by it is what renders a whole tree in one page.
url_pathThe category's full URL path on the live site — its own slug behind the slugs of its ancestors.
levelHow deep the category sits, counting the root as 0. Server-maintained, like the rest of the tree bookkeeping.
sort_orderThe category's position among its siblings. Set by :move, never by a write.
descriptionThe blurb rendered on the category's own page.
is_activeWhether the category is shown. Hiding one hides its whole subtree on the site.
visible_view_idsThe views this category appears in. Empty means every view, not none.
audienceWho the category is for, with the values of a post's audience. It narrows the whole subtree: a subcategory, and every post in the category or below it, reaches only readers this category is for too — the strictest audience on the way up wins. A category not everybody may read is left out of the sitemap, the menus of anonymous visitors and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Delete blog_category
A section of the blog. Categories form a tree: parent_id names the one above, path and url_path are maintained by the server, and the shape is changed with :move rather than by writing those fields. :set_posts replaces the posts of one category in a single call.
path Parameters
website_idId of the parent website.
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.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete blog_category › Responses
Deleted. No body (§7).
Update blog_category
A section of the blog. Categories form a tree: parent_id names the one above, path and url_path are maintained by the server, and the shape is changed with :move rather than by writing those fields. :set_posts replaces the posts of one category in a single call.
path Parameters
website_idId of the parent website.
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.
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 blog_category › Request Body
display_nameThe name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
descriptionThe blurb rendered on the category's own page.
is_activeWhether the category is shown. Hiding one hides its whole subtree on the site.
visible_view_idsThe views this category appears in. Empty means every view, not none.
audienceWho the category is for, with the values of a post's audience. It narrows the whole subtree: a subcategory, and every post in the category or below it, reaches only readers this category is for too — the strictest audience on the way up wins. A category not everybody may read is left out of the sitemap, the menus of anonymous visitors and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Update blog_category › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
parent_idThe category this one hangs under; empty at the root. Settable on create and immutable afterwards — moving a category is :move, which recomputes the whole subtree.
pathThe category's position in the tree: the ids of its ancestors and its own, in order. Sorting by it is what renders a whole tree in one page.
url_pathThe category's full URL path on the live site — its own slug behind the slugs of its ancestors.
levelHow deep the category sits, counting the root as 0. Server-maintained, like the rest of the tree bookkeeping.
sort_orderThe category's position among its siblings. Set by :move, never by a write.
descriptionThe blurb rendered on the category's own page.
is_activeWhether the category is shown. Hiding one hides its whole subtree on the site.
visible_view_idsThe views this category appears in. Empty means every view, not none.
audienceWho the category is for, with the values of a post's audience. It narrows the whole subtree: a subcategory, and every post in the category or below it, reaches only readers this category is for too — the strictest audience on the way up wins. A category not everybody may read is left out of the sitemap, the menus of anonymous visitors and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Move (blog_categories)
Moves a category inside the tree. Send {"parent_id": ..., "after_id": ...}: parent_id absent or null means the root, after_id absent or null means first among its new siblings.
This is the only way to re-parent or reorder a category — parent_id is immutable on Update — because the move is what rewrites path, url_path, level and sort_order for the whole subtree. It answers with the moved category, so those recomputed fields need no second read.
path Parameters
website_idId of the parent website.
idId of the blog_categories resource this URL addresses.
Move (blog_categories) › Request Body optional
Move (blog_categories) › Responses
The affected resource, or the method’s own response object (§10).
Set posts (blog_categories)
Replaces the posts of one category in a single call: send {"post_ids": [...]} and the category ends up with exactly those, in that order. It is a write on the category, not a sub-collection — which is why it is a custom method and not a POST to a posts collection that does not exist.
path Parameters
website_idId of the parent website.
idId of the blog_categories resource this URL addresses.
Set posts (blog_categories) › Request Body optional
Set posts (blog_categories) › Responses
The affected resource, or the method’s own response object (§10).
List blog_posts
One article of the website's blog: headline, slug, teaser, rich-text body, byline and dates, plus the categories and tags it belongs to. What a view says instead lives in its views overlay, and a post is live when is_active is true and publish_time has passed.
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, is_active, publish_time, slug, title.
filterAIP-160 subset (§8). Filterable: audience, author_id, category_ids, create_time, is_active, publish_time, slug, tag_ids, title, visible_view_ids. A field outside the list is INVALID_ARGUMENT.
List blog_posts › Responses
One page of blog_posts.
This page of blog_posts, 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 blog_post
One article of the website's blog: headline, slug, teaser, rich-text body, byline and dates, plus the categories and tags it belongs to. What a view says instead lives in its views overlay, and a post is live when is_active is true and publish_time has passed.
path Parameters
website_idId of the parent website.
Create blog_post › Request Body
titleThe post's headline, and the label the admin lists it under.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the post is published. Together with publish_time it decides what the live blog shows: an inactive post is never rendered, however old its publish time.
author_idThe blog_authors resource shown as the byline.
excerptThe short teaser used in listings and cards. Plain text, not the first paragraph of content.
contentThe post body as rich-text HTML, with entity:// links resolved per view when the page is rendered.
featured_image_media_idThe media resource used as the post's lead image, in listings and as the social-card picture.
publish_timeWhen the post is dated on the site. A time in the future keeps it out of the live blog until then, which is how a post is scheduled.
meta_titleThe <title> of the rendered post. Falls back to title when empty.
meta_descriptionThe meta description of the rendered post.
meta_keywordsThe meta keywords of the rendered post.
visible_view_idsThe views this post appears in. Empty means every view, not none.
audienceWho the post is for. PUBLIC — everybody, the default. AUTHENTICATED — the website's signed-in customers. GROUPS — the customers in at least one of customer_group_ids. A reader sees the post only if it is for them and so is every category it is in, with each category's ancestors: the strictest wins. A post not everybody may read is left out of the sitemap, the feeds, the site search, the public API and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
category_idsThe categories this post belongs to. Filled in on a read of one post and on a write; a List leaves it out, because membership is a join and a page of posts would be a page of joins.
tag_idsThe tags on this post, with the same read rule as category_ids.
Create blog_post › 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).
titleThe post's headline, and the label the admin lists it under.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the post is published. Together with publish_time it decides what the live blog shows: an inactive post is never rendered, however old its publish time.
author_idThe blog_authors resource shown as the byline.
excerptThe short teaser used in listings and cards. Plain text, not the first paragraph of content.
contentThe post body as rich-text HTML, with entity:// links resolved per view when the page is rendered.
featured_image_media_idThe media resource used as the post's lead image, in listings and as the social-card picture.
publish_timeWhen the post is dated on the site. A time in the future keeps it out of the live blog until then, which is how a post is scheduled.
meta_titleThe <title> of the rendered post. Falls back to title when empty.
meta_descriptionThe meta description of the rendered post.
meta_keywordsThe meta keywords of the rendered post.
visible_view_idsThe views this post appears in. Empty means every view, not none.
audienceWho the post is for. PUBLIC — everybody, the default. AUTHENTICATED — the website's signed-in customers. GROUPS — the customers in at least one of customer_group_ids. A reader sees the post only if it is for them and so is every category it is in, with each category's ancestors: the strictest wins. A post not everybody may read is left out of the sitemap, the feeds, the site search, the public API and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
category_idsThe categories this post belongs to. Filled in on a read of one post and on a write; a List leaves it out, because membership is a join and a page of posts would be a page of joins.
tag_idsThe tags on this post, with the same read rule as category_ids.
Get blog_post
One article of the website's blog: headline, slug, teaser, rich-text body, byline and dates, plus the categories and tags it belongs to. What a view says instead lives in its views overlay, and a post is live when is_active is true and publish_time has passed.
path Parameters
website_idId of the parent website.
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.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get blog_post › 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).
titleThe post's headline, and the label the admin lists it under.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the post is published. Together with publish_time it decides what the live blog shows: an inactive post is never rendered, however old its publish time.
author_idThe blog_authors resource shown as the byline.
excerptThe short teaser used in listings and cards. Plain text, not the first paragraph of content.
contentThe post body as rich-text HTML, with entity:// links resolved per view when the page is rendered.
featured_image_media_idThe media resource used as the post's lead image, in listings and as the social-card picture.
publish_timeWhen the post is dated on the site. A time in the future keeps it out of the live blog until then, which is how a post is scheduled.
meta_titleThe <title> of the rendered post. Falls back to title when empty.
meta_descriptionThe meta description of the rendered post.
meta_keywordsThe meta keywords of the rendered post.
visible_view_idsThe views this post appears in. Empty means every view, not none.
audienceWho the post is for. PUBLIC — everybody, the default. AUTHENTICATED — the website's signed-in customers. GROUPS — the customers in at least one of customer_group_ids. A reader sees the post only if it is for them and so is every category it is in, with each category's ancestors: the strictest wins. A post not everybody may read is left out of the sitemap, the feeds, the site search, the public API and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
category_idsThe categories this post belongs to. Filled in on a read of one post and on a write; a List leaves it out, because membership is a join and a page of posts would be a page of joins.
tag_idsThe tags on this post, with the same read rule as category_ids.
Delete blog_post
One article of the website's blog: headline, slug, teaser, rich-text body, byline and dates, plus the categories and tags it belongs to. What a view says instead lives in its views overlay, and a post is live when is_active is true and publish_time has passed.
path Parameters
website_idId of the parent website.
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.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete blog_post › Responses
Deleted. No body (§7).
Update blog_post
One article of the website's blog: headline, slug, teaser, rich-text body, byline and dates, plus the categories and tags it belongs to. What a view says instead lives in its views overlay, and a post is live when is_active is true and publish_time has passed.
path Parameters
website_idId of the parent website.
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.
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 blog_post › Request Body
titleThe post's headline, and the label the admin lists it under.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the post is published. Together with publish_time it decides what the live blog shows: an inactive post is never rendered, however old its publish time.
author_idThe blog_authors resource shown as the byline.
excerptThe short teaser used in listings and cards. Plain text, not the first paragraph of content.
contentThe post body as rich-text HTML, with entity:// links resolved per view when the page is rendered.
featured_image_media_idThe media resource used as the post's lead image, in listings and as the social-card picture.
publish_timeWhen the post is dated on the site. A time in the future keeps it out of the live blog until then, which is how a post is scheduled.
meta_titleThe <title> of the rendered post. Falls back to title when empty.
meta_descriptionThe meta description of the rendered post.
meta_keywordsThe meta keywords of the rendered post.
visible_view_idsThe views this post appears in. Empty means every view, not none.
audienceWho the post is for. PUBLIC — everybody, the default. AUTHENTICATED — the website's signed-in customers. GROUPS — the customers in at least one of customer_group_ids. A reader sees the post only if it is for them and so is every category it is in, with each category's ancestors: the strictest wins. A post not everybody may read is left out of the sitemap, the feeds, the site search, the public API and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
category_idsThe categories this post belongs to. Filled in on a read of one post and on a write; a List leaves it out, because membership is a join and a page of posts would be a page of joins.
tag_idsThe tags on this post, with the same read rule as category_ids.
Update blog_post › 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).
titleThe post's headline, and the label the admin lists it under.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
is_activeWhether the post is published. Together with publish_time it decides what the live blog shows: an inactive post is never rendered, however old its publish time.
author_idThe blog_authors resource shown as the byline.
excerptThe short teaser used in listings and cards. Plain text, not the first paragraph of content.
contentThe post body as rich-text HTML, with entity:// links resolved per view when the page is rendered.
featured_image_media_idThe media resource used as the post's lead image, in listings and as the social-card picture.
publish_timeWhen the post is dated on the site. A time in the future keeps it out of the live blog until then, which is how a post is scheduled.
meta_titleThe <title> of the rendered post. Falls back to title when empty.
meta_descriptionThe meta description of the rendered post.
meta_keywordsThe meta keywords of the rendered post.
visible_view_idsThe views this post appears in. Empty means every view, not none.
audienceWho the post is for. PUBLIC — everybody, the default. AUTHENTICATED — the website's signed-in customers. GROUPS — the customers in at least one of customer_group_ids. A reader sees the post only if it is for them and so is every category it is in, with each category's ancestors: the strictest wins. A post not everybody may read is left out of the sitemap, the feeds, the site search, the public API and every cached copy of the blog.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
category_idsThe categories this post belongs to. Filled in on a read of one post and on a write; a List leaves it out, because membership is a join and a page of posts would be a page of joins.
tag_idsThe tags on this post, with the same read rule as category_ids.
List views
What one view says instead of the master post — headline, slug, teaser, body, SEO metadata and lead image. Every field falls back to the post, and overridden decides which of them this view claims.
path Parameters
website_idId of the parent website.
post_idId of the parent post.
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: none — this collection serves its documented order only.
filterAIP-160 subset (§8). Filterable: none. A field outside the list is INVALID_ARGUMENT.
List views › Responses
One page of views.
This page of views, 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 view
What one view says instead of the master post — headline, slug, teaser, body, SEO metadata and lead image. Every field falls back to the post, and overridden decides which of them this view claims.
path Parameters
website_idId of the parent website.
post_idId of the parent post.
Create view › Request Body
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
titleThis view's headline for the post.
slugThis view's URL segment for the post.
excerptThis view's teaser for the post.
contentThis view's rich-text body for the post.
meta_titleThis view's <title> for the post.
meta_descriptionThis view's meta description for the post.
meta_keywordsThis view's meta keywords for the post.
featured_image_media_idThis view's lead image for the post, for a picture carrying text that has to be translated too.
Create view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_post_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
titleThis view's headline for the post.
slugThis view's URL segment for the post.
excerptThis view's teaser for the post.
contentThis view's rich-text body for the post.
meta_titleThis view's <title> for the post.
meta_descriptionThis view's meta description for the post.
meta_keywordsThis view's meta keywords for the post.
featured_image_media_idThis view's lead image for the post, for a picture carrying text that has to be translated too.
Get view
What one view says instead of the master post — headline, slug, teaser, body, SEO metadata and lead image. Every field falls back to the post, and overridden decides which of them this view claims.
path Parameters
website_idId of the parent website.
post_idId of the parent post.
view_idThe view this overlay speaks for. Fixed by the URL.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_post_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
titleThis view's headline for the post.
slugThis view's URL segment for the post.
excerptThis view's teaser for the post.
contentThis view's rich-text body for the post.
meta_titleThis view's <title> for the post.
meta_descriptionThis view's meta description for the post.
meta_keywordsThis view's meta keywords for the post.
featured_image_media_idThis view's lead image for the post, for a picture carrying text that has to be translated too.
Delete view
What one view says instead of the master post — headline, slug, teaser, body, SEO metadata and lead image. Every field falls back to the post, and overridden decides which of them this view claims.
path Parameters
website_idId of the parent website.
post_idId of the parent post.
view_idThe view this overlay speaks for. Fixed by the URL.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete view › Responses
Deleted. No body (§7).
Update view
What one view says instead of the master post — headline, slug, teaser, body, SEO metadata and lead image. Every field falls back to the post, and overridden decides which of them this view claims.
path Parameters
website_idId of the parent website.
post_idId of the parent post.
view_idThe view this overlay speaks for. Fixed by the URL.
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 view › Request Body
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
titleThis view's headline for the post.
slugThis view's URL segment for the post.
excerptThis view's teaser for the post.
contentThis view's rich-text body for the post.
meta_titleThis view's <title> for the post.
meta_descriptionThis view's meta description for the post.
meta_keywordsThis view's meta keywords for the post.
featured_image_media_idThis view's lead image for the post, for a picture carrying text that has to be translated too.
Update view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_post_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
titleThis view's headline for the post.
slugThis view's URL segment for the post.
excerptThis view's teaser for the post.
contentThis view's rich-text body for the post.
meta_titleThis view's <title> for the post.
meta_descriptionThis view's meta description for the post.
meta_keywordsThis view's meta keywords for the post.
featured_image_media_idThis view's lead image for the post, for a picture carrying text that has to be translated too.
List blog_tags
A flat label a post can carry — the cross-cutting counterpart of a category, which is a place in a tree. A tag is two fields and its per-view overlay; posts are attached from the post's own tag_ids.
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: display_name asc. Sortable: create_time, display_name, slug.
filterAIP-160 subset (§8). Filterable: audience, create_time, display_name, slug. A field outside the list is INVALID_ARGUMENT.
List blog_tags › Responses
One page of blog_tags.
This page of blog_tags, 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 blog_tag
A flat label a post can carry — the cross-cutting counterpart of a category, which is a place in a tree. A tag is two fields and its per-view overlay; posts are attached from the post's own tag_ids.
path Parameters
website_idId of the parent website.
Create blog_tag › Request Body
display_nameThe name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
audienceWho the tag's own page is for, with the values of a post's audience. It hides the tag's archive and the tag itself on shared surfaces — the tag list, a post's tag chips — from other readers; it never hides a post that carries the tag.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Create blog_tag › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
audienceWho the tag's own page is for, with the values of a post's audience. It hides the tag's archive and the tag itself on shared surfaces — the tag list, a post's tag chips — from other readers; it never hides a post that carries the tag.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Get blog_tag
A flat label a post can carry — the cross-cutting counterpart of a category, which is a place in a tree. A tag is two fields and its per-view overlay; posts are attached from the post's own tag_ids.
path Parameters
website_idId of the parent website.
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.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get blog_tag › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
audienceWho the tag's own page is for, with the values of a post's audience. It hides the tag's archive and the tag itself on shared surfaces — the tag list, a post's tag chips — from other readers; it never hides a post that carries the tag.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Delete blog_tag
A flat label a post can carry — the cross-cutting counterpart of a category, which is a place in a tree. A tag is two fields and its per-view overlay; posts are attached from the post's own tag_ids.
path Parameters
website_idId of the parent website.
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.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete blog_tag › Responses
Deleted. No body (§7).
Update blog_tag
A flat label a post can carry — the cross-cutting counterpart of a category, which is a place in a tree. A tag is two fields and its per-view overlay; posts are attached from the post's own tag_ids.
path Parameters
website_idId of the parent website.
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.
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 blog_tag › Request Body
display_nameThe name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
audienceWho the tag's own page is for, with the values of a post's audience. It hides the tag's archive and the tag itself on shared surfaces — the tag list, a post's tag chips — from other readers; it never hides a post that carries the tag.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
Update blog_tag › 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 name this is shown under, on the site and in the admin.
slugThe URL segment this is addressed by on the live site. Unique among its siblings, and a view may override it so a translated page gets a translated URL.
audienceWho the tag's own page is for, with the values of a post's audience. It hides the tag's archive and the tag itself on shared surfaces — the tag list, a post's tag chips — from other readers; it never hides a post that carries the tag.
customer_group_idsThe customer_groups of the website a GROUPS audience is for — at least one, at most 100. Empty for any other audience: setting the audience to anything else empties it, and a deleted group drops out of it on its own.
List views
What one view says instead of the master tag: its name and its URL segment. Which posts carry the tag is not a per-view decision.
path Parameters
website_idId of the parent website.
tag_idId of the parent tag.
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: none — this collection serves its documented order only.
filterAIP-160 subset (§8). Filterable: none. A field outside the list is INVALID_ARGUMENT.
List views › Responses
One page of views.
This page of views, 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 view
What one view says instead of the master tag: its name and its URL segment. Which posts carry the tag is not a per-view decision.
path Parameters
website_idId of the parent website.
tag_idId of the parent tag.
Create view › Request Body
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
slugThis view's URL segment for the tag.
Create view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_tag_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
slugThis view's URL segment for the tag.
Get view
What one view says instead of the master tag: its name and its URL segment. Which posts carry the tag is not a per-view decision.
path Parameters
website_idId of the parent website.
tag_idId of the parent tag.
view_idThe view this overlay speaks for. Fixed by the URL.
Headers
If-None-MatchA matching etag answers 304 with no body (§16).
Get view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_tag_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
slugThis view's URL segment for the tag.
Delete view
What one view says instead of the master tag: its name and its URL segment. Which posts carry the tag is not a per-view decision.
path Parameters
website_idId of the parent website.
tag_idId of the parent tag.
view_idThe view this overlay speaks for. Fixed by the URL.
Headers
If-MatchThe etag the client last read. A mismatch is ABORTED (409) with the current resource in the error details (§14).
Delete view › Responses
Deleted. No body (§7).
Update view
What one view says instead of the master tag: its name and its URL segment. Which posts carry the tag is not a per-view decision.
path Parameters
website_idId of the parent website.
tag_idId of the parent tag.
view_idThe view this overlay speaks for. Fixed by the URL.
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 view › Request Body
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
slugThis view's URL segment for the tag.
Update view › 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).
uidThe overlay's own storage id, kept for clients that stored it before the overlay had a resource name.
blog_tag_idThe resource this overlay belongs to. Fixed by the URL — an overlay cannot change master.
view_idThe view this overlay speaks for. Fixed by the URL.
overriddenThe names of the fields this view actually overrides. A field counts as overridden only while it is listed here — an empty value with the field absent from this list means "use the master", not "show nothing".
display_nameThis view's name for the resource.
slugThis view's URL segment for the tag.