openapi: 3.0.0
info:
title: Live API
version: '2.0'
servers:
- url: https://cdn.yextapis.com/v2
paths:
/accounts/{accountId}/entities:
get:
operationId: listEntities
parameters:
- schema:
minLength: 0
type: string
name: accountId
in: path
required: true
- schema:
minLength: 0
type: string
description: A date in `YYYYMMDD` format.
name: v
in: query
required: true
- schema:
minLength: 0
type: string
description: |
Optional parameter to return fields of type **Markdown** as HTML.
- `false`: **Markdown** fields will be returned as JSON
- `true`: **Markdown** fields will be returned as HTML
name: convertMarkdownToHTML
in: query
required: false
- schema:
minLength: 0
type: string
description: |
Optional parameter to return fields of type **Rich Text** as HTML.
- `false`: **Rich Text** fields will be returned as JSON
- `true`: **Rich Text** fields will be returned as HTML
name: convertRichTextToHTML
in: query
required: false
- schema:
minLength: 0
type: string
description: |
Comma-separated list of Entity types to filter on. Example: `"location,event"`
Should be from the following types:
* `atm`
* `event`
* `faq`
* `financialProfessional`
* `healthcareFacility`
* `healthcareProfessional`
* `hotel`
* `hotelRoomType`
* `job`
* `location`
* `organization`
* `product`
* `restaurant`
OR the API name of a custom entity type.
name: entityTypes
in: query
required: false
- schema:
minLength: 0
type: string
description: Comma-separated list of field names. When present, only the fields listed will be returned. You can use dot notation to specify substructures (e.g., `"address.line1"`). Custom fields are specified in the same way, albeit with their `c_*` name.
name: fields
in: query
required: false
- schema:
minLength: 0
type: string
description: |
This parameter represents one or more filtering conditions that are applied to the set of entities that would otherwise be returned. This parameter should be provided as a URL-encoded string containing a JSON object.
For example, if the filter JSON is `{"name":{"$eq":"John"}}`, then the filter param after URL-encoding will be: `filter=%7B%22name%22%3A%7B%22%24eq%22%3A%22John%22%7D%7D`
**Basic Filter Structure**
The filter object at its core consists of a *matcher*, a *field*, and an *argument*.
For example, in the following filter JSON:
```
{
"name":{
"$eq":"John"
}
}
```
`$eq` is the *matcher*, or filtering operation (equals, in this example),
`name` is the *field* being filtered by, and
`John` is *value* to be matched against.
**Combining Multiple Filters**
Multiple filters can be combined into one object using *combinators*. For example, the following filter JSON combines multiple filters using the combinator `$and`. `$or` is also supported.
```
{
"$and":[
{
"firstName":{
"$eq":"John"
}
},
{
"countryCode":{
"$in":[
"US",
"GB"
]
}
}
]
}
```
**Filter Negation**
Certain filter types may be negated. For example:
```
{
"$not": {
"name": {
"$eq": "John"
}
}
}
```
This can also be written more simply with a `!` in the `$eq` parameter. The following filter would have the same effect:
```
{
"name":{
"!$eq":"John"
}
}
```
**Filter Complement**
You can also search for the complement of a filter. This filter would match entities that do not contain "hello" in their descriptions, or do not have a description set. This is different from negation which can only match entities who have the negated field set to something.
```
{
"$complement":{
"description":{
"$contains":"hello"
}
}
}
```
**Addressing Subfields**
Subfields of fields can be addressed using the "dot" notation while filtering. For example, if you have a custom field called **`c_myCustomField`**:
```
{
"c_myCustomField":{
"age": 30,
"name": "Jim",
}
}
```
While filtering, subfields may be addressed using the "dot" notation.
```
{
"c_myCustomField.name":{
"!$eq":"John"
}
}
```
Fields that are nested deeper may be addressed using dot notation, as well. For example, if **`name`** in the above example was a compound field with two subfields **`first`** and **`last`**, **`first`** may be addressed as **`c_myCustomField.name.first`**.
**Field Support**
Entity fields correspond to certain filter types, which support matchers. Going by the example above, the field **`name`** supports the `TEXT` filter type, which supports `$eq` (equals) and `$startsWith` (starts with).
**TEXT**
The `TEXT` filter type is supported for text fields. (e.g., **`name`**, **`countryCode`**)
| Filter Type |
Syntax |
Description |
| Full |
fieldName: {contains: $search} |
$search is the search string |
| Text |
fieldName: {$type: [$search,...]} |
$type is one of [contains,doesNotContain,startsWith,equalTo], $search is an array of search strings, combined with OR |
| Text |
fieldName: $type |
$type is one of [empty,notEmpty] |
| Number |
fieldName: {$type: $value} |
$type is one of [eq,lt,gt,le,ge], $value is the numeric value |
| Number |
fieldName: {$type: [$value1, $value2]} |
$type is one of [between], $value1 and $value2 are numeric values |
| Date |
fieldName: {$type: $value} |
$type is one of [eq,lt,gt,le,ge], $value is a string of "YYYY-MM-DD" formatted date |
| Date |
fieldName: $type |
$type is one of [empty,notEmpty] |
| Date |
fieldName: {$type: [$value1, $value2]} |
$type is one of [between], $value1 and $value2 are strings of "YYYY-MM-DD" formatted date |
| Categories |
fieldName: {$type: [$id,...]} |
$type is one of [includes,notIncludes], $id is an array of numeric category IDs, combined with OR |
| Categories |
fieldName: $type |
$type is one of [none] |
| Assets |
fieldName: {$type: [$id,...]} |
$type is one of [includes,notIncludes], $id is an array of numeric category IDs, combined with OR |
| Assets |
fieldName: $type |
$type is one of [none] |
| Country |
fieldName: {$type: [$country,...]} |
$type is one of [includes,notIncludes], $country is an array of country code strings, combined with OR |
| PrimaryLanguage |
fieldName: {$type: [$language,...]} |
$type is one of [is,isNot], $language is an array of language code strings, combined with OR |
| AlternateLanguage |
fieldName: {$type: [$language,...]} |
$type is one of [includes, notIncludes], $language is an array of language code strings, combined with OR |
| StringSingle |
fieldName: {$type: [$string,...]} |
$type is one of [is,isNot], $string is an array of strings, combined with OR |
| StringList |
fieldName: {$type: [$string,...]} |
$type is one of [includes,notIncludes], $string is an array of strings, combined with OR |
| LocationType |
fieldName: {$type: [$id,...]} |
$type is one of [is,isNot], $id is an array of location type IDs, combined with OR |
| Bool |
fieldName: $type |
$type is one of [true,false] |
| Option |
fieldName: {$type: $id} |
$type is one of [is,isNot], $id is an option ID (For single option custom fields) |
| Option |
fieldName: {$type: [$id,...]} |
$type is one of [includes,notIncludes], $id is an array of option IDs, combined with OR (For multi option custom fields) |
| Folder |
fieldName: [$id,...] |
$id is a numeric folder ID |
| Folder |
fieldName: $id |
$id is a numeric folder ID |
| Folder |
fieldName: {$type: [$id,...]} |
$id is a numeric folder ID, $type is one of ['isIn', 'isNotIn'] |
| Labels |
fieldName: {$type: [$id,...]} |
$type is one of [includes,notIncludes], $id is an array of label IDs, combined with OR |
The following fields can be specified in the request (Field name/Filter Type/Example(s)):
| Field Name |
Filter Type |
Example(s) |
| location |
Full |
"location": {"contains": "Atlanta"} |
| name |
Text |
"name": {"startsWith": ["Guitar"]}, "name": {"contains": ["A","B"]} |
| address |
Text |
"address": {"startsWith": ["South"]} |
| address2 |
Text |
"address2": {"contains": ["Suite"]} |
| city |
Text |
"city": {"contains": ["Atlanta"]} |
| state |
Text |
"state": {"contains": ["AK","VA"]} |
| zip |
Text |
"zip": {"contains": ["M5K 7QB"]} |
| phones |
Text |
"phones": {"startsWith": ["703","571"]} |
| specialOffer |
Text |
"specialOffer": "notEmpty" |
| emails |
Text |
"emails": {"doesNotContain": ["@yext.com"]} |
| website |
Text |
"website": {"equalTo": ["https://www.yext.com/"]} |
| categories |
Categories |
"categories": {"includes": [23,755,34]} |
| closed |
Bool |
"closed": true |
| storeId |
Text |
"storeId": {"equalTo": ["MCD0001"]} |
| countryCode |
Country |
"countryCode": {"notIncludes": ["US"]} |
| products |
Text |
"products": {"startsWith": ["Burger","Fries"]} |
| services |
Text |
"services": {"contains": ["Manicures"]} |
| specialities |
Text |
"services": "notEmpty" |
| associations |
Text |
"associations": "empty" |
| brands |
Text |
"brands": {"equalTo": ["North Face"]} |
| languages |
Text |
"languages": {"equalTo": ["English","Spanish"]} |
| keywords |
Text |
"keywords": {"startsWith": ["Franchise"]} |
| menuIds |
IdList |
"menuIds": {"includes": ["m-23","755","menu34"]} |
| productListIds |
IdList |
"productListIds": {"notIncludes": ["pl-2"]} |
| calendarIds |
IdList |
"calendarIds": {"notIncludes": ["cal34"]} |
| bioIds |
IdList |
"bioIds": {"includes": ["b23","34"]} |
| custom### |
Text (for Multiline Text, URL, Text List, and Text Custom Fields), Number, Date, Bool, or Option |
"custom123": {"equalTo": ["asdf"]} |
| folder |
Folder |
"folder": 123, "folder": [123,456] |
| primary_language |
PrimaryLanguage |
"primary_language": {"is": "fr_CA"} |
| alternateProfileLanguage |
AlternateLanguage |
"alternateProfileLanguage": {"includes": ["en", "fr"]} |
| npi |
StringSingle |
"npi": {"is": ["1234567890", "1111111111"]} |
| conditionsTreated |
Text |
"conditionsTreated": {"startsWith": ["Influenza"]}, "conditionsTreated": {"contains": ["A","B"]} |
| lastUpdated |
Date |
"lastUpdated": {"eq": "2018-01-01"}, "lastUpdated": {"between": ["2017-01-01", "2018-01-01"]} |
| fieldsWithData |
Fields |
"fieldsWithData": ["email", "hours"] |
| fieldsWithoutData |
Fields |
"fieldsWithoutData": ["logo", "video"] |
| reviewCount |
Number |
"review_count": {"gt": 1}, "review_count ": {"lt": 10} |
| averageRating |
Number |
"averageRating": {"lt": 3} |
| locationType |
LocationType |
"locationType": {"is": [1]}, "locationType": {"isNot": [123]} |
| gender |
StringSingle |
"gender": {"is": ["FEMALE"]}, "gender": {"isNot": ["MALE"]} |
| degrees |
StringList |
"degrees": {"includes": ["MD"]}, "degrees": {"notIncludes": ["PHD"]} |
| experiences |
StringList |
"experiences": {"includes": ["FELLOWSHIP"]}, "experiences": {"notIncludes":["INTERNSHIP"]} |
| yearCompleted |
Number |
"yearCompleted": {"gt": 2000}, "yearCompleted": {"lt": 2015} |
| acceptingNewPatients |
Bool |
"acceptingNewPatients": true |
| firstName |
Text |
"firstName": {"startsWith": ["David"]}, "firstName": {"contains": ["A","B"]} |
| middleName |
Text |
"middleName": {"startsWith": ["P"]}, "middleName": {"contains": ["N","E"]} |
| lastName |
Text |
"lastName": {"startsWith": ["Sm"]}, "lastName": {"contains": ["Y","Z"]} |
| officeName |
Text |
"officeName": {"startsWith": ["Chiropractic"]}, "officeName": {"contains":["Center","P"]} |
| certifications |
Text |
"certifications": {"contains": ["Radiation Oncology"]} |
| institutionName |
Text |
"institutionName": {"startsWith": ["New York"]} |
| insuranceAccepted |
Text |
"insuranceAccepted": {"startsWith": ["United"]}, "insuranceAccepted":{"contains": ["C","Health"]} |
| admittingHospitals |
Text |
"admittingHospitals": {"startsWith": ["Children's"]}, "admittingHospitals":{"contains": ["Medical","University"]} |
| subscriptions |
IdList |
"subscriptions": {"notIncludes": ["123"]} |
| facebookAccounts |
IdList |
"facebookAccounts": {"notIncludes": ["1111"]} |
| foursquareAccounts |
IdList |
"foursquareAccounts": {"notIncludes": ["1111"]} |
| googleplusAccounts |
IdList |
"googleplusAccounts": {"notIncludes": ["1111"]} |
| labels |
Labels |
"labels": {"includes": [1, 100]} |
sortBy:
name: sortBy
in: query
required: false
schema:
type: string
description: |
Specifies the fields and direction by which the output should be sorted. Should be provided as a URL-encoded string containing a JSON array of `sortDefinition` objects. A `sortDefinition` object consists of a `sortField` and a `sortDirection` field. The `sortField` is the name of the field you are sorting by (e.g., `firstName` or `custom###` for a custom field, where "###" is the custom field’s **`id`**). The `sortDirection` indicates whether the sort is ascending (`ASCENDING`) or descending (`DESCENDING`).
For example, to sort by last name ascending and first name descending, this parameter would be `[{"sortField":"lastName","sortDirection":"ASCENDING"},{"sortField":"firstName", "sortDirection":"DESCENDING"}]`, which, when URL-encoded, would be `%5B%7B%22sortField%22%3A%22lastName%22%2C%22sortDirection%22%3A%22ASCENDING%22%7D%2C%7B%22sortField%22%3A%22firstName%22%2C%22sortDirection%22%3A%22DESCENDING%22%7D%5D`.
**NOTE:** Currently, we support sorting by **`firstName`**, **`lastName`**, and text custom fields.
location:
name: location
in: query
required: true
schema:
type: string
description: |
Only entities near this position will be returned. The values can be specified in one of two ways:
1) Latitude and Longitude: The latitude and longitude of the point, separated by a comma (e.g.`"40.740957,-73.987565"`),
2) Address: A free-form address to geocode into a latitude and longitude (e.g., `"1 Madison Ave, New York, NY 10010"` or `"New York, NY"`).
Note that providing an address that resolves to an area, like a city or a postal code, does not restrict the search to exactly that area; it simply centers the search circle on a point in that area.
radius:
name: radius
in: query
required: false
schema:
type: number
default: 10
minimum: 0.1
maximum: 500
description: |
Indicates the search radius around the provided **`location`** in miles
geocoderBias:
name: geocoderBias
in: query
required: false
schema:
type: string
description: |
The latitude, longitude, and approximate radius in miles, separated by commas, where the geocoder should be biased.
countryBias:
name: countryBias
in: query
schema:
type: string
required: false
description: |
The two-character ISO 3166-1 code of the country where the geocoder should be biased.
The value of the **`countryBias`** parameter influences the search results, but it does not guarantee that the geocoded location will be in the country provided.
If both **`countryBias`** and **`geocoderBias`** are provided, **`geocoderBias`** is given priority, but both values are considered in the search.
apiIdentifier:
name: apiIdentifier
in: path
required: true
schema:
type: string
description: |
The unique identifier of this review.
One of:
* A UUID generated at the time the Review Creation request is accepted.
* The invitationUid, if the review is associated with an invitation.
This ID will be returned in the response to any requests to the Review: Create Live API
endpoint.
This ID will also be included in the Reviews Webhook, and the Review: Get/List Knowledge API
endpoints.
endpoint:
name: endpoint
in: path
required: true
schema:
type: string
description: The ID of the Content Endpoint to query.
contentDocIds:
name: ids
in: path
required: true
schema:
type: array
items:
type: string
style: simple
description: |
The Content records to get. Multiple record IDs can be provided separated by commas.
pageToken:
name: pageToken
in: query
schema:
type: string
required: false
description: |
If a response to a previous request contained the **`nextPageToken`** field, pass that field's value as the **`pageToken`** parameter to retrieve the next page of data.
schemas:
ResponseMeta:
type: object
properties:
uuid:
type: string
example: 4f72b877-e2d0-4de4-9324-b9cf2c03e1a0
description: Unique ID for this request / response.
ResponseError:
type: object
properties:
name:
type: string
code:
type: integer
description: |
Code that uniquely identifies the error or warning.
type:
type: string
enum:
- FATAL_ERROR
- NON_FATAL_ERROR
- WARNING
message:
type: string
description: Message explaining the problem.
ResponseMetaWithError:
allOf:
- $ref: '#/components/schemas/ResponseMeta'
- type: object
properties:
errors:
type: array
description: List of errors and warnings.
items:
$ref: '#/components/schemas/ResponseError'
EntitySchema:
type: object
properties:
'@context':
type: string
'@type':
type: string
'@id':
type: string
Name:
type: string
Image:
type: string
Geo:
type: object
properties:
'@type':
type: string
Latitude:
type: number
format: double
Longitude:
type: number
format: double
Address:
type: object
properties:
'@type':
type: string
StreetAddress:
type: string
AddressLocality:
type: string
PostalCode:
type: string
AddressCountry:
type: string
Telephone:
type: string
BaseEcl:
type: object
properties:
id:
type: string
maxLength: 32
description: List ID.
accountId:
type: string
readOnly: true
description: ID of account that owns this List.
name:
type: string
description: List name.
title:
type: string
description: List title that appears on listings.
size:
type: integer
readOnly: true
description: Number of items in the List.
publish:
type: boolean
description: Indicates whether the List should be shown on your listings.
language:
type: string
description: |
List language in ISO 639-1 format. An ISO 3166-1 alpha-2 country code can optionally be appended to the language.
**Examples:** en, en_GB, fr_CA
BaseEclSection:
type: object
properties:
id:
type: string
description: Section ID.
name:
type: string
description: Section name.
description:
type: string
description: Section description.
BaseEclItem:
type: object
properties:
id:
type: string
description: Item ID.
name:
type: string
description: Item name.
description:
type: string
description: Item description.
Photo:
type: object
properties:
url:
type: string
description: URL of photo.
height:
type: integer
description: Dimension in pixels.
width:
type: integer
description: Dimension in pixels.
alternateText:
type: string
description: The alternate text to be used for accessibility purposes.
Calories:
type: object
properties:
type:
type: string
enum:
- FIXED
- RANGE
calorie:
type: integer
description: Calorie count. Must be greater than or equal to 0 and less than or equal to 1000000.
rangeTo:
type: integer
description: Specified only if `name` is `RANGE`. In that case, this Calories represents a calorie count range from `calorie` to `rangeTo`. Must be greater than `calorie` and less than or equal to 1000000.
ContentListCostOption:
type: object
properties:
name:
type: string
description: e.g., Small, Medium, Large, Add Bacon.
price:
type: string
description: A simple price in USD, e.g., 1.00.
calorie:
type: integer
description: How many calories this option adds. This field is for Menu items only.
ContentListCost:
type: object
properties:
type:
type: string
enum:
- PRICE
- RANGE
- NONE
- OTHER
price:
type: string
description: Price in USD, e.g., 9.50. Must be greater than or equal to 0.0 and less than or equal to 1000000.00.
unit:
type: string
description: e.g., Per Gallon, Each.
rangeTo:
type: string
description: Specified only if `type` is `RANGE`. In that case, this Cost represents a `price` range from `price` to `rangeTo`. Must be greater than `price` and less than or equal to 1000000.00.
other:
type: string
description: Specified only if `type` is `OTHER`. User-entered text, e.g., Market Price.
options:
type: array
description: Add-ons or product variations that affect the price.
items:
$ref: '#/components/schemas/ContentListCostOption'
MenuItem:
allOf:
- $ref: '#/components/schemas/BaseEclItem'
- type: object
properties:
photo:
$ref: '#/components/schemas/Photo'
calories:
$ref: '#/components/schemas/Calories'
cost:
$ref: '#/components/schemas/ContentListCost'
url:
type: string
description: The URL of the item's webpage.
allergens:
type: array
items:
type: string
description: |
A list of allergens associated with the menu item. Valid elements are:
* Peanuts
* Wheat
* Sesame
* Tree Nuts
* Gluten
* Soy
* Dairy
* Eggs
* Fish
* Shellfish
* Shrimp
* Crab
* Soba
featured:
type: boolean
description: Indicates whether the item is a featured item on the menu.
spiciness:
type: string
description: |
The spiciness level of a food item. Valid elements are:
* Mild
* Medium
* Hot
dietaryRestrictions:
type: array
items:
type: string
description: |
Dietary information of a food item. Valid elements are:
* Halal
* Kosher
* Organic
* Vegan
* Vegetarian
preparationMethods:
type: array
items:
type: string
description: |
Methods on how the food dish option is prepared. Valid elements are:
* Baked
* Barbecued
* Basted
* Blanched
* Boiled
* Braised
* Coddled
* Fermented
* Fried
* Grilled
* Kneaded
* Marinated
* Pan Fried
* Pickled
* Pressure Cooked
* Roasted
* Sauteed
* Seared
* Simmered
* Smoked
* Steamed
* Steeped
* Stir Fried
* Other Method
Section:
allOf:
- $ref: '#/components/schemas/BaseEclSection'
- type: object
properties:
items:
type: array
description: Section Items.
items:
$ref: '#/components/schemas/MenuItem'
Menu:
allOf:
- $ref: '#/components/schemas/BaseEcl'
- type: object
properties:
currency:
type: string
description: The three-letter ISO 4217 currency code. Defaults to USD.
sourceUrl:
type: string
description: The URL of the source the menu's content is retrieved from.
sections:
type: array
description: A list of sections.
items:
$ref: '#/components/schemas/Section'
BioItem:
allOf:
- $ref: '#/components/schemas/BaseEclItem'
- type: object
properties:
photo:
$ref: '#/components/schemas/Photo'
title:
type: string
description: Person's title.
phone:
type: string
description: Item Phone.
email:
type: string
description: Item Email.
education:
type: array
description: List of up to 10 strings.
items:
type: string
certifications:
type: array
description: List of up to 10 strings.
items:
type: string
services:
type: array
description: List of up to 100 strings.
items:
type: string
url:
type: string
description: Item URL.
BioEcl_Section:
allOf:
- $ref: '#/components/schemas/BaseEclSection'
- type: object
properties:
items:
type: array
description: Section Items.
items:
$ref: '#/components/schemas/BioItem'
Bio:
allOf:
- $ref: '#/components/schemas/BaseEcl'
- type: object
properties:
sections:
type: array
description: A list of sections.
items:
$ref: '#/components/schemas/BioEcl_Section'
Photos:
type: array
description: List of up to 5 photos.
items:
$ref: '#/components/schemas/Photo'
Duration:
type: object
description: Product duration.
properties:
unit:
type: string
enum:
- MINUTES
- HOURS
- DAYS
description: Unit of time (i.e. minutes, hours, days).
value:
type: number
minimum: 1
description: Value of time.
ProductItem:
allOf:
- $ref: '#/components/schemas/BaseEclItem'
- type: object
properties:
photos:
$ref: '#/components/schemas/Photos'
cost:
$ref: '#/components/schemas/ContentListCost'
idcode:
type: string
description: Displayed item ID.
url:
type: string
description: Product home page.
video:
type: string
description: Youtube URL.
duration:
$ref: '#/components/schemas/Duration'
ranking:
type: number
minimum: 0
description: Product ranking.
ProductEcl_Section:
allOf:
- $ref: '#/components/schemas/BaseEclSection'
- type: object
properties:
items:
type: array
description: Section Items.
items:
$ref: '#/components/schemas/ProductItem'
Product:
allOf:
- $ref: '#/components/schemas/BaseEcl'
- type: object
properties:
currency:
type: string
description: The three-letter ISO 4217 currency code. Defaults to USD.
sections:
type: array
description: A list of sections.
items:
$ref: '#/components/schemas/ProductEcl_Section'
EventItem:
allOf:
- $ref: '#/components/schemas/BaseEclItem'
- type: object
properties:
type:
type: string
description: User-provided event type.
starts:
type: string
format: date
description: Start time in ISO 8601 format (yyyy-mm-ddThh:mm) (e.g., 2012-01-09T04:00).
ends:
type: string
format: date
description: End time in ISO 8601 format (yyyy-mm-ddThh:mm) (e.g., 2012-01-09T05:00).
photos:
$ref: '#/components/schemas/Photos'
url:
type: string
description: Item URL.
video:
type: string
description: Youtube URL.
EventEcl_Section:
allOf:
- $ref: '#/components/schemas/BaseEclSection'
- type: object
properties:
items:
type: array
description: Section Items.
items:
$ref: '#/components/schemas/EventItem'
Event:
allOf:
- $ref: '#/components/schemas/BaseEcl'
- type: object
properties:
sections:
type: array
description: A list of sections. However, Calendars cannot have more than one section.
items:
$ref: '#/components/schemas/EventEcl_Section'
LocationType:
type: string
enum:
- LOCATION
- HEALTHCARE_PROFESSIONAL
- HEALTHCARE_FACILITY
- RESTAURANT
- ATM
Photo-2:
type: object
properties:
url:
type: string
description: |
Valid URL to image. Accepted formats: .jpg, .gif, .png.
While updating this field, if the image could not be downloaded, or if its URL is invalid, the image will be ignored. The success response will contain a warning message explaining why the image was not stored in the system.
sourceUrl:
type: string
readOnly: true
description: |
The URL the image was uploaded from, if applicable. Note that this URL may not currently be valid.
description:
type: string
description: Image description.
details:
type: string
description: Image details.
alternateText:
type: string
description: The alternate text to be used for accessibility purposes.
width:
type: integer
readOnly: true
description: Original photo width.
height:
type: integer
readOnly: true
description: Original photo height.
derivatives:
type: array
readOnly: true
items:
type: object
properties:
url:
type: string
readOnly: true
description: |-
The URL to derivative image.
Derivative images are alternate versions of the original image (e.g., smaller versions used to improve page-load times on your site). They are primarily used with our Pages product.
width:
type: integer
readOnly: true
description: Derivative photo width.
height:
type: integer
readOnly: true
description: Derivative photo height.
description: If no derivative photos are available, this attribute is omitted rather than empty.
Location:
type: object
properties:
id:
type: string
maxLength: 50
description: Primary key. Unique alphanumeric (Latin-1) ID assigned by the Customer.
uid:
type: string
readOnly: true
description: A static globally unique id for the location. Note that this field cannot be used in place of the location id in API calls to get or update location information.
accountId:
type: string
maxLength: 50
description: Must refer to an **account.id** that already exists.
timestamp:
type: integer
format: int64
readOnly: true
description: |
The timestamp of the most recent change to this location record. Will be ignored when the client is saving location data to Yext.
**NOTE:** The timestamp may change even if observable fields stay the same.
timezone:
readOnly: true
description: |
The timezone of the location
minLength: 0
type: string
locationType:
$ref: '#/components/schemas/LocationType'
locationName:
type: string
maxLength: 100
description: |
Cannot include:
* inappropriate language
* HTML markup or entities
* a URL or domain name
* a phone number
* control characters ([\x00-\x1F\x7F])
Should be in appropriate letter case (e.g., not in all capital letters)
firstName:
type: string
description: |
The first name of the healthcare professional
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
middleName:
type: string
description: |
The middle name of the healthcare professional
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
lastName:
type: string
description: |
The last name of the healthcare professional
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
officeName:
type: string
description: |
The name of the office where the healthcare professional works, if different from **locationName**
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
gender:
type: string
description: |
The gender of the healthcare professional
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
enum:
- FEMALE
- F
- MALE
- M
- UNSPECIFIED
npi:
type: string
description: |
The National Provider Identifier (NPI) of the healthcare provider
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL` or `HEALTHCARE_FACILITY`.
address:
type: string
maxLength: 255
description: |
Must be a valid address
Cannot be a P.O. Box
address2:
type: string
maxLength: 255
description: Cannot be a P.O. Box
suppressAddress:
type: boolean
description: If true, do not show street address on listings. Defaults to false.
displayAddress:
type: string
maxLength: 255
description: |
Provides additional information to help consumers get to the location. This string appears along with the location's address (e.g., In Menlo Mall, 3rd Floor).
It may also be used in conjunction with a hidden address (i.e., when **suppressAddress** is true) to give consumers information about where the location is found (e.g., Servicing the New York area).
Cannot be a P.O. Box
city:
type: string
maxLength: 80
state:
type: string
maxLength: 80
description: |
For US locations, the two-character code of the location’s state, or DC for the District of Columbia
For non-US locations, the name of the location’s province / region / state
sublocality:
type: string
maxLength: 255
description: The name of the location's sublocality.
zip:
type: string
maxLength: 10
description: The location's postal code. For US locations, this field contains the five- or nine-digit ZIP code (the hyphen is optional).
countryCode:
type: string
maxLength: 2
description: The two-character ISO 3166-1 code of the location's country or region. If omitted, US is used.
serviceArea:
type: object
properties:
radius:
type: number
format: double
description: |
The distance around the location that the business serves
**NOTE:** This field is no longer supported by Google Business Profile and is deprecated. We no longer accept or store values for **`radius`**.
unit:
type: string
description: |
The unit in which radius is measured.
**NOTE:** This field is no longer supported by Google Business Profile and is deprecated. We no longer accept or store values for **`units`**.
places:
type: array
items:
type: string
description: |
A list of places served by the location, where each place is either:
* a postal code, or
* the name of a city.
description: |
Area that is served by this location. It may be specified as a radius from the location's address or as a list of cities and/or postal codes.
**Only for Google Business Profile:** Currently, **serviceArea** is only supported by Google Business Profile and will not affect your listings on other sites.
phone:
type: string
description: Must be a valid phone number.
isPhoneTracked:
type: boolean
description: |
Set to true if the number listed in **phone** is a tracked phone number.
**NOTE:** When updating **isPhoneTracked**, you must provide a value for **phone** in the same request.
localPhone:
type: string
description: |
Must be a valid, non-toll-free phone number.
Required if:
* **isPhoneTracked** is true and the non-tracked number is a toll-free number, **OR**
* **isPhoneTracked** is false and **phone** is a toll-free number
alternatePhone:
type: string
description: Must be a valid phone number, based on the country specified in `countryCode`. Phone numbers for US locations must contain 10 digits.
faxPhone:
type: string
description: Must be a valid phone number, based on the country specified in `countryCode`. Phone numbers for US locations must contain 10 digits.
mobilePhone:
type: string
description: Must be a valid phone number, based on the country specified in `countryCode`. Phone numbers for US locations must contain 10 digits.
tollFreePhone:
type: string
description: Must be a valid phone number, based on the country specified in `countryCode`. Phone numbers for US locations must contain 10 digits.
ttyPhone:
type: string
description: Must be a valid phone number, based on the country specified in `countryCode`. Phone numbers for US locations must contain 10 digits.
categoryIds:
type: array
items:
type: string
description: |
Yext Category IDs. A Location must have at least one and at most 10 Categories.
IDs must be valid and selectable (i.e., cannot be parent categories).
**NOTE:** The list of category IDs that you send us must be comprehensive. For example, if you send us a list of IDs that does not include IDs that you sent in your last update, Yext considers the missing categories to be deleted, and we remove them from your listings.
featuredMessage:
type: string
maxLength: 50
description: |
The Featured Message. Default: Call today!
Cannot include:
* inappropriate language
* HTML markup
* a URL or domain name
* a phone number
* control characters ([\x00-\x1F\x7F])
* insufficient spacing
If you submit a Featured Message that contains profanity or more than 50 characters, it will be ignored. The success response will contain a warning message explaining why your Featured Message wasn't stored in the system.
featuredMessageUrl:
type: string
maxLength: 255
description: Valid URL to which the Featured Message is linked
websiteUrl:
type: string
maxLength: 255
description: |
The URL of the location's website. This URL will be shown on your listings unless you specify a value for `displayWebsiteUrl`.
Must be a valid URL and is required whenever `displayWebsiteUrl` is specified.
displayWebsiteUrl:
type: string
maxLength: 255
description: |
The URL that is shown on your listings in place of `websiteUrl`. You can use `displayWebsiteUrl` to display a short, memorable web address that redirects consumers to the URL given in `websiteUrl`.
Must be a valid URL and be specified along with `websiteUrl`.
reservationUrl:
type: string
maxLength: 255
description: A valid URL used for reservations at this location.
displayReservationUrl:
type: string
maxLength: 255
description: |
The URL that is shown on your listings in place of `reservationUrl`. You can use `displayReservationUrl` to display a short, memorable web address that redirects consumers to the URL given in `reservationUrl`.
Must be a valid URL and be specified along with `reservationUrl`.
menuUrl:
type: string
maxLength: 255
description: The URL of the location's menu.
displayMenuUrl:
type: string
maxLength: 255
description: |
The URL that is shown on your listings in place of `menuUrl`. You can use `displayMenuUrl` to display a short, memorable web address that redirects consumers to the URL given in `menuUrl`.
Must be a valid URL and be specified along with `menuUrl`.
orderUrl:
type: string
maxLength: 255
description: The URL used to place orders that will be fulfilled at the location.
displayOrderUrl:
type: string
maxLength: 255
description: |
The URL that is shown on your listings in place of `orderUrl`. You can use `displayOrderUrl` to display a short, memorable web address that redirects consumers to the URL given in `orderUrl`.
Must be a valid URL and be specified along with `orderUrl`.
hours:
type: string
maxLength: 255
description: |
Hours should be submitted as a comma-separated list of days, where each day's hours are specified as follows:
d:oh:om:ch:cm
* d = day of the week –
* 1 – Sunday
* 2 – Monday
* 3 – Tuesday
* 4 – Wednesday
* 5 – Thursday
* 6 – Friday
* 7 – Saturday
* oh:om = opening time in 24-hour format
* ch:cm = closing time in 24-hour format
Times with single-digit hours (e.g., 9 AM) can be submitted with or without a leading zero (9:00 or 09:00).
**Example:** open 9 AM to 5 PM Monday and Tuesday, open 10 AM to 4 PM on Saturday – 2:9:00:17:00,3:9:00:17:00,7:10:00:16:00
SPECIAL CASES:
* To indicate that a location is open 24 hours on a specific day, set 00:00 as both the opening and closing time for that day.
* **Example:** open all day on Saturdays – 7:00:00:00:00
* To indicate that a location is closed on a specific day, omit that day from the list or set it as closed ("closed" is not case sensitive).
* **Example:** closed on Sundays – 1:closed
* **NOTE:** If a location is closed seven days a week, set at least one day to closed. Otherwise, **hours** is an empty string, and we assume you are not submitting hours information for that location.
* To indicate that a location has split hours on a specific day, submit a set of hours for each block of time the location is open.
* **Example:** open from 9:00 AM to 12:00 PM and again from 1:00 PM to 5:00 PM on Mondays – 2:9:00:12:00,2:13:00:17:00
**NOTE:** To set hours for specific days of the year rather than days of the week, use **holidayHours**.
additionalHoursText:
type: string
maxLength: 255
description: Additional information about business hours that does not fit in **hours** (e.g., Closed during the winter)
holidayHours:
type: array
items:
type: object
properties:
hours:
type: string
description: |
Special opening and closing times in 24-hour format (OH:OM:CH:CM, where OH:OM is the opening time and CH:CM is the closing time).
Times with single-digit hours (e.g., 9 AM) can be submitted with or without a leading zero (9:00 or 09:00).
Examples:
* 9:00:15:00 — Opening at 9:00 AM, closing at 3:00 PM
* "" (empty string) — Closed all day
* 0:00:0:00 or 0:00:23:59 — Open 24 hours
* 9:00:15:00,17:00:19:00 — Split hours: open from 9:00 AM to 3:00 PM and again from 5:00 PM to 7:00 PM
**NOTE:** If **isRegularHours** is set to true, we will ignore this field.
date:
type: string
format: date
description: The date on which the holiday hours will be in effect
isRegularHours:
type: boolean
default: false
description: Indicates whether the holiday hours are the same as the regular business hours for the given date. If set to true, we will update the holiday hours if the regular business hours change for the date's day of the week.
description: |
Holiday hours for this location.
**NOTE:** hours must be set in order for holidayHours to appear on your listings)
description:
type: string
minLength: 10
maxLength: 5000
conditionsTreated:
type: array
items:
type: string
description: |
A list of the conditions treated by the healthcare provider
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL` or `HEALTHCARE_FACILITY`.
certifications:
type: array
items:
type: string
description: |
A list of the certifications held by the healthcare professional
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
educationList:
type: array
items:
type: object
properties:
type:
type: string
description: The kind of education or training completed
enum:
- FELLOWSHIP
- INTERNSHIP
- MEDICAL_SCHOOL
- RESIDENCY
institutionName:
type: string
description: The name of the institution where the healthcare professional received the education or training
yearCompleted:
type: string
description: The year the healthcare professional completed the education or training
description: |
A list of the types of education and training completed by the healthcare professional
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
degrees:
type: array
items:
type: string
description: |
A list of the degrees earned by the healthcare professional
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
Valid values:
* `ANP` (Adult Nurse Practitioner)
* `APN` (Advanced Practice Nurse)
* `APRN` (Advanced Practice Registered Nurse)
* `ARNP` (Advanced Registered Nurse Practitioner)
* `CNM` (Certified Nurse Midwife)
* `CNP` (Certified Nurse Practitioner)
* `CNS` (Clinical Nurse Specialist)
* `CPNP` (Certified Pediatric Nurse Practitioner)
* `CRNA` (Certified Registered Nurse Anesthetist)
* `CRNP` (Certified Registered Nurse Practitioner)
* `DC` (Doctor of Chiropractic)
* `DDS` (Doctor of Dental Surgery)
* `DMD` (Doctor of Dental Medicine)
* `DO` (Doctor of Osteopathy)
* `DPM` (Doctor of Podiatric Medicine)
* `DVM` (Doctor of Veterinary Medicine)
* `FNP` (Family Nurse Practitioner)
* `GNP` (Geriatric Nurse Practitioner)
* `LAC` (Licensed Acupuncturist)
* `LPN` (Licensed Practical Nurse)
* `MD` (Medical Doctor)
* `ND` (Naturopathic Doctor)
* `NP` (Nurse Practitioner)
* `OD` (Doctor of Optometry)
* `PA` (Physician Assistant)
* `PAC` (Physician Assistant Certified)
* `PHARMD` (Doctor of Pharmacy)
* `PHD` (Doctor of Philosophy)
* `PNP` (Pediatric Nurse Practitioner)
* `VMD` (Veterinary Medical Doctor)
* `WHNP` (Womens Health Nurse Practitioner)
admittingHospitals:
type: array
items:
type: string
description: |
A list of hospitals where the healthcare professional admits patients
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
acceptingNewPatients:
type: boolean
description: |
Indicates whether the healthcare provider is accepting new patients
Default is true
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL` or `HEALTHCARE_FACILITY`.
closed:
type: object
properties:
isClosed:
type: boolean
description: Indicates whether the location is closed
description: |
A set of field-value pairs indicating whether the location is closed and, if it is closed, the date of its closing.
**NOTE:** This field does not appear in the GET response unless it has been explicitly set in a PUT request.
paymentOptions:
type: array
items:
type: string
description: |
The payment methods accepted at this location
Valid elements depend on the location's country. For US locations, valid elements are:
* AMERICANEXPRESS
* CASH
* CHECK
* DINERSCLUB
* DISCOVER
* FINANCING
* INVOICE
* MASTERCARD
* TRAVELERSCHECK
* VISA
* ANDROIDPAY
* APPLEPAY
* SAMSUNGPAY
* BITCOIN
* PAYPAL
insuranceAccepted:
type: array
items:
type: string
description: |
A list of insurance policies accepted by the healthcare provider
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
logo:
$ref: '#/components/schemas/Photo-2'
photos:
type: array
items:
$ref: '#/components/schemas/Photo-2'
description: |
Up to 50 Photos.
**NOTE:** The list of photos that you send us must be comprehensive. For example, if you send us a list of photos that does not include photos that you sent in your last update, Yext considers the missing photos to be deleted, and we remove them from your listings.
headshot:
type: object
description: |
A portrait of the healthcare professional
**NOTE:** This field is only available to locations whose **`locationType`** is `HEALTHCARE_PROFESSIONAL`.
allOf:
- $ref: '#/components/schemas/Photo-2'
videoUrls:
type: array
items:
type: string
maxLength: 255
description: |
Valid YouTube URLs for embedding a video on some publisher sites.
**NOTE:** Currently, only the first URL in the Array appears in your listings.
instagramHandle:
type: string
description: Valid Instagram username for the location (e.g., NewCityFiat (without the leading "@"))
twitterHandle:
type: string
maxLength: 15
description: |-
Valid Twitter handle for the location (e.g., JohnSmith (without the leading '@')).
If you submit an invalid Twitter handle, it will be ignored. The success response will contain a warning message explaining why your Twitter handle wasn't stored in the system.
googleWebsiteOverride:
type: string
maxLength: 255
description: |
The URL you would like to submit to Google Business Profile in place of the one given in **websiteUrl** (if applicable).
For example, if you want to analyze the traffic driven by your Google listings separately from other traffic, enter the alternate URL that you will use for tracking in this field.
googleCoverPhoto:
type: object
description: |
The cover photo for your business's Google profile
NOTE: Your cover photo must meet all of the following requirements:
* have a 16:9 aspect ratio
* be at least 480 x 270 pixels
* be no more than 2120 x 1192 pixels
allOf:
- $ref: '#/components/schemas/Photo-2'
googleProfilePhoto:
type: object
description: |
The profile photo for your business's Google profile
**NOTE:** Your profile picture must meet all of the following requirements:
* be a square
* be at least 250 x 250 pixels
allOf:
- $ref: '#/components/schemas/Photo-2'
googleAttributes:
type: array
items:
type: object
properties:
id:
type: string
description: |
The unique ID Of the Google Business Profile keyword
Keywords are determined by the location's primary category (e.g., `has_drive_through`, `has_fitting_room`, `kitchen_in_room`).
optionIds:
type: array
items:
type: string
description: |
The unique IDs of any options selected for the keyword.
Keyword options provide more details on how the keyword applies to the location (e.g., if **`id`** is `has_drive_through`, **`optionIds`** may be `true` or `false`).
description: |
The Google Business Profile attributes for this location.
facebookPageUrl:
type: string
maxLength: 255
description: |
URL for the location's Facebook Page.
Valid formats:
* facebook.com/profile.php?id=[numId]
* facebook.com/group.php?gid=[numId]
* facebook.com/groups/[numId]
* facebook.com/[Name]
* facebook.com/pages/[Name]/[numId]
where [Name] is a String and [numId] is an Integer
If you submit a URL that is not in one of the valid formats, it will be ignored. The success response will contain a warning message explaining why the URL wasn't stored in the system.
**NOTE:** This value is automatically set to the location's Facebook Page URL. You can only manually set **facebookPageUrl** if the location meets one of the following criteria:
* It is not subscribed to a Listings package that contains Facebook.
* It is opted out of Facebook.
facebookCallToAction:
description: Designates the Facebook Call-to-Action button text and value
type: object
properties:
type:
description: The action the consumer is being prompted to take by the button's text
enum:
- NONE
- BOOK_NOW
- CALL_NOW
- CONTACT_US
- SEND_MESSAGE
- USE_APP
- PLAY_GAME
- SHOP_NOW
- SIGN_UP
- WATCH_VIDEO
- SEND_EMAIL
- LEARN_MORE
- PURCHASE_GIFT_CARDS
- ORDER_NOW
- FOLLOW_PAGE
type: string
value:
description: |-
Indicates where consumers will be directed to upon clicking the Call-to-Action button (e.g., a URL). It can be a free-form string or an embedded value, depending on what the user specifies.
For example, if the user sets the Facebook Call-to-Action as " 'Sign Up' using 'Website URL' " in the Yext platform, **`type`** will be `SIGN_UP` and **`value`** will be `[[websiteUrl]]`.
The Call-to-Action will have the same behavior if the user sets the value to "Custom Value" in the platform and embeds a field.
type: string
additionalProperties: false
facebookCoverPhoto:
type: object
description: |
The cover photo for your business's Facebook profile
Displayed as a 851 x 315 pixel image
You must have a cover photo in order for your listing to appear on Facebook.
**NOTE:** Your cover photo must be at least 400 pixels wide.
allOf:
- $ref: '#/components/schemas/Photo-2'
facebookProfilePicture:
type: object
description: |
The profile picture for your business's Facebook profile
You must have a profile picture in order for your listing to appear on Facebook.
**NOTE:** Your profile picture must be larger than 180 x 180 pixels.
allOf:
- $ref: '#/components/schemas/Photo-2'
uberLinkType:
type: string
description: |
Indicates whether the embedded Uber link for this location appears as text or a button
When consumers click on this link on a mobile device, the Uber app (if installed) will open with your location set as the trip destination. If the Uber app is not installed, the consumer will be prompted to download it.
enum:
- LINK
- BUTTON
uberLinkText:
type: string
maxLength: 100
description: |
The text of the embedded Uber link
Default is "Ride there with Uber".
**NOTE:** This field is only available if **uberLinkType** is LINK.
uberTripBrandingText:
type: string
maxLength: 28
description: |
The text of the call-to-action that will appear in the Uber app during a trip to your location (e.g., Check out our menu!)
**NOTE:** If a value for **uberTripBrandingText** is provided, values must also be provided for **uberTripBrandingUrl** and **uberTripBrandingDescription**.
uberTripBrandingUrl:
type: string
description: |
The URL that the consumer will be redirected to when tapping on the call-to-action in the Uber app during a trip to your location.
**NOTE:** If a value for **uberTripBrandingUrl** is provided, values must also be provided for **uberTripBrandingText** and **uberTripBrandingDescription**.
uberTripBrandingDescription:
type: string
maxLength: 150
description: |
A longer description that will appear near the call-to-action in the Uber app during a trip to your location.
**NOTE:** If a value for **uberTripBrandingDescription** is provided, values must also be provided for **uberTripBrandingText** and **uberTripBrandingUrl**.
uberEmbedCode:
type: string
readOnly: true
description: The Yext-powered code that can be copied and pasted into the markup of emails or web pages where the embedded Uber link should appear
uberLink:
type: string
readOnly: true
description: The Yext-powered link that can be copied and pasted into the markup of Yext Pages where the embedded Uber link should appear
uberLinkRaw:
type: string
readOnly: true
description: |
The Uber universal link for the location.
For more information on universal links, see Uber's developer documentation.
**NOTE**: This field is only available in the LiveAPI and only for US locations.
yearEstablished:
type: string
maxLength: 4
description: |
The year that this location was opened, not the number of years it was open
Minimum of 1000, maximum of current year + 10.
displayLat:
type: number
format: double
description: |
Latitude where the map pin should be displayed, as provided by you
Between -90.0 and 90.0, inclusive
displayLng:
type: number
format: double
description: |
Longitude where the map pin should be displayed, as provided by you
Between -180.0 and 180.0, inclusive
routableLat:
type: number
format: double
description: |
Latitude to use for driving directions to the location, as provided by you
Between -90.0 and 90.0, inclusive
routableLng:
type: number
format: double
description: |
Longitude to use for driving directions to the location, as provided by you
Between -180.0 and 180.0, inclusive
walkableLat:
type: number
format: double
description: |
Latitude to use for walking directions to the location, as provided by you
Between -90.0 and 90.0, inclusive
walkableLng:
type: number
format: double
description: |
Longitude to use for walking directions to the location, as provided by you
Between -180.0 and 180.0, inclusive
pickupLat:
type: number
format: double
description: |
Latitude to use for pickup spot for the location, as provided by you
Between -90.0 and 90.0, inclusive
pickupLng:
type: number
format: double
description: |
Longitude to use for pickup spot for the location, as provided by you
Between -180.0 and 180.0, inclusive
dropoffLat:
type: number
format: double
description: |
Latitude to use for drop off spot for the location, as provided by you
Between -90.0 and 90.0, inclusive
dropoffLng:
type: number
format: double
description: |
Longitude to use for drop off spot for the location, as provided by you
Between -180.0 and 180.0, inclusive
yextDisplayLat:
type: number
format: double
readOnly: true
description: |
Latitude where the map pin should be displayed, as calculated by Yext
Between -90.0 and 90.0, inclusive
yextDisplayLng:
type: number
format: double
readOnly: true
description: |
Longitude where the map pin should be displayed, as calculated by Yext
Between -180.0 and 180.0, inclusive
yextRoutableLat:
type: number
format: double
readOnly: true
description: |
Latitude to use for driving directions to the location, as calculated by Yext
Between -90.0 and 90.0, inclusive
yextRoutableLng:
type: number
format: double
readOnly: true
description: |
Longitude to use for driving directions to the location, as calculated by Yext
Between -180.0 and 180.0, inclusive
yextWalkableLat:
type: number
format: double
readOnly: true
description: |
Latitude to use for walking directions to the location, as calculated by Yext
Between -90.0 and 90.0, inclusive
yextWalkableLng:
type: number
format: double
readOnly: true
description: |
Longitude to use for walking directions to the location, as calculated by Yext
Between -180.0 and 180.0, inclusive
yextPickupLat:
type: number
format: double
readOnly: true
description: |
Latitude to use for pickup spot for the location, as calculated by Yext
Between -90.0 and 90.0, inclusive
yextPickupLng:
type: number
format: double
readOnly: true
description: |
Longitude to use for pickup spot for the location, as calculated by Yext
Between -180.0 and 180.0, inclusive
yextDropoffLat:
type: number
format: double
readOnly: true
description: |
Latitude to use for drop off spot for the location, as calculated by Yext
Between -90.0 and 90.0, inclusive
yextDropoffLng:
type: number
format: double
readOnly: true
description: |
Longitude to use for drop off spot for the location, as calculated by Yext
Between -180.0 and 180.0, inclusive
emails:
type: array
items:
type: string
maxLength: 255
description: |
Up to five emails addresses for reaching this location
Must be valid email addresses
specialities:
type: array
items:
type: string
maxLength: 100
description: |
Up to 100 specialities (e.g., for food and dining: Chicago style)
All strings must be non-empty when trimmed of whitespace.
associations:
type: array
items:
type: string
maxLength: 100
description: |
Up to 100 association memberships relevant to the location (e.g., New York Doctors Association)
All strings must be non-empty when trimmed of whitespace.
products:
type: array
items:
type: string
maxLength: 100
description: |
Up to 100 products sold at this location
All strings must be non-empty when trimmed of whitespace.
services:
type: array
items:
type: string
maxLength: 100
description: |
Up to 100 services offered at this location
All strings must be non-empty when trimmed of whitespace.
brands:
type: array
items:
type: string
maxLength: 100
description: |
Up to 100 brands sold by this location
All strings must be non-empty when trimmed of whitespace.
language:
type: string
maxLength: 10
description: |
Language code of the language in which this location's information is provided. This language is considered the Location's primary language in our system.
If you would like to provide your Location data in more than one language, you can create a Language Profile for each of these additional (alternate) languages.
languages:
type: array
items:
type: string
maxLength: 100
description: |
Up to 100 languages spoken at this location.
All strings must be non-empty when trimmed of whitespace.
keywords:
type: array
items:
type: string
maxLength: 100
description: |
Up to 100 keywords may be provided
All strings must be non-empty when trimmed of whitespace.
menusLabel:
type: string
description: Label to be used for this location’s Menus. This label will appear on your location's listings.
menuIds:
type: array
items:
type: string
description: IDs of Menus associated with this location.
bioListsLabel:
type: string
description: Label to be used for this location’s Bio lists. This label will appear on your location's listings.
bioListIds:
type: array
items:
type: string
description: IDs of Bio lists associated with this location.
productListsLabel:
type: string
description: Label to be used for this location’s Product & Services lists. This label will appear on your location's listings.
productListIds:
type: array
items:
type: string
description: IDs of Product lists associated with this location.
eventListsLabel:
type: string
description: Label to be used for this location’s Event lists. This label will appear on your location's listings.
eventListIds:
type: array
items:
type: string
description: IDs of Event lists associated with this location.
folderId:
type: string
description: The folder that this location is in. Must be a valid, existing Yext Folder ID
labelIds:
type: array
items:
type: string
description: |
The IDs of the location labels that have been added to this location. Location labels help you identify locations that share a certain characteristic; they do not appear on your location's listings.
**NOTE:** You can only add labels that have already been created via our web interface. Currently, it is not possible to create new labels via the API.
In Locations: Update requests:
* If the **`v`** parameter is before `20180223`: setting the value of **`labelIds`** to an empty array has no effect on the current value
* If the **`v`** parameter is `20180223` or after: setting the value of **`labelIds`** to an empty array deletes the current value
customFields:
type: object
additionalProperties:
type: object
description: |
A set of key-value pairs indicating the location's custom fields and their values. The keys are the **`ids`** of the custom fields, and the values are the fields' contents for this location.
To retrieve a list of custom fields for your account, use the Custom Fields: List endpoint.
If a field's **`type`** is `SINGLE_OPTION` or `MULTI_OPTION`, the option or options that apply to this location must be represented by their **`key`**s.
Examples of each type of custom field:
* BOOLEAN:
* `{ "9662": "true" }`
* DAILY_TIMES:
* `{ "10012": { "dailyTimes": "2:7:00,3:7:00,4:7:00,5:7:00,6:7:00,7:7:00,1:7:00" } }`
* DATE:
* `{ "7066": "2016-10-12" }`
* GALLERY:
* `{ "7070": [ { "url": "http://a.mktgcdn.com/p/ounkg7aq6Oy029-sRf4CIH64/128x128.jpg" }, { "url": "http://a.mktgcdn.com/p/YkQGqxK8jFBqOlailQ9QIBsgs/1.0000/316x316.png" } ] }`
* HOURS:
* `{ "10011": { "hours": "1:7:00:20:00,2:7:00:20:00,3:7:00:20:00,4:7:00:20:00,5:7:00:20:00,6:7:00:20:00,7:7:00:20:00", "additionalHoursText": "Also by appointment" }`
* LOCATION_LIST:
* `{ "8098" : [ "locationId1", "locationId2" ] }`
* MULTILINE_TEXT (up to 4,000 characters):
* `{ "1592": "Take Route 13 south. Pass Riverrun Reservoir. At the traffic light before the post office, turn right off of Route 13. Pass the library and community center on your right and then pass a diner on your left. Cross over the bridge and at the third intersection, turn left onto Jones Street. We are located on the right side in the middle of the block." }`
* MULTI_OPTION:
* `{ "7068": ["2614", "2615"] }` (`"2614"` and `"2615"` are the options' **`key`**s)
* NUMBER:
* `{ "7078": "123" }`
* PHOTO:
* `{ "7071": { "url": "http://a.mktgcdn.com/p/bRtQXQZP2kEzgy2C8/800x800.jpg", "description": "New storefront", "details": "A picture of the new storefront" } }`
* `{ "7071": null }` (This setting will clear the existing value of the Photo custom field.)
* SINGLE_OPTION:
* `{ "7069": "2617" }` (`"2617"` is the option's **`key`**)
* TEXT (up to 255 characters):
* `{ "6157": "Buy One, Get One 50% Off" }`
* TEXT_LIST:
* `{ "7072": [ "Item 1", "Item 2", "Item 3" ] }`
* URL:
* `{ "9381": "http://www.location.example.com" }`
* VIDEO:
* `{ "7077": { "url": "http://www.youtube.com/watch?v=6KQPho" } }`
* VIDEO_GALLERY:
* `{ "8452": [ { "url": "http://www.youtube.com/watch?v=B1EC1U" }, { "url": "http://www.youtube.com/watch?v=SkEtnN" } ] }`
intelligentSearchTrackingEnabled:
type: boolean
description: |
Indicates whether Intelligent Search Tracker is enabled.
The Intelligent Search Tracker allows you to understand your performance in local search.
intelligentSearchTrackingFrequency:
type: string
enum:
- WEEKLY
- MONTHLY
- QUARTERLY
description: |
How often we send search queries to track your search performance.
locationKeywords:
type: array
items:
type: string
enum:
- NAME
- PRIMARY_CATEGORY
description: |
Keywords that we will use to track your search performance. These keywords are based on the location information you've stored in our system.
customKeywords:
type: array
items:
type: string
description: |
Additional keywords you would like us to use when tracking your search performance
queryTemplates:
type: array
items:
type: string
enum:
- KEYWORD
- KEYWORD_ZIP
- KEYWORD_CITY
- KEYWORD_IN_CITY
- KEYWORD_NEAR_ME
- KEYWORD_CITY_STATE
description: |
The ways in which your keywords will be arranged in the search queries we use to track your performance
alternateNames:
type: array
items:
type: string
description: |
Other names for your business that you would like us to use when tracking your search performance
alternateWebsites:
type: array
items:
type: string
description: |
Other websites for your business that we should look for when tracking your search performance
competitors:
type: array
items:
type: object
properties:
name:
type: string
description: The competitor's name
website:
type: string
description: The competitor's website.
description: |
The names and websites of the competitors whose search performance you would like to compare to your own
trackingSites:
type: array
items:
type: string
enum:
- GOOGLE_DESKTOP
- GOOGLE_MOBILE
- BING_DESKTOP
- BING_MOBILE
- YAHOO_DESKTOP
- YAHOO_MOBILE
description: |
The search engines that we will use to track your performance
isoRegionCode:
type: string
readOnly: true
description: |
The ISO 3166-2 region code for the location.
Yext will determine the location’s code and update isoRegionCode with that value. If Yext is unable to determine the code for the location, the location’s ISO 3166-1 alpha-2 country code will be used.
reviewBalancingURL:
type: string
maxLength: 255
readOnly: true
description: |
Link to the balancing URL that will auto-direct consumers to certain sites to leave reviews, based on review-generation settings
firstPartyReviewPage:
type: string
maxLength: 255
readOnly: true
description: |
Link to the review-collection page, where consumers can leave first-party reviews
isClusterPrimary:
type: boolean
description: |
Indicates whether the location is the primary location in its group
schemaTypes:
type: array
readOnly: true
items:
type: string
description: |
List of Schema Types for this location, based on its categories
attire:
type: string
enum:
- UNSPECIFIED
- DRESSY
- CASUAL
- FORMAL
description: |
The formality of clothing typically worn at this location
**NOTE:** This field is only available to locations whose **`locationType`** is `RESTAURANT`.
priceRange:
type: string
enum:
- UNSPECIFIED
- ONE
- TWO
- THREE
- FOUR
description: |
The typical price of products sold at this location, on a scale of 1 (low) to 4 (high)
**NOTE:** This field is only available to locations whose **`locationType`** is `RESTAURANT`.
mealsServed:
type: array
items:
type: string
description: |
Types of meals served at this location
**NOTE:** This field is only available to locations whose **`locationType`** is `RESTAURANT`.
Valid values:
* `BREAKFAST`
* `LUNCH`
* `BRUNCH`
* `HAPPY_HOUR`
* `LATE_NIGHT`
locatedIn:
type: string
description: |
For ATMs, the external ID of the location that the ATM is installed in. The location must be in the same business account as the ATM.
**NOTE:** This field is only available to locations whose **`locationType`** is `ATM`.
primaryContact:
type: string
description: |
ID of the user who is the primary Knowledge Assistant contact for the entity
reviewResponseConversationEnabled:
type: boolean
description: |
Indicates whether or not review response conversations are enabled for the Yext Knowledge Assistant
holidayHoursConfirmationEnabled:
type: boolean
description: |
Indicates whether or not holiday hour confirmation alerts are enabled for the Yext Knowledge Assistant
LocationSchema:
type: object
properties:
'@context':
type: string
'@type':
type: string
'@id':
type: string
Name:
type: string
Image:
type: string
Geo:
type: object
properties:
'@type':
type: string
Latitude:
type: number
format: double
Longitude:
type: number
format: double
Address:
type: object
properties:
'@type':
type: string
StreetAddress:
type: string
AddressLocality:
type: string
PostalCode:
type: string
AddressCountry:
type: string
Telephone:
type: string
OpeningHoursSpecification:
type: array
items:
type: object
properties:
'@type':
type: string
DayOfWeek:
type: array
items:
type: string
Opens:
type: string
Closes:
type: string
Geo:
type: object
description: If location provided in geosearch cannot be geocoded, this field will be set to null.
properties:
latitude:
type: string
description: Latitude as returned by geocoder. If no value, returns ""
longitude:
type: string
description: Longitude as returned by geocoder. If no value, returns ""
address:
type: string
description: Address field as returned by geocoder. If no value, returns ""
address2:
type: string
description: Address2 field as returned by geocoder. If no value, returns ""
locality:
type: string
description: Locality (city) field as returned by geocoder. If no value, returns ""
region:
type: string
description: Region (state) field as returned by geocoder. If no value, returns ""
postalCode:
type: string
description: PostalCode (ZIP) field as returned by geocoder. If no value, returns ""
country:
type: string
description: Country field as returned by geocoder. If no value, returns ""
granularity:
type: string
enum:
- POINT
- ADDRESS
- STREET
- SUBLOCALITY
- LOCALITY
- POSTALCODE
- REGION
- COUNTRY
- UNKNOWN
required:
- latitude
- longitude
- address
- address2
- locality
- region
- postalCode
- country
- granularity
LocationDistance:
type: object
properties:
id:
type: string
description: External location ID
distanceMiles:
type: number
description: Distance in miles between the Location and the location specified in the Geo object.
distanceKilometers:
type: number
description: Distance in kilometers between the Location and the location specified in the Geo object.
QuestionRequest:
type: object
required:
- entityId
- name
- email
- questionText
- questionLanguage
properties:
entityId:
type: string
description: ID of the entity associated to this question.
site:
type: string
description: Site on which to create this question.
name:
type: string
description: The name of the author of the question.
email:
type: string
description: The email of the author of the question.
questionText:
type: string
description: The question that is being asked.
questionDescription:
type: string
description: Additional details for this question.
questionLanguage:
type: string
description: The language code of the language that the question is being asked in.
CreateReview:
type: object
required:
- entity
- authorName
- authorEmail
- rating
properties:
entity:
type: object
properties:
id:
type: string
description: ID of the entity associated with this review.
authorName:
type: string
description: The name of the person who wrote the review.
authorEmail:
type: string
description: The email address of the person who wrote the review.
title:
type: string
description: The title of the review.
rating:
type: number
format: double
description: Normalized rating out of 5.
content:
type: string
description: The content of the review.
status:
type: string
enum:
- LIVE
- QUARANTINED
- REMOVED
description: |
The status of the review. Defaults to `QUARANTINED` when creating.
reviewLabelNames:
type: array
items:
type: string
description: |
The names of the Review Labels which will be attached to the resulting review.
This is an _upsert_ operation, meaning the system will determine if a Review Label exists
already in your account, and create and append a new label if not.
reviewDate:
type: string
format: date
description: |
If the v parameter is before 20240515: (YYYY-MM-DD format) If provided, the date you
received the review from the customer. Defaults to the date the review was uploaded to
Yext. Time defaults to midnight ET.
If the v parameter is 20240515 or later: ISO-8601 format (YYYY-MM-DDThh:mm:ssTZD) if
provided, the date you received the review from the customer. Date defaults to the date
the review was uploaded to Yext. Time defaults to midnight and timezone defaults to UTC.
Examples: 2024-05-15, 2024-05-15T04:44:50, 2024-05-15T04:44:50-05:00
invitationUid:
type: string
description: The ID of the invitation which should be associated with this review.
url:
type: string
description: |
The URL of the review, or the URL of the listing where the review can be found if there is no
specific URL for the review.
publisherId:
type: string
description: |
The ID of the publisher associated with the review. Defaults to `FIRSTPARTY`.
externalId:
type: string
description: |
The External ID of the review, typically assigned by the Publisher. Created External IDs must
be unique per account and publisher pair.
UpdateReview:
type: object
properties:
entity:
type: object
properties:
id:
type: string
description: ID of the entity associated with this review.
authorName:
type: string
description: The name of the person who wrote the review.
authorEmail:
type: string
description: The email address of the person who wrote the review.
title:
type: string
description: The title of the review.
rating:
type: number
format: double
description: Normalized rating out of 5.
content:
type: string
description: The content of the review.
status:
type: string
enum:
- LIVE
- QUARANTINED
- REMOVED
description: |
The status of the review. Defaults to `QUARANTINED` when creating.
reviewLabelNames:
type: array
items:
type: string
description: |
The names of the Review Labels which will be attached to the resulting review.
This is an _upsert_ operation, meaning the system will determine if a Review Label exists
already in your account, and create and append a new label if not.
reviewDate:
type: string
format: date
description: |
If provided, the date you received the review from the customer. Defaults to the date the
review was uploaded to Yext.
(`YYYY-MM-DD` format)
url:
type: string
description: |
The URL of the review, or the URL of the listing where the review can be found if there is no
specific URL for the review.
externalId:
type: string
description: |
The External ID of the review, typically assigned by the Publisher. Created External IDs must
be unique per account and publisher pair.
NextPageToken:
type: string
description: |
This field is only included if there is an additional page of data to display. To retrieve the next page of data, pass this field's value as the **``pageToken``** parameter in a subsequent request.
responses:
ErrorResponse:
description: Error Response
content:
application/json:
schema:
title: ErrorResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMetaWithError'
response:
type: object
EntitySchemaResponse:
description: Entity Schema Response.
content:
application/json:
schema:
title: EntitySchemaResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/EntitySchema'
MenuResponse:
description: Menu Response.
content:
application/json:
schema:
title: MenuListResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/Menu'
BioResponse:
description: Bio List Response.
content:
application/json:
schema:
title: BioListResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/Bio'
ProductResponse:
description: Product List Response.
content:
application/json:
schema:
title: ProductListResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/Product'
EventResponse:
description: Event List Response.
content:
application/json:
schema:
title: EventListResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/Event'
LanguageProfileResponse:
description: Language Profile Response.
content:
application/json:
schema:
title: LanguageProfileResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/Location'
LanguageProfilesResponse:
description: Language Profiles Response.
content:
application/json:
schema:
title: LanguageProfilesResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
type: object
properties:
languageProfiles:
type: array
items:
$ref: '#/components/schemas/Location'
LanguageProfileSchemaResponse:
description: Language Profile Schema Response.
content:
application/json:
schema:
title: LanguageProfileSchemaResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/LocationSchema'
LocationResponse:
description: Location Response.
content:
application/json:
schema:
title: LocationResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/Location'
LocationsResponse:
description: Locations Response.
content:
application/json:
schema:
title: LocationsResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
type: object
properties:
count:
type: integer
description: Total number of Locations (up to 10,000) that meet filter criteria (ignores limit / offset).
locations:
type: array
items:
$ref: '#/components/schemas/Location'
LocationSchemaResponse:
description: Location Schema Response.
content:
application/json:
schema:
title: LocationSchemaResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
$ref: '#/components/schemas/LocationSchema'
GeoSearchResponse:
description: Geo Search Response
content:
application/json:
schema:
title: GeoSearchResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
type: object
properties:
count:
type: integer
description: |
Total number of Locations (up to 10,000) that meet filter criteria (ignores **`limit`** / **`offset`** parameters)
geo:
$ref: '#/components/schemas/Geo'
locationDistances:
type: array
items:
$ref: '#/components/schemas/LocationDistance'
locations:
type: array
items:
$ref: '#/components/schemas/Location'
EmptyResponse:
description: Empty Response.
content:
application/json:
schema:
title: EmptyResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
type: object
ReviewsResponse:
description: Reviews Response
content:
application/json:
schema:
title: ReviewsResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
type: object
properties:
apiIdentifier:
type: string
description: |
The unique identifier which will need to be included in any further requests to
update or delete this review.
One of:
* A UUID generated at the time the Review Creation request is accepted.
* The invitationUid, if the review is associated with an invitation.
StreamsResponse:
description: Content Response
content:
application/json:
schema:
title: ContentResponse
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
response:
type: object
required:
- count
properties:
count:
type: integer
description: |
Total number of documents that meet the filter criteria.
docs:
type: array
description: Documents containing the data for the relevant Content Endpoint and request.
items:
type: object
nextPageToken:
$ref: '#/components/schemas/NextPageToken'
requestBodies:
createQuestionRequest:
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionRequest'
security:
- api_key: []
- api-key: []
tags:
- name: Live API
- name: Content API