Skip to main content

Migration from Parameter-based Queries

This page helps you translate existing parameter-based API calls into the filter syntax documented in this section.

Parameter mapping​

Parameter-basedFilter-based equivalent
type=publication&type=dataset (legacy arrays)filter=type:publication|dataset
type=("publication" OR "dataset") (inline expression)filter=type:publication|dataset
fromPublicationDate=2022&toPublicationDate=2023filter=from_publication_date:2022,to_publication_date:2023
logicalOperator=AND (top-level)Implicit: comma is AND, pipe is OR
includeStats=truefacets=type (or any fields you want)
sortBy=citationCount DESCsort=citation_count:desc
mainTitle=neural networkfilter=title.search:neural network
authorOrcid=0000-0002-...filter=authorships.author.orcid:0000-0002-...
authorFullName=Paolo Manghifilter=authorships.author.fullname:Paolo Manghi
relProjectFundingShortName=ECfilter=grants.funder_short_name:EC
hasProjectRel=truefilter=has_grant:true
relProjectId=...filter=grants.project_id:...
relProjectCode=101017452filter=grants.code:101017452
relOrganizationId=...filter=affiliations.organization_id:...
relCommunityId=...filter=communities.id:...
bestOpenAccessRightLabel=OPENfilter=best_oa.rights:Open Access
influenceClass=C1filter=impact.influence_class:C1
isPeerReviewed=truefilter=is_peer_reviewed:true
isGreen=truefilter=is_green:true
openAccessColor=goldfilter=oa_color:gold
countryCode=GRfilter=authorships.countries:GR
page=1&pageSize=10page=1&page_size=10
cursor=*cursor=* (same)

Key differences​

Filter parameter​

The parameter-based endpoints use 30+ individual query parameters. The filter-based endpoints collapse them into a single filter= parameter with field:value syntax. Multiple filters are comma-separated (AND logic), and pipe (|) is used for OR within a field.

Sort format​

Parameter-based: sortBy=citationCount DESC (space-separated, camelCase)

Filter-based: sort=citation_count:desc (colon-separated, snake_case)

Page size​

Parameter-based: pageSize=10 (camelCase)

Filter-based: page_size=10 (snake_case)

Aggregations​

The parameter-based endpoints use includeStats=true, which returns a fixed set of statistics. The filter-based endpoints replace this with two flexible modes:

  • facets=type,best_oa.rights — records + chosen aggregations
  • group_by=type — aggregations only, no records

See Aggregations for details.

Sparse fieldsets​

The filter-based endpoints add select= for requesting only specific response fields. This has no parameter-based equivalent.

See Sparse fieldsets for details.

Error handling​

CodeWhen
400Invalid filter syntax, unknown field, disallowed operator, mutual exclusion violation, pagination limit exceeded
404Research product not found (by-ID endpoint)
500Internal failure

Error response body:

{
"status": 400,
"message": "Unknown filter field: 'foo'"
}