NAV
HTTP

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 String
The 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 ListingMeta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 String
The 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 ListingMeta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 String
The 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 ListingMeta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 String
The 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 ListingMeta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 String
The 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 ListingMeta
Meta 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 Meta
Meta 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 Meta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 String
The 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 ListingMeta
Meta 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 Meta
Meta 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 String
The 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 ListingMeta
Meta 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 Meta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 Meta
Meta 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 ListingMeta
Meta 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 String
publication_domain
slug String
slug

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 ListingMeta
Meta 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 String
Name 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 Meta
Meta 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 Meta
Meta 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 String
Name 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 Meta
Meta 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 ListingMeta
Meta 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 String
Blog author's name

Response

Body
content Or[BaseBlogAuthor]
_meta Meta
Meta 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 Meta
Meta 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 String
Blog author's name

Response

Body
content Or[BaseBlogAuthor]
_meta Meta
Meta 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 ListingMeta
Meta 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 ListingMeta
Meta 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 String
Title 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 Meta
Meta 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 Meta
Meta 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 String
Title 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 Meta
Meta 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 ListingMeta
Meta 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 Meta
Meta 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 String
The 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 ListingMeta
Meta 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 String
Name 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 String
Name 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 String
Name 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 String
Name 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 String
Name 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 ListingMeta
Meta 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 Meta
Meta 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 Meta
Meta 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 Boolean
Enable '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 Meta
Meta 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 String
The 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 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.
currentEdition String?
The UUID of the currently published edition, if any.
name String
A friendly name for the resource.

Variation

Variation
content String
The UUID of the Content representing a variation.
variation String
The 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 String
The 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 String
A 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 String
The 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 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.
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 String
The 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 String
The 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 String
The 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 String
The 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 String
The 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 String
A 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 String
The 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 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.
variations List[Variation]
The variations that make up this split test.
currentEdition String?
The UUID of the currently published edition, if any.
name String
A 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 String
The 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 String
The 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 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.
splitTest ContentSplitTest?
The split test to which the resource belongs, if any.
currentEdition String?
The UUID of the currently published edition, if any.
name String
A friendly name for the resource.

Meta

Meta
deleted DateTime?
When the resource was deleted.
updated DateTime
When the resource was last updated.
created DateTime
When the resource was created.
id String
The resource's unique identifier.
uri URI
The resource's absolute URI.

ListingMeta

ListingMeta
count Integer
The 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 Integer
The requested limit on the number of items.

CreateLeadboxV2

CreateLeadboxV2
name String
A 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 String
A 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 String
A 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 Meta
Meta 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 String
The 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 String
The 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 String
The bucket in which the object exists.
name String
The 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 String
The 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 String
The 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 String
The 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 String
A friendly name for the resource.

UpdateLeadbarV3

UpdateLeadbarV3
googleAnalyticsId String?
name String
A 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 Meta
Meta information about the resource.

CreateLeadbarV3

CreateLeadbarV3
googleAnalyticsId String?
name String
A 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 String
A 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 String
A 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 String
A 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 String
The 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 String
The 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 String
The 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 String
The 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 String
A URL-safe string used as the public path for the page.
name String
A friendly name for the resource.

Redirect?

Redirect?
desktopOnly Boolean
Whether to redirect all traffic or only desktop browsers.
target URI
The 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 String
The string used by the Center tracking code to identifyevents for the content with any applicable context.
name String
A friendly name for the resource.
views Integer?
The total number of views received by this piece of content.
shareKey String
The key that may be used to share this page.
analyticsId String
The 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 String
The 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 String
A 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 String
The string used by the Center tracking code to identifyevents for the content with any applicable context.
name String
A friendly name for the resource.
views Integer?
The total number of views received by this piece of content.
shareKey String
The key that may be used to share this page.
analyticsId String
The 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 String
The 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 String
A 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 String
The 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 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.
currentEdition String?
The UUID of the currently published edition, if any.
slug String
A URL-safe string used as the public path for the test.
name String
A 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 String
The 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 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.
currentEdition String?
The UUID of the currently published edition, if any.
slug String
A URL-safe string used as the public path for the test.
name String
A friendly name for the resource.

