Resources Commands
The resources command group will allow you to manage Configuration as Code (CaC) resources in your Yext accounts. Much of the configuration and setup of your Yext account is actually stored in JSON configuration files that can be modified programmatically through the CLI or Admin Console. This provides you, as developers, a high level of flexibility to manage your account’s resources in whatever way makes the most sense with your existing applications.
There are three major commands in this command group:
pull - Save Configuration as Code resources from a Yext account to your local machine in a directory structure
apply - Configure a Yext account with Configuration as Code resources stored on your local machine
diff - Show the diff between the resources in a Yext account and your local version
How do these commands all fit together? If you think about this in the context of a workflow, you would want to:
- Run
yext init
to initialize your account - Run
yext resources pull [DESTINATION-DIR]
to pull your account’s configuration files locally. - Make modifications to files or add new files on your machine
- Run
yext resources diff [SOURCE-DIR]
(optionally) to review your changes - Run
yext resources apply [SOURCE-DIR]
to update your account
You can follow along in our Getting Started with Updating CaC Resources via CLI guide
Common Use Cases
You can combine these commands to do things like:
- Copy configuration from your Sandbox account to your Production account
- Populate a Sandbox testing account with production configuration
- Save your Yext account’s configuration to revert to later on
apply
Applies configuration stored in the source directory to the account that the current credential is pointing to.
Usage
yext resources apply [SOURCE-DIR] [flags]
Flags
Flag | Description |
---|---|
-h , --help |
Help for resources apply |
-d , --dry |
Validate and view the result of an apply operation without persisting changes |
-f , --force |
Force apply resources without a confirmation prompt |
--namespace strings |
List of namespaces that should be affected. Any resources outside of the listed namespaces will not be applied. See examples below. |
Example usage of --name
flag
If you are trying to:
Apply resources in myFolder that are in the default namespace, run:
yext resources apply myFolder --namespace default
Apply resources in myFolder that are in the default namespace OR myNamespace
yext resources apply myFolder --namespace default,myNamespace
diff
Displays the differences between your local version of resources and your resources stored in Yext. This is powerful for operations where you want to review the changes before they are applied.
Usage
yext resources diff [SOURCE-DIR] [flags]
Flags
Flag | Description |
---|---|
-h , --help |
Help for resources diff |
Prerequisites
You must have Git installed in order to run this command. If Git is not installed, please follow the instructions before running this command.
pull
Pulls/fetches configuration from Yext and stores them in code files at the specified destination directory. Files are pulled from the Yext account specified by the current credential.
Usage
yext resources pull [DESTINATION-DIR] [flags]
Flags
Flag | Description |
---|---|
-h , --help |
Help for resources pull |
--name strings |
List of resource names. If this is included, only resources with the specified names are returned. Resources are specified with their full id including namespace. See examples below. |
--namespace strings |
List of namespaces. If this is included, only resources in the listed namespaces are returned. See examples below. |
--type strings |
List of resource types, for example km, km/entity-type, analytics, etc. If this is included, only resources of the listed types will be returned. A resource type is specified by the path after schema.yext.com/config/ in the $schema field of its Config as Code JSON schema definition. JSON schema definitions can be found here . |
--exclude strings |
List of resource types to exclude. If this is included, the resources of the listed types will be excluded. A resource type is specified by the path after https://schema.yext.com/config/ in the $schema field of its Config as Code JSON schema definition. JSON schema definitions can be found here . |
--organize-by-resource-type |
Organize the pulled resources by resource type, as opposed to organize by namespace. See examples below. |
Example usage of --name
flag
If you are trying to:
Pull resource called myResource in the default namespace to myFolder, run:
yext resources pull myFolder --name myResource
Pull resource called myResource in the namespace myNamespace to myFolder, run:
yext resources pull myFolder --name myNamespace_myResource
Pull resources called myResource1 and myResource2 in the default namespace to myFolder, run:
yext resources pull myFolder --name myResource1,myResource2
Example usage of --namespace
flag
If you are trying to:
Pull resources in the default namespace to myFolder, run:
yext resources pull myFolder --namespace default
Pull resources in the default namespace and myNamespace to myFolder, run:
yext resources pull myFolder --namespace default,myNamespace
Example usage of --type
Flag
Pull all entity-type resources to myFolder, run:
yext resources pull myFolder --type km/entity-type
Pull all entity-type resources and all role resources to myFolder, run:
yext resources pull myFolder --type km/entity-type,platform/role
Pull all km (content) resources to myFolder, run:
yext resources pull myFolder --type km
Example usage of --exclude
Flag
Pull all resources except km/entity to myFolder, run:
yext resources pull myFolder --exclude km/entity
Pull all resources except entity-type and role resources to myFolder, run:
yext resources pull myFolder --exclude km/entity-type,platform/role
Example usage of --organize-by-resource-type
Flag
Pull resources and organize by resource type, run:
yext resources pull myFolder --organize-by-resource-type
copy
Applies configurations stored in the source account to the destination account.
Notable operations the copy command does:
- Pulls dependencies.json from source account and applies to the destination account (if destination account is a non-production account).
- Pulls with pages-force-template true and then edits the pages/site-config JSONs by copying value at JSON path /repoConfig/templateRepo to /repoConfig/targetRepoName
- Edits the km/entity config JSONs by removing JSON paths /content/googleAttributes and /content/categoryIds
Usage
yext resources copy [flags]
Flags
Flag | Description |
---|---|
-h , --help |
Help for resources copy |
Resources Commands API
Property | Type | Default | Description |
---|---|---|---|
-d, --dry
|
|
Validate and view the result of an apply operation without persisting changes | |
--namespace strings
|
|
List of namespaces that should be affected. Any resources outside of the listed namespaces will not be applied. |