diff --git a/docs/search-core.fieldvaluedirectanswer.entityname.md b/docs/search-core.basefieldvaluedirectanswer.entityname.md
similarity index 54%
rename from docs/search-core.fieldvaluedirectanswer.entityname.md
rename to docs/search-core.basefieldvaluedirectanswer.entityname.md
index 7cd22617..940dbe03 100644
--- a/docs/search-core.fieldvaluedirectanswer.entityname.md
+++ b/docs/search-core.basefieldvaluedirectanswer.entityname.md
@@ -1,8 +1,8 @@
-[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [entityName](./search-core.fieldvaluedirectanswer.entityname.md)
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [entityName](./search-core.basefieldvaluedirectanswer.entityname.md)
-## FieldValueDirectAnswer.entityName property
+## BaseFieldValueDirectAnswer.entityName property
The name of the entity that direct answer came from.
diff --git a/docs/search-core.fieldvaluedirectanswer.fieldapiname.md b/docs/search-core.basefieldvaluedirectanswer.fieldapiname.md
similarity index 53%
rename from docs/search-core.fieldvaluedirectanswer.fieldapiname.md
rename to docs/search-core.basefieldvaluedirectanswer.fieldapiname.md
index f6827355..572606ec 100644
--- a/docs/search-core.fieldvaluedirectanswer.fieldapiname.md
+++ b/docs/search-core.basefieldvaluedirectanswer.fieldapiname.md
@@ -1,8 +1,8 @@
-[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [fieldApiName](./search-core.fieldvaluedirectanswer.fieldapiname.md)
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [fieldApiName](./search-core.basefieldvaluedirectanswer.fieldapiname.md)
-## FieldValueDirectAnswer.fieldApiName property
+## BaseFieldValueDirectAnswer.fieldApiName property
The field api name of the direct answer.
diff --git a/docs/search-core.fieldvaluedirectanswer.fieldname.md b/docs/search-core.basefieldvaluedirectanswer.fieldname.md
similarity index 53%
rename from docs/search-core.fieldvaluedirectanswer.fieldname.md
rename to docs/search-core.basefieldvaluedirectanswer.fieldname.md
index fd8b6cff..c796d903 100644
--- a/docs/search-core.fieldvaluedirectanswer.fieldname.md
+++ b/docs/search-core.basefieldvaluedirectanswer.fieldname.md
@@ -1,8 +1,8 @@
-[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [fieldName](./search-core.fieldvaluedirectanswer.fieldname.md)
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [fieldName](./search-core.basefieldvaluedirectanswer.fieldname.md)
-## FieldValueDirectAnswer.fieldName property
+## BaseFieldValueDirectAnswer.fieldName property
The field name of the direct answer.
diff --git a/docs/search-core.basefieldvaluedirectanswer.fieldtype.md b/docs/search-core.basefieldvaluedirectanswer.fieldtype.md
new file mode 100644
index 00000000..a5f67900
--- /dev/null
+++ b/docs/search-core.basefieldvaluedirectanswer.fieldtype.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [fieldType](./search-core.basefieldvaluedirectanswer.fieldtype.md)
+
+## BaseFieldValueDirectAnswer.fieldType property
+
+The field type of the direct answer.
+
+Signature:
+
+```typescript
+fieldType: EnumOrLiteral | 'unknown';
+```
diff --git a/docs/search-core.basefieldvaluedirectanswer.md b/docs/search-core.basefieldvaluedirectanswer.md
new file mode 100644
index 00000000..892b6578
--- /dev/null
+++ b/docs/search-core.basefieldvaluedirectanswer.md
@@ -0,0 +1,28 @@
+
+
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)
+
+## BaseFieldValueDirectAnswer interface
+
+A direct answer where the answer came from a field from the knowledge graph.
+
+Signature:
+
+```typescript
+export interface BaseFieldValueDirectAnswer extends DirectAnswer
+```
+Extends: [DirectAnswer](./search-core.directanswer.md)<T>
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [entityName](./search-core.basefieldvaluedirectanswer.entityname.md) | string | The name of the entity that direct answer came from. |
+| [fieldApiName](./search-core.basefieldvaluedirectanswer.fieldapiname.md) | string | The field api name of the direct answer. |
+| [fieldName](./search-core.basefieldvaluedirectanswer.fieldname.md) | string | The field name of the direct answer. |
+| [fieldType](./search-core.basefieldvaluedirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType](./search-core.builtinfieldtype.md)> \| 'unknown' | The field type of the direct answer. |
+| [relatedResult](./search-core.basefieldvaluedirectanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. |
+| [type](./search-core.basefieldvaluedirectanswer.type.md) | [DirectAnswerType.FieldValue](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FieldValue. |
+| [value](./search-core.basefieldvaluedirectanswer.value.md) | T | The result of the direct answer. |
+| [verticalKey](./search-core.basefieldvaluedirectanswer.verticalkey.md) | string | The vertical key of the direct answer. |
+
diff --git a/docs/search-core.fieldvaluedirectanswer.relatedresult.md b/docs/search-core.basefieldvaluedirectanswer.relatedresult.md
similarity index 53%
rename from docs/search-core.fieldvaluedirectanswer.relatedresult.md
rename to docs/search-core.basefieldvaluedirectanswer.relatedresult.md
index fe294b19..f0ba3c81 100644
--- a/docs/search-core.fieldvaluedirectanswer.relatedresult.md
+++ b/docs/search-core.basefieldvaluedirectanswer.relatedresult.md
@@ -1,8 +1,8 @@
-[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [relatedResult](./search-core.fieldvaluedirectanswer.relatedresult.md)
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [relatedResult](./search-core.basefieldvaluedirectanswer.relatedresult.md)
-## FieldValueDirectAnswer.relatedResult property
+## BaseFieldValueDirectAnswer.relatedResult property
The entity associated with the direct answer.
diff --git a/docs/search-core.fieldvaluedirectanswer.type.md b/docs/search-core.basefieldvaluedirectanswer.type.md
similarity index 60%
rename from docs/search-core.fieldvaluedirectanswer.type.md
rename to docs/search-core.basefieldvaluedirectanswer.type.md
index 83b42814..7417b8a1 100644
--- a/docs/search-core.fieldvaluedirectanswer.type.md
+++ b/docs/search-core.basefieldvaluedirectanswer.type.md
@@ -1,8 +1,8 @@
-[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [type](./search-core.fieldvaluedirectanswer.type.md)
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [type](./search-core.basefieldvaluedirectanswer.type.md)
-## FieldValueDirectAnswer.type property
+## BaseFieldValueDirectAnswer.type property
[DirectAnswerType](./search-core.directanswertype.md).FieldValue.
diff --git a/docs/search-core.fieldvaluedirectanswer.value.md b/docs/search-core.basefieldvaluedirectanswer.value.md
similarity index 63%
rename from docs/search-core.fieldvaluedirectanswer.value.md
rename to docs/search-core.basefieldvaluedirectanswer.value.md
index 7ea836d8..6dfb597d 100644
--- a/docs/search-core.fieldvaluedirectanswer.value.md
+++ b/docs/search-core.basefieldvaluedirectanswer.value.md
@@ -1,8 +1,8 @@
-[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [value](./search-core.fieldvaluedirectanswer.value.md)
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [value](./search-core.basefieldvaluedirectanswer.value.md)
-## FieldValueDirectAnswer.value property
+## BaseFieldValueDirectAnswer.value property
The result of the direct answer.
diff --git a/docs/search-core.fieldvaluedirectanswer.verticalkey.md b/docs/search-core.basefieldvaluedirectanswer.verticalkey.md
similarity index 53%
rename from docs/search-core.fieldvaluedirectanswer.verticalkey.md
rename to docs/search-core.basefieldvaluedirectanswer.verticalkey.md
index 5f9197cc..ddd7ae49 100644
--- a/docs/search-core.fieldvaluedirectanswer.verticalkey.md
+++ b/docs/search-core.basefieldvaluedirectanswer.verticalkey.md
@@ -1,8 +1,8 @@
-[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [verticalKey](./search-core.fieldvaluedirectanswer.verticalkey.md)
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [verticalKey](./search-core.basefieldvaluedirectanswer.verticalkey.md)
-## FieldValueDirectAnswer.verticalKey property
+## BaseFieldValueDirectAnswer.verticalKey property
The vertical key of the direct answer.
diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md
index 85a39da5..60e7601f 100644
--- a/docs/search-core.builtinfieldtype.md
+++ b/docs/search-core.builtinfieldtype.md
@@ -16,5 +16,6 @@ export declare enum BuiltInFieldType
| Member | Value | Description |
| --- | --- | --- |
-| Address | "address"
| |
+| MultiLineText | "multi_line_text"
| |
+| Phone | "phone"
| |
diff --git a/docs/search-core.customfieldvalueda.fieldtype.md b/docs/search-core.customfieldvalueda.fieldtype.md
new file mode 100644
index 00000000..9430b7e9
--- /dev/null
+++ b/docs/search-core.customfieldvalueda.fieldtype.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [CustomFieldValueDA](./search-core.customfieldvalueda.md) > [fieldType](./search-core.customfieldvalueda.fieldtype.md)
+
+## CustomFieldValueDA.fieldType property
+
+Signature:
+
+```typescript
+fieldType: 'unknown';
+```
diff --git a/docs/search-core.customfieldvalueda.md b/docs/search-core.customfieldvalueda.md
new file mode 100644
index 00000000..bb6f8637
--- /dev/null
+++ b/docs/search-core.customfieldvalueda.md
@@ -0,0 +1,21 @@
+
+
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [CustomFieldValueDA](./search-core.customfieldvalueda.md)
+
+## CustomFieldValueDA interface
+
+A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) with a field type outside of [BuiltInFieldType](./search-core.builtinfieldtype.md).
+
+Signature:
+
+```typescript
+export interface CustomFieldValueDA extends BaseFieldValueDirectAnswer
+```
+Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<T>
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [fieldType](./search-core.customfieldvalueda.fieldtype.md) | 'unknown' | |
+
diff --git a/docs/search-core.directanswer.fieldtype.md b/docs/search-core.directanswer.fieldtype.md
index 837d6826..03a13438 100644
--- a/docs/search-core.directanswer.fieldtype.md
+++ b/docs/search-core.directanswer.fieldtype.md
@@ -9,5 +9,5 @@ The field type of the direct answer.
Signature:
```typescript
-fieldType: BuiltInFieldType | string;
+fieldType: EnumOrLiteral | 'unknown';
```
diff --git a/docs/search-core.directanswer.md b/docs/search-core.directanswer.md
index 611dabe3..9092439a 100644
--- a/docs/search-core.directanswer.md
+++ b/docs/search-core.directanswer.md
@@ -16,7 +16,7 @@ export interface DirectAnswer
| Property | Type | Description |
| --- | --- | --- |
-| [fieldType](./search-core.directanswer.fieldtype.md) | [BuiltInFieldType](./search-core.builtinfieldtype.md) \| string | The field type of the direct answer. |
+| [fieldType](./search-core.directanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType](./search-core.builtinfieldtype.md)> \| 'unknown' | The field type of the direct answer. |
| [relatedResult](./search-core.directanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. |
| [type](./search-core.directanswer.type.md) | [DirectAnswerType](./search-core.directanswertype.md) | The [DirectAnswerType](./search-core.directanswertype.md). |
| [value?](./search-core.directanswer.value.md) | T | (Optional) The result of the direct answer. |
diff --git a/docs/search-core.enumorliteral.md b/docs/search-core.enumorliteral.md
new file mode 100644
index 00000000..7dc80b4c
--- /dev/null
+++ b/docs/search-core.enumorliteral.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@yext/search-core](./search-core.md) > [EnumOrLiteral](./search-core.enumorliteral.md)
+
+## EnumOrLiteral type
+
+Produces a union type from the enum passed as a generic which consists of the enum values and the string literals of the enum.
+
+Signature:
+
+```typescript
+export declare type EnumOrLiteral = T | `${T}`;
+```
diff --git a/docs/search-core.featuredsnippetdirectanswer.fieldtype.md b/docs/search-core.featuredsnippetdirectanswer.fieldtype.md
index 8f587d72..9088419c 100644
--- a/docs/search-core.featuredsnippetdirectanswer.fieldtype.md
+++ b/docs/search-core.featuredsnippetdirectanswer.fieldtype.md
@@ -9,5 +9,5 @@ The field type of the direct answer.
Signature:
```typescript
-fieldType: BuiltInFieldType | string;
+fieldType: EnumOrLiteral | 'unknown';
```
diff --git a/docs/search-core.featuredsnippetdirectanswer.md b/docs/search-core.featuredsnippetdirectanswer.md
index b1727936..6440d3ab 100644
--- a/docs/search-core.featuredsnippetdirectanswer.md
+++ b/docs/search-core.featuredsnippetdirectanswer.md
@@ -17,7 +17,7 @@ export interface FeaturedSnippetDirectAnswer extends DirectAnswer<[BuiltInFieldType](./search-core.builtinfieldtype.md)> \| 'unknown' | The field type of the direct answer. |
| [relatedResult](./search-core.featuredsnippetdirectanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. |
| [snippet](./search-core.featuredsnippetdirectanswer.snippet.md) | [Snippet](./search-core.snippet.md) | The snippet where the direct answer was found. |
| [type](./search-core.featuredsnippetdirectanswer.type.md) | [DirectAnswerType.FeaturedSnippet](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FeaturedSnippet. |
diff --git a/docs/search-core.fieldvaluedirectanswer.fieldtype.md b/docs/search-core.fieldvaluedirectanswer.fieldtype.md
deleted file mode 100644
index 4d4165f7..00000000
--- a/docs/search-core.fieldvaluedirectanswer.fieldtype.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [fieldType](./search-core.fieldvaluedirectanswer.fieldtype.md)
-
-## FieldValueDirectAnswer.fieldType property
-
-The field type of the direct answer.
-
-Signature:
-
-```typescript
-fieldType: BuiltInFieldType | string;
-```
diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md
index d8566716..c9adb87a 100644
--- a/docs/search-core.fieldvaluedirectanswer.md
+++ b/docs/search-core.fieldvaluedirectanswer.md
@@ -2,27 +2,14 @@
[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md)
-## FieldValueDirectAnswer interface
+## FieldValueDirectAnswer type
-A direct answer where the answer came from a field from the knowledge graph.
+Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interfaces
Signature:
```typescript
-export interface FieldValueDirectAnswer extends DirectAnswer
+export declare type FieldValueDirectAnswer = CustomFieldValueDA;
```
-Extends: [DirectAnswer](./search-core.directanswer.md)<T>
-
-## Properties
-
-| Property | Type | Description |
-| --- | --- | --- |
-| [entityName](./search-core.fieldvaluedirectanswer.entityname.md) | string | The name of the entity that direct answer came from. |
-| [fieldApiName](./search-core.fieldvaluedirectanswer.fieldapiname.md) | string | The field api name of the direct answer. |
-| [fieldName](./search-core.fieldvaluedirectanswer.fieldname.md) | string | The field name of the direct answer. |
-| [fieldType](./search-core.fieldvaluedirectanswer.fieldtype.md) | [BuiltInFieldType](./search-core.builtinfieldtype.md) \| string | The field type of the direct answer. |
-| [relatedResult](./search-core.fieldvaluedirectanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. |
-| [type](./search-core.fieldvaluedirectanswer.type.md) | [DirectAnswerType.FieldValue](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FieldValue. |
-| [value](./search-core.fieldvaluedirectanswer.value.md) | T | The result of the direct answer. |
-| [verticalKey](./search-core.fieldvaluedirectanswer.verticalkey.md) | string | The vertical key of the direct answer. |
+References: [CustomFieldValueDA](./search-core.customfieldvalueda.md)
diff --git a/docs/search-core.md b/docs/search-core.md
index 0c117f68..cfee31a7 100644
--- a/docs/search-core.md
+++ b/docs/search-core.md
@@ -51,8 +51,10 @@
| [AutocompleteResult](./search-core.autocompleteresult.md) | An autocomplete suggestion. |
| [AutocompleteService](./search-core.autocompleteservice.md) | A service for autocomplete requests. |
| [BaseAnswersConfig](./search-core.baseanswersconfig.md) | |
+| [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. |
| [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md). |
| [ClientSDKHeaderValues](./search-core.clientsdkheadervalues.md) | Additional agents and their versions used to create the Search experience. The information for these agents is added to the Client-SDK HTTP header along with that of the ANSWERS\_CORE agent. |
+| [CustomFieldValueDA](./search-core.customfieldvalueda.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) with a field type outside of [BuiltInFieldType](./search-core.builtinfieldtype.md). |
| [DirectAnswer](./search-core.directanswer.md) | A direct answer to a search. |
| [DisplayableFacet](./search-core.displayablefacet.md) | A [Facet](./search-core.facet.md) which contains extra fields meant to be displayed to the end user. |
| [DisplayableFacetOption](./search-core.displayablefacetoption.md) | A [FacetOption](./search-core.facetoption.md) with extra data meant to be displayed to the end user. |
@@ -61,7 +63,6 @@
| [FacetOption](./search-core.facetoption.md) | A filter associated with the facet. |
| [FailedVertical](./search-core.failedvertical.md) | Error information from when a vertical fails to return results. |
| [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) | A direct answer which was found within a document. |
-| [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. |
| [FieldValueFilter](./search-core.fieldvaluefilter.md) | Represents a filter which compares values to a single field. |
| [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. |
| [FilterSearchResponse](./search-core.filtersearchresponse.md) | The response of a filtersearch request. |
@@ -109,6 +110,8 @@
| --- | --- |
| [AnswersConfig](./search-core.answersconfig.md) | |
| [Context](./search-core.context.md) | Used to trigger Search [Query Rules](https://hitchhikers.yext.com/tracks/answers-advanced/ans302-query-rules/). |
+| [EnumOrLiteral](./search-core.enumorliteral.md) | Produces a union type from the enum passed as a generic which consists of the enum values and the string literals of the enum. |
+| [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interfaces |
| [HighlightedFields](./search-core.highlightedfields.md) | A mapping of fields to the values emphasized by the Search API. |
| [SearchConfig](./search-core.searchconfig.md) | The main configuration options for [SearchCore](./search-core.searchcore.md). For a full description of the options, see [BaseSearchConfig](./search-core.basesearchconfig.md). The config requires either an apiKey or a token. |
| [StaticFilter](./search-core.staticfilter.md) | Represents a static filter that will be used to refine results. |
diff --git a/etc/search-core.api.md b/etc/search-core.api.md
index b6c1b135..44bc3195 100644
--- a/etc/search-core.api.md
+++ b/etc/search-core.api.md
@@ -80,6 +80,18 @@ export interface AutocompleteService {
export interface BaseAnswersConfig extends BaseSearchConfig {
}
+// @public
+export interface BaseFieldValueDirectAnswer extends DirectAnswer {
+ entityName: string;
+ fieldApiName: string;
+ fieldName: string;
+ fieldType: EnumOrLiteral | 'unknown';
+ relatedResult: Result;
+ type: DirectAnswerType.FieldValue;
+ value: T;
+ verticalKey: string;
+}
+
// @public
export interface BaseSearchConfig {
// @alpha
@@ -96,7 +108,9 @@ export interface BaseSearchConfig {
// @public
export enum BuiltInFieldType {
// (undocumented)
- Address = "address"
+ MultiLineText = "multi_line_text",
+ // (undocumented)
+ Phone = "phone"
}
// @public
@@ -108,9 +122,15 @@ export interface ClientSDKHeaderValues {
// @public
export type Context = any;
+// @public
+export interface CustomFieldValueDA extends BaseFieldValueDirectAnswer {
+ // (undocumented)
+ fieldType: 'unknown';
+}
+
// @public
export interface DirectAnswer {
- fieldType: BuiltInFieldType | string;
+ fieldType: EnumOrLiteral | 'unknown';
relatedResult: Result;
type: DirectAnswerType;
value?: T;
@@ -160,6 +180,9 @@ export interface Endpoints {
verticalSearch?: string;
}
+// @public
+export type EnumOrLiteral = T | `${T}`;
+
// @public
export enum ErrorType {
BackendError = "BACKEND_ERROR",
@@ -192,7 +215,7 @@ export interface FailedVertical {
// @public
export interface FeaturedSnippetDirectAnswer extends DirectAnswer {
- fieldType: BuiltInFieldType | string;
+ fieldType: EnumOrLiteral | 'unknown';
relatedResult: Result;
snippet: Snippet;
type: DirectAnswerType.FeaturedSnippet;
@@ -201,16 +224,7 @@ export interface FeaturedSnippetDirectAnswer extends DirectAnswer extends DirectAnswer {
- entityName: string;
- fieldApiName: string;
- fieldName: string;
- fieldType: BuiltInFieldType | string;
- relatedResult: Result;
- type: DirectAnswerType.FieldValue;
- value: T;
- verticalKey: string;
-}
+export type FieldValueDirectAnswer = CustomFieldValueDA;
// @public
export interface FieldValueFilter {
diff --git a/src/models/index.ts b/src/models/index.ts
index 8e18e9e0..16f0e0ad 100644
--- a/src/models/index.ts
+++ b/src/models/index.ts
@@ -51,10 +51,13 @@ export { Direction } from './searchservice/request/Direction';
export { AppliedQueryFilter } from './searchservice/response/AppliedQueryFilter';
export { AppliedQueryFilterType } from './searchservice/response/AppliedQueryFilterType';
export { LocationFilterDetails, LocationBoundingBox } from './searchservice/response/LocationFilterDetails';
-export { DirectAnswer } from './searchservice/response/DirectAnswer';
-export { FieldValueDirectAnswer } from './searchservice/response/FieldValueDirectAnswer';
-export { FeaturedSnippetDirectAnswer } from './searchservice/response/FeaturedSnippetDirectAnswer';
-export { DirectAnswerType } from './searchservice/response/DirectAnswerType';
+export { DirectAnswer } from './searchservice/response/directanswer/DirectAnswer';
+export { BaseFieldValueDirectAnswer } from './searchservice/response/directanswer/BaseFieldValueDirectAnswer';
+export { FieldValueDirectAnswer } from './searchservice/response/directanswer/FieldValueDirectAnswer';
+export { CustomFieldValueDA } from './searchservice/response/directanswer/CustomFieldValueDA';
+export { FeaturedSnippetDirectAnswer } from './searchservice/response/directanswer/FeaturedSnippetDirectAnswer';
+export { DirectAnswerType } from './searchservice/response/directanswer/DirectAnswerType';
+export { BuiltInFieldType } from './searchservice/response/directanswer/BuiltInFieldType';
export { DisplayableFacet, DisplayableFacetOption } from './searchservice/response/DisplayableFacet';
export { HighlightedFields } from './searchservice/response/HighlightedFields';
export { HighlightedValue } from './searchservice/response/HighlightedValue';
@@ -70,7 +73,6 @@ export { VerticalSearchResponse } from './searchservice/response/VerticalSearchR
export { Snippet } from './searchservice/response/Snippet';
export { ErrorType } from './searchservice/response/ErrorType';
export { FailedVertical } from './searchservice/response/FailedVertical';
-export { BuiltInFieldType } from './searchservice/response/BuiltInFieldType';
// Search service common models
export { Matcher } from './searchservice/common/Matcher';
@@ -79,3 +81,6 @@ export {
LowerNumberRangeLimit,
UpperNumberRangeLimit
} from './searchservice/common/NumberRangeValue';
+
+// Utils
+export { EnumOrLiteral } from './utils/EnumOrLiteral';
diff --git a/src/models/searchservice/response/UniversalSearchResponse.ts b/src/models/searchservice/response/UniversalSearchResponse.ts
index f8e2a30c..c1ddb4ec 100644
--- a/src/models/searchservice/response/UniversalSearchResponse.ts
+++ b/src/models/searchservice/response/UniversalSearchResponse.ts
@@ -1,7 +1,7 @@
import { VerticalResults } from './VerticalResults';
import { SearchIntent } from './SearchIntent';
-import { FeaturedSnippetDirectAnswer } from './FeaturedSnippetDirectAnswer';
-import { FieldValueDirectAnswer } from './FieldValueDirectAnswer';
+import { FeaturedSnippetDirectAnswer } from './directanswer/FeaturedSnippetDirectAnswer';
+import { FieldValueDirectAnswer } from './directanswer/FieldValueDirectAnswer';
import { SpellCheck } from './SpellCheck';
import { LocationBias } from './LocationBias';
import { QueryRulesActionsData } from './QueryRulesActionsData';
diff --git a/src/models/searchservice/response/VerticalSearchResponse.ts b/src/models/searchservice/response/VerticalSearchResponse.ts
index 7a0d0a1c..54904f63 100644
--- a/src/models/searchservice/response/VerticalSearchResponse.ts
+++ b/src/models/searchservice/response/VerticalSearchResponse.ts
@@ -1,7 +1,7 @@
import { VerticalResults } from './VerticalResults';
import { SearchIntent } from './SearchIntent';
-import { FeaturedSnippetDirectAnswer } from './FeaturedSnippetDirectAnswer';
-import { FieldValueDirectAnswer } from './FieldValueDirectAnswer';
+import { FeaturedSnippetDirectAnswer } from './directanswer/FeaturedSnippetDirectAnswer';
+import { FieldValueDirectAnswer } from './directanswer/FieldValueDirectAnswer';
import { DisplayableFacet } from './DisplayableFacet';
import { LocationBias } from './LocationBias';
import { SpellCheck } from './SpellCheck';
@@ -35,4 +35,4 @@ export interface VerticalSearchResponse {
uuid: string,
/** {@inheritDoc QueryRulesActionsData} */
queryRulesActionsData?: QueryRulesActionsData[]
-}
\ No newline at end of file
+}
diff --git a/src/models/searchservice/response/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts
similarity index 77%
rename from src/models/searchservice/response/FieldValueDirectAnswer.ts
rename to src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts
index 5b5846c7..e192bffd 100644
--- a/src/models/searchservice/response/FieldValueDirectAnswer.ts
+++ b/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts
@@ -1,14 +1,15 @@
import { DirectAnswer } from './DirectAnswer';
import { DirectAnswerType } from './DirectAnswerType';
import { BuiltInFieldType } from './BuiltInFieldType';
-import { Result } from './Result';
+import { Result } from '../Result';
+import { EnumOrLiteral } from '../../../utils/EnumOrLiteral';
/**
* A direct answer where the answer came from a field from the knowledge graph.
*
* @public
*/
-export interface FieldValueDirectAnswer extends DirectAnswer {
+export interface BaseFieldValueDirectAnswer extends DirectAnswer {
/** {@link DirectAnswerType}.FieldValue. */
type: DirectAnswerType.FieldValue,
/** {@inheritDoc DirectAnswer.value} */
@@ -18,11 +19,11 @@ export interface FieldValueDirectAnswer extends DirectAnswer {
/** {@inheritDoc DirectAnswer.verticalKey} */
verticalKey: string,
/** {@inheritDoc DirectAnswer.fieldType} */
- fieldType: BuiltInFieldType | string,
+ fieldType: EnumOrLiteral | 'unknown',
/** The name of the entity that direct answer came from. */
entityName: string,
/** The field name of the direct answer. */
fieldName: string,
/** The field api name of the direct answer. */
fieldApiName: string
-}
\ No newline at end of file
+}
diff --git a/src/models/searchservice/response/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts
similarity index 85%
rename from src/models/searchservice/response/BuiltInFieldType.ts
rename to src/models/searchservice/response/directanswer/BuiltInFieldType.ts
index 0741f8e2..0dd81397 100644
--- a/src/models/searchservice/response/BuiltInFieldType.ts
+++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts
@@ -11,11 +11,11 @@ export enum BuiltInFieldType {
// Email = 'email',
// InstagramHandle = 'instagram_handle',
// TwitterHandle = 'twitter_handle',
- // Phone = 'phone',
- Address = 'address',
+ Phone = 'phone',
+ // Address = 'address',
// Hours = 'hours',
// Decimal = 'decimal',
// RichText = 'rich_text',
// SingleLineText = 'single_line_text',
- // MultiLineText = 'multi_line_text'
+ MultiLineText = 'multi_line_text'
}
\ No newline at end of file
diff --git a/src/models/searchservice/response/directanswer/CustomFieldValueDA.ts b/src/models/searchservice/response/directanswer/CustomFieldValueDA.ts
new file mode 100644
index 00000000..59d3c758
--- /dev/null
+++ b/src/models/searchservice/response/directanswer/CustomFieldValueDA.ts
@@ -0,0 +1,10 @@
+import { BaseFieldValueDirectAnswer } from './BaseFieldValueDirectAnswer';
+
+/**
+ * A {@link BaseFieldValueDirectAnswer} with a field type outside of {@link BuiltInFieldType}.
+ *
+ * @public
+ */
+export interface CustomFieldValueDA extends BaseFieldValueDirectAnswer{
+ fieldType: 'unknown'
+}
diff --git a/src/models/searchservice/response/DirectAnswer.ts b/src/models/searchservice/response/directanswer/DirectAnswer.ts
similarity index 80%
rename from src/models/searchservice/response/DirectAnswer.ts
rename to src/models/searchservice/response/directanswer/DirectAnswer.ts
index 055d743d..86ae77ca 100644
--- a/src/models/searchservice/response/DirectAnswer.ts
+++ b/src/models/searchservice/response/directanswer/DirectAnswer.ts
@@ -1,6 +1,7 @@
-import { Result } from './Result';
+import { Result } from '../Result';
import { DirectAnswerType } from './DirectAnswerType';
import { BuiltInFieldType } from './BuiltInFieldType';
+import { EnumOrLiteral } from '../../../utils/EnumOrLiteral';
/**
* A direct answer to a search.
@@ -22,5 +23,5 @@ export interface DirectAnswer {
/** The vertical key of the direct answer. */
verticalKey: string,
/** The field type of the direct answer. */
- fieldType: BuiltInFieldType | string
+ fieldType: EnumOrLiteral | 'unknown'
}
\ No newline at end of file
diff --git a/src/models/searchservice/response/DirectAnswerType.ts b/src/models/searchservice/response/directanswer/DirectAnswerType.ts
similarity index 100%
rename from src/models/searchservice/response/DirectAnswerType.ts
rename to src/models/searchservice/response/directanswer/DirectAnswerType.ts
diff --git a/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts
similarity index 78%
rename from src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts
rename to src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts
index 4bf565d2..c6f3f310 100644
--- a/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts
+++ b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts
@@ -1,8 +1,9 @@
import { DirectAnswer } from './DirectAnswer';
import { DirectAnswerType } from './DirectAnswerType';
import { BuiltInFieldType } from './BuiltInFieldType';
-import { Result } from './Result';
-import { Snippet } from './Snippet';
+import { Result } from '../Result';
+import { Snippet } from '../Snippet';
+import { EnumOrLiteral } from '../../../utils/EnumOrLiteral';
/**
* A direct answer which was found within a document.
@@ -19,7 +20,7 @@ export interface FeaturedSnippetDirectAnswer extends DirectAnswer | 'unknown',
/** The snippet where the direct answer was found. */
snippet: Snippet
}
\ No newline at end of file
diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts
new file mode 100644
index 00000000..de951a5d
--- /dev/null
+++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts
@@ -0,0 +1,9 @@
+import { CustomFieldValueDA } from './CustomFieldValueDA';
+
+/**
+ * Possible built-in and custom {@link BaseFieldValueDirectAnswer} interfaces
+ *
+ * @public
+ */
+//add other builtin field value direct answer interfaces here
+export type FieldValueDirectAnswer = CustomFieldValueDA;
\ No newline at end of file
diff --git a/src/models/utils/EnumOrLiteral.ts b/src/models/utils/EnumOrLiteral.ts
new file mode 100644
index 00000000..b630513e
--- /dev/null
+++ b/src/models/utils/EnumOrLiteral.ts
@@ -0,0 +1,7 @@
+/**
+ * Produces a union type from the enum passed as a generic which consists of the enum values
+ * and the string literals of the enum.
+ *
+ * @public
+ */
+export type EnumOrLiteral = T | `${T}`;
diff --git a/src/transformers/searchservice/createDirectAnswer.ts b/src/transformers/searchservice/createDirectAnswer.ts
index fdc1cc40..4b5dafd1 100644
--- a/src/transformers/searchservice/createDirectAnswer.ts
+++ b/src/transformers/searchservice/createDirectAnswer.ts
@@ -1,7 +1,8 @@
-import { FeaturedSnippetDirectAnswer } from '../../models/searchservice/response/FeaturedSnippetDirectAnswer';
-import { FieldValueDirectAnswer } from '../../models/searchservice/response/FieldValueDirectAnswer';
-import { DirectAnswerType } from '../../models/searchservice/response/DirectAnswerType';
+import { FeaturedSnippetDirectAnswer } from '../../models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer';
+import { FieldValueDirectAnswer } from '../../models/searchservice/response/directanswer/FieldValueDirectAnswer';
+import { DirectAnswerType } from '../../models/searchservice/response/directanswer/DirectAnswerType';
import { ResultsFactory } from './ResultsFactory';
+import { BuiltInFieldType } from '../../models/searchservice/response/directanswer/BuiltInFieldType';
export function createDirectAnswer(data: any): FeaturedSnippetDirectAnswer | FieldValueDirectAnswer {
const isFieldValueDirectAnswer = data?.type === DirectAnswerType.FieldValue;
@@ -11,7 +12,7 @@ export function createDirectAnswer(data: any): FeaturedSnippetDirectAnswer | Fie
value: data.answer.value,
relatedResult: ResultsFactory.fromDirectAnswer(data.relatedItem.data),
verticalKey: data.relatedItem.verticalConfigId,
- fieldType: data.answer.fieldType
+ fieldType: Object.values(BuiltInFieldType).includes(data.answer.fieldType) ? data.answer.fieldType : 'unknown'
};
if (isFieldValueDirectAnswer) {
diff --git a/tests/transformers/searchservice/createDirectAnswer.ts b/tests/transformers/searchservice/createDirectAnswer.ts
index eb1d54fa..10a74b6a 100644
--- a/tests/transformers/searchservice/createDirectAnswer.ts
+++ b/tests/transformers/searchservice/createDirectAnswer.ts
@@ -1,5 +1,7 @@
import { createDirectAnswer } from '../../../src/transformers/searchservice/createDirectAnswer';
-import { DirectAnswerType } from '../../../src/models/searchservice/response/DirectAnswerType';
+import { DirectAnswerType } from '../../../src/models/searchservice/response/directanswer/DirectAnswerType';
+import { CustomFieldValueDA } from '../../../src/models/searchservice/response/directanswer/CustomFieldValueDA';
+import { Source } from '../../../src/models/searchservice/response/Source';
it('can create a FeaturedSnippetDirectAnswer', () => {
const apiFeaturedSnippetDirectAnswer = {
@@ -59,4 +61,36 @@ it('can create a FieldValueDirectAnswer', () => {
fieldType: 'phone'
};
expect(actualDirectAnswer).toMatchObject(expectedDirectAnswer);
+});
+
+it('can create a custom FieldValueDirectAnswer', () => {
+ const apiFieldValueDirectAnswer = {
+ type: 'FIELD_VALUE',
+ answer: {
+ value: '18888888888',
+ entityName: 'Barack Obama',
+ fieldName: 'Phone Number',
+ fieldApiName: 'mainPhone',
+ fieldType: 'c010101.specialtype'
+ },
+ relatedItem: {
+ verticalConfigId: 'people',
+ data: {}
+ }
+ };
+ const actualDirectAnswer = createDirectAnswer(apiFieldValueDirectAnswer);
+ const expectedDirectAnswer: CustomFieldValueDA = {
+ type: DirectAnswerType.FieldValue,
+ value: '18888888888',
+ relatedResult: {
+ rawData: {},
+ source: Source.KnowledgeManager
+ },
+ verticalKey: 'people',
+ entityName: 'Barack Obama',
+ fieldName: 'Phone Number',
+ fieldApiName: 'mainPhone',
+ fieldType: 'unknown'
+ };
+ expect(actualDirectAnswer).toMatchObject(expectedDirectAnswer);
});
\ No newline at end of file