UpdateLeadpageV3

UpdateLeadpageV3
redirect Redirect?
Leadpage redirect configuration.
googleAnalyticsId String?
name String
A 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 String
A 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 String
A 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 Meta
Meta information about the resource.

CreateLeadpageV3

CreateLeadpageV3
redirect Redirect?
Leadpage redirect configuration.
googleAnalyticsId String?
name String
A 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 String
A 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 String
A 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 String
The ID for the blog post template page.
name String?
The friendly name for the blog post template page.

SiteNotFound?

SiteNotFound?
id String
The 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 String
The 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 String
The 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 String
The 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 String
The 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 String
A 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 String
The 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 String
The 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 String
The 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 String
A friendly name for the resource.
routeId String

UpdateSiteV3

UpdateSiteV3
googleAnalyticsId String?
name String
A 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 Meta
Meta information about the resource.

CreateSiteV3

CreateSiteV3
googleAnalyticsId String?
name String
A 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 Meta
Meta information about the resource.

BlogPost

BlogPost
content Or[BaseBlogPost]
kind Enum('BlogPost')
_meta Meta
Meta 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 String
Title 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 URI
The 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 String
A 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 String
A 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 String
A 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 String
A 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 Meta
Meta 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 String
A 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 String
A 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 String
A 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 String
A 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 Meta
Meta 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 Meta
Meta information about the resource.

BaseBlogAuthor

BaseBlogAuthor
blogParent String?
UUID of parent blog entity
name String
Blog author's name

BlogAuthor

BlogAuthor
content Or[BaseBlogAuthor]
_meta Meta
Meta 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 String
Name of Blog category
uuid String?

BaseBlog

BaseBlog
publishedSite String?
UUID of site entity that this blog is currently published
name String
Name 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 Meta
Meta 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

Blog

connect-not-published

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

Domain

connect-and-published

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

Blog

published-not-connected

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:

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:

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:

Examples - About Page:

//mysite.lpages.docker/_preview/Jz8SCt9YnfETtaXBsAuy63/about/

//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

  1. User hits the preview button
  2. Builder then creates a SiteEdition in foundry with preview_only=True
    • POST <https://api.leadpages.io/content/v1/sites/><site_id>/editions
  3. The publish_preview method is called, which spawns a build_site_edition_preview task
  4. Foundry goes through the process of building out all of the child SiteRoutes as well as their respective SiteRouteEdition
  5. A unique SitePreview object that is associated with this preview SiteEdition and contains all the references to each of the related SiteRouteEdition objects
  6. Each of these child SiteRouteEditions are "published" by being sent to forge. We include the nullable field previewId on each BuildForgeEditionRequest.
  7. Forge adds the publicationDomain and the previewId to the content draft in the contentDraft.publishData object.
  8. Crucible reads from this publishData object and builds links in the makeLinkDataCompiler function according to the Site Preview URL Schema

Serving a preview

This process does not check the domain at all and technically any valid LP domain can serve any users preview.

  1. A request comes in for a preview page
  2. Pageproxy treats this like any other serving action.
    1. Pageproxy checks the domain with foundry to ensure that it exists
    2. Pageproxy then calls foundry with the domain and path
    3. POST /content/v1/serving-actions
  3. Foundry tries to build a serving action (here). If the path matches the expected preview schema we will serve it with ServingAction.for_site_preview.
  4. for_site_preview finds the SitePreview entity and checks the path against the route slugs it knows. If it finds one, then it serves that SiteRouteEdition
  5. 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-asset serving action. This will use the template from the relevant site route edition as well as the template values from the latest blog posts.
  6. 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.