# info.description
Curated OpenAPI snapshot of key Honua Server administrative endpoints for configuration, import scanning, connections, layers, styles, observability, realtime alert management, durable job viewing, package validation and preview planning, runtime licensing, deploy control, and native client-certificate trust management. For full runtime endpoint discovery, use /api/v1/admin/config and the Control Plane guide.

# x-honua-client-certificate-auth.note
OpenAPI 3.0 cannot directly model TLS client-certificate presentation. Required admin/native mTLS modes are enforced before normal RBAC and return application/problem+json with stable client_certificate_* codes.

# tags[].description
Metadata capabilities and compatibility surfaces

# tags[].description
Migration source scanning and import-adjacent workflows

# tags[].description
Console Operate geofence zones, alert rules, draft validation, and delivery health

# tags[].description
Console durable job observability, logs, artifacts, and controls

# tags[].description
Deploy preflight and rollout-readiness surfaces

# tags[].description
Service-level protocol and metadata settings

# tags[].description
Runtime license status, uploads, and entitlement inventory

# tags[].description
Edition-gated feature catalog and active entitlement state

# tags[].description
Package validation and read-only preview planning

# tags[].description
Compliance posture dashboard, evidence export, data-residency policy evaluation, and encryption key rotation.

# tags[].description
Authentication policy metadata and client-certificate trust management

# tags[].description
Server-managed API key lifecycle and effective permissions

# tags[].description
Operation-proposal approval surface: list, inspect, approve, and reject guardrail-routed operation proposals.

# tags[].description
Network-dataset registry CRUD plus the versioned topology generation, batched edit, shadow rebuild, promotion and rollback lifecycle. Registered only for the Postgres data-source profile.

# tags[].description
Operational monitoring and control: cache health/statistics/invalidation, Redis connection metrics, geocoding provider health and configuration, streaming subscribers, and unified operation progress/cancellation.

# tags[].description
Runtime performance diagnostics: query timing, resource tracking, exception telemetry, and query-result cache metrics.

# tags[].description
Cache health status and scoped cache invalidation.

# tags[].description
Geoprocessing (GP) tool administration and usage telemetry.

# tags[].description
Replay of normalized feature-change events for downstream recovery.

# tags[].description
Console Share scheduled export definitions, export run history, and Share traffic projections.

# tags[].description
Embed API key lifecycle (create, rotate, revoke) and embed usage reporting.

# tags[].description
Migration run orchestration and published migration performance/cost evidence artifacts.

# tags[].description
Server-owned form package authoring lifecycle: draft, validate, publish, reopen, and AI-assisted generation.

# tags[].description
Back-office review, QA, and export of mobile-submitted field records.

# tags[].description
3D scene dataset registry, tileset generation, and CityGML/point-cloud ingest.

# tags[].description
Console Operate investigations: event pins and resource links.

# tags[].description
Registration and metadata scans for cloud-hosted HDF5 / NetCDF4 / GRIB coverages.

# tags[].description
Registration and metadata scans for cloud-hosted Cloud Optimized GeoTIFFs.

# tags[].description
Registration and metadata scans for cloud-hosted Zarr coverage stores.

# tags[].description
Role definitions and permission-grant administration (RBAC)

# tags[].description
Managed user directory, role assignment, and effective-permission resolution

# tags[].description
Tenant provisioning, lifecycle transitions, and metered billing usage export

# tags[].description
Stored OIDC identity-provider registrations and connectivity testing

# tags[].description
Configuration-driven identity-provider status and OIDC discovery connectivity checks

# tags[].description
OAuth2 scope catalogue and scope-to-permission mapping

# tags[].description
Application-level rate limit policy configuration and live window status.

# tags[].description
Asynchronous tile cache seed/warm/invalidate/purge/archive/publish jobs and on-demand eviction sweeps. Response payloads on this surface use PascalCase property names.

# tags[].description
Field-level security (column masking) policies applied at the shared query projection seam.

# tags[].description
Row-level security policies that constrain a layer attribute by a caller claim.

# tags[].description
Configured federated query sources and offline push-down query plans.

# tags[].description
Geocoding provider health/capabilities and local geocoder reference data import.

# tags[].description
Discovery of externally hosted ArcGIS and OGC API services for import planning.

# tags[].description
Platform-release co-versioning convergence of the serving plane.

# paths./api-keys.get.description
Lists server-managed API keys without returning plaintext key material.

# paths./api-keys.post.description
Creates a server-managed API key. The plaintext key is returned once in this response and must be stored securely.

# paths./api-keys/{id}/rotate.post.description
Rotates an active server-managed API key. The replacement plaintext key is returned once in this response.

# paths./api-keys/{id}/revoke.post.description
Revokes a server-managed API key so it can no longer authenticate.

# paths./api-keys/{id}/effective-permissions.get.description
Returns the current lifecycle status, permissions, and authentication eligibility for a server-managed API key.

# paths./alerts/zones.get.description
List geofence alert zones, optionally filtered by owning service.

# paths./alerts/zones.get.parameters[].description
Filter zones by owning service identifier.

# paths./alerts/zones.post.description
Create a geofence alert zone. Polygon WKT is normalized to MultiPolygon WKT in the response.

# paths./alerts/zones/{zoneId}.get.description
Read a geofence alert zone by identifier.

# paths./alerts/zones/{zoneId}.put.description
Replace a geofence alert zone by identifier.

# paths./alerts/zones/{zoneId}.delete.description
Delete a geofence alert zone by identifier.

# paths./alerts/rules.get.description
List alert rules, optionally filtered by service and layer.

# paths./alerts/rules.post.description
Create a realtime alert rule after validating trigger, conditions, geofence zone reference, edition, and delivery channels. Persisted enter/exit/dwell rules require zoneId; threshold rules must omit zoneId.

# paths./alerts/rules/test.post.description
Validate a draft alert rule and optional geofence draft zone without persisting either resource. Invalid drafts return 200 with data.isValid=false and validation details. Draft zones are only accepted for enter, exit, and dwell rules.

# paths./alerts/rules/{ruleId}.put.description
Replace an alert rule by identifier after validating trigger, conditions, geofence zone reference, edition, and delivery channels. Persisted enter/exit/dwell rules require zoneId; threshold rules must omit zoneId.

# paths./alerts/rules/{ruleId}/enabled.put.description
Enable or disable an alert rule. Enabling validates the existing rule and can return 400 when the rule is no longer valid.

# paths./alerts/rules/{ruleId}/health.get.description
Inspect evaluator state, active incidents, recent triggers, delivery failures, dead-letter state, and channel health for an alert rule. Active incidents are derived from current evaluator state, not historical alert-event rows.

# paths./config.get.description
Returns system configuration documentation and available settings

# paths./capabilities.get.description
Returns metadata capabilities and the canonical SDK compatibility contract for the control plane. Readable anonymously so SDK compatibility checks can run before credentials exist.

# paths./capabilities.get.responses.200.description
Admin metadata capabilities and SDK compatibility metadata

# paths./connections.get.description
Get all configured database connections (credential values are never exposed)

# paths./connections.post.description
Create a new secure connection using encrypted credentials or external secret reference

# paths./connections/{id}.get.description
Get details for a specific secure connection

# paths./connections/{id}.put.description
Update mutable secure connection properties

# paths./connections/{id}/tables.get.description
List discovered PostGIS tables for a connection identifier (GUID or name)

# paths./connections/test.post.description
Test a draft connection request before saving

# paths./connections/{id}/layers.get.description
Get published layers for a connection and optional service name

# paths./connections/{id}/layers/{layerId}/enabled.put.description
Enable or disable a specific published layer

# paths./observability/telemetry.get.description
Get current telemetry and tracing configuration status

# paths./deploy/preflight.get.description
Returns instance-local deploy preflight state used by the Honua control plane for coordinated rollouts.

# paths./deploy/preflight.get.parameters[].description
When true, includes serverVersion, environment, deploymentMode, instanceName, readiness, migration, and databaseCompatibility fields in the response.

# paths./deploy/preflight.get.responses.200.description
Deploy preflight status for this Honua instance

# paths./connections/{id}/test.post.description
Run a health test for an existing saved connection

# paths./connections/encryption/validate.post.description
Validate encryption service health and return current key version

# paths./connections/encryption/rotate-key.post.description
Rotate encryption key version for connection credential storage

# paths./connections/{id}/layers/enabled.put.description
Enable or disable all layers for a service within a connection

# paths./metadata/layers/{layerId}/style.get.description
DEPRECATED layerId-keyed alias. The canonical style identifier is styleId via GET /ogc/styles/{styleId} (ADR-0048). This alias is kept working for back-compat and returns advisory Deprecation/Sunset response headers; it will be removed only after downstream styleId migration completes. Get the canonical MapLibre style document for a layer plus revision metadata (styleVersion, revisedAt, revisedBy, changeSummary). The cached drawingInfo conversion is included when available.

# paths./metadata/layers/{layerId}/style.put.description
DEPRECATED layerId-keyed alias. The canonical style identifier is styleId via PUT /ogc/styles/{styleId} (ADR-0048). This alias is kept working for back-compat and returns advisory Deprecation/Sunset response headers; it will be removed only after downstream styleId migration completes. Update the canonical MapLibre style for a layer. Supply mapLibreStyle directly or a GeoServices drawingInfo payload that the engine converts. Optional changedBy and changeSummary populate the layer's revision metadata; changeSummary longer than 1000 characters returns 400. The response includes the persisted style, the incremented styleVersion, the new revisedAt timestamp, and unsupportedSymbolizers[] entries with stable StyleErrorCodes for any symbolizers that could not be losslessly translated. Style intent is never silently dropped: a best-effort MapLibre fallback is still returned alongside the unsupported list.

# paths./metadata/layers/{layerId}/style/import-sld.post.description
Convert an SLD/SE 1.0 or 1.1 XML document to a MapLibre style and persist it as the layer's stored style. Admin-only; available in Community edition (no FeatureCatalog gate). Body is the raw SLD document (capped at 1 MiB; oversized requests return 413). Conversion warnings come back in the success body's diagnostics array; error-severity diagnostics return 422 with the same diagnostic shape under data.diagnostics.

# paths./metadata/layers/{layerId}/style/import-sld.post.responses.200.description
Imported and stored MapLibre style with conversion diagnostics

# paths./metadata/layers/{layerId}/style/import-sld.post.responses.422.description
SLD conversion produced error-severity diagnostics; nothing stored

# paths./metadata/layers/{layerId}/style/export-sld.get.description
Export the layer's stored MapLibre style as SLD 1.0 XML on a best-effort basis. The X-Sld-Diagnostic-Count response header reports how many constructs surfaced during export; X-Sld-Diagnostics carries the JSON-encoded diagnostic array when the count is non-zero. A 422 with data.diagnostics is returned when no MapLibre layer can be expressed in SLD.

# paths./metadata/layers/{layerId}/style/export-sld.get.responses.200.headers.X-Sld-Diagnostic-Count.description
Number of conversion diagnostics emitted during export.

# paths./metadata/layers/{layerId}/style/export-sld.get.responses.200.headers.X-Sld-Diagnostics.description
JSON-encoded array of SldConversionDiagnostic entries; only present when X-Sld-Diagnostic-Count > 0.

# paths./metadata/layers/{layerId}/style/export-sld.get.responses.422.description
Stored MapLibre style cannot be expressed as SLD; see diagnostics

# paths./metadata/layers/{layerId}/suggest-style.post.description
Generate an advisory style suggestion for a layer based on data analysis. Community edition returns enhanced geometry-aware defaults. Pro edition attempts field-based classification with smart palette selection, falling back to enhanced geometry-aware defaults when no suitable classification field is available.

# paths./import/formats.get.description
Returns the geospatial file extensions supported by this server build and a description of each format.

# paths./import/toolbox/translation/validate.post.description
Validates an SDK-translated toolbox manifest against the canonical process catalog and returns a per-tool translatability report. Read-only and advisory: it neither imports nor executes anything, and the server does not parse proprietary binary toolbox formats -- callers submit a manifest produced by the honua-migrate translation CLI.

# paths./import/toolbox/translation/validate.post.responses.200.description
Translation report for the submitted manifest.

# paths./import/toolbox/translation/validate.post.responses.400.description
The body is malformed JSON, is not a toolbox translation manifest artifact, or is structurally invalid (blank toolbox name, unknown source format, no tools). Written by the shared admin problem-details helper, so the payload is RFC 7807 application/problem+json rather than the ErrorResponse envelope.

# paths./import/toolbox/translation/validate.post.responses.413.description
Request body exceeds the configured upload size limit.

# paths./import/toolbox/translation/validate.post.responses.415.description
The request declares a Content-Type other than application/json (or a +json structured suffix). The body is not read, so a well-formed manifest sent with the wrong media type is refused here rather than reported as malformed. Written by the shared admin problem-details helper, so the payload is RFC 7807 application/problem+json.

# paths./import/preview.post.description
Inspects one supported geospatial file without importing or mutating data.

# paths./import/preview.post.responses.200.description
Detected file structure and sample metadata.

# paths./import/preview-url.post.description
Downloads and inspects a supported public geospatial object without importing or mutating data.

# paths./import/preview-url.post.requestBody.content.application/json.schema.properties.fileName.description
Optional filename hint when the URL path does not contain a usable extension.

# paths./import/preview-url.post.responses.200.description
Detected file structure and sample metadata.

# paths./import/upload-url.post.description
Downloads one supported public geospatial object and imports it into PostgreSQL. Large imports may return a background job.

# paths./import/upload-url.post.responses.202.description
Import accepted for background processing.

# paths./import/upload-url.post.responses.503.description
Background import dependencies are unavailable.

# paths./import/limits.get.description
Returns the configured preview, upload, memory, and background-job limits.

# paths./import/jobs.get.description
Returns the active background import jobs.

# paths./import/jobs/{jobId}.get.description
Returns progress and result metadata for one background import job.

# paths./import/jobs/{jobId}/cancel.post.description
Requests cancellation of one active background import job.

# paths./import/upload.post.description
Streams one supported geospatial file into PostgreSQL. Small imports complete synchronously; large imports return a durable background job when shared file storage and the job service are configured.

# paths./import/upload.post.requestBody.content.multipart/form-data.schema.properties.SourceSrid.description
Source EPSG code when the file does not embed one.

# paths./import/upload.post.responses.202.description
Import accepted for background processing.

# paths./import/upload.post.responses.503.description
Background import dependencies are unavailable.

# paths./import/scan.post.description
Scan a supported GeoServer REST or ArcGIS GeoServices REST source and return a deterministic migration inventory artifact. The response body is the artifact itself and is not wrapped in a success/data admin envelope. A 200 response can still carry scanCompleteness.status = failed when the scanner produced an artifact but could not complete discovery cleanly. GeoServer uses that failed-artifact path for transport, timeout, auth-related, and other discovery failures; GeoServices also uses it for auth-related and source-reported ArcGIS discovery errors, while transport and timeout failures still surface as 502/504. Pass the export=json query parameter to receive the artifact as an indented JSON attachment suitable for committing to a migration project repository.

# paths./import/scan.post.parameters[].description
When set to json, returns the artifact as an indented application/json attachment with Content-Disposition: attachment; filename="<service-slug>-inventory.json" and X-Content-Type-Options: nosniff. The slug is derived from the source displayName, sanitized to [A-Za-z0-9_-], collapsed, and capped at 64 characters; credentials supplied in the request body are never echoed into the artifact.

# paths./import/scan.post.responses.200.description
Migration source inventory artifact, including partial or failed completeness states when discovery could not finish cleanly. GeoServer can return a failed artifact for transport, timeout, auth-related, or other discovery failures; GeoServices can return a failed artifact for auth-related and source-reported discovery errors, while transport and timeout failures surface as 502/504. With export=json the same artifact is returned as an indented attachment.

# paths./import/scan.post.responses.502.description
Failed to connect to source service. This is currently surfaced primarily for GeoServices transport failures; GeoServer transport failures return a failed inventory artifact with HTTP 200.

# paths./import/scan.post.responses.504.description
Source scan timed out. This is currently surfaced primarily for GeoServices timeout failures; GeoServer timeout failures return a failed inventory artifact with HTTP 200.

# paths./openapi.json.get.description
Returns the bundled OpenAPI contract snapshot for the admin/control-plane API. The document itself is readable anonymously; the operations it describes require admin authentication.

# paths./services.get.description
List available services with enabled protocol metadata.

# paths./services/{serviceName}/settings.get.description
Get protocol, access policy, temporal metadata, and MapServer settings for a service.

# paths./services/{serviceName}/mapserver.put.description
Update MapServer rendering defaults and limits for a service.

# paths./services/{serviceName}/access-policy.put.description
Update service-level read and write access policy.

# paths./services/{serviceName}/timeinfo.put.description
Update service-level temporal metadata fields.

# paths./services/{serviceName}/layers/{layerId}/metadata.put.description
Patch layer-level access policy and temporal metadata for a service layer.

# paths./version.get.description
Returns server version, metadata API version, and current server time.

# paths./jobs.get.description
List durable execution jobs for Console job viewers. Results are ordered by createdAt descending, use opaque cursor pagination, and are returned as a plain JSON DTO with Cache-Control: no-store.

# paths./jobs.get.parameters[].description
Comma-separated or repeated execution status filter.

# paths./jobs.get.parameters[].description
Resolved queue/routing lane. Matches honua.job.queue when present, otherwise the job backend.

# paths./jobs.get.parameters[].description
Opaque cursor returned by a previous page.

# paths./jobs.get.parameters[].description
Requested page size. Defaults to 50 and is clamped by the backing store.

# paths./jobs/{jobId}.get.description
Get durable execution job detail for a Console job viewer. Returns X-Correlation-Id when the job has a correlation id.

# paths./jobs/{jobId}/logs.get.description
Page structured execution logs for a durable job. If the log store is unavailable, returns state=unavailable with an empty item list.

# paths./jobs/{jobId}/logs.get.parameters[].description
Requested log page size. Defaults to 100 and Redis clamps to 1..500.

# paths./jobs/{jobId}/artifacts.get.description
Page artifact references for a durable job and expose safe provider links when available.

# paths./jobs/{jobId}/artifacts.get.parameters[].description
Requested artifact page size. Defaults to 100 and is clamped to 1..200.

# paths./jobs/{jobId}/actions.get.description
Return cancel/retry action descriptors currently applicable to the job. Retry availability considers execute permission, retry budget, local queue availability, and remote backend retry capability.

# paths./jobs/{jobId}/cancel.post.description
Cancel a queued, provisioning, or running durable execution job. May return approval-required problem details when destructive action approval is required.

# paths./jobs/{jobId}/cancel.post.responses.200.description
Job cancellation applied or already cancelled

# paths./jobs/{jobId}/cancel.post.responses.503.description
Execution job store or backend is unavailable

# paths./jobs/{jobId}/retry.post.description
Retry a failed or cancelled durable execution job when the retry policy budget allows it. Local jobs require the job queue; remote jobs require a registered backend that supports retry.

# paths./jobs/{jobId}/retry.post.responses.503.description
Local job queue is unavailable, a local retry queue write failed, the remote retry backend is unavailable, or remote retry capability lookup failed

# paths./license.get.description
Returns the active runtime license snapshot. Empty LicensePath reports Community mode with isValid=true; invalid configured files report Community mode with isValid=false and a validationState.

# paths./license.post.description
Uploads raw signed license-envelope bytes when Licensing:AllowAdminUpload=true and Licensing:LicensePath is configured. Rejected uploads return 400 and do not replace the active snapshot.

# paths./license.post.responses.200.description
License applied and active status returned

# paths./license.post.responses.400.description
Upload disabled, missing LicensePath, empty/oversized file, or validation failure

# paths./license/entitlements.get.description
Returns the known FeatureCatalog entitlement inventory with each entry marked active or inactive under the current license snapshot.

# paths./license/status.get.description
Returns the same active license status contract as GET /api/v1/admin/license.

# paths./license/features.get.description
Returns the FeatureCatalog inventory with category and minimum-edition metadata plus current active/inactive state.

# paths./license/upload.post.description
Platform-admin upload alias for the same runtime validator used by startup load and POST /api/v1/admin/license. Returns a compact upload-result response.

# paths./license/upload.post.responses.400.description
Upload disabled, missing LicensePath, empty/oversized file, or validation failure

# paths./features.get.description
Returns all edition-gated platform features with category, description, minimum edition, and active state from the current license snapshot.

# paths./packages/validate.post.description
Validate a package using the shared package-review contract. The server forces includePreviewPlan to false on this route.

# paths./packages/preview.post.description
Validate a package and return a read-only preview plan when the package can be planned. The server forces includePreviewPlan to true on this route.

# paths./packages/preview.post.responses.200.description
Package review result with optional read-only preview plan

# paths./metadata/environments/{environment}/inventory.get.description
Return the active Metadata v2 revision-stamped semantic inventory for an environment.

# paths./metadata/environment-bindings/query.post.description
Return secret-safe binding summaries for semantic ids across target environments.

# paths./metadata/release-packages.post.description
Persist a Metadata v2 release package for semantic cross-environment promotion.

# paths./metadata/release-packages.get.description
Returns secret-safe Metadata v2 release-package summaries for the GitOps releases surface, newest first. Summaries carry package identity, lifecycle status, source/target environments, and coarse entry counts only.

# paths./metadata/release-packages.get.parameters[].description
Filter by source environment (case-insensitive).

# paths./metadata/release-packages.get.parameters[].description
Filter by package lifecycle status. Unsupported values return 400.

# paths./metadata/release-packages.get.parameters[].description
Maximum number of summaries to return. Defaults to 50 and is clamped server-side. Negative values return 400.

# paths./metadata/release-packages.get.parameters[].description
Number of summaries to skip. Defaults to 0. Negative values return 400.

# paths./metadata/release-packages/{packageId}/gitops-manifest.get.description
Export a persisted release package as a GitOps-safe JSON manifest.

# paths./metadata/releases/{packageId}/operation.get.description
Get the most recent metadata release operation for a package ID. Retry attempts remain stable by operation ID through /deploy/operations/{operationId}.

# paths./metadata/releases/{packageId}/operation.get.parameters[].description
Metadata release package identifier. Package-ID lookup returns the most recent operation for retry scenarios.

# paths./metadata/prevalidate.post.description
Generate an environment-scoped Metadata v2 compatibility report for a release package. The endpoint compares the package source graph revision with the current target environment snapshot, evaluates optional declared data-script before/after contracts, and does not execute scripts.

# paths./deploy/plan.post.description
Validate a deploy target and desired revision, returning readiness, capabilities, and blocking reasons.

# paths./deploy/operations.post.description
Create a durable deploy workflow operation for a target and revision.

# paths./deploy/operations.get.description
Returns durable workflow operations newest-first within the materialized window, optionally filtered by kind and status.

# paths./deploy/operations.get.parameters[].description
Filter by workflow operation kind. Unsupported values return 400.

# paths./deploy/operations.get.parameters[].description
Filter by workflow operation status. Unsupported values return 400.

# paths./deploy/operations.get.parameters[].description
One-based page number. Defaults to 1; values below 1 return 400.

# paths./deploy/operations.get.parameters[].description
Page size. Defaults to 50; values below 1 return 400.

# paths./deploy/operations.get.responses.503.description
Deploy control is temporarily unavailable (no durable control-plane store configured).

# paths./deploy/operations/{operationId}.get.description
Get the current state of a deploy or metadata release operation. May trigger reconciliation for in-progress operations.

# paths./deploy/operations/{operationId}/submit.post.description
Submit or approve a planned deploy operation for execution.

# paths./deploy/operations/{operationId}/rollback.post.description
Request rollback of a deploy or metadata release operation. Metadata-only rollback uses the non-destructive approval path unless the stored rollback plan sets requiresExplicitApproval; data-affecting metadata rollback classes use the destructive approval gate. For metadata release operations the rollback plan's approval-affecting classification is re-checked against the values the approval gate evaluated before the state change is written; if it changed in between, the request returns 409 and the stored operation is left unchanged.

# paths./observability/migrations.get.description
Returns migration lifecycle status, pending scripts, and plan availability for this instance.

# paths./auth/config.get.description
Bootstrap endpoint for Admin UI and native clients. It does not require API-key, OIDC, or admin-session auth, but required client-certificate prefix enforcement can still apply. Returns OIDC provider labels plus non-secret client-certificate policy hints such as mode, environment id, required surfaces, supported transports, accepted issuer hints, expiration warning threshold, and forwarded-certificate status. Issuer hints are sourced from the live trust store, so admin-API profile create/update/disable mutations are reflected immediately without a restart.

# paths./security/client-certificates/profiles.get.description
Lists active and disabled client-certificate trust profiles in the in-memory trust store. Configuration-defined profiles are loaded at startup; admin mutations should be mirrored to the deployment source of truth for durable multi-node rollout.

# paths./security/client-certificates/profiles.post.description
Creates a client-certificate trust profile. Enabled profiles require at least one accepted issuer subject, accepted issuer thumbprint, or custom trust anchor certificate.

# paths./security/client-certificates/profiles/{profileId}.delete.summary
Disable Client Certificate Trust Profile

# paths./security/client-certificates/profiles/{profileId}.delete.description
Disables a trust profile without deleting its mappings or revocation entries.

# paths./security/client-certificates/profiles/{profileId}/mappings.get.summary
List Client Certificate Principal Mappings

# paths./security/client-certificates/profiles/{profileId}/mappings.post.summary
Create Client Certificate Principal Mapping

# paths./security/client-certificates/profiles/{profileId}/mappings/{map.put.summary
Update Client Certificate Principal Mapping

# paths./security/client-certificates/profiles/{profileId}/mappings/{map.delete.summary
Disable Client Certificate Principal Mapping

# paths./security/client-certificates/profiles/{profileId}/revocations.post.description
Adds a revocation by SHA-256 fingerprint or by issuer plus serial number.

# paths./security/client-certificates/validate.post.description
Validates a supplied public client certificate against configured trust profiles without storing the certificate. A parsed-but-untrusted certificate returns 200 with data.valid=false and a stable data.code; 400 is reserved for missing/blank certificate bodies and unknown encoding values.

# paths./security/client-certificates/validate.post.responses.200.description
Validation result. A parsed but untrusted certificate returns 200 with data.valid=false and a stable data.code value.

# paths./compliance/dashboard.get.description
Returns the SOC 2 / FedRAMP control evidence snapshot: per-control status, dependency-gate evidence rows, encryption posture, and active residency policy.

# paths./compliance/report.get.description
Renders the current compliance snapshot as a downloadable report. Default format is PDF; pass format=csv for the evidence-matrix CSV.

# paths./compliance/report.get.parameters[].description
Report format (pdf or csv). Defaults to pdf when omitted.

# paths./compliance/report.get.responses.406.description
Requested format parses but no renderer is registered for it.

# paths./compliance/residency/evaluate.post.description
Dry-runs a region against the active data-residency policy and audit-logs the decision.

# paths./compliance/residency/evaluate.post.responses.200.description
Residency decision and active policy view

# paths./compliance/encryption/rotate-key.post.description
Advances the auditor-facing compliance key-version counter and writes an encryption.key.rotate audit event. This endpoint records the rotation as a compliance event — it does NOT re-encrypt data or rotate the cipher material used by IConnectionEncryptionService (real key-material rotation lives behind Security:ConnectionEncryption:MasterKey). The audit write is decoupled from the caller token so a client disconnect cannot strand a committed posture advance without an audit event.

# paths./import/arcgis/migrations.get.description
Returns a page of ArcGIS migration run summaries that have persisted manifest (and optionally parity) evidence. Results are newest-first. `pageSize` is clamped to a maximum of 100.

# paths./import/arcgis/migrations.get.parameters[].description
Case-insensitive substring match on the recorded source URL.

# paths./import/arcgis/migrations.get.parameters[].description
Parity status filter. Matching is case-insensitive; any other value is rejected with 400.

# paths./import/arcgis/migrations.get.parameters[].description
Zero-based page index. Must be a non-negative integer.

# paths./import/arcgis/migrations.get.parameters[].description
Page size. Must be a positive integer; values above 100 are clamped to 100.

# paths./import/arcgis/migrations/{runId}/manifest.get.description
Returns the persisted migration manifest artifact for an ArcGIS migration run. The response body is the artifact itself and is not wrapped in a success/data admin envelope.

# paths./import/arcgis/migrations/{runId}/manifest.get.parameters[].description
Stable migration run identifier (typically a GUID string).

# paths./import/arcgis/migrations/{runId}/manifest.post.description
Persists the manifest evidence artifact produced by the ArcGIS migration planning pipeline against the supplied run id, creating or replacing the run record. Returns the stored run record.

# paths./import/arcgis/migrations/{runId}/manifest.post.parameters[].description
Stable migration run identifier (typically a GUID string).

# paths./import/arcgis/migrations/{runId}/manifest.post.responses.200.description
Run record persisted alongside the manifest artifact.

# paths./import/arcgis/migrations/{runId}/parity.get.description
Returns the persisted post-apply parity artifact for an ArcGIS migration run. Responds 404 when the run is unknown and, separately, when the run has a manifest but no parity artifact yet.

# paths./import/arcgis/migrations/{runId}/parity.get.responses.200.description
Persisted ArcGIS migration parity artifact.

# paths./import/arcgis/migrations/{runId}/parity.post.description
Persists the post-apply parity artifact for an ArcGIS migration run. The manifest for the run must already be recorded; otherwise the request is rejected with 409. `parity.classification` must be one of pass, warn, or fail (case-insensitive). Returns the stored parity artifact.

# paths./import/geoserver/discover.post.description
Connects to a GeoServer REST endpoint and returns the discovered workspaces, stores, layers, layer groups, styles, advertised service endpoints, and (optionally) a migration compatibility assessment. Requires the `import.geoserver` license entitlement. The source URL is validated against the configured migration host allow-list before any outbound call is made.

# paths./import/geoserver/discover.post.responses.402.description
The `import.geoserver` entitlement is not active for the installed license.

# paths./import/geoserver/discover.post.responses.500.description
Unexpected failure while discovering the GeoServer instance.

# paths./import/geoserver/start.post.description
Queues a background GeoServer configuration import. Non-dry-run imports require `applyMode=true` as an explicit operator acknowledgement that the reviewed migration manifest will be applied to the Honua catalog. Queued jobs must supply credentials as secret references (`passwordSecretReference`, `honuaApiKeySecretReference`); inline `password`/`honuaApiKey` values are rejected. Requires the `import.geoserver` license entitlement.

# paths./import/geoserver/start.post.responses.402.description
The `import.geoserver` entitlement is not active for the installed license.

# paths./import/geoserver/start.post.responses.500.description
Unexpected failure while queueing the import job. Any partially persisted queue state is rolled back.

# paths./import/geoserver/start.post.responses.503.description
Distributed import coordination is unavailable (Redis unhealthy). Retry when coordination recovers.

# paths./import/geoserver/jobs.get.description
Returns the GeoServer import jobs that are still active — that is, jobs whose progress status is not Completed, Failed, or Cancelled.

# paths./import/geoserver/jobs/{jobId}.get.description
Returns a single GeoServer import job, including the detailed progress record.

# paths./import/geoserver/jobs/{jobId}.get.parameters[].description
Import job identifier returned when the job was queued.

# paths./import/geoserver/jobs/{jobId}.get.responses.500.description
Unexpected failure while reading the import job.

# paths./import/geoserver/jobs/{jobId}/cancel.post.description
Requests cancellation of an active GeoServer import job. Jobs already in a terminal status (Completed, Failed, Cancelled) are rejected with 409. No request body is read.

# paths./import/geoserver/jobs/{jobId}/cancel.post.responses.500.description
Unexpected failure while cancelling the import job.

# paths./import/geoservices/discover.post.description
Connects to an ArcGIS GeoServices REST service URL and returns the service summary plus the layers available for import. Requires the `import.geoservices` license entitlement. The source URL is validated against the configured migration host allow-list. Inline credentials are accepted for discovery only.

# paths./import/geoservices/discover.post.responses.200.description
Discovered ArcGIS service summary and layers.

# paths./import/geoservices/discover.post.responses.402.description
The `import.geoservices` entitlement is not active for the installed license.

# paths./import/geoservices/discover.post.responses.500.description
Unexpected failure while discovering the ArcGIS service.

# paths./import/geoservices/discover.post.responses.502.description
Failed to connect to the ArcGIS service (transport failure or upstream timeout).

# paths./import/geoservices/start.post.description
Queues a background import of one ArcGIS GeoServices layer into PostGIS. `tableName` and `targetSchema` must use only letters, numbers, and underscores. Queued jobs must supply credentials as secret references. Requires the `import.geoservices` license entitlement.

# paths./import/geoservices/start.post.responses.402.description
The `import.geoservices` entitlement is not active for the installed license.

# paths./import/geoservices/start.post.responses.500.description
Unexpected failure while queueing the import job. Any partially persisted queue state is rolled back.

# paths./import/geoservices/start.post.responses.503.description
Distributed import coordination is unavailable (Redis unhealthy). Retry when coordination recovers.

# paths./import/geoservices/jobs.get.description
Returns the GeoServices import jobs that are still active — that is, jobs whose status is not Completed, Failed, or Cancelled. Each entry is the full progress record.

# paths./import/geoservices/jobs/{jobId}.get.description
Returns the progress record for one GeoServices import job.

# paths./import/geoservices/jobs/{jobId}.get.parameters[].description
Import job identifier returned when the job was queued.

# paths./import/geoservices/jobs/{jobId}/cancel.post.description
Requests cancellation of an active GeoServices import job. Jobs already in a terminal status are rejected with 409. No request body is read.

# paths./import/migrations.post.description
Starts an ordered, resumable batch migration run from a footprint selection. A footprint may contain at most 500 layers; every layer requires a unique `sourceResourceId`, a `serviceUrl` that passes migration host validation, and a `tableName` restricted to letters, numbers, and underscores. The response is returned immediately with the batch aggregate and an empty `children` array; poll `GET /import/migrations/{batchId}` for per-child progress.

# paths./import/migrations/{batchId}.get.description
Returns the rolled-up status of a batch migration run plus per-child progress ordered by execution ordinal.

# paths./import/ogc-api-features/collection.post.description
Materializes a single OGC API Features collection into the catalog target. The importer pages the collection's items endpoint and writes to `targetSchema.targetTable`. The import result document is returned for both success and importer-level failure; the HTTP status is derived from the result's stable `errorCode` (invalid service URL/filter/bbox/datetime map to 400; unsupported or invalid items encodings and a missing items endpoint map to 422; source unreachable maps to 502; timeout maps to 504; sink failure maps to 500). Request-level validation failures, by contrast, return an RFC 7807 problem document.

# paths./import/ogc-api-features/collection.post.responses.400.description
Request-level validation failure (problem document) or an importer failure with errorCode ogc_api_features.invalid_service_url, .invalid_filter, .invalid_bbox, or .invalid_datetime (import result document).

# paths./import/ogc-api-features/collection.post.responses.500.description
The catalog sink failed (errorCode ogc_api_features.sink_failure) or the importer reported an unclassified error.

# paths./import/ogc-api-features/collection.post.responses.504.description
The import exceeded its timeout budget (errorCode ogc_api_features.timeout).

# paths./import/ogc-tiles/export.post.description
Exports XYZ/TMS tile caches from an automated WMTS migration plan into Honua's tile catalog. Non-dry-run exports require `applyMode=true`. `minZoom`/`maxZoom` must be non-negative with `minZoom <= maxZoom`, and `requestTimeoutSeconds` must be greater than zero. When the export runner reports failure the same result document is returned with HTTP 502.

# paths./import/ogc-tiles/export.post.responses.200.description
Tile-cache export result (plan-only when dryRun is true).

# paths./import/ogc-tiles/export.post.responses.499.description
Non-standard client-closed-request status written when the operator cancels the export mid-flight.

# paths./import/ogc-tiles/export.post.responses.502.description
The export runner reported failure; the body is the same result document with success=false and an errorMessage.

# paths./import/ogc-wcs/import.post.description
Plans or applies a legacy OGC Web Coverage Service (WCS 1.x/2.x) coverage import using a migration source inventory artifact. `dryRun` defaults to true; a non-dry-run request additionally requires `applyMode=true` because coverage data is written to the Honua raster store. `outputFormat` defaults to image/tiff and other formats are classified as manual-review.

# paths./import/ogc-wcs/import.post.responses.200.description
WCS coverage import plan or apply result.

# paths./import/ogc-wcs/import.post.responses.502.description
Failed to connect to the WCS source service.

# paths./import/ogc-wfs/start.post.description
Pages features from a WFS source into Honua PostGIS and produces an initial migration manifest plus parity evidence. Non-dry-run imports require `applyMode=true`. `pageSize` and `requestTimeoutSeconds` must be greater than zero. When the importer reports failure the same result document is returned with HTTP 502.

# paths./import/ogc-wfs/start.post.responses.200.description
WFS import result (manifest-only when dryRun is true).

# paths./import/ogc-wfs/start.post.responses.499.description
Non-standard client-closed-request status written when the operator cancels the import mid-flight.

# paths./import/ogc-wfs/start.post.responses.502.description
The importer reported failure; the body is the same result document with success=false and an errorMessage.

# paths./import/ogc/coverages/import.post.description
Plans or applies a GeoTIFF/Cloud Optimized GeoTIFF coverage import from a WCS or OGC API Coverages source, driven by a migration source inventory artifact. `dryRun` defaults to true; a non-dry-run request additionally requires `applyMode=true` because coverage data is written to the Honua raster store.

# paths./import/ogc/coverages/import.post.responses.502.description
Failed to connect to the coverage source service.

# paths./import/raster.post.description
Imports a raster file (GeoTIFF, PNG world-file, JPEG world-file) into PostGIS via a streamed multipart upload. The raster runs synchronously and is bounded by the configured synchronous import size limit. Exactly one primary raster part is allowed; world-file (.pgw/.jgw/.tfw/.wld) and .prj sidecars may accompany it and are read with a 64 KiB cap each. Importer-reported failures are returned as 400 with the error message.

# paths./import/raster.post.responses.413.description
Request payload exceeds the configured raster import size limit (enforced by the shared limits middleware before the handler runs).

# paths./import/raster.post.responses.500.description
Unexpected failure while importing the raster.

# paths./import/raster/formats.get.description
Returns the raster file extensions the active raster import service supports, with a short description for each.

# paths./import/raster/{rasterId}.delete.description
Deletes an imported raster. Dependent raster statistics, tiles, and sensor metadata are removed by the database cascade, and the owning layer's output cache is invalidated. Returns 204 with an empty body on success.

# paths./import/raster/{rasterId}.delete.parameters[].description
Raster identifier. The route only matches integral values.

# paths./import/raster/{rasterId}.patch.description
Updates an imported raster's mutable descriptive metadata. PATCH semantics apply: an omitted field is left unchanged; send an empty string for `description` or `acquisitionDate` to clear it. At least one of `name`, `description`, or `acquisitionDate` must be present. The owning layer's output cache is invalidated on success.

# paths./import/raster/{rasterId}.patch.parameters[].description
Raster identifier. The route only matches integral values.

# paths./import/raster/{rasterId}.patch.responses.400.description
Validation failure. The body is a bare JSON string carrying the message (for example "'name' must be non-empty when provided."), not the admin error envelope.

# paths./import/tile-package.post.description
Imports an Esri tile or vector-tile cache package (.tpk/.tpkx/.vtpk) into Honua's tile catalog and binds it to a served tileset. The package bytes are uploaded as the raw request body (streamed to a bounded temp file capped at 2 GiB); the tileset id, package file name, and optional zoom range are query parameters. When `fileName` is omitted the format is inferred from the request Content-Type, and the request is rejected if it cannot be determined.

# paths./import/tile-package.post.parameters[].description
Target tileset identifier the imported cache is bound to.

# paths./import/tile-package.post.parameters[].description
Package file name used to determine the format; must end in .tpk, .tpkx, or .vtpk. When omitted the format is inferred from the request Content-Type.

# paths./import/tile-package.post.parameters[].description
When true the package is inspected and the plan is returned without writing tiles.

# paths./import/tile-package.post.responses.400.description
Missing tilesetId, undeterminable package format, empty body, or an unreadable package. The body is a bare JSON string carrying the message, not the admin error envelope.

# paths./import/tile-package.post.responses.413.description
The uploaded package reached the 2 GiB request-body cap. The response has no body.

# paths./import/uploads.get.description
Returns the file-upload operations currently tracked by the upload progress store, or by the cloud file storage provider when no progress store is registered.

# paths./import/uploads.get.responses.503.description
No file storage service is available to enumerate uploads.

# paths./import/uploads/{uploadId}/cancel.post.description
Cancels a running file-upload operation through the cloud file storage provider. Uploads that are unknown or already complete are reported as 404. No request body is read.

# paths./import/uploads/{uploadId}/cancel.post.responses.503.description
No file storage service is available to cancel the upload.

# paths./import/uploads/{uploadId}/progress.get.description
Returns the progress record for one file-upload operation. The upload progress store is consulted first; when it has no record the cloud file storage provider is queried.

# paths./import/uploads/{uploadId}/progress.get.responses.503.description
No progress record was found and no file storage service is available to query.

# paths./observability/alerts.get.description
List alert events for the Console Operate surface, newest first, with cursor paging. Filters are applied server-side; enum filters accept a comma-separated list of symbolic names (numeric tokens are rejected). Readable with an ops:read credential as well as full admin.

# paths./observability/alerts.get.parameters[].description
Inclusive lower bound on the event timestamp (ISO-8601).

# paths./observability/alerts.get.parameters[].description
Inclusive upper bound on the event timestamp (ISO-8601).

# paths./observability/alerts.get.parameters[].description
Restrict to a single service identifier.

# paths./observability/alerts.get.parameters[].description
Restrict to a single feature object identifier.

# paths./observability/alerts.get.parameters[].description
Restrict to a single alert rule identifier.

# paths./observability/alerts.get.parameters[].description
Opaque continuation cursor returned as nextCursor by a previous page.

# paths./observability/alerts/{eventId}.get.description
Get a single alert event, including its incident and operator-lifecycle state. Readable with an ops:read credential as well as full admin.

# paths./observability/alerts/{eventId}/acknowledge.post.description
Acknowledge an alert event on behalf of the calling operator and return the refreshed event. The action is recorded on the audit trail as alert.acknowledge. Requires admin write access.

# paths./observability/alerts/{eventId}/resolve.post.description
Resolve an alert event on behalf of the calling operator and return the refreshed event. The action is recorded on the audit trail as alert.resolve. Requires admin write access.

# paths./observability/alerts/{eventId}/suppress.post.description
Suppress an alert event until the supplied timestamp and return the refreshed event. A body carrying suppressUntil is required and the timestamp must be in the future. The action is recorded on the audit trail as alert.suppress. Requires admin write access.

# paths./observability/audit.get.description
Query the audit trail, newest first, with cursor paging. Enum filters accept a comma-separated list of symbolic names (numeric tokens are rejected).

# paths./observability/audit.get.parameters[].description
Inclusive lower bound on the event timestamp (ISO-8601).

# paths./observability/audit.get.parameters[].description
Inclusive upper bound on the event timestamp (ISO-8601).

# paths./observability/audit.get.parameters[].description
Restrict to a single resource identifier.

# paths./observability/audit.get.parameters[].description
Restrict to a single dotted action name.

# paths./observability/audit.get.parameters[].description
Restrict to a single correlation identifier.

# paths./observability/audit.get.parameters[].description
Opaque continuation cursor returned as nextCursor by a previous page.

# paths./observability/audit/export.get.description
Stream the audit trail for SIEM ingestion as JSON Lines (default) or CEF, filtered by time range, actor, resource type, or action. The response is streamed line-by-line with X-Content-Type-Options: nosniff; the export itself is recorded on the audit trail as audit.export.

# paths./observability/audit/export.get.parameters[].description
Inclusive lower bound on the event timestamp (ISO-8601).

# paths./observability/audit/export.get.parameters[].description
Inclusive upper bound on the event timestamp (ISO-8601).

# paths./observability/audit/export.get.parameters[].description
Restrict to a single dotted action name.

# paths./observability/audit/export.get.parameters[].description
Export encoding. jsonl emits one ObservabilityAuditRecord JSON object per line; cef emits ArcSight CEF lines.

# paths./observability/audit/export.get.responses.200.description
Streamed audit trail. One record per line.

# paths./observability/audit/export.get.responses.200.content.application/x-ndjson.schema.description
One ObservabilityAuditRecord JSON object per line.

# paths./observability/audit/export.get.responses.200.content.text/plain.schema.description
One CEF-formatted audit record per line.

# paths./observability/audit/verify.get.description
Replay the tamper-evident hash chain and report whether the audit trail has been altered. Rows written before the hash-chain migration are counted as unhashed rather than treated as failures.

# paths./observability/autonomy/policies.get.description
List the effective per-rule ops-autonomy policies. Rules are discovered from durable overrides, configuration, the built-in auto-safe set, and any currently active auto-safe findings; entries without a durable override are projected from configuration/defaults and report isPersisted=false. Readable with an ops:read credential as well as full admin.

# paths./observability/autonomy/policies.get.responses.503.description
The durable control plane is unavailable; ops autonomy is inert and policy state cannot be read.

# paths./observability/autonomy/policies/{rule}.get.description
Get the effective autonomy policy for one ops-finding rule. Returns the configuration/default projection when no durable override exists but the rule is known. Readable with an ops:read credential as well as full admin.

# paths./observability/autonomy/policies/{rule}.get.parameters[].description
Kebab-case ops-finding rule identifier. At most 128 characters of letters, digits, hyphen, underscore, or dot.

# paths./observability/autonomy/policies/{rule}.get.responses.503.description
The durable control plane is unavailable; ops autonomy is inert and policy state cannot be read.

# paths./observability/autonomy/policies/{rule}.put.description
Upsert the durable autonomy policy for one ops-finding rule. Omitted fields keep their current effective value; supplied numeric guardrails must be greater than zero. Requires admin write access.

# paths./observability/autonomy/policies/{rule}.put.parameters[].description
Kebab-case ops-finding rule identifier. At most 128 characters of letters, digits, hyphen, underscore, or dot.

# paths./observability/autonomy/policies/{rule}.put.responses.503.description
The durable control plane is unavailable; ops autonomy is inert and policy changes are read-only.

# paths./observability/autonomy/settings.get.description
Get the global ops-autonomy settings, including the kill switch that disables all autonomous remediation. Readable with an ops:read credential as well as full admin.

# paths./observability/autonomy/settings.get.responses.503.description
The durable control plane is unavailable; ops autonomy is inert and settings cannot be read.

# paths./observability/autonomy/settings.put.description
Set the global ops-autonomy settings. A body carrying killSwitchEnabled is required. Requires admin write access.

# paths./observability/autonomy/settings.put.responses.503.description
The durable control plane is unavailable; ops autonomy is inert and settings changes are read-only.

# paths./observability/events.get.description
Read the unified Operate timeline, which normalizes alerts, audit records, jobs, releases, sync conflicts, temporal operations, and captured logs into one newest-first feed. When a contributing source fails, the page is still returned with partialResult=true and a per-source diagnostic in sourceErrors.

# paths./observability/events.get.parameters[].description
Inclusive lower bound on the event timestamp (ISO-8601).

# paths./observability/events.get.parameters[].description
Inclusive upper bound on the event timestamp (ISO-8601).

# paths./observability/events.get.parameters[].description
Restrict to a single service identifier.

# paths./observability/events.get.parameters[].description
Comma-separated event kinds (Alert, Audit, Job, Release, SyncConflict, TemporalOp, Log). Case-insensitive.

# paths./observability/events.get.parameters[].description
Minimum severity to include (Info, Notice, Warning, Error, Critical). Case-insensitive.

# paths./observability/events.get.parameters[].description
Restrict to a single correlation identifier.

# paths./observability/events.get.parameters[].description
Restrict to a single distributed trace identifier.

# paths./observability/events.get.parameters[].description
Restrict to a single request identifier.

# paths./observability/events.get.parameters[].description
Restrict to a single operation/job identifier.

# paths./observability/events.get.parameters[].description
Restrict to a single release identifier.

# paths./observability/events.get.parameters[].description
Restrict to a single change-set identifier.

# paths./observability/events.get.parameters[].description
Restrict to a typed resource reference (for example alert/42).

# paths./observability/findings.get.description
Evaluate the deterministic ops-findings rules and return the currently active findings, ordered by descending severity. Evaluation is rule-based and happens entirely server-side; no model calls are made. Readable with an ops:read credential as well as full admin.

# paths./observability/findings/{findingId}/propose.post.description
Route a finding's recommended fix through the operation-approval gateway. The server materializes the execution payload from the finding id, so no request body is accepted. Depending on gateway policy the action is either executed directly or raised as a proposal awaiting approval. Requires admin write access.

# paths./observability/findings/{findingId}/propose.post.parameters[].description
Deterministic finding identifier taken from the findings list.

# paths./observability/findings/{findingId}/propose.post.responses.503.description
The control-plane operation gateway is unavailable; the recommended action cannot be proposed.

# paths./observability/logs.get.description
Return the responding replica's in-memory recent-error buffer, newest first, together with the replica identifier and buffer capacity. The buffer is per-instance and not shared across replicas.

# paths./observability/logs.get.responses.200.description
Recent log buffer for the responding replica.

# paths./observability/ops-health.get.description
Consolidated operational-health snapshot: the comprehensive health-check roll-up, in-process serving latency percentiles per protocol, geoprocessing queue depth, alert-dispatch backlog, coordinated-deploy readiness with platform-release skew, and database/cache utilization. Readable with an ops:read credential as well as full admin.

# paths./observability/ops-health/history.get.description
Cluster-aggregated (or per-replica) time series of serving latency and ops vitals at the requested resolution over the requested window. The window is clamped to the resolution tier's retention cap. This is the reconnect gap-fill contract for realtime ops-health hub clients: backfill a dropped interval by requesting the window rather than replaying per-event cursors. Readable with an ops:read credential as well as full admin.

# paths./observability/ops-health/history.get.parameters[].description
Look-back window as a positive integer plus a unit of s, m, h, or d (for example 24h). Defaults to 1h at 1m resolution, 1d at 5m, and 7d at 1h. Clamped to the tier's retention cap.

# paths./observability/ops-health/history.get.parameters[].description
Rollup resolution tier. Accepts 1m (or 60s, 1min), 5m (or 300s, 5min), and 1h (or 60m, hour, hourly). Defaults to 1m.

# paths./observability/ops-health/history.get.parameters[].description
Return a per-replica breakdown instead of a cluster-merged series.

# paths./alerts/channels.get.description
List the pause state of every alert delivery channel, ordered by canonical channel name.

# paths./alerts/channels/{channel}/pause.post.description
Stop the dispatcher from claiming new deliveries for one alert channel. The action is idempotent and is recorded on the audit trail as alerts.pause_channel. No request body is read.

# paths./alerts/channels/{channel}/resume.post.description
Allow the dispatcher to claim deliveries for one alert channel again. The action is idempotent and is recorded on the audit trail as alerts.resume_channel. No request body is read.

# paths./alerts/dispatch/redrive.post.description
Re-enqueue dead-lettered alert-dispatch rows so the dispatcher retries delivery. The batch size defaults to 500 and is capped at 5000. The action is recorded on the audit trail as alerts.redrive_dead_letters. No request body is read.

# paths./alerts/dispatch/redrive.post.parameters[].description
Maximum number of dead-lettered rows to re-enqueue. Values below 1 fall back to the 500 default; larger values are clamped to 5000.

# paths./alerts/dispatch/redrive.post.responses.200.description
Number of dead-lettered rows re-enqueued.

# paths./alerts/rules/{ruleId}/events.get.description
List the trigger events raised by one alert rule, newest first, with cursor paging. Part of the geofence alerting surface, which is capability-gated: the whole route family returns 404 when alerts.geofence is experimental-disabled.

# paths./alerts/rules/{ruleId}/events.get.parameters[].description
Comma-separated operator lifecycle statuses (Open, Acknowledged, Suppressed, Resolved). Case-insensitive; numeric tokens are rejected.

# paths./alerts/rules/{ruleId}/events.get.parameters[].description
Page size. Values below 1 fall back to the 50 default; larger values are clamped to 200.

# paths./alerts/rules/{ruleId}/events.get.parameters[].description
Opaque continuation cursor returned as nextCursor by a previous page.

# paths./metadata/coordinated-releases/operations.post.description
Submits a coordinated platform-upgrade release that composes a container rollout, an additive DB/schema change, and a Metadata v2 activation into one ordered, gated, rollback-able workflow operation. The server always builds a reversible add-column script for `newFieldName` (nullable) and requires explicit approval for the container swap. When `scriptId` is omitted it defaults to `add-{newFieldName}`.

# paths./metadata/coordinated-releases/operations.post.responses.503.description
Coordinated release control is temporarily unavailable (no durable control-plane store configured).

# paths./metadata/coordinated-releases/operations/{operationId}/approve/.post.description
Approves the container-swap or data-affecting gate so the coordinated-release conductor can advance past it. The request body is optional and only carries an operator reason.

# paths./metadata/coordinated-releases/operations/{operationId}/approve/.post.parameters[].description
Gate to approve. `container` approves the container-swap gate; `data` approves the data-affecting (DB/metadata) gate. `metadata` is accepted as an alias for `data`. Matching is case-insensitive.

# paths./metadata/coordinated-releases/operations/{operationId}/approve/.post.responses.200.description
Gate approved; the updated coordinated release operation is returned.

# paths./metadata/coordinated-releases/operations/{operationId}/rollback.post.description
Requests the single coordinated rollback that unwinds the completed reversible steps in reverse order. The request body is optional and only carries an operator reason.

# paths./metadata/coordinated-releases/operations/{operationId}/rollback.post.responses.200.description
Rollback requested; the updated coordinated release operation is returned.

# paths./metadata/coordinated-releases/{packageId}/operation.get.description
Gets the coordinated release operation for a release package id. When the operation is in a non-terminal state (`Submitted`, `Reconciling`, or `RollbackRequested`) the reconciler is run first so the returned step timeline reflects observed state.

# paths./metadata/coordinated-releases/{packageId}/operation.get.parameters[].description
Release package identifier shared with the metadata semantic-diff package.

# paths./metadata/coordinated-releases/{packageId}/operation.get.responses.503.description
Coordinated release control is temporarily unavailable (no durable control-plane store configured).

# paths./metadata/releases/operations.post.description
Submits an additive metadata-release layer-evolution lifecycle operation. The server builds a reversible add-column script that adds `newFieldName` as a nullable column on `resourceSemanticId`; when `scriptId` is omitted it defaults to `add-{newFieldName}`. Reads for the created operation use `GET /deploy/operations/{operationId}`.

# paths./metadata/releases/operations.post.responses.503.description
Metadata release control is temporarily unavailable (no durable control-plane store configured).

# paths./metadata/layers/{layerId}/popup-info.get.description
Returns the GeoServices `popupInfo` template stored on the layer's Metadata v2 resource (extension key `geoservices:popupInfo`). `document` is null when no template is stored.

# paths./metadata/layers/{layerId}/popup-info.put.description
Replaces the GeoServices `popupInfo` template on every Metadata v2 resource the layer publishes through. The body must be a JSON object; sending `null` clears the stored template. Writing invalidates the service-catalog output cache for the layer.

# paths./metadata/layers/{layerId}/popup-info.put.requestBody.description
Arbitrary GeoServices popupInfo JSON object, or null to clear the stored template.

# paths./metadata/layers/{layerId}/popup-info.put.responses.200.description
Stored popup-info document after the write.

# paths./metadata/layers/{layerId}/drawing-info.get.description
Returns the author-supplied Esri `drawingInfo` renderer stored on the layer's Metadata v2 resource (extension key `geoservices:drawingInfo`). `document` is null when no renderer is stored.

# paths./metadata/layers/{layerId}/drawing-info.put.description
Replaces the author-supplied `drawingInfo` renderer (simple / uniqueValue / classBreaks) on every Metadata v2 resource the layer publishes through. The body must be a JSON object; sending `null` clears the stored renderer. Writing invalidates the service-catalog output cache for the layer.

# paths./metadata/layers/{layerId}/drawing-info.put.requestBody.description
Arbitrary Esri drawingInfo JSON object, or null to clear the stored renderer.

# paths./metadata/layers/{layerId}/drawing-info.put.responses.200.description
Stored drawing-info document after the write.

# paths./metadata/layers/{layerId}/relationships.get.description
Returns the relationships persisted on the layer's Metadata v2 resource, with each related resource resolved back to its global layer id (`-1` when the related resource has no numeric publication).

# paths./metadata/layers/{layerId}/relationships.put.description
Replaces the full relationship set on the layer's Metadata v2 resource. At most 64 relationships are accepted; each requires a unique id, a name, an origin field that exists on this layer, an existing related layer id, and a destination field that exists on the related layer. Cardinality must be `one-to-one`, `one-to-many`, or `many-to-many`. Any violation returns 400 and nothing is written.

# paths./metadata/layers/{layerId}/fields.get.description
Returns one entry per schema field on the layer's Metadata v2 resource, merged with the operator field-configuration overrides (alias, coded-value domain, hidden). When no override row exists the alias falls back to the field description, the domain is null, and `hidden` is false.

# paths./metadata/layers/{layerId}/fields.put.description
Updates field aliases, coded-value domains, and hidden flags. At least one field is required and every named field must exist on the layer and appear at most once. Aliases are limited to 256 characters. Geometry fields, the resource primary-id field, and `OBJECTID` cannot be hidden. Domains must use type `codedValue` with 1-512 uniquely-coded values, a 1-128 character name, and 1-256 character labels. Any violation returns 400 and nothing is written; a successful write also invalidates the service-catalog output cache for the layer.

# paths./metadata/layers/{layerId}/fields.put.responses.200.description
Layer field configuration after the write.

# paths./metadata/layers/{layerId}/filter.get.description
Returns the permanent filter persisted on the layer's Metadata v2 resource. `permanentFilter` is null when no filter is saved.

# paths./metadata/layers/{layerId}/filter.get.responses.200.description
Persisted layer permanent filter configuration.

# paths./metadata/layers/{layerId}/filter.put.description
Sets or clears the permanent filter applied to public feature output for the layer. Send `permanentFilter: null` to clear it. The expression is required, limited to 4096 characters, and is parsed and translated against the resource schema before it is saved; an unsupported language or an unparseable/untranslatable expression returns 400 and nothing is written. A successful write also invalidates the service-catalog output cache for the layer.

# paths./metadata/layers/{layerId}/filter.put.responses.200.description
Layer permanent filter configuration after the write.

# paths./metadata/layers/{layerId}/validation.get.description
Validates the layer's persisted metadata against its backing storage and returns the per-check results (code, severity, message, expected/actual). A negative layer id returns 400; an unknown layer returns 404.

# paths./deploy/operations/{operationId}/promote.post.description
Manually promotes (forces the cutover of) a deploy operation that is parked awaiting promotion - the operator escape hatch when there is no telemetry gate to auto-clear. Promotion is a forward, non-destructive cutover and rides the group admin authorization rather than the rollback approval gate. A failed precondition (the operation is not awaiting promotion) returns 409. The request body is optional and only carries an operator reason.

# paths./deploy/operations/{operationId}/promote.post.responses.503.description
Deploy control is temporarily unavailable (no durable control-plane store configured).

# paths./proposals.get.description
Lists active guardrail-routed operation proposals awaiting or having completed a human decision. `kind` is applied by the store; `status` and `requestedBy` are applied as case-insensitive post-filters. An unrecognized `kind` value is ignored rather than rejected.

# paths./proposals.get.parameters[].description
Case-insensitive operation-class filter. Unparseable values are ignored.

# paths./proposals.get.parameters[].description
Case-insensitive exact match on the requesting principal.

# paths./proposals/{id}.get.description
Returns the full proposal detail: plan summary, diff, dry-run output, risk level, blocking reasons, warnings, guardrail tier, and resolution state.

# paths./proposals/{id}/approve.post.description
Approves the proposal and applies the underlying operation through the gateway. Requires the RBAC `approve` grant (an explicit deny is rejected; when no per-operation grant is configured the coarse admin policy applies). Separation of duties is enforced: the requester of a proposal cannot approve it. A proposal that cannot be applied in its current state returns 409. Takes no request body.

# paths./proposals/{id}/reject.post.description
Rejects the proposal with a required reason. Requires the RBAC `approve` grant. A missing or blank reason returns 400; a proposal that cannot be rejected in its current state returns 409.

# paths./jobs/{jobId}/steps.get.description
Returns the sanitized per-step glass-box (command and timeline) for a durable execution job. Responses are sent with no-store caching and carry X-Correlation-Id when the job has a correlation id.

# paths./jobs/{jobId}/steps.get.responses.200.description
Sanitized per-step timeline for the job.

# paths./network-datasets.get.description
Lists the registered network datasets from the `honua.network_datasets` registry. Disabled datasets are excluded unless `includeDisabled=true`.

# paths./network-datasets.get.parameters[].description
Include datasets whose lifecycle status is not active. Defaults to false.

# paths./network-datasets.post.description
Registers a new network dataset. The edge and vertex table names are validated as safe schema-qualified identifiers because the routing read path interpolates them into the pgRouting edges SQL. `srid` defaults to 4326 and `status` defaults to `active` when omitted.

# paths./network-datasets/{id}.get.description
Returns a single network dataset registry entry by id.

# paths./network-datasets/{id}.get.parameters[].description
Stable network-dataset id (lowercase slug).

# paths./network-datasets/{id}.put.description
Updates mutable registry fields. Omitted fields keep their current value; set `clearDescription` to true to remove the description. The dataset id comes from the route and cannot be changed.

# paths./network-datasets/{id}.delete.description
Removes a network dataset from the registry. Only the registry mapping is deleted; the underlying edge/vertex tables are untouched.

# paths./network-datasets/{id}/generations.get.description
Lists the topology generations recorded for a dataset. Returns an empty array for an unknown dataset id.

# paths./network-datasets/{id}/generations.post.description
Allocates a new `draft` topology generation, seeded from the dataset's current active generation, to receive batched content edits. Does not change the active-generation pointer. Takes no request body.

# paths./network-datasets/{id}/generations/{generation}/edits.post.description
Applies an all-or-nothing edge and turn-restriction content edit to one non-active topology generation, atomically transitioning it to `dirty`. Requires an `Idempotency-Key` header and an `If-Match` header carrying the generation's current `rowVersion`; replaying the same key with an identical payload returns the original result with `wasIdempotentReplay` set. Edge attribute keys are restricted to the dataset's declared travel-profile forward/reverse cost columns, and edge geometry SRID must match the generation SRID. The response carries the new row version in an `ETag` header.

# paths./network-datasets/{id}/generations/{generation}/edits.post.parameters[].description
Target topology generation number. Must not be the active generation.

# paths./network-datasets/{id}/generations/{generation}/edits.post.parameters[].description
Caller-supplied idempotency key, at most 200 characters and free of control characters.

# paths./network-datasets/{id}/generations/{generation}/edits.post.parameters[].description
The generation's current `rowVersion` as a positive integer (optionally quoted).

# paths./network-datasets/{id}/generations/{generation}/edits.post.responses.200.description
The batch was applied (or idempotently replayed).

# paths./network-datasets/{id}/generations/{generation}/edits.post.responses.200.headers.ETag.description
Quoted row version of the generation after the mutation; use it as the next `If-Match`.

# paths./network-datasets/{id}/generations/{generation}/rebuild.post.description
Submits an isolated shadow-topology rebuild for a dirty generation and creates a durable execution job. Requires an `If-Match` header carrying the generation's current `rowVersion`. Takes no request body. Generic status, cancel and retry are served by `/jobs/{jobId}`; stage checkpoints are available from the rebuild-attempt endpoint.

# paths./network-datasets/{id}/generations/{generation}/rebuild.post.parameters[].description
The generation's current `rowVersion` as a positive integer (optionally quoted).

# paths./network-datasets/{id}/generations/{generation}/rebuild.post.responses.202.description
The rebuild was accepted and a durable execution job was created.

# paths./network-datasets/{id}/generations/{generation}/rebuild.post.responses.503.description
Rebuild capacity or the durable job runtime is unavailable; retry later.

# paths./network-datasets/{id}/generations/{generation}/rebuild/{attempt.get.description
Returns one rebuild attempt with its lease state and per-stage checkpoints (snapshot, build, analyze, validate, cleanup).

# paths./network-datasets/{id}/generations/{generation}/rebuild/{attempt.get.responses.200.description
The rebuild attempt and its stage checkpoints.

# paths./network-datasets/{id}/promote.post.description
Atomically promotes a `ready` generation to active. Requires an `Idempotency-Key` header, and the body must carry `targetGeneration`, `expectedActiveGeneration` and `expectedActiveRowVersion` (all positive) so a concurrent promotion is fenced off. Returns 404 when the active generation or the candidate cannot be found, and 409 for every other precondition/state rejection.

# paths./network-datasets/{id}/promote.post.parameters[].description
Caller-supplied idempotency key, at most 200 characters and free of control characters.

# paths./network-datasets/{id}/promote.post.responses.200.description
The promotion committed; the immutable history entry is returned.

# paths./network-datasets/{id}/rollback.post.description
Atomically rolls the active pointer back to a previously active, `retired` generation. Same request contract as promote: an `Idempotency-Key` header plus `targetGeneration`, `expectedActiveGeneration` and `expectedActiveRowVersion` in the body.

# paths./network-datasets/{id}/rollback.post.parameters[].description
Caller-supplied idempotency key, at most 200 characters and free of control characters.

# paths./network-datasets/{id}/rollback.post.responses.200.description
The rollback committed; the immutable history entry is returned.

# paths./network-datasets/{id}/promotions.get.description
Returns the dataset's immutable promotion/rollback history. Returns an empty array for an unknown dataset id.

# paths./network-datasets/{id}/promotions.get.responses.200.description
The promotion/rollback history, newest first.

# paths./operations/cache/health.get.description
Reports cache service health, fallback state, and the effective cache configuration. Redis server info is included only when a Redis connection multiplexer is registered.

# paths./operations/cache/statistics.get.description
Returns aggregate cache hit/miss/eviction counters with per-cache-type breakdowns plus backend storage metrics (local key count, Redis DB size and memory usage).

# paths./operations/cache/redis.get.description
Returns Redis connection state and server info. When no Redis connection multiplexer is registered the call still succeeds with `isConfigured` and `isConnected` both false.

# paths./operations/cache/invalidate.post.description
Invalidates cached entries. Exactly one scope is selected, in precedence order: `keyPattern` (pattern removal), `scope` of `ogc-metadata` or `all`, `serviceId` plus `layerId` (layer scope), then `serviceId` alone (service catalog scope). At least one of `keyPattern`, `serviceId` or `scope` must be supplied.

# paths./operations/geocoding/providers.get.description
Runs a health check across all registered geocoding providers and returns each provider's health, last-check timestamp, response time and capability matrix, along with the configured default provider and failover flag.

# paths./operations/geocoding/providers.get.responses.200.description
Geocoding provider health and capabilities.

# paths./operations/geocoding/configuration.get.description
Returns a read-only snapshot of the effective geocoding configuration (enablement, default provider, failover, caching and timeout settings). No provider credentials are exposed.

# paths./operations/streaming/subscribers.get.description
Lists the currently connected streaming subscribers with their connect time, optional client label and connection duration.

# paths./operations/streaming/alerts.get.description
WebSocket endpoint that streams alert-notification envelopes as JSON text frames for the lifetime of the connection. The request must be a WebSocket upgrade; a plain HTTP GET is rejected with 400. The socket is closed when the client disconnects or an admin disconnects the subscription.

# paths./operations/streaming/alerts.get.parameters[].description
Optional label recorded against the subscription and surfaced by the subscriber listing.

# paths./operations/streaming/alerts.get.responses.101.description
Switching protocols; the alert stream is delivered over the WebSocket connection.

# paths./operations/streaming/subscribers/{subscriberId}.delete.description
Forcibly disconnects one streaming subscriber. The response envelope carries only a confirmation message; there is no `data` payload.

# paths./operations/streaming/subscribers/{subscriberId}.delete.parameters[].description
Subscriber identifier. Must be a GUID; other values do not match the route.

# paths./operations/active.get.description
Returns every tracked operation currently in `Queued` or `Processing` state, optionally narrowed to one operation type. Each entry is the concrete progress record for its operation type, normalized to also carry lowercase `operationId` and numeric `type` keys for generic clients. Envelope property names on this legacy surface are PascalCase.

# paths./operations/active.get.parameters[].description
Operation type name to filter by, parsed case-insensitively (for example `Upload`, `Import`, `TileCache`, `Geoprocessing`, `Publishing`, `Orchestration`, `Deployment`).

# paths./operations/type/{operationType}.get.description
Returns the tracked operations of one operation type. Entries are the concrete progress records, normalized to also carry lowercase `operationId` and numeric `type` keys. Envelope property names on this legacy surface are PascalCase.

# paths./operations/type/{operationType}.get.parameters[].description
Operation type name, parsed case-insensitively (for example `Upload`, `Import`, `TileCache`, `Geoprocessing`, `Publishing`, `Orchestration`, `Deployment`).

# paths./operations/{operationId}.get.description
Returns the progress record for any tracked operation, whatever its type (upload, import, ingest, external import, tile cache, export, print, raster import, geoprocessing, publishing, orchestration, deployment, temporal corrective). The payload is the concrete progress record and therefore carries type-specific fields; property names on this legacy surface are PascalCase and the operation identifier is emitted under its type-specific name (for example `UploadId` for uploads, `OperationId` for geoprocessing).

# paths./operations/{operationId}/cancel.post.description
Requests cancellation of a queued or processing operation. Takes no request body. Cancellation is signalled to any in-flight worker and synchronized to the durable execution-job store and job queue; orchestration runs are cancelled through the workflow cancellation coordinator so the reconcile loop can cascade to child jobs. Returns 400 when the operation type does not support cancellation, 409 when the operation already reached a terminal state, the backend cannot cancel, or the cancellation could not be confirmed, and 503 when an orchestration cancel is requested with no orchestration engine available.

# paths./operations/{operationId}/cancel.post.responses.200.description
Cancellation was requested (idempotent when already cancelled).

# paths./operations/{operationId}/cancel.post.responses.503.description
The orchestration engine is not available to process the cancellation.

# paths./performance/database/query-cache/statistics.get.description
Returns prepared-statement (query plan) cache performance for the active data provider: statement counts, hit/miss tallies, hit ratio, and cache utilization relative to the configured `MaxCachedStatements` limit.

# paths./performance/database/query-cache/statistics.get.responses.200.description
Current prepared statement cache statistics.

# paths./performance/database/query-cache/statistics.get.responses.500.description
Statistics collection failed. Details are logged server-side only.

# paths./performance/enhanced/database/query-performance.get.summary
Get database query performance statistics

# paths./performance/enhanced/database/query-performance.get.description
Returns aggregated query execution statistics (totals, slow/failed counts, average/P95/max execution time, and a per-query-type breakdown). When the query performance monitor is not registered, an empty statistics object is returned.

# paths./performance/enhanced/database/query-performance.get.responses.500.description
Statistics collection failed. Details are logged server-side only.

# paths./performance/enhanced/database/slow-queries.get.description
Returns recently detected slow queries for performance analysis. When the query performance monitor is not registered, an empty list is returned.

# paths./performance/enhanced/database/slow-queries.get.parameters[].description
Maximum number of slow query records to return. Defaults to 50 and is clamped server-side to 200.

# paths./performance/enhanced/database/slow-queries.get.responses.500.description
Slow query retrieval failed. Details are logged server-side only.

# paths./performance/enhanced/resources/tracking.get.description
Returns statistics about tracked disposable resources: currently tracked count, disposed count, potential leak count, a per-resource-type breakdown, and the age of the oldest tracked resource. When the resource leak detector is not registered, an empty statistics object is returned.

# paths./performance/enhanced/resources/tracking.get.responses.500.description
Statistics collection failed. Details are logged server-side only.

# paths./performance/enhanced/resources/potential-leaks.get.description
Returns resources that were tracked but never disposed and are therefore candidate leaks. `totalCount` reports the full detected count while `potentialLeaks` is truncated to `maxResults`. When the resource leak detector is not registered, an empty list is returned.

# paths./performance/enhanced/resources/potential-leaks.get.parameters[].description
Maximum number of leak records to include in the response body. Defaults to 100.

# paths./performance/enhanced/resources/potential-leaks.get.responses.500.description
Leak retrieval failed. Details are logged server-side only.

# paths./performance/enhanced/resources/scan-leaks.post.description
Triggers an immediate resource leak scan and returns the scan result. Takes no request body. When the resource leak detector is not registered, an empty scan result is returned.

# paths./performance/enhanced/resources/scan-leaks.post.responses.500.description
Leak scan failed. Details are logged server-side only.

# paths./performance/enhanced/exceptions/statistics.get.description
Returns aggregated exception telemetry: total and critical counts, per-category and per-severity tallies, the most common exception types, and the current exception rate per minute. When exception telemetry is not registered, an empty statistics object is returned.

# paths./performance/enhanced/exceptions/statistics.get.responses.500.description
Statistics collection failed. Details are logged server-side only.

# paths./performance/enhanced/exceptions/recent.get.description
Returns recently recorded exception records, optionally filtered to a minimum severity. When exception telemetry is not registered, an empty list is returned.

# paths./performance/enhanced/exceptions/recent.get.parameters[].description
Maximum number of exception records to return. Defaults to 100 and is clamped server-side to 500.

# paths./performance/enhanced/exceptions/recent.get.parameters[].description
Minimum severity filter, matched case-insensitively. Values that do not parse are ignored and no severity filter is applied.

# paths./performance/enhanced/exceptions/recent.get.responses.500.description
Exception retrieval failed. Details are logged server-side only.

# paths./performance/enhanced/cache/statistics.get.description
Returns query-result cache metrics: request/hit/miss counts, hit ratio, time saved, current entry count, approximate memory footprint, and a per-query-type breakdown. When the query result cache manager is not registered, an empty statistics object is returned.

# paths./performance/enhanced/cache/statistics.get.responses.500.description
Statistics collection failed. Details are logged server-side only.

# paths./performance/enhanced/cache/effectiveness.get.description
Returns per-key cache effectiveness analysis for tuning: most-accessed keys, low-hit-ratio keys that are candidates for removal, the largest cached items, and eviction counters. When the query result cache manager is not registered, an empty metrics object is returned.

# paths./performance/enhanced/cache/effectiveness.get.responses.500.description
Metrics collection failed. Details are logged server-side only.

# paths./performance/enhanced/cache/invalidate.delete.description
Invalidates query-result cache entries whose keys match the supplied pattern. The pattern is supplied as a query parameter; there is no request body. When the query result cache manager is not registered, the response reports zero invalidated entries.

# paths./performance/enhanced/cache/invalidate.delete.parameters[].description
Cache key pattern to invalidate. Required; a missing or whitespace-only value returns 400.

# paths./performance/enhanced/cache/invalidate.delete.responses.400.description
The `pattern` query parameter was missing or blank. The body is a bare JSON string carrying the error message.

# paths./performance/enhanced/cache/invalidate.delete.responses.400.content.application/json.schema.example
Pattern parameter is required for cache invalidation

# paths./performance/enhanced/cache/invalidate.delete.responses.500.description
Cache invalidation failed. Details are logged server-side only.

# paths./performance/enhanced/summary.get.description
Returns a combined snapshot of query performance, resource tracking, exception telemetry, and query-result cache statistics, plus a derived 0-100 health score. Each section is omitted when the corresponding monitor is not registered.

# paths./performance/enhanced/summary.get.responses.500.description
Summary collection failed. Details are logged server-side only.

# paths./cache/status.get.description
Reports whether the distributed cache is reachable and whether the server is currently serving from the in-memory fallback cache.

# paths./cache/invalidate.post.description
Invalidates output-cache entries for the requested scope. Supported scopes are `layer` (requires `serviceId` and `layerId`), `service` (requires `serviceId`; also invalidates every published layer of that service), `collection` (requires `collectionId`), `ogc-metadata`, and `all`. Scope matching is case-insensitive.

# paths./cache/invalidate.post.responses.200.description
Invalidation completed for the requested scope.

# paths./cache/invalidate.post.responses.500.description
Invalidation failed. The envelope reports `success: false` with a generic message; details are logged server-side only.

# paths./streaming/features/sessions.get.description
Returns every active feature-change streaming session with its transport, connect time, duration, subscription filter summary, and last queued cursor, together with server-wide counters for slow-consumer drops and heartbeats sent.

# paths./streaming/features/sessions/{sessionId}.delete.description
Forcibly disconnects the identified feature-change streaming session. Returns 404 when no session with that identifier is connected.

# paths./streaming/features/sessions/{sessionId}.delete.parameters[].description
Streaming session identifier. Must be a GUID; non-GUID values do not match the route.

# paths./streaming/features/sessions/{sessionId}.delete.responses.200.description
Session disconnected. The envelope carries a confirmation message and no data payload.

# paths./streaming/features/sessions/{sessionId}.delete.responses.404.description
No connected session matches the supplied identifier.

# paths./geoprocessing/tools/usage-ranking.get.description
Returns geoprocessing tools ranked by recorded invocation count, read from process usage telemetry. Ordering is stable: descending by invocation count, then most-recent use, then process id.

# paths./geoprocessing/tools/usage-ranking.get.parameters[].description
Maximum number of ranked tools to return. When omitted the full ranking is returned. Values less than or equal to zero return 400.

# paths./feature-events/replay.get.description
Replays stored feature-change events by cursor and/or time window so downstream consumers can recover missed changes. Paging is cursor-based: pass the returned `NextCursor` back as `cursor` while `HasMore` is true. Note that this payload uses PascalCase property names.

# paths./feature-events/replay.get.parameters[].description
Resume replay after this cursor value. Omit to start from the beginning of the retained window.

# paths./feature-events/replay.get.parameters[].description
Inclusive lower bound on event timestamp. Must be less than or equal to `to` when both are supplied.

# paths./feature-events/replay.get.parameters[].description
Inclusive upper bound on event timestamp.

# paths./feature-events/replay.get.parameters[].description
Maximum number of events per page. Must be between 1 and 1000; defaults to 200.

# paths./feature-events/replay.get.responses.400.description
`limit` was outside 1-1000, or `from` was later than `to`.

# paths./share/exports.get.description
Lists scheduled Share export definitions with cursor paging. Secret-looking values in `destinationConfig` are redacted in the response.

# paths./share/exports.get.parameters[].description
Filter by destination family. Parsed case-insensitively; numeric values are rejected.

# paths./share/exports.get.parameters[].description
Filter by schedule state. Parsed case-insensitively; numeric values are rejected.

# paths./share/exports.get.parameters[].description
Opaque continuation cursor returned as `nextCursor` by a previous page.

# paths./share/exports.get.parameters[].description
Page size. Clamped to 1..200; defaults to 50.

# paths./share/exports.get.responses.503.description
The Share export store is not available.

# paths./share/exports.post.description
Creates a scheduled Share export definition. The destination status is resolved from the running build (Supported, Unsupported, or NotConfigured). `destinationConfig` entries whose key looks like raw secret material (password, secret, token, privateKey, accessKey, apiKey) are rejected unless the key ends with `ref`/`reference`. Returns a `Location` header pointing at the created definition.

# paths./share/exports.post.responses.201.headers.Location.description
Absolute path of the created Share export definition.

# paths./share/exports.post.responses.503.description
The Share export store is not available.

# paths./share/exports/{exportId}.get.description
Returns a single scheduled Share export definition with secret-looking destination config values redacted.

# paths./share/exports/{exportId}.get.responses.503.description
The Share export store is not available.

# paths./share/exports/{exportId}.put.description
Replaces a scheduled Share export definition. The original creation time, last-run time, and next-run time are preserved; the destination status is re-resolved from the running build.

# paths./share/exports/{exportId}.put.responses.503.description
The Share export store is not available.

# paths./share/exports/{exportId}.delete.description
Deletes a scheduled Share export definition together with its run history.

# paths./share/exports/{exportId}.delete.responses.204.description
The definition and its run history were deleted.

# paths./share/exports/{exportId}.delete.responses.503.description
The Share export store is not available.

# paths./share/exports/{exportId}/pause.post.description
Sets the definition's schedule state to `Paused` so it no longer fires automatically. Takes no request body.

# paths./share/exports/{exportId}/pause.post.responses.503.description
The Share export store is not available.

# paths./share/exports/{exportId}/resume.post.description
Sets the definition's schedule state back to `Active`. Takes no request body.

# paths./share/exports/{exportId}/resume.post.responses.503.description
The Share export store is not available.

# paths./share/exports/{exportId}/trigger.post.description
Manually triggers a Share export run. When the destination resolves to `Supported`, a durable job is created and enqueued and a `Queued` run is returned. When the destination resolves to `Unsupported` or `NotConfigured`, a `Failed` run is recorded and the request is rejected with 422. Takes no request body.

# paths./share/exports/{exportId}/trigger.post.responses.422.description
The destination is not configured (`share-export-destination-not-configured`) or has no registered worker in this build (`share-export-destination-unsupported`). A failed run is recorded.

# paths./share/exports/{exportId}/trigger.post.responses.503.description
The Share export store or the durable job runner is not available, or the job could not be dispatched.

# paths./share/exports/{exportId}/runs.get.description
Lists run history for a Share export definition with cursor paging.

# paths./share/exports/{exportId}/runs.get.parameters[].description
Opaque continuation cursor returned as `nextCursor` by a previous page.

# paths./share/exports/{exportId}/runs.get.parameters[].description
Page size. Clamped to 1..200; defaults to 50.

# paths./share/exports/{exportId}/runs.get.responses.503.description
The Share export store is not available.

# paths./share/exports/{exportId}/runs/{runId}.get.description
Returns detail for a single Share export run.

# paths./share/exports/{exportId}/runs/{runId}.get.responses.503.description
The Share export store is not available.

# paths./share/traffic.get.description
Returns aggregate Share traffic counts by interaction type over a period. When omitted, `periodEnd` defaults to now and `periodStart` defaults to 24 hours before `periodEnd`.

# paths./share/traffic.get.parameters[].description
ISO-8601 period start. Must be before `periodEnd`.

# paths./share/traffic.get.parameters[].description
ISO-8601 period end. Defaults to the current time.

# paths./share/traffic.get.responses.503.description
The Share traffic store is not available.

# paths./share/traffic/series.get.description
Returns aggregate Share traffic as a bucketed time series. The emitted bucket count may not exceed 2000.

# paths./share/traffic/series.get.parameters[].description
ISO-8601 period start. Must be before `periodEnd`.

# paths./share/traffic/series.get.parameters[].description
ISO-8601 period end. Defaults to the current time.

# paths./share/traffic/series.get.parameters[].description
Bucket width in minutes. Must be greater than zero; defaults to 60.

# paths./share/traffic/series.get.responses.503.description
The Share traffic store is not available.

# paths./embed/keys.get.description
Lists embed API keys with their scope and lifecycle status. Plaintext key material is never returned by this route.

# paths./embed/keys.post.description
Creates an embed API key and returns the one-time plaintext key material alongside the key metadata. At least one allowed embed origin is required. A `Location` header pointing at the created key is returned.

# paths./embed/keys.post.responses.201.description
The created embed key plus its one-time plaintext key material.

# paths./embed/keys/{id}.get.description
Returns metadata and scope for a single embed API key. Plaintext key material is never returned.

# paths./embed/keys/{id}/rotate.post.description
Rotates the key material for an embed API key and returns the new one-time plaintext key. Revoked keys cannot be rotated. Takes no request body; the rotation is recorded in the audit log.

# paths./embed/keys/{id}/rotate.post.responses.200.description
The rotated embed key plus its new one-time plaintext key material.

# paths./embed/keys/{id}/revoke.post.description
Revokes an embed API key so it can no longer authenticate. Takes no request body; the revocation is recorded in the audit log.

# paths./embed/usage.get.description
Returns aggregated embed analytics counts grouped by one dimension, with optional filters. Defaults to grouping by event type.

# paths./embed/usage.get.parameters[].description
Filter to a single embed analytics event type, parsed case-insensitively.

# paths./services/{serviceId}/replicas.get.description
Lists named disconnected-sync replicas registered against a feature service, with a derived status of `active` or `expired` (no successful sync in the last 7 days).

# paths./services/{serviceId}/replicas.get.responses.200.description
Replicas registered against the service.

# paths./services/{serviceId}/replicas.get.responses.402.description
The Pro `fieldops.offline-sync` entitlement is not active for this deployment. Disconnected-sync replica and conflict review are Pro-edition features; admin authorization alone does not grant them.

# paths./services/{serviceId}/replicas/{replicaId}.get.description
Returns detail for a single named replica, including the server generation cursor captured at the last successful sync. The replica must belong to the addressed service.

# paths./services/{serviceId}/replicas/{replicaId}.get.responses.402.description
The Pro `fieldops.offline-sync` entitlement is not active for this deployment. Disconnected-sync replica and conflict review are Pro-edition features; admin authorization alone does not grant them.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts.get.description
Lists durable disconnected-sync conflicts recorded for a replica, optionally filtered by lifecycle status.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts.get.responses.402.description
The Pro `fieldops.offline-sync` entitlement is not active for this deployment. Disconnected-sync replica and conflict review are Pro-edition features; admin authorization alone does not grant them.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts.get.responses.501.description
Conflict review is not supported by this service's data provider.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.get.description
Returns a single conflict with its base, client, and server feature states plus the computed geometry/field-level differences.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.get.responses.402.description
The Pro `fieldops.offline-sync` entitlement is not active for this deployment. Disconnected-sync replica and conflict review are Pro-edition features; admin authorization alone does not grant them.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.get.responses.501.description
Conflict review is not supported by this service's data provider.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.post.description
Applies an operator-selected resolution to a pending or deferred conflict, committing the resolved feature state through the shared edit pipeline before recording audit evidence. Which action produces a new committed server state depends on whether the conflicting client edit was already applied (`clientEditApplied`): under last-write-wins the client edit is already committed, so `acceptClient` is a no-op and `keepServer` restores the captured pre-conflict server state; under `conflictHandling=manualReview` the polarity is reversed. `mergeFields` requires `fieldValues` and `chooseGeometry` requires `geometry`, otherwise 400. An already-resolved conflict, or an action that does not apply to the conflict's recorded state (for example keeping the server after the client's delete already committed), is rejected with 409. When the storage layer cannot say whether the write committed, the resolution stays claimed and the call returns 503; retrying the same request resumes it idempotently. A conflict whose own uploaded edit had an indeterminate commit outcome carries `clientEditOutcomeUnknown`, and both `acceptClient` and `keepServer` then perform a real write rather than a no-op, so the row matches the operator's decision whichever way the ambiguous write went.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.post.responses.200.description
The resolved conflict and whether a new committed server state was produced.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.post.responses.402.description
The Pro `fieldops.offline-sync` entitlement is not active for this deployment. Disconnected-sync replica and conflict review are Pro-edition features; admin authorization alone does not grant them.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.post.responses.501.description
Conflict review is not supported by this service's data provider, or the resolution requires committing a feature state and no replica-capable edit pipeline is registered.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.post.responses.502.description
The resolved feature state could not be committed through the shared edit pipeline; the conflict is left pending and reviewable.

# paths./services/{serviceId}/replicas/{replicaId}/conflicts/{conflictId.post.responses.503.description
The shared edit pipeline could not determine whether the resolved feature state committed - the storage layer did not acknowledge the transaction. The resolution stays claimed with its write not yet marked committed, which is the resumable state; retry the same request (same operator, action, and inputs) to complete it. The conflict is deliberately not returned to the reviewable pool, because releasing it would let the next attempt see this resolution's own change as a post-conflict edit and reject it as stale forever.

# paths./services/{serviceName}/layers/{layerId}/export.get.description
Exports layer features as CSV, Shapefile (zipped), GeoPackage, or a licensed plugin-contributed output format. Small exports stream the file directly with a `Content-Disposition` attachment header. When more than 50,000 features match and a built-in format is requested, the export is queued as a background job and a 202 with a status URL is returned instead.

# paths./services/{serviceName}/layers/{layerId}/export.get.parameters[].description
Output format: `csv`, `shapefile`, `gpkg`, or the id of an active licensed plugin output format.

# paths./services/{serviceName}/layers/{layerId}/export.get.parameters[].description
Attribute filter expression applied to the export query.

# paths./services/{serviceName}/layers/{layerId}/export.get.parameters[].description
Spatial filter as `xmin,ymin,xmax,ymax` in the layer's spatial reference. Coordinates must be finite with xmin < xmax and ymin < ymax.

# paths./services/{serviceName}/layers/{layerId}/export.get.parameters[].description
Comma-separated attribute field names to include, or `*` for all attribute fields.

# paths./services/{serviceName}/layers/{layerId}/export.get.parameters[].description
Output spatial reference WKID. Must be supported by the CRS registry.

# paths./services/{serviceName}/layers/{layerId}/export.get.responses.200.description
The exported file, streamed as an attachment.

# paths./services/{serviceName}/layers/{layerId}/export.get.responses.200.headers.Content-Disposition.description
Attachment header carrying the generated download filename.

# paths./services/{serviceName}/layers/{layerId}/export.get.responses.202.description
The export exceeded the synchronous threshold and was queued as a background job.

# paths./services/{serviceName}/layers/{layerId}/export.get.responses.503.description
A large export was requested but the background export service, durable job storage, or cloud storage is not configured, or the export queue is full.

# paths./services/{serviceName}/layers/{layerId}/share/traffic.get.description
Returns Share traffic counts by interaction type for a single service layer over a period. When omitted, `periodEnd` defaults to now and `periodStart` defaults to 24 hours before `periodEnd`.

# paths./services/{serviceName}/layers/{layerId}/share/traffic.get.parameters[].description
Optional Share resource identifier narrowing the item reference.

# paths./services/{serviceName}/layers/{layerId}/share/traffic.get.parameters[].description
ISO-8601 period start. Must be before `periodEnd`.

# paths./services/{serviceName}/layers/{layerId}/share/traffic.get.parameters[].description
ISO-8601 period end. Defaults to the current time.

# paths./services/{serviceName}/layers/{layerId}/share/traffic.get.responses.503.description
The Share traffic store is not available.

# paths./services/{serviceName}/layers/{layerId}/share/traffic/series.get.description
Returns Share traffic for a single service layer as a bucketed time series. The emitted bucket count may not exceed 2000.

# paths./services/{serviceName}/layers/{layerId}/share/traffic/series.get.parameters[].description
Optional Share resource identifier narrowing the item reference.

# paths./services/{serviceName}/layers/{layerId}/share/traffic/series.get.parameters[].description
ISO-8601 period start. Must be before `periodEnd`.

# paths./services/{serviceName}/layers/{layerId}/share/traffic/series.get.parameters[].description
ISO-8601 period end. Defaults to the current time.

# paths./services/{serviceName}/layers/{layerId}/share/traffic/series.get.parameters[].description
Bucket width in minutes. Must be greater than zero; defaults to 60.

# paths./services/{serviceName}/layers/{layerId}/share/traffic/series.get.responses.503.description
The Share traffic store is not available.

# paths./migration/performance-evidence/latest.get.summary
Get Latest Migration Performance Evidence

# paths./migration/performance-evidence/latest.get.description
Returns the most recently published migration performance/cost evidence record whose aggregate status is `Pass`. Responds `204 No Content` when no passing record has been published yet. The full artifact is rendered verbatim - nothing is truncated and thresholds are not re-derived server-side.

# paths./migration/performance-evidence/latest.get.responses.200.description
The most recent passing evidence record.

# paths./migration/performance-evidence/latest.get.responses.204.description
No passing migration performance evidence has been published.

# paths./migration/performance-evidence/history.get.summary
List Migration Performance Evidence History

# paths./migration/performance-evidence/history.get.description
Returns a newest-first page of published migration performance/cost evidence records, optionally filtered by source family and fixture size. The response echoes the applied filters and the effective record cap.

# paths./migration/performance-evidence/history.get.parameters[].description
Restrict to a single source family (for example `arcgis`, `geoserver`).

# paths./migration/performance-evidence/history.get.parameters[].description
Restrict to a single fixture size classification.

# paths./migration/performance-evidence/history.get.parameters[].description
Maximum records to return. Must be a positive integer; values above 200 are clamped to 200.

# paths./migration/performance-evidence/history.get.responses.200.description
Evidence history page in newest-first order.

# paths./migration/performance-evidence/{evidenceId}.get.description
Returns a single published migration performance/cost evidence record by its stable evidence identifier (derived from the artifact fingerprint, so re-publishing the same artifact is idempotent).

# paths./migration/performance-evidence/{evidenceId}.get.parameters[].description
Stable evidence identifier, typically the artifact fingerprint.

# paths./migration/runs.get.description
Returns a paged, most-recent-first list of recorded migration runs, optionally filtered by source kind and run status.

# paths./migration/runs.get.parameters[].description
Page size. Must be a positive integer; values above 100 are clamped to 100.

# paths./migration/runs.get.parameters[].description
Zero-based page offset. Must be non-negative.

# paths./migration/runs.get.parameters[].description
Restrict to a single source kind, for example `geoserver-rest` or `arcgis-geoservices-rest`.

# paths./migration/runs.post.description
Records the start of a migration run. The run is persisted with status `running`; `startedAt` defaults to the server receive time when omitted. `runId` and `sourceKind` are required.

# paths./migration/runs/{runId}.get.description
Returns a single migration run by its stable run identifier.

# paths./migration/runs/{runId}/complete.post.description
Records the terminal state of a migration run. `status` must be `succeeded`, `failed`, or `cancelled` (`running` is rejected). When supplied, `evidencePackBody` must be valid JSON and is persisted inline so it can later be downloaded through the evidence-pack route. `completedAt` defaults to the server receive time.

# paths./migration/runs/{runId}/cancel.post.description
Marks a still-running migration run as cancelled. The request body is optional; when present, `reason` is persisted verbatim as the run's operator-visible status note. Cancelling a run that already reached a terminal state returns `409 Conflict` (cancel is a no-op in that case).

# paths./migration/runs/{runId}/evidence-pack.get.description
Streams the evidence pack JSON persisted for a migration run as a file download. The response sets `Content-Disposition: attachment`, `X-Content-Type-Options: nosniff`, and a quoted `ETag` carrying the pack fingerprint when one was recorded. Returns `404` when the run does not exist or has no evidence pack persisted yet.

# paths./migration/runs/{runId}/evidence-pack.get.responses.200.description
The persisted evidence pack JSON document (shape is producer-defined).

# paths./migration/runs/{runId}/evidence-pack.get.responses.200.headers.ETag.description
Quoted evidence pack fingerprint, present when the run recorded one.

# paths./migration/runs/{runId}/evidence-pack.get.responses.200.content.application/json.schema.description
Evidence pack document persisted verbatim by the migration producer.

# paths./migration/runs/{runId}/scorecard.get.summary
Download Migration Run Reconciliation Scorecard

# paths./migration/runs/{runId}/scorecard.get.description
Streams the signed reconciliation scorecard JSON persisted for a migration run as a file download. The response sets `Content-Disposition: attachment`, `X-Content-Type-Options: nosniff`, and a quoted `ETag` carrying the scorecard fingerprint when one was recorded. Returns `404` when the run does not exist or has no scorecard persisted yet.

# paths./migration/runs/{runId}/scorecard.get.responses.200.headers.ETag.description
Quoted scorecard fingerprint, present when the run recorded one.

# paths./migration/runs/{runId}/scorecard.post.summary
Record Migration Run Reconciliation Scorecard

# paths./migration/runs/{runId}/scorecard.post.description
Persists the signed reconciliation scorecard for a migration run. The body's `runId` must match the route run id and `fingerprint` is required; the scorecard is re-serialized canonically before being stored. Returns the updated run record.

# paths./forms/packages.get.description
Lists every server-owned form package family with its current draft and current published version numbers. Responses are marked `no-store`.

# paths./forms/packages.post.description
Creates a new draft form package version from the supplied package document. The server assigns `formId` when the document omits it and returns the persisted version with an `ETag` for subsequent optimistic-concurrency updates. The action is audited as `forms.package.save_draft`.

# paths./forms/packages.post.responses.201.headers.ETag.description
Concurrency token for the created draft version.

# paths./forms/packages/{formId}.get.description
Returns the current draft version of a form package, falling back to the current published version when no draft exists. Returns `404` when neither exists.

# paths./forms/packages/{formId}.get.responses.200.description
The current draft or published package version.

# paths./forms/packages/{formId}.get.responses.200.headers.ETag.description
Concurrency token for the returned version.

# paths./forms/packages/{formId}/versions.get.description
Lists every persisted version of a form package family. Returns an empty array for an unknown `formId`.

# paths./forms/packages/{formId}/versions/{packageVersion}.get.description
Returns a single form package version (draft, published, or archived) by version number.

# paths./forms/packages/{formId}/versions/{packageVersion}.get.responses.200.headers.ETag.description
Concurrency token for the returned version.

# paths./forms/packages/{formId}/versions/{packageVersion}.put.description
Replaces the package document of an existing draft version. An `If-Match` header carrying the draft's current ETag is required; omitting it returns `428 Precondition Required`. A missing draft, a non-editable version, or a stale ETag all return `409 Conflict`. The action is audited as `forms.package.update_draft`.

# paths./forms/packages/{formId}/versions/{packageVersion}.put.parameters[].description
Current ETag of the draft version being updated.

# paths./forms/packages/{formId}/versions/{packageVersion}.put.responses.200.headers.ETag.description
New concurrency token for the updated draft.

# paths./forms/packages/{formId}/versions/{packageVersion}/validate.post.description
Validates a package version against the target layer schema and package policy, returning the validation result. When the version is a draft, the result is also stored on the draft. This route always returns `200` with the validation result, even when the package is invalid.

# paths./forms/packages/{formId}/versions/{packageVersion}/validate.post.responses.200.description
Validation result for the package version.

# paths./forms/packages/{formId}/versions/{packageVersion}/publish.post.description
Validates and publishes a draft package version as an immutable published version. When validation fails, the stored validation result is returned with `400` and the failure is audited. Publishing a version that is not a draft returns `409 Conflict`. The action is audited as `forms.package.publish`.

# paths./forms/packages/{formId}/versions/{packageVersion}/publish.post.responses.200.headers.ETag.description
Concurrency token for the published version.

# paths./forms/packages/{formId}/versions/{packageVersion}/publish.post.responses.400.description
The package failed publish validation. The body is the validation result that blocked publishing.

# paths./forms/packages/{formId}/versions/{packageVersion}/reopen.post.description
Creates a new editable draft version from an existing published package version. The new draft records the version it was reopened from. Returns `404` when the published version does not exist. The action is audited as `forms.package.reopen`.

# paths./field-workflows/submissions.get.description
Lists and filters mobile-submitted field records for back-office review. Every filter is optional and combines with AND semantics. Responses are marked `no-store`.

# paths./field-workflows/submissions.get.parameters[].description
Restrict to a single target feature service id.

# paths./field-workflows/submissions.get.parameters[].description
Restrict to a single target layer id. Must be an integer.

# paths./field-workflows/submissions.get.parameters[].description
Restrict to records assigned to a reviewer.

# paths./field-workflows/submissions.get.parameters[].description
Restrict to a single sync classification.

# paths./field-workflows/submissions.get.parameters[].description
Restrict to records flagged as conflicting.

# paths./field-workflows/submissions.get.parameters[].description
Inclusive lower bound on submission time. Must be an ISO-8601 timestamp.

# paths./field-workflows/submissions.get.parameters[].description
Inclusive upper bound on submission time. Must be an ISO-8601 timestamp.

# paths./field-workflows/submissions.get.parameters[].description
Zero-based page offset; negative values are clamped to 0.

# paths./field-workflows/submissions.get.responses.200.description
Page of submissions matching the filter.

# paths./field-workflows/submissions/{submissionId}.get.description
Returns a submitted field record together with its review state, reviewer comments (oldest first), and sanitized attachment metadata. Responses are marked `no-store`.

# paths./field-workflows/submissions/{submissionId}/assignment.post.description
Assigns a submitted record to a reviewer, or unassigns it when `assignedTo` is null or empty. Returns the updated review state. The transition is audited as `field.review.assign`.

# paths./field-workflows/submissions/{submissionId}/decision.post.description
Records an approve / reject / request-changes decision on a submitted record. `status` must be `approved`, `rejected`, or `changes_requested`. An optional `If-Match` header carrying the review state's ETag enables optimistic concurrency; a concurrent modification returns `409 Conflict`. The response echoes the new state and sets the `ETag` header. The transition is audited as `field.review.decision.<status>`.

# paths./field-workflows/submissions/{submissionId}/decision.post.parameters[].description
Expected review-state ETag for optimistic concurrency.

# paths./field-workflows/submissions/{submissionId}/decision.post.responses.200.headers.ETag.description
New concurrency token for the review state.

# paths./field-workflows/submissions/{submissionId}/comments.post.description
Adds a reviewer comment to a submitted record. When `correctionRequest` is true the comment is recorded as a formal correction request and transitions the record to `changes_requested`. A missing or empty `body` returns `400`. The action is audited as `field.review.comment` or `field.review.correction_request`.

# paths./field-workflows/exports.get.description
Lists previously generated field export packages (the export audit trail), newest first. Responses are marked `no-store`.

# paths./field-workflows/exports.get.parameters[].description
Zero-based page offset; negative values are clamped to 0.

# paths./field-workflows/exports.post.description
Generates a field export package over the selected form/service/layer/date-range/review-state filter and streams it as a file download. `format` defaults to `geojson`; `csv` is also supported. The response body is the serialized record set (`application/geo+json` or `text/csv`), and the export is persisted to the audit trail. The request body is optional - omitting it exports with default filters.

# paths./field-workflows/exports.post.responses.200.headers.X-Honua-Export-Id.description
Identifier of the persisted export record.

# paths./field-workflows/exports.post.responses.200.headers.X-Honua-Export-Count.description
Number of submission records included in the package.

# paths./field-workflows/exports.post.responses.200.content.application/geo+json.schema.description
GeoJSON FeatureCollection of the selected submission records.

# paths./field-workflows/exports.post.responses.200.content.text/csv.schema.description
Flat CSV record set of the selected submission records.

# paths./scenes.get.description
Lists registered 3D scene datasets as lightweight summaries. Active datasets only unless `includeInactive=true` is supplied. The route is only mapped when the scene registration service is available (Postgres data-source profiles).

# paths./scenes.get.parameters[].description
Include deactivated (soft-deleted) scene datasets. Defaults to false.

# paths./scenes.post.description
Registers a new 3D scene dataset pointing at an existing tileset on disk. The scene id (slug), name, asset root, tileset file name, CRS, cache policy, edition gate, extent and access flags are validated before persistence.

# paths./scenes/generate.post.description
Generates a 3D Tiles tileset from a published feature layer and registers the resulting scene dataset. Generation runs synchronously inside the request; the response carries the routable tileset URL plus feature/tile counts. Returns 404 when the source layer does not exist, 409 when the derived scene id collides with an existing registration, and 503 when the generation pipeline is temporarily unavailable.

# paths./scenes/generate.post.responses.201.description
The generated scene and its tileset URL.

# paths./scenes/generate.post.responses.503.description
Scene generation is temporarily unavailable; retry later (problem+json).

# paths./scenes/ingest/citygml.post.description
Uploads a CityGML document (multipart/form-data, `file` field, 64 MiB maximum) and converts it into a Building Scene Layer 3D Tiles tileset, registering the result as a servable scene. Enterprise-gated: an authenticated operator without the `scene.bim-ingest` entitlement receives 402.

# paths./scenes/ingest/citygml.post.requestBody.content.multipart/form-data.schema.properties.file.description
CityGML document to ingest. Required and non-empty; maximum 64 MiB.

# paths./scenes/ingest/citygml.post.requestBody.content.multipart/form-data.schema.properties.sceneId.description
Optional explicit scene id (slug). Derived from the document when omitted.

# paths./scenes/ingest/citygml.post.requestBody.content.multipart/form-data.schema.properties.displayName.description
Optional display name for the registered scene.

# paths./scenes/ingest/citygml.post.requestBody.content.multipart/form-data.schema.properties.editionGate.description
Optional edition gate slug applied to the registration.

# paths./scenes/ingest/citygml.post.requestBody.content.multipart/form-data.schema.properties.cacheMaxAgeSeconds.description
Optional cache max-age applied to the registered scene dataset.

# paths./scenes/ingest/citygml.post.requestBody.content.multipart/form-data.schema.properties.requiresAuth.description
Whether the registered scene requires authentication. Defaults to false.

# paths./scenes/ingest/citygml.post.responses.201.description
The ingested scene, tileset URL, and ingest counts.

# paths./scenes/ingest/citygml.post.responses.402.description
The CityGML/BIM scene ingest entitlement is not active for the current license (problem+json with an upgrade message).

# paths./scenes/ingest/pointcloud.post.description
Uploads a LAS/LAZ/COPC point cloud (multipart/form-data, `file` field, 256 MiB maximum) and converts it into a 3D Tiles point tileset (`.pnts` quadtree), registering the result as a servable scene. Compressed input and projected source CRSs are dispatched to the out-of-tree point-cloud translate worker when one is configured; otherwise they are rejected with 400. Enterprise-gated: an operator without the `scene.pointcloud-ingest` entitlement receives 402.

# paths./scenes/ingest/pointcloud.post.requestBody.content.multipart/form-data.schema.properties.file.description
LAS/LAZ/COPC point cloud to ingest. Required and non-empty; maximum 256 MiB.

# paths./scenes/ingest/pointcloud.post.requestBody.content.multipart/form-data.schema.properties.displayName.description
Optional display name for the registered scene.

# paths./scenes/ingest/pointcloud.post.requestBody.content.multipart/form-data.schema.properties.editionGate.description
Optional edition gate slug applied to the registration.

# paths./scenes/ingest/pointcloud.post.requestBody.content.multipart/form-data.schema.properties.cacheMaxAgeSeconds.description
Optional cache max-age applied to the registered scene dataset.

# paths./scenes/ingest/pointcloud.post.requestBody.content.multipart/form-data.schema.properties.requiresAuth.description
Whether the registered scene requires authentication. Defaults to false.

# paths./scenes/ingest/pointcloud.post.requestBody.content.multipart/form-data.schema.properties.sourceCrsAxisOrder.description
Geographic axis order of the source point cloud. Accepts lonlat/longlat/xy or latlon/latlong/yx. Defaults to longitude-first.

# paths./scenes/ingest/pointcloud.post.requestBody.content.multipart/form-data.schema.properties.sourceEpsg.description
Source CRS as a positive EPSG code or an AUTHORITY:CODE token (e.g. 32610 or EPSG:32610). A projected source triggers reprojection to EPSG:4979 through the translate worker; geographic tokens (EPSG:4326/4979/4269, OGC:CRS84) are treated as pass-through.

# paths./scenes/ingest/pointcloud.post.responses.201.description
The ingested scene, tileset URL, and point/tile counts.

# paths./scenes/ingest/pointcloud.post.responses.402.description
The point-cloud scene ingest entitlement is not active for the current license (problem+json with an upgrade message).

# paths./scenes/{id}.get.description
Returns the full registration record of a scene dataset, including asset root, extent, cache policy, access flags and lifecycle state.

# paths./scenes/{id}.put.description
Updates the mutable fields of a scene dataset. Omitted fields keep their previous value; the `clearExtent`, `clearCrs`, `clearEditionGate` and `clearAllowedRoles` flags explicitly reset the corresponding value.

# paths./scenes/{id}.delete.description
Soft-deletes a scene dataset by marking it inactive and invalidating its cached scene output. The registration record is retained and can still be listed with `includeInactive=true`.

# paths./scenes/{id}/resolve.get.description
Resolves an active scene dataset to its absolute tileset URL plus ready-to-paste CesiumJS and `<honua-scene>` embed snippets. Returns 404 when the dataset does not exist or is not active.

# paths./scenes/{id}/resolve.get.responses.200.description
Serving metadata and embed snippets for the scene dataset.

# paths./investigations.get.description
Returns a cursor-paginated page of investigation summaries, most recently updated first. All filters are optional and combine with AND semantics.

# paths./investigations.get.parameters[].description
Restrict to investigations in this lifecycle state.

# paths./investigations.get.parameters[].description
Exact-match filter on the creating actor.

# paths./investigations.get.parameters[].description
Case-insensitive substring match against the investigation title.

# paths./investigations.get.parameters[].description
Maximum number of rows to return. Defaults to 50; the store clamps to a server-side maximum.

# paths./investigations.get.parameters[].description
Opaque pagination cursor returned as `nextCursor` by a prior page.

# paths./investigations.post.description
Creates an open investigation owned by the calling actor and writes an `investigation.create` audit record. `title` is required (256 characters maximum); `summary` is optional (4096 characters maximum).

# paths./investigations/{investigationId}.get.description
Returns a single investigation with its full pin and link collections.

# paths./investigations/{investigationId}.patch.description
Partially updates an investigation's title, summary, or status and writes an `investigation.update` audit record. Omitted fields are left unchanged; a supplied `title` must be non-blank.

# paths./investigations/{investigationId}/links.post.description
Attaches an alert, job, release, or change-set reference to the investigation and writes an `investigation.link.add` audit record. Returns the full investigation with the new link included.

# paths./investigations/{investigationId}/links.post.responses.200.description
The investigation including the new link.

# paths./investigations/{investigationId}/links/{linkId}.delete.description
Removes a linked resource from the investigation and writes an `investigation.link.remove` audit record. Returns the updated investigation.

# paths./investigations/{investigationId}/links/{linkId}.delete.responses.200.description
The investigation with the link removed.

# paths./investigations/{investigationId}/pins.post.description
Pins an Operate event (alert, audit, job, release, sync conflict, temporal operation, or log) to the investigation and writes an `investigation.pin.add` audit record. Returns the full investigation with the new pin included.

# paths./investigations/{investigationId}/pins.post.responses.200.description
The investigation including the new pin.

# paths./investigations/{investigationId}/pins/{pinId}.delete.description
Removes a pinned event from the investigation and writes an `investigation.pin.remove` audit record. Returns the updated investigation.

# paths./multidim-coverages.get.description
Lists the registered cloud-hosted HDF5 / NetCDF4 / GRIB coverage sources for a layer. The `layerId` query parameter is required; omitting it returns 400.

# paths./multidim-coverages.get.parameters[].description
Layer whose coverage registrations should be returned.

# paths./multidim-coverages.post.description
Registers a cloud-hosted HDF5, NetCDF4, or GRIB object as a coverage source for a layer. The layer must already be published (otherwise 404), the object key extension must match the declared format, `Local` storage is rejected, and a duplicate layer/provider/bucket/object-key tuple returns 409. Metadata is not scanned at registration time; the returned `status` is `reader-not-enabled` until a scan runs.

# paths./multidim-coverages/jobs/{jobId}.get.description
Returns the status of a GDAL metadata scan job. On first observation of a succeeded job the scanned metadata is materialized onto the registration (idempotent) and the refreshed registration is embedded in `coverage`. Requires the `raster.multidim-coverage` entitlement; returns 503 when the Redis-backed execution-job substrate is unavailable.

# paths./multidim-coverages/jobs/{jobId}.get.parameters[].description
Scan job identifier returned by the refresh endpoint.

# paths./multidim-coverages/jobs/{jobId}.get.responses.200.description
The scan job status, with the refreshed coverage once the scan has succeeded.

# paths./multidim-coverages/jobs/{jobId}.get.responses.402.description
The multidimensional coverage entitlement is not active for the current license (problem+json with an upgrade message).

# paths./multidim-coverages/jobs/{jobId}.get.responses.503.description
The execution-job substrate is not configured, so scan-job status cannot be read (problem+json).

# paths./multidim-coverages/{id}.get.description
Returns the registration details for a single cloud-hosted HDF5 / NetCDF4 / GRIB coverage source.

# paths./multidim-coverages/{id}.delete.description
Removes a cloud-hosted HDF5 / NetCDF4 / GRIB coverage registration. The backing object in cloud storage is untouched.

# paths./multidim-coverages/{id}/refresh.post.description
Dispatches an asynchronous GDAL metadata scan for the registration and returns 202 with the queued job id and a `statusUrl` to poll. Requires the `raster.multidim-coverage` entitlement; returns 503 when the Redis-backed execution-job substrate is unavailable. The request body is ignored.

# paths./multidim-coverages/{id}/refresh.post.responses.402.description
The multidimensional coverage entitlement is not active for the current license (problem+json with an upgrade message).

# paths./multidim-coverages/{id}/refresh.post.responses.503.description
The execution-job substrate is not configured, so the scan cannot be dispatched (problem+json).

# paths./cloud-rasters.get.description
Lists the registered Cloud Optimized GeoTIFFs for a layer. The `layerId` query parameter is required; omitting it returns 400.

# paths./cloud-rasters.get.parameters[].description
Layer whose COG registrations should be returned.

# paths./cloud-rasters.post.description
Registers a cloud-hosted Cloud Optimized GeoTIFF for direct serving. The layer must already be published (otherwise 404), `Local` storage is rejected, and a duplicate layer/provider/bucket/object-key tuple returns 409. Image metadata is populated by a later refresh, not at registration time.

# paths./cloud-rasters/{id}.get.description
Returns the registration details for a single Cloud Optimized GeoTIFF, including scanned image metadata when a refresh has run.

# paths./cloud-rasters/{id}.delete.description
Removes a Cloud Optimized GeoTIFF registration and evicts its cached tile-resolver metadata. The backing object in cloud storage is untouched.

# paths./cloud-rasters/{id}/refresh.post.description
Re-reads the COG header from cloud storage, updates the stored image metadata (size, band count, SRID, compression, overview levels), evicts the cached tile-resolver metadata, and returns the refreshed registration. Returns 400 when no range reader is configured for the registration's storage provider. The request body is ignored.

# paths./cloud-rasters/{id}/refresh.post.responses.200.description
The registration with freshly scanned metadata.

# paths./zarr-stores.get.description
Lists the registered Zarr coverage stores for a layer. The `layerId` query parameter is required; omitting it returns 400.

# paths./zarr-stores.get.parameters[].description
Layer whose Zarr registrations should be returned.

# paths./zarr-stores.post.description
Registers a Zarr store root for read-only coverage serving. The layer must already be published (otherwise 404); `rootPath` must be a relative object key with no `..` traversal, no backslashes and no leading `/`; and a duplicate layer/provider/bucket/root-path tuple returns 409. Store metadata is populated by a later refresh, not at registration time.

# paths./zarr-stores/{id}.get.description
Returns the registration details for a single Zarr store, including per-variable summaries when a metadata scan has run.

# paths./zarr-stores/{id}.delete.description
Removes a Zarr store registration. The backing objects in cloud storage are untouched.

# paths./zarr-stores/{id}/refresh.post.description
Re-reads the Zarr manifest from the backing store, updates the stored metadata (format version, SRID, arrays/variables, primary variable), and returns the refreshed registration. Returns 400 when no range reader is configured for the registration's storage provider or when the manifest is invalid. The request body is ignored.

# paths./zarr-stores/{id}/refresh.post.responses.200.description
The registration with freshly scanned metadata.

# paths./roles.get.description
Lists every role definition, including built-in roles, with the permission grants attached to each role.

# paths./roles.post.description
Creates a custom role. The new role starts with no permission grants; use PUT /roles/{id}/permissions to assign them.

# paths./roles.post.responses.201.headers.Location.description
Absolute path of the created role resource.

# paths./roles/{id}.get.description
Returns a single role definition together with its permission grants.

# paths./roles/{id}.put.description
Updates the name and/or description of an existing role. Omitted (null) fields keep their current value; permission grants and the built-in flag are not changed by this operation.

# paths./roles/{id}.delete.description
Deletes a custom role. Built-in roles cannot be deleted; attempting to do so is reported the same way as an unknown role.

# paths./roles/{id}.delete.responses.200.description
Role deleted successfully. The envelope carries only a confirmation message.

# paths./roles/{id}.delete.responses.404.description
Role not found, or the role is built-in and therefore not deletable.

# paths./roles/{id}/permissions.get.description
Returns the permission grants assigned to a role.

# paths./roles/{id}/permissions.put.description
Replaces the complete set of permission grants for a role. The supplied list is authoritative: grants that are not present are removed. Returns the stored grants.

# paths./users.get.description
Lists managed users with optional filtering by provisioning source, role membership, and active state. Results are paged; the response carries the total count of users matching the filter.

# paths./users.get.parameters[].description
Filter by provisioning source (for example `oidc`, `scim`, or `manual`).

# paths./users.get.parameters[].description
Filter to users that are members of this role.

# paths./users.get.parameters[].description
Filter by active state. Omit to return both active and inactive users.

# paths./users.get.parameters[].description
Maximum number of users to return. Values above 1000 are clamped to 1000.

# paths./users.get.parameters[].description
Number of users to skip before returning the page.

# paths./users/{id}.get.description
Returns a single managed user, including provisioning source and role membership.

# paths./users/{id}.get.parameters[].description
User identifier as stored by the identity store.

# paths./users/{id}.delete.description
Deprovisions a managed user so the identity can no longer authenticate against this server.

# paths./users/{id}.delete.parameters[].description
User identifier as stored by the identity store.

# paths./users/{id}.delete.responses.200.description
User deprovisioned successfully. The envelope carries only a confirmation message.

# paths./users/{id}/roles.put.description
Replaces the complete set of roles assigned to a user. The supplied list is authoritative: roles that are not present are removed. Returns the updated user.

# paths./users/{id}/roles.put.parameters[].description
User identifier as stored by the identity store.

# paths./users/{id}/effective-permissions.get.description
Resolves the union of permission grants a user receives across all of their role memberships, along with the roles that produced them.

# paths./users/{id}/effective-permissions.get.parameters[].description
User identifier as stored by the identity store.

# paths./tenants.get.description
Lists provisioned tenants and their lifecycle state.

# paths./tenants.post.description
Provisions a new tenant. The lifecycle operation is audited with the calling principal, correlation id, remote address, and user agent. When `displayName` is omitted the tenant id is used as the display name.

# paths./tenants.post.responses.201.headers.Location.description
Absolute path of the created tenant resource.

# paths./tenants/usage.get.description
Exports the current per-tenant metered usage snapshot (billable request counts and capture time) for billing reconciliation.

# paths./tenants/{tenantId}.get.description
Returns a single tenant record and its lifecycle state.

# paths./tenants/{tenantId}.delete.description
Retires a tenant through the lifecycle service. Access is blocked and the tenant is no longer resumable; data removal follows the documented retirement policy. Returns the tenant record in its post-transition state.

# paths./tenants/{tenantId}/suspend.post.description
Suspends a tenant: read and write access is blocked while data and configuration are retained so the tenant can be resumed to its prior state. Takes no request body. An invalid state transition is rejected as a conflict.

# paths./tenants/{tenantId}/resume.post.description
Resumes a suspended tenant, restoring read and write access. Takes no request body. An invalid state transition (for example resuming a deleted tenant) is rejected as a conflict.

# paths./oidc/providers.get.description
Lists stored OIDC identity-provider registrations. Client secrets are never returned.

# paths./oidc/providers.post.description
Registers a new OIDC identity provider. The client secret is stored server-side and is not echoed back in the response.

# paths./oidc/providers.post.responses.201.headers.Location.description
Absolute path of the created provider resource.

# paths./oidc/providers/{id}.get.description
Returns a single stored OIDC provider registration. Client secrets are never returned.

# paths./oidc/providers/{id}.put.description
Updates a stored OIDC provider registration. Omitted (null) fields keep their current value. The provider type is immutable and is not read from the request body. A supplied client secret replaces the stored secret and is not echoed back.

# paths./oidc/providers/{id}.delete.description
Removes a stored OIDC provider registration.

# paths./oidc/providers/{id}.delete.responses.200.description
OIDC provider deleted successfully. The envelope carries only a confirmation message.

# paths./oidc/providers/{id}/test.post.description
Runs a connectivity test against a stored OIDC provider and returns whether it is reachable together with a status message and the time of the test. Takes no request body.

# paths./oidc/providers/{id}/test.post.responses.200.description
Connectivity test completed. A failed reachability check is reported inside the payload, not as an HTTP error.

# paths./identity/providers.get.description
Returns the configuration-driven identity providers known to the running server (the OIDC options catalogue), including whether OIDC is globally enabled and whether each provider's configuration is valid. This is the configuration view; `/oidc/providers` is the stored-registration view.

# paths./identity/providers/{providerType}/test.get.description
Fetches the provider's OpenID Connect discovery document (`{authority}/.well-known/openid-configuration`) with a 5 second timeout and reports reachability, elapsed time, and the discovered issuer. The authority is SSRF-validated before the request is made. Unknown providers, blocked authorities, timeouts, and transport failures are all reported inside the payload with `isReachable: false` and an error message rather than as an HTTP error status.

# paths./identity/providers/{providerType}/test.get.parameters[].description
Configured provider type key (for example `azuread`, `google`, or `generic`).

# paths./identity/providers/{providerType}/test.get.responses.200.description
Connectivity test completed. Inspect `data.isReachable` and `data.errorMessage` for the outcome.

# paths./oauth-clients.get.description
Lists registered OAuth2 client applications. Only the non-secret secret prefix is returned; plaintext client secrets are never listed.

# paths./oauth-clients.post.description
Registers a first-class OAuth2 client. For a confidential client the plaintext `clientSecret` is returned once in this response and cannot be retrieved again; for a public client it is null. Scope narrowing is enforced server-side, so a minted token never carries a scope outside `allowedScopes`.

# paths./oauth-clients.post.responses.201.description
OAuth client registered successfully. Store the returned plaintext secret securely; it is not recoverable.

# paths./oauth-clients.post.responses.201.headers.Location.description
Absolute path of the created client registration resource.

# paths./oauth-clients/{id}.get.description
Returns a single OAuth2 client registration. No secret material is included.

# paths./oauth-clients/{id}.get.parameters[].description
Client registration identifier (not the OAuth2 `client_id`).

# paths./oauth-clients/{id}.delete.description
Deletes an OAuth2 client registration and returns the record as it was at deletion time. No secret material is included.

# paths./oauth-clients/{id}.delete.parameters[].description
Client registration identifier (not the OAuth2 `client_id`).

# paths./oauth-clients/{id}.delete.responses.200.description
OAuth client deleted successfully; the deleted registration is returned.

# paths./oauth-scopes.get.description
Lists the OAuth2 scope catalogue and the RBAC permissions each scope grants when it appears in a token.

# paths./oauth-scopes.put.description
Defines a scope or replaces an existing definition with the same name, including its scope-to-permission mapping. Returns the stored definition.

# paths./oauth-scopes/{scope}.delete.description
Removes a scope from the catalogue and returns the definition that was removed.

# paths./oauth-scopes/{scope}.delete.parameters[].description
Canonical scope name, for example `features:read`.

# paths./oauth-scopes/{scope}.delete.responses.200.description
Scope deleted successfully; the removed definition is returned.

# paths./auth/session.get.description
Returns the server-projected authentication state for the caller's admin session cookie. Requires no API key or bearer token; the session cookie is the credential. When the cookie is missing, expired, or no longer backed by an authenticated principal, the cookie is cleared and an unauthenticated payload (`isAuthenticated: false`) is returned with HTTP 200 rather than a 401. The response is not wrapped in the standard admin envelope.

# paths./auth/session.get.responses.200.description
Current admin session state, authenticated or not.

# paths./auth/bearer.post.description
Mints a short-lived, forwardable operator bearer for the console from a live authenticated admin session cookie. The bearer carries the session's claims, so it resolves to the same RBAC as the cookie session, and its expiry is clamped to the session's expiry. Takes no request body. Fails closed: without a live session the cookie is cleared and 401 is returned.

# paths./auth/bearer.post.responses.200.description
Operator bearer issued. The response is not wrapped in the standard admin envelope.

# paths./auth/bearer.post.responses.401.description
No live authenticated admin session; the session cookie is cleared.

# paths./auth/bearer.post.responses.503.description
Operator bearer issuance is not configured on this server.

# paths./auth/logout.post.description
Terminates the caller's admin session: the stored session is removed and both the authenticated-session and pending-session cookies are cleared. Takes no request body. When the ended session maps to a configured provider that advertises an `end_session_endpoint`, the response carries the provider logout URL (including `post_logout_redirect_uri` and, when available, `id_token_hint`) so the client can complete single logout; otherwise `logoutUrl` is null.

# paths./auth/logout.post.responses.200.description
Session terminated. `logoutUrl` is null when no provider end-session endpoint is available. The response is not wrapped in the standard admin envelope.

# paths./auth/logout.post.responses.503.description
`Public:BaseUrl` is not configured outside development and test environments, so a post-logout redirect URI cannot be built.

# paths./auth/providers/{providerKey}/authorize-url.post.description
Starts the backend-assisted admin OIDC login. The server reads the provider's discovery document, generates the `state` and a PKCE (S256) verifier/challenge pair, stores them in a pending session (15 minute lifetime) referenced by an HttpOnly cookie, drops any existing authenticated session, and returns the fully-built provider authorization URL. Client secrets and connection details stay server-side. Rate limited to 5 requests per minute. The request body is a placeholder object; send `{}`.

# paths./auth/providers/{providerKey}/authorize-url.post.parameters[].description
Configured provider key as returned by `GET /auth/config` (for example `azuread`, `google`, or `oidc`).

# paths./auth/providers/{providerKey}/authorize-url.post.responses.200.description
Authorization URL created; a pending-session cookie is set. The response is not wrapped in the standard admin envelope.

# paths./auth/providers/{providerKey}/authorize-url.post.responses.404.description
The identity provider key is not configured.

# paths./auth/providers/{providerKey}/authorize-url.post.responses.503.description
The identity provider is temporarily unavailable (discovery failed or advertises no authorization endpoint), or `Public:BaseUrl` is not configured outside development and test environments.

# paths./auth/providers/{providerKey}/token.post.description
Completes the backend-assisted admin OIDC login. Only the `authorization_code` grant is accepted. The server matches the supplied `state` against the pending-session cookie, exchanges the code with the provider using the stored PKCE verifier, validates the returned ID token (signature against the provider JWKS, issuer, audience, and lifetime), projects the claims into a server-side session, and sets the authenticated-session cookie. Tokens are never returned to the client: on success the response is 204 with no body. The session lifetime is clamped to the earlier of the provider's `expires_in` and the ID token `exp`. Rate limited to 5 requests per minute.

# paths./auth/providers/{providerKey}/token.post.parameters[].description
Configured provider key used to start the flow.

# paths./auth/providers/{providerKey}/token.post.responses.204.description
Authentication succeeded. The authenticated-session cookie is set and the pending-session cookie is cleared. No response body is returned.

# paths./auth/providers/{providerKey}/token.post.responses.400.description
The grant type is not `authorization_code`, the code or state is missing or too long, the pending authorization session is invalid or expired, or the provider rejected the code exchange.

# paths./auth/providers/{providerKey}/token.post.responses.404.description
The identity provider key is not configured.

# paths./auth/providers/{providerKey}/token.post.responses.503.description
The identity provider is temporarily unavailable (discovery failed, no token endpoint, empty token response, or the ID token could not be validated and projected), or `Public:BaseUrl` is not configured outside development and test environments.

# paths./auth/providers/{providerKey}/logout-url.get.description
Builds the provider single-logout URL for a configured provider without terminating the local session. The server reads the provider's discovery document and, when an `end_session_endpoint` is advertised, returns it with `post_logout_redirect_uri` and the supplied `idTokenHint`; otherwise `logoutUrl` is null. Discovery failures also yield a null `logoutUrl` rather than an error.

# paths./auth/providers/{providerKey}/logout-url.get.parameters[].description
Optional ID token passed through to the provider as `id_token_hint`.

# paths./auth/providers/{providerKey}/logout-url.get.responses.200.description
Logout URL resolved, or null when the provider advertises no end-session endpoint. The response is not wrapped in the standard admin envelope.

# paths./auth/providers/{providerKey}/logout-url.get.responses.404.description
The identity provider key is not configured.

# paths./auth/providers/{providerKey}/logout-url.get.responses.503.description
`Public:BaseUrl` is not configured outside development and test environments, so a post-logout redirect URI cannot be built.

# paths./configuration/discover.get.description
Runs a full configuration discovery sweep and returns the complete result: existing documentation, every discovered options type with its property metadata and current values, extracted metadata, auto-generated documentation, secret-reference validation, and audit information. The payload is returned raw (no `success`/`data` envelope).

# paths./configuration/metadata.get.description
Returns the per-section metadata summary slice of the configuration discovery result (property counts, secret/required counts, validation and DI registration flags). Returned as a bare array.

# paths./configuration/metadata.get.responses.200.description
Configuration metadata entries, one per discovered options type.

# paths./configuration/auto-documentation.get.description
Returns the auto-generated documentation slice of the configuration discovery result: one section per discovered options type, each listing its properties with type, description, default, required/secret flags, environment variable name, and validation summary. Returned as a bare array.

# paths./configuration/secrets/validate.get.description
Returns the secret-reference validation slice of the configuration discovery result: total/valid/invalid secret counts plus one issue entry per problem found. Secret values themselves are never returned.

# paths./configuration/audit.get.description
Returns the audit slice of the configuration discovery result: environment name, machine name, application name, content root, per-source configuration key counts, and the total configuration key count.

# paths./configuration/summary.get.description
Returns a rolled-up dashboard summary computed from a configuration discovery sweep: type/property/secret counts, secret validity counts, environment, discovery duration, and the discovery timestamp.

# paths./rate-limits.get.description
Lists every configured rate limit policy. The app-level rate limiter is opt-in (`RateLimiting:Enabled`, off by default); policies can be managed regardless of whether enforcement is currently active.

# paths./rate-limits.post.description
Creates a rate limit policy bound to a scope/key pair. `scope` must be one of `plan`, `tenant`, `api-key`, or `endpoint`; an unknown scope or a data-annotation validation failure returns 400. On success a `Location` header points at the created policy.

# paths./rate-limits/status.get.description
Returns the live window status (consumed, remaining, reset time) for a rate-limited key. A missing or blank `key` returns 400; a key with no matching policy returns 404.

# paths./rate-limits/status.get.parameters[].description
The rate-limited key to inspect (the value the policy is bound to).

# paths./rate-limits/status.get.responses.200.description
Current rate limit window status for the key.

# paths./rate-limits/{id}.get.description
Returns a single rate limit policy by identifier.

# paths./rate-limits/{id}.put.description
Partially updates a rate limit policy. Omitted fields keep their existing values. `scope` and `key` are immutable and are always carried over from the stored policy.

# paths./rate-limits/{id}.delete.description
Deletes a rate limit policy. The success envelope carries a message and a null `data`.

# paths./tile-operations/jobs.get.description
Lists tile operation jobs. By default only active (queued/processing) jobs are returned; pass `activeOnly=false` to include completed, failed, and cancelled jobs. Response property names are PascalCase.

# paths./tile-operations/jobs.get.parameters[].description
When true (the default) only active jobs are returned.

# paths./tile-operations/jobs.post.description
Queues a tile operation for asynchronous execution and returns 202 with the job id and status/cancel URLs. `operation` is required; `seed`/`warm` require `layerId` or `serviceId`; `archive` and `publish` require `layerId`; `bbox`, when supplied, must contain exactly four values `[minLon, minLat, maxLon, maxLat]` and `minZoom` must not exceed `maxZoom`. When a batch tile-cache backend is configured the job is submitted through the execution-job/batch path, otherwise through the in-process worker. Response property names are PascalCase.

# paths./tile-operations/jobs/{jobId}.get.description
Returns progress and status details for a tile operation job. Response property names are PascalCase and `Status` is the numeric `OperationStatus` value.

# paths./tile-operations/jobs/{jobId}/cancel.post.description
Requests cancellation of a queued or running tile operation job. Cancellation is routed through the batch service first when a batch backend is enabled, then falls back to the in-process token signal. A job that cannot be cancelled in its current state returns 400; an unknown job returns 404. No request body is required.

# paths./tile-operations/jobs/{jobId}/retry.post.description
Queues a retry of a failed or cancelled tile operation job and returns 202 with the new job id. If the job does not exist or is not in a retryable state the handler returns 400 (it does not distinguish an unknown job with a 404). No request body is required.

# paths./tile-operations/jobs/{jobId}/retry.post.parameters[].description
Identifier of the failed or cancelled job to retry.

# paths./tile-operations/evict.post.description
Runs a synchronous size-quota / LRU eviction sweep over the live Redis tile-key index, dropping least-recently-used tiles above the configured `TileOptions:Eviction` quota. When eviction is disabled or no live tile-key index is available the sweep is a no-op that returns 200 with `Enabled=false` and zero counts. No request body is required.

# paths./tile-operations/cache/inventory.get.description
Returns tracked generated-tile counts, bytes, and per-zoom coverage. Optional service and gridset filters bound the inventory without scanning object storage.

# paths./tile-operations/cache/inventory.get.parameters[].description
Service whose published layers scope the inventory.

# paths./tile-operations/cache/inventory.get.parameters[].description
Tile matrix set identifier used to scope the inventory.

# paths./tile-operations/cache/inventory.get.responses.503.description
The generated tile-cache index is unavailable.

# paths./connections/{id}/tables/validate.post.description
Runs pre-publish validation of a source table on the given secure connection without publishing anything. Returns the resolved geometry column/type, primary key, object-id strategy, source/service/target SRIDs, row and geometry-quality counts, the discovered field list, and one entry per validation check with a `pass`/`warning`/`error` severity.

# paths./connections/{id}/tables/validate.post.parameters[].description
Secure connection identifier (GUID) or configured connection name.

# paths./connections/{id}/layers/extents/refresh.post.description
Recomputes catalog extents for every published layer in a service on the given connection, then invalidates the affected service/layer catalog cache entries. The handler runs pending database migrations first; a failed migration returns 400. The operator approval gate is evaluated before any work (denial returns 401 or 403). No request body is required.

# paths./connections/{id}/layers/extents/refresh.post.parameters[].description
Secure connection identifier (GUID) or configured connection name.

# paths./connections/{id}/layers/extents/refresh.post.parameters[].description
Service whose layer extents are refreshed. Defaults to `default`.

# paths./connections/{id}/layers/{layerId}/features/refresh.post.description
Rebuilds a published layer's canonical feature snapshot (`honua.features`) from its live source table, so server-side tile/MVT reads stay consistent after the source is re-imported or updated. The handler runs pending database migrations first; a failed migration returns 400. The operator approval gate is evaluated before any work (denial returns 401 or 403). No request body is required.

# paths./connections/{id}/layers/{layerId}/features/refresh.post.parameters[].description
Secure connection identifier (GUID) or configured connection name.

# paths./field-mask-policies.get.description
Lists every field-level security (column masking) policy. A policy attaches a masked attribute to a (role, service, layer) scope; the attribute is dropped from query output for the matching role at the shared projection seam.

# paths./field-mask-policies.post.description
Creates a field-mask policy. `role`, `service`, and `layer` accept `*` as an any-value wildcard. A duplicate (role, service, layer, attribute) scope violates the store's unique constraint and returns 400. On success a `Location` header points at the created policy.

# paths./field-mask-policies/{id}.get.description
Returns a single field-mask policy by identifier.

# paths./field-mask-policies/{id}.delete.description
Deletes a field-mask policy. The success envelope carries a message and a null `data`.

# paths./rls-policies.get.description
Lists every row-level security policy. A policy constrains a layer attribute by the caller's claim values for a (role, service, layer) scope.

# paths./rls-policies.post.description
Creates a row-level security policy. `role`, `service`, and `layer` accept `*` as an any-value wildcard. `comparison` is optional and accepts `in` (default), `equals`, `eq`, or `=`; anything else returns 400. A duplicate scope violates the store's unique constraint and also returns 400. On success a `Location` header points at the created policy.

# paths./rls-policies/{id}.get.description
Returns a single row-level security policy by identifier.

# paths./rls-policies/{id}.delete.description
Deletes a row-level security policy. The success envelope carries a message and a null `data`.

# paths./federation/sources.get.description
Lists the configured federated query sources (cross-instance Honua gRPC, Esri REST, and OGC WFS proxies). Transport credentials are never included. Returned as a bare array.

# paths./federation/sources/{id}/plan.get.description
Runs the offline federation query planner against a sample query and reports, per predicate family, whether it pushes down to the remote source or is refined locally. The remote source is never contacted. An unknown source id responds 404 with an empty body.

# paths./federation/sources/{id}/plan.get.parameters[].description
Sample attribute filter expression to plan for.

# paths./federation/sources/{id}/plan.get.parameters[].description
When true, include a sample envelope-intersects spatial predicate in the planned query.

# paths./federation/sources/{id}/plan.get.parameters[].description
When true, plan the query as a join against a local PostGIS layer.

# paths./federation/sources/{id}/plan.get.responses.200.description
Push-down versus local-refinement plan for the sample query.

# paths./federation/sources/{id}/plan.get.responses.404.description
No federated source is configured with the supplied id. The response body is empty.

# paths./geocoding/providers.get.description
Returns every registered geocoding provider with its live health check result and declared capabilities (forward/reverse/suggest/batch support, max results per request, rate limit, authentication requirement).

# paths./geocoding/providers.get.responses.200.description
Registered geocoding providers with health and capabilities.

# paths./geocoding/reference-data/import.post.description
Imports a CSV of reference records into the local PostGIS geocoder. The request must be `multipart/form-data` with a non-empty `referenceData` CSV file (256 MiB maximum). Once imported, and with the `local` provider enabled, the records are served through the standard GeocodeServer operations. A missing/invalid file, an unsupported `mode`, or a malformed `fieldMap` returns 400; an over-limit upload returns 413; a reference-store failure returns 503.

# paths./geocoding/reference-data/import.post.requestBody.content.multipart/form-data.schema.properties.referenceData.description
Reference data CSV with a header row. Must have a `.csv` extension and be at most 268435456 bytes.

# paths./geocoding/reference-data/import.post.requestBody.content.multipart/form-data.schema.properties.mode.description
Import mode. Anything other than `append` replaces the existing reference data; omitted defaults to replace.

# paths./geocoding/reference-data/import.post.requestBody.content.multipart/form-data.schema.properties.fieldMap.description
JSON object mapping reference roles to CSV column names, supplied as a form field.

# paths./geocoding/reference-data/import.post.requestBody.content.multipart/form-data.schema.properties.locatorName.description
Optional locator (geocode service) name the imported reference data is served under.

# paths./geocoding/reference-data/import.post.responses.413.description
The uploaded reference data CSV exceeds the 256 MiB limit.

# paths./geocoding/reference-data/import.post.responses.503.description
The geocoder reference store is unavailable or incompatible; the import was not applied.

# paths./license/capacity.get.description
Returns the current license capacity meter state: band state, licensed capacity terms, current and rolling p95 serving units, burst ceiling and multiplier, sustained-growth grace clock, enforcement/Redis-coordination flags, local instance role and topology, live/production/excluded instance counts, surge state, warning thresholds, and operator-facing messages.

# paths./license/capacity/surge.post.description
Declares or clears operator surge mode on the license capacity meter and returns the recomputed capacity state. While surge mode is active, p95 samples are masked and surge days are drawn from the annual allowance. A missing request body returns 400.

# paths./license/capacity/surge.post.responses.200.description
Capacity state after applying the surge declaration.

# paths./external-services/discover.post.description
Probes an external ArcGIS (FeatureServer/MapServer, catalog root, or folder) or OGC API service and returns the discovered service metadata and selectable layer/table candidates for import planning. Supplied credentials are used transiently for the discovery request only and are never persisted. A missing/invalid body or an unusable URL returns 400; an unreachable service, an unsupported remote response, a remote error, or a discovery timeout returns 502.

# paths./external-services/discover.post.responses.200.description
Discovered external service and layer candidates.

# paths./external-services/discover.post.responses.502.description
The external service could not be reached, timed out, or returned an unsupported/error response.

# paths./platform-release/converge.post.description
Converges every configured serving deploy target onto the declared platform-release serving artifact. Co-versioning is validated first: an undeclared or invalid `ControlPlane:PlatformRelease` returns 400. Each target is classified as `already-converged` (last-applied revision matches; never actuated), `skipped-pinned` (config pins a different artifact, which cannot be cleared at runtime), `operation-created`, `unknown-treated-divergent`, or `blocked`. Deploys are routed through the guardrail gateway, so a target may yield a proposal id instead of an operation id. Geoprocessing worker images are deliberately not deployed here. When durable control-plane storage is not configured the gateway is absent and the call returns 503.

# paths./platform-release/converge.post.responses.200.description
Converge outcome per serving deploy target.

# paths./platform-release/converge.post.responses.503.description
Deploy control is unavailable because durable control-plane storage is not configured.

# paths./streaming/conformance/reset.post.description
Drops every controlled-conformance run lease and deletes every record those runs own, returning the dedicated conformance source to its immutable baseline. Records that carry no conformance ownership marker are never touched. Returns 403 when the deployment provisions no conformance source and 503 when the configured source cannot be resolved as a writable layer.

# paths./streaming/conformance/reset.post.responses.200.description
The conformance source was reset to its immutable baseline.

# paths./streaming/conformance/reset.post.responses.503.description
The configured controlled-conformance source could not be resolved as a writable layer.

# components.securitySchemes.ApiKeyAuth.description
API Key authentication for admin operations. Evaluated when Bearer is not selected.

# components.securitySchemes.BearerAuth.description
OAuth2/OIDC bearer token authentication. If a Bearer header is present and OIDC is enabled, Bearer takes precedence over API key fallback.

# components.securitySchemes.BasicAuth.description
Optional HTTP Basic compatibility mode for legacy clients (requires HTTPS in production). Basic is used only when compatibility mode is enabled and API key auth did not succeed.

# components.parameters.ConsoleJobCursor.description
Opaque cursor returned by a previous page.

# components.parameters.AdminAuthoringLayerId.description
Global numeric layer identifier. The route is constrained to an int, so a non-integer segment does not match the route at all.

# components.parameters.AdminProposalId.description
Operation proposal identifier (opaque string).

# components.responses.Conflict.description
Conflict - resource state prevents the requested operation

# components.schemas.ToolboxTranslationManifest.description
SDK-translated toolbox manifest submitted for validation against the canonical process catalog. Produced by the honua-migrate toolbox translation CLI; the server never parses a proprietary binary toolbox itself.

# components.schemas.ToolboxTranslationManifest.properties.artifactKind.description
Artifact identity. May be omitted, in which case the v1 manifest contract is assumed, but an explicit value that does not match is rejected rather than reinterpreted.

# components.schemas.ToolboxTranslationManifest.properties.sourceFormat.description
Source toolbox format the manifest was translated from.

# components.schemas.ToolboxTranslationManifest.properties.sourceLabel.description
Optional human-readable label for the source artifact.

# components.schemas.ToolboxTranslationManifest.properties.tools.description
Tools to validate, at least one and at most 200. Tool names must be unique, compared case-insensitively.

# components.schemas.ToolboxToolDescriptor.properties.toolName.description
Source tool name. Must be unique within the manifest.

# components.schemas.ToolboxToolDescriptor.properties.targetProcessId.description
Proposed canonical process identifier this tool maps to.

# components.schemas.ToolboxToolDescriptor.properties.unsupportedConstructs.description
Constructs the translator already knows it cannot represent.

# components.schemas.ToolboxTranslationReport.description
Validation outcome for a submitted toolbox manifest. Advisory only: it classifies translatability and does not create or run anything.

# components.schemas.ToolboxTranslationReport.properties.sourceFormat.description
Source format echoed from the manifest, normalized to lower case.

# components.schemas.ToolboxTranslationSummary.properties.translatedCount.description
Tools whose full parameter signature round-trips onto a native process.

# components.schemas.ToolboxTranslationSummary.properties.partiallyTranslatedCount.description
Tools that resolve to a native process but carry unsupported parameters or constructs.

# components.schemas.ToolboxTranslationSummary.properties.unsupportedCount.description
Tools with no executable native mapping.

# components.schemas.ToolboxToolTranslation.properties.processId.description
Canonical process the tool resolves to, when the proposed target exists in the catalog. Populated for diagnostic value even when the tool is classified unsupported; null when no catalog process resolves.

# components.schemas.ToolboxToolTranslation.properties.parameterBindings.description
Round-tripped canonical signature for every valid mapping.

# components.schemas.ToolboxToolTranslation.properties.issues.description
Explicit unsupported-report entries. Empty only for fully translated tools.

# components.schemas.ToolboxParameterBinding.properties.targetParameter.description
Canonical process parameter name, in catalog casing.

# components.schemas.ToolboxParameterBinding.properties.valueType.description
Canonical parameter value type name, for example Wkb, Srid, or FloatingPoint.

# components.schemas.ToolboxParameterBinding.properties.required.description
Whether the canonical parameter is required.

# components.schemas.ToolboxTranslationIssue.properties.message.description
Human-readable explanation of why the construct cannot be translated.

# components.schemas.ToolboxTranslationIssue.properties.parameterName.description
Parameter the issue applies to, when parameter-scoped.

# components.schemas.ImportFileFromUrlRequest.properties.fileName.description
Optional filename hint when the URL path does not contain a usable extension.

# components.schemas.AlertZoneRequest.properties.wkt.description
Optional Polygon or MultiPolygon WKT. Polygon inputs are normalized to MultiPolygon WKT in responses.

# components.schemas.AlertZoneRequest.properties.srid.description
Spatial reference identifier for the supplied WKT. Defaults to EPSG:4326.

# components.schemas.AlertZoneRequest.properties.isActive.description
Whether the zone is active for rule evaluation.

# components.schemas.AlertZoneResponse.properties.wkt.description
Zone geometry as WKT, normalized to MultiPolygon when geometry is present.

# components.schemas.AlertZoneResponse.properties.srid.description
Spatial reference identifier for the zone geometry.

# components.schemas.AlertZoneResponse.properties.isActive.description
Whether the zone is active for rule evaluation.

# components.schemas.AlertRuleRequest.properties.serviceId.description
Service identifier targeted by the rule.

# components.schemas.AlertRuleRequest.properties.zoneId.description
Required for persisted enter, exit, and dwell rules. Must be omitted for threshold rules.

# components.schemas.AlertRuleRequest.properties.triggerType.description
Trigger type evaluated by the alert worker.

# components.schemas.AlertRuleRequest.properties.conditionsJson.description
Rule conditions serialized as a JSON object string. Dwell requires positive dwellSeconds; threshold requires field, operator, and numeric value.

# components.schemas.AlertRuleRequest.properties.cooldownSeconds.description
Cooldown in seconds between alerts for the same feature.

# components.schemas.AlertRuleRequest.properties.channels.description
Delivery channel names. May be omitted or empty when no external dispatch sink should be used. Responses always use canonical snake-case names.

# components.schemas.AlertRuleRequest.properties.isActive.description
Whether the rule is active for evaluation.

# components.schemas.AlertRuleResponse.properties.conditionsJson.description
Rule conditions serialized as a JSON object string.

# components.schemas.AlertRuleTestRequest.properties.zone.description
Optional draft zone used to validate enter, exit, and dwell geofence rules without persisting the zone. The draft zone serviceId must match the rule serviceId; if both zone and zoneId are supplied, validation uses the draft zone geometry and returns a warning.

# components.schemas.AlertRuleTestResponse.properties.isValid.description
Whether the draft can be persisted safely.

# components.schemas.AlertChannelValidationResponse.properties.isAllowed.description
Whether the current edition allows the channel.

# components.schemas.AlertChannelValidationResponse.properties.isConfigured.description
Whether server configuration can deliver the channel.

# components.schemas.AlertRuleHealthResponse.properties.lastEvaluatedAt.description
Most recent evaluator state update for this rule, when available.

# components.schemas.AlertRuleHealthResponse.properties.lastTriggeredAt.description
Most recent alert event emitted for this rule, when available.

# components.schemas.AlertRuleHealthResponse.properties.activeIncidentCount.description
Count of current evaluator state rows that represent active incidents. Enter and dwell rules count features currently inside the zone; threshold rules count currently breached threshold state; exit transition events do not keep an active incident open after the feature has left.

# components.schemas.AlertRuleHealthResponse.properties.recentTriggerCount.description
Count of alert events for this rule in the previous 24 hours.

# components.schemas.AlertRuleHealthResponse.properties.coolingDownFeatureCount.description
Count of evaluator state rows currently inside their cooldown window.

# components.schemas.AlertRuleHealthResponse.properties.nextCooldownExpiresAt.description
Latest cooldown expiry across currently cooling down feature states.

# components.schemas.AlertRuleHealthResponse.properties.deliveryFailureCount.description
Count of retryable delivery failures for this rule.

# components.schemas.AlertRuleHealthResponse.properties.deadLetterCount.description
Count of dead-lettered delivery rows for this rule.

# components.schemas.AlertRuleHealthResponse.properties.linkedEventIds.description
Newest-first recent event identifiers linked to this rule, capped by the server at 10 entries.

# components.schemas.AlertRuleHealthResponse.properties.recentTriggers.description
Newest-first recent trigger summaries, capped by the server at 10 entries.

# components.schemas.AlertRuleDeliveryHealthResponse.properties.status.description
Channel health status. Policy and configuration states take precedence; rate_limited and failing reflect recent delivery errors.

# components.schemas.AlertRuleDeliveryHealthResponse.properties.lastError.description
Most recent sanitized delivery error summary. Raw provider error text is not returned.

# components.schemas.AlertRuleRecentTriggerResponse.properties.resourceRef.description
Operate event resource reference, formatted as alert/{eventId}.

# components.schemas.AdminCapabilitiesResponse.properties.manifestSupported.description
Whether metadata manifest export and apply are supported

# components.schemas.AdminCapabilitiesResponse.properties.manifestDryRunSupported.description
Whether manifest apply dry-run is supported

# components.schemas.AdminCapabilitiesResponse.properties.manifestPruneSupported.description
Whether manifest apply prune is supported

# components.schemas.AdminCompatibilityMetadata.properties.serverVersion.description
Server version reported by the runtime build

# components.schemas.AdminCompatibilityMetadata.properties.releaseChannel.description
Release channel derived from build metadata

# components.schemas.AdminCompatibilityMetadata.properties.metadataSchemas.description
Supported metadata schema versions and their deprecation markers

# components.schemas.AdminControlPlaneApiCompatibility.properties.basePath.description
Versioned base path for the control-plane API major

# components.schemas.AdminControlPlaneApiCompatibility.properties.deprecated.description
Whether the control-plane API major is deprecated

# components.schemas.AdminMetadataSchemaCompatibility.properties.deprecated.description
Whether the metadata schema version is deprecated

# components.schemas.AdminCompatibilityFeatureFlags.properties.metadataResources.description
Whether metadata resource CRUD endpoints are supported

# components.schemas.AdminCompatibilityFeatureFlags.properties.manifestDryRun.description
Whether manifest apply dry runs are supported

# components.schemas.AdminCompatibilityFeatureFlags.properties.manifestPrune.description
Whether manifest apply prune is supported

# components.schemas.ConsoleJobSummary.properties.queue.description
Resolved queue/routing lane: honua.job.queue when present, otherwise backend.

# components.schemas.ConsoleJobActionDescriptor.properties.disabledReason.description
Operator-facing reason when the advertised action is currently disabled, such as execute permission required, job queue unavailable, job backend unavailable, job backend retry capability unavailable, job backend does not support retry, retry budget exhausted, or not retryable.

# components.schemas.CreateConnectionRequest.description
Provide either password or secretReference/secretType. Do not provide both.

# components.schemas.CreateConnectionRequest.properties.password.description
Database password (managed encrypted storage)

# components.schemas.CreateConnectionRequest.properties.secretType.description
Secret provider type (required with secretReference)

# components.schemas.ConnectionTestResponse.properties.connectionId.description
Tested connection ID (empty UUID for draft tests)

# components.schemas.PublishedLayerSummary.properties.license.description
SPDX license expression or proprietary, when authored

# components.schemas.PublishedLayerSummary.properties.publisher.description
Data producer or source organization, when authored

# components.schemas.PublishedLayerSummary.properties.licenseUrl.description
Absolute license documentation URL, when authored

# components.schemas.PublishedLayerSummary.properties.sourceUrl.description
Absolute source documentation URL, when authored

# components.schemas.PublishLayerRequest.properties.license.description
Optional SPDX license expression or the literal proprietary

# components.schemas.PublishLayerRequest.properties.publisher.description
Optional data producer or source organization

# components.schemas.PublishLayerRequest.properties.licenseUrl.description
Optional absolute HTTP(S) URL for license documentation

# components.schemas.PublishLayerRequest.properties.sourceUrl.description
Optional absolute HTTP(S) URL for source documentation

# components.schemas.PublishLayerRequest.properties.fields.description
Subset of fields to publish (empty publishes all)

# components.schemas.PublishLayerRequest.properties.serviceName.description
Target service name (defaults to default)

# components.schemas.UpdateLayerStyleRequest.properties.changedBy.description
Optional author or source identifier captured for the new revision.

# components.schemas.UpdateLayerStyleRequest.properties.changeSummary.description
Optional operator-supplied description of the change. Longer than 1000 characters returns 400.

# components.schemas.DeployPreflightResponse.properties.status.description
Top-level coordinated deployment status for this instance

# components.schemas.DeployPreflightResponse.properties.readyForCoordinatedDeploy.description
Whether the instance is ready to participate in a coordinated rollout

# components.schemas.DeployPreflightResponse.properties.message.description
Operator-facing summary for the current preflight result

# components.schemas.DeployPreflightResponse.properties.serverVersion.description
Current Honua server version. Only present when includeDiagnostics=true.

# components.schemas.DeployPreflightResponse.properties.environment.description
Current ASP.NET host environment. Only present when includeDiagnostics=true.

# components.schemas.DeployPreflightResponse.properties.deploymentMode.description
Configured Honua deployment mode. Only present when includeDiagnostics=true.

# components.schemas.DeployPreflightResponse.properties.instanceName.description
Machine or instance name serving the request. Only present when includeDiagnostics=true.

# components.schemas.DeployPreflightResponse.properties.generatedAt.description
Timestamp when the payload was generated

# components.schemas.DeployPreflightDatabaseCompatibility.properties.isCompatible.description
Whether the database meets Honua compatibility requirements

# components.schemas.DeployPreflightDatabaseCompatibility.properties.postGisRasterVersion.description
PostGIS raster extension version, if installed

# components.schemas.DeployPreflightDatabaseCompatibility.properties.warnings.description
Non-fatal warnings from the compatibility check

# components.schemas.DeployPreflightDatabaseCompatibility.properties.errorMessage.description
Error message when the compatibility check determined incompatibility

# components.schemas.DeployPreflightReadiness.properties.isReady.description
Whether the instance is currently ready to accept traffic

# components.schemas.DeployPreflightReadiness.properties.statusCode.description
HTTP status code that would be returned by the readiness endpoint

# components.schemas.DeployPreflightMigration.properties.lifecycleStatus.description
Current migration lifecycle status observed by this instance

# components.schemas.DeployPreflightMigration.properties.upgradeRequired.description
Whether pending migration scripts were detected

# components.schemas.DeployPreflightMigration.properties.pendingScripts.description
Migration scripts that would execute if upgrades were applied now

# components.schemas.DeployPreflightMigration.properties.executedButNotDiscoveredScripts.description
Scripts previously executed against the database but no longer discovered by the current binary

# components.schemas.DeployPreflightMigration.properties.planError.description
Error detail when migration planning could not be completed

# components.schemas.MigrationInventoryScanRequest.properties.sourceKind.description
Source kind alias. Accepted values normalize to either geoserver-rest or arcgis-geoservices-rest in the response artifact.

# components.schemas.MigrationInventoryScanRequest.properties.sourceUrl.description
Source URL to scan. GeoServices requires an HTTPS ArcGIS service root ending in FeatureServer or MapServer and rejects layer/table URLs, embedded credentials, plus private, loopback, or unresolvable targets. GeoServer follows the same HTTPS and address-safety rules outside the test-only unsafe local URL mode and also rejects embedded credentials.

# components.schemas.MigrationInventoryScanRequest.properties.username.description
Optional GeoServer basic-auth username. Both username and password are required to send GeoServer basic auth; otherwise the scan proceeds anonymously and records a note. Ignored for GeoServices scans.

# components.schemas.MigrationInventoryScanRequest.properties.password.description
Optional GeoServer basic-auth password. Both username and password are required to send GeoServer basic auth; otherwise the scan proceeds anonymously and records a note. Ignored for GeoServices scans.

# components.schemas.MigrationInventoryScanRequest.properties.timeoutSeconds.description
Optional scan timeout in seconds. Defaults to 120 for GeoServer and 30 for GeoServices.

# components.schemas.MigrationInventoryScanRequest.properties.includeStyleContent.description
GeoServer-only. Fetches SLD documents for deeper classification and external graphic detection without returning raw style documents in the artifact.

# components.schemas.MigrationSourceInventoryArtifact.properties.sourceKind.description
Canonical source kind returned by the scanner.

# components.schemas.MigrationSourceInventoryArtifact.properties.resources.description
Deterministically ordered layers, tables, or layer groups.

# components.schemas.MigrationSourceInventoryArtifact.properties.styles.description
Deterministically ordered GeoServer styles or GeoServices renderers.

# components.schemas.MigrationSourceInventoryArtifact.properties.externalDependencies.description
Deterministically ordered external dependencies with sanitized metadata and normalized external URL addresses.

# components.schemas.MigrationSourceIdentity.properties.serviceType.description
Optional service type or protocol subtype.

# components.schemas.MigrationInventoryAuthPosture.properties.mode.description
Observed authentication posture, for example anonymous, basic, auth-required, anonymous-or-auth-required, or unknown. GeoServer scans without a complete username/password pair remain anonymous and add an explanatory note. GeoServices scans run anonymously today; successful artifacts therefore report anonymous, and failed artifacts can report auth-required or unknown when discovery is blocked.

# components.schemas.MigrationInventoryAuthPosture.properties.credentialsSupplied.description
Whether the scanner had a complete, usable credential set. GeoServer only sets this to true when both username and password were supplied; partial credentials still fall back to anonymous mode and leave this false. GeoServices scans run anonymously today and leave this false.

# components.schemas.MigrationInventoryAuthPosture.properties.accessConfirmed.description
Whether the scan confirmed source access.

# components.schemas.MigrationInventoryAuthPosture.properties.notes.description
Additional posture notes, including anonymous-fallback notes when only one GeoServer credential field was supplied.

# components.schemas.MigrationInventoryCompleteness.properties.status.description
Scan completeness classification. failed can still be returned with HTTP 200 when the scanner produced an artifact but could not complete inventory generation cleanly.

# components.schemas.MigrationInventoryCompleteness.properties.warnings.description
Warnings that affected scan completeness.

# components.schemas.MigrationInventoryCompleteness.properties.missingArtifacts.description
Artifact categories that could not be collected.

# components.schemas.MigrationCompatibilityAssessment.properties.code.description
Optional stable machine-readable compatibility code such as COMPATIBLE, MANUAL_REVIEW, ARCGIS_UNSUPPORTED_RENDERER, or ARCGIS_TOKEN_REQUIRED when the scanner can assign one deterministically. Source-specific codes are namespaced per source kind so downstream automation can branch deterministically. Omitted on aggregate assessments where no single code applies and on source-specific assessments that do not yet define a stable code.

# components.schemas.MigrationCompatibilityAssessment.properties.reason.description
Primary explanation for the assigned compatibility level.

# components.schemas.MigrationCompatibilityAssessment.properties.manualSteps.description
Manual follow-up steps needed for migration.

# components.schemas.MigrationInventoryContainer.properties.kind.description
Container kind such as workspace or service.

# components.schemas.MigrationInventoryContainer.properties.isDefault.description
Whether the container is the source default.

# components.schemas.MigrationInventoryResource.properties.kind.description
Resource kind such as layer, table, or layer-group.

# components.schemas.MigrationInventoryResource.properties.geometryType.description
Reported geometry type when the resource carries geometry.

# components.schemas.MigrationInventoryResource.properties.hasAttachments.description
Whether the resource advertises attachments. Omitted when the source does not report attachment state.

# components.schemas.MigrationInventoryResource.properties.fields.description
Field schema entries surfaced for the resource when the source advertises one. Sorted alphabetically by name to keep artifacts diff-stable.

# components.schemas.MigrationInventoryResource.properties.styleIds.description
Stable IDs linking this resource to entries in styles[].

# components.schemas.MigrationInventoryResource.properties.externalDependencyIds.description
Stable IDs linking this resource to entries in externalDependencies[].

# components.schemas.MigrationInventoryField.properties.alias.description
Source-provided display alias when distinct from the field name.

# components.schemas.MigrationInventoryField.properties.fieldType.description
Source-provided field type token (e.g. esriFieldTypeString).

# components.schemas.MigrationInventoryField.properties.nullable.description
Whether the field is reported nullable. Omitted when the source does not advertise this property (older ArcGIS versions).

# components.schemas.MigrationInventoryField.properties.domainType.description
Domain category such as codedValue or range when a domain is attached.

# components.schemas.MigrationInventoryField.properties.domainValues.description
Coded values for codedValue domains. Bounded; coded-value domains exceeding the cap surface as the ARCGIS_DOMAIN_TRUNCATED warning rather than silent truncation.

# components.schemas.MigrationInventoryCodedValue.properties.code.description
Coded value as advertised by the source.

# components.schemas.MigrationInventoryStyle.properties.resourceIds.description
Stable IDs linking this style or renderer to entries in resources[].

# components.schemas.MigrationInventoryStyle.properties.externalDependencyIds.description
Stable IDs linking this style or renderer to entries in externalDependencies[].

# components.schemas.MigrationInventoryStyle.properties.metadata.description
Deterministic planning metadata for the style or renderer. Does not include raw GeoServer SLD bodies.

# components.schemas.MigrationExternalDependency.properties.resourceId.description
Optional related layer/table identifier or owning style/renderer identifier.

# components.schemas.MigrationExternalDependency.properties.kind.description
Dependency kind such as datastore, coverage-store, attachments, external-graphic, or external-symbol.

# components.schemas.MigrationExternalDependency.properties.address.description
Dependency address or endpoint when available. External URLs omit embedded credentials, query strings, and fragments.

# components.schemas.MigrationExternalDependency.properties.metadata.description
Deterministic dependency metadata with sensitive values redacted when applicable.

# components.schemas.MigrationSpatialReferenceInfo.properties.role.description
Role of this spatial reference entry, for example resource, source, extent, declared, or native.

# components.schemas.MigrationSpatialReferenceInfo.properties.sourceValue.description
Source-provided CRS identifier or text. ArcGIS WKID values remain in source form when the scanner cannot confirm EPSG authority.

# components.schemas.MigrationSpatialReferenceInfo.properties.crsUri.description
Canonical CRS URI when resolved or safely normalized to EPSG.

# components.schemas.SecureConnectionDetail.allOf[].properties.credentialReference.description
Secret manager reference (when using external credentials)

# components.schemas.UpdateConnectionRequest.properties.password.description
New password (re-encrypt managed credentials)

# components.schemas.LayerStylePayload.properties.styleVersion.description
Monotonic style revision counter incremented on every canonical update.

# components.schemas.LayerStylePayload.properties.revisedAt.description
UTC timestamp of the most recent canonical update; null until the first revision.

# components.schemas.LayerStylePayload.properties.revisedBy.description
Author or source identifier captured for the most recent revision.

# components.schemas.LayerStylePayload.properties.changeSummary.description
Operator-supplied description of the most recent revision.

# components.schemas.LayerStylePayload.properties.unsupportedSymbolizers.description
Symbolizers from the submitted payload that the engine could not losslessly translate to canonical MapLibre v8. Empty when the entire payload was supported. Returned on PUT responses; null on GET.

# components.schemas.UnsupportedSymbolizerInfo.description
Describes a single symbolizer input that the style engine could not translate to the canonical MapLibre Style Spec v8 form.

# components.schemas.UnsupportedSymbolizerInfo.properties.symbolizerType.description
Renderer or symbol type as supplied by the caller; empty when the type was missing.

# components.schemas.UnsupportedSymbolizerInfo.properties.guidance.description
Operator-facing guidance on what to do next.

# components.schemas.SldImportResponse.description
Successful SLD import response carrying the stored MapLibre style and conversion diagnostics.

# components.schemas.SldImportResponse.properties.detectedVersion.description
SLD specification version detected during parsing.

# components.schemas.SldImportResponse.properties.layerCount.description
Number of MapLibre layers produced by the conversion.

# components.schemas.SldImportFailureResponse.description
Failure payload for SLD import (422) and SLD export (422). Carries the diagnostic list that explains why the request was refused.

# components.schemas.SldImportFailureResponse.properties.detectedVersion.description
Detected SLD version (when parsing succeeded but conversion failed). Null on the export path.

# components.schemas.SldConversionDiagnostic.properties.severity.description
Warning entries are informational and the import still succeeds. Error entries cause the import or export to fail with 422.

# components.schemas.SldConversionDiagnostic.properties.construct.description
Construct that triggered the diagnostic (e.g. VendorOption, ExternalGraphic, OgcFunction, PropertyIsLike).

# components.schemas.SldConversionDiagnostic.properties.message.description
Human-readable explanation. Never includes raw exception messages or filesystem paths.

# components.schemas.SldConversionDiagnostic.properties.ruleName.description
Optional rule name when the diagnostic was emitted while processing a specific SLD Rule.

# components.schemas.CreateAdminApiKeyRequest.properties.name.description
Human-readable key name used in operator audit and list views.

# components.schemas.CreateAdminApiKeyRequest.properties.permissions.description
Permission labels assigned to the key. Layer-scoped write grants use write:{service} or write:{service}/{layer}.

# components.schemas.AdminApiKeyResponse.properties.keyPrefix.description
Non-secret prefix used to recognize the key.

# components.schemas.AdminApiKeySecretResponse.properties.key.description
Plaintext key material returned only when a key is created or rotated.

# components.schemas.LayerMetadataResponse.properties.license.description
SPDX license expression or proprietary, when authored

# components.schemas.LayerMetadataResponse.properties.publisher.description
Data producer or source organization, when authored

# components.schemas.LayerMetadataResponse.properties.licenseUrl.description
Absolute license documentation URL, when authored

# components.schemas.LayerMetadataResponse.properties.sourceUrl.description
Absolute source documentation URL, when authored

# components.schemas.RasterMosaicResponse.properties.mergeStrategy.description
Canonical merge strategy applied when a layer's mosaic produces overlapping pixels. Always one of the canonical lowercase tokens or null when unset.

# components.schemas.UpdateLayerMetadataRequest.properties.license.description
SPDX license expression or proprietary; null preserves and an empty string clears

# components.schemas.UpdateLayerMetadataRequest.properties.attribution.description
Attribution text; null preserves and an empty string clears

# components.schemas.UpdateLayerMetadataRequest.properties.publisher.description
Publisher text; null preserves and an empty string clears

# components.schemas.UpdateLayerMetadataRequest.properties.licenseUrl.description
License documentation HTTP(S) URL; null preserves and an empty string clears

# components.schemas.UpdateLayerMetadataRequest.properties.sourceUrl.description
Source documentation HTTP(S) URL; null preserves and an empty string clears

# components.schemas.UpdateRasterMosaicRequest.properties.mergeStrategy.description
Merge strategy applied when overlapping rasters mosaic together. Allowed values (case-insensitive): newest, oldest, average, max, min. Stored values are normalized to lowercase. An empty string clears the field. Unknown values are rejected with 400 Bad Request.

# components.schemas.AdminVersionResponse.properties.metadataApiVersion.description
Metadata API version supported by the server

# components.schemas.AdminAuthConfigResponse.properties.oidcEnabled.description
Whether at least one configured OIDC provider is available for admin login.

# components.schemas.AdminAuthConfigResponse.properties.providers.description
Client-safe OIDC provider labels. Authority, tenant, client id, and secrets are never returned.

# components.schemas.AdminAuthProviderInfo.properties.key.description
Provider selection key such as azuread, google, oidc, okta, or auth0.

# components.schemas.AdminAuthProviderInfo.properties.displayName.description
Provider display name shown to operators.

# components.schemas.AdminAuthClientCertificateInfo.properties.environmentId.description
Server environment id used for trust-profile matching.

# components.schemas.AdminAuthClientCertificateInfo.properties.requiredForAdmin.description
Whether configured admin path prefixes require a valid mapped client certificate.

# components.schemas.AdminAuthClientCertificateInfo.properties.requiredForNative.description
Whether configured native gRPC services require a valid mapped client certificate.

# components.schemas.AdminAuthClientCertificateInfo.properties.supportedTransports.description
Transports that can satisfy native client-certificate authentication. Empty when mode is Disabled.

# components.schemas.AdminAuthClientCertificateInfo.properties.acceptedIssuerSubjects.description
Issuer subject hints from enabled profiles for this environment, returned in the canonicalized form (uppercase, no internal whitespace) used for certificate matching.

# components.schemas.AdminAuthClientCertificateInfo.properties.acceptedIssuerThumbprints.description
Issuer thumbprint hints from enabled profiles for this environment, returned in the canonicalized form (uppercase, no internal whitespace) used for certificate matching.

# components.schemas.AdminAuthClientCertificateInfo.properties.expirationWarningThresholdDays.description
Minimum warning threshold across enabled profiles for this environment, or null when none are enabled.

# components.schemas.AdminAuthClientCertificateInfo.properties.forwardedCertificateEnabled.description
Whether trusted forwarded client-certificate headers are enabled.

# components.schemas.UpsertClientCertificateTrustProfileRequest.properties.profileId.description
Optional trust profile id for create requests.

# components.schemas.UpsertClientCertificateTrustProfileRequest.properties.environmentId.description
Honua environment id this profile applies to.

# components.schemas.UpsertClientCertificateTrustProfileRequest.properties.acceptedIssuerThumbprints.description
SHA-1 thumbprints of accepted issuer/CA certificates (leaf thumbprints are not honored). Matching is gated by cryptographic chain build, so the issuing CA must be reachable through the OS trust store or the profile's customTrustAnchorCertificates; a thumbprint that only appears in a forged leaf's attached chain will not match.

# components.schemas.UpsertClientCertificateTrustProfileRequest.properties.requireChainTrust.description
Required to be true when acceptedIssuerSubjects is non-empty; subject-DN matching alone is forgeable, so the chain must be cryptographically verified. Thumbprint and custom-anchor profiles already perform cryptographic chain build during the issuer-hint check; enabling requireChainTrust additionally applies the configured chainRevocationMode (Online/Offline).

# components.schemas.UpsertClientCertificateTrustProfileRequest.properties.customTrustAnchorCertificates.description
Custom trust anchor public certificates as PEM or base64 DER. Private keys are never accepted. The presented chain must build successfully under custom-root trust mode and terminate at one of these anchors; cryptographic chain verification is enforced regardless of requireChainTrust.

# components.schemas.UpsertClientCertificatePrincipalMappingRequest.properties.mappingId.description
Optional mapping id for create requests.

# components.schemas.AddClientCertificateRevocationRequest.properties.revocationId.description
Optional revocation id for idempotent automation.

# components.schemas.AddClientCertificateRevocationRequest.properties.issuer.description
Revoked issuer distinguished name, used with serialNumber.

# components.schemas.AddClientCertificateRevocationRequest.properties.serialNumber.description
Revoked certificate serial number, used with issuer.

# components.schemas.ValidateClientCertificateRequest.properties.certificate.description
PEM, URL-encoded PEM, or base64 DER public client certificate.

# components.schemas.MetadataPrevalidateRequest.description
Request body for Metadata v2 release-package compatibility prevalidation. Exactly one of releasePackageId or releasePackage is required.

# components.schemas.MetadataPrevalidateRequest.properties.releasePackageId.description
Persisted MetadataReleasePackage identifier. Must not be an empty GUID.

# components.schemas.MetadataPrevalidateRequest.properties.targetEnvironment.description
Target environment whose current Metadata v2 graph snapshot is compared. The value is trimmed and must not be blank.

# components.schemas.MetadataPrevalidateRequest.properties.dataScripts.description
Optional declared data script contracts. Omit for no scripts; explicit null arrays or entries are rejected. Prevalidation analyzes these declarations but never executes scripts.

# components.schemas.MetadataCompatibilityReport.properties.canCreatePullRequest.description
False for blocked and unknown reports; true for ready and warning reports.

# components.schemas.MetadataCompatibilityReport.properties.canPromote.description
False for blocked and unknown reports; true for ready and warning reports.

# components.schemas.MetadataDataScriptEntry.properties.targetEnvironment.description
Optional target environment for this script. Omitted or blank applies to every target; populated values are trimmed and matched case-insensitively.

# components.schemas.MetadataDataScriptEntry.properties.beforeContract.description
Declared pre-script state. Omit when not known; child collection arrays may be omitted but explicit null arrays or entries are rejected.

# components.schemas.MetadataDataScriptEntry.properties.afterContract.description
Declared post-script state. Omit when no script coverage is claimed. Missing-artifact coverage requires expected discriminator/detail fields, not only exists=true.

# components.schemas.MetadataDataScriptEntry.properties.declaredOperations.description
Optional operation labels. Omit for no labels; explicit null arrays or entries are rejected.

# components.schemas.MetadataDataScriptContract.properties.resources.description
Semantic artifact contracts. Omit for an empty contract; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptResourceContract.description
Semantic artifact contract used by data-script before/after coverage. For missing artifacts, exists=true alone is not sufficient; include expected resourceType, serviceType/route/protocols, publication identity/details, or storage binding details as applicable.

# components.schemas.MetadataScriptResourceContract.properties.fields.description
Fields expected before or after the script. Omit for no fields; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptResourceContract.properties.requiredIdentifiers.description
Required field identifiers expected before or after the script. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptResourceContract.properties.domains.description
Canonical domain identifiers expected before or after the script. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptResourceContract.properties.indexes.description
Canonical index identifiers expected before or after the script. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptResourceContract.properties.capabilities.description
Service or publication capabilities expected before or after the script. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptResourceContract.properties.supportedFormats.description
Publication formats expected before or after the script. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptFieldContract.properties.semanticRoles.description
Semantic roles expected on the field. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptFieldContract.properties.domains.description
Canonical domain identifiers expected on the field. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptFieldContract.properties.indexes.description
Canonical index identifiers expected on the field. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.MetadataScriptStorageContract.properties.capabilities.description
Storage binding capabilities. Omit for none; explicit null arrays or entries are rejected.

# components.schemas.DeployPlanRequest.properties.currentRevision.description
Current revision (optional, for diff planning)

# components.schemas.CreateDeployOperationRequest.properties.idempotencyKey.description
Client-supplied idempotency key to prevent duplicates

# components.schemas.CreateDeployOperationRequest.properties.submitImmediately.description
Whether to submit the operation immediately after creation

# components.schemas.MigrationObservabilityResponse.properties.isReady.description
Whether the instance is ready for traffic

# components.schemas.MigrationObservabilityResponse.properties.isFailed.description
Whether migration lifecycle state is failed

# components.schemas.MigrationObservabilityResponse.properties.planAvailable.description
Whether a migration plan could be generated

# components.schemas.MigrationObservabilityResponse.properties.upgradeRequired.description
Whether pending migrations were detected

# components.schemas.MigrationObservabilityResponse.properties.pendingScripts.description
Migration scripts that would run if upgrades were applied

# components.schemas.MigrationObservabilityResponse.properties.executedButNotDiscoveredScripts.description
Scripts previously executed but no longer discovered by current binary

# components.schemas.MigrationObservabilityResponse.properties.planError.description
Error detail when plan generation failed

# components.schemas.LicenseStatusResponse.properties.expiresAt.description
License expiry timestamp, or null for Community/perpetual licenses.

# components.schemas.LicenseStatusResponse.properties.isValid.description
Whether the active configured license validated successfully.

# components.schemas.LicenseStatusResponse.properties.daysUntilExpiry.description
Ceiling day count until expiresAt, or null when no expiry is present.

# components.schemas.LicenseStatusResponse.properties.validationState.description
Runtime validation state for the active license snapshot.

# components.schemas.LicenseStatusResponse.properties.entitlements.description
Known FeatureCatalog entitlement inventory with active/inactive state.

# components.schemas.EntitlementResponse.properties.isActive.description
Whether this entitlement is active in the current snapshot.

# components.schemas.FeatureEntitlementItem.properties.isEnabled.description
Whether the feature is enabled by the active license snapshot.

# components.schemas.FeatureEntitlementItem.properties.minimumEdition.description
Minimum catalog edition for this feature.

# components.schemas.FeatureEntitlementItem.properties.upgradeRequired.description
True when the current snapshot does not activate this feature.

# components.schemas.LicenseUploadResponse.properties.success.description
Whether the upload was accepted and applied.

# components.schemas.LicenseUploadResponse.properties.message.description
Sanitized upload result or rejection message.

# components.schemas.FeatureOverviewItem.properties.isEnabled.description
Whether the feature is enabled by the active license snapshot.

# components.schemas.FeatureOverviewItem.properties.upgradeMessage.description
Upgrade hint when the feature is inactive.

# components.schemas.StyleSuggestionRequest.description
Optional overrides for style suggestion generation.

# components.schemas.StyleSuggestionRequest.properties.preferredField.description
Use this field for classification instead of auto-selection. If the field does not exist or is not eligible (e.g. geometry, binary, boolean), the server falls back to geometry-only defaults and includes the reason in the observations array.

# components.schemas.StyleSuggestionRequest.properties.preferredMethod.description
Classification method override. Supported values: EqualInterval, Quantile, NaturalBreaks, UniqueValue. Unrecognized values are ignored and the server auto-selects.

# components.schemas.StyleSuggestionRequest.properties.preferredPalette.description
Palette name override. Supported values: Viridis, CartoBold, RdBu. Unrecognized values are ignored and the server auto-selects.

# components.schemas.StyleSuggestionRequest.properties.classCount.description
Number of classes to generate (default 5). Clamped to the range 2-12.

# components.schemas.StyleSuggestionResponse.properties.mapLibreStyle.description
MapLibre v8 style document (ready to apply).

# components.schemas.StyleSuggestionResponse.properties.drawingInfo.description
GeoServices drawingInfo JSON (ready to apply).

# components.schemas.StyleSuggestionResponse.properties.classificationMethod.description
Classification method used (null for geometry-only defaults).

# components.schemas.StyleSuggestionResponse.properties.observations.description
Human-readable observations about data analysis.

# components.schemas.ComplianceResidencyEvaluationRequest.properties.region.description
Region code to evaluate against the active policy.

# components.schemas.PackageReviewRequest.properties.contractVersion.description
Package-review contract version. The current supported value is honua.package_review.v1.

# components.schemas.PackageReviewRequest.properties.packageFamily.description
Supported values are query, analysis_plan, map_package, dashboard_report, form, app_package, workflow, gp, and etl. packageFamily is not required and not enum-limited: a missing value returns a missing_package_family finding and an unknown value returns an unsupported_package_family finding, rather than an HTTP validation error.

# components.schemas.PackageReviewRequest.properties.requestedAction.description
Caller-requested action being reviewed, for example execute or publish.

# components.schemas.PackageReviewRequest.properties.packagePayload.description
Opaque package payload. analysis_plan and gp payloads are parsed as analysis-plan candidates.

# components.schemas.PackageReviewRequest.properties.requirements.description
Shared validation requirements. An explicit null is normalized to an empty requirement set.

# components.schemas.PackageReviewRequest.properties.includePreviewPlan.description
Caller preference. /packages/validate forces false and /packages/preview forces true.

# components.schemas.PackageReviewRequest.properties.resourceRefs.description
Safe caller-visible resource references. An explicit null is normalized to an empty map.

# components.schemas.PackageReviewResponse.properties.packageFamily.description
Echoes the reviewed package family. Unknown values can appear in blocked reviews.

# components.schemas.PackagePreviewPlan.properties.mayMutatePublishedState.description
Must remain false for preview responses.

# components.schemas.PackagePreviewOperation.properties.mayMutatePublishedState.description
Must remain false for preview responses.

# components.schemas.ImportProblemDetails.description
RFC 7807 problem document emitted by the admin import surface (media type application/problem+json).

# components.schemas.ImportMigrationSourceIdentity.description
Identity and version information for a scanned migration source.

# components.schemas.ImportMigrationSourceIdentity.properties.serviceType.description
Optional service type or protocol subtype.

# components.schemas.ImportMigrationManifestArtifact.description
Deterministic intermediate artifact that translates a source inventory into target Honua migration intent.

# components.schemas.ImportMigrationManifestArtifact.properties.sourceKind.description
Source kind identifier such as geoserver-rest or arcgis-geoservices-rest.

# components.schemas.ImportMigrationManifestArtifact.properties.targetResources.description
Target resources that can be published or staged from the source inventory.

# components.schemas.ImportMigrationManifestArtifact.properties.styleActions.description
Target style actions. Unsupported styles appear here as manual-review actions rather than being claimed as migrated.

# components.schemas.ImportMigrationManifestArtifact.properties.servicePlans.description
Service-level migration plans for protocol surfaces that require operator review.

# components.schemas.ImportMigrationManifestArtifact.properties.identityRemaps.description
Stable source-to-target identity remaps emitted by manifest translation.

# components.schemas.ImportMigrationManifestArtifact.properties.identityRemapping.description
Source-id to target-id pairs for identifiers that could not be preserved verbatim.

# components.schemas.ImportMigrationManifestArtifact.properties.fidelityMatrix.description
Optional fidelity matrix enriched with target identity mappings from this manifest.

# components.schemas.ImportMigrationManifestArtifact.properties.manualReviewItems.description
Items that require operator review before migration can proceed.

# components.schemas.ImportMigrationManifestArtifact.properties.unsupportedItems.description
Items that cannot be translated into target Honua intent.

# components.schemas.ImportArcGisMigrationRunSummary.description
Lightweight ArcGIS migration run summary returned by the admin list endpoint.

# components.schemas.ImportArcGisMigrationRunSummary.properties.hasParity.description
True when the run has a parity artifact persisted.

# components.schemas.ImportArcGisMigrationRunSummary.properties.targetResourceCount.description
Number of target resources in the manifest.

# components.schemas.ImportArcGisMigrationRunListResult.properties.items.description
Run summaries on this page, newest first.

# components.schemas.ImportArcGisMigrationRunListResult.properties.totalCount.description
Total runs matching the filter across all pages.

# components.schemas.ImportArcGisMigrationRunRecord.description
Run-level metadata persisted alongside the manifest and parity artifacts.

# components.schemas.ImportArcGisMigrationRunRecord.properties.sourceUrl.description
Trimmed canonical source URL the manifest was generated from.

# components.schemas.ImportArcGisMigrationManifestIngestionRequest.description
Request body for recording an ArcGIS migration manifest artifact. `sourceUrl` and `manifest` are validated as required by the handler.

# components.schemas.ImportArcGisMigrationManifestIngestionRequest.properties.sourceUrl.description
Canonical source URL the manifest was generated from. Required.

# components.schemas.ImportArcGisMigrationManifestIngestionRequest.properties.createdAt.description
Instant to store on the run record. Defaults to server receive time.

# components.schemas.ImportArcGisMigrationParityIngestionRequest.description
Request body for recording an ArcGIS migration parity artifact. `parity` is validated as required by the handler.

# components.schemas.ImportArcGisMigrationParityArtifact.description
Deterministic post-apply parity outcome for an ArcGIS migration source.

# components.schemas.ImportArcGisMigrationParityArtifact.properties.classification.description
Overall classification aggregated with the worst-state rule across all probes.

# components.schemas.ImportArcGisMigrationParityArtifact.properties.reasons.description
Sorted, distinct, trimmed reasons justifying the overall classification.

# components.schemas.ImportArcGisMigrationParityFeatureCountProbe.description
Feature-count probe. Bands: pass when the absolute delta ratio is <= 5%, warn when > 5% and <= 20% (or when the source advertised no count), fail when > 20%.

# components.schemas.ImportArcGisMigrationParitySchemaProbe.description
Schema match probe. Bands: pass when no expected field is missing from the target, fail otherwise. There is no warn band.

# components.schemas.ImportArcGisMigrationParityCoverageProbe.description
Generic coverage probe. Bands: pass when coverage >= 0.99, warn when >= 0.80 and < 0.99, fail when < 0.80. A zero denominator reports pass.

# components.schemas.ImportArcGisMigrationParityCoverageProbe.properties.coverage.description
observed / expected clamped to [0, 1]; 1.0 when expected is zero.

# components.schemas.ImportGeoServerDiscoveryRequest.description
Request body for GeoServer discovery. `geoServerRestUrl` is validated as required by the handler.

# components.schemas.ImportGeoServerDiscoveryRequest.properties.geoServerRestUrl.description
Base URL of the GeoServer REST API. Required.

# components.schemas.ImportGeoServerDiscoveryRequest.properties.password.description
Plaintext password. Accepted for discovery only.

# components.schemas.ImportGeoServerServiceInfo.description
Metadata discovered from a GeoServer REST endpoint.

# components.schemas.ImportGeoServerImportOptions.description
Options controlling how unsupported GeoServer resources are handled during import.

# components.schemas.ImportGeoServerImportOptions.properties.workspaceNameMappings.description
GeoServer workspace name to target Honua workspace name.

# components.schemas.ImportUnsupportedResourceBehavior.description
Behavior for unsupported resources, serialized as an ordinal: 0 = Skip, 1 = LogWarning (default), 2 = FailImport.

# components.schemas.ImportGeoServerStartRequest.description
Request body for queueing a GeoServer import. `geoServerRestUrl` is validated as required by the handler.

# components.schemas.ImportGeoServerStartRequest.properties.geoServerRestUrl.description
Base URL of the GeoServer REST API. Required.

# components.schemas.ImportGeoServerStartRequest.properties.password.description
Rejected for queued imports; use passwordSecretReference.

# components.schemas.ImportGeoServerStartRequest.properties.passwordSecretReference.description
Secret reference for the GeoServer password. Must use a supported secret reference format.

# components.schemas.ImportGeoServerStartRequest.properties.targetHonuaUrl.description
Target Honua base URL. Defaults to a placeholder for dry runs.

# components.schemas.ImportGeoServerStartRequest.properties.honuaApiKey.description
Rejected for queued imports; use honuaApiKeySecretReference.

# components.schemas.ImportGeoServerStartRequest.properties.dataStoreNames.description
Format workspace:datastore, or datastore for global stores. Omit to import all.

# components.schemas.ImportGeoServerStartRequest.properties.layerNames.description
Format workspace:layer, or layer for global layers. Omit to import all.

# components.schemas.ImportGeoServerStartRequest.properties.applyMode.description
Required to be true when dryRun is false; otherwise the request is rejected with 400.

# components.schemas.ImportGeoServerJobQueuedResponse.description
Returned when a GeoServer import job is queued.

# components.schemas.ImportGeoServerProgress.description
Detailed GeoServer import progress record.

# components.schemas.ImportGeoServerProgressStatus.description
GeoServer import progress status serialized as an ordinal: 0 = Queued, 1 = Discovering, 2 = ImportingWorkspaces, 3 = ImportingDataStores, 4 = ImportingLayers, 5 = ImportingStyles, 6 = Validating, 7 = Completed, 8 = Failed, 9 = Cancelled.

# components.schemas.ImportGeoServerJob.description
GeoServer import job view projected from the stored progress record.

# components.schemas.ImportGeoServerJob.properties.status.description
Coarse job status projected from the progress status.

# components.schemas.ImportGeoServerJob.properties.durationDisplay.description
Human-readable elapsed/total duration such as 42.0s, 3.5m, or 1.2h.

# components.schemas.ImportGeoServerCancelResponse.description
Returned when a GeoServer import job is cancelled.

# components.schemas.ImportGeoServerCancelResponse.properties.message.example
GeoServer import job cancelled successfully

# components.schemas.ImportGeoservicesCredentialRequest.description
Inbound ArcGIS credential descriptor. Queued imports must use the secret-reference fields; inline token/password values are accepted for discovery only.

# components.schemas.ImportGeoservicesDiscoverRequest.description
Request body for ArcGIS GeoServices discovery. `serviceUrl` is validated as required by the handler.

# components.schemas.ImportGeoservicesDiscoverRequest.properties.serviceUrl.description
URL of the ArcGIS service to discover. Required.

# components.schemas.ImportGeoservicesLayerSummary.description
Summary of one layer returned by ArcGIS discovery.

# components.schemas.ImportGeoservicesDiscoverResponse.description
ArcGIS service summary plus the layers available for import.

# components.schemas.ImportGeoservicesStartRequest.description
Request body for queueing an ArcGIS GeoServices layer import. `serviceUrl` and `tableName` are validated as required by the handler.

# components.schemas.ImportGeoservicesStartRequest.properties.tableName.description
Target PostGIS table name. Required; letters, numbers, and underscores only.

# components.schemas.ImportGeoservicesStartRequest.properties.targetSchema.description
Optional target schema; letters, numbers, and underscores only.

# components.schemas.ImportGeoservicesStartRequest.properties.serviceName.description
Target Honua service name used when auto-publishing.

# components.schemas.ImportGeoservicesJobQueuedResponse.description
Returned when a GeoServices import job is queued.

# components.schemas.ImportGeoservicesProgressStatus.description
GeoServices import status serialized as an ordinal: 0 = Queued, 1 = Discovering, 2 = RetrievingFeatures, 3 = CreatingTable, 4 = InsertingFeatures, 5 = Publishing, 6 = CopyingAttachments, 7 = Validating, 8 = Completed, 9 = NeedsReview, 10 = Failed, 11 = Cancelled.

# components.schemas.ImportGeoservicesProgress.description
Progress record for one GeoServices import job.

# components.schemas.ImportGeoservicesProgress.properties.sourceUrl.description
Alias of sourceServiceUrl for generic admin import views.

# components.schemas.ImportGeoservicesProgress.properties.layerId.description
Alias of publishedLayerId for generic admin import views.

# components.schemas.ImportGeoservicesProgress.properties.reconciliationArtifact.description
Per-layer data-reconciliation artifact produced by the Validating phase.

# components.schemas.ImportGeoservicesProgress.properties.catalogReconciliationReport.description
Catalog parity report produced by the Validating phase.

# components.schemas.ImportGeoservicesCancelResponse.description
Returned when a GeoServices import job cancellation is recorded.

# components.schemas.ImportMigrationBatchLayerSpec.description
One layer-import specification in a batch footprint request.

# components.schemas.ImportMigrationBatchLayerSpec.properties.sourceResourceId.description
Stable source resource id. Required and unique within the footprint.

# components.schemas.ImportMigrationBatchLayerSpec.properties.tableName.description
Target PostGIS table name. Required; letters, numbers, and underscores only.

# components.schemas.ImportMigrationBatchLayerSpec.properties.dependsOn.description
Source resource ids imported before this layer.

# components.schemas.ImportMigrationBatchStartRequest.description
Request body for starting a footprint-driven batch migration run.

# components.schemas.ImportMigrationBatchStartRequest.properties.sourceKind.description
Source kind identifier such as arcgis-geoservices-rest. Required.

# components.schemas.ImportMigrationBatchStartRequest.properties.sourceUrl.description
Redacted source URL describing the footprint origin (display only).

# components.schemas.ImportMigrationBatchStartRequest.properties.layers.description
Footprint layer-import specifications. At least one and at most 500 entries.

# components.schemas.ImportMigrationBatchStartRequest.properties.manifestBody.description
Manifest JSON body used for post-publish relationship application.

# components.schemas.ImportMigrationBatchChildResponse.description
Per-child progress within a batch migration run.

# components.schemas.ImportMigrationBatchResponse.description
Batch migration run aggregate plus per-child progress.

# components.schemas.ImportMigrationBatchResponse.properties.children.description
Per-child progress ordered by execution ordinal. Empty on the start response.

# components.schemas.ImportOgcApiFeaturesCollectionRequest.description
Request body for importing one OGC API Features collection. `serviceUrl`, `collectionId`, and `targetSchema` are validated as required by the handler.

# components.schemas.ImportOgcApiFeaturesCollectionRequest.properties.serviceUrl.description
Source OGC API Features landing page URL. Required.

# components.schemas.ImportOgcApiFeaturesCollectionRequest.properties.collectionId.description
Collection identifier to import. Required.

# components.schemas.ImportOgcApiFeaturesCollectionRequest.properties.filter.description
CQL2-text filter forwarded as filter=...&filter-lang=cql2-text. Must be non-empty when supplied.

# components.schemas.ImportOgcApiFeaturesCollectionRequest.properties.bbox.description
4 (2D) or 6 (3D) ordinates forwarded as bbox=.

# components.schemas.ImportOgcApiFeaturesCollectionRequest.properties.datetime.description
RFC 3339 instant or interval forwarded as datetime=. Must be non-empty when supplied.

# components.schemas.ImportOgcApiFeaturesResult.description
Result document for an OGC API Features collection import. Returned for both success and importer-level failure.

# components.schemas.ImportOgcApiFeaturesResult.properties.success.description
Rows may still have been written when false; featuresImported reflects what the sink persisted.

# components.schemas.ImportOgcApiFeaturesResult.properties.target.description
Schema-qualified target in schema.table form.

# components.schemas.ImportOgcApiFeaturesResult.properties.truncated.description
True when a next link was suppressed because maxPages or maxFeatures was reached.

# components.schemas.ImportOgcApiFeaturesResult.properties.errorCode.description
Stable error code driving the HTTP status.

# components.schemas.ImportOgcApiFeaturesResult.properties.duration.description
Wall-clock duration of the run, serialized as a .NET TimeSpan string (for example 00:01:23.4560000).

# components.schemas.ImportOgcApiFeaturesResult.properties.scopeDriftDetected.description
True when filter/bbox/datetime changed relative to a previous run against the same target. Out-of-scope rows are not deleted.

# components.schemas.ImportOgcApiFeaturesResult.properties.mappingDiagnostics.description
Schema-mapping diagnostics. Clean automated matches are omitted.

# components.schemas.ImportOgcApiFeaturesResult.properties.sourceFeatureCountReported.description
Source-advertised numberMatched from the first items page.

# components.schemas.ImportOgcApiFeaturesResult.properties.featureCountParity.description
Inline feature-count parity probe comparing the source-advertised count to the number of features written.

# components.schemas.ImportOgcTileCacheExportRequest.description
Request body for the WMTS tile-cache export. `serviceUrl` is validated as required by the handler.

# components.schemas.ImportOgcTileCacheExportRequest.properties.serviceUrl.description
WMTS service URL (root or GetCapabilities URL). Required.

# components.schemas.ImportOgcTileCacheExportRequest.properties.layerIdentifiers.description
Omit to export every automated tile-set.

# components.schemas.ImportOgcTileCacheExportRequest.properties.minZoom.description
Must be non-negative and not greater than maxZoom.

# components.schemas.ImportOgcTileCacheExportRequest.properties.dryRun.description
Resolve the plan and tile URLs without fetching tile bytes.

# components.schemas.ImportOgcTileCacheExportRequest.properties.applyMode.description
Required to be true when dryRun is false.

# components.schemas.ImportOgcTileCacheExportedTileSet.description
Per-tile-set outcome of a tile-cache export.

# components.schemas.ImportOgcTileCacheExportedTileSet.properties.classification.description
Migration fidelity classification for this tile-set.

# components.schemas.ImportOgcTileCacheExportResult.description
Result document for a WMTS tile-cache export.

# components.schemas.ImportOgcCoverageRecord.description
Per-coverage outcome of a coverage import plan or apply.

# components.schemas.ImportOgcCoverageRecord.properties.classification.description
Migration fidelity classification for this coverage.

# components.schemas.ImportOgcCoverageRecord.properties.action.description
Planned or applied action for this coverage.

# components.schemas.ImportOgcCoveragesRequest.description
Request body for a GeoTIFF/COG coverage import. `serviceType`, `serviceUrl`, and `inventory` are validated as required by the handler.

# components.schemas.ImportOgcCoveragesRequest.properties.serviceType.description
Coverage protocol surface. Accepted values are WCS and OGC API Coverages. Required.

# components.schemas.ImportOgcCoveragesRequest.properties.inventory.description
Migration source inventory artifact identifying the coverages to plan or import. Required.

# components.schemas.ImportOgcCoveragesRequest.properties.coverageSelection.description
Omit to process every coverage in the inventory.

# components.schemas.ImportOgcCoveragesRequest.properties.targets.description
Per-coverage targets keyed by source coverage name or resource id.

# components.schemas.ImportOgcCoveragesRequest.properties.applyMode.description
Required to be true when dryRun is false.

# components.schemas.ImportOgcCoveragesResult.description
Result document for a GeoTIFF/COG coverage import.

# components.schemas.ImportOgcCoveragesResult.properties.styleDiagnostics.description
Coverage style diagnostics emitted during planning.

# components.schemas.ImportOgcWcsRequest.description
Request body for a legacy WCS coverage import. `serviceUrl` and `inventory` are validated as required by the handler.

# components.schemas.ImportOgcWcsRequest.properties.version.description
Optional WCS protocol version such as 1.1.1 or 2.0.1.

# components.schemas.ImportOgcWcsRequest.properties.outputFormat.description
Other formats are classified as manual-review.

# components.schemas.ImportOgcWcsRequest.properties.inventory.description
Migration source inventory artifact identifying the coverages to plan or import. Required.

# components.schemas.ImportOgcWcsRequest.properties.targets.description
Per-coverage targets keyed by source coverage name or resource id.

# components.schemas.ImportOgcWcsRequest.properties.applyMode.description
Required to be true when dryRun is false.

# components.schemas.ImportOgcWcsResult.description
Result document for a legacy WCS coverage import.

# components.schemas.ImportOgcWfsStartRequest.description
Request body for a WFS feature import. `serviceUrl` is validated as required by the handler.

# components.schemas.ImportOgcWfsStartRequest.properties.serviceUrl.description
WFS service URL (root or GetCapabilities URL). Required.

# components.schemas.ImportOgcWfsStartRequest.properties.targetSchema.description
Defaults to the configured operational schema.

# components.schemas.ImportOgcWfsStartRequest.properties.dryRun.description
Build the manifest without writing to PostGIS.

# components.schemas.ImportOgcWfsStartRequest.properties.applyMode.description
Required to be true when dryRun is false.

# components.schemas.ImportOgcWfsFeatureType.description
Per-feature-type outcome of a WFS import.

# components.schemas.ImportOgcWfsFeatureType.properties.sourceName.description
Source feature type name, typically workspace:layer.

# components.schemas.ImportOgcWfsResult.description
Result document for a WFS feature import.

# components.schemas.ImportOgcWfsResult.properties.parityEvidence.description
Migration parity evidence artifact produced alongside the manifest.

# components.schemas.ImportRasterMultipartRequest.description
Multipart form for the synchronous raster import. Exactly one primary raster part is allowed; world-file and .prj sidecar parts are optional and read with a 64 KiB cap each.

# components.schemas.ImportRasterMultipartRequest.properties.file.description
Primary raster file. Supported extensions: .tif, .tiff, .png, .jpg, .jpeg.

# components.schemas.ImportRasterMultipartRequest.properties.worldFile.description
Optional world-file sidecar recognised by extension (.pgw, .jgw, .tfw, .wld).

# components.schemas.ImportRasterMultipartRequest.properties.prjFile.description
Optional .prj sidecar carrying the projection definition.

# components.schemas.ImportRasterMultipartRequest.properties.layerId.description
Target layer id. Required and must parse as an integer.

# components.schemas.ImportRasterMultipartRequest.properties.name.description
Display name for the imported raster. Required and non-empty.

# components.schemas.ImportRasterMultipartRequest.properties.srid.description
Optional SRID override; ignored when it does not parse.

# components.schemas.ImportRasterMultipartRequest.properties.acquisitionDate.description
Optional ISO 8601 acquisition timestamp.

# components.schemas.ImportRasterMultipartRequest.properties.tileZoomLevels.description
Comma-separated zoom levels between 0 and 24. Defaults to 0,1,2,3,4,5,6,7,8.

# components.schemas.ImportSupportedRasterFormat.description
Detected raster format serialized as an ordinal: 0 = GeoTiff, 1 = PngWorldFile, 2 = JpegWorldFile, 3 = CloudOptimizedGeoTiff, 4 = Zarr.

# components.schemas.ImportRasterFormatsResponse.description
Raster file formats supported by the active raster import service.

# components.schemas.ImportRasterFormatsResponse.properties.supportedExtensions.description
Supported file extensions, including the leading dot.

# components.schemas.ImportRasterFormatsResponse.properties.formatDescriptions.description
Human-readable format description keyed by extension.

# components.schemas.ImportUpdateRasterRequest.description
PATCH body for an imported raster's mutable descriptive metadata. Omitted fields are left unchanged.

# components.schemas.ImportUpdateRasterRequest.properties.name.description
New display name. Must be non-empty when present.

# components.schemas.ImportUpdateRasterRequest.properties.description.description
New description. Send an empty string to clear it.

# components.schemas.ImportUpdateRasterRequest.properties.acquisitionDate.description
New acquisition date as an ISO 8601 timestamp. Send an empty string to clear it.

# components.schemas.ImportRasterMetadataResponse.description
Imported raster metadata returned after a successful update.

# components.schemas.ImportTilePackageResult.description
Result of importing an Esri tile/vector-tile cache package.

# components.schemas.ImportTilePackageResult.properties.tileCacheId.description
Stable tile-cache identifier the tiles were written to.

# components.schemas.ImportTilePackageResult.properties.dataType.description
Detected payload kind (raster or vector).

# components.schemas.ImportTilePackageResult.properties.contentType.description
Content type the imported tiles are served with.

# components.schemas.ImportTilePackageResult.properties.tilesSkipped.description
Tiles skipped because they were already present.

# components.schemas.ImportTilePackageResult.properties.serveUrl.description
Relative URL the imported tileset is served from, for example /tiles/imported/{tileCacheId}.

# components.schemas.ImportUploadProgress.description
Progress record for one file-upload operation.

# components.schemas.ImportUploadProgress.properties.percentComplete.description
Null when totalBytes is not greater than zero.

# components.schemas.ImportOperationStatus.description
Shared operation status serialized as an ordinal: 0 = Queued, 1 = Processing, 2 = Completed, 3 = Failed, 4 = Cancelled.

# components.schemas.ObservabilityProblemDetails.description
RFC 7807 problem response emitted by the observability admin routes.

# components.schemas.ObservabilityProblemDetails.properties.title.description
Short, human-readable summary of the problem.

# components.schemas.ObservabilityProblemDetails.properties.instance.description
URI reference identifying the specific occurrence.

# components.schemas.ObservabilityProblemDetails.properties.correlationId.description
Correlation identifier for tracing the request.

# components.schemas.ObservabilityProblemDetails.properties.timestamp.description
UTC ISO-8601 timestamp for when the error occurred.

# components.schemas.ObservabilityAlertEvent.description
Alert event surfaced through the Console Operate API.

# components.schemas.ObservabilityAlertEvent.properties.ruleId.description
Source rule identifier, or null for operations notifications not linked to an alert rule.

# components.schemas.ObservabilityAlertEvent.properties.zoneId.description
Zone identifier when the rule targets a geofence.

# components.schemas.ObservabilityAlertEvent.properties.serviceId.description
Service identifier the event applies to.

# components.schemas.ObservabilityAlertEvent.properties.objectId.description
Feature identifier the event applies to.

# components.schemas.ObservabilityAlertEvent.properties.occurredAt.description
Wall-clock time of the underlying observation.

# components.schemas.ObservabilityAlertEvent.properties.resourceRef.description
Operate event resource reference, formatted as alert/{eventId}.

# components.schemas.ObservabilityAlertEventPage.properties.items.description
Items returned in this page (newest first).

# components.schemas.ObservabilityAlertEventPage.properties.nextCursor.description
Cursor for the next page, or null when none.

# components.schemas.ObservabilityAlertAcknowledgeBody.properties.note.description
Optional operator note. Rejected with 400 when longer than 1024 characters.

# components.schemas.ObservabilityAlertResolveBody.properties.note.description
Optional operator note. Rejected with 400 when longer than 1024 characters.

# components.schemas.ObservabilityAlertSuppressBody.properties.suppressUntil.description
Timestamp at which suppression ends. Must be in the future.

# components.schemas.ObservabilityAlertSuppressBody.properties.note.description
Optional operator note. Rejected with 400 when longer than 1024 characters.

# components.schemas.ObservabilityAuditRecord.properties.resourceType.description
Resource type, or "-" when not applicable.

# components.schemas.ObservabilityAuditRecord.properties.remoteIp.description
Remote IP address when capture is enabled.

# components.schemas.ObservabilityAuditRecord.properties.userAgent.description
User-Agent header when capture is enabled.

# components.schemas.ObservabilityAuditRecord.properties.details.description
Pre-sanitized structured detail (JSON text or short marker).

# components.schemas.ObservabilityAuditPage.properties.items.description
Items returned in this page (newest first).

# components.schemas.ObservabilityAuditPage.properties.nextCursor.description
Cursor for the next page, or null when none.

# components.schemas.ObservabilityAuditIntegrity.description
Result of an audit hash-chain integrity verification pass.

# components.schemas.ObservabilityAuditIntegrity.properties.verified.description
True when the tamper-evident chain verified end-to-end.

# components.schemas.ObservabilityAuditIntegrity.properties.unhashedRows.description
Leading rows with no hash (written before the hash-chain migration).

# components.schemas.ObservabilityAuditIntegrity.properties.firstBrokenAuditId.description
The audit id of the first row that failed verification, if any.

# components.schemas.ObservabilityAuditIntegrity.properties.failureReason.description
Human-readable failure description, if any.

# components.schemas.ObservabilityOperateProviderLink.description
Deep link from a normalized event to an upstream observability provider.

# components.schemas.ObservabilityOperateProviderLink.properties.provider.description
Provider category (for example grafana, loki, ci).

# components.schemas.ObservabilityOperateProviderLink.properties.url.description
Absolute or relative URL the Console can open.

# components.schemas.ObservabilityOperateEvent.description
Normalized operate event surfaced through the unified timeline.

# components.schemas.ObservabilityOperateEvent.properties.eventId.description
Source-prefixed event identifier (for example alert:42).

# components.schemas.ObservabilityOperateEvent.properties.occurredAt.description
Wall-clock time when the event occurred.

# components.schemas.ObservabilityOperateEvent.properties.serviceId.description
Service identifier when scoped to a service.

# components.schemas.ObservabilityOperateEvent.properties.layerId.description
Layer identifier when scoped to a layer.

# components.schemas.ObservabilityOperateEvent.properties.objectId.description
Feature object identifier when scoped to a feature.

# components.schemas.ObservabilityOperateEvent.properties.actor.description
Actor that produced the event when known.

# components.schemas.ObservabilityOperateEvent.properties.resourceRef.description
Typed resource reference for deep linking (for example alert/42).

# components.schemas.ObservabilityOperateEvent.properties.providerLinks.description
Deep links to upstream observability providers.

# components.schemas.ObservabilityOperateEvent.properties.detailsJson.description
Source-specific structured payload as JSON text.

# components.schemas.ObservabilityOperateEventPage.properties.items.description
Items returned in this page (newest first).

# components.schemas.ObservabilityOperateEventPage.properties.partialResult.description
True when at least one contributing source produced a partial result.

# components.schemas.ObservabilityOperateEventPage.properties.sourceErrors.description
Per-source diagnostic messages keyed by lower-case event kind.

# components.schemas.ObservabilityOperateLogEntry.description
One entry from the replica-local recent-error buffer.

# components.schemas.ObservabilityOperateLogEntry.properties.level.description
Severity level; error for status codes at or above 500, otherwise warning.

# components.schemas.ObservabilityOperateLogEntry.properties.correlationId.description
Correlation id captured at request time.

# components.schemas.ObservabilityOperateLogPage.description
Recent log buffer with replica metadata.

# components.schemas.ObservabilityOperateLogPage.properties.instanceId.description
Identifier of the replica that produced the response.

# components.schemas.ObservabilityOperateLogPage.properties.items.description
Items returned in this page (newest first).

# components.schemas.ObservabilityOpsHealthCheckEntry.properties.description.description
Operator-facing description, when the check provides one.

# components.schemas.ObservabilityOpsHealthChecks.properties.totalDurationMs.description
Total health-check evaluation duration in milliseconds.

# components.schemas.ObservabilityOpsServingLatencyProtocol.properties.errorCount.description
In-window server-error count (HTTP status at or above 500).

# components.schemas.ObservabilityOpsServingLatencyProtocol.properties.errorRate.description
Server-error rate over the window (0.0 to 1.0).

# components.schemas.ObservabilityOpsServingLatency.properties.clusterReplicaCount.description
Number of replicas merged into this view. Null or 1 means the view reflects only the responding instance.

# components.schemas.ObservabilityOpsGpQueueBucket.description
A single geoprocessing queue-depth bucket.

# components.schemas.ObservabilityOpsGpQueueBucket.properties.count.description
Active-job count in this status/backend bucket.

# components.schemas.ObservabilityOpsGpQueue.properties.totalActive.description
Total active jobs (queued + provisioning + running).

# components.schemas.ObservabilityOpsGpQueue.properties.available.description
Whether GP queue telemetry is available (an execution-job store is registered).

# components.schemas.ObservabilityOpsGpQueue.properties.buckets.description
Active-job counts bucketed by status and backend.

# components.schemas.ObservabilityOpsAlertDispatchChannel.description
Bounded active alert-dispatch health for one delivery channel. Recipient, payload, error, credential, and secret data are never included.

# components.schemas.ObservabilityOpsAlertDispatchChannel.properties.paused.description
Whether new delivery claims are paused for this channel.

# components.schemas.ObservabilityOpsAlertDispatchChannel.properties.pendingCount.description
Rows pending or currently being processed.

# components.schemas.ObservabilityOpsAlertDispatchChannel.properties.oldestItemAgeSeconds.description
Age in whole seconds of the oldest non-delivered row.

# components.schemas.ObservabilityOpsAlertDispatch.description
Alert-dispatch backlog and dead-letter summary.

# components.schemas.ObservabilityOpsAlertDispatch.properties.dispatcherEnabled.description
Whether the alert pipeline is enabled by configuration.

# components.schemas.ObservabilityOpsAlertDispatch.properties.storagePollFailing.description
Whether the most recent dispatch pass failed to reach the backlog store.

# components.schemas.ObservabilityOpsAlertDispatch.properties.lastPollAt.description
Timestamp of the most recent successful dispatch pass, when known.

# components.schemas.ObservabilityOpsAlertDispatch.properties.pendingCount.description
Pending backlog count, when a backlog snapshot is available.

# components.schemas.ObservabilityOpsAlertDispatch.properties.deadLetteredCount.description
Dead-lettered count, when a backlog snapshot is available.

# components.schemas.ObservabilityOpsAlertDispatch.properties.retryingCount.description
Retrying count, when a backlog snapshot is available.

# components.schemas.ObservabilityOpsAlertDispatch.properties.oldestItemAgeSeconds.description
Age in whole seconds of the oldest active row, when one exists.

# components.schemas.ObservabilityOpsAlertDispatch.properties.channels.description
Privacy-safe active backlog health grouped by configured channel identifier.

# components.schemas.ObservabilityOpsPlatformRelease.properties.isCoVersioned.description
Whether all planes are co-versioned with the release.

# components.schemas.ObservabilityOpsPlatformRelease.properties.skewedIds.description
Identifiers of planes skewed from the declared release.

# components.schemas.ObservabilityOpsDeployReadiness.properties.readyForCoordinatedDeploy.description
Whether the instance is ready for a coordinated deploy.

# components.schemas.ObservabilityOpsDeployReadiness.properties.pendingMigrationsCount.description
Count of pending (non-contract) migration scripts.

# components.schemas.ObservabilityOpsDeployReadiness.properties.pendingContractScriptsCount.description
Count of pending contract migration scripts, which hold coordinated-deploy readiness.

# components.schemas.ObservabilityOpsDatabase.properties.connectionPoolUtilization.description
Connection-pool utilization ratio (0.0 to 1.0), when available.

# components.schemas.ObservabilityOpsDatabase.properties.hasConnectionPoolData.description
Whether connection-pool utilization telemetry is available.

# components.schemas.ObservabilityOpsDatabase.properties.errorRate.description
Live HTTP server error rate (0.0 to 1.0).

# components.schemas.ObservabilityOpsHealthSnapshot.properties.overallStatus.description
Overall status roll-up (Healthy/Degraded/Unhealthy) from the health report.

# components.schemas.ObservabilityOpsHealthHistoryLatencyPoint.description
A single serving-latency time-series point.

# components.schemas.ObservabilityOpsHealthHistoryLatencySeries.description
A serving-latency series for one protocol, and optionally one replica.

# components.schemas.ObservabilityOpsHealthHistoryLatencySeries.properties.replicaId.description
Replica identifier when broken down per replica; null for a cluster-merged series.

# components.schemas.ObservabilityOpsHealthHistoryVitalsPoint.properties.replicaId.description
Replica identifier when broken down per replica; null for a cluster-merged point.

# components.schemas.ObservabilityOpsHealthHistoryVitalsPoint.properties.gpQueueBreakdown.description
GP queue depth by status and backend, keyed "<status>|<backend>" (for example "Queued|local").

# components.schemas.ObservabilityOpsHealthHistoryVitalsPoint.properties.alertPending.description
Alert-dispatch pending backlog, when available.

# components.schemas.ObservabilityOpsHealthHistoryVitalsPoint.properties.dbPoolUtilization.description
Database connection-pool utilization ratio, when available.

# components.schemas.ObservabilityOpsHealthHistoryVitalsPoint.properties.errorRate.description
Live HTTP server error rate (0.0 to 1.0).

# components.schemas.ObservabilityOpsHealthHistory.description
Cluster-aggregated or per-replica ops-health time series.

# components.schemas.ObservabilityOpsHealthHistory.properties.windowSeconds.description
Returned window length in seconds, clamped to the tier's retention cap.

# components.schemas.ObservabilityOpsHealthHistory.properties.from.description
Inclusive lower bound of the returned window.

# components.schemas.ObservabilityOpsHealthHistory.properties.to.description
Inclusive upper bound of the returned window.

# components.schemas.ObservabilityOpsHealthHistory.properties.perReplica.description
Whether the series is broken down per replica rather than cluster-merged.

# components.schemas.ObservabilityOpsHealthHistory.properties.vitals.description
Ops-vitals series (one entry per bucket, or per bucket/replica when broken down).

# components.schemas.ObservabilityOpsFindingSubject.properties.targetId.description
Deploy target identifier, when applicable.

# components.schemas.ObservabilityOpsFindingSubject.properties.workloadId.description
Execution workload identifier, when applicable.

# components.schemas.ObservabilityOpsFindingSubject.properties.releaseVersion.description
Platform release version, when applicable.

# components.schemas.ObservabilityOpsFindingAction.description
A finding's recommended action. The opaque execution payload is intentionally not surfaced; the console proposes by finding id and the server materializes the payload.

# components.schemas.ObservabilityOpsFindingAction.properties.kind.description
Operation class the action routes through.

# components.schemas.ObservabilityOpsFindingAction.properties.reason.description
Operator-facing reason recorded on the proposal.

# components.schemas.ObservabilityOpsFindingAction.properties.autoSafe.description
Whether the action is marked safe for autonomous apply.

# components.schemas.ObservabilityOpsFindingAction.properties.blastRadius.description
Bounded blast-radius estimate used by autonomy guardrails.

# components.schemas.ObservabilityOpsFinding.properties.id.description
Deterministic finding identifier, used to propose its action.

# components.schemas.ObservabilityOpsFindingsList.properties.findings.description
Active findings, ordered by descending severity.

# components.schemas.ObservabilityOpsFindingPropose.description
Outcome of routing a finding's recommended action through the operation gateway.

# components.schemas.ObservabilityOpsFindingPropose.properties.status.description
Proposal outcome status (for example Executed, ProposalCreated, Blocked, NotSupported).

# components.schemas.ObservabilityOpsFindingPropose.properties.proposalId.description
Created proposal identifier when the gateway required approval.

# components.schemas.ObservabilityOpsFindingPropose.properties.executionOperationId.description
Executed operation identifier when the gateway executed directly.

# components.schemas.ObservabilityOpsFindingPropose.properties.message.description
Operator-facing message describing the outcome, when available.

# components.schemas.ObservabilityAutonomyTrackRecord.properties.proposalsRaised.description
Number of proposals raised for the rule.

# components.schemas.ObservabilityAutonomyTrackRecord.properties.proposalsApproved.description
Number of proposals approved for the rule.

# components.schemas.ObservabilityAutonomyTrackRecord.properties.proposalsRejected.description
Number of proposals rejected for the rule.

# components.schemas.ObservabilityAutonomyTrackRecord.properties.autoApplied.description
Number of autonomous actions that succeeded.

# components.schemas.ObservabilityAutonomyTrackRecord.properties.rolledBack.description
Number of autonomous actions that rolled back.

# components.schemas.ObservabilityAutonomyTrackRecord.properties.failed.description
Number of autonomous actions that failed.

# components.schemas.ObservabilityAutonomyPolicy.description
Effective autonomy policy for one ops-finding rule.

# components.schemas.ObservabilityAutonomyPolicy.properties.isPersisted.description
Whether the effective policy comes from an explicit durable override. False means the values are projected from configuration/defaults.

# components.schemas.ObservabilityAutonomyPolicy.properties.maxAutoActionsPerWindow.description
Maximum autonomous actions allowed in the rolling window.

# components.schemas.ObservabilityAutonomyPolicy.properties.updatedAt.description
UTC time the durable policy was last updated.

# components.schemas.ObservabilityAutonomyPolicy.properties.updatedBy.description
Actor that last updated the durable policy.

# components.schemas.ObservabilityAutonomyPolicyList.properties.policies.description
Effective per-rule autonomy policies, ordered by rule.

# components.schemas.ObservabilityAutonomySettings.properties.killSwitchEnabled.description
Whether all autonomous remediation is disabled.

# components.schemas.ObservabilityAutonomySettings.properties.updatedAt.description
UTC time the settings were last updated.

# components.schemas.ObservabilityAutonomyPolicyUpdateRequest.description
Body for upserting a per-rule autonomy policy. Omitted fields keep their current effective value.

# components.schemas.ObservabilityAutonomyPolicyUpdateRequest.properties.mode.description
Requested mode. Case-insensitive; omit or leave blank to keep the current mode.

# components.schemas.ObservabilityAutonomyPolicyUpdateRequest.properties.maxAutoActionsPerWindow.description
Maximum autonomous actions allowed in the rolling window. Must be greater than zero when supplied.

# components.schemas.ObservabilityAutonomyPolicyUpdateRequest.properties.windowSeconds.description
Rolling rate-limit window in seconds. Must be greater than zero when supplied.

# components.schemas.ObservabilityAutonomyPolicyUpdateRequest.properties.maxBlastRadius.description
Maximum allowed blast-radius value. Must be greater than zero when supplied.

# components.schemas.ObservabilityAutonomyPolicyUpdateRequest.properties.reason.description
Operator reason persisted with the audit event.

# components.schemas.ObservabilityAutonomySettingsUpdateRequest.description
Body for changing global autonomy settings.

# components.schemas.ObservabilityAutonomySettingsUpdateRequest.properties.killSwitchEnabled.description
Whether all autonomous remediation should be disabled. Required.

# components.schemas.ObservabilityAutonomySettingsUpdateRequest.properties.reason.description
Operator reason persisted with the audit event.

# components.schemas.AlertsChannelState.description
Pause state of an alert delivery channel.

# components.schemas.AlertsChannelState.properties.paused.description
Whether delivery on the channel is paused.

# components.schemas.AlertsDispatchRedriveResult.properties.redriven.description
Number of dead-lettered dispatch rows re-enqueued.

# components.schemas.AlertsRuleEventTrigger.description
One trigger event raised by an alert rule.

# components.schemas.AlertsRuleEventTrigger.properties.resourceRef.description
Operate event resource reference, formatted as alert/{eventId}.

# components.schemas.AlertsRuleEventPage.description
Page of trigger events for one alert rule.

# components.schemas.AlertsRuleEventPage.properties.items.description
Trigger events for this rule, newest first.

# components.schemas.AlertsRuleEventPage.properties.nextCursor.description
Continuation cursor for the next page, or null when there are no more rows.

# components.schemas.CreateCoordinatedReleaseOperationRequest.description
Request to create a coordinated platform-upgrade release: a container image, an additive DB/schema change, and a Metadata v2 activation submitted as one ordered, gated, rollback-able operation.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.packageId.description
Release package identifier shared with the metadata semantic-diff package.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.targetEnvironment.description
Target environment for the coordinated upgrade.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.containerTargetId.description
Deploy target id for the container rollout step.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.desiredImage.description
Desired container image/revision the rollout converges to.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.currentImage.description
Currently observed container image/revision before the upgrade.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.resourceSemanticId.description
Semantic identifier of the resource/layer evolved by the additive metadata/schema change.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.newFieldType.description
Canonical type for the new field (for example String or Integer).

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.dataPopulateWorkloadId.description
Optional ETL/data-populate workload id dispatched after the schema change.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.scriptId.description
Optional explicit schema script id; defaults to add-{newFieldName}.

# components.schemas.CreateCoordinatedReleaseOperationRequest.properties.idempotencyKey.description
Idempotency key for safe submission replay.

# components.schemas.CoordinatedReleaseActionRequest.description
Optional request body for approving a coordinated-release gate or requesting its rollback.

# components.schemas.CoordinatedReleaseActionRequest.properties.reason.description
Operator reason/change note for the action.

# components.schemas.CoordinatedReleaseArtifactResponse.description
One artifact carried by the coordinated release (container image, DB/schema change, or metadata semantic diff).

# components.schemas.CoordinatedReleaseArtifactResponse.properties.desired.description
Desired state for the artifact (image ref, schema change, or activated revision).

# components.schemas.CoordinatedReleaseArtifactResponse.properties.current.description
Current state for the artifact, when known.

# components.schemas.CoordinatedReleaseStepResponse.description
One step in the coordinated ordered step timeline, including its gate and rollback status.

# components.schemas.CoordinatedReleaseStepResponse.properties.isReversible.description
Whether this step is reversible and is unwound by the coordinated rollback.

# components.schemas.CoordinatedReleaseOperationResponse.description
Full coordinated-release operation view: the three artifact kinds, the ordered step timeline with per-step gate/approve status, and rollback readiness.

# components.schemas.CoordinatedReleaseOperationResponse.properties.containerGateApproved.description
Whether the container-swap gate is approved.

# components.schemas.CoordinatedReleaseOperationResponse.properties.dataGateApproved.description
Whether the data-affecting (DB/metadata) gate is approved.

# components.schemas.CoordinatedReleaseOperationResponse.properties.containerOperationId.description
Child container deploy operation id, when started.

# components.schemas.CoordinatedReleaseOperationResponse.properties.metadataOperationId.description
Child metadata-release operation id, when started.

# components.schemas.CoordinatedReleaseOperationResponse.properties.rollbackReady.description
Whether the coordinated op can be rolled back: at least one reversible step has succeeded or is running.

# components.schemas.CoordinatedReleaseOperationResponse.properties.errorMessage.description
Error message for failed coordinated ops.

# components.schemas.CreateMetadataReleaseOperationRequest.description
Request to create an additive metadata-release layer-evolution lifecycle operation.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.packageId.description
Release package identifier the lifecycle advances.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.targetEnvironment.description
Target environment whose current graph snapshot is the rollback target.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.desiredRevision.description
Desired Git revision, tag, or ref for the metadata release.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.resourceSemanticId.description
Semantic identifier of the resource/layer being evolved and smoke-checked.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.newFieldName.description
Name of the newly added field the smoke stage asserts is present.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.newFieldType.description
Canonical type of the new field (for example String or Integer).

# components.schemas.CreateMetadataReleaseOperationRequest.properties.dataPopulateWorkloadId.description
Optional ETL/data-populate workload identifier dispatched after the schema change.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.scriptId.description
Stable script identifier for the additive change; defaults to add-{newFieldName}.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.idempotencyKey.description
Idempotency key used to deduplicate submissions.

# components.schemas.CreateMetadataReleaseOperationRequest.properties.correlationId.description
Correlation id propagated from upstream systems.

# components.schemas.PromoteDeployOperationRequest.description
Optional request body for manually promoting a deploy operation parked awaiting promotion.

# components.schemas.PromoteDeployOperationRequest.properties.reason.description
Operator reason recorded on the promotion.

# components.schemas.DeployOpsTargetResponse.description
Deploy target metadata resolved for a workflow operation.

# components.schemas.DeployOpsTargetResponse.properties.backend.description
Deploy backend that actuates the target.

# components.schemas.DeployOpsTargetResponse.properties.artifactReference.description
Explicitly pinned artifact reference, when configured.

# components.schemas.DeployOpsTargetResponse.properties.currentRevision.description
Current revision observed before the operation.

# components.schemas.DeployOpsTargetResponse.properties.parameters.description
Backend-specific parameters carried with the operation.

# components.schemas.DeployOpsMetadataEvidenceRefResponse.description
Metadata release evidence reference recorded on a workflow operation.

# components.schemas.DeployOpsMetadataRollbackPlanResponse.description
Rollback plan attached to a metadata release operation.

# components.schemas.DeployOpsMetadataRollbackPlanResponse.properties.isDataAffecting.description
Whether unwinding the release touches data.

# components.schemas.DeployOpsMetadataRollbackPlanResponse.properties.requiresExplicitApproval.description
Whether the rollback needs an explicit operator approval. Always true when the rollback is data-affecting.

# components.schemas.DeployOpsMetadataRollbackPlanResponse.properties.evidenceRequired.description
Evidence that must be captured for the rollback.

# components.schemas.DeployOpsMetadataRollbackPlanResponse.properties.approvalPolicyRef.description
Approval policy reference applied to the rollback.

# components.schemas.DeployOpsMetadataReleaseContextResponse.description
Metadata release lifecycle context embedded in a workflow operation response.

# components.schemas.DeployOpsMetadataReleaseContextResponse.properties.gitOperationId.description
GitOps operation identifier, when the release routed through Git.

# components.schemas.DeployOpsMetadataReleaseContextResponse.properties.prUrl.description
Pull-request URL for the release change.

# components.schemas.DeployOpsMetadataReleaseContextResponse.properties.jobIds.description
Durable job identifiers dispatched by the release.

# components.schemas.DeployOpsMetadataReleaseContextResponse.properties.evidenceRefs.description
Evidence recorded across the release lifecycle.

# components.schemas.DeployOpsMetadataReleaseContextResponse.properties.currentStage.description
Fine-grained metadata release lifecycle stage.

# components.schemas.DeployOpsMetadataReleaseContextResponse.properties.rollbackPlan.description
Rollback plan for the release, when computed.

# components.schemas.DeployOpsOperationResponse.properties.target.description
Deploy target for deploy-shaped operations; null for operations with no deploy spec.

# components.schemas.DeployOpsOperationResponse.properties.metadataRelease.description
Metadata release lifecycle context for metadata-release operations.

# components.schemas.DeployOpsOperationResponse.properties.requestedBy.description
Principal that requested the operation (or api-key:{id} for API-key auth).

# components.schemas.DeployOpsOperationResponse.properties.reason.description
Operator reason recorded on the operation.

# components.schemas.LayerAuthoringDocument.description
Free-form JSON object stored verbatim as a layer authoring document (popupInfo or drawingInfo). Send null to clear the stored document.

# components.schemas.LayerAuthoringDocumentResponse.description
A layer's stored popup-info / drawing-info JSON document.

# components.schemas.LayerAuthoringDocumentResponse.properties.document.description
Stored document, or null when nothing is stored.

# components.schemas.ApiResponseLayerAuthoringDocumentResponse.description
Standard admin envelope wrapping a layer authoring document.

# components.schemas.LayerRelationshipItem.description
A persisted relationship, with the related resource resolved back to its global layer id.

# components.schemas.LayerRelationshipItem.properties.relatedLayerId.description
Global layer id of the related layer, or -1 when the related resource has no numeric publication.

# components.schemas.LayerRelationshipItem.properties.role.description
Relationship role, typically origin or destination.

# components.schemas.LayerRelationshipItem.properties.esriRelationshipId.description
Esri relationship id carried for GeoServices clients.

# components.schemas.ApiResponseLayerRelationshipResponse.description
Standard admin envelope wrapping a layer's relationships.

# components.schemas.LayerRelationshipUpdateItem.description
A single relationship to author on a layer. The related layer is given by its global layer id.

# components.schemas.LayerRelationshipUpdateItem.properties.id.description
Stable relationship identifier; must be unique within the request.

# components.schemas.LayerRelationshipUpdateItem.properties.relatedLayerId.description
Global layer id of the related layer; resolved to its resource id server-side.

# components.schemas.LayerRelationshipUpdateItem.properties.role.description
Relationship role, typically origin or destination. Blank defaults to origin.

# components.schemas.LayerRelationshipUpdateItem.properties.destinationField.description
Destination field; must exist on the related layer.

# components.schemas.LayerRelationshipUpdateRequest.description
Replaces all relationships on the layer's resource. At most 64 relationships are accepted.

# components.schemas.LayerFieldCodedValue.properties.code.description
Code value, JSON-typed to match the field's value type.

# components.schemas.LayerFieldCodedValue.properties.name.description
Human-readable display name for the code.

# components.schemas.LayerFieldDomain.description
Field value domain. Admin field updates accept coded-value domains only.

# components.schemas.LayerFieldDomain.properties.name.description
Stable domain name (1-128 characters on write).

# components.schemas.LayerFieldDomain.properties.type.description
Domain kind. Canonical values are codedValue and range; writes must use codedValue.

# components.schemas.LayerFieldDomain.properties.codedValues.description
Coded value entries when type is codedValue. Writes require 1-512 entries with unique codes.

# components.schemas.LayerFieldDomain.properties.range.description
Range endpoints when type is range: a two-element [min, max] list, JSON-typed to match the field's value type.

# components.schemas.LayerFieldDomain.properties.mergePolicy.description
Optional merge policy metadata for Esri-style clients.

# components.schemas.LayerFieldDomain.properties.splitPolicy.description
Optional split policy metadata for Esri-style clients.

# components.schemas.LayerFieldConfigurationItem.description
Persisted configuration for one layer field.

# components.schemas.LayerFieldConfigurationItem.properties.alias.description
Display alias; falls back to the field description when no override row exists.

# components.schemas.LayerFieldConfigurationItem.properties.domain.description
Coded-value domain override, when configured.

# components.schemas.LayerFieldConfigurationItem.properties.hidden.description
Whether public protocol output omits the field.

# components.schemas.LayerFieldConfigurationResponse.properties.fields.description
Field configurations in resource schema-field order.

# components.schemas.ApiResponseLayerFieldConfigurationResponse.description
Standard admin envelope wrapping a layer's field configuration.

# components.schemas.LayerFieldConfigurationUpdateItem.description
Field configuration update. Fields omitted from the request keep their current configuration.

# components.schemas.LayerFieldConfigurationUpdateItem.properties.alias.description
Display alias. Null or blank clears the alias.

# components.schemas.LayerFieldConfigurationUpdateItem.properties.domain.description
Coded-value domain. Null clears the domain.

# components.schemas.LayerFieldConfigurationUpdateItem.properties.hidden.description
Hidden-field flag. Null preserves the current value. Cannot be true for geometry, primary-id, or OBJECTID fields.

# components.schemas.LayerFieldConfigurationUpdateRequest.description
Layer field configuration update. At least one field is required.

# components.schemas.LayerPermanentFilterConfiguration.description
Permanent filter applied to public feature output for a layer.

# components.schemas.LayerPermanentFilterConfiguration.properties.expression.description
Filter expression text in the declared language.

# components.schemas.LayerPermanentFilterConfiguration.properties.language.description
Filter language token. Canonical values are arcgis-sql, cql2-text, and cql2-json; the aliases arcgis, geoservices-sql, and cql2 are also accepted on write and normalized to the canonical token.

# components.schemas.LayerFilterConfigurationResponse.description
Persisted layer permanent filter configuration.

# components.schemas.LayerFilterConfigurationResponse.properties.permanentFilter.description
Saved permanent filter, or null when none is saved.

# components.schemas.ApiResponseLayerFilterConfigurationResponse.description
Standard admin envelope wrapping a layer's permanent filter configuration.

# components.schemas.LayerFilterConfigurationUpdateRequest.description
Sets or clears the layer permanent filter.

# components.schemas.LayerFilterConfigurationUpdateRequest.properties.permanentFilter.description
Permanent filter to save. Null clears the saved filter.

# components.schemas.LayerValidationCheck.description
Individual layer validation check result.

# components.schemas.LayerValidationCheck.properties.expected.description
Expected value, when the check compares values.

# components.schemas.LayerValidationResponse.description
Validation result for a persisted layer and its backing storage.

# components.schemas.ApiResponseLayerValidationResponse.description
Standard admin envelope wrapping a layer validation result.

# components.schemas.ProposalSummaryResponse.description
Summary view of an operation proposal for the console list surface.

# components.schemas.ProposalSummaryResponse.properties.requestedBy.description
Requesting operator or service principal.

# components.schemas.ProposalSummaryResponse.properties.requestedByAgent.description
Requesting agent identifier when applicable.

# components.schemas.ProposalSummaryResponse.properties.findingId.description
Finding identifier when the proposal originated from deterministic ops findings.

# components.schemas.ProposalSummaryResponse.properties.autonomyRule.description
Finding rule when the proposal originated from deterministic ops findings.

# components.schemas.ProposalSummaryResponse.properties.actionDiscriminator.description
Registered action discriminator, without its hidden execution payload.

# components.schemas.ProposalSummaryResponse.properties.summary.description
Single-line summary of the proposed change.

# components.schemas.ProposalDetailResponse.description
Full detail view of an operation proposal including plan, diff, dry-run, and risk.

# components.schemas.ProposalDetailResponse.properties.requestedBy.description
Requesting operator or service principal.

# components.schemas.ProposalDetailResponse.properties.requestedByAgent.description
Requesting agent identifier when applicable.

# components.schemas.ProposalDetailResponse.properties.findingId.description
Finding identifier when the proposal originated from deterministic ops findings.

# components.schemas.ProposalDetailResponse.properties.autonomyRule.description
Finding rule when the proposal originated from deterministic ops findings.

# components.schemas.ProposalDetailResponse.properties.actionDiscriminator.description
Registered action discriminator, without its hidden execution payload.

# components.schemas.ProposalDetailResponse.properties.summary.description
Single-line summary of the proposed change.

# components.schemas.ProposalDetailResponse.properties.guardrailTier.description
Guardrail tier that routed this operation to approval.

# components.schemas.ProposalDetailResponse.properties.resolutionReason.description
Resolution reason (required on rejection).

# components.schemas.ProposalDetailResponse.properties.executionOperationId.description
Underlying execution operation id once applied.

# components.schemas.RejectProposalRequest.description
Proposal rejection body. A blank or missing reason returns 400.

# components.schemas.ConsoleJobStepArtifact.description
Sanitized artifact reference attached to a job step.

# components.schemas.ConsoleJobStep.description
One sanitized step in a durable execution job's glass-box timeline.

# components.schemas.ConsoleJobStep.properties.ordinal.description
Zero-based step ordinal in the timeline.

# components.schemas.ConsoleJobStep.properties.command.description
Sanitized command executed for the step.

# components.schemas.ConsoleJobStepsResponse.description
Sanitized per-step glass-box timeline for a durable execution job.

# components.schemas.ConsoleJobStepsResponse.properties.correlationId.description
Job correlation id, also echoed in the X-Correlation-Id header.

# components.schemas.DeployOpsOperationListResponse.description
Paged, newest-first collection of durable workflow operations.

# components.schemas.DeployOpsOperationListResponse.properties.items.description
Operations on this page, ordered newest-first by creation time.

# components.schemas.DeployOpsOperationListResponse.properties.page.description
One-based page number that produced this page.

# components.schemas.DeployOpsOperationListResponse.properties.pageSize.description
Effective page size applied when producing this page.

# components.schemas.DeployOpsOperationListResponse.properties.totalCount.description
Total number of operations matching the filter within the materialized window.

# components.schemas.DeployOpsOperationListResponse.properties.hasMore.description
Whether at least one more page exists after this one.

# components.schemas.MetadataReleasePackageListResponse.description
Paged list of metadata release-package summaries.

# components.schemas.MetadataReleasePackageListResponse.properties.count.description
Number of summaries returned in this page.

# components.schemas.MetadataReleasePackageSummary.description
Secret-safe release-package summary: package identity, lifecycle, source/target environments, and coarse counts.

# components.schemas.MetadataReleasePackageSummary.properties.entryCount.description
Number of semantic entries in the package.

# components.schemas.NetworkDatasetResponse.properties.status.description
Lifecycle status: active, building or disabled.

# components.schemas.NetworkDatasetResponse.properties.needsRebuild.description
Whether the topology needs a rebuild after edits (read-only).

# components.schemas.NetworkDatasetResponse.properties.createdBy.description
Admin identity that registered the dataset.

# components.schemas.NetworkDatasetResponse.properties.updatedBy.description
Admin identity that last updated the dataset.

# components.schemas.RegisterNetworkDatasetBody.description
Request body to register a new network dataset.

# components.schemas.RegisterNetworkDatasetBody.properties.edgeTable.description
Schema-qualified pgRouting edge table; validated as a safe identifier.

# components.schemas.RegisterNetworkDatasetBody.properties.vertexTable.description
Schema-qualified pgRouting vertex table; validated as a safe identifier.

# components.schemas.RegisterNetworkDatasetBody.properties.srid.description
Topology SRID. Defaults to 4326 when omitted.

# components.schemas.RegisterNetworkDatasetBody.properties.status.description
Lifecycle status. Defaults to active when omitted.

# components.schemas.UpdateNetworkDatasetBody.description
Request body to update a network dataset. Omitted fields keep their current value.

# components.schemas.UpdateNetworkDatasetBody.properties.clearDescription.description
When true, clears the description and overrides `description`.

# components.schemas.NetworkTopologyGenerationResponse.description
One topology generation of a network dataset.

# components.schemas.NetworkTopologyGenerationResponse.properties.generation.description
Monotonically increasing generation number within the dataset.

# components.schemas.NetworkTopologyGenerationResponse.properties.sourceRevision.description
Content revision the generation was built from or has accumulated edits toward.

# components.schemas.NetworkTopologyGenerationResponse.properties.rowVersion.description
Compare-and-swap version; send back as `If-Match`.

# components.schemas.NetworkTopologyGenerationResponse.properties.srid.description
SRID edge geometry in this generation must use.

# components.schemas.NetworkTopologyGenerationResponse.properties.failureCode.description
Sanitized stable failure code when state is failed.

# components.schemas.NetworkEdgeEditItem.description
One edge create/update item in a batched topology edit.

# components.schemas.NetworkEdgeEditItem.properties.edgeId.description
Stable edge identifier within the dataset.

# components.schemas.NetworkEdgeEditItem.properties.srid.description
SRID of the geometry; must match the target generation's SRID.

# components.schemas.NetworkEdgeEditItem.properties.attributes.description
Allowlisted travel-profile cost attributes. Keys outside the dataset's declared forward/reverse cost columns are rejected.

# components.schemas.NetworkTurnRestrictionEditItem.description
One turn-restriction create/update item in a batched topology edit.

# components.schemas.NetworkTurnRestrictionEditItem.properties.fromEdgeId.description
Incoming edge; must reference an edge staged in the same generation.

# components.schemas.NetworkTurnRestrictionEditItem.properties.toEdgeId.description
Outgoing edge; must reference an edge staged in the same generation.

# components.schemas.NetworkTurnRestrictionEditItem.properties.penalty.description
Non-negative impedance penalty. Required when kind is penalty; otherwise must be omitted.

# components.schemas.NetworkTopologyEditBatchBody.description
All-or-nothing batch of edge and turn-restriction edits against one non-active generation.

# components.schemas.NetworkTopologyEditBatchBody.properties.addEdges.description
Edges to insert. Fails the whole batch if an id already exists in this generation.

# components.schemas.NetworkTopologyEditBatchBody.properties.updateEdges.description
Edges to replace in place. Fails the whole batch if an id does not exist.

# components.schemas.NetworkTopologyEditBatchBody.properties.deleteEdgeIds.description
Edge ids to remove. Fails if an id does not exist or is still referenced by a turn restriction.

# components.schemas.NetworkTopologyEditResultResponse.description
Outcome of an applied (or idempotently replayed) topology edit batch. Never carries geometry, attribute values or profile costs.

# components.schemas.NetworkTopologyEditResultResponse.properties.rowVersion.description
Compare-and-swap version after the mutation; use for the next `If-Match`.

# components.schemas.NetworkTopologyEditResultResponse.properties.state.description
Lifecycle state after the mutation; always dirty on success.

# components.schemas.NetworkTopologyEditResultResponse.properties.wasIdempotentReplay.description
True when the result was replayed from a prior request with the same Idempotency-Key and an identical payload.

# components.schemas.NetworkTopologyRebuildSubmissionResponse.description
Acknowledgement returned when a shadow-topology rebuild is submitted.

# components.schemas.NetworkTopologyRebuildSubmissionResponse.properties.operationId.description
Durable execution-job id; use /jobs/{jobId} for generic status, cancel and retry.

# components.schemas.NetworkTopologyRebuildCheckpoint.properties.detail.description
Sanitized stage detail such as edge/vertex counts; never raw geometry or SQL.

# components.schemas.NetworkTopologyRebuildAttemptResponse.description
One rebuild attempt with its lease state and stage checkpoints.

# components.schemas.NetworkTopologyRebuildAttemptResponse.properties.operationId.description
Durable execution-job operation id driving this attempt.

# components.schemas.NetworkTopologyRebuildAttemptResponse.properties.evidenceDigest.description
Integrity-evidence digest once the attempt is ready.

# components.schemas.NetworkTopologyRebuildAttemptResponse.properties.ownerId.description
Worker currently holding the rebuild lease.

# components.schemas.NetworkTopologyPromotionBody.description
Request body to promote a ready generation or roll back to a retired one. All three fencing fields are required and must be positive.

# components.schemas.NetworkTopologyPromotionBody.properties.targetGeneration.description
Generation to promote (must be ready) or roll back to (must be retired).

# components.schemas.NetworkTopologyPromotionBody.properties.expectedActiveGeneration.description
The active generation the caller last observed.

# components.schemas.NetworkTopologyPromotionBody.properties.expectedActiveRowVersion.description
The active generation's row version the caller last observed.

# components.schemas.NetworkTopologyPromotionBody.properties.reason.description
Optional operator-supplied reason, recorded in the immutable history.

# components.schemas.NetworkTopologyPromotionResponse.properties.fromGeneration.description
Generation that was active before this promotion, if any.

# components.schemas.NetworkTopologyPromotionResponse.properties.actor.description
Authenticated admin identity that performed the promotion.

# components.schemas.NetworkTopologyPromotionResponse.properties.evidenceDigest.description
Integrity-evidence digest of the generation that became active.

# components.schemas.OpsRedisServerInfo.description
Redis server connection and statistics information.

# components.schemas.OpsRedisServerInfo.properties.usedMemory.description
Human-readable memory usage reported by Redis.

# components.schemas.OpsCacheHealthResponse.description
Cache health and effective cache configuration.

# components.schemas.OpsCacheHealthResponse.properties.isUsingFallback.description
Whether the cache is currently serving from the in-memory fallback.

# components.schemas.OpsCacheStatisticsResponse.description
Aggregate cache counters plus backend storage metrics.

# components.schemas.OpsCacheStatisticsResponse.properties.types.description
Per-cache-type counters keyed by cache type name.

# components.schemas.OpsRedisConnectionMetricsResponse.description
Redis connection metrics. When Redis is not configured only `generatedAt`, `isConfigured` and `isConnected` are present.

# components.schemas.OpsCacheInvalidationRequest.description
Cache invalidation request. At least one of keyPattern, serviceId or scope must be supplied.

# components.schemas.OpsCacheInvalidationRequest.properties.keyPattern.description
Key pattern for pattern-based removal, for example `layer:*`. Takes precedence over the other fields.

# components.schemas.OpsCacheInvalidationRequest.properties.serviceId.description
Service id for service-scoped invalidation.

# components.schemas.OpsCacheInvalidationRequest.properties.layerId.description
Layer index for layer-scoped invalidation; requires serviceId.

# components.schemas.OpsCacheInvalidationRequest.properties.scope.description
Named scope for predefined invalidation targets, matched case-insensitively.

# components.schemas.OpsCacheInvalidationResponse.properties.detail.description
Additional detail about what was invalidated.

# components.schemas.OpsGeocodingProviderCapabilities.description
Capability flags for a geocoding provider.

# components.schemas.OpsGeocodingProviderStatus.description
Health and capability status for a single geocoding provider.

# components.schemas.OpsGeocodingProviderStatus.properties.capabilities.description
Null when the health result has no matching registered provider.

# components.schemas.OpsGeocodingConfigurationResponse.description
Read-only snapshot of geocoding configuration.

# components.schemas.OpsStreamingSubscriberInfo.properties.clientLabel.description
Optional label supplied at subscribe time.

# components.schemas.OpsStreamingSubscriberDisconnectResponse.description
Message-only admin envelope; no data payload is emitted.

# components.schemas.OpsOperationProgressResponse.description
Progress record for a tracked operation. The concrete shape varies by operation type and carries type-specific fields in addition to the common ones below; property names on this surface are PascalCase. The identifier is emitted under the concrete record's own name (for example `UploadId`, `ImportId`, `OperationId`).

# components.schemas.OpsOperationProgressResponse.properties.Status.description
Operation status ordinal: 0 Queued, 1 Processing, 2 Completed, 3 Failed, 4 Cancelled.

# components.schemas.OpsOperationProgressResponse.properties.PercentComplete.description
Progress percentage (0-100); null when the total is unknown.

# components.schemas.OpsOperationProgressResponse.properties.Duration.description
Elapsed time serialized as a .NET timespan string.

# components.schemas.OpsOperationListItem.description
One operation in a list payload: the concrete progress record, normalized so `operationId` and `type` are always present as lowercase keys.

# components.schemas.OpsOperationListItem.properties.type.description
Operation type ordinal: 0 Upload, 1 Import, 2 Ingest, 3 ExternalImport, 4 TileCache, 5 PMTilesArchive, 6 Export, 7 RasterImport, 8 Print, 9 Geoprocessing, 10 Publishing, 11 Orchestration, 12 Deployment, 13 PMTilesPublish, 14 TemporalCorrective.

# components.schemas.OpsActiveOperationsResponse.description
Active operations envelope. Property names are PascalCase.

# components.schemas.OpsActiveOperationsResponse.properties.FilteredByType.description
Operation type ordinal that was applied as a filter, or null when unfiltered.

# components.schemas.OpsOperationsByTypeResponse.description
Operations-by-type envelope. Property names are PascalCase.

# components.schemas.OpsOperationsByTypeResponse.properties.OperationType.description
Operation type ordinal that was requested.

# components.schemas.OpsCancelOperationResponse.description
Cancellation acknowledgement. Property names are PascalCase.

# components.schemas.OpsCancelOperationResponse.properties.Type.description
Operation type ordinal of the cancelled operation.

# components.schemas.MonitoringProblemDetails.description
RFC 7807 problem document emitted by admin routes.

# components.schemas.MonitoringProblemDetails.properties.detail.description
Human-readable explanation. Server internals are never included.

# components.schemas.PreparedStatementCacheStatisticsResponse.description
Prepared statement (query plan) cache performance snapshot.

# components.schemas.PreparedStatementCacheStatisticsResponse.properties.totalStatements.description
Total number of unique statements tracked.

# components.schemas.PreparedStatementCacheStatisticsResponse.properties.preparedStatements.description
Number of statements currently prepared and cached.

# components.schemas.PreparedStatementCacheStatisticsResponse.properties.cacheUtilization.description
Prepared statements divided by the configured maximum cached statements (0.0 to 1.0); 0 when no maximum is configured.

# components.schemas.PerformanceQueryTypeStatistics.description
Query performance statistics for a single query type.

# components.schemas.PerformanceQueryStatistics.description
Aggregated database query execution statistics.

# components.schemas.PerformanceQueryStatistics.properties.avgExecutionTimeMs.description
Average query execution time in milliseconds.

# components.schemas.PerformanceQueryStatistics.properties.p95ExecutionTimeMs.description
95th percentile execution time in milliseconds.

# components.schemas.PerformanceQueryStatistics.properties.byQueryType.description
Per-query-type breakdown keyed by query type name.

# components.schemas.PerformanceSlowQueryRecord.properties.queryText.description
Query text, present only when capture is configured.

# components.schemas.PerformanceSlowQueryRecord.properties.additionalMetrics.description
Additional per-query metrics, when captured.

# components.schemas.PerformanceSlowQueryRecord.properties.exceptionType.description
Exception type name when the query failed.

# components.schemas.PerformanceSlowQueryRecord.properties.exceptionMessage.description
Exception message when the query failed.

# components.schemas.PerformanceResourceTrackingStatistics.description
Statistics about tracked disposable resources.

# components.schemas.PerformanceResourceTrackingStatistics.properties.byResourceType.description
Tracked resource counts keyed by resource type name.

# components.schemas.PerformanceResourceTrackingStatistics.properties.oldestResourceAge.description
Age of the oldest tracked resource, serialized as a .NET TimeSpan string.

# components.schemas.PerformanceResourceLeakInfo.description
A resource that was tracked but never disposed.

# components.schemas.PerformanceResourceLeakInfo.properties.correlationId.description
Correlation id associated with the allocation.

# components.schemas.PerformanceResourceLeakInfo.properties.allocationContext.description
Context in which the resource was allocated.

# components.schemas.PerformanceResourceLeakInfo.properties.age.description
Age of the resource, serialized as a .NET TimeSpan string.

# components.schemas.PerformanceResourceLeakInfo.properties.allocationStackTrace.description
Allocation stack trace, when capture is enabled.

# components.schemas.PerformanceResourceLeakInfo.properties.isAlive.description
Whether the resource object is still reachable in memory.

# components.schemas.PerformanceResourceLeakInfo.properties.resourceHashCode.description
Hash code of the original resource object.

# components.schemas.PerformanceResourceLeakResponse.description
Potential resource leaks detected by the leak detector.

# components.schemas.PerformanceResourceLeakResponse.properties.potentialLeaks.description
Leak records, truncated to the requested maximum.

# components.schemas.PerformanceResourceLeakResponse.properties.totalCount.description
Total number of potential leaks detected, before truncation.

# components.schemas.PerformanceResourceLeakScanResult.description
Result of an on-demand resource leak scan.

# components.schemas.PerformanceResourceLeakScanResult.properties.resourcesGarbageCollected.description
Number of tracked resources that had already been garbage collected.

# components.schemas.PerformanceResourceLeakScanResult.properties.scanDuration.description
Scan duration, serialized as a .NET TimeSpan string.

# components.schemas.PerformanceExceptionTypeStatistic.description
Occurrence tally for a single exception type.

# components.schemas.PerformanceExceptionStatistics.properties.byCategory.description
Exception counts keyed by category (for example Database, Network, Authentication).

# components.schemas.PerformanceExceptionClassification.description
Telemetry classification attached to a recorded exception.

# components.schemas.PerformanceExceptionClassification.properties.severity.description
Severity level, serialized numerically: 1 = Low, 2 = Medium, 3 = High, 4 = Critical.

# components.schemas.PerformanceExceptionClassification.properties.category.description
Exception category (for example Database, Network, Authentication).

# components.schemas.PerformanceExceptionClassification.properties.subcategory.description
More specific classification within the category.

# components.schemas.PerformanceExceptionClassification.properties.isRecoverable.description
Whether this exception type is expected or recoverable.

# components.schemas.PerformanceExceptionClassification.properties.shouldAlert.description
Whether this exception should trigger alerts.

# components.schemas.PerformanceExceptionClassification.properties.rateLimitKey.description
Rate-limiting key used to group similar exceptions.

# components.schemas.PerformanceExceptionRecord.properties.id.description
Unique identifier for this exception record.

# components.schemas.PerformanceExceptionRecord.properties.stackTrace.description
Sanitized stack trace, when capture is enabled.

# components.schemas.PerformanceQueryTypeCacheStatistics.description
Query-result cache statistics for a single query type.

# components.schemas.PerformanceQueryCacheStatistics.properties.totalTimeSavedMs.description
Total execution time avoided by cache hits, in milliseconds.

# components.schemas.PerformanceQueryCacheStatistics.properties.avgMissExecutionTimeMs.description
Average execution time for cache misses, in milliseconds.

# components.schemas.PerformanceQueryCacheStatistics.properties.totalCacheMemoryBytes.description
Approximate memory used by the cache, in bytes.

# components.schemas.PerformanceQueryCacheStatistics.properties.byQueryType.description
Per-query-type breakdown keyed by query type name.

# components.schemas.PerformanceCacheKeyMetrics.description
Effectiveness metrics for a single cache key.

# components.schemas.PerformanceCacheKeyMetrics.properties.memoryBytes.description
Approximate memory used by this entry, in bytes.

# components.schemas.PerformanceCacheKeyMetrics.properties.avgExecutionTimeMs.description
Average execution time when the value is not cached, in milliseconds.

# components.schemas.PerformanceCacheEvictionMetrics.properties.manualEvictions.description
Evictions caused by manual invalidation.

# components.schemas.PerformanceCacheEffectivenessMetrics.description
Per-key cache effectiveness analysis for tuning.

# components.schemas.PerformanceCacheEffectivenessMetrics.properties.lowEfficiencyKeys.description
Keys with low hit ratios; candidates for removal.

# components.schemas.PerformanceCacheInvalidationResponse.description
Result of a pattern-based query-result cache invalidation.

# components.schemas.PerformanceCacheInvalidationResponse.properties.pattern.description
Pattern that was applied. Empty when no cache manager is registered.

# components.schemas.PerformanceSummarySnapshot.description
Combined performance snapshot across query, resource, exception, and cache monitors. Sections are omitted when the corresponding monitor is not registered.

# components.schemas.PerformanceSummarySnapshot.properties.overallHealthScore.description
Derived health score from 0 to 100. Starts at 100 and is reduced for slow queries, potential resource leaks, and a high exception rate; a high cache hit ratio adds a small bonus.

# components.schemas.CacheAdminStatusResponse.properties.isUsingFallback.description
Whether the server is currently serving from the in-memory fallback cache.

# components.schemas.CacheAdminInvalidationRequest.properties.serviceId.description
Service id. Required for the `layer` and `service` scopes.

# components.schemas.CacheAdminInvalidationRequest.properties.layerId.description
Layer id. Required for the `layer` scope.

# components.schemas.CacheAdminInvalidationRequest.properties.collectionId.description
Collection id. Required for the `collection` scope.

# components.schemas.FeatureStreamSessionSummary.description
Admin view of a single feature-change streaming session.

# components.schemas.FeatureStreamSessionSummary.properties.clientLabel.description
Optional label supplied by the client at connect time.

# components.schemas.FeatureStreamSessionSummary.properties.lastQueuedCursor.description
Last event cursor queued to this session's outbound channel; it may not yet have been delivered.

# components.schemas.FeatureStreamSessionSummary.properties.hasFilter.description
Whether the session has an active subscription filter.

# components.schemas.FeatureStreamSessionSummary.properties.filterSummary.description
Human-readable summary of the subscription filter.

# components.schemas.FeatureStreamSessionSummary.properties.serviceIdFilter.description
Service id filter applied to this session.

# components.schemas.FeatureStreamSessionSummary.properties.layerIdFilter.description
Layer id filter applied to this session.

# components.schemas.FeatureStreamSessionsResponse.description
Snapshot of active feature-change streaming sessions.

# components.schemas.FeatureStreamSessionsResponse.properties.webSocketSessions.description
Number of sessions using the WebSocket transport.

# components.schemas.FeatureStreamSessionsResponse.properties.sseSessions.description
Number of sessions using the SSE transport.

# components.schemas.FeatureStreamSessionsResponse.properties.slowConsumerDrops.description
Total slow-consumer disconnects since startup.

# components.schemas.ApiResponseFeatureStreamDisconnect.description
Envelope returned when a streaming session is disconnected. No data payload is emitted.

# components.schemas.ApiResponseFeatureStreamDisconnect.properties.message.description
Confirmation message naming the disconnected session.

# components.schemas.GeoprocessingToolUsageRankEntry.description
A usage-ranked geoprocessing tool with its recorded tallies.

# components.schemas.GeoprocessingToolUsageRankEntry.properties.processId.description
Canonical process id of the geoprocessing tool.

# components.schemas.GeoprocessingToolUsageRankEntry.properties.lastInvokedAt.description
Timestamp of the most recent invocation.

# components.schemas.GeoprocessingUsageRankingResponse.description
Usage-ranked view of the geoprocessing tool catalog.

# components.schemas.FeatureChangeEventRecord.description
Stored feature-change event envelope. Property names are PascalCase in this payload.

# components.schemas.FeatureChangeEventRecord.properties.SourceId.description
Identifier of the node or source that produced the event.

# components.schemas.FeatureChangeEventRecord.properties.Protocol.description
Protocol adapter that performed the mutation.

# components.schemas.FeatureChangeEventRecord.properties.ChangedAttributes.description
Changed attribute values when the originating protocol supplies attribute-level change tracking. Null for deletes and for protocols without attribute tracking.

# components.schemas.FeatureChangeEventRecord.properties.GeometryChanged.description
Whether the feature geometry was modified. Best-effort; false when the originating protocol cannot determine this.

# components.schemas.FeatureChangeEventRecord.properties.GeometryEnvelope.description
Geometry bounding box as [minX, minY, maxX, maxY] captured at mutation time. Null for deletes and non-spatial features.

# components.schemas.FeatureChangeEventRecord.properties.PropertiesJson.description
Pre-serialized JSON of feature attributes at mutation time. Null for deletes.

# components.schemas.FeatureChangeEventRecord.properties.GeometryJson.description
Pre-serialized GeoJSON geometry captured at mutation time. Null for deletes and non-spatial features.

# components.schemas.FeatureEventReplayPage.description
A cursor-paged replay of feature-change events. Property names are PascalCase in this payload.

# components.schemas.FeatureEventReplayPage.properties.NextCursor.description
Cursor of the last returned event; pass it back as `cursor` to fetch the next page. Echoes the requested cursor when the page is empty.

# components.schemas.FeatureEventReplayPage.properties.HasMore.description
Whether more events are available beyond this page.

# components.schemas.ShareAdminProblemDetails.description
RFC 7807 problem payload emitted by the admin Share, replica, and export surfaces (`application/problem+json`).

# components.schemas.ShareAdminProblemDetails.properties.timestamp.description
UTC ISO-8601 timestamp for when the error occurred.

# components.schemas.ShareExportDefinitionRequest.description
Create/replace payload for a scheduled Share export definition.

# components.schemas.ShareExportDefinitionRequest.properties.resourceId.description
Optional Share resource identifier the export is bound to.

# components.schemas.ShareExportDefinitionRequest.properties.layerId.description
Service-local layer id. Must be zero or greater.

# components.schemas.ShareExportDefinitionRequest.properties.destinationType.description
Destination family. Parsed case-insensitively; numeric values are rejected.

# components.schemas.ShareExportDefinitionRequest.properties.destinationConfig.description
Destination configuration key/value pairs. Keys that look like raw secret material (password, secret, token, privateKey, accessKey, apiKey) are rejected unless the key ends with `ref` or `reference`.

# components.schemas.ShareExportDefinitionRequest.properties.format.description
Export output format token passed to the export worker.

# components.schemas.ShareExportDefinitionRequest.properties.schedule.description
Schedule expression the export fires on.

# components.schemas.ShareExportDefinitionRequest.properties.scheduleState.description
Initial schedule state. Defaults to `Active`.

# components.schemas.ShareExportDefinitionResponse.description
A scheduled Share export definition. Secret-looking `destinationConfig` values are returned as `redacted`.

# components.schemas.ShareExportDefinitionResponse.properties.destinationStatus.description
Whether a worker is registered and configured for this destination in the running build.

# components.schemas.ShareExportDefinitionPageResponse.description
Cursor-paged page of Share export definitions.

# components.schemas.ShareExportDefinitionPageResponse.properties.nextCursor.description
Cursor for the next page; omitted when the last page was returned.

# components.schemas.ShareExportRunResponse.properties.jobRunId.description
Durable job operation id backing the run; null when no job was created.

# components.schemas.ShareExportRunResponse.properties.targetSummary.description
Human-readable destination summary, e.g. `S3 bucket exports`.

# components.schemas.ShareItemRefResponse.description
Reference to the shared item traffic was projected for.

# components.schemas.ShareTrafficCountsResponse.description
Share request counts broken down by interaction type.

# components.schemas.ShareTrafficSummaryResponse.properties.itemRef.description
Item the summary is scoped to; omitted for the aggregate (server-wide) summary.

# components.schemas.ShareTrafficBucketResponse.description
One time bucket of a Share traffic series.

# components.schemas.ShareTrafficSeriesResponse.description
Bucketed Share traffic time series for a period.

# components.schemas.ShareTrafficSeriesResponse.properties.itemRef.description
Item the series is scoped to; omitted for the aggregate (server-wide) series.

# components.schemas.ShareTrafficSeriesResponse.properties.bucketDuration.description
Bucket width serialized as a .NET timespan (`hh:mm:ss`).

# components.schemas.EmbedKeyScope.description
Scope describing what an embed key may do.

# components.schemas.EmbedKeyScope.properties.allowedEmbedOrigins.description
Browser origins permitted to load the embed. At least one is required on create.

# components.schemas.EmbedKeyScope.properties.allowedServiceOrigins.description
Service identifiers/origins the embed may call.

# components.schemas.EmbedKeyScope.properties.allowedContentIds.description
Content/item identifiers the embed may render.

# components.schemas.EmbedKeyScope.properties.edition.description
Edition entitlement the key is issued under.

# components.schemas.EmbedKeyScope.properties.rateLimitRequestsPerWindow.description
Maximum embed requests per window; zero disables limiting.

# components.schemas.EmbedKeyScope.properties.rateLimitWindowSeconds.description
Rate window length in seconds; values of zero or less default to 60.

# components.schemas.CreateEmbedKeyRequest.description
Request body for creating an embed API key.

# components.schemas.CreateEmbedKeyRequest.properties.name.description
Human-readable key name used in operator audit and list views.

# components.schemas.CreateEmbedKeyRequest.properties.expiresAt.description
Optional UTC expiration time for the key.

# components.schemas.EmbedKeyResponse.description
Embed key metadata without plaintext key material.

# components.schemas.EmbedKeyResponse.properties.keyPrefix.description
Non-secret key prefix used for operator recognition.

# components.schemas.EmbedKeyResponse.properties.status.description
Lowercase lifecycle status derived at read time (for example `active`, `expired`, `revoked`).

# components.schemas.EmbedKeySecretResponse.description
Create/rotate payload carrying one-time plaintext key material.

# components.schemas.EmbedKeySecretResponse.properties.key.description
Plaintext key material. Returned only at create and rotate time.

# components.schemas.EmbedUsageResponse.properties.total.description
Total matching events across all groups.

# components.schemas.ReplicaManagementSummary.description
Operator-facing summary of a named disconnected-sync replica.

# components.schemas.ReplicaManagementSummary.properties.syncModel.description
Sync model: none, perLayer, or perReplica.

# components.schemas.ReplicaManagementSummary.properties.status.description
Derived status; `expired` once the last successful sync is older than 7 days.

# components.schemas.ReplicaManagementDetail.description
Detail view of a named replica including the server generation cursor.

# components.schemas.ReplicaManagementDetail.properties.lastSyncGeneration.description
Server generation cursor recorded at the last successful synchronization.

# components.schemas.ReplicaManagementListResponse.description
Envelope returned by the replica list endpoint.

# components.schemas.ReplicaConflictSummary.description
Summary of a durable disconnected-sync conflict.

# components.schemas.ReplicaConflictSummary.properties.clientEditApplied.description
Whether the conflicting client edit was still committed to the layer (last-write-wins) or withheld for manual review. Determines what resolving the conflict has to write.

# components.schemas.ReplicaConflictSummary.properties.clientEditOutcomeUnknown.description
Whether the storage layer could not say if the conflicting client edit committed - the transaction's commit acknowledgement was lost. When true, clientEditApplied is not trustworthy in either direction and both acceptClient and keepServer perform a real write rather than a no-op, so the row matches the operator's decision whichever way the ambiguous write went.

# components.schemas.ReplicaConflictSummary.properties.clientEditSuperseded.description
Whether this conflict's own client edit committed but was superseded by a later edit in the same upload to the same feature. clientEditApplied is false for such a record, but the row holds neither this edit's state nor the captured server state, so keepServer performs a real restore rather than a no-op.

# components.schemas.ReplicaConflictFieldChange.description
One attribute's value across the base, client, and server states of a conflict.

# components.schemas.ReplicaConflictFieldChange.properties.baseValue.description
Value in the base/common-ancestor state; omitted when no base state was captured.

# components.schemas.ReplicaConflictDetail.description
Conflict detail with base/client/server feature states and resolution evidence.

# components.schemas.ReplicaConflictDetail.properties.clientEditApplied.description
Whether the conflicting client edit was still committed to the layer (last-write-wins) or withheld for manual review. Accepting the client is a no-op when the edit already landed; keeping the server then restores the captured pre-conflict server state.

# components.schemas.ReplicaConflictDetail.properties.clientEditOutcomeUnknown.description
Whether the storage layer could not say if the conflicting client edit committed - the transaction's commit acknowledgement was lost. When true, clientEditApplied is not trustworthy in either direction and both acceptClient and keepServer perform a real write rather than a no-op, so the row matches the operator's decision whichever way the ambiguous write went.

# components.schemas.ReplicaConflictDetail.properties.clientEditSuperseded.description
Whether this conflict's own client edit committed but was superseded by a later edit in the same upload to the same feature. clientEditApplied is false for such a record, but the row holds neither this edit's state nor the captured server state, so keepServer performs a real restore rather than a no-op.

# components.schemas.ReplicaConflictDetail.properties.baseState.description
Opaque base/common-ancestor feature state; omitted when unknown or unparsable. The GeoServices replica path leaves it unset because the change log carries no per-change value snapshot, so the review diff degrades to a two-way client-vs-server comparison.

# components.schemas.ReplicaConflictDetail.properties.geometryChanged.description
Null when the geometry change cannot be determined.

# components.schemas.ReplicaConflictDetail.properties.fieldChanges.description
Diverging attributes only; omitted when the client/server states are not both comparable.

# components.schemas.ReplicaConflictListResponse.description
Envelope returned by the conflict list endpoint.

# components.schemas.ReplicaConflictResolutionRequest.properties.fieldValues.description
Operator-selected attribute values applied over the currently committed feature state. Required for `mergeFields` (a request without it is a 400) and ignored by every other action. Field names are matched case-insensitively against the captured attributes.

# components.schemas.ReplicaConflictResolutionRequest.properties.geometry.description
Which captured state supplies the winning geometry. Required for `chooseGeometry` (a request without it is a 400) and ignored by every other action.

# components.schemas.ReplicaConflictResolutionResponse.description
Result of applying a conflict resolution. The resolved feature state is committed through the shared edit pipeline before the resolution is recorded, so a resolution that cannot be committed leaves the conflict pending (502) rather than reporting a state that never landed. An action that does not apply to the conflict's recorded state (for example keeping the server after the client's delete already committed) is a 409.

# components.schemas.ReplicaConflictResolutionResponse.properties.committedNewServerState.description
Whether the resolution produced a new committed server state. This reflects what was written, not the action name: accepting a client edit that last-write-wins already committed produces no new state, while keeping the server after such a sync does.

# components.schemas.ReplicaConflictResolutionResponse.properties.effect.description
The feature-store effect the resolution applied.

# components.schemas.ServiceLayerExportAcceptedResponse.description
Returned when a layer export exceeds the synchronous threshold and is queued as a background job.

# components.schemas.ServiceLayerExportAcceptedResponse.properties.operationId.description
Operation id for tracking export progress.

# components.schemas.FormsProblemDetails.description
RFC 7807 problem document emitted by the admin surface.

# components.schemas.MigrationPerformanceEvidenceRecord.description
Persistence envelope wrapping a migration performance evidence artifact with the fields needed for listing and linking.

# components.schemas.MigrationPerformanceEvidenceRecord.properties.evidenceId.description
Stable evidence identifier, typically the artifact fingerprint.

# components.schemas.MigrationPerformanceEvidenceRecord.properties.sourceFamily.description
Source family the artifact was emitted for.

# components.schemas.MigrationPerformanceEvidenceRecord.properties.fixtureSize.description
Fixture size identifier the artifact was emitted for.

# components.schemas.MigrationPerformanceEvidenceRecord.properties.generatedAt.description
Instant the artifact was emitted by the builder.

# components.schemas.MigrationPerformanceEvidenceRecord.properties.fingerprint.description
SHA-256 fingerprint copied from the underlying artifact.

# components.schemas.MigrationPerformanceEvidenceHistoryResponse.description
History page returned by the performance-evidence history endpoint. Filters are echoed so callers can confirm what was applied.

# components.schemas.MigrationPerformanceEvidenceHistoryResponse.properties.limit.description
Effective record cap applied by the store.

# components.schemas.MigrationPerformanceEvidenceHistoryResponse.properties.count.description
Count of records returned in this response.

# components.schemas.MigrationPerformanceEvidenceArtifact.description
Website-linkable migration performance and cost evidence artifact bundling raw run metrics, the baseline classification, the fixture envelope, a fingerprint, and a redaction posture.

# components.schemas.MigrationPerformanceEvidenceArtifact.properties.baselineProfile.description
Baseline profile name used to classify the run.

# components.schemas.MigrationPerformanceEvidenceArtifact.properties.summary.description
Reviewer-facing one-line summary of the run.

# components.schemas.MigrationPerformanceEvidenceArtifact.properties.runId.description
Run identifier copied from the run metrics artifact.

# components.schemas.MigrationPerformanceEvidenceArtifact.properties.measurementScope.description
Measurement scope copied from the run metrics artifact.

# components.schemas.MigrationPerformanceEvidenceArtifact.properties.fingerprint.description
SHA-256 fingerprint over canonical JSON of run metrics and baseline evaluation, prefixed `sha256:`.

# components.schemas.MigrationPerformanceEvidenceRedactionPosture.description
Deny-by-default redaction posture proving the artifact excludes URLs, credentials, source data, and operator identities.

# components.schemas.MigrationPerformanceEvidenceRedactionPosture.properties.sourceUrlsIncluded.description
Always false; source URLs are stripped before emission.

# components.schemas.MigrationPerformanceEvidenceRedactionPosture.properties.credentialValuesIncluded.description
Always false; credential values are stripped before emission.

# components.schemas.MigrationPerformanceEvidenceRedactionPosture.properties.sourceDataIncluded.description
Always false; source feature/coverage payloads are never bundled.

# components.schemas.MigrationPerformanceEvidenceRedactionPosture.properties.operatorIdentitiesIncluded.description
Always false; operator-identifying values are stripped before emission.

# components.schemas.MigrationPerformanceEvidenceRedactionPosture.properties.omittedFields.description
Deterministic list of field categories intentionally omitted.

# components.schemas.MigrationPerformanceEvidenceRedactionPosture.properties.summary.description
Short reviewer-facing explanation of the posture.

# components.schemas.MigrationFixtureSizeProfile.description
Deterministic expected envelope describing what a fixture of a given size should produce for a source family.

# components.schemas.MigrationFixtureSizeProfile.properties.description.description
Reviewer-facing description of the fixture envelope.

# components.schemas.MigrationFixtureSizeProfile.properties.expectedResourceCount.description
Expected resource count emitted by the fixture.

# components.schemas.MigrationFixtureSizeProfile.properties.expectedFeatureCount.description
Expected features emitted by the fixture.

# components.schemas.MigrationFixtureSizeProfile.properties.expectedCoverageCount.description
Expected coverages or raster assets emitted by the fixture.

# components.schemas.MigrationFixtureSizeProfile.properties.expectedDurationMilliseconds.description
Expected wall-clock duration for a full run.

# components.schemas.MigrationFixtureSizeProfile.properties.expectedBytesWritten.description
Expected bytes written to Honua stores or artifacts.

# components.schemas.MigrationRunMetricsArtifact.description
Raw, secret-safe migration run measurements included verbatim for traceability.

# components.schemas.MigrationRunMetricsArtifact.properties.sourceKind.description
Source kind identifier such as `geoserver-rest` or `arcgis-geoservices-rest`.

# components.schemas.MigrationRunMetricsArtifact.properties.runId.description
Deterministic run identifier supplied by the harness or job.

# components.schemas.MigrationRunMetricsArtifact.properties.measurementScope.description
Human-readable scope for the measured run.

# components.schemas.MigrationRunMetricsArtifact.properties.phases.description
Phase-level measurements in deterministic order.

# components.schemas.MigrationRunMetricsArtifact.properties.resourceSamples.description
CPU and memory samples collected at intervals; empty when sampling was not enabled.

# components.schemas.MigrationRunMetricsArtifact.properties.resumeMarkers.description
Resume markers (idempotency keys, resume tokens) observed during the run.

# components.schemas.MigrationRunMetricsSourceSummary.description
Secret-safe source identity used in migration run metrics.

# components.schemas.MigrationRunMetricsSourceSummary.properties.displayName.description
Human-readable source label after URL and credential redaction.

# components.schemas.MigrationRunMetricsSourceSummary.properties.serviceType.description
Source service type or protocol subtype when known.

# components.schemas.MigrationRunMetricsValues.description
Raw measurement values for a phase or aggregate scope. Every value is optional and omitted when the recorder could not measure it.

# components.schemas.MigrationRunMetricsValues.properties.bytesRead.description
Bytes read from source systems or staging artifacts.

# components.schemas.MigrationRunMetricsValues.properties.bytesWritten.description
Bytes written to Honua-owned stores or output artifacts.

# components.schemas.MigrationRunMetricsValues.properties.resumeFromCheckpoint.description
Whether the run resumed from a persisted checkpoint.

# components.schemas.MigrationRunMetricsValues.properties.idempotentReplayCount.description
Apply-phase replays that produced no incremental change.

# components.schemas.MigrationRunMetricsValues.properties.peakMemoryBytes.description
Peak resident memory in bytes when measurable.

# components.schemas.MigrationRunMetricsValues.properties.databaseGrowthBytes.description
Database growth in bytes attributed to this scope.

# components.schemas.MigrationRunMetricsValues.properties.databaseGrowthRows.description
Database row growth attributed to this scope.

# components.schemas.MigrationRunMetricsValues.properties.artifactBytes.description
Size in bytes of the evidence artifact emitted for this scope.

# components.schemas.MigrationRunMetricsValues.properties.candidateItemCount.description
Candidate items used as the manual-review denominator.

# components.schemas.MigrationRunMetricsValues.properties.manualReviewRatio.description
Manual review ratio when both counts are known.

# components.schemas.MigrationRunMetricsResourceSample.description
CPU and memory sample captured at a single instant during the run.

# components.schemas.MigrationRunMetricsResourceSample.properties.cpuMilliseconds.description
CPU milliseconds consumed at sample time.

# components.schemas.MigrationRunMetricsResourceSample.properties.workingSetBytes.description
Working-set memory bytes at sample time.

# components.schemas.MigrationRunMetricsPrivacySummary.description
Privacy posture for migration run metrics.

# components.schemas.MigrationRunMetricsPrivacySummary.properties.sourceUrlsIncluded.description
Whether source URLs are present (always false).

# components.schemas.MigrationRunMetricsPrivacySummary.properties.credentialValuesIncluded.description
Whether credential values are present (always false).

# components.schemas.MigrationRunMetricsPrivacySummary.properties.sourceDataIncluded.description
Whether source feature/coverage payloads are present (always false).

# components.schemas.MigrationRunMetricsPrivacySummary.properties.omittedFields.description
Fields intentionally omitted from the artifact.

# components.schemas.MigrationRunMetricsBaselineArtifact.description
Pass/warn/fail evaluation of run metrics against a chosen baseline.

# components.schemas.MigrationRunMetricsBaselineArtifact.properties.sourceFamily.description
Source family the run was evaluated for.

# components.schemas.MigrationRunMetricsBaselineArtifact.properties.size.description
Fixture size the run was evaluated against.

# components.schemas.MigrationRunMetricsBaselineArtifact.properties.baselineProfile.description
Baseline profile name used by the evaluator.

# components.schemas.MigrationRunMetricsBaselineArtifact.properties.status.description
Aggregate status across all evaluated metrics.

# components.schemas.MigrationRunMetricsBaselineArtifact.properties.summary.description
Reviewer-facing summary explaining the status.

# components.schemas.MigrationRunMetricsBaselineArtifact.properties.runId.description
Run id copied from the input artifact when available.

# components.schemas.MigrationRunMetricsBaselineArtifact.properties.measurementScope.description
Measurement scope copied from the input artifact.

# components.schemas.MigrationRunMetricsBaselineArtifact.properties.signals.description
Per-metric classification signals in deterministic order.

# components.schemas.MigrationMetricBaselineSignal.description
Classification of one metric against its baseline band.

# components.schemas.MigrationMetricBaselineSignal.properties.observed.description
Observed metric value when present in the run artifact.

# components.schemas.MigrationMetricBaselineSignal.properties.warnThreshold.description
Warning threshold or floor copied from the band.

# components.schemas.MigrationMetricBaselineSignal.properties.failThreshold.description
Failure threshold or floor copied from the band.

# components.schemas.MigrationMetricBaselineSignal.properties.summary.description
Short deterministic explanation for reviewers.

# components.schemas.MigrationRunDto.description
Wire representation of a recorded migration run.

# components.schemas.MigrationRunDto.properties.sourceKind.description
Source kind, for example `geoserver-rest`.

# components.schemas.MigrationRunDto.properties.sourceUrl.description
Redacted source URL; empty for offline-manifest runs.

# components.schemas.MigrationRunDto.properties.completedAt.description
UTC completion instant; null while running.

# components.schemas.MigrationRunDto.properties.evidencePackRef.description
Storage reference for the evidence pack.

# components.schemas.MigrationRunDto.properties.evidencePackFingerprint.description
Bundle fingerprint of the evidence pack.

# components.schemas.MigrationRunDto.properties.statusNote.description
Operator-visible note recorded on cancel or failure.

# components.schemas.MigrationRunDto.properties.hasEvidencePack.description
True when the evidence pack is available for download.

# components.schemas.MigrationRunDto.properties.reconciliationScorecardFingerprint.description
Fingerprint of the signed reconciliation scorecard, when recorded.

# components.schemas.MigrationRunDto.properties.hasReconciliationScorecard.description
True when the reconciliation scorecard is available for download.

# components.schemas.MigrationRunStartRequest.description
Request body for recording the start of a migration run.

# components.schemas.MigrationRunStartRequest.properties.runId.description
Stable run identifier supplied by the migration producer. Required.

# components.schemas.MigrationRunStartRequest.properties.sourceKind.description
Source kind identifier, for example `arcgis-geoservices-rest`. Required.

# components.schemas.MigrationRunStartRequest.properties.sourceUrl.description
Redacted source URL. Optional for offline-manifest runs.

# components.schemas.MigrationRunStartRequest.properties.startedAt.description
UTC instant the run started. Defaults to server receive time.

# components.schemas.MigrationRunCompletionRequest.description
Request body for recording the terminal state of a migration run.

# components.schemas.MigrationRunCompletionRequest.properties.completedAt.description
UTC instant the run completed. Defaults to server receive time.

# components.schemas.MigrationRunCompletionRequest.properties.evidencePackRef.description
Storage reference for the evidence pack.

# components.schemas.MigrationRunCompletionRequest.properties.evidencePackBody.description
Evidence pack JSON body to persist inline. Must be valid JSON when supplied.

# components.schemas.MigrationRunCancelRequest.description
Optional request body for cancelling a migration run.

# components.schemas.MigrationRunCancelRequest.properties.reason.description
Operator-supplied note explaining why the run was cancelled. Persisted verbatim as the run's status note; no secrets expected.

# components.schemas.MigrationReconciliationScorecard.description
Signed, deterministic roll-up of a migration run's reconciliation outcome. Data reconciliation (did the bytes land) and capability parity (could the construct be expressed) are kept as separate dimensions rather than averaged.

# components.schemas.MigrationReconciliationScorecard.properties.runId.description
Originating migration run identifier. Must match the route run id when posting.

# components.schemas.MigrationReconciliationScorecard.properties.generatedAt.description
UTC instant the scorecard was generated.

# components.schemas.MigrationReconciliationScorecard.properties.verdict.description
Overall gate verdict, derived from the data-reconciliation dimension only.

# components.schemas.MigrationReconciliationScorecard.properties.fingerprint.description
SHA-256 fingerprint of the scorecard body formatted `sha256:<hex>`. Required when posting a scorecard.

# components.schemas.MigrationScorecardDataReconciliation.properties.layerCount.description
Total layers covered by data reconciliation.

# components.schemas.MigrationScorecardDataReconciliation.properties.skippedCount.description
Layers skipped, for example with no published target to reconcile against.

# components.schemas.MigrationScorecardDataReconciliation.properties.catalogFindingCount.description
Catalog-parity findings folded into this dimension.

# components.schemas.MigrationScorecardDataReconciliation.properties.layers.description
Per-layer scorecard rows, ordered deterministically by source layer id.

# components.schemas.MigrationScorecardDataReconciliation.properties.reasons.description
Sorted, deduplicated, secret-safe blocking/advisory reasons rolled up across all layers.

# components.schemas.MigrationScorecardLayer.description
One per-layer row in the data-reconciliation dimension.

# components.schemas.MigrationScorecardLayer.properties.targetHonuaLayerId.description
Honua catalog layer id, when a queryable layer was published.

# components.schemas.MigrationScorecardCapabilityParity.description
Capability-parity dimension: how many source constructs could be expressed on Honua. Advisory only; never gates a run.

# components.schemas.MigrationScorecardCapabilityParity.properties.assistedCount.description
Constructs expressible with operator assistance.

# components.schemas.MigrationScorecardCapabilityParity.properties.parityRatio.description
(automated + assisted) / construct count in [0, 1], or 1 when nothing was assessed.

# components.schemas.FormsPackageSummary.properties.currentPublishedVersion.description
Current published version, when present.

# components.schemas.FormsPackageVersion.properties.contentHash.description
Stable content hash for the package document.

# components.schemas.FormsPackageVersion.properties.policyHash.description
Policy hash covering submit, attachment, privacy, and offline policy.

# components.schemas.FormsPackageVersion.properties.etag.description
HTTP ETag for draft concurrency and immutable readback.

# components.schemas.FormsPackageVersion.properties.publishedAt.description
UTC publish timestamp for published versions.

# components.schemas.FormsPackageVersion.properties.reopenedFromVersion.description
Published version that was reopened into this draft.

# components.schemas.FormsPackageDocument.description
Survey-style form package document governed by Honua Server.

# components.schemas.FormsPackageDocument.properties.formId.description
Stable package identifier. Generated by the server when omitted on create.

# components.schemas.FormsPackageDocument.properties.title.description
Human-readable title shown in builder and field clients.

# components.schemas.FormsPackageDocument.properties.metadata.description
Opaque package metadata. Values must be policy-safe and non-secret.

# components.schemas.FormsTargetDefinition.description
Feature service and layer binding for a form package.

# components.schemas.FormsSectionDefinition.description
Section or group used to organize form fields.

# components.schemas.FormsSectionDefinition.properties.repeatable.description
Whether this section can be captured multiple times per record.

# components.schemas.FormsFieldDefinition.description
Single field or attachment control definition in a package.

# components.schemas.FormsFieldDefinition.properties.fieldId.description
Stable field identifier used by clients and submissions.

# components.schemas.FormsFieldDefinition.properties.type.description
Form field type such as text, number, date, choice, geometry, or attachment.

# components.schemas.FormsFieldDefinition.properties.targetField.description
Target layer attribute field. Attachment fields do not require one.

# components.schemas.FormsFieldDefinition.properties.required.description
Whether a submission must provide a value.

# components.schemas.FormsFieldDefinition.properties.readOnly.description
Whether clients should render the control read-only.

# components.schemas.FormsFieldDefinition.properties.private.description
Whether the field carries sensitive values that should be minimized in records.

# components.schemas.FormsFieldDefinition.properties.defaultValue.description
Default value encoded as JSON. Any JSON value.

# components.schemas.FormsFieldDefinition.properties.validation.description
Declarative validation rules applied by the server.

# components.schemas.FormsFieldDomainDefinition.description
Form-level domain definition for a field.

# components.schemas.FormsFieldDomainDefinition.properties.type.description
Domain type, usually `codedValue` or `range`.

# components.schemas.FormsFieldDomainDefinition.properties.min.description
Inclusive minimum for range domains. Any JSON value.

# components.schemas.FormsFieldDomainDefinition.properties.max.description
Inclusive maximum for range domains. Any JSON value.

# components.schemas.FormsDomainChoice.description
Coded-value choice exposed by a form field domain.

# components.schemas.FormsValidationRule.description
Server-validated rule applied to a submitted form value.

# components.schemas.FormsValidationRule.properties.type.description
Rule type such as minLength, maxLength, min, max, or regex.

# components.schemas.FormsValidationRule.properties.parameters.description
Rule parameters encoded as JSON. Any JSON value.

# components.schemas.FormsConditionalRule.description
Conditional rule used for form visibility decisions.

# components.schemas.FormsConditionalRule.properties.operator.description
Operator such as equals, notEquals, in, isEmpty, or isNotEmpty.

# components.schemas.FormsConditionalRule.properties.value.description
Comparison value encoded as JSON. Any JSON value.

# components.schemas.FormsSubmitPolicy.properties.allowedOperations.description
Allowed edit operations. Defaults to create-only.

# components.schemas.FormsSubmitPolicy.properties.requiresGeometry.description
Whether create/update submissions must include geometry when the target layer has geometry.

# components.schemas.FormsSubmitPolicy.properties.allowAttachments.description
Whether published submissions may include attachments.

# components.schemas.FormsSubmitPolicy.properties.maxOfflineAgeSeconds.description
Maximum accepted offline age in seconds.

# components.schemas.FormsAttachmentPolicy.properties.enabled.description
Whether submissions may include attachments.

# components.schemas.FormsAttachmentPolicy.properties.maxAttachmentsPerSubmission.description
Maximum attachments accepted in one submission.

# components.schemas.FormsAttachmentPolicy.properties.maxTotalBytes.description
Maximum total attachment bytes per submission.

# components.schemas.FormsAttachmentPolicy.properties.allowedContentTypes.description
Allowed MIME types. Wildcards such as `image/*` are supported.

# components.schemas.FormsAttachmentPolicy.properties.requireExifStripping.description
Whether EXIF stripping is required before persistence.

# components.schemas.FormsAttachmentPolicy.properties.requireFaceBlur.description
Whether face blur is required before persistence.

# components.schemas.FormsAttachmentPolicy.properties.requireRedaction.description
Whether arbitrary redaction is required before persistence.

# components.schemas.FormsFieldAttachmentPolicy.description
Attachment policy scoped to one form field.

# components.schemas.FormsFieldAttachmentPolicy.properties.maxCount.description
Maximum attachments accepted for this field.

# components.schemas.FormsFieldAttachmentPolicy.properties.required.description
Whether this attachment field is required.

# components.schemas.FormsPrivacyPolicy.description
Privacy policy attached to a form package.

# components.schemas.FormsPrivacyPolicy.properties.privateFieldIds.description
Field ids whose values must not be copied into audit details.

# components.schemas.FormsPrivacyPolicy.properties.requiredTransformations.description
Required transforms such as `none` or `auditOnly`.

# components.schemas.FormsPrivacyPolicy.properties.captureActor.description
Whether server records should capture the actor identifier.

# components.schemas.FormsPrivacyPolicy.properties.captureDeviceId.description
Whether server records should capture the client/device id.

# components.schemas.FormsOfflinePolicy.properties.enabled.description
Whether field clients may cache this package for offline work.

# components.schemas.FormsOfflinePolicy.properties.preferredTransports.description
Preferred transport identifiers in priority order.

# components.schemas.FormsOfflinePolicy.properties.replicaTransportEnabled.description
Whether GeoServices FeatureServer replica endpoints should be advertised.

# components.schemas.FormsOfflinePolicy.properties.fieldCollectionTransportEnabled.description
Whether FieldCollection mobile sync endpoints should be advertised.

# components.schemas.FormsOfflinePolicy.properties.conflictReviewMode.description
Conflict review mode; defaults to `defer`.

# components.schemas.FormsProvenanceRef.properties.source.description
Tool or subsystem that produced the package.

# components.schemas.FormsPackageValidationResult.description
Validation result for a form package version.

# components.schemas.FormsPackageValidationResult.properties.isValid.description
Whether the validated subject has no error-severity issues.

# components.schemas.FormsValidationIssue.properties.severity.description
Issue severity, usually `error` or `warning`.

# components.schemas.FieldWorkflowsSubmissionListResult.description
Page of mobile-submitted field records returned by a review listing.

# components.schemas.FieldWorkflowsSubmissionListResult.properties.total.description
Total records matching the filter, ignoring paging.

# components.schemas.FieldWorkflowsSubmissionRecord.description
Read-only projection of a mobile-submitted field record combined with its server-owned review state.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.formId.description
Form package id this record was submitted against.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.formVersion.description
Form package version this record was submitted against.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.targetFeatureId.description
Target feature id when the submission was applied.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.operation.description
Submitted edit operation (create, update, delete).

# components.schemas.FieldWorkflowsSubmissionRecord.properties.hasValidationIssues.description
Whether the submission carried validation issues.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.validation.description
Sanitized validation payload captured at submission time, when present. Any JSON value; null when absent.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.geometry.description
Pre-sanitized submitted geometry, when the submission carried one. Any JSON value; null when absent.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.submitterHash.description
Hashed submitter/actor identifier; never a raw credential.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.deviceId.description
Client/device identifier supplied with the submission.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.attachmentCount.description
Count of accepted attachments persisted for this submission.

# components.schemas.FieldWorkflowsSubmissionRecord.properties.hasConflict.description
Whether the submission is flagged as conflicting.

# components.schemas.FieldWorkflowsReviewState.description
Server-owned review state for a submitted field record. All transitions are audited.

# components.schemas.FieldWorkflowsReviewState.properties.assignedTo.description
Reviewer the record is assigned to, when assigned.

# components.schemas.FieldWorkflowsReviewState.properties.decidedBy.description
Actor that recorded the most recent review decision.

# components.schemas.FieldWorkflowsReviewState.properties.decidedAt.description
UTC timestamp of the most recent review decision.

# components.schemas.FieldWorkflowsReviewState.properties.decisionNote.description
Reviewer note attached to the most recent decision.

# components.schemas.FieldWorkflowsReviewState.properties.updatedAt.description
UTC timestamp the review state was last updated.

# components.schemas.FieldWorkflowsReviewState.properties.etag.description
Optimistic-concurrency token for the review state.

# components.schemas.FieldWorkflowsSubmissionDetail.description
Detail view of a submission combining the record, its review comments, and stored attachment metadata.

# components.schemas.FieldWorkflowsSubmissionDetail.properties.comments.description
Reviewer comments and correction requests, oldest first.

# components.schemas.FieldWorkflowsSubmissionDetail.properties.attachments.description
Persisted attachment metadata for this submission.

# components.schemas.FieldWorkflowsReviewComment.description
A single reviewer comment or correction request attached to a submission.

# components.schemas.FieldWorkflowsReviewComment.properties.correctionRequest.description
Whether this comment is a formal correction request.

# components.schemas.FieldWorkflowsSubmissionAttachmentInfo.description
Sanitized attachment metadata exposed to reviewers.

# components.schemas.FieldWorkflowsSubmissionAttachmentInfo.properties.attachmentId.description
Persisted attachment id, when the upload succeeded.

# components.schemas.FieldWorkflowsSubmissionAttachmentInfo.properties.fieldId.description
Form field id the attachment was captured for.

# components.schemas.FieldWorkflowsAssignmentRequest.description
Request to assign or unassign a submission to a reviewer.

# components.schemas.FieldWorkflowsAssignmentRequest.properties.assignedTo.description
Reviewer to assign, or null/empty to unassign.

# components.schemas.FieldWorkflowsDecisionRequest.properties.note.description
Reviewer note recorded with the decision.

# components.schemas.FieldWorkflowsCommentRequest.description
Request to add a reviewer comment or correction request.

# components.schemas.FieldWorkflowsCommentRequest.properties.correctionRequest.description
When true the comment is recorded as a correction request and transitions the record to `changes_requested`.

# components.schemas.FieldWorkflowsExportRequest.description
Filter and output format describing a back-office field export package. The filter mirrors the review listing filter so an export selects exactly the records the review surface exposes.

# components.schemas.FieldWorkflowsExportRequest.properties.serviceId.description
Restrict to a single target service id (project scope).

# components.schemas.FieldWorkflowsExportRequest.properties.assignedTo.description
Restrict to records assigned to a reviewer.

# components.schemas.FieldWorkflowsExportRequest.properties.hasConflict.description
When set, restrict to records flagged as conflicting.

# components.schemas.FieldWorkflowsExportRequest.properties.submittedFrom.description
Inclusive lower bound on submission time.

# components.schemas.FieldWorkflowsExportRequest.properties.submittedTo.description
Inclusive upper bound on submission time.

# components.schemas.FieldWorkflowsExportRecord.description
Durable, audited record of a generated field export package.

# components.schemas.FieldWorkflowsExportRecord.properties.format.description
Output format the package was generated in.

# components.schemas.FieldWorkflowsExportRecord.properties.recordCount.description
Number of submission records included in the package.

# components.schemas.FieldWorkflowsExportRecord.properties.filter.description
Sanitized JSON description of the filter applied to the export.

# components.schemas.FieldWorkflowsExportRecordListResult.description
Page of export records returned by an export-history listing.

# components.schemas.FieldWorkflowsExportRecordListResult.properties.items.description
Export records in this page, newest first.

# components.schemas.SceneDatasetExtent.description
WGS-84 axis-aligned bounding box. All four bounds must be supplied together on write; responses always populate all four when an extent is present.

# components.schemas.SceneDatasetCachePolicy.description
Cache directives emitted by the hosted scene-serving path.

# components.schemas.SceneDatasetCachePolicy.properties.maxAgeSeconds.description
Recommended Cache-Control max-age (0-86400). Defaults to 3600.

# components.schemas.SceneDatasetCachePolicy.properties.noStore.description
Whether downstream caches must not store the response.

# components.schemas.SceneDatasetSummary.description
Lightweight scene dataset projection used in list responses.

# components.schemas.SceneDatasetSummary.properties.isPublic.description
Whether the dataset is publicly readable.

# components.schemas.SceneDatasetSummary.properties.requiresAuth.description
Whether the dataset requires authentication.

# components.schemas.SceneDatasetSummary.properties.revision.description
Revision counter, bumped on each update.

# components.schemas.SceneDatasetDetail.properties.assetRoot.description
Filesystem path containing the root tileset document.

# components.schemas.SceneDatasetDetail.properties.requiresAuth.description
Whether the dataset requires authentication.

# components.schemas.SceneDatasetDetail.properties.isPublic.description
Whether the dataset is publicly readable.

# components.schemas.SceneDatasetDetail.properties.allowedRoles.description
Roles allowed to read a protected dataset.

# components.schemas.SceneDatasetResolveResponse.description
Serving metadata plus copy-paste embed snippets for an active scene dataset.

# components.schemas.SceneDatasetResolveResponse.properties.tilesetUrl.description
Absolute URL of the root tileset document.

# components.schemas.SceneDatasetResolveResponse.properties.isPublic.description
Whether the dataset is publicly readable.

# components.schemas.SceneDatasetResolveResponse.properties.requiresAuth.description
Whether the dataset requires authentication.

# components.schemas.SceneDatasetResolveResponse.properties.cesiumJsSnippet.description
CesiumJS initialization snippet for the tileset.

# components.schemas.SceneDatasetResolveResponse.properties.honuaSceneSnippet.description
Honua scene custom-element snippet for the tileset.

# components.schemas.RegisterSceneDatasetRequest.description
Body for registering a scene dataset that points at an existing tileset on disk.

# components.schemas.RegisterSceneDatasetRequest.properties.assetRoot.description
Filesystem path containing the root tileset document. Required.

# components.schemas.RegisterSceneDatasetRequest.properties.tilesetFileName.description
Filename of the root tileset document. Defaults to tileset.json.

# components.schemas.RegisterSceneDatasetRequest.properties.datasetType.description
Source kind. Case-insensitive; hostedtiles and pointcloud are also accepted. Defaults to hosted_tiles.

# components.schemas.RegisterSceneDatasetRequest.properties.requiresAuth.description
Whether the dataset requires authentication.

# components.schemas.RegisterSceneDatasetRequest.properties.isPublic.description
Whether the dataset is publicly readable. Defaults to true.

# components.schemas.RegisterSceneDatasetRequest.properties.allowedRoles.description
Roles allowed to read a protected dataset.

# components.schemas.UpdateSceneDatasetRequest.description
Body for updating a scene dataset. Every field is optional; omitted fields keep their previous value and the clear* flags reset a value.

# components.schemas.UpdateSceneDatasetRequest.properties.clearAllowedRoles.description
Pass true to clear the allowed-roles list.

# components.schemas.GenerateSceneRequest.description
Body for generating a 3D Tiles tileset from a published feature layer.

# components.schemas.GenerateSceneRequest.properties.layerId.description
Layer to convert into a 3D Tiles tileset. Must be a positive integer.

# components.schemas.GenerateSceneRequest.properties.sceneId.description
Optional explicit scene id (slug). Derived from the layer name and intent id when omitted.

# components.schemas.GenerateSceneRequest.properties.displayName.description
Optional display name; defaults to the layer name.

# components.schemas.GenerateSceneRequest.properties.includeAttributes.description
Optional allowlist of attribute fields to include in the tileset metadata schema.

# components.schemas.GenerateSceneRequest.properties.maxFeatureCount.description
Optional override for the maximum feature-count guard rail. Forwarded verbatim; non-positive values are rejected by the generation executor.

# components.schemas.GenerateSceneRequest.properties.cacheMaxAgeSeconds.description
Optional cache max-age applied to the registered scene dataset. Forwarded verbatim; negative values are rejected by the generation executor.

# components.schemas.GenerateSceneRequest.properties.editionGate.description
Optional edition gate slug forwarded to the registration.

# components.schemas.GenerateSceneResponse.description
Result of a synchronous 3D Tiles generation run.

# components.schemas.GenerateSceneResponse.properties.sceneId.description
Stable identifier used in the resulting scene URL.

# components.schemas.GenerateSceneResponse.properties.intentId.description
Publish-intent identifier associated with the generation job.

# components.schemas.GenerateSceneResponse.properties.tilesetUrl.description
Routable URL for the generated tileset's root document.

# components.schemas.GenerateSceneResponse.properties.featureCount.description
Number of features written to the tileset.

# components.schemas.GenerateSceneResponse.properties.tileCount.description
Number of tile content files written under the scene asset root.

# components.schemas.GenerateSceneResponse.properties.boundingRegionDegrees.description
Bounding region in WGS-84 degrees, ordered [west, south, east, north].

# components.schemas.GenerateSceneResponse.properties.geometricError.description
Geometric error declared on the root tile, in meters.

# components.schemas.GenerateSceneResponse.properties.warnings.description
Non-fatal warnings collected during generation.

# components.schemas.SceneCityGmlIngestResponse.properties.sceneId.description
Stable identifier used in the resulting scene URL.

# components.schemas.SceneCityGmlIngestResponse.properties.tilesetUrl.description
Routable URL for the generated Building Scene Layer tileset root document.

# components.schemas.SceneCityGmlIngestResponse.properties.buildingCount.description
Number of buildings ingested from the CityGML document.

# components.schemas.SceneCityGmlIngestResponse.properties.surfaceCount.description
Number of boundary-surface components emitted with BSL attributes.

# components.schemas.SceneCityGmlIngestResponse.properties.tileCount.description
Number of tile content files written under the scene asset root.

# components.schemas.SceneCityGmlIngestResponse.properties.disciplines.description
Distinct Building Scene Layer disciplines / sub-layers present, sorted.

# components.schemas.SceneCityGmlIngestResponse.properties.boundingRegionDegrees.description
Bounding region in WGS-84 degrees, ordered [west, south, east, north].

# components.schemas.SceneCityGmlIngestResponse.properties.warnings.description
Non-fatal warnings collected during ingest.

# components.schemas.ScenePointCloudIngestResponse.description
Result of a LAS/LAZ/COPC point-cloud scene ingest.

# components.schemas.ScenePointCloudIngestResponse.properties.sceneId.description
Stable identifier used in the resulting scene URL.

# components.schemas.ScenePointCloudIngestResponse.properties.tilesetUrl.description
Routable URL for the generated point tileset's root document.

# components.schemas.ScenePointCloudIngestResponse.properties.pointCount.description
Number of points ingested from the source point cloud.

# components.schemas.ScenePointCloudIngestResponse.properties.tileCount.description
Number of .pnts tile content files written under the scene asset root.

# components.schemas.ScenePointCloudIngestResponse.properties.hasColor.description
True when the source carried per-point RGB preserved in the output tiles.

# components.schemas.ScenePointCloudIngestResponse.properties.boundingRegionDegrees.description
Bounding region in WGS-84 degrees, ordered [west, south, east, north].

# components.schemas.InvestigationPinResponse.description
An Operate event pinned to an investigation.

# components.schemas.InvestigationPinResponse.properties.eventRef.description
Source-prefixed event reference (e.g. alert:42).

# components.schemas.InvestigationLinkResponse.properties.resourceKind.description
Linked resource kind, camel-cased on the wire.

# components.schemas.InvestigationResponse.description
A full investigation record with its pins and links.

# components.schemas.InvestigationSummaryResponse.description
Investigation projection used in list responses; pins and links are reduced to counts.

# components.schemas.InvestigationPageResponse.description
A cursor-paginated page of investigation summaries.

# components.schemas.InvestigationPageResponse.properties.items.description
Items in this page, most recently updated first.

# components.schemas.InvestigationPageResponse.properties.nextCursor.description
Cursor for the next page, or null when this is the last page.

# components.schemas.CreateInvestigationRequest.properties.title.description
Human-readable title. Required and non-blank.

# components.schemas.UpdateInvestigationRequest.description
Body for partially updating an investigation. Omitted fields are left unchanged.

# components.schemas.UpdateInvestigationRequest.properties.title.description
New title. Must be non-blank when supplied.

# components.schemas.AddInvestigationPinRequest.description
Body for pinning an Operate event to an investigation.

# components.schemas.AddInvestigationPinRequest.properties.eventRef.description
Source-prefixed event reference (e.g. alert:42).

# components.schemas.AddInvestigationPinRequest.properties.eventKind.description
Event kind. Parsed case-insensitively; numeric tokens are rejected.

# components.schemas.AddInvestigationLinkRequest.description
Body for linking a resource to an investigation.

# components.schemas.AddInvestigationLinkRequest.properties.resourceKind.description
Linked resource kind. Parsed case-insensitively; numeric tokens are rejected.

# components.schemas.RegisterMultidimCoverageRequest.description
Body for registering a cloud-hosted multidimensional coverage source.

# components.schemas.RegisterMultidimCoverageRequest.properties.layerId.description
Published layer to associate the coverage with. Must be positive.

# components.schemas.RegisterMultidimCoverageRequest.properties.format.description
Container format of the registered object. The object key extension must match (.h5/.hdf5, .nc/.nc4, .grib/.grb/.grb2/.grib2).

# components.schemas.RegisterMultidimCoverageRequest.properties.provider.description
Cloud storage provider. Local is rejected for multidimensional coverages.

# components.schemas.RegisterMultidimCoverageRequest.properties.variables.description
Operator-declared variable names (64 maximum, 255 characters each). An empty array exposes every CF data variable discovered during the next metadata scan.

# components.schemas.MultidimCoverageResponse.description
A registered cloud-hosted HDF5 / NetCDF4 / GRIB coverage source.

# components.schemas.MultidimCoverageResponse.properties.srid.description
SRID derived from the CF grid_mapping; null until metadata is scanned.

# components.schemas.MultidimCoverageResponse.properties.variableCount.description
Discovered data-variable count; null until metadata is scanned.

# components.schemas.MultidimCoverageResponse.properties.status.description
Set to reader-not-enabled while the registration has never been scanned; null in the happy path.

# components.schemas.MultidimCoverageScanJobResponse.description
Status of an asynchronous multidimensional-coverage metadata scan job.

# components.schemas.MultidimCoverageScanJobResponse.properties.error.description
Failure detail when the job failed; null otherwise.

# components.schemas.RegisterCloudRasterRequest.description
Body for registering a cloud-hosted Cloud Optimized GeoTIFF.

# components.schemas.RegisterCloudRasterRequest.properties.layerId.description
Published layer to associate the COG with. Must be positive.

# components.schemas.RegisterCloudRasterRequest.properties.provider.description
Cloud storage provider hosting the COG. Local is rejected for COG serving.

# components.schemas.CloudRasterResponse.description
A registered cloud-hosted Cloud Optimized GeoTIFF, with scanned image metadata when available.

# components.schemas.CloudRasterResponse.properties.width.description
Image width; null until metadata is scanned.

# components.schemas.CloudRasterResponse.properties.height.description
Image height; null until metadata is scanned.

# components.schemas.CloudRasterResponse.properties.bandCount.description
Number of bands; null until metadata is scanned.

# components.schemas.CloudRasterResponse.properties.srid.description
Spatial reference identifier; null until metadata is scanned.

# components.schemas.CloudRasterResponse.properties.compression.description
Compression type reported by the COG header.

# components.schemas.CloudRasterResponse.properties.overviewLevelCount.description
Number of overview levels; null until metadata is scanned.

# components.schemas.RegisterZarrStoreRequest.description
Body for registering a Zarr coverage store for read-only serving.

# components.schemas.RegisterZarrStoreRequest.properties.layerId.description
Published layer to associate the Zarr store with. Must be positive.

# components.schemas.RegisterZarrStoreRequest.properties.rootPath.description
Relative object-key prefix pointing at the Zarr store root. Must not contain '..' or backslashes and must not start with '/'.

# components.schemas.ZarrStoreVariableSummary.description
Lightweight description of a single Zarr array/variable.

# components.schemas.ZarrStoreVariableSummary.properties.compressor.description
Compressor codec id (e.g. zlib), or null when uncompressed.

# components.schemas.ZarrStoreVariableSummary.properties.dimensionNames.description
Dimension names from _ARRAY_DIMENSIONS when present.

# components.schemas.ZarrStoreResponse.description
A registered Zarr coverage store, with scanned manifest metadata when available.

# components.schemas.ZarrStoreResponse.properties.rootPath.description
Root key/prefix pointing at the Zarr store root.

# components.schemas.ZarrStoreResponse.properties.zarrFormat.description
Detected Zarr format version (2 or 3); null until metadata is scanned.

# components.schemas.ZarrStoreResponse.properties.srid.description
Spatial reference identifier discovered during the metadata scan.

# components.schemas.ZarrStoreResponse.properties.variableCount.description
Number of arrays/variables discovered in the store.

# components.schemas.ZarrStoreResponse.properties.primaryVariable.description
Primary variable name when declared in the manifest.

# components.schemas.ZarrStoreResponse.properties.variables.description
Per-variable summaries; null until metadata is scanned.

# components.schemas.IdentityPermissionGrant.description
A single RBAC permission grant. Each component accepts `*` as a wildcard.

# components.schemas.IdentityPermissionGrant.properties.layer.description
Layer identifier, or `*` for all layers.

# components.schemas.IdentityPermissionGrant.properties.operation.description
Operation name, or `*` for all operations.

# components.schemas.RoleResponse.properties.isBuiltIn.description
Built-in roles are shipped with the server and cannot be deleted.

# components.schemas.UpdateRoleRequest.description
Partial update. Null or omitted fields keep their current value.

# components.schemas.SetRolePermissionsRequest.properties.permissions.description
The complete, authoritative list of permission grants for the role.

# components.schemas.UserResponse.properties.provisioningSource.description
How the user was provisioned, for example `oidc`, `scim`, or `manual`.

# components.schemas.UserResponse.properties.providerId.description
Stored OIDC provider registration the user came from, when applicable.

# components.schemas.UserListResponse.properties.totalCount.description
Total number of users matching the filter, ignoring paging.

# components.schemas.UpdateUserRolesRequest.properties.roles.description
The complete, authoritative list of roles to assign to the user.

# components.schemas.UserEffectivePermissionsResponse.properties.permissions.description
Permission grants resolved across all role memberships.

# components.schemas.TenantResponse.properties.plan.description
Billing plan the tenant is enrolled in, if any.

# components.schemas.CreateTenantRequest.properties.displayName.description
Human-readable display name. Defaults to the tenant id when omitted.

# components.schemas.OidcProviderResponse.description
A stored OIDC provider registration. Client secrets are never included.

# components.schemas.OidcProviderResponse.properties.providerType.description
Provider type, for example `AzureAd`, `Okta`, `Auth0`, or `Generic`.

# components.schemas.CreateOidcProviderRequest.properties.providerType.description
Provider type, for example `AzureAd`, `Okta`, `Auth0`, or `Generic`.

# components.schemas.CreateOidcProviderRequest.properties.clientSecret.description
Client secret stored server-side. It is never returned by any read endpoint.

# components.schemas.UpdateOidcProviderRequest.description
Partial update. Null or omitted fields keep their current value. The provider type is immutable.

# components.schemas.UpdateOidcProviderRequest.properties.clientSecret.description
Replacement client secret. It is never returned by any read endpoint.

# components.schemas.IdentityProviderStatus.properties.type.description
Provider type identifier, for example `AzureAd`, `Google`, or `Generic`.

# components.schemas.IdentityProvidersResponse.properties.enabled.description
Whether OIDC authentication is globally enabled.

# components.schemas.IdentityProviderTestResult.properties.isReachable.description
Whether the provider's OIDC discovery document was fetched successfully.

# components.schemas.IdentityProviderTestResult.properties.issuer.description
Issuer read from the discovery document, best-effort.

# components.schemas.OAuthClientResponse.description
Metadata for a registered OAuth2 client. Never contains plaintext secret material.

# components.schemas.OAuthClientResponse.properties.secretPrefix.description
Non-secret prefix for operator recognition. Confidential clients only.

# components.schemas.OAuthClientResponse.properties.createdBy.description
Authenticated principal that registered the client, when available.

# components.schemas.OAuthClientSecretResponse.properties.clientSecret.description
Plaintext client secret. Returned only in the registration response and only for confidential clients; null for public clients.

# components.schemas.CreateOAuthClientRequest.properties.clientType.description
Case-insensitive. Confidential clients are minted a secret; public clients are not.

# components.schemas.CreateOAuthClientRequest.properties.allowedGrantTypes.description
Grant types the client may use, for example `client_credentials`. An empty list leaves the client unrestricted.

# components.schemas.CreateOAuthClientRequest.properties.allowedScopes.description
Scope-catalogue scopes this client may request. Scope narrowing is enforced server-side.

# components.schemas.OAuthScopeResponse.properties.permissions.description
RBAC permissions this scope grants when included in a token.

# components.schemas.AdminAuthSessionResponse.properties.claims.description
Claims projected from the authenticated session. Empty when unauthenticated.

# components.schemas.AdminOperatorBearerResponse.properties.expiresAt.description
Expiry, clamped to the issuing session's expiry.

# components.schemas.AdminAuthAuthorizeUrlRequest.description
Placeholder request body; it carries no fields. Send an empty JSON object (`{}`).

# components.schemas.AdminAuthAuthorizeUrlResponse.properties.authorizeUrl.description
Provider authorization URL including `response_type`, `client_id`, `redirect_uri`, `scope`, `state`, and the S256 PKCE challenge.

# components.schemas.AdminAuthTokenRequest.properties.grantType.description
Only `authorization_code` is accepted; any other value is rejected.

# components.schemas.AdminAuthTokenRequest.properties.code.description
Authorization code returned by the provider.

# components.schemas.AdminAuthTokenRequest.properties.state.description
State value returned by the provider. Must match the pending session created by the authorize-url call.

# components.schemas.AdminAuthLogoutUrlResponse.properties.logoutUrl.description
Provider end-session URL, or null when the provider advertises none or discovery failed.

# components.schemas.AdminAuthProblemResponse.description
RFC 7807 problem document emitted by the admin auth bootstrap endpoints.

# components.schemas.ApiResponseIdentityAck.description
Standard admin envelope with no data payload; only the confirmation or failure message is carried.

# components.schemas.ConfigPolicyMessageResponse.description
Standard admin envelope for an operation that returns only a status message (`data` is null).

# components.schemas.ConfigDiscoveryResult.properties.discoveryDurationMs.description
Duration of the discovery sweep in milliseconds.

# components.schemas.ConfigDiscoveryDocumentation.description
The hand-maintained configuration documentation model (the same shape served by GET /config).

# components.schemas.ConfigDiscoveryDocumentationProperty.properties.path.description
Full configuration path for the property.

# components.schemas.ConfigDiscoveryTypeInfo.description
A discovered strongly-typed options class. The reflected .NET Type itself is not serialized.

# components.schemas.ConfigDiscoverySecretIssue.properties.secretReference.description
The secret reference with the issue. The secret value is never returned.

# components.schemas.ConfigDiscoveryAuditInfo.properties.configurationSources.description
Configuration provider name to key count.

# components.schemas.RateLimitPolicySummary.properties.scope.description
Policy scope: `plan`, `tenant`, `api-key`, or `endpoint`.

# components.schemas.RateLimitPolicyCreateRequest.properties.scope.description
One of `plan`, `tenant`, `api-key`, `endpoint`.

# components.schemas.RateLimitPolicyUpdateRequest.description
Partial update. Omitted or null fields keep their stored values; `scope` and `key` cannot be changed.

# components.schemas.TileOperationStartRequestPayload.description
Tile operation submission payload. Property names bind case-insensitively.

# components.schemas.TileOperationStartRequestPayload.properties.operation.description
One of `seed`, `warm`, `invalidate`, `purge`, `archive`, `publish`, `expire`, `delete`.

# components.schemas.TileOperationStartRequestPayload.properties.bbox.description
[minLon, minLat, maxLon, maxLat]. Must contain exactly four values when supplied.

# components.schemas.TileOperationStartRequestPayload.properties.style.description
Optional generated-tile style window. Defaults to `default`.

# components.schemas.TileOperationStartRequestPayload.properties.format.description
Optional generated-tile format window. ImageServer aliases such as `jpeg`, `tiff`, and `cog` map to their canonical cache extensions.

# components.schemas.TileOperationStartRequestPayload.properties.generationId.description
Stable generation identifier for a resumable seed/warm run. When omitted the in-process submission path stamps one; a retry forwards it so the generation resumes rather than restarting.

# components.schemas.TileOperationProgressView.description
Progress record for an asynchronous tile lifecycle operation. Property names are PascalCase.

# components.schemas.TileOperationProgressView.properties.Status.description
Numeric OperationStatus: 0 Queued, 1 Processing, 2 Completed, 3 Failed, 4 Cancelled.

# components.schemas.TileOperationProgressView.properties.PercentComplete.description
Computed completion percentage; null while the total tile count is unknown.

# components.schemas.TileOperationProgressView.properties.Duration.description
Elapsed time serialized as a .NET TimeSpan string (for example `00:01:23.4560000`).

# components.schemas.TileOpsPublishedArtifact.description
PMTiles artifact descriptor emitted by a `publish` operation. Property names are PascalCase.

# components.schemas.TileOpsPublishedArtifact.properties.UrlStrategy.description
Numeric PMTilesUrlStrategy value (public URL, signed URL, or range proxy).

# components.schemas.TileOpsPublishedArtifact.properties.Bounds.description
WGS84 bounding box as [west, south, east, north].

# components.schemas.TileCacheEvictionResult.properties.Enabled.description
Whether eviction was enabled and a live tile-key index was available.

# components.schemas.TileCacheEvictionResult.properties.Scanned.description
Tracked tile entries scanned at the start of the sweep.

# components.schemas.TileCacheEvictionResult.properties.Evicted.description
Least-recently-used tiles evicted from the cache store and index.

# components.schemas.TileCacheInventoryResult.properties.Enabled.description
Whether a live tile-key index was available.

# components.schemas.LayerTableValidateRequest.properties.fields.description
Attribute fields to publish. Empty means all discovered columns.

# components.schemas.LayerTablePublishValidation.properties.objectIdStrategy.description
Object-id strategy selected for publishing; `unresolved` when it could not be determined.

# components.schemas.LayerTablePublishValidationField.properties.fieldType.description
Honua field type inferred from the source type.

# components.schemas.FieldMaskPolicyDetail.properties.attribute.description
Layer attribute (column) masked from query output.

# components.schemas.RlsPolicyDetail.properties.attribute.description
Layer attribute the predicate filters on.

# components.schemas.RlsPolicyDetail.properties.claimType.description
Claim type whose value(s) constrain the attribute.

# components.schemas.RlsPolicyDetail.properties.comparison.description
Normalized comparison applied between the attribute and the claim value(s).

# components.schemas.RlsPolicyCreateRequest.properties.comparison.description
Accepts `in` (default when omitted or blank), `equals`, `eq`, or `=`. Any other value returns 400.

# components.schemas.FederationSourceSummary.description
A configured federated source. Carries no transport credentials.

# components.schemas.FederationSourceSummary.properties.kind.description
Transport family: `HonuaGrpc`, `EsriRest`, or `OgcWfs`.

# components.schemas.FederationSourceSummary.properties.endpoint.description
Base endpoint URL of the remote service.

# components.schemas.FederationPredicateDecision.properties.pushedDown.description
True when the remote source evaluates the predicate; false when it is refined locally.

# components.schemas.GeocoderReferenceImportResult.properties.locatorName.description
Locator (geocode service) name the imported reference data is served under.

# components.schemas.GeocoderReferenceImportResult.properties.provider.description
Geocoding provider serving the imported data (the local provider).

# components.schemas.GeocoderReferenceImportResult.properties.skippedRows.description
Capped sample of skipped rows; `recordsSkipped` carries the full count.

# components.schemas.GeocoderReferenceImportResult.properties.report.description
One entry per CSV header column; unmapped columns are reported explicitly.

# components.schemas.GeocoderReferenceImportSkippedRow.properties.rowNumber.description
1-based data row number, excluding the header row.

# components.schemas.LicenseSurgeModeUpdateRequest.properties.reason.description
Optional operator-facing reason for the surge declaration.

# components.schemas.LicenseCapacitySnapshot.properties.state.description
Numeric LicenseCapacityBandState: 0 NotConfigured, 1 Excluded, 2 Normal, 3 ApproachingBand, 4 Burst, 5 Grace, 6 GraceExpired, 7 Surge.

# components.schemas.LicenseCapacitySnapshot.properties.meteringGap.description
True when enforcement is suspended because the coordinated meter is unavailable.

# components.schemas.LicenseCapacitySnapshot.properties.localDeploymentRole.description
Numeric LicenseDeploymentRole: 0 Production, 1 Development, 2 Test, 3 Staging, 4 ColdDr.

# components.schemas.LicenseCapacitySnapshot.properties.localTopology.description
Numeric LicenseServingTopology: 0 SingleNode, 1 VirtualMachine, 2 ReplicaSet, 3 Serverless.

# components.schemas.LicenseCapacityTermsView.description
Capacity terms encoded in the active license; omitted when the license declares none.

# components.schemas.ExternalServiceDiscoverRequest.properties.url.description
URL of the external service root, catalog root, or folder.

# components.schemas.ExternalServiceDiscoverRequest.properties.serviceUrl.description
Compatibility alias for import-oriented callers that already send `serviceUrl`.

# components.schemas.ExternalServiceDiscoverCredentials.description
Credentials for a protected external service. Used transiently for the discovery request only; never persisted.

# components.schemas.ExternalServiceDiscoverCredentials.properties.mode.description
`arcgis-token`, `token`, `basic`, or `oauth`.

# components.schemas.ExternalServiceDiscoverCredentials.properties.token.description
Pre-issued token/API key for `token` mode.

# components.schemas.ExternalServiceDiscoverCredentials.properties.tokenUrl.description
ArcGIS generateToken URL, or the OAuth token endpoint. Derived from the service host when omitted for `arcgis-token`.

# components.schemas.ExternalServiceDiscoverResult.properties.candidates.description
All layer/table candidates flattened across every discovered service.

# components.schemas.PlatformReleaseConvergePayload.properties.reason.description
Operator reason recorded on every deploy operation the converge creates. Defaults to a generated message naming the release version.

# components.schemas.PlatformReleaseConvergePayload.properties.correlationId.description
Correlation identifier propagated onto the created deploy operations/proposals.

# components.schemas.PlatformReleaseConvergeResult.properties.converged.description
True when the serving plane was already fully converged and no operation or proposal was created.

# components.schemas.PlatformReleaseConvergeResult.properties.workersDeferred.description
Always true: geoprocessing worker images are not deployed by converge.

# components.schemas.PlatformReleaseConvergeTarget.properties.operationId.description
Set when the gateway executed the converge deploy directly.

# components.schemas.PlatformReleaseConvergeTarget.properties.proposalId.description
Set when the guardrail gateway routed the deploy to human approval.

# components.schemas.PlatformReleaseConvergeTarget.properties.lastAppliedRevision.description
DesiredRevision of the target's most recent terminal-Succeeded deploy operation, or null when unknown (treated as divergent).

# components.schemas.FeatureStreamConformanceResetResponse.properties.baselineDigest.description
sha256 content digest of the source's immutable baseline after the reset.

# components.schemas.FeatureStreamConformanceResetResponse.properties.baselineRecordCount.description
Number of records the baseline digest covers.