diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index aacee6ab9..9c6ed935d 100644 --- a/docs/api/openapi.yaml +++ b/docs/api/openapi.yaml @@ -22222,6 +22222,12 @@ paths: The span is capped at 730 days, and the worker re-checks the cap independently. Body cap 4 KiB. Module-gated, and it draws on the shared analytics-read rate bucket. + + + Every backfill draws on the instance-wide Open-Meteo budget, so one account is held to three a rolling hour (429 + `environment.backfill_rate_limited`), at most one queued backfill per twenty-minute slot (409 + `environment.backfill_pending`), and, inside the worker, its own share of the daily request budget; days the + share does not reach are filled by the nightly run. requestBody: required: true content: @@ -22239,8 +22245,9 @@ paths: "401": *a1 "403": *a19 "409": - description: No home location is set, so there is nothing to resolve the days against. `meta.errorCode` = - `environment.no_home`. + description: No home location is set, so there is nothing to resolve the days against (`meta.errorCode` = + `environment.no_home`), or a backfill for this account is already queued in the current twenty-minute slot + (`environment.backfill_pending`). content: application/json: schema: @@ -34255,19 +34262,20 @@ components: documents.sources.tokenRequired, documents.sources.unavailable, documents.sources.unreachable, documents.sources.versionTooOld; encounter — encounter.invalid, encounter.link.invalid, encounter.practitioner-not-found, encounter.reminder-conflict, encounter.reminder-not-found; encryption - — encryption.keyBackup.stale, encryption.key_mismatch; environment — environment.invalid, - environment.no_home, environment.range_too_large, environment.travel.not_found; export — - export.selection.empty, export.selection.unknown_leaf; familyHistory — familyHistory.invalid; feedback — - feedback.body.invalid; health_score_config — health_score_config.invalid, - health_score_config.too_narrow; illness — illness.day-log.invalid, illness.disabled, - illness.episode.chronic-no-resolve, illness.episode.invalid, illness.episode.invalid-window, - illness.episode.parent-not-found, illness.insights.invalid; import — import.apple_health.busy, - import.write_failed; ingest — ingest.rate_limited; insights — insights.generate.budgetExceeded, - insights.generate.outboundScreened, insights.generate.profileScopeChanged, - insights.generate.scopeChanged; labs — labs.biomarker.create.invalid, labs.biomarker.duplicate, - labs.biomarker.notFound, labs.biomarker.update.invalid, labs.biomarker.update.referenceRangeInvalid, - labs.create.invalid, labs.ocr.budgetExceeded, labs.ocr.extractFailed, labs.ocr.fileTooLarge, - labs.ocr.fileType, labs.ocr.localOcrDisabled, labs.ocr.pdfNeedsAnthropic, labs.ocr.providerUnsupported, + — encryption.keyBackup.stale, encryption.key_mismatch; environment — environment.backfill_pending, + environment.backfill_rate_limited, environment.invalid, environment.no_home, + environment.range_too_large, environment.travel.not_found; export — export.selection.empty, + export.selection.unknown_leaf; familyHistory — familyHistory.invalid; feedback — feedback.body.invalid; + health_score_config — health_score_config.invalid, health_score_config.too_narrow; illness — + illness.day-log.invalid, illness.disabled, illness.episode.chronic-no-resolve, illness.episode.invalid, + illness.episode.invalid-window, illness.episode.parent-not-found, illness.insights.invalid; import — + import.apple_health.busy, import.write_failed; ingest — ingest.rate_limited; insights — + insights.generate.budgetExceeded, insights.generate.outboundScreened, + insights.generate.profileScopeChanged, insights.generate.scopeChanged; labs — + labs.biomarker.create.invalid, labs.biomarker.duplicate, labs.biomarker.notFound, + labs.biomarker.update.invalid, labs.biomarker.update.referenceRangeInvalid, labs.create.invalid, + labs.ocr.budgetExceeded, labs.ocr.extractFailed, labs.ocr.fileTooLarge, labs.ocr.fileType, + labs.ocr.localOcrDisabled, labs.ocr.pdfNeedsAnthropic, labs.ocr.providerUnsupported, labs.ocr.rateLimited, labs.restore.invalid, labs.result.notFound, labs.unit.mismatch, labs.update.invalid, labs.update.linkedFieldsImmutable, labs.update.numericExpected, labs.update.qualitativeExpected, labs.update.referenceRangeInvalid,