@geolens/sdk 1.19.0 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,12 +4,10 @@ export type ClientOptions = {
4
4
  /**
5
5
  * AIAvailabilityResponse
6
6
  *
7
- * Public-safe AI readiness signal (#338).
7
+ * Public-safe AI readiness signal.
8
8
  *
9
- * Carries a single boolean and intentionally exposes NO provider name, model,
10
- * or key detail it is readable by any non-admin editor holding
11
- * ``use_ai_chat`` so the builder can enable/disable chat without the
12
- * admin-only ``/admin/ai-status`` endpoint (which leaks provider/key info).
9
+ * The response exposes no provider, model, or key details. Editors with
10
+ * ``use_ai_chat`` can use it without access to the admin-only AI status.
13
11
  */
14
12
  export type AiAvailabilityResponse = {
15
13
  /**
@@ -153,7 +151,7 @@ export type AdminApiKeyCreateRequest = {
153
151
  /**
154
152
  * Scope
155
153
  *
156
- * Privilege scope (#875). 'full' impersonates the owner completely, the pre-existing behavior. 'read_only' authenticates GET, HEAD and OPTIONS requests only; any other method is refused with 403. A service-account key minted for an application is the usual case for 'read_only'.
154
+ * Privilege scope. 'full' impersonates the owner completely. 'read_only' authenticates GET, HEAD and OPTIONS requests only; any other method is refused with 403. A service-account key minted for an application is the usual case for 'read_only'.
157
155
  */
158
156
  scope?: 'full' | 'read_only';
159
157
  };
@@ -200,7 +198,7 @@ export type AdminApiKeyListItem = {
200
198
  /**
201
199
  * Scope
202
200
  *
203
- * Privilege scope: 'full' or 'read_only' (#875).
201
+ * Privilege scope: 'full' or 'read_only'.
204
202
  */
205
203
  scope: string;
206
204
  /**
@@ -633,7 +631,7 @@ export type AnalysisPreviewRequest = {
633
631
  /**
634
632
  * Bbox
635
633
  *
636
- * [minx, miny, maxx, maxy] in EPSG:4326, typically the map's current viewport. When present, only source features intersecting the envelope are considered before the preview's row cap applies, so a capped result reflects what is on screen rather than an arbitrary sample in ingest order (fix(#727)). Applies to every operation, not just one, so it is deliberately absent from _ANALYSIS_PARAM_OWNERS — omit it to preview the whole dataset, unchanged from before this field existed.
634
+ * [minx, miny, maxx, maxy] in EPSG:4326, typically the map's current viewport. When present, only source features intersecting the envelope are considered before the preview's row cap applies, so a capped result reflects what is on screen rather than an arbitrary sample in ingest order. Applies to every operation, not just one, so it is deliberately absent from _ANALYSIS_PARAM_OWNERS — omit it to preview the whole dataset, unchanged from before this field existed.
637
635
  */
638
636
  bbox?: Array<number> | null;
639
637
  };
@@ -664,7 +662,7 @@ export type AnalysisPreviewResponse = {
664
662
  /**
665
663
  * Source Feature Count
666
664
  *
667
- * Total feature count of the source dataset (1:1 operations only; null when the operation filters rows, e.g. clip). When the request carried a bbox this is a LIVE count of rows intersecting it rather than the dataset's cached whole-table total (fix(#727)) also null, same as match_count, when that live count could not be computed within the query budget
665
+ * Total feature count of the source dataset (1:1 operations only; null when the operation filters rows, e.g. clip). When the request carried a bbox this is a live count of rows intersecting it rather than the dataset's cached whole-table total. It is also null, like match_count, when that live count could not be computed within the query budget
668
666
  */
669
667
  source_feature_count?: number | null;
670
668
  /**
@@ -693,7 +691,7 @@ export type ApiKeyCreateRequest = {
693
691
  /**
694
692
  * Scope
695
693
  *
696
- * Privilege scope (#875). 'full' impersonates the owner completely, the pre-existing behavior. 'read_only' authenticates GET, HEAD and OPTIONS requests only; any other method is refused with 403.
694
+ * Privilege scope. 'full' impersonates the owner completely. 'read_only' authenticates GET, HEAD and OPTIONS requests only; any other method is refused with 403.
697
695
  */
698
696
  scope?: 'full' | 'read_only';
699
697
  };
@@ -730,7 +728,7 @@ export type ApiKeyCreateResponse = {
730
728
  /**
731
729
  * Scope
732
730
  *
733
- * Privilege scope: 'full' or 'read_only' (#875)
731
+ * Privilege scope: 'full' or 'read_only'
734
732
  */
735
733
  scope: string;
736
734
  /**
@@ -769,7 +767,7 @@ export type ApiKeyListItem = {
769
767
  /**
770
768
  * Scope
771
769
  *
772
- * Privilege scope: 'full' or 'read_only' (#875)
770
+ * Privilege scope: 'full' or 'read_only'
773
771
  */
774
772
  scope: string;
775
773
  /**
@@ -1076,11 +1074,10 @@ export type BackfillEstimate = {
1076
1074
  /**
1077
1075
  * BackfillResponse
1078
1076
  *
1079
- * Acknowledgement that a backfill run was queued (fix(#1542)).
1077
+ * Acknowledgement that a backfill run was queued.
1080
1078
  *
1081
- * The run itself happens on the job queue, so this carries no counts — a full
1082
- * regenerate takes minutes and used to hold the HTTP request open past the
1083
- * 600s edge timeout. Poll ``GET /jobs/{job_id}`` for the run's status.
1079
+ * The response carries no counts because the work runs asynchronously. Poll
1080
+ * ``GET /jobs/{job_id}`` for status.
1084
1081
  */
1085
1082
  export type BackfillResponse = {
1086
1083
  /**
@@ -2504,6 +2501,10 @@ export type ConnectivityResult = {
2504
2501
  * Cache backend probe result.
2505
2502
  */
2506
2503
  cache: ServiceProbeResult;
2504
+ /**
2505
+ * Shared credential handoff probe result.
2506
+ */
2507
+ credential_store: ServiceProbeResult;
2507
2508
  /**
2508
2509
  * Oidc Providers
2509
2510
  *
@@ -3032,7 +3033,7 @@ export type DatasetMeta = {
3032
3033
  /**
3033
3034
  * DatasetRefreshRequest
3034
3035
  *
3035
- * Body of a one-request refresh (#1220). Carries no source pointer.
3036
+ * Body of a one-request refresh. Carries no source pointer.
3036
3037
  *
3037
3038
  * Everything about WHERE the data comes from is read server-side from the
3038
3039
  * dataset's stored origin binding — that is the whole feature. A client
@@ -3046,6 +3047,12 @@ export type DatasetRefreshRequest = {
3046
3047
  * Transient credential for a protected service. Used for this refresh only and never persisted: it is handed to the worker through a single-use, short-lived reference and is gone once claimed. A retry needs a new token. Deprecated: use the auth object with method bearer.
3047
3048
  */
3048
3049
  token?: string | null;
3050
+ /**
3051
+ * Accept Blocked Run Id
3052
+ *
3053
+ * A blocked run whose reviewed source and staged content may be accepted once. A different result blocks again.
3054
+ */
3055
+ accept_blocked_run_id?: string | null;
3049
3056
  /**
3050
3057
  * Structured credential for a protected service. Mutually exclusive with the token field.
3051
3058
  */
@@ -3110,15 +3117,13 @@ export type DatasetRefreshRunListResponse = {
3110
3117
  /**
3111
3118
  * DatasetRefreshRunResponse
3112
3119
  *
3113
- * One refresh attempt, success or failure (ADR-002 Decision 4).
3120
+ * One refresh attempt, including failures.
3114
3121
  *
3115
- * Five fields are redacted for callers who are neither the dataset owner nor
3122
+ * Refresh details are redacted for callers who are neither the dataset owner nor
3116
3123
  * an admin: ``triggered_by``, ``triggered_by_username``, ``error_code``,
3117
- * ``error_message`` and ``schema_diff``. A public dataset's refresh history
3124
+ * ``error_message``, ``schema_diff`` and ``verification``. A public dataset's refresh history
3118
3125
  * otherwise enumerates who edits it, and failure text leaks internal origin
3119
- * detail. The redaction is enumerated against NAMED third-party readers as
3120
- * well as anonymous ones — a signed-in stranger is the case that gets
3121
- * missed.
3126
+ * detail.
3122
3127
  */
3123
3128
  export type DatasetRefreshRunResponse = {
3124
3129
  /**
@@ -3156,7 +3161,7 @@ export type DatasetRefreshRunResponse = {
3156
3161
  /**
3157
3162
  * Status
3158
3163
  *
3159
- * pending, running, succeeded, failed, or cancelled
3164
+ * pending, running, succeeded, failed, cancelled, or blocked
3160
3165
  */
3161
3166
  status: string;
3162
3167
  /**
@@ -3195,6 +3200,10 @@ export type DatasetRefreshRunResponse = {
3195
3200
  * Schema drift measured against the incoming data at swap time. Null for a run that never reached the swap.
3196
3201
  */
3197
3202
  schema_diff?: SchemaDiff | null;
3203
+ /**
3204
+ * Pre-publication count evidence, review reasons, and publication decision.
3205
+ */
3206
+ verification?: RefreshVerification | null;
3198
3207
  /**
3199
3208
  * Error Code
3200
3209
  */
@@ -3335,7 +3344,7 @@ export type DatasetResponse = {
3335
3344
  /**
3336
3345
  * Has Generic Geometry
3337
3346
  *
3338
- * True when the underlying column is generic GEOMETRY (created sketch datasets): the dataset accepts ANY geometry subtype on write regardless of the display geometry_type above. Computed on the detail endpoint only (fix #430 codex r18); list endpoints always report false.
3347
+ * True when the underlying column is generic GEOMETRY (created sketch datasets): the dataset accepts ANY geometry subtype on write regardless of the display geometry_type above. Computed on the detail endpoint only; list endpoints always report false.
3339
3348
  */
3340
3349
  has_generic_geometry?: boolean;
3341
3350
  /**
@@ -3451,13 +3460,13 @@ export type DatasetResponse = {
3451
3460
  /**
3452
3461
  * Origin Uri
3453
3462
  *
3454
- * Machine-readable pointer back to the origin, written only by ingest and refresh. Distinct from source_url, which is editable descriptive metadata. Null for uploads and created datasets. feat(#1316): also null for any reader who is neither the dataset's owner nor an admin — origin (above) and the freshness/health fields below are not gated and still describe the dataset's capabilities.
3463
+ * Machine-readable pointer back to the origin, written only by ingest and refresh. Distinct from source_url, which is editable descriptive metadata. Null for uploads and created datasets. It is also null for any reader who is neither the dataset's owner nor an admin — origin (above) and the freshness/health fields below are not gated and still describe the dataset's capabilities.
3455
3464
  */
3456
3465
  origin_uri?: string | null;
3457
3466
  /**
3458
3467
  * Origin Ref
3459
3468
  *
3460
- * Typed per-origin payload with a `kind` discriminator, e.g. {"kind": "service", "service_type": "wfs", "url": "...", "layer_id": "0"}. Never contains credentials. feat(#1316): owner-or-admin only, same redaction as origin_uri.
3469
+ * Typed per-origin payload with a `kind` discriminator, e.g. {"kind": "service", "service_type": "wfs", "url": "...", "layer_id": "0"}. Never contains credentials. owner-or-admin only, same redaction as origin_uri.
3461
3470
  */
3462
3471
  origin_ref?: {
3463
3472
  [key: string]: unknown;
@@ -3623,7 +3632,7 @@ export type DatasetResponse = {
3623
3632
  /**
3624
3633
  * Metadata Warnings
3625
3634
  *
3626
- * Advisory warnings produced by a metadata update — e.g. a visibility or status change exposing keywords inherited from an analysis source the new audience cannot open (feat #1070). Only ever set on the PATCH response; the change has already applied.
3635
+ * Advisory warnings produced by a metadata update — e.g. a visibility or status change exposing keywords inherited from an analysis source the new audience cannot open. Only ever set on the PATCH response; the change has already applied.
3627
3636
  */
3628
3637
  metadata_warnings?: Array<string> | null;
3629
3638
  };
@@ -3672,11 +3681,9 @@ export type DatasetVersionListResponse = {
3672
3681
  *
3673
3682
  * One version in a dataset's history.
3674
3683
  *
3675
- * feat(#1316): ``file_hash`` and ``uploaded_by`` are null for any caller who
3676
- * is neither the dataset's owner nor an admin the same predicate that
3677
- * gates ``origin_uri``/``origin_ref`` on the dataset itself and
3678
- * ``triggered_by`` on refresh-runs (ADR-002 Decision 4e). Unredacted, a
3679
- * public dataset's version history enumerates its editors.
3684
+ * ``file_hash`` and ``uploaded_by`` are null for callers who are neither the
3685
+ * dataset owner nor an administrator. This prevents public version history
3686
+ * from identifying editors.
3680
3687
  */
3681
3688
  export type DatasetVersionResponse = {
3682
3689
  /**
@@ -3755,20 +3762,9 @@ export type DbfTruncationDetail = {
3755
3762
  *
3756
3763
  * Provenance for an analysis output: what it came from, and how.
3757
3764
  *
3758
- * fix(#765 review): declared as a model rather than ``dict[str, Any]``. The
3759
- * dict spelled itself into the checked-in OpenAPI as bare
3760
- * ``additionalProperties: true``, so both generated SDKs lost the shape — the
3761
- * TypeScript one degraded to an index signature and the Python one to an
3762
- * empty additional-properties container. The stable shape was documented in
3763
- * prose and mirrored by hand in the frontend types while the SDKs, which is
3764
- * where most consumers actually meet it, could not use it type-safely.
3765
- *
3766
3765
  * ``params`` stays untyped on purpose: it is the operation's own parameter
3767
- * dict, so its keys differ per operation (``distance_meters`` for a buffer,
3768
- * ``mask_source``/``mask_dataset_id`` for a clip), and it is additionally
3769
- * REDACTED per requester — ``visible_derived_from`` drops any embedded
3770
- * dataset id the caller cannot see. A union of per-operation models would
3771
- * describe a shape the redaction is free to punch holes in.
3766
+ * dictionary, so its keys differ by operation. It is also redacted for each
3767
+ * requester: dataset ids that the caller cannot access are omitted.
3772
3768
  */
3773
3769
  export type DerivedFromResponse = {
3774
3770
  /**
@@ -4668,17 +4664,11 @@ export type GeoJsonGeometry = {
4668
4664
  *
4669
4665
  * A GeoJSON GeometryCollection (RFC 7946 §3.1.8).
4670
4666
  *
4671
- * fix(#430 codex r9): carries ``geometries`` instead of ``coordinates``, so
4672
- * it needs its own model — only generic-GEOMETRY datasets accept it on write
4673
- * (enforced in the service), and any stored collection must serialize back
4674
- * out on read.
4667
+ * Geometry collections carry ``geometries`` instead of ``coordinates``.
4668
+ * Only generic-geometry datasets accept them on write.
4675
4669
  *
4676
- * Deliberately NON-recursive (codex r13, refuted): PostGIS cannot round-trip
4677
- * nested collections through the GeoJSON boundary in either direction —
4678
- * ST_GeomFromGeoJSON rejects them on write and ST_AsGeoJSON raises
4679
- * 'GeoJson: geometry not supported' on read — so a recursive model could
4680
- * never receive one and would only convert the write-side 422 into a raw
4681
- * database 500. The write schemas add a raw-payload guard for a clear 422.
4670
+ * Nested collections are rejected because PostGIS cannot round-trip them
4671
+ * through the GeoJSON boundary.
4682
4672
  */
4683
4673
  export type GeoJsonGeometryCollection = {
4684
4674
  /**
@@ -4837,7 +4827,7 @@ export type InfrastructureResponse = {
4837
4827
  /**
4838
4828
  * JobCancelResponse
4839
4829
  *
4840
- * Outcome of ``POST /jobs/{id}/cancel`` (#1677).
4830
+ * Outcome of ``POST /jobs/{id}/cancel``.
4841
4831
  *
4842
4832
  * ``run_id`` is the ``dataset_refresh_runs`` row this cancel finalized, when
4843
4833
  * the job had one bound (refreshes and reuploads do; plain imports don't).
@@ -4977,7 +4967,7 @@ export type KeywordListResponse = {
4977
4967
  /**
4978
4968
  * Inherited Audience Gap
4979
4969
  *
4980
- * True when at least one keyword is inherited AND this record's audience — at its stored state, or at the counterfactual audience_visibility/audience_record_status query parameters, which are honored only for the record's owner and admins — includes someone who cannot open the source dataset (feat #1070).
4970
+ * True when at least one keyword is inherited AND this record's audience — at its stored state, or at the counterfactual audience_visibility/audience_record_status query parameters, which are honored only for the record's owner and admins — includes someone who cannot open the source dataset.
4981
4971
  */
4982
4972
  inherited_audience_gap?: boolean;
4983
4973
  };
@@ -5008,7 +4998,7 @@ export type KeywordResponse = {
5008
4998
  /**
5009
4999
  * Inherited
5010
5000
  *
5011
- * True when this keyword also exists on the dataset this record was derived from (feat #1070). Derived at read time from derived_from; only ever true for a requester who can access that source dataset, so everyone else sees false — matching the derived_from redaction.
5001
+ * True when this keyword also exists on the dataset this record was derived from. Derived at read time from derived_from; only ever true for a requester who can access that source dataset, so everyone else sees false — matching the derived_from redaction.
5012
5002
  */
5013
5003
  inherited?: boolean;
5014
5004
  };
@@ -6326,12 +6316,11 @@ export type MapVisibility = 'private' | 'internal' | 'public';
6326
6316
  /**
6327
6317
  * MercatorClipDetail
6328
6318
  *
6329
- * fix(#888): how much geometry the Web Mercator clamp destroyed.
6319
+ * Counts geometry changed by the Web Mercator clamp.
6330
6320
  *
6331
6321
  * The clamp is a box, not a latitude cutoff: longitude -180 to 180 and
6332
6322
  * latitude -85.06 to 85.06. Either bound can be the one that cost the user
6333
- * geometry, so clients must not present this as a latitude-only problem
6334
- * (fix(#899 codex r1)).
6323
+ * geometry, so clients must not present this as a latitude-only problem.
6335
6324
  *
6336
6325
  * ``dropped_features`` lost their geometry entirely (a valid point at lat
6337
6326
  * -89.95 becomes ``MULTIPOINT EMPTY``); ``clipped_features`` survived in
@@ -7060,11 +7049,8 @@ export type OgcLink = {
7060
7049
  *
7061
7050
  * One entry in the raster:bands STAC extension array.
7062
7051
  *
7063
- * fix(#1805 review round 3 P2): matches the shape service_records.py
7064
- * actually serializes per band. `statistics` matches the normalized
7065
- * band_info shape core/raster_bands.py (introduced by #1803, the raster
7066
- * lifecycle PR) produces on read; keep this in sync if that PR changes
7067
- * the per-band keys.
7052
+ * This matches the per-band data returned by catalog search. ``statistics``
7053
+ * uses the normalized raster band metadata shape.
7068
7054
  */
7069
7055
  export type OgcRasterBand = {
7070
7056
  /**
@@ -8000,17 +7986,10 @@ export type RasterPreviewResponse = {
8000
7986
  *
8001
7987
  * A raster tile template, signed like its vector sibling.
8002
7988
  *
8003
- * fix(#688): the raster shape used to carry no signature at all, so a client
8004
- * following the API contract literally received an *unauthenticated* template
8005
- * for a private raster. MapLibre issues the tile image requests itself and
8006
- * attaches no `X-Api-Key`, so an API-key-only client could not render one —
8007
- * the workarounds were `setTransformRequest` (not available to every consumer)
8008
- * or `?api_key=` in the tile URL, which puts a non-expiring unscoped
8009
- * credential into tile URLs, server logs, and saved client project files.
8010
- *
8011
- * `tile_url` now arrives with `sig`/`exp`/`scope` already in its query string,
8012
- * so the template is self-sufficient and expires. The three are also returned
8013
- * as fields, mirroring `VectorTileToken`, for clients that rebuild the URL.
7989
+ * ``tile_url`` includes ``sig``, ``exp``, and ``scope`` in its query string,
7990
+ * so MapLibre can request private tiles without attaching an API key. The
7991
+ * signature expires, and its fields are also returned separately for clients
7992
+ * that rebuild the URL.
8014
7993
  */
8015
7994
  export type RasterTileToken = {
8016
7995
  /**
@@ -8067,6 +8046,69 @@ export type RefreshRequest = {
8067
8046
  */
8068
8047
  refresh_token: string;
8069
8048
  };
8049
+ /**
8050
+ * RefreshVerification
8051
+ */
8052
+ export type RefreshVerification = {
8053
+ /**
8054
+ * Decision
8055
+ */
8056
+ decision: 'allowed' | 'blocked' | 'rejected';
8057
+ /**
8058
+ * Source Binding
8059
+ */
8060
+ source_binding: {
8061
+ [key: string]: unknown;
8062
+ };
8063
+ /**
8064
+ * Source Count
8065
+ */
8066
+ source_count: number | null;
8067
+ /**
8068
+ * Fetched Count
8069
+ */
8070
+ fetched_count: number | null;
8071
+ /**
8072
+ * Count Status
8073
+ */
8074
+ count_status: 'matched' | 'mismatched' | 'unavailable';
8075
+ /**
8076
+ * Identity Check
8077
+ */
8078
+ identity_check: 'unavailable' | 'content_digest';
8079
+ /**
8080
+ * Content Digest
8081
+ */
8082
+ content_digest?: string | null;
8083
+ /**
8084
+ * Staged Geometry Type
8085
+ */
8086
+ staged_geometry_type?: string | null;
8087
+ /**
8088
+ * Staged Srid
8089
+ */
8090
+ staged_srid?: number | null;
8091
+ /**
8092
+ * Staged Coordinate Dimension
8093
+ */
8094
+ staged_coordinate_dimension?: number | null;
8095
+ /**
8096
+ * Review Reasons
8097
+ */
8098
+ review_reasons: Array<'source_count_unavailable' | 'empty_result' | 'destructive_schema_change'>;
8099
+ /**
8100
+ * Review Fingerprint
8101
+ */
8102
+ review_fingerprint: string | null;
8103
+ /**
8104
+ * Accepted Blocked Run Id
8105
+ */
8106
+ accepted_blocked_run_id: string | null;
8107
+ /**
8108
+ * Acceptance Consumed By Run Id
8109
+ */
8110
+ acceptance_consumed_by_run_id?: string | null;
8111
+ };
8070
8112
  /**
8071
8113
  * RegisterRequest
8072
8114
  */
@@ -8218,7 +8260,7 @@ export type ReuploadCommitRequest = {
8218
8260
  /**
8219
8261
  * Expected Origin Kind
8220
8262
  *
8221
- * The dataset origin the client saw when it staged this replacement. When set, the commit is refused with 409 `origin_changed` if the dataset's origin no longer matches, so a service, STAC or registered-table binding established after the upload is not silently rebound to an upload. Optional: a client that omits it keeps the pre-#1768 behaviour.
8263
+ * The dataset origin the client saw when it staged this replacement. When set, the commit is refused with 409 `origin_changed` if the dataset's origin no longer matches, so a service, STAC or registered-table binding established after the upload is not silently rebound to an upload. A client may omit the field to skip this concurrency check.
8222
8264
  */
8223
8265
  expected_origin_kind?: 'upload' | 'postgis' | 'service' | 'stac' | 'created' | null;
8224
8266
  /**
@@ -9146,17 +9188,12 @@ export type SharedMapResponse = {
9146
9188
  /**
9147
9189
  * SourceHealthResponse
9148
9190
  *
9149
- * Result of one on-demand origin probe (ADR-002, #1222).
9191
+ * Result of one on-demand origin probe.
9150
9192
  *
9151
- * Shares its first three words with ``VrtSourceHealth.status``, so the UI
9152
- * renders one legend across VRT members and standalone origins.
9153
- * ``VrtSourceHealth`` carries a fourth, VRT-specific value, ``stale``
9154
- * (fix(#1221)): it means a member's raster was replaced after the parent
9155
- * VRT was last built, and it does not apply to a single-origin probe. This
9156
- * endpoint always probes, so it also never returns the OTHER fourth value,
9157
- * ``unknown`` — the response-boundary projection of a never-determined NULL
9158
- * column, which reaches clients through ``DatasetResponse``, not through
9159
- * here.
9193
+ * The values align with ``VrtSourceHealth.status`` so clients can use one
9194
+ * legend for VRT members and standalone origins. ``stale`` applies only to
9195
+ * VRT members, while ``unknown`` represents health that has not been checked;
9196
+ * this endpoint always performs a probe and returns neither value.
9160
9197
  */
9161
9198
  export type SourceHealthResponse = {
9162
9199
  /**
@@ -9933,7 +9970,7 @@ export type StacItemSummary = {
9933
9970
  /**
9934
9971
  * Data Asset Key
9935
9972
  *
9936
- * The key the data asset is published under on the item. Echo it back on import so the dataset records WHICH asset it came from: hrefs move, and the key is what survives the move (#1266).
9973
+ * The key the data asset is published under on the item. Echo it back on import so the dataset records which asset it came from. The key remains stable when the href changes.
9937
9974
  */
9938
9975
  data_asset_key?: string | null;
9939
9976
  /**
@@ -10177,7 +10214,7 @@ export type StatusUpdateResponse = {
10177
10214
  /**
10178
10215
  * Metadata Warnings
10179
10216
  *
10180
- * Advisory warnings from the status change — the same inherited-keyword disclosure check the metadata PATCH runs (feat #1070, fix #1178 review). The transition has already applied.
10217
+ * Advisory warnings from the status change — the same inherited-keyword disclosure check the metadata PATCH runs. The transition has already applied.
10181
10218
  */
10182
10219
  metadata_warnings?: Array<string> | null;
10183
10220
  };
@@ -10239,7 +10276,7 @@ export type SublayerOverride = {
10239
10276
  /**
10240
10277
  * Opacity
10241
10278
  *
10242
- * Per-sublayer opacity (0-1), or null to use the basemap default. Composes on top of BasemapConfig.opacity (the whole-basemap master opacity): the rendered opacity is override.opacity * master_opacity (#338). The UI opacity slider in BasemapSublayerEditorScene persists through this field: MapBuilderPage.handleSublayerOpacityChange -> setBasemapSublayerOpacity -> updateBasemapSublayerOverride writes config.sublayer_overrides[key].opacity.
10279
+ * Per-sublayer opacity (0-1), or null to use the basemap default. Composes on top of BasemapConfig.opacity (the whole-basemap master opacity). The rendered opacity is the sublayer override multiplied by the master opacity.
10243
10280
  */
10244
10281
  opacity?: number | null;
10245
10282
  };
@@ -10545,11 +10582,10 @@ export type UploadResponse = {
10545
10582
  /**
10546
10583
  * UrlUploadRequest
10547
10584
  *
10548
- * Request body for the URL variant of upload (feat #1705).
10585
+ * Request body for importing a file from a URL.
10549
10586
  *
10550
- * The server fetches the file itself (SSRF-validated, size-capped) and
10551
- * stages it exactly like a direct upload — preview and commit take over
10552
- * unchanged.
10587
+ * The server validates the URL for SSRF, enforces the size limit, and stages
10588
+ * the file through the same preview and commit flow as a direct upload.
10553
10589
  */
10554
10590
  export type UrlUploadRequest = {
10555
10591
  /**
@@ -10685,6 +10721,12 @@ export type UserResponse = {
10685
10721
  * Assigned role names, e.g. ['admin', 'editor']
10686
10722
  */
10687
10723
  roles: Array<string>;
10724
+ /**
10725
+ * Can Reset Password
10726
+ *
10727
+ * Whether an administrator can set a local password for this account. True for local accounts even when an identity provider is also linked.
10728
+ */
10729
+ can_reset_password: boolean;
10688
10730
  /**
10689
10731
  * Per-user storage quota usage. Populated only on admin list responses; None when the caller did not load usage (e.g. /auth/me, single-user GET).
10690
10732
  */
@@ -12105,6 +12147,12 @@ export type ListUsersAdminUsersGetData = {
12105
12147
  * Status
12106
12148
  */
12107
12149
  status?: string | null;
12150
+ /**
12151
+ * Role
12152
+ *
12153
+ * Assigned role membership to match.
12154
+ */
12155
+ role?: 'admin' | 'editor' | 'viewer' | null;
12108
12156
  /**
12109
12157
  * Search
12110
12158
  */
@@ -13693,6 +13741,69 @@ export type LogoutAuthLogoutPostResponses = {
13693
13741
  204: void;
13694
13742
  };
13695
13743
  export type LogoutAuthLogoutPostResponse = LogoutAuthLogoutPostResponses[keyof LogoutAuthLogoutPostResponses];
13744
+ export type LogoutCurrentSessionAuthLogoutSessionPostData = {
13745
+ /**
13746
+ * Body
13747
+ */
13748
+ body?: RefreshRequest | null;
13749
+ headers?: {
13750
+ /**
13751
+ * Authorization
13752
+ */
13753
+ authorization?: string | null;
13754
+ /**
13755
+ * X-Csrf-Token
13756
+ *
13757
+ * Double-submit CSRF token, enforced only when the refresh cookie is what authenticates the call. Echo the value of the `geolens_csrf` cookie issued alongside the refresh cookie. Callers presenting a refresh token in the request body do not send it.
13758
+ */
13759
+ 'X-CSRF-Token'?: string | null;
13760
+ };
13761
+ path?: never;
13762
+ query?: never;
13763
+ url: '/auth/logout/session/';
13764
+ };
13765
+ export type LogoutCurrentSessionAuthLogoutSessionPostErrors = {
13766
+ /**
13767
+ * Bad request — invalid query parameters or payload
13768
+ */
13769
+ 400: ProblemDetail;
13770
+ /**
13771
+ * Unauthorized — missing or invalid credentials
13772
+ */
13773
+ 401: ProblemDetail;
13774
+ /**
13775
+ * Forbidden — caller lacks access to this resource
13776
+ */
13777
+ 403: ProblemDetail;
13778
+ /**
13779
+ * Not found
13780
+ */
13781
+ 404: ProblemDetail;
13782
+ /**
13783
+ * Validation error
13784
+ */
13785
+ 422: ProblemDetail;
13786
+ /**
13787
+ * Too many requests — retry after the advertised interval
13788
+ */
13789
+ 429: ProblemDetail;
13790
+ /**
13791
+ * Internal server error
13792
+ */
13793
+ 500: ProblemDetail;
13794
+ /**
13795
+ * Service unavailable — the database could not serve the request
13796
+ */
13797
+ 503: ProblemDetail;
13798
+ };
13799
+ export type LogoutCurrentSessionAuthLogoutSessionPostError = LogoutCurrentSessionAuthLogoutSessionPostErrors[keyof LogoutCurrentSessionAuthLogoutSessionPostErrors];
13800
+ export type LogoutCurrentSessionAuthLogoutSessionPostResponses = {
13801
+ /**
13802
+ * Successful Response
13803
+ */
13804
+ 204: void;
13805
+ };
13806
+ export type LogoutCurrentSessionAuthLogoutSessionPostResponse = LogoutCurrentSessionAuthLogoutSessionPostResponses[keyof LogoutCurrentSessionAuthLogoutSessionPostResponses];
13696
13807
  export type MeAuthMeGetData = {
13697
13808
  body?: never;
13698
13809
  path?: never;
@@ -15176,7 +15287,7 @@ export type GetCollectionItemsCollectionsDatasetIdItemsGetData = {
15176
15287
  /**
15177
15288
  * Filter
15178
15289
  *
15179
- * CQL2 filter expression evaluated server-side against this collection's queryables document (feat(#1614), OGC Features Part 3). Combines with bbox and property filters by AND.
15290
+ * CQL2 filter expression evaluated server-side against this collection's OGC Features Part 3 queryables document. Combines with bbox and property filters by AND.
15180
15291
  */
15181
15292
  filter?: string | null;
15182
15293
  /**
@@ -23536,13 +23647,13 @@ export type ListKeywordsEndpointRecordsRecordIdKeywordsGetData = {
23536
23647
  /**
23537
23648
  * Audience Visibility
23538
23649
  *
23539
- * Compute inherited_audience_gap as if the record had this visibility — the counterfactual an owner asks before widening access (feat #1070). Honored only for the record's owner and admins; ignored for everyone else, who get the gap at the record's stored state. Keywords themselves are unaffected.
23650
+ * Compute inherited_audience_gap as if the record had this visibility. Honored only for the record's owner and admins; ignored for everyone else, who get the gap at the record's stored state. Keywords themselves are unaffected.
23540
23651
  */
23541
23652
  audience_visibility?: string | null;
23542
23653
  /**
23543
23654
  * Audience Record Status
23544
23655
  *
23545
- * Compute inherited_audience_gap as if the record had this status — the counterfactual an owner asks before publishing (feat #1070). Honored only for the record's owner and admins; ignored for everyone else, who get the gap at the record's stored state. Deliberately not pinned to an enum: the lifecycle statuses come from the workflow extension's status_order(), so an overlay may define its own. An unrecognized status is treated conservatively (it reaches only the owner, which errs toward warning) rather than rejected.
23656
+ * Compute inherited_audience_gap as if the record had this status — the counterfactual an owner asks before publishing. Honored only for the record's owner and admins; ignored for everyone else, who get the gap at the record's stored state. Deliberately not pinned to an enum: the lifecycle statuses come from the workflow extension's status_order(), so an overlay may define its own. An unrecognized status is treated conservatively (it reaches only the owner, which errs toward warning) rather than rejected.
23546
23657
  */
23547
23658
  audience_record_status?: string | null;
23548
23659
  };