## Retrieve **get** `/v1/enrichment-status` Returns a tenant's enrichment progress across the record-level enrichments (translation, sentiment, emotions). For each, `enabled` reports whether the enrichment is active for the tenant (deployment-configured and switched on / with a resolvable target language), and `eligible`/`done` are directory-level counts of feedback records that qualify and that have been enriched — the UI derives "in progress" as `eligible - done`, of which `failed` is retryable and `failed_terminal` never will be. When an enrichment is not enabled its counts are zero and `disabled_reason` names the gate that closed it, so the UI can explain *why* rather than silently hiding the enrichment. `as_of` is when the counts were computed, which lets a polling client derive throughput and an ETA without the Hub computing either. The response contains counts only (no record identifiers or content). ### Query Parameters - `tenant_id: string` Tenant whose enrichment status should be returned. ### Returns - `as_of: string` When the counts were computed (UTC), not when the response was serialized. The endpoint is polled, so two responses are enough to derive throughput and an ETA client-side from the change in `done` over the change in `as_of` — the Hub computes neither. - `emotions: TypeStatus` One enrichment's progress for a tenant. When `enabled` is false, `eligible` and `done` are zero. - `done: number` Eligible records that have been enriched. - `eligible: number` Feedback records that qualify for this enrichment. - `enabled: boolean` Whether the enrichment is active for the tenant (deployment-configured and switched on / with a resolvable target language). - `failed: number` Eligible records whose last enrichment attempt gave up but which a retry could still rescue — a provider outage, a timeout. Counted only while the record is still un-enriched, so a later success removes it without any cleanup. - `failed_terminal: number` Eligible records the provider will never accept, because the outcome is a property of the record's own text — a content-policy block, a refusal, an input past the model's limit. Retrying these cannot help; they resolve only if the text changes. - `disabled_reason: optional "not_configured" or "switched_off" or "no_target_language"` Which gate switched the enrichment off. Present exactly when `enabled` is false, and absent otherwise. `not_configured` — the deployment has no provider/model for this enrichment, so it is off for every tenant and only an operator can fix it. `switched_off` — the tenant turned it off (sentiment and emotions only). `no_target_language` — translation is configured but neither the tenant's `target_language` nor the deployment default resolves (translation only; it has no on/off switch, so an absent target is its off state). - `"not_configured"` - `"switched_off"` - `"no_target_language"` - `sentiment: TypeStatus` One enrichment's progress for a tenant. When `enabled` is false, `eligible` and `done` are zero. - `done: number` Eligible records that have been enriched. - `eligible: number` Feedback records that qualify for this enrichment. - `enabled: boolean` Whether the enrichment is active for the tenant (deployment-configured and switched on / with a resolvable target language). - `failed: number` Eligible records whose last enrichment attempt gave up but which a retry could still rescue — a provider outage, a timeout. Counted only while the record is still un-enriched, so a later success removes it without any cleanup. - `failed_terminal: number` Eligible records the provider will never accept, because the outcome is a property of the record's own text — a content-policy block, a refusal, an input past the model's limit. Retrying these cannot help; they resolve only if the text changes. - `disabled_reason: optional "not_configured" or "switched_off" or "no_target_language"` Which gate switched the enrichment off. Present exactly when `enabled` is false, and absent otherwise. `not_configured` — the deployment has no provider/model for this enrichment, so it is off for every tenant and only an operator can fix it. `switched_off` — the tenant turned it off (sentiment and emotions only). `no_target_language` — translation is configured but neither the tenant's `target_language` nor the deployment default resolves (translation only; it has no on/off switch, so an absent target is its off state). - `"not_configured"` - `"switched_off"` - `"no_target_language"` - `tenant_id: string` - `translation: TypeStatus` One enrichment's progress for a tenant. When `enabled` is false, `eligible` and `done` are zero. - `done: number` Eligible records that have been enriched. - `eligible: number` Feedback records that qualify for this enrichment. - `enabled: boolean` Whether the enrichment is active for the tenant (deployment-configured and switched on / with a resolvable target language). - `failed: number` Eligible records whose last enrichment attempt gave up but which a retry could still rescue — a provider outage, a timeout. Counted only while the record is still un-enriched, so a later success removes it without any cleanup. - `failed_terminal: number` Eligible records the provider will never accept, because the outcome is a property of the record's own text — a content-policy block, a refusal, an input past the model's limit. Retrying these cannot help; they resolve only if the text changes. - `disabled_reason: optional "not_configured" or "switched_off" or "no_target_language"` Which gate switched the enrichment off. Present exactly when `enabled` is false, and absent otherwise. `not_configured` — the deployment has no provider/model for this enrichment, so it is off for every tenant and only an operator can fix it. `switched_off` — the tenant turned it off (sentiment and emotions only). `no_target_language` — translation is configured but neither the tenant's `target_language` nor the deployment default resolves (translation only; it has no on/off switch, so an absent target is its off state). - `"not_configured"` - `"switched_off"` - `"no_target_language"` ### Example ```http curl http://localhost:8080/v1/enrichment-status \ -H "Authorization: Bearer $HUB_API_KEY" ```