curl --location --request POST 'https://api.stateset.com/v1/search' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token <token>' \
--data-raw '{
"query": "john doe refund",
"resources": ["orders", "customers", "returns"],
"filters": {
"date_range": {
"field": "created_at",
"from": "2024-01-01",
"to": "2024-12-31"
},
"status": ["active", "pending"]
},
"facets": ["resource_type", "status", "tags"],
"sort": {
"field": "created_at",
"order": "desc"
},
"pagination": {
"page": 1,
"per_page": 20
},
"highlight": true,
"suggest": true
}'
query searchQuery {
search(
query: "${query}",
resources: ${resources},
filters: ${filters},
facets: ${facets},
sort: ${sort},
pagination: ${pagination},
highlight: ${highlight},
suggest: ${suggest}
) {
results {
id
resource_type
score
data
highlights
}
facets
suggestions
total_results
query_time_ms
}
}
const searchResults = await stateset.search({
query: 'john doe refund',
resources: ['orders', 'customers', 'returns'],
filters: {
date_range: {
field: 'created_at',
from: '2024-01-01',
to: '2024-12-31'
},
status: ['active', 'pending']
},
facets: ['resource_type', 'status', 'tags'],
sort: {
field: 'created_at',
order: 'desc'
},
pagination: {
page: 1,
per_page: 20
},
highlight: true,
suggest: true
});
search_results = stateset.search({
'query': 'john doe refund',
'resources': ['orders', 'customers', 'returns'],
'filters': {
'date_range': {
'field': 'created_at',
'from': '2024-01-01',
'to': '2024-12-31'
},
'status': ['active', 'pending']
},
'facets': ['resource_type', 'status', 'tags'],
'sort': {
'field': 'created_at',
'order': 'desc'
},
'pagination': {
'page': 1,
'per_page': 20
},
'highlight': True,
'suggest': True
})
search_results = Stateset.search({
query: 'john doe refund',
resources: ['orders', 'customers', 'returns'],
filters: {
date_range: {
field: 'created_at',
from: '2024-01-01',
to: '2024-12-31'
},
status: ['active', 'pending']
},
facets: ['resource_type', 'status', 'tags'],
sort: {
field: 'created_at',
order: 'desc'
},
pagination: {
page: 1,
per_page: 20
},
highlight: true,
suggest: true
})
searchResults, err := stateset.Search(SearchParams{
Query: "john doe refund",
Resources: []string{"orders", "customers", "returns"},
Filters: Filters{
DateRange: DateRange{
Field: "created_at",
From: "2024-01-01",
To: "2024-12-31"
},
Status: []string{"active", "pending"}
},
Facets: []string{"resource_type", "status", "tags"},
Sort: Sort{
Field: "created_at",
Order: "desc"
},
Pagination: Pagination{
Page: 1,
PerPage: 20
},
Highlight: true,
Suggest: true
})
SearchResults searchResults = stateset.search(new SearchParams()
.setQuery("john doe refund")
.setResources(Arrays.asList("orders", "customers", "returns"))
.setFilters(new Filters()
.setDateRange(new DateRange()
.setField("created_at")
.setFrom("2024-01-01")
.setTo("2024-12-31"))
.setStatus(Arrays.asList("active", "pending")))
.setFacets(Arrays.asList("resource_type", "status", "tags"))
.setSort(new Sort()
.setField("created_at")
.setOrder("desc"))
.setPagination(new Pagination()
.setPage(1)
.setPerPage(20))
.setHighlight(true)
.setSuggest(true));
$search_results = $stateset->search([
'query' => 'john doe refund',
'resources' => ['orders', 'customers', 'returns'],
'filters' => [
'date_range' => [
'field' => 'created_at',
'from' => '2024-01-01',
'to' => '2024-12-31'
],
'status' => ['active', 'pending']
],
'facets' => ['resource_type', 'status', 'tags'],
'sort' => [
'field' => 'created_at',
'order' => 'desc'
],
'pagination' => [
'page' => 1,
'per_page' => 20
],
'highlight' => true,
'suggest' => true
]);
var searchResults = await stateset.Search(new SearchParams {
Query = "john doe refund",
Resources = new[] { "orders", "customers", "returns" },
Filters = new Filters {
DateRange = new DateRange {
Field = "created_at",
From = "2024-01-01",
To = "2024-12-31"
},
Status = new[] { "active", "pending" }
},
Facets = new[] { "resource_type", "status", "tags" },
Sort = new Sort {
Field = "created_at",
Order = "desc"
},
Pagination = new Pagination {
Page = 1,
PerPage = 20
},
Highlight = true,
Suggest = true
});
{
"results": [
{
"id": "ord_123abc",
"resource_type": "order",
"score": 0.95,
"data": {
"id": "ord_123abc",
"customer_name": "John Doe",
"total": 299.99,
"status": "pending",
"created_at": "2024-03-15T10:30:00Z"
},
"highlights": {
"customer_name": "<em>John Doe</em>",
"notes": "Customer requested <em>refund</em> for damaged item"
}
},
{
"id": "cust_456def",
"resource_type": "customer",
"score": 0.88,
"data": {
"id": "cust_456def",
"name": "John Doe",
"email": "john.doe@example.com",
"status": "active"
},
"highlights": {
"name": "<em>John Doe</em>"
}
}
],
"facets": {
"resource_type": {
"order": 5,
"customer": 3,
"return": 2
},
"status": {
"active": 6,
"pending": 4
},
"tags": {
"vip": 2,
"priority": 3
}
},
"suggestions": [
{
"text": "john doe refunded",
"score": 0.92
}
],
"total_results": 10,
"page": 1,
"per_page": 20,
"query_time_ms": 23
}
{
"error": {
"code": "invalid_query",
"message": "Search query cannot be empty",
"details": {
"min_query_length": 1,
"max_query_length": 1000
}
}
}
Search API
Powerful search endpoint for finding records across multiple resources with advanced filtering and faceting.
POST
/
v1
/
search
curl --location --request POST 'https://api.stateset.com/v1/search' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token <token>' \
--data-raw '{
"query": "john doe refund",
"resources": ["orders", "customers", "returns"],
"filters": {
"date_range": {
"field": "created_at",
"from": "2024-01-01",
"to": "2024-12-31"
},
"status": ["active", "pending"]
},
"facets": ["resource_type", "status", "tags"],
"sort": {
"field": "created_at",
"order": "desc"
},
"pagination": {
"page": 1,
"per_page": 20
},
"highlight": true,
"suggest": true
}'
query searchQuery {
search(
query: "${query}",
resources: ${resources},
filters: ${filters},
facets: ${facets},
sort: ${sort},
pagination: ${pagination},
highlight: ${highlight},
suggest: ${suggest}
) {
results {
id
resource_type
score
data
highlights
}
facets
suggestions
total_results
query_time_ms
}
}
const searchResults = await stateset.search({
query: 'john doe refund',
resources: ['orders', 'customers', 'returns'],
filters: {
date_range: {
field: 'created_at',
from: '2024-01-01',
to: '2024-12-31'
},
status: ['active', 'pending']
},
facets: ['resource_type', 'status', 'tags'],
sort: {
field: 'created_at',
order: 'desc'
},
pagination: {
page: 1,
per_page: 20
},
highlight: true,
suggest: true
});
search_results = stateset.search({
'query': 'john doe refund',
'resources': ['orders', 'customers', 'returns'],
'filters': {
'date_range': {
'field': 'created_at',
'from': '2024-01-01',
'to': '2024-12-31'
},
'status': ['active', 'pending']
},
'facets': ['resource_type', 'status', 'tags'],
'sort': {
'field': 'created_at',
'order': 'desc'
},
'pagination': {
'page': 1,
'per_page': 20
},
'highlight': True,
'suggest': True
})
search_results = Stateset.search({
query: 'john doe refund',
resources: ['orders', 'customers', 'returns'],
filters: {
date_range: {
field: 'created_at',
from: '2024-01-01',
to: '2024-12-31'
},
status: ['active', 'pending']
},
facets: ['resource_type', 'status', 'tags'],
sort: {
field: 'created_at',
order: 'desc'
},
pagination: {
page: 1,
per_page: 20
},
highlight: true,
suggest: true
})
searchResults, err := stateset.Search(SearchParams{
Query: "john doe refund",
Resources: []string{"orders", "customers", "returns"},
Filters: Filters{
DateRange: DateRange{
Field: "created_at",
From: "2024-01-01",
To: "2024-12-31"
},
Status: []string{"active", "pending"}
},
Facets: []string{"resource_type", "status", "tags"},
Sort: Sort{
Field: "created_at",
Order: "desc"
},
Pagination: Pagination{
Page: 1,
PerPage: 20
},
Highlight: true,
Suggest: true
})
SearchResults searchResults = stateset.search(new SearchParams()
.setQuery("john doe refund")
.setResources(Arrays.asList("orders", "customers", "returns"))
.setFilters(new Filters()
.setDateRange(new DateRange()
.setField("created_at")
.setFrom("2024-01-01")
.setTo("2024-12-31"))
.setStatus(Arrays.asList("active", "pending")))
.setFacets(Arrays.asList("resource_type", "status", "tags"))
.setSort(new Sort()
.setField("created_at")
.setOrder("desc"))
.setPagination(new Pagination()
.setPage(1)
.setPerPage(20))
.setHighlight(true)
.setSuggest(true));
$search_results = $stateset->search([
'query' => 'john doe refund',
'resources' => ['orders', 'customers', 'returns'],
'filters' => [
'date_range' => [
'field' => 'created_at',
'from' => '2024-01-01',
'to' => '2024-12-31'
],
'status' => ['active', 'pending']
],
'facets' => ['resource_type', 'status', 'tags'],
'sort' => [
'field' => 'created_at',
'order' => 'desc'
],
'pagination' => [
'page' => 1,
'per_page' => 20
],
'highlight' => true,
'suggest' => true
]);
var searchResults = await stateset.Search(new SearchParams {
Query = "john doe refund",
Resources = new[] { "orders", "customers", "returns" },
Filters = new Filters {
DateRange = new DateRange {
Field = "created_at",
From = "2024-01-01",
To = "2024-12-31"
},
Status = new[] { "active", "pending" }
},
Facets = new[] { "resource_type", "status", "tags" },
Sort = new Sort {
Field = "created_at",
Order = "desc"
},
Pagination = new Pagination {
Page = 1,
PerPage = 20
},
Highlight = true,
Suggest = true
});
{
"results": [
{
"id": "ord_123abc",
"resource_type": "order",
"score": 0.95,
"data": {
"id": "ord_123abc",
"customer_name": "John Doe",
"total": 299.99,
"status": "pending",
"created_at": "2024-03-15T10:30:00Z"
},
"highlights": {
"customer_name": "<em>John Doe</em>",
"notes": "Customer requested <em>refund</em> for damaged item"
}
},
{
"id": "cust_456def",
"resource_type": "customer",
"score": 0.88,
"data": {
"id": "cust_456def",
"name": "John Doe",
"email": "john.doe@example.com",
"status": "active"
},
"highlights": {
"name": "<em>John Doe</em>"
}
}
],
"facets": {
"resource_type": {
"order": 5,
"customer": 3,
"return": 2
},
"status": {
"active": 6,
"pending": 4
},
"tags": {
"vip": 2,
"priority": 3
}
},
"suggestions": [
{
"text": "john doe refunded",
"score": 0.92
}
],
"total_results": 10,
"page": 1,
"per_page": 20,
"query_time_ms": 23
}
{
"error": {
"code": "invalid_query",
"message": "Search query cannot be empty",
"details": {
"min_query_length": 1,
"max_query_length": 1000
}
}
}
Body
string
required
The search query string. Supports fuzzy matching and operators
array
Array of resource types to search. If empty, searches all resources.
Options: [“orders”, “customers”, “products”, “inventory”, “returns”, “warranties”, “tickets”]
object
Advanced filters to narrow search results
array
Fields to generate facet counts for
object
boolean
Whether to include highlighted snippets in results
boolean
Whether to include search suggestions for typos
Response
array
object
Facet counts for requested fields
array
Search suggestions for possible typos
number
Total number of results found
number
Current page number
number
Results per page
number
Time taken to execute the query in milliseconds
curl --location --request POST 'https://api.stateset.com/v1/search' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token <token>' \
--data-raw '{
"query": "john doe refund",
"resources": ["orders", "customers", "returns"],
"filters": {
"date_range": {
"field": "created_at",
"from": "2024-01-01",
"to": "2024-12-31"
},
"status": ["active", "pending"]
},
"facets": ["resource_type", "status", "tags"],
"sort": {
"field": "created_at",
"order": "desc"
},
"pagination": {
"page": 1,
"per_page": 20
},
"highlight": true,
"suggest": true
}'
query searchQuery {
search(
query: "${query}",
resources: ${resources},
filters: ${filters},
facets: ${facets},
sort: ${sort},
pagination: ${pagination},
highlight: ${highlight},
suggest: ${suggest}
) {
results {
id
resource_type
score
data
highlights
}
facets
suggestions
total_results
query_time_ms
}
}
const searchResults = await stateset.search({
query: 'john doe refund',
resources: ['orders', 'customers', 'returns'],
filters: {
date_range: {
field: 'created_at',
from: '2024-01-01',
to: '2024-12-31'
},
status: ['active', 'pending']
},
facets: ['resource_type', 'status', 'tags'],
sort: {
field: 'created_at',
order: 'desc'
},
pagination: {
page: 1,
per_page: 20
},
highlight: true,
suggest: true
});
search_results = stateset.search({
'query': 'john doe refund',
'resources': ['orders', 'customers', 'returns'],
'filters': {
'date_range': {
'field': 'created_at',
'from': '2024-01-01',
'to': '2024-12-31'
},
'status': ['active', 'pending']
},
'facets': ['resource_type', 'status', 'tags'],
'sort': {
'field': 'created_at',
'order': 'desc'
},
'pagination': {
'page': 1,
'per_page': 20
},
'highlight': True,
'suggest': True
})
search_results = Stateset.search({
query: 'john doe refund',
resources: ['orders', 'customers', 'returns'],
filters: {
date_range: {
field: 'created_at',
from: '2024-01-01',
to: '2024-12-31'
},
status: ['active', 'pending']
},
facets: ['resource_type', 'status', 'tags'],
sort: {
field: 'created_at',
order: 'desc'
},
pagination: {
page: 1,
per_page: 20
},
highlight: true,
suggest: true
})
searchResults, err := stateset.Search(SearchParams{
Query: "john doe refund",
Resources: []string{"orders", "customers", "returns"},
Filters: Filters{
DateRange: DateRange{
Field: "created_at",
From: "2024-01-01",
To: "2024-12-31"
},
Status: []string{"active", "pending"}
},
Facets: []string{"resource_type", "status", "tags"},
Sort: Sort{
Field: "created_at",
Order: "desc"
},
Pagination: Pagination{
Page: 1,
PerPage: 20
},
Highlight: true,
Suggest: true
})
SearchResults searchResults = stateset.search(new SearchParams()
.setQuery("john doe refund")
.setResources(Arrays.asList("orders", "customers", "returns"))
.setFilters(new Filters()
.setDateRange(new DateRange()
.setField("created_at")
.setFrom("2024-01-01")
.setTo("2024-12-31"))
.setStatus(Arrays.asList("active", "pending")))
.setFacets(Arrays.asList("resource_type", "status", "tags"))
.setSort(new Sort()
.setField("created_at")
.setOrder("desc"))
.setPagination(new Pagination()
.setPage(1)
.setPerPage(20))
.setHighlight(true)
.setSuggest(true));
$search_results = $stateset->search([
'query' => 'john doe refund',
'resources' => ['orders', 'customers', 'returns'],
'filters' => [
'date_range' => [
'field' => 'created_at',
'from' => '2024-01-01',
'to' => '2024-12-31'
],
'status' => ['active', 'pending']
],
'facets' => ['resource_type', 'status', 'tags'],
'sort' => [
'field' => 'created_at',
'order' => 'desc'
],
'pagination' => [
'page' => 1,
'per_page' => 20
],
'highlight' => true,
'suggest' => true
]);
var searchResults = await stateset.Search(new SearchParams {
Query = "john doe refund",
Resources = new[] { "orders", "customers", "returns" },
Filters = new Filters {
DateRange = new DateRange {
Field = "created_at",
From = "2024-01-01",
To = "2024-12-31"
},
Status = new[] { "active", "pending" }
},
Facets = new[] { "resource_type", "status", "tags" },
Sort = new Sort {
Field = "created_at",
Order = "desc"
},
Pagination = new Pagination {
Page = 1,
PerPage = 20
},
Highlight = true,
Suggest = true
});
{
"results": [
{
"id": "ord_123abc",
"resource_type": "order",
"score": 0.95,
"data": {
"id": "ord_123abc",
"customer_name": "John Doe",
"total": 299.99,
"status": "pending",
"created_at": "2024-03-15T10:30:00Z"
},
"highlights": {
"customer_name": "<em>John Doe</em>",
"notes": "Customer requested <em>refund</em> for damaged item"
}
},
{
"id": "cust_456def",
"resource_type": "customer",
"score": 0.88,
"data": {
"id": "cust_456def",
"name": "John Doe",
"email": "john.doe@example.com",
"status": "active"
},
"highlights": {
"name": "<em>John Doe</em>"
}
}
],
"facets": {
"resource_type": {
"order": 5,
"customer": 3,
"return": 2
},
"status": {
"active": 6,
"pending": 4
},
"tags": {
"vip": 2,
"priority": 3
}
},
"suggestions": [
{
"text": "john doe refunded",
"score": 0.92
}
],
"total_results": 10,
"page": 1,
"per_page": 20,
"query_time_ms": 23
}
{
"error": {
"code": "invalid_query",
"message": "Search query cannot be empty",
"details": {
"min_query_length": 1,
"max_query_length": 1000
}
}
}
⌘I