Index
List indexes
curl -X GET
-H "Authorization: Bearer ..."
https://afosto.app/api/instant/indexes
200 response code
{
"data": {
"id": null,
"name": "CSV Products",
"alias": "csv-products",
"state": "LIVE",
"source": {
"id": null,
"type": "CSV_INTEGRATION"
},
"synonyms": null,
"stop_words": [
"the",
"a",
"an"
],
"ranking_rules": [
"typo",
"words",
"proximity",
"attribute",
"exactness",
"category:asc",
"sku:desc"
],
"fields": {
"from": "Category",
"to": "category",
"type": "STRING",
"label": "Category"
},
"facet_fields": null,
"distinct_field": "reference",
"search_fields": null,
"display_fields": null,
"filters": {
"key": null,
"type": "STRING",
"is_processed": null
},
"is_active": null,
"created_at": null,
"updated_at": null
},
"page": {
"first": "https://afosto.app/api/instant/indexes",
"next": "https://afosto.app/api/instant/indexes?page[after]=CJkLb2n9LWn3xD07V6rYD3qxi",
"after": "CJkLb2n9LWn3xD07V6rYD3qxi",
"previous": "https://afosto.app/api/instant/indexes?page[after]=CJkLb2n9LWn3xD07V6rYD3qxi",
"before": "CJkLb2n9LWn3xD07V6rYD3qxi"
}
}
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
400 response code
{
"error": {
"code": 400,
"message": "Bad request: invalid filter, pagination or request body",
"details": null
},
"meta": null
}
List all indexes for the authenticated user
HTTP Request
GET https://afosto.app/api/instant/indexes
Query Parameters
Parameter | Type | Default | Description |
---|---|---|---|
page[size] | integer |
||
page[after] | string |
||
sort | string |
Response fields
Content-type: application/json
Parameter | Type | Default | Description |
---|---|---|---|
name | string |
The name of the index | |
alias | string |
An alias set on the index by an automatic proces | |
stop_words | array |
||
ranking_rules | array |
||
fields.from | string |
The source field | |
fields.to | string |
The target field | |
fields.label | string |
The label for the field | |
distinct_field | string |
The field that's unique for each document |
Create index
curl -X POST
-H "Authorization: Bearer ..."
-H "Content-Type: application/json"
-d '{
"data": {
"id": null,
"name": "CSV Products",
"alias": "csv-products",
"source": {
"id": null,
"type": "CSV_INTEGRATION"
},
"synonyms": null,
"stop_words": [
"the",
"a",
"an"
],
"ranking_rules": [
"typo",
"words",
"proximity",
"attribute",
"exactness",
"category:asc",
"sku:desc"
],
"fields": {
"from": "Category",
"to": "category",
"type": "STRING",
"label": "Category"
},
"filters": [
{
"key": "category"
},
{
"key": "brand"
},
{
"key": "is_premium"
}
],
"search_fields": null,
"display_fields": null
}
}'
https://afosto.app/api/instant/indexes
201 response code
{
"data": {
"id": null,
"name": "CSV Products",
"alias": "csv-products",
"state": "LIVE",
"source": {
"id": null,
"type": "CSV_INTEGRATION"
},
"synonyms": null,
"stop_words": [
"the",
"a",
"an"
],
"ranking_rules": [
"typo",
"words",
"proximity",
"attribute",
"exactness",
"category:asc",
"sku:desc"
],
"fields": {
"from": "Category",
"to": "category",
"type": "STRING",
"label": "Category"
},
"facet_fields": null,
"distinct_field": "reference",
"search_fields": null,
"display_fields": null,
"available_fields": null,
"filters": {
"key": null,
"type": "STRING",
"is_processed": null
},
"last_processed_at": null,
"is_active": null,
"has_pending_updates": null,
"created_at": null,
"updated_at": null
},
"page": null
}
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
400 response code
{
"error": {
"code": 400,
"message": "Bad request: invalid filter, pagination or request body",
"details": null
},
"meta": null
}
Create a new index
HTTP Request
POST https://afosto.app/api/instant/indexes
Input body
Parameter | Type | Default | Description |
---|---|---|---|
name | string |
The name of the index | |
alias | string |
The alias of this index (group) | |
stop_words | array |
||
ranking_rules | array |
||
fields.from | string |
The source field | |
fields.to | string |
The target field | |
fields.label | string |
The label for the field | |
filters | array |
Response fields
Content-type: application/json
Parameter | Type | Default | Description |
---|---|---|---|
name | string |
The name of the index | |
alias | string |
An alias set on the index by an automatic proces | |
stop_words | array |
||
ranking_rules | array |
||
fields.from | string |
The source field | |
fields.to | string |
The target field | |
fields.label | string |
The label for the field | |
distinct_field | string |
The field that's unique for each document |
View index
curl -X GET
-H "Authorization: Bearer ..."
https://afosto.app/api/instant/indexes/{alias}
200 response code
{
"data": {
"id": null,
"name": "CSV Products",
"alias": "csv-products",
"state": "LIVE",
"source": {
"id": null,
"type": "CSV_INTEGRATION"
},
"synonyms": null,
"stop_words": [
"the",
"a",
"an"
],
"ranking_rules": [
"typo",
"words",
"proximity",
"attribute",
"exactness",
"category:asc",
"sku:desc"
],
"fields": {
"from": "Category",
"to": "category",
"type": "STRING",
"label": "Category"
},
"facet_fields": null,
"distinct_field": "reference",
"search_fields": null,
"display_fields": null,
"available_fields": null,
"filters": {
"key": null,
"type": "STRING",
"is_processed": null
},
"last_processed_at": null,
"is_active": null,
"has_pending_updates": null,
"created_at": null,
"updated_at": null
},
"page": null
}
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
400 response code
{
"error": {
"code": 400,
"message": "Bad request: invalid filter, pagination or request body",
"details": null
},
"meta": null
}
404 response code
{
"error": {
"code": 404,
"message": "Not found: could not find requested entity",
"details": null
},
"meta": null
}
Show a single index for the tenant.
HTTP Request
GET https://afosto.app/api/instant/indexes/{alias}
URL Parameters
Parameter | Type | Default | Description |
---|---|---|---|
alias | string |
The alias of the index |
Response fields
Content-type: application/json
Parameter | Type | Default | Description |
---|---|---|---|
name | string |
The name of the index | |
alias | string |
An alias set on the index by an automatic proces | |
stop_words | array |
||
ranking_rules | array |
||
fields.from | string |
The source field | |
fields.to | string |
The target field | |
fields.label | string |
The label for the field | |
distinct_field | string |
The field that's unique for each document |
Documents
Upsert documents
curl -X PUT
-H "Authorization: Bearer ..."
-H "Content-Type: application/json"
-d '{
"data": null
}'
https://afosto.app/api/instant/indexes/{id}/documents
204 response code
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
400 response code
{
"error": {
"code": 400,
"message": "Bad request: invalid filter, pagination or request body",
"details": null
},
"meta": null
}
404 response code
{
"error": {
"code": 404,
"message": "Not found: could not find requested entity",
"details": null
},
"meta": null
}
Update or insert a list of documents in the specified index. Enter any additional information in the metadata. Data in the metadata key is not searchable, only retrievable.
HTTP Request
PUT https://afosto.app/api/instant/indexes/{id}/documents
URL Parameters
Parameter | Type | Default | Description |
---|---|---|---|
id | string |
The alias of the index |
Clear documents
curl -X DELETE
-H "Authorization: Bearer ..."
https://afosto.app/api/instant/indexes/{id}/documents
204 response code
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
404 response code
{
"error": {
"code": 404,
"message": "Not found: could not find requested entity",
"details": null
},
"meta": null
}
Delete all documents from the specified index
HTTP Request
DELETE https://afosto.app/api/instant/indexes/{id}/documents
URL Parameters
Parameter | Type | Default | Description |
---|---|---|---|
id | string |
Search
Search documents
curl -X POST
-H "Authorization: Bearer ..."
-H "Content-Type: application/json"
-d '[]'
https://afosto.app/api/instant/search/{id}
201 response code
{
"page": null
}
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
400 response code
{
"error": {
"code": 400,
"message": "Bad request: invalid filter, pagination or request body",
"details": null
},
"meta": null
}
Search documents: The id is the proxy key for a tenant, ex: "afosto". The count is the combined count of the results in all selected indices.
HTTP Request
POST https://afosto.app/api/instant/search/{id}
URL Parameters
Parameter | Type | Default | Description |
---|---|---|---|
id | string |
Search documents
curl -X POST
-H "Authorization: Bearer ..."
-H "Content-Type: application/json"
-d '[]'
https://afosto.app/api/instant/search/indexes/{alias}
201 response code
{
"page": null
}
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
400 response code
{
"error": {
"code": 400,
"message": "Bad request: invalid filter, pagination or request body",
"details": null
},
"meta": null
}
Search documents within a single index, without going throuh a proxy.
HTTP Request
POST https://afosto.app/api/instant/search/indexes/{alias}
URL Parameters
Parameter | Type | Default | Description |
---|---|---|---|
alias | string |
The alias of the index |
Get settings
curl -X GET
-H "Authorization: Bearer ..."
https://afosto.app/api/instant/search/{id}/settings
200 response code
{
"data": {
"filters": {
"show_for": "products",
"sorting": [
"category",
"price"
],
"options_count": 5,
"max_options_count": 25
},
"is_autocomplete": true,
"indexes": {
"alias": null,
"template": {
"name": "PRODUCTS",
"mapping": null
},
"results_per_page": null,
"filters": {
"key": null,
"label": null,
"type": "STRING",
"options_count": 5,
"max_options_count": 5
}
}
},
"page": null
}
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
400 response code
{
"error": {
"code": 400,
"message": "Bad request: invalid filter, pagination or request body",
"details": null
},
"meta": null
}
404 response code
{
"error": {
"code": 404,
"message": "Not found: could not find requested entity",
"details": null
},
"meta": null
}
Get the settings for a search engine (proxy)
HTTP Request
GET https://afosto.app/api/instant/search/{id}/settings
URL Parameters
Parameter | Type | Default | Description |
---|---|---|---|
id | string |
The alias of the index |
Response fields
Content-type: application/json
Parameter | Type | Default | Description |
---|---|---|---|
filters.show_for | string |
The index to show the filters for | |
filters.sorting | array |
||
filters.options_count | integer |
The maximum number of options to show (frontend) for an option without showing all options | |
filters.max_options_count | integer |
The maximum number of options to show for a filter | |
is_autocomplete | boolean |
false | Whether or not you should perform a search as you type |
indexes.filters.options_count | integer |
The maximum number of options to show (frontend) for an option without showing all options | |
indexes.filters.max_options_count | integer |
The maximum number of options to show for a filter |
Measure CTR
curl -X GET
-H "Authorization: Bearer ..."
https://afosto.app/api/instant/search/{id}/click/{code}
307 response code
{
"page": null
}
401 response code
{
"error": {
"code": 401,
"message": "Unauthorized: invalid or expired authorization header",
"details": null
},
"meta": null
}
403 response code
{
"error": {
"code": 403,
"message": "Forbidden: insufficient scopes for resource",
"details": null
},
"meta": null
}
500 response code
{
"error": {
"code": 500,
"message": "Internal server error: something went wrong on our side",
"details": null
},
"meta": null
}
400 response code
{
"error": {
"code": 400,
"message": "Bad request: invalid filter, pagination or request body",
"details": null
},
"meta": null
}
404 response code
{
"error": {
"code": 404,
"message": "Not found: could not find requested entity",
"details": null
},
"meta": null
}
Redirect the inital url and measure a ctr
HTTP Request
GET https://afosto.app/api/instant/search/{id}/click/{code}
URL Parameters
Parameter | Type | Default | Description |
---|---|---|---|
id | string |
The alias of the index | |
code | string |
The encoded click signature |
Errors
The Afosto API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad request: invalid filter, pagination or request body |
401 | Unauthorized: invalid or expired authorization header |
403 | Forbidden: insufficient scopes for resource |
404 | Not found: could not find requested entity |
500 | Internal server error: something went wrong on our side |