Skip to content

Paginierung und Filter ​

Sammlungen sind immer seitenweise ​

Jede Liste in der API — Spaces, Grids, Einträge, Ansichten, Freigaben — hat dieselbe Hülle:

json
{
  "page": 1,
  "pageSize": 300,
  "size": 2,
  "numberOfItems": 1450,
  "numberOfPages": 5,
  "items": [ … ]
}
FeldBedeutung
pageDie angeforderte Seite, 1-basiert
pageSizeDie angeforderte Seitengröße
sizeWie viele Einträge auf dieser Seite liegen
numberOfItemsGesamtzahl über alle Seiten
numberOfPagesAnzahl der Seiten

Gesteuert wird über zwei Parameter:

ParameterVorgabe
pageIndex1Muss größer als 0 sein, sonst 400
pageSize300Muss größer als 0 sein, sonst 400. Bei …/grids/{gridId}/query ist die Vorgabe 50
bash
curl -s -u "$APPTIVE_KEY:$APPTIVE_SECRET" \
  "$BASE$GRID/entities?pageIndex=2&pageSize=100"

Eine überzählige Seite ist kein Fehler

Fordern Sie eine Seite jenseits des Endes an, kommt 200 mit leerem items — nicht 404. Eine Schleife endet also sauber, wenn items leer ist oder page gleich numberOfPages ist.

Alle Einträge holen:

bash
seite=1
while :; do
  antwort=$(curl -s -u "$APPTIVE_KEY:$APPTIVE_SECRET" \
    "$BASE$GRID/entities?layout=field&pageSize=300&pageIndex=$seite")
  anzahl=$(echo "$antwort" | python3 -c 'import json,sys; print(len(json.load(sys.stdin)["items"]))')
  [ "$anzahl" -eq 0 ] && break
  echo "$antwort"
  seite=$((seite + 1))
done

Filtern ​

filter erwartet ein JSON-Objekt, URL-kodiert, und gilt für GET …/grids/{gridId}/entities.

Der einfachste Fall — ein Feld, ein Operator, ein Wert:

json
{ "6512cc…": { "$eq": "offen" } }
bash
FILTER='{"6512cc…":{"$eq":"offen"}}'
curl -s -u "$APPTIVE_KEY:$APPTIVE_SECRET" \
  --get --data-urlencode "filter=$FILTER" \
  "$BASE$GRID/entities?layout=field"

--data-urlencode spart Handarbeit

Filter enthalten {, " und $. Mit curl --get --data-urlencode müssen Sie nicht selbst kodieren.

Operatoren ​

OperatorBedeutung
$eqGleich
$gtGrößer als — auch für Datum und Zeit
$ltKleiner als
$substringEnthält den Teiltext
$isEmptyFeld ist leer
$hasAnyOfEnthält mindestens einen der Werte
$hasAllOfEnthält alle Werte
$hasNoneOfEnthält keinen der Werte
$isActorFeld verweist auf die aufrufende Identität
$isUpdatedFeld wurde geändert
$updatedFeld wurde von einem Wert auf einen anderen geändert; nimmt { "from": …, "to": … }, beide Angaben sind einzeln zulässig

Verknüpfungen:

OperatorBedeutung
$andAlle Teilbedingungen müssen zutreffen
$orMindestens eine Teilbedingung muss zutreffen
$notKehrt die Bedingung um

$and und $or nehmen ein Array von Bedingungsobjekten, $not genau ein Objekt:

json
{
  "$or": [
    { "6512cc…": { "$gt": "2026-01-01T00:00:00+01:00" } },
    { "6512dd…": { "$eq": "dringend" } }
  ]
}
json
{ "$not": { "6512dd…": { "$eq": "erledigt" } } }

Mehrere Schlüssel nebeneinander in einem Objekt werden verundet:

json
{
  "6512cc…": { "$eq": "offen" },
  "6512dd…": { "$substring": "Rechnung" }
}

Ausdrücke im Filterwert ​

Werte dürfen einen Ausdruck in doppelten geschweiften Klammern tragen, der beim Auswerten aufgelöst wird:

json
{ "6512dd…": { "$gt": "{{today()}}" } }

→ ApptiveScript

Filter und Ansichten ​

Hat die angesprochene Ansicht bereits einen Filter, entscheidet compose, was mit dem mitgegebenen Filter geschieht:

composeWirkung
true (Vorgabe)Beide Filter werden verundet
falseDer mitgegebene Filter ersetzt den der Ansicht

Filter dürfen ausgeblendete Felder nennen

Aufgelöst wird gegen das Schema des zugrunde liegenden Grids, nicht gegen die Feldauswahl der Ansicht.

Was schiefgeht ​

AntwortUrsache
400 „Filter definition is malformed"Kein gültiges JSON oder unbekannter Aufbau
400 mit FeldkennungDer genannte Schlüssel ist kein Feld dieses Grids

Ein häufiger Stolperstein sind typografische Anführungszeichen aus einem Editor: {"name":"x"} mit „" statt " ist kein JSON und ergibt 400.

Sortieren ​

sorting erwartet ebenfalls JSON, URL-kodiert:

json
{ "6512cc…": { "$order": "ascending" } }

Richtungen sind ascending und descending. Mehrere Kriterien schreibt man als Array — sie werden in der angegebenen Reihenfolge angewandt:

json
[
  { "6512dd…": { "$order": "descending" } },
  { "6512cc…": { "$order": "ascending" } }
]
bash
SORT='[{"6512dd…":{"$order":"descending"}}]'
curl -s -u "$APPTIVE_KEY:$APPTIVE_SECRET" \
  --get --data-urlencode "sorting=$SORT" \
  "$BASE$GRID/entities?layout=field"

Neben $order darf ein Kriterium eine Funktion tragen, die vor dem Vergleich auf den Wert angewandt wird — etwa Kleinschreibung oder die Entfernung zu einem Ort. Welche Funktionen ein Feldtyp unterstützt, prüft das Backend; passt sie nicht, antwortet es mit 400.

Ohne sorting gilt die Sortierung, die in der Ansicht hinterlegt ist.

Suchen statt filtern ​

Wenn Sie nicht nach einem bestimmten Feld filtern, sondern schlicht einen Text suchen wollen:

bash
curl -s -u "$APPTIVE_KEY:$APPTIVE_SECRET" \
  "$BASE$GRID/query?matching=Rechnung&pageSize=20"

Die Treffer sind auf die ersten vier Felder des Schemas beschränkt. → Grids

War diese Seite hilfreich?