4. Query options
| Opción | Soporte | Notas |
|---|---|---|
$select | ✅ sí | Acepta * y un nivel de navegación (Localidad/name), que expande esa navegación implícitamente. |
$filter | ✅ sí | Ver la sección dedicada. |
$orderby | ✅ sí | asc/desc y rutas de navegación de muchos a uno. |
$top / $skip | ✅ sí | $top no puede superar el tope de página; ver paginación. |
$count | ✅ sí | $count=true agrega @odata.count con el total. |
$expand | ✅ sí | Con opciones anidadas y $expand=*. Ver maestros relacionados. |
$search | ⚠️ según entidad | Texto libre sobre las columnas de grilla. 501 si la entidad no lo soporta. |
$format | ⚠️ parcial | json siempre; xml solo en $metadata. |
$skiptoken | ✅ sí | Opaco: se usa tal como viene en @odata.nextLink. |
$apply | ❌ no | 501. Agregá del lado del cliente o pedí una vista. |
$levels, $compute, $index | ❌ no | 501. |
Una opción $ desconocida no se ignora: devuelve 501. Es deliberado, para que un error de tipeo no pase inadvertido devolviendo datos sin filtrar. En cambio los parámetros que no empiezan con $ se ignoran (y se arrastran tal cual al @odata.nextLink).
$select
?$select=code,name
Si pedís una propiedad que no existe, la respuesta es 400 PropertyNotFound: no se te devuelve una lista sin ese campo.
La clave no viene si no la pedís. Con $select=name el cuerpo trae name y nada más; la clave queda solamente dentro del @odata.id, de donde se puede extraer, pero no como campo propio. Si la necesitás como dato, incluila en el $select.
# ?$select=name
{
"@odata.id": "https://TU-HOST/synergy-server/jwt-odata-key/o_customers('C0001')",
"name": "Molinos del Sur SA"
}
# ?$select=code,name <- la clave pedida explicitamente
{
"@odata.id": "https://TU-HOST/synergy-server/jwt-odata-key/o_customers('C0001')",
"code": "C0001",
"name": "Molinos del Sur SA"
}
$orderby
?$orderby=name desc
?$orderby=Localidad/name asc,code desc
El servidor completa el orden con la clave primaria para que sea total y estable: es lo que hace que la paginación no repita ni se saltee filas.
$search
?$search=molinos
?$search="molinos del sur"
?$search=molinos AND rosario
?$search=molinos NOT mayorista
Busca el texto en las columnas de texto marcadas para grilla en el ERP, más el campo descriptivo del maestro. Cada término tiene que aparecer en alguna de ellas. Acepta frases entre comillas dobles y los operadores AND, OR, NOT con paréntesis. Si la entidad no tiene columnas de texto buscables, devuelve 501 SearchNotSupported; el Capabilities.SearchRestrictions del $metadata te lo anticipa.