Crownpeak
  • Product Discovery Developer Guide
  • 🛒Item catalog management
    • What is the Items API?
    • How to work with Items
      • Item Schema
        • Attributes
        • Nested Item Schemas
        • Using the Item Schema API
        • DefaultLocale API
        • Onboarding on/migrating to Fredhopper
        • List of Reserved Attributes
      • Category Tree
        • Using the Category Tree API
        • Onboarding on XO
      • Item Catalog
        • Using the Catalog API
      • Items
        • Using the streaming Items API
        • Using the batch Items API
    • Step by Step guide
      • Step by step guide for Fredhopper customers
    • Feedback
      • Using the Feedback API
    • Authorization to APIs
    • Troubleshooting API errors
  • 🎯XO Recommendations
    • Introduction
    • Using the Recommendations API
    • Setting up the Chrome extension
    • Micro-segmentation
    • XO Legacy APIs
  • 🔎XO Search
    • Introduction
    • Getting started
    • API Reference
      • Search API
      • Autocomplete API (Beta)
      • Product Suggest API
    • API Parameters
      • Search
      • Pagination
      • Faceting
      • Sorting
      • Grouping
      • Filtering
      • Disable features
      • Response mask
      • Context
    • Configuration limitation
  • 🧪A/B testing
    • Fredhopper A/B testing
      • Integration steps for a non-caching solution
      • Integration steps for a caching solution
        • Java SDK Integration
          • Setup
          • Retrieve running A/B tests - Java SDK
          • Filter and request variant - Java SDK
          • Extending the SDK
        • Manual A/B tests integration
          • Retrieve running A/B tests
          • Filter out irrelevant A/B tests
          • Assign variants to user
          • Request variant for page
        • Limitations and Best Practices
  • 📚Resources
    • Glossary
    • Best Practices
      • Tracker Best Practices
      • Items API Best Practices
      • Fredhopper Data Configuration Best Practices
      • Fredhopper Query Response Best Practices
      • Fredhopper Merchandising Studio Best Practices
    • Privacy Notice
  • Archived Pages
    • FHR Tracking plan
    • XO Tracking plan
    • The Tracking API and JS Library
      • What to Track
        • Generic Actions
          • View
          • Click
          • Add to Cart
          • Remove from Cart
          • Purchase
        • Custom Actions
      • Initializing the JavaScript Library
      • REST API Technical Documentation
Powered by GitBook
On this page
  • Parameters
  • sortBy
  • Response
  • Usage example
  1. XO Search
  2. API Parameters

Sorting

Sort results

PreviousFacetingNextGrouping

Last updated 3 years ago

Parameters

The sortBy parameter allows to control the sorting of the results with a list of different values (and order for each value). In order to sort by an attribute, it must be defined as a Sortable attribute in the XO Console.

Name

Type

Is Required ?

Default value

sortBy

array of SortValue

✖

empty array

sortBy

Sort results by a list of values. Each SortValue must be a JSON object with the following properties:

Property
Type
Description

attribute

string

Name of the value to sort by. Must be defined in the XO Console.

order

'asc' or 'desc'

Order of the results

(ascending / descending)

Notes

  • By default, order is set to 'asc' if not specified

  • SortValue objects are evaluated by order of appearance. ie. The first SortValue takes precedence over the second, etc...

  • The sort order depends on the attribute type: numeric values are sorted in numeric order, strings are sorted in alphanumeric order, dates in chronological order ...

  • If one of the attributes is not registered as a Sortable attribute in the XO Console, an error is returned.

Response

All responses from XO Search uses the same format. Check page for a more detailed description of this format.

Usage example

  • Sort results by decreasing price order

NodeJS / NPM example

import { search } from '@attraqt/search';

const query = 'T-shirt';

search.init({ token: SEARCH_API_TOKEN });

const response = await search.query(query, {
  sortBy: [
    {
      attribute: 'price',
      order: 'desc'
    }
  ]
});

console.log(response);

HTML example

<script type="text/javascript">
    xo.init({
        search: {
            token: 'SEARCH_API_TOKEN'
        }
    });

    xo.search.query('T-Shirt', {
        sortBy: [
            {
                attribute: 'price',
                order: 'desc'
            }
        ]
    }).then((response) => {
        console.log(response);
    });
</script>

HTTP example

POST https://api-eu.attraqt.io/search HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
  "token": "SEARCH_API_TOKEN",
  "query": "T-Shirt",
  "options": {
    "sortBy": [
      {
        "attribute": "price",
        "order": "desc" 
      }
    ]
  }
}

curl example

curl -d "{\"token\":\"${SEARCH_API_TOKEN}\", \"query\":\"T-Shirt\", \"options\":{\"sortBy\":[{\"attribute\":\"price\", \"order\":\"desc\"}]}}" \
     -H "Content-Type: application/json; charset=UTF-8"                                                                                        \
     -X POST "https://api-eu.attraqt.io/search"

JavaScript example

const response = await fetch('https://api-eu.attraqt.io/search', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json; charset=UTF-8'
  },
  body: JSON.stringify({
    token: SEARCH_API_TOKEN,
    query: 'T-Shirt',
    options: {
      sortBy: [
        {
          attribute: 'price',
          order: 'desc'
        }
      ]
    }
  })
});

if (response.ok) {
  console.log(await response.json());
}

HTTP example

GET https://api-eu.attraqt.io/search/:token?encoded=:encodedParams HTTP/1.1

curl example

curl "https://api-eu.attraqt.io/search/${SEARCH_API_TOKEN}?encoded=%7B%22query%22%3A%22T-Shirt%22%2C%20%22options%22%3A%7B%22sortBy%22%3A%5B%7B%22attribute%22%3A%22price%22%2C%22order%22%3A%22desc%22%7D%5D%7D%7D"

JavaScript example

const token = SEARCH_API_TOKEN;
const params = encodeURIComponent(JSON.stringify({
  query: 'T-shirt',
  options: {
    sortBy: [
      {
        'attribute': 'price',
        'order': 'desc'
      }
    ]
  }
}));

const response = await fetch(
  `https://api-eu.attraqt.io/search/${token}?encoded=${params}`
);

if (response.ok) {
  console.log(await response.json());
}
🔎
API Reference
API Reference