
## Recommendations
---

### RecommendationResponse
**Declared In:**  
Headers/SNRRecommendationResponse.h  
  
**Related To:**  
[Recommendation](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#recommendation)  
  
**Inherits From:**  
[BaseModel](/developers/mobile-sdk/class-reference/ios/miscellaneous#basemodel)  
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-510">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-510-0" data-tab-group="tabgrp-510" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-510-1" data-tab-group="tabgrp-510">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-510-0" data-tab-group="tabgrp-510" data-tab-active="true">

```Swift
class RecommendationResponse
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-510-1" data-tab-group="tabgrp-510">

```Objective-C
@interface SNRRecommendationResponse
```

</div>
</div>

  
**Properties:**
| Property | Type | Optional | Description |
| --- | --- | --- | --- |
| **name** | String | no | Name of the recommendation campaign |
| **campaignHash** | String | no | Hash (UUID) of the recommendation campaign |
| **campaignID** | String | no | ID of the recommendation campaign |
| **correlationID** | String | no | Recommendation's correlation ID. It can be added to a `recommendation.click` event to associate it with the recommendation request |
| **extras** | RecommendationResponseExtras | yes | Additional details of the recommendation |
| **schema** | String | no | Schema of the document which contains the recommendation|
| **slug** | String | no | Slug of the document |
| **uuid** | String | no | UUID of the document |
| **items** | [[Recommendation]](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents/#recommendation) | no | List of items in the recommendation |

---
---

### Recommendation
**Declared In:**  
Headers/SNRRecommendation.h  
  
**Related To:**  
[RecommendationResponse](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#recommendationresponse)  
  
**Inherits From:**  
[BaseModel](/developers/mobile-sdk/class-reference/ios/miscellaneous#basemodel)  
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-511">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-511-0" data-tab-group="tabgrp-511" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-511-1" data-tab-group="tabgrp-511">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-511-0" data-tab-group="tabgrp-511" data-tab-active="true">

```Swift
class Recommendation
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-511-1" data-tab-group="tabgrp-511">

```Objective-C
@interface SNRRecommendation
```

</div>
</div>


**Properties:**
| Property | Type | Optional | Description |
| --- | --- | --- | --- |
| **itemID** | String | no | Product's GTIN |
| **attributes** | [AnyHashable: Any] | no | Product’s recommendation attributes |

---
---

### RecommendationOptions
**Declared In:**  
Headers/SNRRecommendationOptions.h  
  
**Related To:**  
[RecommendationFiltersJoinerRule](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#recommendationfiltersjoinerrule)  
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-512">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-512-0" data-tab-group="tabgrp-512" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-512-1" data-tab-group="tabgrp-512">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-512-0" data-tab-group="tabgrp-512" data-tab-active="true">

```Swift
class RecommendationOptions
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-512-1" data-tab-group="tabgrp-512">

```Objective-C
@interface SNRRecommendationOptions
```

</div>
</div>

  
**Properties:**  
| Property | Type | Optional | Description |
| --- | --- | --- | --- |
| **slug** | String | no | Unique identifier of a document which includes a recommendation insert |
| **productID** | String | no | Item identifier of the context item |
| **productIDs** | [String] | no | List of item identifiers, used for multiple item context |
| **itemsExcluded** | [String] | no | Items that will be excluded from the generated recommendations |
| **additionalFilters** | String | no | Additional filters. These are merged with the campaign's own filters according to the logic in **filtersJoiner** |
| **filtersJoiner** | [RecommendationFiltersJoinerRule](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#recommendationfiltersjoinerrule) | no | Defines the logic of merging additionalFilters with the campaign's existing filters |
| **additionalElasticFilters** | String | no | Additional elastic filters. These are merged with the campaign's own elastic filters according to the logic in **elasticFiltersJoiner** |
| **elasticFiltersJoiner** | [RecommendationFiltersJoinerRule](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#recommendationfiltersjoinerrule) | no | Defines the logic of merging **additionalElasticFilters** with the campaign's existing elastic filters |
| **displayAttribute** | [String] | no | An array of item attributes which value will be returned in a recommendation response |
| **includeContextItems** | Bool | no | When true, the recommendation response will include context item metadata |

---
---

### RecommendationFiltersJoinerRule
**Declared In:**  
Headers/SNRRecommendationOptions.h  
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-513">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-513-0" data-tab-group="tabgrp-513" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-513-1" data-tab-group="tabgrp-513">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-513-0" data-tab-group="tabgrp-513" data-tab-active="true">

```Swift
enum RecommendationFiltersJoinerRule: Int {
    and,
    or,
    replace
}
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-513-1" data-tab-group="tabgrp-513">

```Objective-C
typedef NS_ENUM(NSUInteger, SNRRecommendationFiltersJoinerRule) {
    SNRRecommendationFiltersJoinerRuleAnd,
    SNRRecommendationFiltersJoinerRuleOr,
    SNRRecommendationFiltersJoinerRuleReplace
}
```

</div>
</div>

  
**Functions:**
Converts from **RecommendationFiltersJoinerRule** to **String**.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-514">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-514-0" data-tab-group="tabgrp-514" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-514-1" data-tab-group="tabgrp-514">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-514-0" data-tab-group="tabgrp-514" data-tab-active="true">

```Swift
func SNR_RecommendationFiltersJoinerRuleToString(_: RecommendationFiltersJoinerRule) -> String
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-514-1" data-tab-group="tabgrp-514">

```Objective-C
NSString * SNR_RecommendationFiltersJoinerRuleToString(SNRRecommendationFiltersJoinerRule rule)
```

</div>
</div>


<br>

---
---

## Documents
---

### DocumentApiQuery
The object to set parameters easily for fetching documents from API.
  
**Declared In:**  
Headers/SNRDocumentApiQuery.h
  
**Inherits From:**
[NSObject](https://developer.apple.com/documentation/objectivec/nsobject)
  
**Declaration:**

<div class="content-tabs code-tabs" data-tab-group="tabgrp-515">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-515-0" data-tab-group="tabgrp-515" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-515-1" data-tab-group="tabgrp-515">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-515-0" data-tab-group="tabgrp-515" data-tab-active="true">

```Swift
class DocumentApiQuery: NSObject
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-515-1" data-tab-group="tabgrp-515">

```Objective-C
@interface SNRDocumentApiQuery : NSObject
```

</div>
</div>

  
**Properties:**
| Property | Type | Optional | Default | Description |
| --- | --- | --- | --- | --- |
| **slug** | String | no | nil | Unique identifier of a document |

**Properties used only if the document includes a recommendation insert:**  
| Property | Type | Optional | Description |
| --- | --- | --- | --- |
| **productId** | String | yes | Item identifier of the context item |
| **itemsIds** | [String] | yes | List of item identifiers, used for multiple item context |
| **itemsExcluded** | [String] | yes | Items that will be excluded from the generated recommendations |
| **additionalFilters** | String | yes | Additional filters. These are merged with the campaign's own filters according to the logic in **filtersJoiner** |
| **filtersJoiner** | [RecommendationFiltersJoinerRule](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#recommendationfiltersjoinerrule) | yes | Defines the logic of merging additionalFilters with the campaign's existing filters |
| **additionalElasticFilters** | String | yes | Additional elastic filters. These are merged with the campaign's own elastic filters according to the logic in **elasticFiltersJoiner** |
| **elasticFiltersJoiner** | [RecommendationFiltersJoinerRule](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#recommendationfiltersjoinerrule) | yes | Defines the logic of merging **additionalElasticFilters** with the campaign's existing elastic filters |
| **displayAttribute** | [String] | yes | An array of item attributes which value will be returned in a recommendation response |
| **includeContextItems** | Bool | yes | When true, the recommendation response will include context item metadata |
| **params** | [String: Any] | yes | Additional parameters to pass for [Inserts in the document](/developers/inserts/screen-views-documents#handling-variables-when-displaying-screen-viewsdocuments). For example, if the insert is `{{ foo }}`, you need to pass the value of `foo` |

**Initializers:**

<div class="content-tabs code-tabs" data-tab-group="tabgrp-516">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-516-0" data-tab-group="tabgrp-516" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-516-1" data-tab-group="tabgrp-516">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-516-0" data-tab-group="tabgrp-516" data-tab-active="true">

```Swift
init(slug: String)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-516-1" data-tab-group="tabgrp-516">

```Objective-C
- (instancetype)initWithSlug:(NSString *)slug
```

</div>
</div>


---
---

### Document
**Declared In:**  
Headers/SNRDocument.h  
  
**Inherits From:**  
[BaseModel](/developers/mobile-sdk/class-reference/ios/miscellaneous#basemodel)  
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-517">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-517-0" data-tab-group="tabgrp-517" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-517-1" data-tab-group="tabgrp-517">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-517-0" data-tab-group="tabgrp-517" data-tab-active="true">

```Swift
class Document: BaseModel
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-517-1" data-tab-group="tabgrp-517">

```Objective-C
@interface SNRDocument : SNRBaseModel
```

</div>
</div>

  
**Properties:**
| Property | Type | Optional | Description |
| --- | --- | --- | --- |
| **uuid** | String | no | Document's identifier (this parameter was called **identifier** before version 5.0.0) |
| **slug** | String | no | Document's slug |
| **schema** | String | no | Document's schema type |
| **content** | [AnyHashable: Any] | no | Document's content |
  

<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

All properties are read-only.

</div></div></div>


---
---

## Removed symbols
---

### <del>DocumentsApiQuery</del>{#documentsapiquery}
The object to set parameters easily for fetching documents from API.
  
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:green">Introduced in:</span> | 3.5.10 | 3.5.1 | 0.9.10 | 0.2.0 |
| <span style="color:orange">Deprecated in:</span> | 4.13.0 | 5.5.0 | 0.17.0 | n/a |
| <span style="color:red">Removed in:</span> | 5.0.0 | 6.0.0 | 1.0.0 | 2.0.0 |
**Declared In:**  
Headers/SNRDocumentsApiQuery.h
  
**Related To:**  
[DocumentsApiQueryType](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#documentsapiquerytype)  
  
**Inherits From:**
[NSObject](https://developer.apple.com/documentation/objectivec/nsobject)
  
**Declaration:**

<div class="content-tabs code-tabs" data-tab-group="tabgrp-518">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-518-0" data-tab-group="tabgrp-518" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-518-1" data-tab-group="tabgrp-518">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-518-0" data-tab-group="tabgrp-518" data-tab-active="true">

```Swift
class DocumentsApiQuery: NSObject
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-518-1" data-tab-group="tabgrp-518">

```Objective-C
@interface SNRDocumentsApiQuery : NSObject
```

</div>
</div>

  
**Properties:**
| Property | Type | Optional | Default | Description |
| --- | --- | --- | --- | --- |
| **type** | [DocumentsApiQueryType](/developers/mobile-sdk/class-reference/ios/recommendations-and-documents#documentsapiquerytype) | no | .bySchema | Query type |
| **typeValue** | String | no  | nil | Value for query type |
| **version** | String | yes | nil | Specifies the document version |
  
**Initializers:**

<div class="content-tabs code-tabs" data-tab-group="tabgrp-519">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-519-0" data-tab-group="tabgrp-519" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-519-1" data-tab-group="tabgrp-519">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-519-0" data-tab-group="tabgrp-519" data-tab-active="true">

```Swift
init(type: DocumentsApiQueryType, value: String)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-519-1" data-tab-group="tabgrp-519">

```Objective-C
- (instancetype)initWithType:(SNRDocumentsApiQueryType)type typeValue:(nonnull NSString *)typeValue
```

</div>
</div>


---
---

### <del>DocumentsApiQueryType</del>{#documentsapiquerytype}
**Declared In:**  
Headers/SNRDocumentsApiQueryType.h
  
**Declaration:**

<div class="content-tabs code-tabs" data-tab-group="tabgrp-520">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-520-0" data-tab-group="tabgrp-520" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-520-1" data-tab-group="tabgrp-520">Objective-C</button></div>

<div class="tab-panel" data-tab-id="tabgrp-520-0" data-tab-group="tabgrp-520" data-tab-active="true">

```Swift
enum DocumentsApiQueryType: Int {
    bySchema
}
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-520-1" data-tab-group="tabgrp-520">

```Objective-C
typedef NS_ENUM(NSInteger, SNRDocumentsApiQueryType) {
    SNRDocumentsApiQueryTypeBySchema
}
```

</div>
</div>

