Introduction
Welcome to the LeadPages Foundry API documentation.
This API adheres to the LeadPages HTTP API Standards document.
Endpoints
/content/v1
Ping
/content/v1/ping
A no-op endpoint that can be used to check what the currently-deployed version of the API is.
http GET http://dockerhost:8011/integration/v1/ping
{
"_meta": {
"_version": "1.19.12"
},
"_status": {
"code": 200
}
}
Request
GET /content/v1/ping
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
_meta._version |
StringThe current internal version number of the API. |
_meta |
Dictionary |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Leadbars
/content/v1/leadbars
Leadbars are modal optin forms. On their own, they can be embedded on any external site to provide an optin mechanism for that site. They're also intended to be used as an optin collection method on Leadpages.
A LeadbarV3 shares most of its structure with LeadboxV3, and this
API can compile and publish them directly thanks to the Forge HTML
compiler.
Request
GET /content/v1/leadbars
Enumerate the authenticated user's standalone
Leadbars, i.e. Leadbars that do not have a value for their
leadpage property.
Additionally, Leadbars with a value for their splitTest
properties are also omitted from this endpoint's response.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
conversions |
Integer? |
updated |
DateTime? |
order_by |
Or?[String, List] |
last_published |
DateTime? |
created |
DateTime? |
views |
Integer? |
analytics_id |
Or?[Regexp, List] |
kind |
Or?[Regexp, List] |
label |
List?[Integer] |
cursor |
String?A string representing where a previous request "left off" |
visitors |
Integer? |
conversion_rate |
Number? |
publication_domain |
String? |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
visible |
Boolean? |
current_edition |
String? |
id |
Or?[Regexp, List] |
name |
String? |
Response
| Body | |
|---|---|
_items |
List[Leadbar] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Request
POST /content/v1/leadbars
Create a new Leadbar.
| Body | |
|---|---|
content |
Or[CreateLeadbarV3] |
kind |
Enum('LeadbarV3') |
Response
| Body | |
|---|---|
content |
Or[LeadbarV3] |
kind |
Enum('LeadbarV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
400 Bad Request |
unknown message |
504 Gateway Timeout |
unknown message |
Leadbar
/content/v1/leadbars/{uuid}
This endpoint provides RESTful interaction with a
specific Leadbar. Unlike the parent endpoint, this one exposes all
available Leadbars, regardless of their leadpage and
splitTest values.
Request
GET /content/v1/leadbars/{uuid}
Get a specific Leadbar by its ID.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[LeadbarV3] |
kind |
Enum('LeadbarV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PATCH /content/v1/leadbars/{uuid}
The PATCH method is used only to change the
Leadbar's currentEdition. You may specify the UUID of another
previously published edition to revert to (i.e. republish) that
edition. Setting the currentEdition to null will un-publish
the currently published edition, if any, while leaving the
Leadbar itself and all of its editions intact.
| Body | |
|---|---|
currentEdition |
String?The UUID of a previously published edition to re-publish. If no UUID is specified, then the currently published edition is un-published. |
recompile |
Boolean?If true, this will cause the ediiton to be recompiled. This can only be used with Lead{box,page}V3 entities. |
Response
| Body | |
|---|---|
content |
Or[LeadbarV3] |
kind |
Enum('LeadbarV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
cannot revert to edition '{}' because it was never published successfully |
400 Bad Request |
content.publicationDomain: |
400 Bad Request |
edition '{}' does not belong to leadbar '{}' |
504 Gateway Timeout |
unknown message |
Request
PUT /content/v1/leadbars/{uuid}
Update the given Leadbar. If a Leadbar was
previously associated with a Leadpage, you can break that
association by using this method to set its leadpage property
to null. Likewise, a Leadbar that is not currently associated
with a Leadpage can be associated by setting its leadpage
property to the UUID of the desired page.
| Body | |
|---|---|
content |
Or[UpdateLeadbarV3] |
kind |
Enum('LeadbarV3') |
Response
| Body | |
|---|---|
content |
Or[LeadbarV3] |
kind |
Enum('LeadbarV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
404 Not Found |
leadpage '{}' not found |
404 Not Found |
content {!r} not found |
504 Gateway Timeout |
unknown message |
Request
DELETE /content/v1/leadbars/{uuid}
Delete the specified Leadbar, along with all of its editions. Predictably, this also un-publishes the Leadbar if it is currently published.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Leadboxes
/content/v1/leadbars/{uuid}/leadboxes
This endpoint is used to create or enumerate Leadboxes that belong to the given Leadbar.
Request
GET /content/v1/leadbars/{uuid}/leadboxes
Enumerate Leadboxes that belong to the given Leadbar.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Leadbox] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/leadbars/{uuid}/leadboxes
Create a new Leadbox associated with the given Leadbar.
| Body | |
|---|---|
content |
Or[CreateLeadboxV2, CreateLeadboxV3, CreateLeadboxV1] |
kind |
Enum('LeadboxV2', 'LeadboxV3', 'LeadboxV1') |
Response
| Body | |
|---|---|
content |
Or[LeadboxSplitTestV2, LeadboxV2, LeadboxV3, LeadboxSplitTestV1, LeadboxV1] |
kind |
Enum('LeadboxSplitTestV2', 'LeadboxV2', 'LeadboxV3', 'LeadboxSplitTestV1', 'LeadboxV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
504 Gateway Timeout |
unknown message |
Editions
/content/v1/leadbars/{uuid}/editions
This endpoint is used to publish the given Leadbar.
Request
GET /content/v1/leadbars/{uuid}/editions
Enumerate all of the given Leadbar's editions. This can be treated as a publication history for the Leadbar.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Edition] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/leadbars/{uuid}/editions
Publish a new edition of the given Leadbar.
| Body | |
|---|---|
sectionTemplates |
List?[String]The section templates used by the edition, if any. |
source |
Or?[CloudStorageObject, Dictionary]Either the source JSON for the edition (i.e. a 'Page JSON' structure or a legacy Leadbox 'settings' object) or a pointer to the source JSON in Google Cloud Storage. |
builderVersion |
String?The builder version that generated the source. |
html |
Or?[CloudStorageObject, String]Either the HTML compiled from the source JSON or a pointer to the compiled HTML in Google Cloud Storage. This value is optional for V3 resources, and if specified, the HTML will be published directly, bypassing the Forge compiler. This value is required for V2 resources. |
previewOnly |
Boolean?If this is provided and true, then the new Edition will only publish its preview to GCS, leaving its associated content unchanged. |
Response
| Body | |
|---|---|
status |
Enum('pending', 'failure', 'success')The status of the edition's publication. This is not an indication of whether or not the edition is currently published, but the status of its initial publication. |
targetUrl |
URI?The URL on GCP that we create the target from. |
_meta |
MetaMeta information about the resource. |
publicationUrl |
URI?The public URL to which the edition was published. |
previewUrl |
URI?The public URL to which the preview was published. Only available for Editions created with previewOnly set to true. |
content |
StringThe UUID of the content resource to which the edition belongs. |
routes |
List?[SiteRoute] |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
DELETE /content/v1/leadbars/{uuid}/editions
Delete all of the specified Leadbar's editions. This method exists purely for convenience during development and will be removed before general release.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Leadboxes
/content/v1/leadboxes
Leadboxes are modal optin forms. On their own, they can be embedded on any external site to provide an optin mechanism for that site. They're also intended to be used as the primary optin collection method on Leadpages.
A LeadboxV3 shares most of its structure with LeadpageV3, and this
API can compile and publish them directly thanks to the Forge HTML
compiler.
LeadboxV2 resources must be compiled externally, but can be published
and served through the Foundry API.
Request
GET /content/v1/leadboxes
Enumerate the authenticated user's standalone
Leadboxes, i.e. Leadboxes that do not have a value for their
leadpage property.
Additionally, Leadboxes with a value for their splitTest
properties are also omitted from this endpoint's response.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
conversions |
Integer? |
updated |
DateTime? |
order_by |
Or?[String, List] |
last_published |
DateTime? |
created |
DateTime? |
views |
Integer? |
analytics_id |
Or?[Regexp, List] |
kind |
Or?[Regexp, List] |
label |
List?[Integer] |
cursor |
String?A string representing where a previous request "left off" |
visitors |
Integer? |
conversion_rate |
Number? |
publication_domain |
String? |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
visible |
Boolean? |
current_edition |
String? |
id |
Or?[Regexp, List] |
name |
String? |
Response
| Body | |
|---|---|
_items |
List[Leadbox] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Request
POST /content/v1/leadboxes
Create a new Leadbox. While it is possible to
create a LeadboxV2 here, LeadboxV2 requires some extra
properties, and their UUIDs are constructed from some of those,
making PUT the more semantically correct method of creation.
Generally, the primary use-case for this endpoint is creating new
LeadboxV3 resources.
| Body | |
|---|---|
content |
Or[CreateLeadboxV2, CreateLeadboxV3, CreateLeadboxV1] |
kind |
Enum('LeadboxV2', 'LeadboxV3', 'LeadboxV1') |
Response
| Body | |
|---|---|
content |
Or[LeadboxSplitTestV2, LeadboxV2, LeadboxV3, LeadboxSplitTestV1, LeadboxV1] |
kind |
Enum('LeadboxSplitTestV2', 'LeadboxV2', 'LeadboxV3', 'LeadboxSplitTestV1', 'LeadboxV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
400 Bad Request |
unknown message |
504 Gateway Timeout |
unknown message |
Leadbox
/content/v1/leadboxes/{uuid}
This endpoint provides RESTful interaction with a
specific Leadbox. Unlike the parent endpoint, this one exposes all
available Leadboxes, regardless of their leadpage and
splitTest values.
Request
GET /content/v1/leadboxes/{uuid}
Get a specific Leadbox by its ID.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[LeadboxSplitTestV2, LeadboxV2, LeadboxV3, LeadboxSplitTestV1, LeadboxV1] |
kind |
Enum('LeadboxSplitTestV2', 'LeadboxV2', 'LeadboxV3', 'LeadboxSplitTestV1', 'LeadboxV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PATCH /content/v1/leadboxes/{uuid}
The PATCH method is used only to change the
Leadbox's currentEdition. You may specify the UUID of another
previously published edition to revert to (i.e. republish) that
edition. Setting the currentEdition to null will un-publish
the currently published edition, if any, while leaving the
Leadbox itself and all of its editions intact.
| Body | |
|---|---|
currentEdition |
String?The UUID of a previously published edition to re-publish. If no UUID is specified, then the currently published edition is un-published. |
recompile |
Boolean?If true, this will cause the ediiton to be recompiled. This can only be used with Lead{box,page}V3 entities. |
Response
| Body | |
|---|---|
content |
Or[LeadboxSplitTestV2, LeadboxV2, LeadboxV3, LeadboxSplitTestV1, LeadboxV1] |
kind |
Enum('LeadboxSplitTestV2', 'LeadboxV2', 'LeadboxV3', 'LeadboxSplitTestV1', 'LeadboxV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
edition '{}' does not belong to leadbox '{}' |
400 Bad Request |
content.publicationDomain: |
400 Bad Request |
cannot revert to edition '{}' because it was never published successfully |
504 Gateway Timeout |
unknown message |
Request
PUT /content/v1/leadboxes/{uuid}
Update the given Leadbox. If a Leadbox was
previously associated with a Leadpage, you can break that
association by using this method to set its leadpage property
to null. Likewise, a Leadbox that is not currently associated
with a Leadpage can be associated by setting its leadpage
property to the UUID of the desired page.
The specified UUID for LeadboxV2 resources is ignored by this
endpoint, and instead constructed from the Leadbox's formId
and publicMetaId.
| Body | |
|---|---|
content |
Or[UpdateLeadboxV2, UpdateLeadboxV3, UpdateLeadboxV1] |
kind |
Enum('LeadboxV2', 'LeadboxV3', 'LeadboxV1') |
Response
| Body | |
|---|---|
content |
Or[LeadboxSplitTestV2, LeadboxV2, LeadboxV3, LeadboxSplitTestV1, LeadboxV1] |
kind |
Enum('LeadboxSplitTestV2', 'LeadboxV2', 'LeadboxV3', 'LeadboxSplitTestV1', 'LeadboxV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
404 Not Found |
leadpage '{}' not found |
404 Not Found |
content {!r} not found |
504 Gateway Timeout |
unknown message |
Request
DELETE /content/v1/leadboxes/{uuid}
Delete the specified Leadbox, along with all of its editions. Predictably, this also un-publishes the Leadbox if it is currently published.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Editions
/content/v1/leadboxes/{uuid}/editions
This endpoint is used to publish the given Leadbox.
Request
GET /content/v1/leadboxes/{uuid}/editions
Enumerate all of the given Leadbox's editions. This can be treated as a publication history for the Leadbox.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Edition] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/leadboxes/{uuid}/editions
Publish a new edition of the given Leadbox.
| Body | |
|---|---|
sectionTemplates |
List?[String]The section templates used by the edition, if any. |
source |
Or?[CloudStorageObject, Dictionary]Either the source JSON for the edition (i.e. a 'Page JSON' structure or a legacy Leadbox 'settings' object) or a pointer to the source JSON in Google Cloud Storage. |
builderVersion |
String?The builder version that generated the source. |
html |
Or?[CloudStorageObject, String]Either the HTML compiled from the source JSON or a pointer to the compiled HTML in Google Cloud Storage. This value is optional for V3 resources, and if specified, the HTML will be published directly, bypassing the Forge compiler. This value is required for V2 resources. |
previewOnly |
Boolean?If this is provided and true, then the new Edition will only publish its preview to GCS, leaving its associated content unchanged. |
Response
| Body | |
|---|---|
status |
Enum('pending', 'failure', 'success')The status of the edition's publication. This is not an indication of whether or not the edition is currently published, but the status of its initial publication. |
targetUrl |
URI?The URL on GCP that we create the target from. |
_meta |
MetaMeta information about the resource. |
publicationUrl |
URI?The public URL to which the edition was published. |
previewUrl |
URI?The public URL to which the preview was published. Only available for Editions created with previewOnly set to true. |
content |
StringThe UUID of the content resource to which the edition belongs. |
routes |
List?[SiteRoute] |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
DELETE /content/v1/leadboxes/{uuid}/editions
Delete all of the specified Leadbox's editions. This method exists purely for convenience during development and will be removed before general release.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Leadpages
/content/v1/leadpages
Leadpages are, well... pages for collecting leads. Like
Leadboxes, there are both V2 and V3 Leadpages, with server-side
rendering of pages via the Forge service only being supported for
LeadpageV3.
Like their Leadbox counterparts, LeadpageV2 resources must be compiled
externally, but can be published and served through the Foundry API.
Request
GET /content/v1/leadpages
Enumerate the authenticated user's Leadpages. Like
Leadboxes, Leadpages with a value set for their splitTest
properties are omitted from this endpoint's response.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
conversions |
Integer? |
updated |
DateTime? |
order_by |
Or?[String, List] |
last_published |
DateTime? |
created |
DateTime? |
views |
Integer? |
analytics_id |
Or?[Regexp, List] |
kind |
Or?[Regexp, List] |
label |
List?[Integer] |
cursor |
String?A string representing where a previous request "left off" |
visitors |
Integer? |
conversion_rate |
Number? |
publication_domain |
String? |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
visible |
Boolean? |
current_edition |
String? |
id |
Or?[Regexp, List] |
name |
String? |
Response
| Body | |
|---|---|
_items |
List[Leadpage] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Request
POST /content/v1/leadpages
Create a new Leadpage. While it is possible to
create a LeadpageV2 here, LeadpageV2 resources will generally
be migrated or mirrored from their legacy counterpart. In that case,
the page already exists elsewhere with a distinct ID making PUT
the more semantically correct method of creation.
Generally, the primary use-case for this endpoint is creating new
LeadpageV3 resources.
| Body | |
|---|---|
content |
Or[CreateLeadpageV3, CreateLeadpageV2, CreateLeadpageV1] |
kind |
Enum('LeadpageV3', 'LeadpageV2', 'LeadpageV1') |
| Query string | |
|---|---|
validate_slug |
Enum('on', 'false', 'no', 'True', 'off', '1', '0', 'False', 'yes', 'true')Whether or not slug uniqueness should be validated. |
Response
| Body | |
|---|---|
content |
Or[LeadpageV3, LeadpageV2, LeadpageV1, LeadpageSplitTestV2, LeadpageSplitTestV1] |
kind |
Enum('LeadpageV3', 'LeadpageV2', 'LeadpageV1', 'LeadpageSplitTestV2', 'LeadpageSplitTestV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
400 Bad Request |
unknown message |
409 Conflict |
content.slug: taken by another page |
504 Gateway Timeout |
unknown message |
Leadpage
/content/v1/leadpages/{uuid}
This endpoint provides RESTful interaction with a
specific Leadpage. Unlike the parent endpoint, this one exposes all
available Leadpages, regardless of their splitTest values.
Request
GET /content/v1/leadpages/{uuid}
Get a specific Leadpage by its ID.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[LeadpageV3, LeadpageV2, LeadpageV1, LeadpageSplitTestV2, LeadpageSplitTestV1] |
kind |
Enum('LeadpageV3', 'LeadpageV2', 'LeadpageV1', 'LeadpageSplitTestV2', 'LeadpageSplitTestV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PATCH /content/v1/leadpages/{uuid}
The PATCH method is used only to change the
Leadpage's currentEdition. You may specify the UUID of another
previously published edition to revert to (i.e. republish) that
edition. Setting the currentEdition to null will un-publish
the currently published edition, if any, while leaving the
Leadpage itself and all of its editions intact.
Note: This does not currently recursively publish the Leadpage's Leadboxes. You'll have to publish those separately.
| Body | |
|---|---|
currentEdition |
String?The UUID of a previously published edition to re-publish. If no UUID is specified, then the currently published edition is un-published. |
recompile |
Boolean?If true, this will cause the ediiton to be recompiled. This can only be used with Lead{box,page}V3 entities. |
Response
| Body | |
|---|---|
content |
Or[LeadpageV3, LeadpageV2, LeadpageV1, LeadpageSplitTestV2, LeadpageSplitTestV1] |
kind |
Enum('LeadpageV3', 'LeadpageV2', 'LeadpageV1', 'LeadpageSplitTestV2', 'LeadpageSplitTestV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
edition '{}' does not belong to leadpage '{}' |
400 Bad Request |
cannot revert to edition '{}' because it was never published successfully |
400 Bad Request |
content.publicationDomain: |
504 Gateway Timeout |
unknown message |
Request
PUT /content/v1/leadpages/{uuid}
Update the given Leadpage. You may modify the
page's publicationDomain and/or slug to change the URL to
which the page is published. However, you will have to create
a new edition for those changes to take effect.
| Body | |
|---|---|
content |
Or[UpdateLeadpageV3, UpdateLeadpageV2, UpdateLeadpageV1] |
kind |
Enum('LeadpageV3', 'LeadpageV2', 'LeadpageV1') |
| Query string | |
|---|---|
validate_slug |
Enum('on', 'false', 'no', 'True', 'off', '1', '0', 'False', 'yes', 'true')Whether or not slug uniqueness should be validated. |
Response
| Body | |
|---|---|
content |
Or[LeadpageV3, LeadpageV2, LeadpageV1, LeadpageSplitTestV2, LeadpageSplitTestV1] |
kind |
Enum('LeadpageV3', 'LeadpageV2', 'LeadpageV1', 'LeadpageSplitTestV2', 'LeadpageSplitTestV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
404 Not Found |
content {!r} not found |
409 Conflict |
content.slug: taken by another page |
504 Gateway Timeout |
unknown message |
Request
DELETE /content/v1/leadpages/{uuid}
Delete the specified Leadpage, along with all of its editions and Leadboxes and all of their editions. Predictably, this also un-publishes the Leadpage and all of its Leadboxes.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Leadbars
/content/v1/leadpages/{uuid}/leadbars
This endpoint is used to create or enumerate Leadbars that belong to the given Leadpage.
Request
GET /content/v1/leadpages/{uuid}/leadbars
Enumerate Leadbars that belong to the given Leadpage.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Leadbar] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/leadpages/{uuid}/leadbars
Create a new Leadbar associated with the given Leadpage.
| Body | |
|---|---|
content |
Or[CreateLeadbarV3] |
kind |
Enum('LeadbarV3') |
Response
| Body | |
|---|---|
content |
Or[LeadbarV3] |
kind |
Enum('LeadbarV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
504 Gateway Timeout |
unknown message |
Leadboxes
/content/v1/leadpages/{uuid}/leadboxes
This endpoint is used to create or enumerate Leadboxes that belong to the given Leadpage.
Request
GET /content/v1/leadpages/{uuid}/leadboxes
Enumerate Leadboxes that belong to the given Leadpage.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Leadbox] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/leadpages/{uuid}/leadboxes
Create a new Leadbox associated with the given Leadpage.
| Body | |
|---|---|
content |
Or[CreateLeadboxV2, CreateLeadboxV3, CreateLeadboxV1] |
kind |
Enum('LeadboxV2', 'LeadboxV3', 'LeadboxV1') |
Response
| Body | |
|---|---|
content |
Or[LeadboxSplitTestV2, LeadboxV2, LeadboxV3, LeadboxSplitTestV1, LeadboxV1] |
kind |
Enum('LeadboxSplitTestV2', 'LeadboxV2', 'LeadboxV3', 'LeadboxSplitTestV1', 'LeadboxV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
504 Gateway Timeout |
unknown message |
Editions
/content/v1/leadpages/{uuid}/editions
This endpoint is used to publish the given Leadpage. Note: this endpoint has no effect on the editions of any Leadboxes that may belong to the given Leadpage. They must be managed separately.
Request
GET /content/v1/leadpages/{uuid}/editions
Enumerate all of the given Leadpage's editions. This can be treated as a publication history for the Leadpage.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Edition] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/leadpages/{uuid}/editions
Publish a new edition of the given
Leadpage, using the page's current publicationDomain and
slug. The publicationUrl is "sticky," meaning that it
exists independent of the page once the edition is created.
| Body | |
|---|---|
sectionTemplates |
List?[String]The section templates used by the edition, if any. |
source |
Or?[CloudStorageObject, Dictionary]Either the source JSON for the edition (i.e. a 'Page JSON' structure or a legacy Leadbox 'settings' object) or a pointer to the source JSON in Google Cloud Storage. |
builderVersion |
String?The builder version that generated the source. |
html |
Or?[CloudStorageObject, String]Either the HTML compiled from the source JSON or a pointer to the compiled HTML in Google Cloud Storage. This value is optional for V3 resources, and if specified, the HTML will be published directly, bypassing the Forge compiler. This value is required for V2 resources. |
previewOnly |
Boolean?If this is provided and true, then the new Edition will only publish its preview to GCS, leaving its associated content unchanged. |
Response
| Body | |
|---|---|
status |
Enum('pending', 'failure', 'success')The status of the edition's publication. This is not an indication of whether or not the edition is currently published, but the status of its initial publication. |
targetUrl |
URI?The URL on GCP that we create the target from. |
_meta |
MetaMeta information about the resource. |
publicationUrl |
URI?The public URL to which the edition was published. |
previewUrl |
URI?The public URL to which the preview was published. Only available for Editions created with previewOnly set to true. |
content |
StringThe UUID of the content resource to which the edition belongs. |
routes |
List?[SiteRoute] |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
DELETE /content/v1/leadpages/{uuid}/editions
Delete all of the specified Leadpage's editions. This method exists purely for convenience during development and will be removed before general release.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Jsexport
/content/v1/leadpages/{uuid}/js.html
This returns the page's JS-based HTML export file as an attachment.
Request
GET /content/v1/leadpages/{uuid}/js.html
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Htmlexport
/content/v1/leadpages/{uuid}/download.html
This returns the page's raw HTML file as an attachment.
Request
GET /content/v1/leadpages/{uuid}/download.html
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Sites
/content/v1/sites
Sites are a collection of Routes that are effectively
published as a single-page application with client-side routing. In many
ways, a site behaves like a LeadpageV3, but they do not have a slug.
Once published, they have muliple "routes" which behave like different
pages, even though there is only one published artifact.
Request
GET /content/v1/sites
Enumerate the authenticated user's Sites.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
conversions |
Integer? |
updated |
DateTime? |
order_by |
Or?[String, List] |
last_published |
DateTime? |
created |
DateTime? |
views |
Integer? |
analytics_id |
Or?[Regexp, List] |
kind |
Or?[Regexp, List] |
label |
List?[Integer] |
cursor |
String?A string representing where a previous request "left off" |
visitors |
Integer? |
conversion_rate |
Number? |
publication_domain |
String? |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
visible |
Boolean? |
current_edition |
String? |
id |
Or?[Regexp, List] |
name |
String? |
Response
| Body | |
|---|---|
_items |
List[Site] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Request
POST /content/v1/sites
Create a new Site.
| Body | |
|---|---|
content |
Or[CreateSiteV3] |
kind |
Enum('SiteV3') |
| Query string | |
|---|---|
validate_slug |
Enum('on', 'false', 'no', 'True', 'off', '1', '0', 'False', 'yes', 'true')Whether or not slug uniqueness should be validated. |
Response
| Body | |
|---|---|
content |
Or[SiteV3, SiteRouteV3] |
kind |
Enum('SiteV3', 'SiteRouteV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
400 Bad Request |
unknown message |
504 Gateway Timeout |
unknown message |
Site
/content/v1/sites/{uuid}
This endpoint provides RESTful interaction with a specific Site.
Request
GET /content/v1/sites/{uuid}
Get a specific Site by its ID.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[SiteV3, SiteRouteV3] |
kind |
Enum('SiteV3', 'SiteRouteV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PATCH /content/v1/sites/{uuid}
The PATCH method is used only to change the
Site's currentEdition. You may specify the UUID of another
previously published edition to revert to (i.e. republish) that
edition. Setting the currentEdition to null will un-publish
the currently published edition, if any, while leaving the
Site itself and all of its editions intact.
Note: This does not currently recursively publish the Site's Leadboxes. You'll have to publish those separately.
| Body | |
|---|---|
currentEdition |
String?The UUID of a previously published edition to re-publish. If no UUID is specified, then the currently published edition is un-published. |
recompile |
Boolean?If true, this will cause the ediiton to be recompiled. This can only be used with Lead{box,page}V3 entities. |
Response
| Body | |
|---|---|
content |
Or[SiteV3, SiteRouteV3] |
kind |
Enum('SiteV3', 'SiteRouteV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
cannot revert to edition '{}' because it was never published successfully |
400 Bad Request |
content.publicationDomain: |
400 Bad Request |
edition '{}' does not belong to site '{}' |
504 Gateway Timeout |
unknown message |
Request
PUT /content/v1/sites/{uuid}
Update the given Site. You may modify the
site's publicationDomain, but owever, you will have to create
a new edition for that change to take effect.
| Body | |
|---|---|
content |
Or[UpdateSiteV3] |
kind |
Enum('SiteV3') |
| Query string | |
|---|---|
validate_slug |
Enum('on', 'false', 'no', 'True', 'off', '1', '0', 'False', 'yes', 'true')Whether or not slug uniqueness should be validated. |
Response
| Body | |
|---|---|
content |
Or[SiteV3, SiteRouteV3] |
kind |
Enum('SiteV3', 'SiteRouteV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
404 Not Found |
content {!r} not found |
504 Gateway Timeout |
unknown message |
Request
DELETE /content/v1/sites/{uuid}
Delete the specified Site, along with all of its editions and Leadboxes and all of their editions. Predictably, this also un-publishes the Site and all of its Leadboxes.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Leadbars
/content/v1/sites/{uuid}/leadbars
This endpoint is used to create or enumerate Leadbars that belong to the given Site.
Request
GET /content/v1/sites/{uuid}/leadbars
Enumerate Leadbars that belong to the given Site.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Leadbar] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/sites/{uuid}/leadbars
Create a new Leadbar associated with the given Site.
| Body | |
|---|---|
content |
Or[CreateLeadbarV3] |
kind |
Enum('LeadbarV3') |
Response
| Body | |
|---|---|
content |
Or[LeadbarV3] |
kind |
Enum('LeadbarV3') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
504 Gateway Timeout |
unknown message |
Leadboxes
/content/v1/sites/{uuid}/leadboxes
This endpoint is used to create or enumerate Leadboxes that belong to the given Site.
Request
GET /content/v1/sites/{uuid}/leadboxes
Enumerate Leadboxes that belong to the given Site.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Leadbox] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/sites/{uuid}/leadboxes
Create a new Leadbox associated with the given Site.
| Body | |
|---|---|
content |
Or[CreateLeadboxV2, CreateLeadboxV3, CreateLeadboxV1] |
kind |
Enum('LeadboxV2', 'LeadboxV3', 'LeadboxV1') |
Response
| Body | |
|---|---|
content |
Or[LeadboxSplitTestV2, LeadboxV2, LeadboxV3, LeadboxSplitTestV1, LeadboxV1] |
kind |
Enum('LeadboxSplitTestV2', 'LeadboxV2', 'LeadboxV3', 'LeadboxSplitTestV1', 'LeadboxV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
504 Gateway Timeout |
unknown message |
Editions
/content/v1/sites/{uuid}/editions
This endpoint is used to publish the given Site. Note: this endpoint has no effect on the editions of any Leadboxes that may belong to the given Site. They must be managed separately.
Request
GET /content/v1/sites/{uuid}/editions
Enumerate all of the given Site's editions. This can be treated as a publication history for the Site.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Edition] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/sites/{uuid}/editions
Publish a new edition of the given
Site, using the site's current publicationDomain. Doing so
will either create or update a DomainConfig for the site's
publicationDomain, setting the site as the homepage for
that domain. Unlike other types of Content, you must send a
list of Route objects representing the different URLs that
are used to serve the site. After publishing, those routes
are reflected on the site entity, but can only be changed by
publishing again.
| Body | |
|---|---|
sectionTemplates |
List?[String]The section templates used by the edition, if any. |
builderVersion |
String?The builder version that generated the source. |
exploded |
Boolean? |
blogPostTemplate |
BlogPostTemplate? |
source |
Or?[CloudStorageObject, Dictionary]Either the source JSON for the edition (i.e. a 'Page JSON' structure or a legacy Leadbox 'settings' object) or a pointer to the source JSON in Google Cloud Storage. |
html |
Or?[CloudStorageObject, String]Either the HTML compiled from the source JSON or a pointer to the compiled HTML in Google Cloud Storage. This value is optional for V3 resources, and if specified, the HTML will be published directly, bypassing the Forge compiler. This value is required for V2 resources. |
previewOnly |
Boolean?If this is provided and true, then the new Edition will only publish its preview to GCS, leaving its associated content unchanged. |
routes |
List[SiteRoute] |
notFound |
SiteNotFound? |
Response
| Body | |
|---|---|
status |
Enum('pending', 'failure', 'success')The status of the edition's publication. This is not an indication of whether or not the edition is currently published, but the status of its initial publication. |
targetUrl |
URI?The URL on GCP that we create the target from. |
_meta |
MetaMeta information about the resource. |
publicationUrl |
URI?The public URL to which the edition was published. |
previewUrl |
URI?The public URL to which the preview was published. Only available for Editions created with previewOnly set to true. |
content |
StringThe UUID of the content resource to which the edition belongs. |
routes |
List?[SiteRoute] |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
DELETE /content/v1/sites/{uuid}/editions
Delete all of the specified Site's editions. This method exists purely for convenience during development and will be removed before general release.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Splittests
/content/v1/splittests
Request
GET /content/v1/splittests
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
conversions |
Integer? |
updated |
DateTime? |
order_by |
Or?[String, List] |
last_published |
DateTime? |
created |
DateTime? |
views |
Integer? |
analytics_id |
Or?[Regexp, List] |
kind |
Or?[Regexp, List] |
label |
List?[Integer] |
cursor |
String?A string representing where a previous request "left off" |
visitors |
Integer? |
conversion_rate |
Number? |
publication_domain |
String? |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
visible |
Boolean? |
current_edition |
String? |
id |
Or?[Regexp, List] |
name |
String? |
Response
| Body | |
|---|---|
_items |
List[SplitTest] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Request
POST /content/v1/splittests
| Body | |
|---|---|
content |
Or[CreateLeadpageSplitTestV1, CreateLeadpageSplitTestV2, CreateLeadboxSplitTestV2, CreateLeadboxSplitTestV1] |
kind |
Enum('LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1') |
| Query string | |
|---|---|
validate_slug |
Enum('on', 'false', 'no', 'True', 'off', '1', '0', 'False', 'yes', 'true')Whether or not slug uniqueness should be validated. |
Response
| Body | |
|---|---|
content |
Or[LeadpageSplitTestV1, LeadpageSplitTestV2, LeadboxSplitTestV2, LeadboxSplitTestV1] |
kind |
Enum('LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
400 Bad Request |
content.variations: |
400 Bad Request |
content.publicationDomain: |
409 Conflict |
too much contention over this entity |
409 Conflict |
content.slug: taken by another page |
504 Gateway Timeout |
unknown message |
Splittest
/content/v1/splittests/{uuid}
Request
GET /content/v1/splittests/{uuid}
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[LeadpageSplitTestV1, LeadpageSplitTestV2, LeadboxSplitTestV2, LeadboxSplitTestV1] |
kind |
Enum('LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PUT /content/v1/splittests/{uuid}
| Body | |
|---|---|
content |
Or[UpdateLeadpageSplitTestV1, UpdateLeadpageSplitTestV2, UpdateLeadboxSplitTestV2, UpdateLeadboxSplitTestV1] |
kind |
Enum('LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1') |
| Query string | |
|---|---|
validate_slug |
Enum('on', 'false', 'no', 'True', 'off', '1', '0', 'False', 'yes', 'true')Whether or not slug uniqueness should be validated. |
Response
| Body | |
|---|---|
content |
Or[LeadpageSplitTestV1, LeadpageSplitTestV2, LeadboxSplitTestV2, LeadboxSplitTestV1] |
kind |
Enum('LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
content.variations: |
400 Bad Request |
content.publicationDomain: |
404 Not Found |
content {!r} not found |
409 Conflict |
too much contention over this entity |
409 Conflict |
content.slug: taken by another page |
504 Gateway Timeout |
unknown message |
Request
DELETE /content/v1/splittests/{uuid}
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Contents
/content/v1/splittests/{uuid}/contents
Request
GET /content/v1/splittests/{uuid}/contents
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Content] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Editions
/content/v1/splittests/{uuid}/editions
Request
GET /content/v1/splittests/{uuid}/editions
Enumerate all of the given Split Test's editions. This can be treated as a publication history for the Split Test.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Edition] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/splittests/{uuid}/editions
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
status |
Enum('pending', 'failure', 'success')The status of the edition's publication. This is not an indication of whether or not the edition is currently published, but the status of its initial publication. |
targetUrl |
URI?The URL on GCP that we create the target from. |
_meta |
MetaMeta information about the resource. |
publicationUrl |
URI?The public URL to which the edition was published. |
previewUrl |
URI?The public URL to which the preview was published. Only available for Editions created with previewOnly set to true. |
content |
StringThe UUID of the content resource to which the edition belongs. |
routes |
List?[SiteRoute] |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
content.publicationDomain: |
400 Bad Request |
unknown message |
409 Conflict |
too much contention over these entities, try again later |
504 Gateway Timeout |
unknown message |
Jsexport
/content/v1/splittests/{uuid}/js.html
This returns the page's JS-based HTML export file as an attachment.
Request
GET /content/v1/splittests/{uuid}/js.html
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Editions
/content/v1/editions
Editions provide the publishing model for Foundry API. An edition represents the publication of a given piece of Content. To publish something, you just create a new edition of it. Editions also provide a simple mechanism for un-publishing things, or reverting to previously published editions.
The top level editions endpoints are considered view-only.
Request
GET /content/v1/editions
Enumerate all editions. This is probably not all that interesting for most clients, since having a list of all editions generally doesn't provide enough context to do anything useful.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Edition] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
DELETE /content/v1/editions
This method exists purely for convenience during development and will be removed before general release.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Edition
/content/v1/editions/{uuid}
This endpoint is used to get a single specific edition by ID. You'll probably use this mainly to poll an edition's status while publishing.
Request
GET /content/v1/editions/{uuid}
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
status |
Enum('pending', 'failure', 'success')The status of the edition's publication. This is not an indication of whether or not the edition is currently published, but the status of its initial publication. |
targetUrl |
URI?The URL on GCP that we create the target from. |
_meta |
MetaMeta information about the resource. |
publicationUrl |
URI?The public URL to which the edition was published. |
previewUrl |
URI?The public URL to which the preview was published. Only available for Editions created with previewOnly set to true. |
content |
StringThe UUID of the content resource to which the edition belongs. |
routes |
List?[SiteRoute] |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
DELETE /content/v1/editions/{uuid}
This method will most likely be removed prior to general release.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Source
/content/v1/editions/{uuid}/source.json
Request
GET /content/v1/editions/{uuid}/source.json
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
404 Not Found |
source for edition '{}' not found |
Domainconfigs
/content/v1/domain-configs
Manage domain settings for a given LP domain or custom domains.
Request
GET /content/v1/domain-configs
Enumerate all domains for a user.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[DomainConfig] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Domainconfig
/content/v1/domain-configs/{uuid}
Request
GET /content/v1/domain-configs/{uuid}
Get settings for a domain.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
_meta |
MetaMeta information about the resource. |
targetDomain |
String?Target domain for redirection. |
blog |
String?Blog ID for the blog parent entity. |
blog_template |
String?Content ID for the blog template for blog posts. |
notFound |
String?Content ID for the 404 page for a domain. |
homepage |
String?Content ID for the root page (homepage) for a domain. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
Invalid domain name |
Request
PUT /content/v1/domain-configs/{uuid}
Set settings for a domain.
| Body | |
|---|---|
blog |
String?Blog ID for the blog parent entity. |
blog_template |
String?Content ID for the blog template for blog posts. |
notFound |
String?Content ID for the 404 page for a domain. |
homepage |
String?Content ID for the root page (homepage) for a domain. |
targetDomain |
String?Target domain for redirection. |
Response
| Body | |
|---|---|
_meta |
MetaMeta information about the resource. |
targetDomain |
String?Target domain for redirection. |
blog |
String?Blog ID for the blog parent entity. |
blog_template |
String?Content ID for the blog template for blog posts. |
notFound |
String?Content ID for the 404 page for a domain. |
homepage |
String?Content ID for the root page (homepage) for a domain. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
504 Gateway Timeout |
unknown message |
Request
DELETE /content/v1/domain-configs/{uuid}
Delete settings for a domain.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Servingactions
/content/v1/serving-actions
Request
POST /content/v1/serving-actions
| Body | |
|---|---|
path |
String |
domain |
String |
from_cache_bust |
Boolean? |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Contents
/content/v1/contents
The Contents endpoints are used for viewing all kinds of content that the Foundry API owns. Leadpages, Leadboxes, V3 and V2 of both, it's all here. These endpoints are all read-only, and intended to provide some added convenience for other services that need information about various resources.
Request
GET /content/v1/contents
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
conversions |
Integer? |
updated |
DateTime? |
order_by |
Or?[String, List] |
last_published |
DateTime? |
created |
DateTime? |
views |
Integer? |
analytics_id |
Or?[Regexp, List] |
kind |
Or?[Regexp, List] |
label |
List?[Integer] |
cursor |
String?A string representing where a previous request "left off" |
visitors |
Integer? |
conversion_rate |
Number? |
publication_domain |
String? |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
visible |
Boolean? |
current_edition |
String? |
id |
Or?[Regexp, List] |
name |
String? |
Response
| Body | |
|---|---|
_items |
List[Content] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
failed to parse JSON request |
400 Bad Request |
bad content type |
400 Bad Request |
missing Content-Type header |
400 Bad Request |
unknown message |
Request
POST /content/v1/contents
Duplicate a piece of content that the user owns or form a share.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[LeadbarV3, LeadboxSplitTestV2, LeadboxSplitTestV1, LeadpageSplitTestV1, LeadpageSplitTestV2, LeadpageV3, LeadpageV2, LeadpageV1, SiteRouteV3, SiteV3, LeadboxV2, LeadboxV3, LeadboxV1, BlogPost] |
edition |
Edition |
kind |
Enum('LeadbarV3', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1', 'LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadpageV3', 'LeadpageV2', 'LeadpageV1', 'SiteRouteV3', 'SiteV3', 'LeadboxV2', 'LeadboxV3', 'LeadboxV1', 'BlogPost') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
missing Content-Type header |
400 Bad Request |
duplication for this type of content is not yet implemented |
400 Bad Request |
bad content type |
400 Bad Request |
unknown message |
400 Bad Request |
failed to parse JSON request |
404 Not Found |
invalid share key |
409 Conflict |
content.slug: taken by another page |
Content
/content/v1/contents/{uuid}
Get a single Content resource by ID, regardless of its kind or version. This is particularly useful if you know the ID of something, but don't know what it is and need to identify it before taking further action.
Request
GET /content/v1/contents/{uuid}
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[LeadbarV3, LeadboxSplitTestV2, LeadboxSplitTestV1, LeadpageSplitTestV1, LeadpageSplitTestV2, LeadpageV3, LeadpageV2, LeadpageV1, SiteRouteV3, SiteV3, LeadboxV2, LeadboxV3, LeadboxV1, BlogPost] |
kind |
Enum('LeadbarV3', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1', 'LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadpageV3', 'LeadpageV2', 'LeadpageV1', 'SiteRouteV3', 'SiteV3', 'LeadboxV2', 'LeadboxV3', 'LeadboxV1', 'BlogPost') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Editions
/content/v1/contents/{uuid}/editions
Enumerate all editions for the given Content resource.
Request
GET /content/v1/contents/{uuid}/editions
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Edition] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Contentslug
/content/v1/contents/check-slug
Request
GET /content/v1/contents/check-slug
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
domain |
Stringpublication_domain |
slug |
Stringslug |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
409 Conflict |
content.slug: taken by another page |
Contentindex
/content/v1/contents/index
This endpoint is used to rebuild an EntityIndex for a user's content.
Request
GET /content/v1/contents/index
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
Entity index not found for user {} |
Request
PATCH /content/v1/contents/index
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
202 Accepted |
|
| Errors | |
|---|---|
| Empty | |
Request
DELETE /content/v1/contents/index
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
400 Bad Request |
Entity index not found for user {} |
Blogs
/content/v1/blogs
Blogs
Request
GET /content/v1/blogs
Enumerate the authenticated user's blogs.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Blog] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/blogs
Create a new blog
| Body | |
|---|---|
publishedSite |
String?UUID of site entity that this blog is currently published |
name |
StringName of the blog |
settings |
Dictionary?Any global blog settings that don't have their own property |
site |
String?Deprecated in favor of published_site |
basePath |
String?Base path for a blog's root. |
connectedSite |
String?UUID of site entity that this blog is currently connected |
domain |
String?Root domain |
description |
String?Description of Blog |
| Query string | |
|---|---|
validate_slug |
Enum('on', 'false', 'no', 'True', 'off', '1', '0', 'False', 'yes', 'true')Whether or not slug uniqueness should be validated. |
Response
| Body | |
|---|---|
content |
Or[BaseBlog] |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
| Empty | |
Blog
/content/v1/blogs/{uuid}
This endpoint provides RESTful interaction with a specific blog.
Request
GET /content/v1/blogs/{uuid}
Get a specific blog by its ID.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[BaseBlog] |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PUT /content/v1/blogs/{uuid}
Update the given blog. You may modify the
page's publicationDomain and/or slug to change the URL to
which the page is published. However, you will have to create
a new edition for those changes to take effect.
| Body | |
|---|---|
publishedSite |
String?UUID of site entity that this blog is currently published |
name |
StringName of the blog |
settings |
Dictionary?Any global blog settings that don't have their own property |
site |
String?Deprecated in favor of published_site |
basePath |
String?Base path for a blog's root. |
connectedSite |
String?UUID of site entity that this blog is currently connected |
domain |
String?Root domain |
description |
String?Description of Blog |
Response
| Body | |
|---|---|
content |
Or[BaseBlog] |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
404 Not Found |
blog {!r} not found |
Request
DELETE /content/v1/blogs/{uuid}
Delete the specified blog, along with all of its editions. Predictably, this also un-publishes the blog.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
400 Bad Request |
Cannot delete a blog that is connected to a site |
400 Bad Request |
Cannot delete a blog that is currently published |
Authors
/content/v1/blogs/{uuid}/authors
Blog authors
Request
GET /content/v1/blogs/{uuid}/authors
Fetch blog authors
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[BlogAuthor] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Request
POST /content/v1/blogs/{uuid}/authors
Create a new blog author
| Body | |
|---|---|
blogParent |
String?UUID of parent blog entity |
name |
StringBlog author's name |
Response
| Body | |
|---|---|
content |
Or[BaseBlogAuthor] |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Blogauthor
/content/v1/blogs/{uuid}/authors/{author_uuid}
Manage individal blog author
Request
GET /content/v1/blogs/{uuid}/authors/{author_uuid}
Fetch a blog author by id
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
content |
Or[BaseBlogAuthor] |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PUT /content/v1/blogs/{uuid}/authors/{author_uuid}
Update blog author
| Body | |
|---|---|
blogParent |
String?UUID of parent blog entity |
name |
StringBlog author's name |
Response
| Body | |
|---|---|
content |
Or[BaseBlogAuthor] |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
404 Not Found |
blog author {!r} not found |
Request
DELETE /content/v1/blogs/{uuid}/authors/{author_uuid}
Delete a blog author.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
500 Internal Server Error |
Failed to delete author [%r] from all posts in blog [%r] |
Blogposts
/content/v1/blogs/{uuid}/authors/{author_uuid}/posts
Blog posts by author
Request
GET /content/v1/blogs/{uuid}/authors/{author_uuid}/posts
Fetch a blog post by author
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[BlogPostV1] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Blogposts
/content/v1/blogs/{uuid}/posts
Blog posts
Request
GET /content/v1/blogs/{uuid}/posts
Fetch a blog post by id
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
updated |
DateTime? |
order_by |
Or?[String, List] |
last_published |
DateTime? |
author |
String? |
created |
DateTime? |
analytics_id |
Or?[Regexp, List] |
kind |
Or?[Regexp, List] |
cursor |
String?A string representing where a previous request "left off" |
visible |
Boolean? |
published_at |
DateTime? |
publication_domain |
String? |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
title |
String? |
current_edition |
String? |
id |
Or?[Regexp, List] |
categories |
List?[String] |
Response
| Body | |
|---|---|
_items |
List[BlogPostV1] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Request
POST /content/v1/blogs/{uuid}/posts
Create a new blog post
| Body | |
|---|---|
customTrackingId |
String?The string used by the LP tracking code to identifyevents for the content with any applicable context. |
metaTags |
Dictionary?Meta html tags for post ex. robots='noindex' |
description |
String?Meta description of Blog post |
title |
StringTitle of Blog post |
publicationDomain |
String?The domain to which any new editions of the content will be published. |
author |
String? |
socialSettings |
BlogSocialSettingsSchema? |
label |
List?[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply one label to something, we now let you apply more than one. |
publishedAt |
DateTime? |
publishedStatus |
Enum('draft', 'published', 'scheduled', '')Published, Scheduled or draft? |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
featuredImage |
BlogImageSchema? |
blogParent |
String?UUID of parent blog entity |
currentEdition |
String? |
slug |
String?Url fragment for post |
categories |
List?[String] |
name |
String?Name in listing |
| Query string | |
|---|---|
validate_slug |
Enum('on', 'false', 'no', 'True', 'off', '1', '0', 'False', 'yes', 'true')Whether or not slug uniqueness should be validated. |
Response
| Body | |
|---|---|
content |
Or[BaseBlogPost] |
kind |
Enum('BlogPost') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
409 Conflict |
content.slug: taken by another page |
Blogpost
/content/v1/blogs/{uuid}/posts/{post_uuid}
This endpoint is used to publish the given blog.
Request
GET /content/v1/blogs/{uuid}/posts/{post_uuid}
Fetch a blog post by id
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
content |
Or[BaseBlogPost] |
kind |
Enum('BlogPost') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PUT /content/v1/blogs/{uuid}/posts/{post_uuid}
Update a blog post by id
| Body | |
|---|---|
customTrackingId |
String?The string used by the LP tracking code to identifyevents for the content with any applicable context. |
metaTags |
Dictionary?Meta html tags for post ex. robots='noindex' |
description |
String?Meta description of Blog post |
title |
StringTitle of Blog post |
publicationDomain |
String?The domain to which any new editions of the content will be published. |
author |
String? |
socialSettings |
BlogSocialSettingsSchema? |
label |
List?[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply one label to something, we now let you apply more than one. |
publishedAt |
DateTime? |
publishedStatus |
Enum('draft', 'published', 'scheduled', '')Published, Scheduled or draft? |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
featuredImage |
BlogImageSchema? |
blogParent |
String?UUID of parent blog entity |
currentEdition |
String? |
slug |
String?Url fragment for post |
categories |
List?[String] |
name |
String?Name in listing |
Response
| Body | |
|---|---|
content |
Or[BaseBlogPost] |
kind |
Enum('BlogPost') |
_meta |
MetaMeta information about the resource. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
404 Not Found |
content {!r} not found |
Request
DELETE /content/v1/blogs/{uuid}/posts/{post_uuid}
Delete all of the specified blog post.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Source
/content/v1/blogs/{uuid}/posts/{post_uuid}/source
Request
GET /content/v1/blogs/{uuid}/posts/{post_uuid}/source
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
404 Not Found |
source for {!r} not found |
Editions
/content/v1/blogs/{uuid}/posts/{post_uuid}/editions
This endpoint is used to publish the given blog post.
Request
GET /content/v1/blogs/{uuid}/posts/{post_uuid}/editions
Enumerate all of the given blog's editions. This can be treated as a publication history for the blog.
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[Edition] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
POST /content/v1/blogs/{uuid}/posts/{post_uuid}/editions
Publish a new edition of the given
blog, using the page's current publicationDomain and
slug. The publicationUrl is "sticky," meaning that it
exists independent of the page once the edition is created.
| Body | |
|---|---|
sectionTemplates |
List?[String]The section templates used by the edition, if any. |
source |
Or?[CloudStorageObject, Dictionary]Either the source JSON for the edition (i.e. a 'Page JSON' structure or a legacy Leadbox 'settings' object) or a pointer to the source JSON in Google Cloud Storage. |
builderVersion |
String?The builder version that generated the source. |
html |
Or?[CloudStorageObject, String]Either the HTML compiled from the source JSON or a pointer to the compiled HTML in Google Cloud Storage. This value is optional for V3 resources, and if specified, the HTML will be published directly, bypassing the Forge compiler. This value is required for V2 resources. |
previewOnly |
Boolean?If this is provided and true, then the new Edition will only publish its preview to GCS, leaving its associated content unchanged. |
Response
| Body | |
|---|---|
status |
Enum('pending', 'failure', 'success')The status of the edition's publication. This is not an indication of whether or not the edition is currently published, but the status of its initial publication. |
targetUrl |
URI?The URL on GCP that we create the target from. |
_meta |
MetaMeta information about the resource. |
publicationUrl |
URI?The public URL to which the edition was published. |
previewUrl |
URI?The public URL to which the preview was published. Only available for Editions created with previewOnly set to true. |
content |
StringThe UUID of the content resource to which the edition belongs. |
routes |
List?[SiteRoute] |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
html: missing |
Request
DELETE /content/v1/blogs/{uuid}/posts/{post_uuid}/editions
Delete all of the specified blog post's editions. This method exists purely for convenience during development and will NOT be removed before general release.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Blogcategories
/content/v1/blogs/{uuid}/categories
Blog categories
Request
GET /content/v1/blogs/{uuid}/categories
Fetch blog categories
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[BlogCategory] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Request
POST /content/v1/blogs/{uuid}/categories
Create a new blog category
| Body | |
|---|---|
blogParent |
String?UUID of parent blog entity |
visible |
Boolean?Setting to hide a category from public display, but use for organizational use |
name |
StringName of Blog category |
slug |
String?Url fragment for category |
Response
| Body | |
|---|---|
blogParent |
String?UUID of parent blog entity |
visible |
Boolean?Setting to hide a category from public display, but use for organizational use |
uuid |
String? |
slug |
String?Url fragment for category |
name |
StringName of Blog category |
| Responses | |
|---|---|
201 Created |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Blogcategory
/content/v1/blogs/{uuid}/categories/{category_uuid}
Manage individal blog category
Request
GET /content/v1/blogs/{uuid}/categories/{category_uuid}
Fetch a blog category by id
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
blogParent |
String?UUID of parent blog entity |
visible |
Boolean?Setting to hide a category from public display, but use for organizational use |
uuid |
String? |
slug |
String?Url fragment for category |
name |
StringName of Blog category |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PUT /content/v1/blogs/{uuid}/categories/{category_uuid}
Update blog category
| Body | |
|---|---|
blogParent |
String?UUID of parent blog entity |
visible |
Boolean?Setting to hide a category from public display, but use for organizational use |
name |
StringName of Blog category |
slug |
String?Url fragment for category |
Response
| Body | |
|---|---|
blogParent |
String?UUID of parent blog entity |
visible |
Boolean?Setting to hide a category from public display, but use for organizational use |
uuid |
String? |
slug |
String?Url fragment for category |
name |
StringName of Blog category |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
404 Not Found |
blog category {!r} not found |
Request
DELETE /content/v1/blogs/{uuid}/categories/{category_uuid}
Delete a blog category.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Blogposts
/content/v1/blogs/{uuid}/categories/{category_uuid}/posts
Blog posts by category
Request
GET /content/v1/blogs/{uuid}/categories/{category_uuid}/posts
Fetch blog posts by category
| Body | |
|---|---|
| Empty | |
| Query string | |
|---|---|
cursor |
String?A string representing where a previous request "left off" |
limit |
Regexp?(\d+)The maximum number of items to return in the response. |
Response
| Body | |
|---|---|
_items |
List[BlogPostV1] |
_meta |
ListingMetaMeta information about the response. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
400 Bad Request |
unknown message |
Userconfig
/content/v1/user-configs/{uuid}
Manage a user's config.
Request
GET /content/v1/user-configs/{uuid}
Get settings for a user.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
_meta |
MetaMeta information about the resource. |
poweredBy |
Boolean?Enable 'Powered By' display. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
PUT /content/v1/user-configs/{uuid}
Set settings for a user.
| Body | |
|---|---|
poweredBy |
Boolean?Enable 'Powered By' display. |
Response
| Body | |
|---|---|
_meta |
MetaMeta information about the resource. |
poweredBy |
Boolean?Enable 'Powered By' display. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Request
DELETE /content/v1/user-configs/{uuid}
Delete settings for a user.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
| Empty | |
Domain
/content/v1/domains/{uuid}
Get an action for a domain.
Request
GET /content/v1/domains/{uuid}
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
userUuid |
String?User UUID of the owner for this domain. |
targetDomain |
String?Target domain for redirection. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Domainscache
/content/v1/domains-cache
Manage domains cache for LP domains or custom domains.
Request
DELETE /content/v1/domains-cache
Delete domains cache by account UUID.
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
| Empty | |
| Responses | |
|---|---|
204 No Content |
|
| Errors | |
|---|---|
400 Bad Request |
Missing access ID in user profile |
User
/content/v1/users/{uuid}
Get a config for a user.
Request
GET /content/v1/users/{uuid}
| Body | |
|---|---|
| Empty | |
Response
| Body | |
|---|---|
poweredBy |
BooleanEnable 'Powered by' bar. |
| Responses | |
|---|---|
200 OK |
|
| Errors | |
|---|---|
| Empty | |
Definitions
Leadbox
| Leadbox | |
|---|---|
content |
Or[LeadboxSplitTestV2, LeadboxV2, LeadboxV3, LeadboxSplitTestV1, LeadboxV1] |
kind |
Enum('LeadboxSplitTestV2', 'LeadboxV2', 'LeadboxV3', 'LeadboxSplitTestV1', 'LeadboxV1') |
_meta |
MetaMeta information about the resource. |
LeadboxSplitTestV2
| LeadboxSplitTestV2 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
name |
StringA friendly name for the resource. |
Variation
| Variation | |
|---|---|
content |
StringThe UUID of the Content representing a variation. |
variation |
StringThe UUID of the Variation. This should contain the id of this variation in the caller's database and is used to generate the analytics tracking id. |
weight |
Integer(0 < n < 100)The weight of the variation. |
LeadboxV2
| LeadboxV2 | |
|---|---|
conversions |
Integer?The total number of converions this content has received. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
name |
StringA friendly name for the resource. |
leadpage |
String?The UUID of the Leadpage to which the Leadbox belongs. If this value is populated, the Leadbox will not be returned by the normal Leadboxes listing endpoint. The absence of this value indicates a 'standalone' Leadbox. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
views |
Integer?The total number of views received by this piece of content. |
thankYouUrl |
URI?The URL to which the user is redirected after opting in. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
conversionRate |
Number?The conversion rate of this content. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
FacebookInfo?
| FacebookInfo? | |
|---|---|
adAccountId |
String?Facebook ad account id. |
pixelId |
String?Facebook tracking pixel Id. |
adSetMap |
Dictionary?Facebook ads |
pageId |
String?Facebook business page id. |
campaignId |
String?Facebook campaign id. |
ContentSplitTest?
| ContentSplitTest? | |
|---|---|
id |
StringThe UUID of the split test to which the resource belongs. |
weight |
Integer(0 < n < 100)Variation's weight, used when randomly choosing a variation to show. |
variation |
StringThe UUID of the variation that represents the resource in the split test. |
LeadboxV3
| LeadboxV3 | |
|---|---|
conversions |
Integer?The total number of converions this content has received. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
leadpage |
String?The UUID of the Leadpage to which the Leadbox belongs. If this value is populated, the Leadbox will not be returned by the normal Leadboxes listing endpoint. The absence of this value indicates a 'standalone' Leadbox. |
conversionRate |
Number?The conversion rate of this content. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
googleAnalyticsId |
String? |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
forms |
List[String]A list of Hydra Form UUIDs that are used by the resource. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
template |
String?The ID of the template from which the resource was created, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
googleAnalytics4Id |
String? |
views |
Integer?The total number of views received by this piece of content. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
name |
StringA friendly name for the resource. |
LeadboxSplitTestV1
| LeadboxSplitTestV1 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
views |
Integer?The total number of views received by this piece of content. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
variations |
List[Variation]The variations that make up this split test. |
currentEdition |
String?The UUID of the currently published edition, if any. |
name |
StringA friendly name for the resource. |
LeadboxV1
| LeadboxV1 | |
|---|---|
conversions |
Integer?The total number of converions this content has received. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
leadpage |
String?The UUID of the Leadpage to which the Leadbox belongs. If this value is populated, the Leadbox will not be returned by the normal Leadboxes listing endpoint. The absence of this value indicates a 'standalone' Leadbox. |
thankYouUrl |
URI?The URL to which the user is redirected after opting in. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
views |
Integer?The total number of views received by this piece of content. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
leadValue |
Number?The value of a lead on this asset. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
name |
StringA friendly name for the resource. |
Meta
| Meta | |
|---|---|
deleted |
DateTime?When the resource was deleted. |
updated |
DateTimeWhen the resource was last updated. |
created |
DateTimeWhen the resource was created. |
id |
StringThe resource's unique identifier. |
uri |
URIThe resource's absolute URI. |
ListingMeta
| ListingMeta | |
|---|---|
count |
IntegerThe total number of items in the response. |
cursor |
String?This is used in conjunction with limit to paginate through lists of items. |
total |
Integer?The number of items in the database. |
limit |
IntegerThe requested limit on the number of items. |
CreateLeadboxV2
| CreateLeadboxV2 | |
|---|---|
name |
StringA friendly name for the resource. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
thankYouUrl |
URI?The URL to which the user is redirected after opting in. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
CreateLeadboxV3
| CreateLeadboxV3 | |
|---|---|
googleAnalyticsId |
String? |
name |
StringA friendly name for the resource. |
googleAnalytics4Id |
String? |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
forms |
List?[String]A list of Hydra Form UUIDs that are used by the resource, if any. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template from which the resource was created, if any. |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
CreateLeadboxV1
| CreateLeadboxV1 | |
|---|---|
name |
StringA friendly name for the resource. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
thankYouUrl |
URI?The URL to which the user is redirected after opting in. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
Edition
| Edition | |
|---|---|
status |
Enum('pending', 'failure', 'success')The status of the edition's publication. This is not an indication of whether or not the edition is currently published, but the status of its initial publication. |
targetUrl |
URI?The URL on GCP that we create the target from. |
_meta |
MetaMeta information about the resource. |
publicationUrl |
URI?The public URL to which the edition was published. |
previewUrl |
URI?The public URL to which the preview was published. Only available for Editions created with previewOnly set to true. |
content |
StringThe UUID of the content resource to which the edition belongs. |
routes |
List?[SiteRoute] |
SiteRoute
| SiteRoute | |
|---|---|
type |
Enum('page', 'blog_feed', 'blog_post_template')The type of the route. If it isn't "page" then it will be considered internal and will not be served |
draft |
Boolean?A flag indicating the publication state of the route. |
id |
StringThe ID for the route. |
name |
String?The friendly name for the route. |
slug |
String?A URL-safe string used as the public path for the route. |
CloudStorageObject
| CloudStorageObject | |
|---|---|
bucket |
StringThe bucket in which the object exists. |
name |
StringThe object's name. |
LeadbarV3
| LeadbarV3 | |
|---|---|
conversions |
Integer?The total number of converions this content has received. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
leadpage |
String?The UUID of the Leadpage to which the Leadbar belongs. If this value is populated, the Leadbar will not be returned by the normal Leadbars listing endpoint. The absence of this value indicates a 'standalone' Leadbar. |
conversionRate |
Number?The conversion rate of this content. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
googleAnalyticsId |
String? |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
forms |
List[String]A list of Hydra Form UUIDs that are used by the resource. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
template |
String?The ID of the template from which the resource was created, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
googleAnalytics4Id |
String? |
views |
Integer?The total number of views received by this piece of content. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
name |
StringA friendly name for the resource. |
UpdateLeadbarV3
| UpdateLeadbarV3 | |
|---|---|
googleAnalyticsId |
String? |
name |
StringA friendly name for the resource. |
googleAnalytics4Id |
String? |
leadpage |
String?The UUID of the Leadpage to which the Leadbar belongs. If this value is populated, the Leadbar will not be returned by the normal Leadbars listing endpoint. The absence of this value indicates a 'standalone' Leadbar. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
forms |
List?[String]A list of Hydra Form UUIDs that are used by the resource, if any. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template from which the resource was created, if any. |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
Leadbar
| Leadbar | |
|---|---|
content |
Or[LeadbarV3] |
kind |
Enum('LeadbarV3') |
_meta |
MetaMeta information about the resource. |
CreateLeadbarV3
| CreateLeadbarV3 | |
|---|---|
googleAnalyticsId |
String? |
name |
StringA friendly name for the resource. |
googleAnalytics4Id |
String? |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
forms |
List?[String]A list of Hydra Form UUIDs that are used by the resource, if any. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template from which the resource was created, if any. |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
UpdateLeadboxV2
| UpdateLeadboxV2 | |
|---|---|
name |
StringA friendly name for the resource. |
leadpage |
String?The UUID of the Leadpage to which the Leadbox belongs. If this value is populated, the Leadbox will not be returned by the normal Leadboxes listing endpoint. The absence of this value indicates a 'standalone' Leadbox. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
thankYouUrl |
URI?The URL to which the user is redirected after opting in. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
UpdateLeadboxV3
| UpdateLeadboxV3 | |
|---|---|
googleAnalyticsId |
String? |
name |
StringA friendly name for the resource. |
googleAnalytics4Id |
String? |
leadpage |
String?The UUID of the Leadpage to which the Leadbox belongs. If this value is populated, the Leadbox will not be returned by the normal Leadboxes listing endpoint. The absence of this value indicates a 'standalone' Leadbox. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
forms |
List?[String]A list of Hydra Form UUIDs that are used by the resource, if any. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template from which the resource was created, if any. |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
UpdateLeadboxV1
| UpdateLeadboxV1 | |
|---|---|
name |
StringA friendly name for the resource. |
leadpage |
String?The UUID of the Leadpage to which the Leadbox belongs. If this value is populated, the Leadbox will not be returned by the normal Leadboxes listing endpoint. The absence of this value indicates a 'standalone' Leadbox. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
thankYouUrl |
URI?The URL to which the user is redirected after opting in. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
LeadpageV3
| LeadpageV3 | |
|---|---|
conversions |
Integer?The total number of converions this content has received. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
conversionRate |
Number?The conversion rate of this content. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
redirect |
Redirect?Leadpage redirect configuration. |
googleAnalyticsId |
String? |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
forms |
List[String]A list of Hydra Form UUIDs that are used by the resource. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
template |
String?The ID of the template from which the resource was created, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
shareKey |
StringThe key that may be used to share this page. |
googleAnalytics4Id |
String? |
views |
Integer?The total number of views received by this piece of content. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
slug |
StringA URL-safe string used as the public path for the page. |
name |
StringA friendly name for the resource. |
Redirect?
| Redirect? | |
|---|---|
desktopOnly |
BooleanWhether to redirect all traffic or only desktop browsers. |
target |
URIThe URL to which visitors will be redirected. |
LeadpageV2
| LeadpageV2 | |
|---|---|
redirect |
Redirect?Leadpage redirect configuration. |
conversions |
Integer?The total number of converions this content has received. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
name |
StringA friendly name for the resource. |
views |
Integer?The total number of views received by this piece of content. |
shareKey |
StringThe key that may be used to share this page. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
conversionRate |
Number?The conversion rate of this content. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
template |
String?The ID of the template on which the page is based, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
slug |
StringA URL-safe string used as the public path for the page. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
LeadpageV1
| LeadpageV1 | |
|---|---|
redirect |
Redirect?Leadpage redirect configuration. |
conversions |
Integer?The total number of converions this content has received. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
name |
StringA friendly name for the resource. |
views |
Integer?The total number of views received by this piece of content. |
shareKey |
StringThe key that may be used to share this page. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
conversionRate |
Number?The conversion rate of this content. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
template |
String?The ID of the template on which the page is based, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
slug |
StringA URL-safe string used as the public path for the page. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
LeadpageSplitTestV2
| LeadpageSplitTestV2 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
slug |
StringA URL-safe string used as the public path for the test. |
name |
StringA friendly name for the resource. |
LeadpageSplitTestV1
| LeadpageSplitTestV1 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
slug |
StringA URL-safe string used as the public path for the test. |
name |
StringA friendly name for the resource. |
UpdateLeadpageV3
| UpdateLeadpageV3 | |
|---|---|
redirect |
Redirect?Leadpage redirect configuration. |
googleAnalyticsId |
String? |
name |
StringA friendly name for the resource. |
googleAnalytics4Id |
String? |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
forms |
List?[String]A list of Hydra Form UUIDs that are used by the resource, if any. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template from which the resource was created, if any. |
slug |
String?A URL-safe string to be used as the public path for the page. If not specified, a suitable value is constructed from the page's name. |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
UpdateLeadpageV2
| UpdateLeadpageV2 | |
|---|---|
redirect |
Redirect?Leadpage redirect configuration. |
name |
StringA friendly name for the resource. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template on which the page is based, if any. |
slug |
String?A URL-safe string to be used as the public path for the page. If not specified, a suitable value is constructed from the page's name. |
UpdateLeadpageV1
| UpdateLeadpageV1 | |
|---|---|
redirect |
Redirect?Leadpage redirect configuration. |
name |
StringA friendly name for the resource. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template on which the page is based, if any. |
slug |
String?A URL-safe string to be used as the public path for the page. If not specified, a suitable value is constructed from the page's name. |
Leadpage
| Leadpage | |
|---|---|
content |
Or[LeadpageV3, LeadpageV2, LeadpageV1, LeadpageSplitTestV2, LeadpageSplitTestV1] |
kind |
Enum('LeadpageV3', 'LeadpageV2', 'LeadpageV1', 'LeadpageSplitTestV2', 'LeadpageSplitTestV1') |
_meta |
MetaMeta information about the resource. |
CreateLeadpageV3
| CreateLeadpageV3 | |
|---|---|
redirect |
Redirect?Leadpage redirect configuration. |
googleAnalyticsId |
String? |
name |
StringA friendly name for the resource. |
googleAnalytics4Id |
String? |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
forms |
List?[String]A list of Hydra Form UUIDs that are used by the resource, if any. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template from which the resource was created, if any. |
slug |
String?A URL-safe string to be used as the public path for the page. If not specified, a suitable value is constructed from the page's name. |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
CreateLeadpageV2
| CreateLeadpageV2 | |
|---|---|
redirect |
Redirect?Leadpage redirect configuration. |
name |
StringA friendly name for the resource. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template on which the page is based, if any. |
slug |
String?A URL-safe string to be used as the public path for the page. If not specified, a suitable value is constructed from the page's name. |
CreateLeadpageV1
| CreateLeadpageV1 | |
|---|---|
redirect |
Redirect?Leadpage redirect configuration. |
name |
StringA friendly name for the resource. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template on which the page is based, if any. |
slug |
String?A URL-safe string to be used as the public path for the page. If not specified, a suitable value is constructed from the page's name. |
BlogPostTemplate?
| BlogPostTemplate? | |
|---|---|
id |
StringThe ID for the blog post template page. |
name |
String?The friendly name for the blog post template page. |
SiteNotFound?
| SiteNotFound? | |
|---|---|
id |
StringThe ID for the 404 page. |
name |
String?The friendly name for the 404 page. |
SiteV3
| SiteV3 | |
|---|---|
conversions |
Integer?The total number of converions this content has received. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
blogPostTemplate |
BlogPostTemplate?The blog post template. |
conversionRate |
Number?The conversion rate of this content. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
notFound |
SiteNotFound?The 404 page for a site. |
googleAnalyticsId |
String? |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
forms |
List[String]A list of Hydra Form UUIDs that are used by the resource. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
template |
String?The ID of the template from which the resource was created, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
shareKey |
StringThe key that may be used to share this site. |
googleAnalytics4Id |
String? |
views |
Integer?The total number of views received by this piece of content. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
name |
StringA friendly name for the resource. |
connectedBlog |
String?The current blog, if any, connected to the site. |
routes |
List[SiteRoute]A list of routes that will be used to serve the site. |
SiteRouteV3
| SiteRouteV3 | |
|---|---|
conversions |
Integer?The total number of converions this content has received. |
sectionTemplates |
List?[String]The section templates used by the content, if any. |
customTrackingId |
StringThe string used by the Center tracking code to identifyevents for the content with any applicable context. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
siteId |
String |
conversionRate |
Number?The conversion rate of this content. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
googleAnalyticsId |
String? |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
analyticsId |
StringThe ID used by the tracking code to identify the resource. This is not the same thing as the analytics property ID used elsewhere. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed a single label, Foundry allows multiple labels. |
forms |
List[String]A list of Hydra Form UUIDs that are used by the resource. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
StringThe domain to which any new editions of the content will be published. |
template |
String?The ID of the template from which the resource was created, if any. |
currentEdition |
String?The UUID of the currently published edition, if any. |
type |
String? |
googleAnalytics4Id |
String? |
views |
Integer?The total number of views received by this piece of content. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
splitTest |
ContentSplitTest?The split test to which the resource belongs, if any. |
slug |
String? |
name |
StringA friendly name for the resource. |
routeId |
String |
UpdateSiteV3
| UpdateSiteV3 | |
|---|---|
googleAnalyticsId |
String? |
name |
StringA friendly name for the resource. |
googleAnalytics4Id |
String? |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
connectedBlog |
String?The current blog, if any, connected to the site. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
forms |
List?[String]A list of Hydra Form UUIDs that are used by the resource, if any. |
leadValue |
Number?The value of a lead on this asset. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template from which the resource was created, if any. |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
Site
| Site | |
|---|---|
content |
Or[SiteV3, SiteRouteV3] |
kind |
Enum('SiteV3', 'SiteRouteV3') |
_meta |
MetaMeta information about the resource. |
CreateSiteV3
| CreateSiteV3 | |
|---|---|
googleAnalyticsId |
String? |
name |
StringA friendly name for the resource. |
googleAnalytics4Id |
String? |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
leadValue |
Number?The value of a lead on this asset. |
facebookInfo |
FacebookInfo?Bucket for facebook tracking info. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
forms |
List?[String]A list of Hydra Form UUIDs that are used by the resource, if any. |
connectedBlog |
String?The current blog, if any, connected to the site. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
template |
String?The ID of the template from which the resource was created, if any. |
googleAdsensePublisherId |
String?The client publisher ID used by AdSense, if any. |
Content
| Content | |
|---|---|
content |
Or[LeadbarV3, LeadboxSplitTestV2, LeadboxSplitTestV1, LeadpageSplitTestV1, LeadpageSplitTestV2, LeadpageV3, LeadpageV2, LeadpageV1, SiteRouteV3, SiteV3, LeadboxV2, LeadboxV3, LeadboxV1, BlogPost] |
kind |
Enum('LeadbarV3', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1', 'LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadpageV3', 'LeadpageV2', 'LeadpageV1', 'SiteRouteV3', 'SiteV3', 'LeadboxV2', 'LeadboxV3', 'LeadboxV1', 'BlogPost') |
_meta |
MetaMeta information about the resource. |
BlogPost
| BlogPost | |
|---|---|
content |
Or[BaseBlogPost] |
kind |
Enum('BlogPost') |
_meta |
MetaMeta information about the resource. |
BaseBlogPost
| BaseBlogPost | |
|---|---|
customTrackingId |
String?The string used by the LP tracking code to identifyevents for the content with any applicable context. |
metaTags |
Dictionary?Meta html tags for post ex. robots='noindex' |
description |
String?Meta description of Blog post |
author |
String? |
title |
StringTitle of Blog post |
socialSettings |
BlogSocialSettingsSchema? |
label |
List?[Integer]A list of 'labels' applied to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply one label to something, we now let you apply more than one. |
publishedStatus |
Enum('draft', 'published', 'scheduled', '')Published, Scheduled or draft? |
publishedAt |
DateTime? |
publicationDomain |
String?The domain to which any new editions of the content will be published. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
featuredImage |
BlogImageSchema? |
blogParent |
String?UUID of parent blog entity |
currentEdition |
String? |
slug |
String?Url fragment for post |
categories |
List?[String] |
name |
String?Name in listing |
BlogSocialSettingsSchema?
| BlogSocialSettingsSchema? | |
|---|---|
url |
URI?The URL to the image. |
socialPreviewImage |
BlogImageSchema?BlogImage for Social media preview image |
description |
String?Short blog post summary |
title |
String?Preferred title for Social media use |
BlogImageSchema?
| BlogImageSchema? | |
|---|---|
url |
URIThe URL to the image. |
altText |
String?The alt text for accessibility. |
assetUuid |
String?UUID from asset api. |
name |
String?Name from asset api |
UpdateLeadpageSplitTestV1
| UpdateLeadpageSplitTestV1 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
slug |
String?A URL-safe string to be used as the public path for the test. If not specified, a suitable value is constructed from the test's name. |
name |
StringA friendly name for the resource. |
UpdateLeadpageSplitTestV2
| UpdateLeadpageSplitTestV2 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
slug |
String?A URL-safe string to be used as the public path for the test. If not specified, a suitable value is constructed from the test's name. |
name |
StringA friendly name for the resource. |
UpdateLeadboxSplitTestV2
| UpdateLeadboxSplitTestV2 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
name |
StringA friendly name for the resource. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
UpdateLeadboxSplitTestV1
| UpdateLeadboxSplitTestV1 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
name |
StringA friendly name for the resource. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
SplitTest
| SplitTest | |
|---|---|
content |
Or[LeadpageSplitTestV1, LeadpageSplitTestV2, LeadboxSplitTestV2, LeadboxSplitTestV1] |
kind |
Enum('LeadpageSplitTestV1', 'LeadpageSplitTestV2', 'LeadboxSplitTestV2', 'LeadboxSplitTestV1') |
_meta |
MetaMeta information about the resource. |
CreateLeadpageSplitTestV1
| CreateLeadpageSplitTestV1 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
slug |
String?A URL-safe string to be used as the public path for the test. If not specified, a suitable value is constructed from the test's name. |
name |
StringA friendly name for the resource. |
CreateLeadpageSplitTestV2
| CreateLeadpageSplitTestV2 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
slug |
String?A URL-safe string to be used as the public path for the test. If not specified, a suitable value is constructed from the test's name. |
name |
StringA friendly name for the resource. |
CreateLeadboxSplitTestV2
| CreateLeadboxSplitTestV2 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
conversions |
Integer?The total number of converions this content has received. |
name |
StringA friendly name for the resource. |
views |
Integer?The total number of views received by this piece of content. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
visitors |
Integer?The total number of unique visitors that have viewed this content. |
conversionRate |
Number?The conversion rate of this content. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
publishedUrl |
URI?The public URL of the resource. If the resource is a split test variation, the URL points to the variation specifically, bypassing any cookies or distribution logic. |
currentEdition |
String?The UUID of the currently published edition, if any. |
lastPublished |
DateTime?If the content is currently published (i.e. currentEdition and publishedUrl are not null), then this is the same as the current edition's _meta.updated. If the content is not currently published, then this is the date and time of its last successful publication. |
CreateLeadboxSplitTestV1
| CreateLeadboxSplitTestV1 | |
|---|---|
status |
String?Whether the test is running, paused, etc. The value of this field does not matter to Foundry and callers are expected to use it consistently. |
name |
StringA friendly name for the resource. |
variations |
List[Variation]The variations that make up this split test. |
analyticsId |
String?The ID used by the tracking code to identify the resource. Defaults to the UUID of the resource itself, but can be specified for migration purposes. This is not the same thing as the analytics property ID used elsewhere. |
label |
List?[Integer]A list of 'labels' to apply to the resource, to give users a basic means of organizing their content. A label is just an integer that corresponds to a color. This is carried over from the legacy models with one slight tweak. Where the legacy models only allowed you to apply a single label to a resource, Foundry allows you to apply multiple labels. Defaults to an empty list if not specified. |
publicationDomain |
String?The domain to which any new editions of the content will be published. Defaults to the user's subdomain, but can be specified to allow publishing to custom domains. This value is validated against the user's currently connected domains. |
publicMetaId |
Regexp([0-9a-f]{1,14}:[0-9a-f]{1,14})The resource's legacy 'public meta id', which is needed to continue serving migrated assets. Used in conjunction with the formId to construct a UUID for the Leadbox. |
formId |
Regexp(\d{1,16})The resource's legacy form ID, which is needed to continue serving migrated assets. Used in conjunction with the publicMetaId to construct a UUID for the Leadbox. Note, this is not a Hydra UUID. |
DomainConfig
| DomainConfig | |
|---|---|
_meta |
MetaMeta information about the resource. |
targetDomain |
String?Target domain for redirection. |
blog |
String?Blog ID for the blog parent entity. |
blog_template |
String?Content ID for the blog template for blog posts. |
notFound |
String?Content ID for the 404 page for a domain. |
homepage |
String?Content ID for the root page (homepage) for a domain. |
BlogPostV1
| BlogPostV1 | |
|---|---|
content |
Or[BaseBlogPost] |
kind |
Enum('BlogPost') |
_meta |
MetaMeta information about the resource. |
BaseBlogAuthor
| BaseBlogAuthor | |
|---|---|
blogParent |
String?UUID of parent blog entity |
name |
StringBlog author's name |
BlogAuthor
| BlogAuthor | |
|---|---|
content |
Or[BaseBlogAuthor] |
_meta |
MetaMeta information about the resource. |
BlogCategory
| BlogCategory | |
|---|---|
blogParent |
String?UUID of parent blog entity |
visible |
Boolean?Setting to hide a category from public display, but use for organizational use |
slug |
String?Url fragment for category |
name |
StringName of Blog category |
uuid |
String? |
BaseBlog
| BaseBlog | |
|---|---|
publishedSite |
String?UUID of site entity that this blog is currently published |
name |
StringName of the blog |
settings |
Dictionary?Any global blog settings that don't have their own property |
site |
String?Deprecated in favor of published_site |
basePath |
String?Base path for a blog's root. |
connectedSite |
String?UUID of site entity that this blog is currently connected |
domain |
String?Root domain |
description |
String?Description of Blog |
Blog
| Blog | |
|---|---|
content |
Or[BaseBlog] |
_meta |
MetaMeta information about the resource. |
Blog
State
This section outlines the ways that blogs connect with sites.
Blog Connected Not Published
State in which a blog has been connected to a site, but has not yet been published while the blog is attached. The blog pages exist within builder, but are not yet live.
Site
connectedBlogis set to the Blog'sId- Provides link target for manage post links
- Used for setting Domain Blog field on publish
Blog
connectedSiteis set to the Site'sId- Linking to builder page for connected Site
- Preventing blogs connected to sites from appearing in the Connect Blog dropdown in builder when connecting a blog to a site.

Blog Connected and Published
State in which a blog has been connected to a site and then the site has been published with the blog attached. The Blog pages exist within builder and are live on the web.
Blog
publishedSiteis set to the connected Site'sId- Used in
museto provide links to "view blog" and "view post" buttons - Lets
museknow if a blog is live or not, activates certain links to live versions of posts/blogs if set
- Used in
Domain
Blogproperty is set from Site'sconnectedBlog(which was set from the Blog Entity's Id)- used to target blog for serving actions

Blog Disconnected and Published
State in which the Blog has been published and is still live on the web, but the pages within builder have been deleted. Usually this is a precursor to republishing without an attached blog, or when switching blogs on a site.
Site
connectedBlogis set to null. Domain'sBlogproperty is not affected by this change. It is still set to the previous state until the Site is republished without a connected Blog.
Blog
connectedSiteis set to null

Blog Posts
Saving Posts
If you make changes to a blog post, they will be saved immediately on the blog post object.
Other than the current_edition and the published_at fields, the most of the state of the blog post object will not affect your published pages.
However, your post title, categories, authors, even post content HTML are saved directly on the blog post itself
Publishing Posts
From muses perspective, to publish a post you:
- Make a
PUTrequest to save your post data - Make a new (non preview) edition
Then foundry goes through the regular publishing flow, setting the current edition of the blog post to the newly published edition
Previewing Posts
From muses perspective, to preview a post, you simply:
- Make a
POSTrequest to create a new edition with thepreviewOnlyflag astrue - Foundry then returns a
previewUrlfor muse toiframein
Site Previews
We serve site previews through pageproxy. This document outlines how. This isn't very relevant for non-site previews.
Site Preview URL Schema
Preview URLs will be built to match this schema.
//<users domain>/_preview/<preview_id><path>
Where:
- The request scheme is not defined (it will be HTTPS though)
- The users domain is whatever foundry decides depending on the page
- Unpublished pages will likely have their lpages.co domain
- Published pages will use their own domain (be it custom or
lpages.co)
- The
/_preview/prefix ensures there wont be conflicts - The
preview_idmatches the UUID of aSitePreview - The path is whatever path we are actually trying to access
Examples - About Page:
//mysite.lpages.docker/_preview/Jz8SCt9YnfETtaXBsAuy63/about/
- Home Page:
//mysite.lpages.docker/_preview/Jz8SCt9YnfETtaXBsAuy63/
Site Previewing Process Overview
This process will only affect the way we create and serve site previews. Previewing anything else will use the old process.
Creating a preview
- User hits the preview button
- Builder then creates a
SiteEditionin foundry withpreview_only=True-
POST <https://api.leadpages.io/content/v1/sites/><site_id>/editions
-
- The
publish_previewmethod is called, which spawns abuild_site_edition_previewtask - Foundry goes through the process of building out all of the child
SiteRoutesas well as their respectiveSiteRouteEdition - A unique
SitePreviewobject that is associated with this previewSiteEditionand contains all the references to each of the relatedSiteRouteEditionobjects - Each of these child
SiteRouteEditionsare "published" by being sent to forge. We include the nullable fieldpreviewIdon each BuildForgeEditionRequest. - Forge adds the
publicationDomainand thepreviewIdto the content draft in thecontentDraft.publishDataobject. - Crucible reads from this
publishDataobject and builds links in the makeLinkDataCompiler function according to the Site Preview URL Schema
- Note that because this is served in an
iframeallatag targets must be set to_selfor clicking on links will move the whole browser tab instead of just theiframe.- While the pages are being built, builder will continue requesting
the status of the new
SiteEditionuntil it is completed (either successfully or unsuccessfully). Thebuild_site_edition_previewtask will wait for each edition to complete. - Once the pages are done the
SiteEditionresponse from foundry will have apreviewUrlfield that will point to the home page of the site preview.
- While the pages are being built, builder will continue requesting
the status of the new
Serving a preview
This process does not check the domain at all and technically any valid LP domain can serve any users preview.
- A request comes in for a preview page
- Pageproxy treats this like any other serving action.
- Pageproxy checks the domain with foundry to ensure that it exists
- Pageproxy then calls foundry with the
domainandpath -
POST /content/v1/serving-actions
- Foundry tries to build a serving action
(here).
If the
pathmatches the expected preview schema we will serve it withServingAction.for_site_preview. for_site_previewfinds theSitePreviewentity and checks the path against the route slugs it knows. If it finds one, then it serves thatSiteRouteEdition- If it doesn't find a page that matches the slug, it will check if
the user has a blog and see if the path matches a blog route. If it
does match we will serve that page as a
serve-templated-assetserving action. This will use the template from the relevant site route edition as well as the template values from the latest blog posts. - If the path doesn't match anything we will return a 404 page from the site
Adding this process with non-site entities
For now, nothing is forcing us to refactor anything that doesn't relate to sites. So I consider this to be out of scope.
If we eventually find a reason to do this we could make a BasePreview
class, and make SitePreview a child of it. BasePreview would likely
have to be a PolyModel.
We would have to figure out a different way to replace all of the
ServingAction.for_* methods. Possibly refactoring a lot of the
ServingAction class to split out finding editions from serving them.
Publishing
There are several content types in our system (e.g. leadpages, sites, site routes, leadboxes (popups), leadbars, etc.). Each has a slightly different publishing flow.
Publishing Sites
This is the normal flow from builder when you hit the publish button when editing a site. This flow is incredibly complex and often has steps running in parallel. This is a very rough outline to hopefully get someone started.
Although sites are a bit different from the other content types, they do share a lot of common logic when publishing so this will be relevant even if you are specifically interested in how leadboxes are published.
Builder creates a new edition with the endpoint
SiteEditions.on_post- Request has a
sourcewhich is thepageJSON - Builder doesn't seem to ever send
htmlin this request - If the request has the
previewOnlyflag set, this will kick off a preview, which is a different process (but shares a lot of common logic) This includes
routeswhich are a list of references to the pageJSON and slugs- Some routes have a special purpose and cannot be directly routed to (e.g. blogs templates, 404 pages)
- Request has a
SiteEdition.publish- called with
recompile=False(Not sure when this is true) - called with the
requestargument set to the request from builder. - Uploads the pageJSON to google cloud bucket, setting the
Edition.sourcefield Builds out all of the children routes
- This includes creating
SiteRouteV3entities for each of theroutesdefined in the request.
- This includes creating
- called with
Edition.publish- Because
recompile=Falseand therequestwas provided. All this does is set some attributes and callupload_source_and_preview
- Because
upload_source_and_preview-
sourceis the pageJSON and comes from the request -
previewis fromrequest.htmland is generallynull(maybe always null) - When publishing a site this function just calls
content.build_editionwhich callsForgeBase.build_edition_signature
-
content.build_edition_signatureis overridden byForgeBase.build_edition_signature- This is not obvious, its because
SiteV3inheritsForgeBaseandSite
- This is not obvious, its because
ForgeBase.build_edition_signature- Just calls
forge.tasks.build_forge_edition
- Just calls
forge.tasks.build_forge_editionbuilds aBuildForgeEditionRequestand sends it off to forge through the queueForge receives this task from the queue and does its magic
- Grabs the editions pageJSON from
BuildForgeEditionRequest.json_url(theEdition.sourcefield) - Compiles the editions pageJSON into an HTML file
- Uploads the HTML file to the
BuildForgeEditionRequest.html_url(theEdition.previewfield) - Forge replies through the queue
- Grabs the editions pageJSON from
Blacksmith (a foundry sidecar defined in
foundry.v1.forge.daemon.Blacksmith) receives the message and callsforge.tasks.handle_forge_replyforge.tasks.handle_forge_replychecks to see if the edition failed or not, setting the status accordingly. If it was successful it creates a task to calleditions.tasks.publish_editionBack in a foundry worker, we run
editions.tasks.publish_editionwith the edition uuid. Remember this process is not linear and because we are publishing a site we are also publishing editions for each of our site routes.- If the edition is a preview, we set it as a success and exit.
- We call all of the publish hooks (
pre_publish_hook,publish_hook,post_publish_hook) these differ a little depending on the type of content we are building.
Each site route goes through the publish process simultaneously:
**SiteRouteEdition**._pre_publish_hook- If this
SiteRouteEditionis a blog feed template, we update the base path on the blog to match its slug
- If this
**SiteRouteEdition**._publish_hook→Edition._publish_hook→EditionBase._publish_hook- Some things are set and data is validated. Most importantly
we set the
SiteRouteV3.current_editionto thisSiteRouteEdition
- Some things are set and data is validated. Most importantly
we set the
**SiteRouteEdition**._post_publish_hook- If we are the "not found" page or the "home page" we update
the connected
DomainConfigentities fields to point to our relatedSiteRouteV3entity. - Then the cache is busted for this route.
- If we are the "not found" page or the "home page" we update
the connected
At the same time the
SiteEditiongoes through the publish process**SiteEdition**._pre_publish_hookSets up the blog (if the site has a connected blog)
- Ensures that the blog is associated with the appropriate domain and the domain is associated with the blog.
Waits for all of the child editions to be published.
- If any of the site routes fail to be published, we say the whole site edition failed.
**SiteEdition**._publish_hook- Sets the related
SiteV3.routesfield to theSiteEdition.routesvalue - Sets up the sitemap and
ads.txtbuckets on the edition so we can serve those files later - Runs the parent classes
_publish_hookfunctions
- Sets the related
**SiteEdition**._post_publish_hookSets up the related
DomainConfigto match our routes with_commandeer_domain- this overrides the domains home page, not found page, and blog
Unpublishes the previous edition
Unpublishes the blog (if one was connected)
Busts the cache
The cache busting process also involves pre-populating the cache in Pageproxy and by creating a new
ServingActionin our database (which is essentially another cache). This means that no additional work needs to be done when the user first requests a page that was just published.During this whole process, builder was repeatedly requesting the status of the
SiteEditionwe just created. Once the status is no longerpendingbuilder will notify the user that the page has been built and now is available to be served through pageproxy/foundry.