OpenAPI Specification
openapi: 3.1.0
info:
title: Webhooks
version: '2.0'
servers:
- url: https://api.yextapis.com/v2
webhooks:
entitiesWebhook:
post:
operationId: entitiesWebhook
tags:
- Knowledge Manager
summary: 'Entities: Webhook'
description: Sends an updated Entity to your server.
requestBody:
description: The updated Entity
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- ENTITY_CREATED
- ENTITY_UPDATED
- ENTITY_DELETED
actor:
type: string
enum:
- API
- USER
- YEXT_SYSTEM
entityId:
type: string
description: The Entity's ID
primaryProfile:
$ref: '#/components/schemas/Entity'
languageProfiles:
type: array
items:
$ref: '#/components/schemas/Entity'
changedFields:
$ref: '#/components/schemas/ChangedFields'
locationsWebhook:
post:
operationId: locationsWebhook
tags:
- Knowledge Manager
summary: 'Locations: Webhook'
description: Sends an updated Location to your server.
requestBody:
description: The updated Location
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- LOCATION_CREATED
- LOCATION_UPDATED
location:
$ref: '#/components/schemas/Location'
languageProfiles:
type: array
items:
$ref: '#/components/schemas/Location'
menusWebhook:
post:
operationId: menusWebhook
tags:
- Knowledge Manager
summary: 'Menus: Webhook'
description: Sends an updated Menu object to your server.
requestBody:
description: The updated Menu
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- MENU_CREATED
- MENU_UPDATED
- MENU_DELETED
menu:
$ref: '#/components/schemas/Menu'
biosWebhook:
post:
operationId: biosWebhook
tags:
- Knowledge Manager
summary: 'Bios: Webhook'
description: Sends an updated Bios object to your server.
requestBody:
description: The updated Bios
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- BIOS_CREATED
- BIOS_UPDATED
- BIOS_DELETED
bios:
$ref: '#/components/schemas/Bio'
productsWebhook:
post:
operationId: productsWebhook
tags:
- Knowledge Manager
summary: 'Products: Webhook'
description: Sends an updated Product List object to your server.
requestBody:
description: The updated Product list
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- PRODUCTS_CREATED
- PRODUCTS_UPDATED
- PRODUCTS_DELETED
products:
$ref: '#/components/schemas/Product'
eventsWebhook:
post:
operationId: eventsWebhook
tags:
- Knowledge Manager
summary: 'Events: Webhook'
description: Sends an updated Events List (Calendar) object to your server.
requestBody:
description: The updated Event list
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- EVENTS_CREATED
- EVENTS_UPDATED
- EVENTS_DELETED
events:
$ref: '#/components/schemas/Event'
listingsWebhook:
post:
operationId: listingsWebhook
tags:
- Listings
summary: 'Listings: Webhook'
description: Sends an updated Listing object to your server.
requestBody:
description: The updated Listing
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- LISTING_UPDATED
listing:
$ref: '#/components/schemas/Listing'
entityListingsWebhook:
post:
operationId: entityListingsWebhook
tags:
- Listings
summary: 'Entity Listings: Webhook'
description: Sends an updated Entity Listing object to your server. This endpoint currently only supports Event Listings.
requestBody:
description: The updated Listing
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- LISTING_UPDATED
listing:
$ref: '#/components/schemas/EntityListing'
duplicatesWebhook:
post:
operationId: duplicatesWebhook
tags:
- Listings
summary: 'Duplicates: Webhook'
description: Sends an updated Duplicate object to your server.
requestBody:
description: The updated Duplicate
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- DUPLICATE_FOUND
- DUPLICATE_UPDATED
- DUPLICATE_DELETED
duplicate:
$ref: '#/components/schemas/Duplicate'
publisherSuggestionsWebhook:
post:
operationId: publisherSuggestionsWebhook
tags:
- Listings
summary: 'Publisher Suggestions: Webhook'
description: Sends an updated Publisher Suggestion object to your server.
requestBody:
description: The updated Publisher Suggestion
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- PUBLISHER_SUGGESTION_UPDATED
publisherSuggestion:
$ref: '#/components/schemas/PublisherSuggestion'
publisherDisruptionsWebhook:
post:
operationId: publisherDisruptionsWebhook
tags:
- Publisher Disruptions
summary: 'Publisher Disruptions: Webhook'
description: |
Sends a Publisher Disruption and its latest status update to your server.
requestBody:
description: The Publisher Disruption status event.
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- PUBLISHER_DISRUPTION_CREATED
- PUBLISHER_DISRUPTION_UPDATED
disruption:
$ref: '#/components/schemas/PublisherDisruption'
statusUpdate:
$ref: '#/components/schemas/PublisherDisruptionStatusUpdate'
reviewsWebhook:
post:
operationId: reviewsWebhook
tags:
- Reviews
summary: 'Reviews: Webhook'
description: |
Sends an updated Review object to your server whenever a Review or one of its Comments are created or modified
on the publisher's site.
**NOTE:** Not all publishers' reviews will be sent. For more details, please contact your Account Manager.
requestBody:
description: The updated Review
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- REVIEW_CREATED
- REVIEW_UPDATED
- REVIEW_COMMENT_UPDATED
- REVIEW_DELETED
review:
$ref: '#/components/schemas/WebhookReview'
reviewInvitesWebhook:
post:
operationId: reviewInvitationsWebhook
tags:
- Reviews
summary: 'Reviews Invitations: Webhook'
description: |
Sends an updated invitation object to your server whenever a new invitation is added to our system.
requestBody:
description: The new Review Invitation
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- INVITATION_ADDED
invitation:
$ref: '#/components/schemas/CreatedReviewInvitation'
unlinkAccountWebhook:
post:
operationId: unlinkWebhook
tags:
- App Directory
summary: 'Account Unlink: Webhook'
description: Fired when an account uninstalls your App.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- ACCOUNT_UNLINKED
addRequestWebhook:
post:
operationId: addRequestWebhook
tags:
- Agreements
summary: 'Add Request Update: Webhook'
description: Fired when an Add Request is updated.
requestBody:
description: The updated Add Request
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- AGREEMENTS_ADD_REQUEST_UPDATED
addRequest:
$ref: '#/components/schemas/AddRequest'
contentWebhook:
post:
operationId: contentWebhook
tags:
- Content
summary: 'Content: Webhook'
description: |
Sends an updated record to your server whenever the data in the selected Content Endpoint is updated, or the record is no longer included in the Content Endpoint.
**NOTE:** Content Webhook Events are slightly different than other Yext Webhooks. Each message will contain one of the following meta.eventType values:
- *RECORD* - This eventType indicates that a record has been added or updated which is included in the Content Endpoint configuration.
- *TOMBSTONE* - This eventType indicates that a record no longer is part of the data included in the Content Endpoint. Tombstones will be sent when a record no longer matches the filter criteria for the configured Content Endpoint, or the record has been deleted.
requestBody:
description: The updated record.
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- RECORD
- TOMBSTONE
actor:
type: string
enum:
- API
- USER
- YEXT_SYSTEM
docs:
type: array
items:
type: object
description: Document containing the data configured for your Content Endpoint. This will be empty if the eventType is TOMBSTONE.
additionalProperties: true
example:
uid: '10000000'
name: Yext
suggestionsWebhook:
post:
operationId: suggestionsWebhook
tags:
- Knowledge Manager
summary: 'Suggestions: Webhook'
description: |
Sends an updated Suggestion object to your server.
**NOTE:**
* App must have **Manage Suggestions: Read/Write** permission to set up webhook.
requestBody:
description: The updated Suggestion
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- SUGGESTION_CREATED
- SUGGESTION_APPROVED
- SUGGESTION_REJECTED
- SUGGESTION_CONTENT_UPDATED
- SUGGESTION_CANCELED
- SUGGESTION_ASSIGNED
- SUGGESTION_COMMENT_CREATED
- SUGGESTION_LOCKED
- SUGGESTION_UNLOCKED
- SUGGESTION_INVALIDATED
suggestion:
$ref: '#/components/schemas/SuggestionRead'
socialPostWebhook:
post:
operationId: socialPostWebhook
tags:
- Social
summary: 'Social Post: Webhook'
description: Sends an updated Social Post object to your server. Only affected entity posts are included in the `EntityPost` object. Webhooks are not guaranteed to be sent in order; the `timestamp` field should be used to determine ordering. The webhook will always contain the latest `status` of the Post (i.e. if a Post was created and published quickly, the webhook may indicate that the status is `POST_SUCCEEDED` even for a `SOCIAL_POST_CREATED` event.
requestBody:
description: The updated Social Post
required: true
content:
application/json:
schema:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/RequestMeta'
properties:
eventType:
type: string
enum:
- SOCIAL_POST_CREATED
- SOCIAL_POST_UPDATED
post:
$ref: '#/components/schemas/Post'
tags:
- name: Webhooks
components:
schemas:
RequestMeta:
type: object
properties:
uuid:
type: string
description: Unique ID for this request.
timestamp:
type: string
description: Official time the change occurred (milliseconds since epoch).
accountId:
type: string
description: Account ID this request pertains to.
appSpecificAccountId:
type: string
description: |
An app-specific ID that links your app to a Yext account. Yext will automatically assign this ID upon app installation.
**NOTE:** Your app's **`appSpecificAccountId`** is not the same as an **`accountId`** for a Yext account. It cannot be used in place of an **`accountId`** in request URLs.
Entity:
additionalProperties: false
type: object
properties:
meta:
additionalProperties: false
type: object
properties:
accountId:
minLength: 0
type: string
description: ID of the account associated with this Entity
countryCode:
minLength: 0
type: string
description: |-
Country code of this Entity's Language Profile (defaults to the country of the account)
Filtering Type: `text`
createdTimestamp:
minLength: 0
type: string
description: The timestamp of when the entity record was created.
entityType:
minLength: 0
type: string
description: |-
This Entity's type (e.g., location, event)
Filtering Type: `text`
folderId:
minLength: 0
type: string
description: |-
The ID of the folder containing this Entity
Filtering Type: `text`
id:
minLength: 0
type: string
description: |-
ID of this Entity
Filtering Type: `text`
labels:
uniqueItems: false
type: array
items:
minLength: 0
type: string
description: 'Filtering Type: `text`'
description: |-
This Entity's labels. If the **`v`** parameter is before `20211215`, this will be an integer.
Filtering Type: `list of text`
language:
minLength: 0
type: string
description: |-
Language code of this Entity's Language Profile (defaults to the language code of the account)
Filtering Type: `text`
timestamp:
minLength: 0
type: string
description: |
The timestamp of the most recent change to this entity record. Will be ignored when the client is saving entity data to Yext.
**NOTE:** The timestamp may change even if observable fields stay the same.
uid:
minLength: 0
type: string
description: |
The internal ID of the entity. This UID is a static, globally unique ID. Note that this value cannot be used in place of id in API calls to retrieve or edit Entity information.
If the v param is before `20221206`, the returned value will be a hashed version of the entity UID (aka internal ID of the entity).
description: |-
Contains the metadata about the entity.
```
Eligible For:
* atm
* event
* faq
* healthcareFacility
* healthcareProfessional
* hotel
* job
* location
* restaurant
```
name:
minLength: 0
maxLength: 5000
type: string
description: |-
Cannot Include:
* HTML markup
Filtering Type: `text`
```
Eligible For:
* atm
* board
* brand
* card
* contactCard
* event
* faq
* financialProfessional
* healthcareFacility
* healthcareProfessional
* helpArticle
* hotel
* hotelRoomType
* job
* location
* organization
* product
* restaurant
```
address:
additionalProperties: false
type: object
properties:
city:
minLength: 0
maxLength: 255
type: string
description: |-
The city the entity (or the entity's location) is in
Cannot Include:
* a URL or domain name
Filtering Type: `text`
countryCode:
minLength: 0
pattern: ^[a-zA-Z]{2}$
type: string
description: 'Filtering Type: `text`'
extraDescription:
minLength: 0
maxLength: 255
type: string
description: |-
Provides additional information to help consumers get to the entity. This string appears along with the entity's address (e.g., `In Menlo Mall, 3rd Floor`).
It may also be used in conjunction with a hidden address (i.e., when **`addressHidden`** is `true`) to give consumers information about where the entity can be found (e.g., `Servicing the New York area`).
Filtering Type: `text`
line1:
minLength: 0
maxLength: 255
type: string
description: |-
Cannot Include:
* a URL or domain name
Filtering Type: `text`
line2:
minLength: 0
maxLength: 255
type: string
description: |-
Cannot Include:
* a URL or domain name
Filtering Type: `text`
postalCode:
minLength: 0
maxLength: 10
type: string
description: |-
The entity's postal code. The postal code must be valid for the entity's country. Cannot include a URL or domain name.
Cannot Include:
* a URL or domain name
Filtering Type: `text`
region:
minLength: 0
maxLength: 255
type: string
description: |-
The name of the entity's region or state.
Cannot Include:
* a URL or domain name
Filtering Type: `text`
sublocality:
minLength: 0
maxLength: 255
type: string
description: |-
The name of the entity's sublocality
Cannot Include:
* a URL or domain name
Filtering Type: `text`
description: |-
Contains the address of the entity (or where the entity is located)
Must be a valid address
Cannot be a P.O. Box
If the entity is an `event`, either an **`address`** value or a **`linkedLocation`** value can be provided.
Filtering Type: `object`
```
Eligible For:
* atm
* event
* financialProfessional
* healthcareFacility
* healthcareProfessional
* hotel
* location
* restaurant
```
acceptingNewPatients:
type: boolean
description: |-
Indicates whether the healthcare provider is accepting new patients.
Filtering Type: `boolean`
```
Eligible For:
* healthcareFacility
* healthcareProfessional
```
acceptsReservations:
type: boolean
description: |-
Indicates whether the entity accepts reservations.
Filtering Type: `boolean`
```
Eligible For:
* restaurant
```
accessHours:
additionalProperties: false
type: object
properties:
friday:
additionalProperties: false
type: object
properties:
isClosed:
type: boolean
description: |-
Indicates if the access hours are "closed" on Friday.
Filtering Type: `boolean`
openIntervals:
uniqueItems: false
type: array
items:
required:
- start
- end
additionalProperties: false
type: object
properties:
end:
format: time
type: string
description: |-
The end time of the interval in `hh:mm` format (e.g., `"06:30"`, `"17:00"`).
Filtering Type: `time`
start:
format: time
type: string
description: |-
The start time of the interval in `hh:mm` format (e.g., `"06:30"`, `"17:00"`).
Filtering Type: `time`
description: 'Filtering Type: `object`'
description: |-
Contains the time intervals for which the Entity is open on Friday. Note that if isClosed is set to true, "openIntervals" cannot be provided in an update.
Filtering Type: `list of object`
description: 'Filtering Type: `object`'
holidayHours:
description: |-
**NOTE:** The list of Holiday Hours that you send us must be comprehensive. For example, if you send us a list of Holiday Hours that does not include Holiday Hours that you sent in your last update, Yext considers the missing Holiday Hours to be deleted, and we remove them.
Array must be ordered.
Filtering Type: `list of object`
uniqueItems: true
type: array
items:
required:
- date
additionalProperties: false
type: object
properties:
date:
format: date
type: string
description: |-
Date on which the holiday hours will be in effect. Cannot be in the past.
Date must be on or after 1970-01-01
Date must be before or on 2038-01-01
Filtering Type: `date`
isClosed:
type: boolean
description: |-
Indicates if the access hours are "closed" on on the given date.
Filtering Type: `boolean`
isRegularHours:
type: boolean
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.
Filtering Type: `boolean`
openIntervals:
uniqueItems: false
type: array
items:
required:
- start
- end
additionalProperties: false
type: object
properties:
end:
format: time
type: string
description: |-
The end time of the interval in `hh:mm` format (e.g., `"06:30"`, `"17:00"`).
Filtering Type: `time`
start:
format: time
type: string
description: |-
The start time of the interval in `hh:mm` format (e.g., `"06:30"`, `"17:00"`).
Filtering Type: `time`
description: 'Filtering Type: `object`'
description: |-
Contains the time intervals for which the Entity is open on the specified date.
Filtering Type: `list of object`
description: 'Filtering Type: `object`'
monday:
additionalProperties: false
type: object
properties:
isClosed:
type: boolean
description: |-
Indicates if the access hours are "closed" on Monday.
Filtering Type: `boolean`
openIntervals:
uniqueItems: false
type: array
items:
required:
- start
- end
additionalProperties: false
type: object
properties:
end:
format: time
type: string
description: |-
The end time of the interval in `hh:mm` format (e.g., `"06:30"`, `"17:00"`).
Filtering Type: `time`
start:
format: time
type: string
description: |-
The start time of the interval in `hh:mm` format (e.g., `"06:30"`, `"17:00"`).
Filtering Type: `time`
description: 'Filtering Type: `object`'
description: |-
Contains the time intervals for which the Entity is open on
# --- truncated at 32 KB (463 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/yext/refs/heads/main/openapi/yext-webhooks-openapi.yml