openapi: 3.0.0
info:
title: Yext Admin Account Settings Administrative API API
version: '2.0'
description: 'NOTE: You need a sandbox account to test your Administrative API integration. Contact your Account Manager to have one created for you.'
servers:
- url: https://api.yextapis.com/v2
security:
- api_key: []
- api-key: []
tags:
- name: Administrative API
description: 'NOTE: You need a sandbox account to test your Administrative API integration. Contact your Account Manager to have one created for you.'
paths:
/accounts/{accountId}/availableservices:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
get:
operationId: listAvailableServices
tags:
- Administrative API
summary: 'Available Services: List'
description: Return list of services available to you under your agreements
responses:
'200':
$ref: '#/components/responses/AvailableServicesResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/newlocationaddrequests:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
post:
operationId: createNewLocationAddRequest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NewLocationAddRequest'
tags:
- Administrative API
summary: 'Add Requests: Create (New Location)'
description: 'Request that a new location be added and services added to it. The location is created only if the "status" field returned is "COMPLETE". In most cases, the "status" returned in the Add Request: Create response will be "SUBMITTED". For a list and explanation of each possible "status", please see the [**Add Requests: Get (Location)**](#operation/getAddRequest) section.
To receive real-time updates on the status of your Add Request, we recommend that you configure the [**Add Request Update: Webhook**](../webhooks/index.html#operation/addRequestWebhook) in the Developer Console (see the [**Configure Webhooks**](http://developer.yext.com/docs/guides/configure-webhooks/) guide for more information). Alternatively, use the [**Add Requests: Get (Location)**](#operation/getAddRequest) call to determine the current Add Request "status".
'
responses:
'200':
$ref: '#/components/responses/NewLocationAddRequestsResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/existinglocationaddrequests:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
post:
operationId: createExistingLocationAddRequest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExistingLocationAddRequest'
tags:
- Administrative API
summary: 'Add Requests: Create (Existing Location)'
description: Request that one or more available services be added to an existing location.
responses:
'200':
$ref: '#/components/responses/ExistingLocationAddRequestsResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/existingsubaccountaddrequests:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
post:
operationId: createExistingSubAccountAddRequest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExistingSubAccountAddRequest'
tags:
- Administrative API
summary: 'Add Requests: Create (Existing Account)'
description: Request that one or more available services be added (or increased in quantity) to an existing account.
responses:
'200':
$ref: '#/components/responses/ExistingSubAccountAddRequestsResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/cancelservices:
parameters:
- name: accountId
in: path
required: true
schema:
type: string
description: 'The ID of the account.
**NOTE:** If you would like to cancel location services under a sub-account, enter the ID of the *main account* rather than the sub-account.
'
- $ref: '#/components/parameters/v'
post:
operationId: cancelServices
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CancelServicesRequest'
tags:
- Administrative API
summary: 'Services: Cancel (Location)'
description: 'Cancel one or more active services provisioned on the location.
**NOTE:** If you have added location services under a sub-account, use this endpoint on your *main account* to cancel them.
'
responses:
'200':
$ref: '#/components/responses/CancelServicesResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/cancelsubaccountservices:
parameters:
- name: accountId
in: path
required: true
schema:
type: string
description: 'The ID of the account.
**NOTE:** Enter the ID of the *main account* rather than the sub-account to cancel services provisioned on the sub-account.
'
- $ref: '#/components/parameters/v'
post:
operationId: cancelSubAccountServices
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CancelSubAccountServicesRequest'
tags:
- Administrative API
summary: 'Services: Cancel (Account)'
description: 'Cancel (or decrease the quantity of) one or more active services provisioned on the account.
**NOTE:** If you have added services to a sub-account, use this endpoint on your *main account* to cancel them.
'
responses:
'200':
$ref: '#/components/responses/CancelSubAccountServicesResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/cancelallsubaccountservices:
parameters:
- name: accountId
in: path
required: true
schema:
type: string
description: 'The ID of the account.
**NOTE:** Enter the ID of the *main account* rather than the sub-account to cancel all of the services provisioned on the sub-account.
'
- $ref: '#/components/parameters/v'
post:
operationId: cancelAllSubAccountServices
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CancelAllSubAccountServicesRequest'
tags:
- Administrative API
summary: 'Services: Cancel All (Account)'
description: 'Cancel all active services (all quantities) provisioned on the account.
**NOTE:** If you have added services to a sub-account, use this endpoint on your *main account* to cancel all of them.
'
responses:
'200':
$ref: '#/components/responses/CancelAllSubAccountServicesResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/processaddrequest:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
post:
operationId: createProcessReviewAddRequest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessReviewAddRequest'
tags:
- Administrative API
summary: 'Add Requests: Process (Sandbox API Only)'
description: Request that an add request in REVIEW be processed to COMPLETE, CANCELED, or FAILED. Only applicable for location add requests.
responses:
'200':
$ref: '#/components/responses/EmptyResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/addrequests:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
get:
operationId: listAddRequests
parameters:
- name: status
in: query
schema:
type: string
enum:
- SUBMITTED
- PROCESSING
- COMPLETE
- CANCELED
- REVIEW
- FAILED
description: Filters the list to add requests in a specific status.
- name: submittedAfter
in: query
schema:
type: string
format: date
description: (`YYYY-MM-DDThh:mm:ss` format)
- name: submittedBefore
in: query
schema:
type: string
format: date
description: (`YYYY-MM-DDThh:mm:ss` format)
- name: updatedAfter
in: query
schema:
type: string
format: date
description: (`YYYY-MM-DDThh:mm:ss` format)
- name: updatedBefore
in: query
schema:
type: string
format: date
description: (`YYYY-MM-DDThh:mm:ss` format)
- name: sku
in: query
schema:
type: string
- name: agreementId
in: query
schema:
type: integer
- name: locationId
in: query
schema:
type: string
- name: limit
in: query
schema:
type: integer
maximum: 1000
default: 100
- $ref: '#/components/parameters/offset'
tags:
- Administrative API
summary: 'Add Requests: List (Location)'
description: "Get all of the add requests in the account that were created for locations. The response includes both New Location Add Requests and Existing Location Add Requests.\n\nPossible `status` values for each add request:\n * SUBMITTED - The request has been submitted for processing. Updated status should be available soon, usually within seconds.\n * PROCESSING - The request is currently being processed. Updated status should be available soon, usually within seconds.\n * COMPLETE - The request was successfully processed and service was added. You can verify this by retrieving services for the location.\n * CANCELED - The request was purposefully canceled by Yext and was not processed. Details are available in the *results* field.\n * REVIEW - The request is being reviewed by Yext, most likely because this location may be a duplicate of another location already\n receiving this service through Yext. Once the review is complete, *status* will be updated to either CANCELED or COMPLETE.\n * FAILED - Processing the request failed due to a technical issue. Details may be available in the *statusDetail* field. No changes were made to your account, so you can\n try the request again.\n"
responses:
'200':
$ref: '#/components/responses/AddRequestsResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/addrequests/{addRequestId}:
parameters:
- $ref: '#/components/parameters/accountId'
- name: addRequestId
in: path
schema:
type: integer
description: 'addRequestId returned from a previous call to **Add Requests: Create (New Location)**, **Add Requests: Create (Existing Location)**, or retrieved from **Add Requests: List (Location)**
'
required: true
- $ref: '#/components/parameters/v'
get:
operationId: getAddRequest
tags:
- Administrative API
summary: 'Add Requests: Get (Location)'
description: "Get status information about an add request that was previously created for a location.\n\nPossible statuses:\n * SUBMITTED - The request has been submitted for processing. Updated status should be available soon, usually within seconds.\n * PROCESSING - The request is currently being processed. Updated status should be available soon, usually within seconds.\n * COMPLETE - The request was successfully processed and service was added. You can verify this by retrieving services for the location.\n * CANCELED - The request was purposefully canceled by Yext and was not processed. Details are available in the *results* field.\n * REVIEW - The request is being reviewed by Yext, most likely because this location may be a duplicate of another location already\n receiving this service through Yext. Once the review is complete, *status* will be updated to either CANCELED or COMPLETE.\n * FAILED - Processing the request failed due to a technical issue. Details may be available in the *statusDetail* field. No changes were made to your account, so you can\n try the request again.\n"
responses:
'200':
$ref: '#/components/responses/AddRequestResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/subaccountaddrequests:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
get:
operationId: listSubAccountAddRequests
parameters:
- name: status
in: query
schema:
type: string
enum:
- SUBMITTED
- PROCESSING
- COMPLETE
- CANCELED
- FAILED
description: Filters the list to add requests in a specific status.
- name: submittedAfter
in: query
schema:
type: string
format: date
description: (`YYYY-MM-DDThh:mm:ss` format)
- name: submittedBefore
in: query
schema:
type: string
format: date
description: (`YYYY-MM-DDThh:mm:ss` format)
- name: updatedAfter
in: query
schema:
type: string
format: date
description: (`YYYY-MM-DDThh:mm:ss` format)
- name: updatedBefore
in: query
schema:
type: string
format: date
description: (`YYYY-MM-DDThh:mm:ss` format)
- name: sku
in: query
schema:
type: string
- name: agreementId
in: query
schema:
type: integer
- name: subAccountId
in: query
schema:
type: string
- name: limit
in: query
schema:
type: integer
maximum: 1000
default: 100
- $ref: '#/components/parameters/offset'
tags:
- Administrative API
summary: 'Add Requests: List (Sub-Account)'
description: "Get all of the add requests in the account that were created for sub-accounts.\n\nPossible `status` values for each add request:\n * SUBMITTED - The request has been submitted for processing. Updated status should be available soon, usually within seconds.\n * PROCESSING - The request is currently being processed. Updated status should be available soon, usually within seconds.\n * COMPLETE - The request was successfully processed and service was added. You can verify this by retrieving services for the sub-account.\n * CANCELED - The request was purposefully canceled by Yext and was not processed. Details are available in the *results* field.\n * FAILED - Processing the request failed due to a technical issue. Details may be available in the *statusDetail* field. No changes were made to your account, so you can\n try the request again.\n"
responses:
'200':
$ref: '#/components/responses/SubAccountAddRequestsResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/subaccountaddrequests/{addRequestId}:
parameters:
- $ref: '#/components/parameters/accountId'
- name: addRequestId
in: path
schema:
type: integer
description: 'addRequestId returned from a previous call to **Add Requests: Create (Existing Account)** or retrieved from **Add Requests: List (Sub-Account)**
'
required: true
- $ref: '#/components/parameters/v'
get:
operationId: getSubAccountAddRequest
tags:
- Administrative API
summary: 'Add Requests: Get (Sub-Account)'
description: "Get status information about an add request that was previously created for a sub-account.\n\nPossible statuses:\n * SUBMITTED - The request has been submitted for processing. Updated status should be available soon, usually within seconds.\n * PROCESSING - The request is currently being processed. Updated status should be available soon, usually within seconds.\n * COMPLETE - The request was successfully processed and service was added. You can verify this by retrieving services for the sub-account.\n * CANCELED - The request was purposefully canceled by Yext and was not processed. Details are available in the *results* field.\n * FAILED - Processing the request failed due to a technical issue. Details may be available in the *statusDetail* field. No changes were made to your account, so you can\n try the request again.\n"
responses:
'200':
$ref: '#/components/responses/SubAccountAddRequestResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/services:
parameters:
- name: accountId
in: path
required: true
schema:
type: string
description: 'The ID of the account.
**NOTE:** To retrieve information about services provisioned on a location under a sub-account, enter the ID of the *main account* rather than the sub-account.
'
- $ref: '#/components/parameters/v'
get:
operationId: listServices
tags:
- Administrative API
summary: 'Services: List (Location)'
description: 'Retrieve a list of all services provisioned on a location.
**NOTE:** If you have added location services under sub-accounts, they will be returned from this endpoint on your *main account*.
'
parameters:
- name: sku
in: query
schema:
type: string
- name: locationId
in: query
schema:
type: string
- name: locationAccountId
in: query
schema:
type: string
description: '*(Portal Mode only)* Filters on the account that the location receiving service is in.
'
- name: status
in: query
schema:
type: string
enum:
- ACTIVE
- STOPPED
- ALL
description: Status of the service. By default, returns only Active services, not All services.
- name: agreementId
in: query
schema:
type: integer
- name: limit
in: query
schema:
type: integer
maximum: 1000
default: 100
- $ref: '#/components/parameters/offset'
responses:
'200':
$ref: '#/components/responses/ServicesResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/subaccountservices:
parameters:
- name: accountId
in: path
required: true
schema:
type: string
description: 'The ID of the account.
**NOTE:** To retrieve information about services provisioned on a sub-account, enter the ID of the *main account* rather than the sub-account.
'
- $ref: '#/components/parameters/v'
get:
operationId: listSubAccountServices
tags:
- Administrative API
summary: 'Services: List (Sub-Account)'
description: 'Retrieve a list of all services provisioned on a sub-account.
**NOTE:** If you have added services to sub-accounts, they will be returned from this endpoint on your *main account*.
'
parameters:
- name: sku
in: query
schema:
type: string
- name: subAccountId
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
enum:
- ACTIVE
- STOPPED
- ALL
description: Status of the service. By default, returns only Active services, not All services.
- name: agreementId
in: query
schema:
type: integer
- name: limit
in: query
schema:
type: integer
maximum: 1000
default: 100
- $ref: '#/components/parameters/offset'
responses:
'200':
$ref: '#/components/responses/SubAccountServicesResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/createsubaccount:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
post:
operationId: createSubAccount
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSubAccountRequest'
tags:
- Administrative API
summary: 'Accounts: Create Sub-Account'
description: Request to create a new empty sub-account under this account.
responses:
'200':
$ref: '#/components/responses/CreateSubAccountResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/resourcesapplyrequests:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
post:
operationId: resourcesApplyRequest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ResourcesApplyRequest'
tags:
- Administrative API
summary: 'Resources Apply Request: Create (Account)'
description: 'Create a request to asynchronously apply resources using the URL of a GitHub repository.
'
responses:
'200':
$ref: '#/components/responses/ResourcesApplyRequestResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}/resourcesapplyrequests/{requestId}:
parameters:
- name: requestId
in: path
schema:
type: integer
description: 'requestId returned from a previous call to **Resources Apply Requests: Create (Account)**
'
required: true
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
get:
operationId: getResourcesApplyRequestStatus
tags:
- Administrative API
summary: 'Resources Apply Request Status: Get (Account)'
description: 'Make a request to get the status of the Resources Apply Request.
'
responses:
'200':
$ref: '#/components/responses/ResourcesApplyRequestResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts:
parameters:
- $ref: '#/components/parameters/v'
get:
operationId: listAccounts
parameters:
- name: name
in: query
schema:
type: string
description: Returns only accounts whose name contains the provided string
- name: limit
in: query
schema:
type: integer
maximum: 1000
default: 100
- $ref: '#/components/parameters/offset'
tags:
- Administrative API
summary: 'Accounts: List'
description: List all accounts that you have access to. Unless you are in Partner Portal mode, this will only be your own account.
responses:
'200':
$ref: '#/components/responses/AccountsResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{accountId}:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/v'
get:
operationId: getAccount
tags:
- Administrative API
summary: 'Accounts: Get'
description: Get details for an account
responses:
'200':
$ref: '#/components/responses/AccountResponse'
default:
$ref: '#/components/responses/ErrorResponse'
put:
operationId: updateAccount
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAccount'
tags:
- Administrative API
summary: 'Accounts: Update'
description: Update an account's name or ID
responses:
'200':
$ref: '#/components/responses/IdResponse'
default:
$ref: '#/components/responses/ErrorResponse'
components:
schemas:
Photo:
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.
Account:
type: object
properties:
accountId:
type: string
example: CUST-439843
locationCount:
type: integer
readOnly: true
description: The number of locations in this account.
subAccountCount:
type: integer
readOnly: true
description: The number of sub-accounts directly under this account, if any.
parentAccountId:
type: string
description: Customer-provided ID of the account that this is a sub-account of, if any. Not provided if this is a top-level account.
accountName:
type: string
description: The name of this account.
contactFirstName:
type: string
description: First name of the contact user for this account.
contactLastName:
type: string
description: Last name of the contact user for this account.
contactPhone:
type: string
description: Phone number of the contact user for this account.
contactEmail:
type: string
description: Email address of the contact user for this account.
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.\n\n```\nEligible For: \n * atm\n * event\n * faq\n * healthcareFacility\n * healthcareProfessional\n * hotel\n * job\n * location\n * restaurant\n```"
name:
minLength: 0
maxLength: 5000
type: string
description: "\n\n\nCannot Include:\n* HTML markup\n\nFiltering Type: `text`\n\n```\nEligible For: \n * atm\n * board\n * brand\n * card\n * contactCard\n * event\n * faq\n * financialProfessional\n * healthcareFacility\n * healthcareProfessional\n * helpArticle\n * hotel\n * hotelRoomType\n * job\n * location\n * organization\n * product\n * restaurant\n```"
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:
minLengt
# --- truncated at 32 KB (424 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/yext/refs/heads/main/openapi/yext-administrative-api-api-openapi.yml