Class AdminWebService.GeoScrapeRequest

java.lang.Object
ubic.gemma.rest.AdminWebService.GeoScrapeRequest
Enclosing class:
AdminWebService

public static class AdminWebService.GeoScrapeRequest extends Object
Author:
phase 3 admin-panel wiring
  • Field Details

    • since

      @Nullable public Date since
      Lower bound of the scrape window. Null means "resume from last successful scrape's scanTo".
    • until

      @Nullable public Date until
      Upper bound of the scrape window (publication date inclusive). Null means "today".
    • maxRecords

      @Nullable public Integer maxRecords
      Hard cap on number of GEO records examined, counted from the HEAD of the result set. Null means the service default (1000).

      🛑 This is a cap, NOT a page size — there is no cursor or offset on this request, and the scrape restarts at record 0 on every call. Two calls with maxRecords=50 return the same 50 records; a client looping on it re-scans the same head forever and never advances. Verified 2026-08-12 against live: the 25-record run's candidates are a strict prefix of the 50's, which prefix the 100's, which prefix the 150's.

      To walk a backlog, window with since / until instead — those are the only parameters that move.

    • criteria

      @Nullable public Collection<String> criteria
      Subset of matcher names to apply (e.g. ["brain","tfperturb"]); null/empty = all available.
    • dryRun

      @Nullable public Boolean dryRun
      If true, evaluate matches but do not persist any PreboardedExperiment rows.
    • startAt

      @Nullable public String startAt
      GEO series accession to resume from, e.g. "GSE342847" — the last record you processed. Its release date becomes the upper bound of the window, so the scan picks up where the previous batch stopped and walks backwards. This is the cursor to use for batching; `maxRecords` is a head cap and cannot advance.

      An accession rather than an offset because GEO returns newest-first: a numeric offset shifts whenever a new series is published, so an offset-paging client silently skips records. Series released the same day reappear — that overlap is intentional.

      An explicit `until` wins over this. An accession that cannot be resolved is a 400, not a silent fallback, because ignoring the cursor rescans from the newest record.

    • skip

      @Nullable public Integer skip
      Records to skip at the start of the resolved window — record-level resumption. `startAt` resolves to a release DATE and GEO's filter is day-granular, so resuming at X re-scans X's whole day; when that day is wider than `maxRecords` the scan cannot advance and stepping past the day discards whatever it never reached. Pass the previous response's `nextOffset` here alongside the same `startAt` to continue at record level.
  • Constructor Details

    • GeoScrapeRequest

      public GeoScrapeRequest()