diff --git a/openapi/SOURCE.json b/openapi/SOURCE.json index c471acb..e64a3e2 100644 --- a/openapi/SOURCE.json +++ b/openapi/SOURCE.json @@ -1,13 +1,13 @@ { "verification.json": { "url": "https://docs.didit.me/openapi-25.json", - "sha256": "d1783bd862848198f7e5275c28f6a1bcdd59737c0d92f72bba3f6f3cf8b8ae3e", - "fetched_at": "2026-11-05T06:33:10Z" + "sha256": "9f8cdf8be8157588facc8059c9bd306f3f516a3a5b66b78c8e63cf595ddb6627", + "fetched_at": "2026-11-05T12:12:43Z" }, "account.json": { "url": "https://docs.didit.me/openapi-auth.json", "sha256": "5b45b1896ef3107dd9a601c76d9ba35761bae5f04ac731b6c27876603903bf05", - "fetched_at": "2026-11-05T06:33:10Z" + "fetched_at": "2026-11-05T12:12:43Z" }, "webhook-vectors.json": { "generator": "product-automations scripts/server-sdks/make_vectors.py (seeded 2026-10-17)", diff --git a/openapi/verification.json b/openapi/verification.json index 2ea03e9..69e64de 100644 --- a/openapi/verification.json +++ b/openapi/verification.json @@ -4303,7 +4303,7 @@ "registered_address": "1 Example Street, London, EC1A 1AA", "tax_number": null, "risk_level": null, - "verification_status": null, + "verification_status": "verified", "is_from_registry": true, "fetch_status": "resolved", "alternative_names": null, @@ -13045,8 +13045,13 @@ }, "verification_status": { "type": "string", + "enum": [ + "verified", + "failed", + "unknown" + ], "nullable": true, - "description": "Registry verification status, when available." + "description": "Cross-jurisdiction verification status: `verified` when the registry status establishes standing (`active`), `failed` when it says the company is no longer standing (for example `dissolved`), otherwise `unknown`. `null` for a company that did not come from a registry and while a selection is still `pending`." }, "is_from_registry": { "type": "boolean", @@ -22728,7 +22733,7 @@ "auto_refill_amount": { "type": "string", "nullable": true, - "description": "USD amount that will be charged and added to the balance on each auto-refill, at face value. Set from \\$50 to \\$10,000 in Console → Billing. `null` when auto-refill is disabled or unset." + "description": "USD amount that will be charged and added to the balance on each auto-refill, at face value. Set from \\$50 to \\$20,000 in Console → Billing. `null` when auto-refill is disabled or unset." }, "auto_refill_threshold": { "type": "string", @@ -22797,7 +22802,7 @@ "/v3/billing/top-up/": { "post": { "summary": "Top up credits", - "description": "Add credits via a hosted Stripe Checkout session (**\\$50 to \\$10,000** per top-up). Top-ups are available on the Free, Growth and Scale plans, added at face value with no discount or bonus, and last 12 months; Enterprise annual contracts cannot top up. Redirect the customer to the returned `checkout_session_url`.", + "description": "Add credits via a hosted Stripe Checkout session (**\\$50 to \\$20,000** per top-up). Top-ups are available on the Free, Growth and Scale plans, added at face value with no discount or bonus, and last 12 months; Enterprise annual contracts cannot top up. Redirect the customer to the returned `checkout_session_url`.", "operationId": "billing_top_up", "x-didit-sdk": { "resource": "billing", @@ -22821,8 +22826,8 @@ "amount_in_dollars": { "type": "number", "minimum": 50, - "maximum": 10000, - "description": "Amount to charge, in USD. **Must be from 50 to 10,000.** The balance receives the same amount, with no discount or bonus. Tax is added automatically at checkout based on the customer's billing address." + "maximum": 20000, + "description": "Amount to charge, in USD. **Must be from 50 to 20,000.** The balance receives the same amount, with no discount or bonus. Tax is added automatically at checkout based on the customer's billing address." }, "success_url": { "type": "string", @@ -22930,7 +22935,7 @@ } }, "400": { - "description": "Invalid payload: the amount is missing, not a number, below the \\$50 minimum or above the \\$10,000 maximum, or the organization is on an Enterprise annual contract. The error body is a JSON array.", + "description": "Invalid payload: the amount is missing, not a number, below the \\$50 minimum or above the \\$20,000 maximum, or the organization is on an Enterprise annual contract. The error body is a JSON array.", "content": { "application/json": { "examples": { @@ -22951,7 +22956,7 @@ }, "Above maximum": { "value": [ - "Amount must be at most $10,000." + "Amount must be at most $20,000." ] }, "Annual plan": { @@ -47202,7 +47207,7 @@ }, "post": { "summary": "Create rule", - "description": "Create a CUSTOM transaction-monitoring rule. Titles are unique per application (duplicate -> 400). A `change_status` action targeting `AWAITING_USER` must carry `workflow_id`. Rules created in ACTIVE mode apply to new transactions immediately - the recommended workflow is create in TEST mode, backtest, then switch mode to ACTIVE.", + "description": "Create a CUSTOM transaction-monitoring rule. Titles are unique per application (duplicate -> 400). A `change_status` action targeting `AWAITING_USER` must carry `workflow_id`. Rules created in ACTIVE mode apply to new transactions immediately - the recommended workflow is create in TEST mode, backtest, then switch mode to ACTIVE. To change a library rule, create it as a copy: send the library rule's definition with `metadata.based_on` (its library key) and `metadata.based_on_rule_uuid`.", "operationId": "createTransactionRule", "x-didit-sdk": { "resource": "transactions.rules", @@ -47457,7 +47462,7 @@ }, "patch": { "summary": "Update rule", - "description": "Partially update a rule. Custom rules accept every configuration field. Library (PRESET) rules accept only `mode` - use it to activate, disable, or switch a preset to TEST; any other field returns 400. An installed copy of a withheld library rule is switched off: setting its `mode` to anything but `DISABLED` answers 400 (\"This library rule cannot run yet: its conditions read data the rules engine cannot evaluate.\").", + "description": "Partially update a rule. Custom rules accept every configuration field. Library (PRESET) rules accept only `mode` - use it to activate, disable, or switch a preset to TEST; any other field returns 400, because Didit maintains library rules and applies their updates automatically. To change a library rule's conditions, create a custom copy with `POST /v3/transactions/rules/` using the library rule's definition and `metadata.based_on` (the library key) and `metadata.based_on_rule_uuid`, then switch the library rule off with `mode: DISABLED` so a transaction does not alert twice. An installed copy of a withheld library rule is switched off: setting its `mode` to anything but `DISABLED` answers 400 (\"This library rule cannot run yet: its conditions read data the rules engine cannot evaluate.\").", "operationId": "updateTransactionRule", "x-didit-sdk": { "resource": "transactions.rules", @@ -52081,8 +52086,13 @@ }, "verification_status": { "type": "string", + "enum": [ + "verified", + "failed", + "unknown" + ], "nullable": true, - "description": "Registry verification status, when available." + "description": "Cross-jurisdiction verification status: `verified` when the registry status establishes standing (`active`), `failed` when it says the company is no longer standing (for example `dissolved`), otherwise `unknown`. `null` for a company that did not come from a registry and while a selection is still `pending`." }, "is_from_registry": { "type": "boolean", @@ -53015,8 +53025,13 @@ }, "verification_status": { "type": "string", + "enum": [ + "verified", + "failed", + "unknown" + ], "nullable": true, - "description": "Registry verification status, when available." + "description": "Cross-jurisdiction verification status: `verified` when the registry status establishes standing (`active`), `failed` when it says the company is no longer standing (for example `dissolved`), otherwise `unknown`. `null` for a company that did not come from a registry and while a selection is still `pending`." }, "is_from_registry": { "type": "boolean", @@ -93055,7 +93070,7 @@ "metadata": { "type": "object", "nullable": true, - "description": "Extra context for system-generated entries. Console detail-page views carry `{\"system_event\": \"DETAIL_VIEWED\", \"detail_type\": \"verification\"}` so they can be filtered out of notification logic. `null` for ordinary entries.", + "description": "Extra context for system-generated entries. Console detail-page views carry `{\"system_event\": \"DETAIL_VIEWED\", \"detail_type\": \"verification\"}` so they can be filtered out of notification logic. A `COMMENT` its author edited in the Console carries `edited_at`, the ISO 8601 time of the last edit (`comment` and `mentioned_emails` then hold the edited text and its mentions). `null` for ordinary entries.", "example": null }, "created_at": { @@ -108924,7 +108939,7 @@ "fallback_from": { "type": "object", "nullable": true, - "description": "Why a non-document method ended the ID step. Set on the declined report when a lookup or a wallet sign-in failed and the country's fallback switch was `decline`. `null` otherwise.", + "description": "Why a non-document method did not end the ID step. Set when a lookup or a wallet sign-in failed: on the document verification the user continued with when the country's fallback switch was `fallback_to_document` (`action` is `fallback_to_document`), or on the declined report when it was `decline`. `null` otherwise.", "properties": { "method": { "type": "string", @@ -108940,7 +108955,11 @@ }, "action": { "type": "string", - "description": "The configured action that was taken, e.g. `decline`." + "enum": [ + "fallback_to_document", + "decline" + ], + "description": "The configured action that was taken: `fallback_to_document` or `decline`." } } }, diff --git a/src/didit/resources/billing.py b/src/didit/resources/billing.py index 43937aa..ecac234 100644 --- a/src/didit/resources/billing.py +++ b/src/didit/resources/billing.py @@ -92,12 +92,12 @@ def top_up( ) -> BillingTopUpResponse: """Top up credits. - Add credits via a hosted Stripe Checkout session (**\\$50 to \\$10,000** per top-up). Top-ups are available on the Free, Growth and Scale plans, added at face value with no discount or bonus, and last 12 months; Enterprise annual contracts cannot top up. Redirect the customer to the returned `checkout_session_url`. + Add credits via a hosted Stripe Checkout session (**\\$50 to \\$20,000** per top-up). Top-ups are available on the Free, Growth and Scale plans, added at face value with no discount or bonus, and last 12 months; Enterprise annual contracts cannot top up. Redirect the customer to the returned `checkout_session_url`. ``POST /v3/billing/top-up/`` Args: - amount_in_dollars: Amount to charge, in USD. **Must be from 50 to 10,000.** The balance receives the same amount, with no discount or bonus. Tax is added automatically at checkout based on the customer's billing address. + amount_in_dollars: Amount to charge, in USD. **Must be from 50 to 20,000.** The balance receives the same amount, with no discount or bonus. Tax is added automatically at checkout based on the customer's billing address. success_url: URL the hosted checkout redirects the customer to after a successful payment. Currently defaults to `https://console.didit.me`. Pass a working URL explicitly; the default host is unavailable. Append the literal placeholder `{CHECKOUT_SESSION_ID}` if you want the hosted checkout to substitute the session ID. cancel_url: URL the hosted checkout redirects the customer to when they abort or close the Checkout window. Currently defaults to `https://console.didit.me`. Pass a working URL explicitly; the default host is unavailable. extra_headers: Headers to add to (or, with ``None``, remove from) this request. @@ -188,12 +188,12 @@ async def top_up( ) -> BillingTopUpResponse: """Top up credits. - Add credits via a hosted Stripe Checkout session (**\\$50 to \\$10,000** per top-up). Top-ups are available on the Free, Growth and Scale plans, added at face value with no discount or bonus, and last 12 months; Enterprise annual contracts cannot top up. Redirect the customer to the returned `checkout_session_url`. + Add credits via a hosted Stripe Checkout session (**\\$50 to \\$20,000** per top-up). Top-ups are available on the Free, Growth and Scale plans, added at face value with no discount or bonus, and last 12 months; Enterprise annual contracts cannot top up. Redirect the customer to the returned `checkout_session_url`. ``POST /v3/billing/top-up/`` Args: - amount_in_dollars: Amount to charge, in USD. **Must be from 50 to 10,000.** The balance receives the same amount, with no discount or bonus. Tax is added automatically at checkout based on the customer's billing address. + amount_in_dollars: Amount to charge, in USD. **Must be from 50 to 20,000.** The balance receives the same amount, with no discount or bonus. Tax is added automatically at checkout based on the customer's billing address. success_url: URL the hosted checkout redirects the customer to after a successful payment. Currently defaults to `https://console.didit.me`. Pass a working URL explicitly; the default host is unavailable. Append the literal placeholder `{CHECKOUT_SESSION_ID}` if you want the hosted checkout to substitute the session ID. cancel_url: URL the hosted checkout redirects the customer to when they abort or close the Checkout window. Currently defaults to `https://console.didit.me`. Pass a working URL explicitly; the default host is unavailable. extra_headers: Headers to add to (or, with ``None``, remove from) this request. diff --git a/src/didit/resources/transactions/rules.py b/src/didit/resources/transactions/rules.py index 9e34c46..54b60e5 100644 --- a/src/didit/resources/transactions/rules.py +++ b/src/didit/resources/transactions/rules.py @@ -137,7 +137,7 @@ def create( ) -> TransactionRuleDetail: """Create rule. - Create a CUSTOM transaction-monitoring rule. Titles are unique per application (duplicate -> 400). A `change_status` action targeting `AWAITING_USER` must carry `workflow_id`. Rules created in ACTIVE mode apply to new transactions immediately - the recommended workflow is create in TEST mode, backtest, then switch mode to ACTIVE. + Create a CUSTOM transaction-monitoring rule. Titles are unique per application (duplicate -> 400). A `change_status` action targeting `AWAITING_USER` must carry `workflow_id`. Rules created in ACTIVE mode apply to new transactions immediately - the recommended workflow is create in TEST mode, backtest, then switch mode to ACTIVE. To change a library rule, create it as a copy: send the library rule's definition with `metadata.based_on` (its library key) and `metadata.based_on_rule_uuid`. ``POST /v3/transactions/rules/`` @@ -278,7 +278,7 @@ def update( ) -> TransactionRuleDetail: """Update rule. - Partially update a rule. Custom rules accept every configuration field. Library (PRESET) rules accept only `mode` - use it to activate, disable, or switch a preset to TEST; any other field returns 400. An installed copy of a withheld library rule is switched off: setting its `mode` to anything but `DISABLED` answers 400 ("This library rule cannot run yet: its conditions read data the rules engine cannot evaluate."). + Partially update a rule. Custom rules accept every configuration field. Library (PRESET) rules accept only `mode` - use it to activate, disable, or switch a preset to TEST; any other field returns 400, because Didit maintains library rules and applies their updates automatically. To change a library rule's conditions, create a custom copy with `POST /v3/transactions/rules/` using the library rule's definition and `metadata.based_on` (the library key) and `metadata.based_on_rule_uuid`, then switch the library rule off with `mode: DISABLED` so a transaction does not alert twice. An installed copy of a withheld library rule is switched off: setting its `mode` to anything but `DISABLED` answers 400 ("This library rule cannot run yet: its conditions read data the rules engine cannot evaluate."). ``PATCH /v3/transactions/rules/{rule_uuid}/`` @@ -605,7 +605,7 @@ async def create( ) -> TransactionRuleDetail: """Create rule. - Create a CUSTOM transaction-monitoring rule. Titles are unique per application (duplicate -> 400). A `change_status` action targeting `AWAITING_USER` must carry `workflow_id`. Rules created in ACTIVE mode apply to new transactions immediately - the recommended workflow is create in TEST mode, backtest, then switch mode to ACTIVE. + Create a CUSTOM transaction-monitoring rule. Titles are unique per application (duplicate -> 400). A `change_status` action targeting `AWAITING_USER` must carry `workflow_id`. Rules created in ACTIVE mode apply to new transactions immediately - the recommended workflow is create in TEST mode, backtest, then switch mode to ACTIVE. To change a library rule, create it as a copy: send the library rule's definition with `metadata.based_on` (its library key) and `metadata.based_on_rule_uuid`. ``POST /v3/transactions/rules/`` @@ -746,7 +746,7 @@ async def update( ) -> TransactionRuleDetail: """Update rule. - Partially update a rule. Custom rules accept every configuration field. Library (PRESET) rules accept only `mode` - use it to activate, disable, or switch a preset to TEST; any other field returns 400. An installed copy of a withheld library rule is switched off: setting its `mode` to anything but `DISABLED` answers 400 ("This library rule cannot run yet: its conditions read data the rules engine cannot evaluate."). + Partially update a rule. Custom rules accept every configuration field. Library (PRESET) rules accept only `mode` - use it to activate, disable, or switch a preset to TEST; any other field returns 400, because Didit maintains library rules and applies their updates automatically. To change a library rule's conditions, create a custom copy with `POST /v3/transactions/rules/` using the library rule's definition and `metadata.based_on` (the library key) and `metadata.based_on_rule_uuid`, then switch the library rule off with `mode: DISABLED` so a transaction does not alert twice. An installed copy of a withheld library rule is switched off: setting its `mode` to anything but `DISABLED` answers 400 ("This library rule cannot run yet: its conditions read data the rules engine cannot evaluate."). ``PATCH /v3/transactions/rules/{rule_uuid}/`` diff --git a/src/didit/types/billing/retrieve_balance_response.py b/src/didit/types/billing/retrieve_balance_response.py index 5349a73..6bd5e4e 100644 --- a/src/didit/types/billing/retrieve_balance_response.py +++ b/src/didit/types/billing/retrieve_balance_response.py @@ -14,7 +14,7 @@ class BillingRetrieveBalanceResponse(BaseModel): """When `true`, Didit will automatically charge the saved payment method to add credits once the balance crosses `auto_refill_threshold`. Configured from Console → Billing.""" auto_refill_amount: str | None = None - """USD amount that will be charged and added to the balance on each auto-refill, at face value. Set from \\$50 to \\$10,000 in Console → Billing. `null` when auto-refill is disabled or unset.""" + """USD amount that will be charged and added to the balance on each auto-refill, at face value. Set from \\$50 to \\$20,000 in Console → Billing. `null` when auto-refill is disabled or unset.""" auto_refill_threshold: str | None = None """Trigger threshold in USD. Auto-refill fires when `balance` falls below this value. `null` when auto-refill is disabled or unset.""" diff --git a/src/didit/types/billing/top_up_params.py b/src/didit/types/billing/top_up_params.py index 0f39da3..9670429 100644 --- a/src/didit/types/billing/top_up_params.py +++ b/src/didit/types/billing/top_up_params.py @@ -8,7 +8,7 @@ class BillingTopUpParams(TypedDict, total=False): amount_in_dollars: Required[float] - """Amount to charge, in USD. **Must be from 50 to 10,000.** The balance receives the same amount, with no discount or bonus. Tax is added automatically at checkout based on the customer's billing address.""" + """Amount to charge, in USD. **Must be from 50 to 20,000.** The balance receives the same amount, with no discount or bonus. Tax is added automatically at checkout based on the customer's billing address.""" success_url: str """URL the hosted checkout redirects the customer to after a successful payment. Currently defaults to `https://console.didit.me`. Pass a working URL explicitly; the default host is unavailable. Append the literal placeholder `{CHECKOUT_SESSION_ID}` if you want the hosted checkout to substitute the session ID.""" diff --git a/src/didit/types/components/review_item.py b/src/didit/types/components/review_item.py index 348704f..d865585 100644 --- a/src/didit/types/components/review_item.py +++ b/src/didit/types/components/review_item.py @@ -100,7 +100,7 @@ class ReviewItem(BaseModel): """Names of the fields modified by this activity (e.g. `["status"]`). Empty for comments and for entries added via `POST …/reviews/`.""" metadata: dict[str, object] | None = None - """Extra context for system-generated entries. Console detail-page views carry `{"system_event": "DETAIL_VIEWED", "detail_type": "verification"}` so they can be filtered out of notification logic. `null` for ordinary entries.""" + """Extra context for system-generated entries. Console detail-page views carry `{"system_event": "DETAIL_VIEWED", "detail_type": "verification"}` so they can be filtered out of notification logic. A `COMMENT` its author edited in the Console carries `edited_at`, the ISO 8601 time of the last edit (`comment` and `mentioned_emails` then hold the edited text and its mentions). `null` for ordinary entries.""" created_at: _dt.datetime | None = None """When the entry was written, ISO 8601 UTC.""" diff --git a/src/didit/types/components/session_decision.py b/src/didit/types/components/session_decision.py index 973d28a..35c44a1 100644 --- a/src/didit/types/components/session_decision.py +++ b/src/didit/types/components/session_decision.py @@ -1254,7 +1254,7 @@ class SessionDecisionIdVerificationsExtraFields(BaseModel): class SessionDecisionIdVerificationsFallbackFrom(BaseModel): - """Why a non-document method ended the ID step. Set on the declined report when a lookup or a wallet sign-in failed and the country's fallback switch was `decline`. `null` otherwise.""" + """Why a non-document method did not end the ID step. Set when a lookup or a wallet sign-in failed: on the document verification the user continued with when the country's fallback switch was `fallback_to_document` (`action` is `fallback_to_document`), or on the declined report when it was `decline`. `null` otherwise.""" method: Literal["id_lookup", "wallet"] | str | None = None """The method that failed.""" @@ -1262,8 +1262,8 @@ class SessionDecisionIdVerificationsFallbackFrom(BaseModel): reason: str | None = None """The outcome that ended it, e.g. `no_match`, `provider_error`, `cancelled`, `timeout`.""" - action: str | None = None - """The configured action that was taken, e.g. `decline`.""" + action: Literal["fallback_to_document", "decline"] | str | None = None + """The configured action that was taken: `fallback_to_document` or `decline`.""" class SessionDecisionIdVerificationsFrontImageQualityScore(BaseModel): @@ -1632,7 +1632,7 @@ class SessionDecisionIdVerifications(BaseModel): """Catalog wallet id when `verification_method` is `wallet` (`mitid`, `bankid_se`, `itsme`, ...). `null` otherwise.""" fallback_from: SessionDecisionIdVerificationsFallbackFrom | None = None - """Why a non-document method ended the ID step. Set on the declined report when a lookup or a wallet sign-in failed and the country's fallback switch was `decline`. `null` otherwise.""" + """Why a non-document method did not end the ID step. Set when a lookup or a wallet sign-in failed: on the document verification the user continued with when the country's fallback switch was `fallback_to_document` (`action` is `fallback_to_document`), or on the declined report when it was `decline`. `null` otherwise.""" id_lookup: SessionDecisionIdVerificationsIdLookup | None = None """Registry evidence. Present only when `verification_method` is `id_lookup`; `null` otherwise.""" diff --git a/src/didit/types/kyb/list_shareholders_response.py b/src/didit/types/kyb/list_shareholders_response.py index c42199e..b760626 100644 --- a/src/didit/types/kyb/list_shareholders_response.py +++ b/src/didit/types/kyb/list_shareholders_response.py @@ -229,8 +229,8 @@ class KybListShareholdersResponseKybRegistry(BaseModel): risk_level: str | None = None """Registry-reported risk level, when available.""" - verification_status: str | None = None - """Registry verification status, when available.""" + verification_status: Literal["verified", "failed", "unknown"] | str | None = None + """Cross-jurisdiction verification status: `verified` when the registry status establishes standing (`active`), `failed` when it says the company is no longer standing (for example `dissolved`), otherwise `unknown`. `null` for a company that did not come from a registry and while a selection is still `pending`.""" is_from_registry: bool | None = None """Always `true` for this endpoint - the profile was retrieved from an official registry.""" @@ -588,8 +588,8 @@ class KybListShareholdersResponse202KybRegistry(BaseModel): risk_level: str | None = None """Registry-reported risk level, when available.""" - verification_status: str | None = None - """Registry verification status, when available.""" + verification_status: Literal["verified", "failed", "unknown"] | str | None = None + """Cross-jurisdiction verification status: `verified` when the registry status establishes standing (`active`), `failed` when it says the company is no longer standing (for example `dissolved`), otherwise `unknown`. `null` for a company that did not come from a registry and while a selection is still `pending`.""" is_from_registry: bool | None = None """Always `true` for this endpoint - the profile was retrieved from an official registry.""" diff --git a/src/didit/types/kyb/list_ubos_response.py b/src/didit/types/kyb/list_ubos_response.py index 418808c..6bccc89 100644 --- a/src/didit/types/kyb/list_ubos_response.py +++ b/src/didit/types/kyb/list_ubos_response.py @@ -229,8 +229,8 @@ class KybListUbosResponseKybRegistry(BaseModel): risk_level: str | None = None """Registry-reported risk level, when available.""" - verification_status: str | None = None - """Registry verification status, when available.""" + verification_status: Literal["verified", "failed", "unknown"] | str | None = None + """Cross-jurisdiction verification status: `verified` when the registry status establishes standing (`active`), `failed` when it says the company is no longer standing (for example `dissolved`), otherwise `unknown`. `null` for a company that did not come from a registry and while a selection is still `pending`.""" is_from_registry: bool | None = None """Always `true` for this endpoint - the profile was retrieved from an official registry.""" @@ -588,8 +588,8 @@ class KybListUbosResponse202KybRegistry(BaseModel): risk_level: str | None = None """Registry-reported risk level, when available.""" - verification_status: str | None = None - """Registry verification status, when available.""" + verification_status: Literal["verified", "failed", "unknown"] | str | None = None + """Cross-jurisdiction verification status: `verified` when the registry status establishes standing (`active`), `failed` when it says the company is no longer standing (for example `dissolved`), otherwise `unknown`. `null` for a company that did not come from a registry and while a selection is still `pending`.""" is_from_registry: bool | None = None """Always `true` for this endpoint - the profile was retrieved from an official registry.""" diff --git a/src/didit/types/kyb/select_response.py b/src/didit/types/kyb/select_response.py index b16a079..30ee219 100644 --- a/src/didit/types/kyb/select_response.py +++ b/src/didit/types/kyb/select_response.py @@ -224,8 +224,8 @@ class KybSelectResponseKybRegistry(BaseModel): risk_level: str | None = None """Registry-reported risk level, when available.""" - verification_status: str | None = None - """Registry verification status, when available.""" + verification_status: Literal["verified", "failed", "unknown"] | str | None = None + """Cross-jurisdiction verification status: `verified` when the registry status establishes standing (`active`), `failed` when it says the company is no longer standing (for example `dissolved`), otherwise `unknown`. `null` for a company that did not come from a registry and while a selection is still `pending`.""" is_from_registry: bool | None = None """Always `true` for this endpoint - the profile was retrieved from an official registry."""