Chapter 26: Pagination, Filtering, and Ordering

Cursor-Based Pagination

message ListUsersRequest {
  int32 page_size = 1;     // max items per page (default 20, max 100)
  string page_token = 2;   // opaque token from previous response
}
message ListUsersResponse {
  repeated User users = 1;
  string next_page_token = 2;  // empty = no more pages
}

Filtering

message ListUsersRequest {
  int32 page_size = 1;
  string page_token = 2;
  string filter = 3;  // e.g. "age > 25 AND country = 'Sweden'"
  string order_by = 4; // e.g. "created_at desc"
}