-
DAYS
-
HOURS
-
MINUTES
-
SECONDS
-
MILLISECONDS
-
NANOSECONDS
Veeva Vault Connector 1.2 Reference - Mule 4
Anypoint Connector for Veeva Vault (Veeva Vault Connector) works with the Veeva Vault REST, Bulk, and Streaming API, depending on the operations you configure.
Connection Configuration
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Name |
String |
The name for this configuration. Connectors reference the configuration with this name. |
X |
|
Vault URL |
String |
The URL of the Veeva Vault instance required for the connection. |
X |
|
Username |
String |
Username used to initialize the session. |
X |
|
Password |
String |
Password used to authenticate the user. |
X |
|
Version |
String |
Veeva Vault API version. |
v20.1 |
|
Client Id |
String |
The client ID to send with each request header to the Veeva Vault instance for tracking purposes. The format is |
X |
Response Timeout (Advanced Tab)
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Response Timeout |
Integer |
Maximum time, in milliseconds, that the connector waits for the Veeva Vault response. If the time elapses, a |
|
X |
Burst API Limit Profile (Advanced Tab)
<veevavault:burst-api-limit-profile/>
The burst API limit profile configuration to act upon if the specified burst API limit of the Veeva Vault API reaches the threshold of the configured value or is exceeded.
If Burst API limit config is enabled (default), then the connector evaluates the Veeva Vault API’s response header (X-VaultAPI-BurstLimitRemaining
) value against the specified API Limit threshold value. If the remaining burst API limit reaches or exceeds this threshold value, the connector waits for the specified amount of time to restart the count for the Burst Limit Remaining.
For more information, see API Rate Limit Headers.
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
API Limit Threshold |
Integer |
Enter the Veeva Vault API threshold limit. When this threshold is reached or exceeded, the connector waits the specified time. |
|
X |
Wait Time |
Integer |
Time the connector will wait once threshold value is reached or exceeds the remaining API calls. |
|
X |
Time Unit |
|
X |
Daily API Limit Profile (Advanced Tab)
<veevavault:daily-api-limit-profile/>
The Daily API Limit Profile to configure API limit threshold for evaluation with remaining daily API limit calls. Once daily API limit calls reach or exceed the specified threshold limit an exception is thrown. By default, its disable. For more information refer API Rate Limit Headers.
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
API Limit Threshold |
Integer |
The API Limit Threshold value to set the allowed daily limit for the number of API calls. Once the threshold is reached, the connector throws an |
|
X |
Operations
Create Documents
<veevavault:create-documents>
This operation creates documents on Veeva Vault using document metadata provided in CSV or JSON format.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Metadata Format |
Enum (String):
|
Metadata format (CSV or JSON). |
X |
|
Document Metadata |
Input Stream |
The document metadata in CSV or JSON format as Input Stream. The following is the metadata: |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Create Document Renditions
<veevavault:create-document-renditions>
Create Document Renditions on vault with provided metadata in CSV or JSON format.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Metadata Format |
Enum (String)
|
Metadata format (CSV or JSON). |
X |
|
Document Metadata |
Input Stream |
The document metadata in CSV OR JSON format as Input Stream respective to Metadata format option selected. Following is the metadata:
|
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Create Object Records
<veevavault:create-object-records>
Create Object Records creates object records in bulk on vault using object metadata in CSV or JSON format.
Parameters
Name |
Type |
Description |
Default Value |
Required |
Object Name |
String |
The list of all vault objects available to select from the list; for example: |
X |
|
Metadata Format |
String |
Metadata format (CSV or JSON) |
X |
|
Object Metadata |
Input Stream |
The object metadata, in CSV OR JSON format as the Input Stream respective to the Metadata format option selected. Metadata is shown in the following image: |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Delete Document Renditions
<veevavault:delete-document-renditions>
Delete document renditions from the vault based on document renditions metadata provided in CSV or JSON format.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Metadata Format |
Enum (String)
|
Metadata format either CSV or JSON. |
X |
|
Document Metadata |
Input Stream |
The document metadata in CSV OR JSON format as Input Stream respective to Metadata format option selected. |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Delete Documents
<veevavault:delete-documents>
This operation deletes documents from the vault based on metadata document IDs provided in CSV or JSON format.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Metadata Format |
Enum (String)
|
Metadata format either CSV or JSON. |
X |
|
Document Metadata |
Input Stream |
The document metadata either in CSV OR JSON format as Input Stream respective to Metadata format option selected. Following is the metadata: |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Delete Object Records
<veevavault:delete-object-records>
This operation deletes object records in bulk on the vault using object ID metadata in CSV or JSON format.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Object Name |
String |
The list of all vault objects that are available to select from the list; for example: |
X |
|
Metadata Format |
Enum (String) CSV JSON |
Metadata format either CSV or JSON. |
X |
|
Object Metadata |
Input Stream |
The object metadata in CSV or JSON format as Input Stream respective to Metadata format option selected. |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Export Documents
<veevavault:export-documents>
This operation enables you to query a set of documents for export to your vault’s FTP staging server.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Metadata Format |
Enum (String)
|
Metadata format either CSV or JSON. |
X |
|
Document Metadata |
Input Stream |
The document metadata (document IDs) in CSV or JSON format as Input Stream respective to the Metadata Format option selected. The following image shows the metadata: |
#[payload] |
X |
Source |
Boolean |
Exclude source files. |
|
|
Renditions |
Boolean |
Include renditions. |
|
|
All Versions |
Boolean |
Include all versions or the latest version. |
|
|
Polling Interval |
Integer |
Poll the vault at the specified interval, in seconds, until the job is successful. |
|
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Get Audit Details
<veevavault:get-audit-details>
The Get Audit Details operation retrieves audit details for the specified audit type.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Audit Type |
String |
The list of audit types available on the vault from which to select; for example: |
X |
|
Start Date |
String |
The date from which to start retrieving audit information. Dates must be in the format |
||
End Date |
String |
The date from which to stop retrieving audit information. Dates must be in the format |
||
Fetch Size |
Integer |
The fetch size to which to limit the records per page. |
|
|
Batch Size |
Integer |
The batch size that accommodates the number of pages in the specified number of batches. |
|
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Get Document Renditions Types
<veevavault:get-document-renditions>
Get Document renditions types to retrieve document renditions details.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Document Metadata |
Input Stream |
The document metadata contains only documentID in CSV or JSON format as Input Stream. The following is the metadata: |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Get Documents
<veevavault:get-documents>
Get documents retrieves document details from the vault based on document type, subtype, and classification options selected. There is an option to provide document properties on which to build the VQL query, otherwise document properties are fetched based on type, subtype, and classification.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Type |
String |
The list of all document types that are available to select from. |
||
Subtype |
String |
The list of all document subtypes available on the vault to select from. |
||
Classification |
String |
The list of all document classifications available on vault to select from. |
||
Document Properties |
List<String> |
Insert document properties based on your business requirements into the list. If not provided, all queryable document properties are selected to build a VQL query and are invoked internally to retrieve document details. |
||
WHERE Clause |
String |
A WHERE clause that can be appended to the VQL query build dynamically. |
||
Fetch Size |
Integer |
The fetch size to which to limit the records per page. |
|
|
Batch Size |
Integer |
The batch size that accommodates the number of pages in the specified number of batches. |
|
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Get Object Records
<veevavault:get-object-records>
Get Object Records retrieves object records in bulk on the vault using object ID metadata in CSV or JSON format.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Object Name |
String |
The list of all vault objects available to select from. For example: |
X |
|
Object Fields |
List<String> |
Based on business requirements, you can insert object fields into the list. If not provided, all active object fields available are selected to build a VQL query, which is invoked internally to retrieve object records details. |
||
WHERE Clause |
String |
A WHERE clause to append to the VQL query build dynamically |
||
Fetch Size |
Integer |
The fetch size limit for records per page |
100 |
|
Batch Size |
Integer |
The batch size that accommodates the number of pages in the specified number of batches |
10 |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Get Picklists
<veevavault:get-picklists>
The Get Picklists operation retrieves all available values configured on a picklist.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Picklist Name |
String |
The list of audit types available on the vault to select from; for example: |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Invoke REST API
<veevavault:invoke-rest-api>
The Invoke REST API operation invokes Veeva Vault Rest APIs and returns responses in JSON (default) or XML format depending on the header Accept value provided. It’s important to use bulk Rest APIs whenever possible, rather than single APIs so as to maintain API rate limits.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Method |
String |
The list of methods to invoke REST API.
|
|
X |
Path |
String |
The URI Path for where to send the request |
X |
|
Body |
Input Stream |
The body of the request message to send with the request (except GET method request). Default is payload. |
#[payload] |
|
Headers |
Map |
Headers in key-value format to send along with the request, if there are no headers required in a request, leave empty (default). |
||
URI Parameters |
Map |
URI Parameters in key-value format to resolve the value in a path. If there are no URI parameters in a path, leave empty(default). |
||
Query Parameters |
Map |
Query Parameters in key-value format to send along with the request. If there are no query parameters required in a request, leave empty (default). |
||
Request Streaming Mode |
Stream |
Request to send in streaming mode. By default, if the type of the payload is a stream, streaming is used to send the request. Select from the drop-down list:
|
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Query
<veevavault:query>
Use the Query operation to execute the specified VQL query on the vault and retrieve results in pagination. Pagination is based on Veeva Vault’s API.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
VQL Query |
String |
A VQL Query to define per the Veeva Vault VQL specification to be executed. See VQL Query documentation for more details. For example:
|
X |
|
Input Parameters |
Map<String, Object> |
A map of String and Object in which every item represents a row to insert. The map contains the parameter names as keys and the value is the parameter it is bound to; for example: { 'table': 'site__v' } |
#[{}] |
|
Fetch Size |
Integer |
The fetch size limit of the records per page |
100 |
|
Batch Size |
Integer |
The batch size that accommodates the number of pages in the specified number of batches. |
10 |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Spark Validator
<veevavault:spark-message-validator>
The Spark Validator operation validates and verifies the Spark message with the signature and public key retrieved from the vault.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Include Spark Headers |
Boolean |
Flag to include Spark headers in Spark message validator output. |
FALSE |
|
Public Key Path |
String |
The directory path to store the public key (00001.pem) file. Retrieved from the vault, if not specified. |
|
|
Spark Headers |
Object |
An attributes header received from the vault and embedded in the Spark message |
#[attributes.headers] |
|
Spark Message |
Input Stream |
A Spark body message received from the vault |
#[payload] |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
-
VEEVAVAULT:INVALID_SPARK_MESSAGE
-
VEEVAVAULT:INVALID_KEY_FORMAT
Update Documents
<veevavault:update-documents>
The Update Documents operation updates the documents on the vault using editable document metadata provided in CSV or JSON format.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Metadata Format |
Enum (String)
|
Metadata format either CSV or JSON |
X |
|
Document Metadata |
Input Stream |
The editable document metadata either in CSV OR JSON format as Input Stream respective to Metadata format option selected. The following is the metadata: |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED
Update Object Records
<veevavault:update-object-records>
Update Object Records updates an object records in bulk on vault using editable object metadata either in CSV or JSON format.
Parameters
Name | Type | Description | Default Value | Required |
---|---|---|---|---|
Object Name |
String |
The list of all vault objects available to select from; for example: |
X |
|
Metadata Format |
Enum (String):
|
Metadata format (CSV or JSON) |
X |
|
Object Metadata |
Input Stream |
The object metadata in CSV or JSON format as Input Stream respective to Metadata Format option selected. The following is the metadata: |
X |
Throws
-
VEEVAVAULT:API_LIMIT_EXCEEDED
-
VEEVAVAULT:ATTRIBUTE_NOT_SUPPORTED
-
VEEVAVAULT:INACTIVE_USER
-
VEEVAVAULT:INVALID_DATA
-
VEEVAVAULT:INVALID_DOCUMENT
-
VEEVAVAULT:INSUFFICIENT_ACCESS
-
VEEVAVAULT:MALFORMED_URL
-
VEEVAVAULT:METHOD_NOT_SUPPORTED
-
VEEVAVAULT:NO_PERMISSION
-
VEEVAVAULT:OPERATION_NOT_ALLOWED
-
VEEVAVAULT:PARAMETER_REQUIRED