All API endpoints require the following query string parameters. These parameters must always be present on the query string, even when using the POST version of the APIs.
Parameter | Required? | Type | Multiples? | Notes |
---|---|---|---|---|
apiUser |
string |
Provided by Vendasta | ||
apiKey |
string |
Provided by Vendasta |
All API responses will be a JSON dictionary of the form:
{ "statusCode": 200, "responseTime": 13.12, "version": "1.1", "requestId": "5289947b00ff0b5f9a70d6c8f70001737e726570636f72652d70726f64000170726f642d312d37393400010139", "message": "A human-readable message.", # optional "deprecationWarnings": {}, # optional "data": {} # the actual API response data }where:
statusCode
responseTime
version
requestId
message
deprecationWarnings
data
Note
The API responses below indicate the data
portion of the response.
Note
Where multiple arguments are allowed, use repeated parameter names. E.g., foo=1&foo=2&foo=3
.
Note Certain data types require particular serialized forms:
datetime
has the form 2012-12-13T14:32:41Z
date
has the form 2012-12-13
time
has the form 14:32:41Z
boolean
has the formtrue
or false
Important Our APIs only accept a maximum url length
of 2,000 characters. If providing a large number of parameters, especially repeated parameters,
use the POST
form of API to guard against surpassing this limit.
For API endpoints denoted as "supports paged results", the response dictionary will have more information:
{ "statusCode": 200, ..., "data": ['a', 'b' , 'c'], "nextUrl": "https://www.example.com/abc123?page=998877", "nextQueryString": "page=998877", "totalResults": 213, "numberFoundAccuracy": 100 }where:
data
nextUrl
null
;
depending on the particular endpoint, it is also possible that the nextUrl
key does not even appear in the dictionary. In either case, this signifies that
there are no further results.
Important You must append your
apiUser
and apiKey
to the nextUrl
before
submitting the request; these values are explictly suppressed for security reasons.
nextQueryString
nextUrl
for convenience.
This is useful if you need to push the paging information to the browser (e.g., for
an Ajax-driven "next page" action) but want to protect the hostname.
totalResults
numberFoundAccuracy
totalResults
will only be an estimation.
This is only supported by certain endpoints and may not be present.
Unless otherwise noted, a 200 response code indicates success and a 500 response code indicates a server error. In general, 200-series responses are used to indicate success, 400-series responses are used to indicate client errors, and 500-series responses are used to indicate server errors. 400-series errors often contain a message with a description of the client error.
Each endpoint has a version number which consists of a major version and a minor version
(e.g., v1.1
).
As non-breaking changes are introduced, the minor version will increase. Non-breaking changes
include items like new optional parameters and new entries in dictionaries. It is important
that your implementation be able to handle these sorts of adjustments automatically.
If a breaking change is required, a new endpoint will be created with a new major version number (the major version number is included in the url path itself). When this occurs, the old version will be marked as deprecated, however it will continue to operate. If any formal sunsetting of the old endpoint is planned, this will be communicated to you via announcement and migration time will be allotted.
Note
When an endpoint has been marked as deprecated,
a deprecationWarnings
key will appear in the top-most response dictionary.
Note Version adjustments (major and minor) occur on individual endpoints, not for the entire suite of endpoints.
Webhooks allow our servers to push content to you as soon as possible. To use webhooks, you must build a handler on your server and configure the url of the handler on https://partners.vendasta.com.
Content will be sent to this url using a POST
method.
The content of the POST
will be a JSON-encoded dictionary, with the following
basic format:
{ "event": "some-event-code", "messageId": "cb7beb99090a4f5f8406a43ae9f56d88", "version": "1.1", "publishedDateTime": "2014-12-13T14:15:16Z", "data": {} # the actual webhook content }where:
event
messageId
version
data
block.
publishedDateTime
data
A message will be considered to be successfully delivered if your server returns a status code in the range 200-299. All other responses will be considered failures. If your server returns a 401 or 403, no retries will be attempted, otherwise delivery will be retried. Unless otherwise noted, the retry policy will attempt after 5 seconds, 10 seconds, 20 seconds, 40 seconds, 80 seconds etc. At least one delivery per day will be attempted, however, retries will end 7 days after the delivery was originally attempted.
Note No guarantee is made about the order of the messages, especially when retrying is in effect. Your handler must have enough logic to handle out of order messages as well as the small possibility of duplicate message delivery.
To prevent malicious attempts from other parties, it is possible for our servers to sign the webhook message using a shared cryptographic signing key. Your signing key can be configured at https://partners.vendasta.com.
When the signing key is configured, we will compute the signature based on the raw
content of the HTTP POST
body (not the headers). Make sure that you
strip any leading and trailing whitespace before computing the signature; the first
character will be "{
" and the last character will be "}
".
The signing technique follows the HMAC specification defined by RFC-2104, using a SHA1 hash. In Python code, the signing process is performed by the following code:
import hmac import sha payload = '' # the body of the HTTP POST signing_key = '' # the shared cryptographic key configured at https://partners.vendasta.com signature = hmac.new(signing_key, payload.strip(), sha.sha).hexdigest()
Once the signature is computed, you can compare it to the signature on the
header X-Vendasta-HMAC
found in the HTTP POST
headers.
If your computed signature matches the signature in the header, the message
is genuine.
V3 External APIs used for managing Sites.
A single microsite is specified using a JSON dictionary encoding. The dictionary for a single microsite contains all the details necessary to create the microsite, including titles, headings, images, videos, pages, etc.
POST https://presence-builder-api.vendasta.com/api/v3/site/create/
Parameter | Required? | Type | Multiples? | Notes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
identifier
|
string
|
A short ID for the microsite. Must be unique across the entire partner. One-to-one with a particular microsite. must be unique | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
accountGroupId
|
string
|
An account group ID. An account group will be created if an account group ID is not specified. If an accountGroupId is specified, the following fields will be ignored (though they are still required, dummy values may be provided): address , city , state , country , zip , companyName , latitude , longitude , marketId , taxId , workNumber , website . These values will be pulled from the current data for the account group specified by the given accountGroupId .
must be a valid account group
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
address
|
string
|
A street address | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
announcement
|
string
|
An announcement that is intended to be updated frequently and appears prominently in a call-to-action location.
DEPRECATED:
This field is deprecated.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
callTrackingNumber
|
string
|
The list of call tracking numbers. Should be formatted for display. If a valid country code is given, phone number is formatted according to local phone number format. E.g., if 'CA' is provided as country, phone number is formatted as (306) 555-5555 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
city
|
string
|
The name of a city | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color
|
string
|
The primary color for the microsite. For hex values, you must include the "#" leading character. E.g., "#99CC00". must be a valid hex color | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
companyName
|
string
|
The name of the microsite appears in the header of each page. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
country
|
string
|
A country name or 2 character code. If valid country name is provided, it is converted to corresponding country code. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customDomain
|
string
|
A custom domain e.g. "customDomain" : "m.abc.com". Appropriate setup on the customer side needs to be performed to make this active. must be a valid url | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customerIdentifier
|
string
|
A partner's microsite identifier. must be unique | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
email
|
string
|
An e-mail address must be a valid email address | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
facebookUrl
|
string
|
A link to a Facebook Page associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
filename
|
string
|
Default: "unknown" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
foursquareUrl
|
string
|
A link to a Foursquare Venue associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
googleplusUrl
|
string
|
A link to a YouTube channel associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
host
|
string
|
Host for the slug to be appended to. Must be one of the valid partner's hosts that uses slugs. If not provided, the first host (default) will be used. must already exist | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hours
|
string
|
The hours attribute is used to specify the Hours of Operation section, if applicable. The attribute is a nested JSON dictionary, yielding something like the following: "hours": { "monday": {"open": "9:00 AM", "close": "5:00 AM"}, ...}Each day of the week can have an open and a close string, plus an open2 and a close2 string for split hours (e.g., "9:00AM - 12:00PM, 1:00PM - 5:00PM"). Additionally, each day of the week can support an arbitrary note. There are also some attributes specified globally: open24, holidays, and other. open24 is a boolean flag, and needs to be encoded like the following: "open24": true (or) "open24": falseHours dictionary attributes:
"hours": { "monday": { "open": "9:00 am", "close": "5:00 pm", "note": "closed for lunch" }, "tuesday": { "open": "9:00 am", "close": "5:00 pm" }, "friday": { "open": "9:00 am", "close": "5:00 pm" }, "wednesday": { "open": "9:00 am", "close": "5:00 pm" }, "thursday": { "open": "9:00 am", "close": "5:00 pm", "open2": "6:00pm", "close2": "9:00pm" }, "holiday": "Closed for stat holidays", "open24": false }Note the above example of split hours on Thursday. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
instagramUrl
|
string
|
A link to a Instagram Profile associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
latitude
|
float
|
E.g., "45.234887".
Must be on the range [-90.0, 90.0]. If specified, longitude must
also be specified.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
layout
|
string
|
The layout to use for the website. Choices are: 'short', 'tall', 'responsive', and 'location'. Default: "location" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
linkedinUrl
|
string
|
A link to a LinkedIn Profile associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logoUrl
|
string
|
E.g., "http://www.example.com/foo.png". The logo will be read and imported into our system. Each batch import will provoke a check to see if the image has been updated and requires re-import. must be a valid image | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
longitude
|
float
|
E.g., "-58.245234".
Must be on the range [-180.0, 180.0]. If specified, latitude must
also be specified.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
marketId
|
string
|
Determines which market is set for the account. Takes Market Key value from list of markets. must be a valid market id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
notificationUrl
|
string
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
page
|
string
|
The pages attribute is used to identify the set of pages for the microsite, as a list of page dictionaries. You must have at least 1 page, but you may not exceed 15 pages per microsite. When updating a microsite page, the slug attribute is used to identify the existing page. If a slug is used that is not present, a new page with that slug will be created. If a slug that previously existed is not in the pages list, the old page will be deleted and will return a 404 on subsequent requests. If the slug matches an existing page, that page will be updated with the new values. Page dictionary attributes (* means required):
Default Page If a page is not supplied, the default page is as follows: "page": [{ 'slug': 'home', 'template': 'Custom', 'tab_name': 'Home', 'title': 'Home', 'h1': 'Home', }] Images The images attribute is used to specify a list of images for an Images page. The list can either be a list of string urls, or a list of dictionaries depending on how much you wish to specify. You can specify up to 20 images per Images page. JPG, GIF, PNG, and WEBP images are supported. An example images specification is as follows: "images": [ "http://www.example.com/img1.png", "http://www.example.com/img2.jpg", "http://www.example.com/img3.gif" ]These images will be imported into our system and served from our servers. On subsequent batch imports, we will check to see if the images have been updated and re-import them if necessary. It is an important optimization for the server serving the original images to emit Etag or Last-Modified headers. These headers will be used to determine if an image has been updated or not. Image dictionary attributes (* means required):
Videos The videos attribute specifies a list of videos to appear on the Videos page. The list can either be a list of string urls, or a list of dictionaries depending on how much you wish to specify. Note that video and thumbnail content are served from the urls provided; these items are not imported into our system. Video dictionary attributes (* means required):
"videos": [ "http://www.youtube.com/watch?v=zzfQwXEqYaI", "http://www.youtube.com/watch?v=ntT7v47RIds" ]Alternatively, if you want to specify thumbnails, captions, duration, etc., you can provide a list of video dictionaries: "videos": [ { "url": "http://www.example.com/vid1.mp4", "thumbnail_url": "http://www.example.com/th1.jpg", "title": "Watch us in action!" }, { "url": "http://www.example.com/vid2.mp4", "title": "Last Thursday's Outing" }] Coupons The coupons attribute specifies a list of coupons to appear on the Coupons page. The list is a list of coupon dictionaries. Note that the coupon image is served from the url provided; this item is not imported into our system. Coupon dictionary attributes (* means required):
"coupons": [ { "end": "2011-11-30", "title": "Save 20 %", "detail": "On any purchase", "category" : "Auto", "expiry": "2011-11-30", "start": "2011-08-15", "image_url": "http://example.com/image.png" }, { "title": "Buy one get one free every day after 5pm" }]Default: [] Maximum instances: 15 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pinterestUrl
|
string
|
A link to a Pinterest Profile associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
place
|
string
|
A colloquial name that may be used in keywords, etc. E.g., "Big Apple" or "Twin Cities". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rssUrl
|
string
|
A link to a blob or an RSS feed associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
service
|
string
|
A comma separated list of likely search terms for the business. Used in meta-content for SEO. e.g. "plumbing, sewer service, commercial plumbing". This will validate the service arg accepts up to 3 items | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
slug
|
string
|
For a slug "this-is-the-slug", the url for the microsite becomes: "http://m.partner.com/this-is-the-slug/". One-to-one with a particular microsite. Can only be letters, numbers, and dashes. When the provided slug already exists for the host, a unique slug is generated. The desired slug is used in combination with either the sites city, zip or if all else fails a random identifier. E.g., if the slug "this-is-the-slug" exists, then a unique slug "this-is-the-slug-portland" is generated, and the url for the microsite becomes: "http://m.partner.com/this-is-the-slug-portland/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ssoToken
|
string
|
An SSO token to grant authorization for this site. Maximum length of 200. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
state
|
string
|
A state name or 2 character code. It is also validated if valid country is provided. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
tagline
|
string
|
A short tagline that appears in the header beneath the name. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
taxId
|
string
|
must be a valid tax id Maximum instances: 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
twitterUrl
|
string
|
A link to a twitter profile associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
validateOnlyFlag
|
boolean
|
If provided, the site will not actually be committed, but the arguments will be validated to ensure the site creation would succeed. Default: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
website
|
string
|
The company website, if one exists other than the microsite. Must start with http:// or https:// must be a valid url | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
workNumber
|
string
|
The list of work phone number for the site. Should be formatted for display. If a valid country code is given, phone number is formatted according to local phone number format. E.g., if 'CA' is provided as country, phone number is formatted as (306) 555-5555 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
youtubeUrl
|
string
|
A link to a YouTube channel associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
zip
|
string
|
A zip or postal code |
Returns dictionary of status code integer to a string message
An example response from a successful site creation call. If any deprecated fields were used in the create call, the will be listed under deprecationWarning.
Note the slug
that you request may not be the final slug, so ensure that you
check this response to know what the final slug that was used.
"data": { "data": { "accountGroupId": "partner-central-ui", "identifier": "M-42879345", "message": "Site has been created/updated successfully.", "msid": "MS-FAKEMSID", "slug": "joes-plumbing-and-heating", "warnings": [ "Error processing page \"contact\" for site \"MS-ABCD123\" and partner \"ABC\". Page will be skipped.", "The following image urls could not be uploaded: \"http://www.example.com/my-image.jpg\"" ] }, "deprecationWarning": { "announcement": "This field is deprecated." }, "requestId": "53bc6f0e00ff05131cc9a1e9530001737e6d6963726f736974652d7465737400016461696c79000100", "responseTime": 741, "status": 200, "version": "3.1" }
A single microsite is specified using an msid and a JSON dictionary encoding. The dictionary for a single microsite contains all the details necessary to update the microsite; including titles, headings, images, videos, pages, etc.
POST https://presence-builder-api.vendasta.com/api/v3/site/update/
Parameter | Required? | Type | Multiples? | Notes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
identifier
|
string
|
A short ID for the microsite. Must be unique across the entire partner. One-to-one with a particular microsite. Validate that we can get an msid using the pmsid and pid/apiuser passed in. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
page
|
string
|
The pages attribute is used to identify the set of pages for the microsite, as a list of page dictionaries. You must have at least 1 page, but you may not exceed 15 pages per microsite. When updating a microsite page, the slug attribute is used to identify the existing page. If a slug is used that is not present, a new page with that slug will be created. If a slug that previously existed is not in the pages list, the old page will be deleted and will return a 404 on subsequent requests. If the slug matches an existing page, that page will be updated with the new values. Page dictionary attributes (* means required):
Default Page If a page is not supplied, the default page is as follows: "page": [{ 'slug': 'home', 'template': 'Custom', 'tab_name': 'Home', 'title': 'Home', 'h1': 'Home', }] Images The images attribute is used to specify a list of images for an Images page. The list can either be a list of string urls, or a list of dictionaries depending on how much you wish to specify. You can specify up to 20 images per Images page. JPG, GIF, PNG, and WEBP images are supported. An example images specification is as follows: "images": [ "http://www.example.com/img1.png", "http://www.example.com/img2.jpg", "http://www.example.com/img3.gif" ]These images will be imported into our system and served from our servers. On subsequent batch imports, we will check to see if the images have been updated and re-import them if necessary. It is an important optimization for the server serving the original images to emit Etag or Last-Modified headers. These headers will be used to determine if an image has been updated or not. Image dictionary attributes (* means required):
Videos The videos attribute specifies a list of videos to appear on the Videos page. The list can either be a list of string urls, or a list of dictionaries depending on how much you wish to specify. Note that video and thumbnail content are served from the urls provided; these items are not imported into our system. Video dictionary attributes (* means required):
"videos": [ "http://www.youtube.com/watch?v=zzfQwXEqYaI", "http://www.youtube.com/watch?v=ntT7v47RIds" ]Alternatively, if you want to specify thumbnails, captions, duration, etc., you can provide a list of video dictionaries: "videos": [ { "url": "http://www.example.com/vid1.mp4", "thumbnail_url": "http://www.example.com/th1.jpg", "title": "Watch us in action!" }, { "url": "http://www.example.com/vid2.mp4", "title": "Last Thursday's Outing" }] Coupons The coupons attribute specifies a list of coupons to appear on the Coupons page. The list is a list of coupon dictionaries. Note that the coupon image is served from the url provided; this item is not imported into our system. Coupon dictionary attributes (* means required):
"coupons": [ { "end": "2011-11-30", "title": "Save 20 %", "detail": "On any purchase", "category" : "Auto", "expiry": "2011-11-30", "start": "2011-08-15", "image_url": "http://example.com/image.png" }, { "title": "Buy one get one free every day after 5pm" }] |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
slug
|
string
|
For a slug "this-is-the-slug", the url for the microsite becomes: "http://m.partner.com/this-is-the-slug/". One-to-one with a particular microsite. Can only be letters, numbers, and dashes. When the provided slug already exists for the host, a unique slug is generated. The desired slug is used in combination with either the sites city, zip or if all else fails a random identifier. E.g., if the slug "this-is-the-slug" exists, then a unique slug "this-is-the-slug-portland" is generated, and the url for the microsite becomes: "http://m.partner.com/this-is-the-slug-portland/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
address
|
string
|
A street address | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
callTrackingNumber
|
string
|
The list of call tracking numbers. Should be formatted for display. If a valid country code is given, phone number is formatted according to local phone number format. E.g., if 'CA' is provided as country, phone number is formatted as (306) 555-5555 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
city
|
string
|
The name of a city | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color
|
string
|
The primary color for the microsite. For hex values, you must include the "#" leading character. E.g., "#99CC00". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
companyName
|
string
|
The name of the microsite appears in the header of each page. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
country
|
string
|
A country name or 2 character code. If valid country name is provided, it is converted to corresponding country code. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customDomain
|
string
|
A custom domain e.g. "customDomain" : "m.abc.com". Appropriate setup on the customer side needs to be performed to make this active. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customerIdentifier
|
string
|
A partner's microsite identifier. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
email
|
string
|
An e-mail address | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
facebookUrl
|
string
|
A link to a Facebook Page associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
filename
|
string
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
foursquareUrl
|
string
|
A link to a Foursquare Venue associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
googleplusUrl
|
string
|
A link to a YouTube channel associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
host
|
string
|
Host for the slug to be appended to. Must be one of the valid partner's hosts that uses slugs. If not provided, the first host (default) will be used. Validates the host is one of the partner's configured hosts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hours
|
string
|
The hours attribute is used to specify the Hours of Operation section, if applicable. The attribute is a nested JSON dictionary, yielding something like the following: "hours": { "monday": {"open": "9:00 AM", "close": "5:00 AM"}, ...}Each day of the week can have an open and a close string, plus an open2 and a close2 string for split hours (e.g., "9:00AM - 12:00PM, 1:00PM - 5:00PM"). Additionally, each day of the week can support an arbitrary note. There are also some attributes specified globally: open24, holidays, and other. open24 is a boolean flag, and needs to be encoded like the following: "open24": true (or) "open24": falseHours dictionary attributes:
"hours": { "monday": { "open": "9:00 am", "close": "5:00 pm", "note": "closed for lunch" }, "tuesday": { "open": "9:00 am", "close": "5:00 pm" }, "friday": { "open": "9:00 am", "close": "5:00 pm" }, "wednesday": { "open": "9:00 am", "close": "5:00 pm" }, "thursday": { "open": "9:00 am", "close": "5:00 pm", "open2": "6:00pm", "close2": "9:00pm" }, "holiday": "Closed for stat holidays", "open24": false }Note the above example of split hours on Thursday. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
instagramUrl
|
string
|
A link to a Instagram Profile associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
latitude
|
float
|
E.g., "45.234887". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
layout
|
string
|
The layout to use for the website. Choices are: 'short', 'tall', 'responsive', and 'location'. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
linkedinUrl
|
string
|
A link to a LinkedIn Profile associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logoUrl
|
string
|
E.g., "http://www.example.com/foo.png". The logo will be read and imported into our system. Each batch import will provoke a check to see if the image has been updated and requires re-import. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
longitude
|
float
|
E.g., "-58.245234". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
marketId
|
string
|
Determines which market is set for the account. Takes Market Key value from list of markets. Checks to make sure that the marketId being passed in exists for the partner | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
notificationUrl
|
string
|
Validates the notification URL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pinterestUrl
|
string
|
A link to a Pinterest Profile associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
place
|
string
|
A colloquial name that may be used in keywords, etc. E.g., "Big Apple" or "Twin Cities". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rssUrl
|
string
|
A link to a blob or an RSS feed associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
service
|
string
|
A comma separated list of likely search terms for the business. Used in meta-content for SEO. e.g. "plumbing, sewer service, commercial plumbing". This will validate the service arg accepts up to 3 items | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ssoToken
|
string
|
An SSO token to grant authorization for this site. Maximum length of 200. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
state
|
string
|
A state name or 2 character code. It is also validated if valid country is provided. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
tagline
|
string
|
A short tagline that appears in the header beneath the name. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
taxId
|
string
|
Ensure the number of tax id values provided are not greater than the maximum allowed. Maximum instances: 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
twitterUrl
|
string
|
A link to a twitter profile associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
website
|
string
|
The company website, if one exists other than the microsite. Must start with http:// or https:// | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
workNumber
|
string
|
The list of work phone number for the site. Should be formatted for display. If a valid country code is given, phone number is formatted according to local phone number format. E.g., if 'CA' is provided as country, phone number is formatted as (306) 555-5555 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
youtubeUrl
|
string
|
A link to a YouTube channel associated with this microsite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
zip
|
string
|
A zip or postal code |
Returns dictionary of status code integer to a string message
An example of updating a Microsite. Call the Update API in the same way you would call the Create API, and change the fields you want to update on the site.
"data": { "data": { "accountGroupId": "partner-central-ui", "identifier": "M-42879345", "message": "Site has been created/updated successfully.", "msid": "MS-FAKEMSID", "warnings": [ "Error processing page \"contact\" for site \"MS-ABCD123\" and partner \"ABC\". Page will be skipped.", "The following image urls could not be uploaded: \"http://www.example.com/my-image.jpg\"" ] }, "deprecationWarning": { "announcement": "This field is deprecated." }, "requestId": "53bc6f0e00ff05131cc9a1e9530001737e6d6963726f736974652d7465737400016461696c79000100", "responseTime": 741, "status": 200, "version": "3.1" }
Delete a microsite.
POST https://presence-builder-api.vendasta.com/api/v3/site/delete/
Parameter | Required? | Type | Multiples? | Notes |
---|---|---|---|---|
msid
|
string
|
A short system defined ID assigned to a microsite during creation process An internal identifier that is unique across the entire product. |
Returns dictionary of status code integer to a string message
An example response from a successful Delete API call
"data": Success. The site is being deleted.
Search for microsites using a custom query. Not including the query parameter will result in all the microsites under the specified partner being returned. The search actually returns search documents, which do not necessarily encapsulate all data about a microsite. However, the data encapsulated should be more than enough for most purposes.
nextUrl
totalResults
POST/GET https://presence-builder-api.vendasta.com/api/v3/site/search/
Parameter | Required? | Type | Multiples? | Notes |
---|---|---|---|---|
query
|
string
|
Query used to search sites. | ||
pageSize |
int |
Must be a positive integer. |
Returns dictionary of status code integer to a string message
A list of microsite documents whose fields match the provided query.
"data": { "data": { "addReviewUrl": "http://pdqs.mobi/your-fantastic-slug/review/add/", "address1": "556 Joe's Road", "address2": "556 Joe's Street", "blurb": "Best plumbers ever", "city": "Detroit", "color": "#99CC00", "companyName": "Joe's Plumbing and Heating", "country": "US", "created": "2013-11-06 21:34:50.299297", "customerIdentifier": "jpah-8927", "email": "joe@joesplumbingandheating.com", "mappings": [ "west-coast.partner.com/joes-plumbing-and-heating-route-1", "west-coast.partner.com/joes-plumbing-and-heating-route-2" ], "marketId": "western-us", "msid": "MS-FAKEMSID", "phone": "555-5555", "pid": "ABC", "place": "Big Apple", "service": [ "plumbing", "sewer service", "commercial plumbing" ], "ssoToken": "joes-plumbing-and-heating-sso-token", "state": "NY", "updated": "2014-5-06 21:34:50.299297", "useWebsiteForFullSiteLink": true, "website": "http://www.joesplumbingandheating.com", "zip": "H0H 0H0" }, "numberFoundAccuracy": 100, "requestId": "fd4eb2fdbf7ff4c16ed7eda285b9dcb8c47c0d072c9b80108afeff55ea879c2cbc", "responseTime": 741, "status": 200, "totalResults": 1, "version": "3.0" }
Endpoints for dealing with Google My Business Insights.
This endpoint has been sunset. Get a list of Google My Business Insights entities for an account.
POST/GET https://presence-builder-api.vendasta.com/api/v3/googleMyBusinessInsights/get/
Parameter | Required? | Type | Multiples? | Notes |
---|---|---|---|---|
accountGroupId
|
string
|
An account group ID. | ||
endDate
|
date
|
The date for the end of the range of insights requested. Must be after the start date. | ||
startDate
|
date
|
The date for the start of the range of insights requested. |
These end-points are used for managing Social integration with Sites.
Removes the specified Site from the specified Facebook page. The More Info tab will be removed from the Facebook page.
POST https://presence-builder-api.vendasta.com/api/v2/facebookTab/remove/
Parameter | Required? | Type | Multiples? | Notes |
---|---|---|---|---|
facebookPageId
|
string
|
A short ID for the Facebook page. Assigned by Facebook to each unique page. | ||
identifier
|
string
|
A short ID for the microsite, must be unique across the entire import and must match previous imports for updates to work correctly. One-to-one with a particular microsite. | ||
msid
|
string
|
A short ID for the microsite. Assigned by VendAsta to each unique microsite. |
Returns dictionary of status code integer to a string message
An example response for removing the link between a Microsite and a Facebook Page
"data": { "facebookPageId": "12345678901", "identifier": "the-burger-dive", "msid": "MS-SOMEMSID" }
Adding an existing site to Facebook Page as More Info tab
POST https://presence-builder-api.vendasta.com/api/v2/facebookTab/add/
Parameter | Required? | Type | Multiples? | Notes |
---|---|---|---|---|
facebookPageId
|
string
|
A Facebook page identifier. To use the current API, either facebookPageId or facebookUrl must be specified but not both. | ||
facebookUrl
|
string
|
A Facebook page url To use the current API, either facebookPageId or facebookUrl must be specified but not both. | ||
facebookUserId
|
string
|
A Facebook user identifier. Optional. Only needed when current partner has no Facebook master user defined and Facebook page ID is present. | ||
identifier
|
string
|
A short customer defined ID for the microsite which identifies the microsite that is requested to be added to given Facebook page. To use the current API, either msid or identifier must be specified but not both. | ||
msid
|
string
|
A short system defined ID assigned to a microsite during creation process. To use current API, either msid or identifier must be specified but not both. |
Returns dictionary of status code integer to a string message
An example response for linking a Microsite to a Facebook Page. Note: If you pass in the Facebook URL instead of the Page ID, facebookPageId would be null and facebookUrl would have the URL.
"data": { "facebookPageId": "123456789012346", "facebookUrl": "null", "facebookUserId": "123456789012345", "identifier": "null", "msid": "MS-SOMEMSID" }