Yext Webhooks

Yext Webhooks from Yext, described in OpenAPI.

OpenAPI Specification

yext-webhooks-openapi.yml Raw ↑
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