diff --git a/openapi/SOURCE.json b/openapi/SOURCE.json index 6e1d8dd..c09af57 100644 --- a/openapi/SOURCE.json +++ b/openapi/SOURCE.json @@ -1,8 +1,8 @@ { "verification.json": { "url": "https://docs.didit.me/openapi-25.json", - "sha256": "99198089e59db66a2eb3fa2a17c9475a2dafce62ee25ed8998eaf00fb2108406", - "fetched_at": "2026-11-09T06:52:02Z" + "sha256": "e1667363543375d49fb5682c1e5a6fcf7b3ebe7b48ab3fb53616b3bc6ea8ac3d", + "fetched_at": "2026-11-10T11:01:54Z" }, "account.json": { "url": "https://docs.didit.me/openapi-auth.json", diff --git a/openapi/verification.json b/openapi/verification.json index 65d28d8..3c6cccd 100644 --- a/openapi/verification.json +++ b/openapi/verification.json @@ -3055,7 +3055,8 @@ "status": "Success", "reason": null, "channel": "sms", - "actual_channel": "sms" + "actual_channel": "sms", + "attempt": 0 }, "fee": 0.1 }, @@ -16531,7 +16532,9 @@ "status": "Success", "reason": null, "channel": "whatsapp", - "actual_channel": "whatsapp" + "actual_channel": "whatsapp", + "attempt": 0, + "delivery_status": "delivered" }, "fee": 0.0509 }, @@ -16540,7 +16543,8 @@ "timestamp": "2026-06-12T01:23:43.118220+00:00", "details": { "channel": "whatsapp", - "status": "delivered" + "status": "delivered", + "attempt": 0 }, "fee": 0 }, @@ -16619,7 +16623,8 @@ "status": "Success", "reason": null, "channel": "whatsapp", - "actual_channel": "whatsapp" + "actual_channel": "whatsapp", + "attempt": 0 }, "fee": 0.0509 }, @@ -16706,7 +16711,8 @@ "status": "Success", "reason": null, "channel": "whatsapp", - "actual_channel": "sms" + "actual_channel": "sms", + "attempt": 0 }, "fee": 0.0509 }, @@ -92261,7 +92267,7 @@ "details": { "type": "object", "nullable": true, - "description": "Event-specific payload. Send events: `{status, reason, channel, actual_channel}` (`actual_channel` is filled once delivery is confirmed). Delivery events: `{channel, status}`. Code-entry events: `{code_tried, status}`. Final-status events: `null`, or `{reason}` when declined or in review." + "description": "Event-specific payload. Send events: `{status, reason, channel, actual_channel, attempt, delivery_status}` — `actual_channel` is filled once delivery is confirmed, `attempt` is the 0-based index of the send (the order of the send events), and `delivery_status` is `delivered`, `undeliverable` or `unknown` (no report arrived before the verification ended); it is absent while a report can still arrive. Delivery events: `{channel, status, attempt, reason}` — `attempt` is the send it belongs to, and `reason` (on `PHONE_DELIVERY_UNDELIVERABLE` only) is `expired`, `rejected`, `unreachable`, `blocked` or `unknown` for a message, and `unreachable_number`, `no_answer`, `busy` or `undeliverable` for a call. Code-entry events: `{code_tried, status}`. Final-status events: `null`, or `{reason}` when declined or in review." }, "fee": { "type": "number", @@ -110902,14 +110908,15 @@ "details": { "type": "object", "nullable": true, - "description": "Event-specific payload. Send events carry `status`, `reason`, `channel`, `actual_channel`; delivery events carry `channel`, `status`; code-check events carry `code_tried`, `status`; final status events carry `reason` — or `null` when there is no reason to report (e.g. `PHONE_VERIFICATION_APPROVED`).", + "description": "Event-specific payload. Send events carry `status`, `reason`, `channel`, `actual_channel`, `attempt` (the send's 0-based index, matching the order of the send events) and `delivery_status` (`delivered`, `undeliverable`, or `unknown` once no report can still arrive; absent while one can); delivery events carry `channel`, `status`, `attempt` and, on `PHONE_DELIVERY_UNDELIVERABLE`, `reason` (`expired`, `rejected`, `unreachable`, `blocked` or `unknown` for a message; `unreachable_number`, `no_answer`, `busy` or `undeliverable` for a call — always a fixed word, never a provider status or error code); code-check events carry `code_tried`, `status`; final status events carry `reason` — or `null` when there is no reason to report (e.g. `PHONE_VERIFICATION_APPROVED`).", "properties": { "status": { "type": "string" }, "reason": { "type": "string", - "nullable": true + "nullable": true, + "description": "Send events: why the send was blocked (`invalid_phone_number`, `repeated_attempts`, `suspicious`, `spam`, `unknown`), `null` otherwise. Delivery events on `PHONE_DELIVERY_UNDELIVERABLE`: `expired`, `rejected`, `unreachable`, `blocked` or `unknown` for a message, and `unreachable_number`, `no_answer`, `busy` or `undeliverable` for a call — a fixed customer-safe word, never the provider's status or error code." }, "channel": { "type": "string", @@ -110919,6 +110926,21 @@ "type": "string", "nullable": true }, + "attempt": { + "type": "integer", + "nullable": true, + "description": "Send events and delivery events: the 0-based index of the send attempt the event belongs to, in the order of the send events." + }, + "delivery_status": { + "type": "string", + "nullable": true, + "enum": [ + "delivered", + "undeliverable", + "unknown" + ], + "description": "Send events: how the send ended. `unknown` once no delivery report can still arrive (the verification finished without one); absent while one can." + }, "code_tried": { "type": "string" } diff --git a/src/Types/PhoneVerificationCheckResponsePhoneLifecycle.php b/src/Types/PhoneVerificationCheckResponsePhoneLifecycle.php index dc787c9..dd2391c 100644 --- a/src/Types/PhoneVerificationCheckResponsePhoneLifecycle.php +++ b/src/Types/PhoneVerificationCheckResponsePhoneLifecycle.php @@ -21,9 +21,11 @@ final class PhoneVerificationCheckResponsePhoneLifecycle extends BaseModel public readonly ?\DateTimeImmutable $timestamp; /** - * Event-specific payload. Send events: `{status, reason, channel, actual_channel}` (`actual_channel` - * is filled once delivery is confirmed). Delivery events: `{channel, status}`. Code-entry events: - * `{code_tried, status}`. Final-status events: `null`, or `{reason}` when declined or in review. + * Event-specific payload. Send events: `{status, reason, channel, actual_channel, attempt, + * delivery_status}`, `actual_channel` is filled once delivery is confirmed, `attempt` is the 0-based + * index of the send (the order of the send events), and `delivery_status` is `delivered`, + * `undeliverable` or `unknown` (no report arrived before the verification ended); it is absent while a + * report can still arrive. * * @var array|null */ diff --git a/src/Types/SessionDecisionPhoneVerificationsLifecycle.php b/src/Types/SessionDecisionPhoneVerificationsLifecycle.php index 2af4f19..3a4b650 100644 --- a/src/Types/SessionDecisionPhoneVerificationsLifecycle.php +++ b/src/Types/SessionDecisionPhoneVerificationsLifecycle.php @@ -21,10 +21,13 @@ final class SessionDecisionPhoneVerificationsLifecycle extends BaseModel public readonly ?\DateTimeImmutable $timestamp; /** - * Event-specific payload. Send events carry `status`, `reason`, `channel`, `actual_channel`; delivery - * events carry `channel`, `status`; code-check events carry `code_tried`, `status`; final status - * events carry `reason`, or `null` when there is no reason to report (e.g. - * `PHONE_VERIFICATION_APPROVED`). + * Event-specific payload. Send events carry `status`, `reason`, `channel`, `actual_channel`, `attempt` + * (the send's 0-based index, matching the order of the send events) and `delivery_status` + * (`delivered`, `undeliverable`, or `unknown` once no report can still arrive; absent while one can); + * delivery events carry `channel`, `status`, `attempt` and, on `PHONE_DELIVERY_UNDELIVERABLE`, + * `reason` (`expired`, `rejected`, `unreachable`, `blocked` or `unknown` for a message; + * `unreachable_number`, `no_answer`, `busy` or `undeliverable` for a call, always a fixed word, never + * a provider status or error code... */ public readonly ?SessionDecisionPhoneVerificationsLifecycleDetails $details; diff --git a/src/Types/SessionDecisionPhoneVerificationsLifecycleDetails.php b/src/Types/SessionDecisionPhoneVerificationsLifecycleDetails.php index 184f2f1..9527ed5 100644 --- a/src/Types/SessionDecisionPhoneVerificationsLifecycleDetails.php +++ b/src/Types/SessionDecisionPhoneVerificationsLifecycleDetails.php @@ -10,17 +10,26 @@ use Didit\Core\Hydrate; /** - * Event-specific payload. Send events carry `status`, `reason`, `channel`, `actual_channel`; delivery - * events carry `channel`, `status`; code-check events carry `code_tried`, `status`; final status - * events carry `reason`, or `null` when there is no reason to report (e.g. - * `PHONE_VERIFICATION_APPROVED`). + * Event-specific payload. Send events carry `status`, `reason`, `channel`, `actual_channel`, `attempt` + * (the send's 0-based index, matching the order of the send events) and `delivery_status` + * (`delivered`, `undeliverable`, or `unknown` once no report can still arrive; absent while one can); + * delivery events carry `channel`, `status`, `attempt` and, on `PHONE_DELIVERY_UNDELIVERABLE`, + * `reason` (`expired`, `rejected`, `unreachable`, `blocked` or `unknown` for a message; + * `unreachable_number`, `no_answer`, `busy` or `undeliverable` for a call, always a fixed word, never + * a provider status or error code... */ final class SessionDecisionPhoneVerificationsLifecycleDetails extends BaseModel { /** The `status` field. */ public readonly ?string $status; - /** The `reason` field. */ + /** + * Send events: why the send was blocked (`invalid_phone_number`, `repeated_attempts`, `suspicious`, + * `spam`, `unknown`), `null` otherwise. Delivery events on `PHONE_DELIVERY_UNDELIVERABLE`: `expired`, + * `rejected`, `unreachable`, `blocked` or `unknown` for a message, and `unreachable_number`, + * `no_answer`, `busy` or `undeliverable` for a call, a fixed customer-safe word, never the provider's + * status or error code. + */ public readonly ?string $reason; /** The `channel` field. */ @@ -29,6 +38,20 @@ final class SessionDecisionPhoneVerificationsLifecycleDetails extends BaseModel /** The `actual_channel` field. */ public readonly ?string $actualChannel; + /** + * Send events and delivery events: the 0-based index of the send attempt the event belongs to, in the + * order of the send events. + */ + public readonly ?int $attempt; + + /** + * Send events: how the send ended. `unknown` once no delivery report can still arrive (the + * verification finished without one); absent while one can. + * + * Known values: {@see SessionDecisionPhoneVerificationsLifecycleDetailsDeliveryStatus}. + */ + public readonly ?string $deliveryStatus; + /** The `code_tried` field. */ public readonly ?string $codeTried; @@ -42,6 +65,8 @@ public function __construct(array $data) $this->reason = Hydrate::string($data['reason'] ?? null); $this->channel = Hydrate::string($data['channel'] ?? null); $this->actualChannel = Hydrate::string($data['actual_channel'] ?? null); + $this->attempt = Hydrate::int($data['attempt'] ?? null); + $this->deliveryStatus = Hydrate::string($data['delivery_status'] ?? null); $this->codeTried = Hydrate::string($data['code_tried'] ?? null); } } diff --git a/src/Types/SessionDecisionPhoneVerificationsLifecycleDetailsDeliveryStatus.php b/src/Types/SessionDecisionPhoneVerificationsLifecycleDetailsDeliveryStatus.php new file mode 100644 index 0000000..5ee0614 --- /dev/null +++ b/src/Types/SessionDecisionPhoneVerificationsLifecycleDetailsDeliveryStatus.php @@ -0,0 +1,26 @@ +queueJson(200, '{"request_id":"e39cb057-92fc-4b59-b84e-02fec29a0f24","status":"Approved","message":"The verification code is correct.","phone":{"status":"Approved","phone_number_prefix":"+1","phone_number":"4155552671","full_number":"+14155552671","country_code":"US","country_name":"United States","carrier":{"name":"AT&T","type":"mobile"},"is_disposable":false,"is_virtual":false,"verification_method":"whatsapp","verification_attempts":1,"verified_at":"2026-06-12T01:24:47.311323Z","warnings":[],"lifecycle":[{"type":"PHONE_VERIFICATION_MESSAGE_SENT","timestamp":"2026-06-12T01:23:39.580554+00:00","details":{"status":"Success","reason":null,"channel":"whatsapp","actual_channel":"whatsapp"},"fee":0.0509},{"type":"PHONE_DELIVERY_DELIVERED","timestamp":"2026-06-12T01:23:43.118220+00:00","details":{"channel":"whatsapp","status":"delivered"},"fee":0},{"type":"VALID_CODE_ENTERED","timestamp":"2026-06-12T01:24:47.311201+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"PHONE_VERIFICATION_APPROVED","timestamp":"2026-06-12T01:24:47.384292+00:00","details":null,"fee":0}],"matches":[]},"vendor_data":"user-1234","metadata":null,"created_at":"2026-06-12T01:24:47.401719+00:00"}'); + $this->queueJson(200, '{"request_id":"e39cb057-92fc-4b59-b84e-02fec29a0f24","status":"Approved","message":"The verification code is correct.","phone":{"status":"Approved","phone_number_prefix":"+1","phone_number":"4155552671","full_number":"+14155552671","country_code":"US","country_name":"United States","carrier":{"name":"AT&T","type":"mobile"},"is_disposable":false,"is_virtual":false,"verification_method":"whatsapp","verification_attempts":1,"verified_at":"2026-06-12T01:24:47.311323Z","warnings":[],"lifecycle":[{"type":"PHONE_VERIFICATION_MESSAGE_SENT","timestamp":"2026-06-12T01:23:39.580554+00:00","details":{"status":"Success","reason":null,"channel":"whatsapp","actual_channel":"whatsapp","attempt":0,"delivery_status":"delivered"},"fee":0.0509},{"type":"PHONE_DELIVERY_DELIVERED","timestamp":"2026-06-12T01:23:43.118220+00:00","details":{"channel":"whatsapp","status":"delivered","attempt":0},"fee":0},{"type":"VALID_CODE_ENTERED","timestamp":"2026-06-12T01:24:47.311201+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"PHONE_VERIFICATION_APPROVED","timestamp":"2026-06-12T01:24:47.384292+00:00","details":null,"fee":0}],"matches":[]},"vendor_data":"user-1234","metadata":null,"created_at":"2026-06-12T01:24:47.401719+00:00"}'); $result = $this->client->phone->checkCode([ 'phone_number' => 'phone_number-value', @@ -120,7 +120,7 @@ public function testCheckCode(): void self::assertSame('application/json', $request->getHeaderLine('Content-Type')); self::assertSame('{"phone_number":"phone_number-value","code":"code-value","duplicated_phone_number_action":"NO_ACTION","disposable_number_action":"NO_ACTION","voip_number_action":"NO_ACTION","enable_enrichment":true,"phone_intelligence_score_action":"NO_ACTION","phone_type_risk_action":"NO_ACTION","recent_port_action":"NO_ACTION","low_phone_trust_action":"NO_ACTION","enable_social":true,"phone_no_social_presence_action":"NO_ACTION"}', $this->canonicalBody($request)); self::assertSame(200, $result->rawResponse()?->status); - self::assertSame($this->decoded('{"request_id":"e39cb057-92fc-4b59-b84e-02fec29a0f24","status":"Approved","message":"The verification code is correct.","phone":{"status":"Approved","phone_number_prefix":"+1","phone_number":"4155552671","full_number":"+14155552671","country_code":"US","country_name":"United States","carrier":{"name":"AT&T","type":"mobile"},"is_disposable":false,"is_virtual":false,"verification_method":"whatsapp","verification_attempts":1,"verified_at":"2026-06-12T01:24:47.311323Z","warnings":[],"lifecycle":[{"type":"PHONE_VERIFICATION_MESSAGE_SENT","timestamp":"2026-06-12T01:23:39.580554+00:00","details":{"status":"Success","reason":null,"channel":"whatsapp","actual_channel":"whatsapp"},"fee":0.0509},{"type":"PHONE_DELIVERY_DELIVERED","timestamp":"2026-06-12T01:23:43.118220+00:00","details":{"channel":"whatsapp","status":"delivered"},"fee":0},{"type":"VALID_CODE_ENTERED","timestamp":"2026-06-12T01:24:47.311201+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"PHONE_VERIFICATION_APPROVED","timestamp":"2026-06-12T01:24:47.384292+00:00","details":null,"fee":0}],"matches":[]},"vendor_data":"user-1234","metadata":null,"created_at":"2026-06-12T01:24:47.401719+00:00"}'), $result->toArray()); + self::assertSame($this->decoded('{"request_id":"e39cb057-92fc-4b59-b84e-02fec29a0f24","status":"Approved","message":"The verification code is correct.","phone":{"status":"Approved","phone_number_prefix":"+1","phone_number":"4155552671","full_number":"+14155552671","country_code":"US","country_name":"United States","carrier":{"name":"AT&T","type":"mobile"},"is_disposable":false,"is_virtual":false,"verification_method":"whatsapp","verification_attempts":1,"verified_at":"2026-06-12T01:24:47.311323Z","warnings":[],"lifecycle":[{"type":"PHONE_VERIFICATION_MESSAGE_SENT","timestamp":"2026-06-12T01:23:39.580554+00:00","details":{"status":"Success","reason":null,"channel":"whatsapp","actual_channel":"whatsapp","attempt":0,"delivery_status":"delivered"},"fee":0.0509},{"type":"PHONE_DELIVERY_DELIVERED","timestamp":"2026-06-12T01:23:43.118220+00:00","details":{"channel":"whatsapp","status":"delivered","attempt":0},"fee":0},{"type":"VALID_CODE_ENTERED","timestamp":"2026-06-12T01:24:47.311201+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"PHONE_VERIFICATION_APPROVED","timestamp":"2026-06-12T01:24:47.384292+00:00","details":null,"fee":0}],"matches":[]},"vendor_data":"user-1234","metadata":null,"created_at":"2026-06-12T01:24:47.401719+00:00"}'), $result->toArray()); self::assertSame('e39cb057-92fc-4b59-b84e-02fec29a0f24', $result->requestId); } } diff --git a/tests/Generated/SessionsTest.php b/tests/Generated/SessionsTest.php index ddda1d2..a631392 100644 --- a/tests/Generated/SessionsTest.php +++ b/tests/Generated/SessionsTest.php @@ -92,7 +92,7 @@ public function testCreate(): void public function testRetrieveDecision(): void { - $this->queueJson(200, '{"session_id":"11111111-2222-3333-4444-555555555555","session_kind":"user","session_number":43762,"session_url":"https://verify.didit.me/session/11111111-2222-3333-4444-555555555555","status":"In Review","environment":"live","workflow_id":"11111111-2222-3333-4444-555555555555","features":["ID_VERIFICATION","NFC","LIVENESS","FACE_MATCH","POA","PHONE","DATABASE_VALIDATION","AML","IP_ANALYSIS"],"vendor_data":"11111111-1111-1111-1111-111111111111","metadata":{"user_type":"premium","account_id":"ABC123"},"expected_details":{"first_name":"Carmen","last_name":"Española Española"},"contact_details":{"email":"carmen@example.com","email_lang":"es","send_notification_emails":false,"phone":null},"callback":"https://verify.didit.me/","id_verifications":[{"node_id":"feature_ocr_1","status":"Approved","document_type":"Identity Card","document_subtype":"ID_CARD_GENERIC","document_number":"CAA000000","personal_number":"99999999R","portrait_image":"https:///portrait.jpg","front_image":"https:///front.jpg","front_video":"https:///front.mp4","back_image":"https:///back.jpg","back_video":"https:///back.mp4","full_front_image":"https:///full_front.jpg","full_back_image":"https:///full_back.jpg","front_image_camera_front":"https:///front_camera_front.jpg","back_image_camera_front":"https:///back_camera_front.jpg","date_of_birth":"1980-01-01","age":45,"expiration_date":"2031-06-02","date_of_issue":"2021-06-02","issuing_state":"ESP","issuing_state_name":"Spain","first_name":"Carmen","last_name":"Española Española","full_name":"Carmen Española Española","gender":"F","address":"Avda de Madrid 34, Madrid, Madrid","formatted_address":"Avda de Madrid 34, Madrid, Madrid 28822, Spain","place_of_birth":"Madrid","marital_status":"Single","nationality":"ESP","extra_fields":{"dl_categories":[],"blood_group":null},"mrz":{"surname":"ESPANOLA ESPANOLA","name":"CARMEN","country":"ESP","nationality":"ESP","birth_date":"800101","expiry_date":"310602","sex":"F","document_type":"ID","document_number":"CAA000000","optional_data":"99999999R","optional_data_2":"","birth_date_hash":"4","expiry_date_hash":"8","document_number_hash":"4","final_hash":"1","personal_number":"99999999R","warnings":[],"errors":[],"mrz_type":"TD1","mrz_string":"IDESPCAA000000499999999R<<<<<<\\n8001014F3106028ESP<<<<<<<<<<<1\\nESPANOLA/match_face.jpg","status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":null,"source":"session"}],"front_image_quality_score":{"focus_score":85.3,"brightness_score":92.1,"brightness_issue":"ok","is_document_fully_visible":true,"resolution_score":72.4,"overall_score":88.7},"back_image_quality_score":{"focus_score":79.1,"brightness_score":90.5,"brightness_issue":"ok","is_document_fully_visible":true,"resolution_score":72.4,"overall_score":85.2},"extra_files":["https:///extra_id_verification.jpg"],"matches":[{"session_id":"7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f","session_number":1234,"vendor_data":"user_ref_001","verification_date":"2024-06-15T10:30:00Z","user_details":{"name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Approved","is_blocklisted":false,"api_service":null,"front_image_url":"https:///document_front.jpg"},{"session_id":"b2c8e4d1-6a3f-4e7b-95c0-1d8f2a6b4c9e","session_number":1235,"vendor_data":null,"verification_date":"2024-05-20T14:45:00Z","user_details":{"name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Declined","is_blocklisted":true,"api_service":"ID_VERIFICATION","front_image_url":"https:///document_front_2.jpg"}],"warnings":[{"feature":"ID_VERIFICATION","risk":"QR_NOT_DETECTED","additional_data":null,"log_type":"information","short_description":"QR not detected","long_description":"The system couldn\'t find or read the QR code on the document, which is necessary for document verification. This could be due to poor image quality or an unsupported document type.","node_id":"feature_ocr_1"}],"verification_method":"document","assurance":"documentary","wallet_provider":null,"fallback_from":null,"id_lookup":null,"wallet_verification":null,"document_liveness":{"portrait_replace":{"score":96.46,"front":96.46,"back":98.2,"decline_threshold":35,"review_threshold":70,"bucket":"approve"},"printed_copy":{"score":91.2,"front":91.2,"back":93.7,"decline_threshold":35,"review_threshold":77,"bucket":"approve"},"screen_replay":{"score":99.9,"front":99.9,"back":99.5,"decline_threshold":30,"review_threshold":70,"bucket":"approve"}}},{"node_id":"feature_ocr_2","status":"Approved","issuing_state":"ZAF","issuing_state_name":"South Africa","first_name":"Thabo","last_name":"Mokoena","full_name":"Thabo Mokoena","date_of_birth":"1991-06-15","personal_number":"9106155043088","verification_method":"id_lookup","assurance":"data_match","wallet_provider":null,"fallback_from":null,"id_lookup":{"source":"Department of Home Affairs","checked_at":"2026-09-04T09:12:44Z","attempts":1,"max_attempts":2,"outcome":"match","comparison":[{"field":"identification_number","label":"ID number","provided":"9106155043088","record":"9106155043088","result":"match"},{"field":"full_name","label":"Full name","provided":"Thabo Mokoena","record":"Thabo Mokoena","result":"match"},{"field":"date_of_birth","label":"Date of birth","provided":"1991-06-15","record":"1991-06-15","result":"match"}],"registry_portrait":"https:///registry_portrait.jpg","face_match_score":96.4,"source_errors":[]},"wallet_verification":null,"warnings":[]},{"node_id":"feature_ocr_3","status":"Approved","issuing_state":"DNK","issuing_state_name":"Denmark","first_name":"Freja","last_name":"Nielsen","full_name":"Freja Nielsen","date_of_birth":"1988-03-02","verification_method":"wallet","assurance":"cryptographic","wallet_provider":"mitid","fallback_from":null,"id_lookup":null,"wallet_verification":{"provider":"mitid","provider_name":"MitID","issuing_authority":"Danish Agency for Digital Government","issuing_country":"DNK","credential_type":"person_identification","level_of_assurance":"substantial","verified_at":"2026-09-04T09:12:44Z","signature_valid":true,"attributes":{"full_name":"Freja Nielsen","date_of_birth":"1988-03-02","cpr_alias":"b0f1c2d3-e4f5-4678-9abc-def012345678"},"portrait":null,"face_match_score":null},"warnings":[]}],"nfc_verifications":[{"node_id":"feature_nfc_1","status":"In Review","is_nfc_skipped":false,"skip_reason":null,"chip_protocol":"icao","jpki":null,"portrait_image":"https:///portrait.jpg","signature_image":"https:///signature.jpg","chip_data":{"document_type":"ID","issuing_country":"ESP","document_number":"123456789","expiration_date":"2030-01-01","first_name":"John","last_name":"Smith","birth_date":"1990-05-15","gender":"M","nationality":"ESP","address":"CALLE MAYOR 123 4B, MADRID, MADRID","place_of_birth":"MADRID, MADRID"},"authenticity":{"sod_integrity":true,"dg_integrity":true},"certificate_summary":{"issuer":"Common Name: CSCA SPAIN, Serial Number: 3, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES","subject":"Common Name: DS n-eID SPAIN 2, Organizational Unit: PASSPORT, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES","serial_number":"118120836164494130086420187336801405660","not_valid_after":"2031-02-18 10:21:11","not_valid_before":"2020-11-18 10:21:11"},"warnings":[{"feature":"NFC","risk":"DATA_INCONSISTENT","additional_data":null,"log_type":"warning","short_description":"OCR and NFC mrz code extracted are not the same","long_description":"The Optical Character Recognition (OCR) data and the NFC chip data don\'t match, indicating potential document tampering or data inconsistency.","node_id":"feature_nfc_1"}]}],"liveness_checks":[{"node_id":"feature_liveness_1","status":"Approved","method":"ACTIVE_3D","score":89.92,"reference_image":"https:///reference.jpg","video_url":"https:///video.mp4","age_estimation":24.3,"matches":[{"session_id":"7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f","session_number":1234,"vendor_data":"user_ref_001","verification_date":"2024-06-15T10:30:00Z","user_details":{"full_name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":null,"source":"session","match_image_url":"https:///face_match.jpg","similarity_percentage":98.5},{"session_id":"3e9a7c21-5b48-4f0e-9c6a-8d2f4b1e0a35","session_number":1100,"vendor_data":"customer_xyz","verification_date":"2024-04-10T09:15:00Z","user_details":{"full_name":"John Smith","document_type":"P","document_number":"DZ8375806"},"status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":"PASSIVE_LIVENESS","source":"session","match_image_url":"https:///face_match_2.jpg","similarity_percentage":95.2}],"warnings":[{"feature":"LIVENESS","risk":"LOW_LIVENESS_SCORE","additional_data":null,"log_type":"information","short_description":"Low liveness score","long_description":"The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data.","node_id":"feature_liveness_1"}],"face_quality":null,"face_luminance":null}],"face_matches":[{"node_id":"feature_face_match_1","status":"In Review","score":65.43,"source_image_session_id":null,"source_image":"https:///source-image.jpg","target_image":"https:///target-image.jpg","warnings":[{"feature":"FACEMATCH","risk":"LOW_FACE_MATCH_SIMILARITY","additional_data":null,"log_type":"warning","short_description":"Low face match similarity","long_description":"The facial features of the provided image don\'t closely match the reference image, suggesting a potential identity mismatch.","node_id":"feature_face_match_1"}]}],"phone_verifications":[{"node_id":"feature_phone_1","status":"Approved","phone_number_prefix":"+34","phone_number":"600600600","full_number":"+34600600600","country_code":"ES","country_name":"Spain","carrier":{"name":"Orange","type":"mobile"},"is_disposable":false,"is_virtual":false,"verification_method":"sms","verification_attempts":1,"verified_at":"2024-07-28T06:47:35.654321Z","lifecycle":[{"type":"PHONE_VERIFICATION_MESSAGE_SENT","timestamp":"2025-08-24T09:12:39.580554+00:00","details":{"status":"Success","reason":null,"channel":"sms","actual_channel":"sms"},"fee":0.1},{"type":"VALID_CODE_ENTERED","timestamp":"2025-08-24T09:12:39.662157+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"PHONE_VERIFICATION_APPROVED","timestamp":"2025-08-24T09:12:39.684292+00:00","details":null,"fee":0}],"warnings":[],"matches":[{"session_id":null,"session_number":null,"vendor_data":null,"verification_date":null,"phone_number":"+34600000000","status":null,"is_blocklisted":true,"api_service":null,"source":"list_entry"}]}],"email_verifications":[{"node_id":"feature_email_1","status":"Approved","email":"test@example.com","is_breached":true,"breaches":[{"name":"TAPAirPortugal","domain":"flytap.com","logo_path":"https://logos.example.com/TAPAirPortugal.png","breach_date":"2022-08-25","description":"In August 2022, the Portuguese airline TAP Air Portugal was the target of a ransomware attack perpetrated by the Ragnar Locker gang who later leaked the compromised data via a public dark web site. Over 5M unique email addresses were exposed alongside other personal data including names, genders, DoBs, phone numbers and physical addresses.","is_verified":true,"data_classes":["dates_of_birth","email_addresses","genders","names","nationalities","phone_numbers","physical_addresses","salutations","spoken_languages"],"breach_emails_count":6083479}],"is_disposable":false,"is_undeliverable":false,"verification_attempts":1,"verified_at":"2025-09-15T17:36:19.963451Z","warnings":[{"feature":"EMAIL","risk":"BREACHED_EMAIL_DETECTED","additional_data":null,"log_type":"information","short_description":"Breached email detected","long_description":"This email address was found in one or more known data breaches.","node_id":"feature_email_1"}],"lifecycle":[{"type":"EMAIL_VERIFICATION_MESSAGE_SENT","timestamp":"2025-09-15T17:36:19.792684+00:00","details":{"status":"Success","reason":null},"fee":0.02},{"type":"VALID_CODE_ENTERED","timestamp":"2025-09-15T17:36:19.963427+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"EMAIL_VERIFICATION_DECLINED","timestamp":"2025-09-15T17:36:20.081471+00:00","details":{"reason":"BREACHED_EMAIL_DETECTED"},"fee":0}],"matches":[{"session_id":null,"session_number":null,"vendor_data":null,"verification_date":null,"email":"test@example.com","status":null,"is_blocklisted":true,"api_service":null,"source":"list_entry"}]}],"poa_verifications":[{"node_id":"feature_poa_1","status":"Declined","document_file":"https:///poa_document.pdf","issuing_state":"AR","document_type":"UTILITY_BILL","document_subtype":null,"document_language":"es","document_metadata":{"file_size":1000,"content_type":"application/pdf","creation_date":"2021-01-01","modified_date":"2021-01-01","overlay_manipulation":null,"creator":null,"producer":"PDF Generator","software":null,"encryption":null,"is_signed":false,"is_tampered":false,"signature_info":null,"exif_original_date":null,"exif_digitized_date":null,"processed_by_known_editor":false,"has_different_creation_mod_date":true},"issuer":"Aguas del Norte","issue_date":"2021-02-01","expiration_date":null,"poa_address":"AVDA. MONSEÑOR TAVELLA N° 3396, SALTA","poa_formatted_address":"Av. Monseñor Tavella 3396, A4400 Salta, Argentina","poa_parsed_address":{"address_type":"Avenida","street_1":"Avenida Monseñor Tavella 3396","street_2":null,"city":"Salta","region":"Salta","country":"AR","postal_code":"A4400","document_location":{"latitude":-24.8208664,"longitude":-65.4131}},"name_on_document":"Fernando De Lima","name_match_score_expected_details":null,"name_match_score_id_verification":38.5,"expected_details_address":null,"expected_details_formatted_address":null,"expected_details_parsed_address":{},"extra_fields":{"bank_account_number":"1234567890","bank_iban":null,"bank_sort_code":null,"bank_routing_number":null,"bank_swift_bic":null,"bank_branch_name":null,"bank_branch_address":null,"document_phone_number":"+5491112345678","additional_names":[]},"extra_files":["https:///extra_poa.pdf"],"detected_codes":[{"type":"QR_CODE","page_number":1,"position":[[820,1120],[1002,1120],[1002,1302],[820,1302]],"x":820,"y":1120,"width":182,"height":182,"page_width":1190,"page_height":1684,"raw_payload":"aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==","parsed_payload":"https://aguasdelnorte.com/factura/998811"},{"type":"CODE_128","page_number":1,"position":[[112,1480],[560,1480],[560,1540],[112,1540]],"x":112,"y":1480,"width":448,"height":60,"page_width":1190,"page_height":1684,"raw_payload":"MDA5OTg4MTEwMDA0Mg==","parsed_payload":"0099881100042"}],"warnings":[]}],"document_ai_documents":[{"status":"Approved","node_id":"feature_document_ai_1","items":[{"uuid":"c1a2b3c4-d5e6-7f80-9a1b-2c3d4e5f6071","node_id":"feature_document_ai_1","document_key":"proof_of_funds","original_filename":"bank_statement.pdf","file_size":184320,"file_url":"https:///document_ai/proof_of_funds.pdf","status":"Approved","extracted_data":{"account_holder":"John Doe","balance":15230.55,"currency":"EUR","statement_date":"2026-05-31"},"detected_codes":[{"type":"QR_CODE","page_number":2,"position":[[124,86],[306,86],[306,268],[124,268]],"x":124,"y":86,"width":182,"height":182,"page_width":1190,"page_height":1684,"raw_payload":"SU5WLTIwMjYtMDA0Mg==","parsed_payload":"INV-2026-0042"}],"fields":[{"key":"account_holder","name":"Account holder","instruction":"Extract the full name of the account holder.","type":"text","required":true},{"key":"balance","name":"Closing balance","instruction":"Extract the closing balance amount.","type":"number","required":true}],"document_metadata":{"is_tampered":false},"cross_check_result":null,"created_at":"2026-06-01T12:34:56Z"}],"warnings":[]}],"questionnaire_responses":[{"node_id":"feature_questionnaire_1","questionnaire_id":"9f7485e0-b00b-4d56-9d3e-7859b68d1213","title":"Source of Funds","description":"Reply to this questionnaire to help us understand the source of funds.","languages":["en"],"default_language":"en","is_active":true,"is_simple_questionnaire":true,"questionnaire_group_id":"2b6a9d40-13a8-4b1e-9a6c-3f1d2e4b5a60","version":1,"published_at":"2025-11-02T09:14:55.000000Z","sections":[{"title":null,"description":null,"items":[{"uuid":"618636d9-7d5c-41ce-b8d0-1ab2a4be20db","value":"question_1","element_type":"DROPDOWN","is_required":true,"title":"What is your primary source of funds?","description":null,"placeholder":null,"choices":[{"label":"Salary","value":"salary"},{"label":"Business Income","value":"business_income"},{"label":"Savings","value":"savings"},{"label":"Investments","value":"investments"},{"label":"Sale of Asset","value":"sale_of_asset"},{"label":"Inheritance/Gift","value":"inheritance_gift"},{"label":"Pension","value":"pension"},{"label":"Crypto Proceeds","value":"crypto_proceeds"},{"label":"Other","value":"other","requires_text_input":true}],"max_files":1,"answer":{"value":"salary"},"required_if":null,"repeatable_config":null},{"uuid":"2d16b527-72be-42e0-8e96-b164b818386c","value":"question_2","element_type":"LONG_TEXT","is_required":true,"title":"Provide details of the primary source.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0","value":"question_3","element_type":"DROPDOWN","is_required":true,"title":"What is your annual income range (pre-tax)?","description":null,"placeholder":null,"choices":[{"label":"Less than $25,000","value":"<25k"},{"label":"$25,000 - $50,000","value":"25k-50k"},{"label":"$50,001 - $100,000","value":"50k-100k"},{"label":"$100,001 - $250,000","value":"100k-250k"},{"label":"More than $250,000","value":">250k"}],"max_files":1,"answer":{"value":"<25k"},"required_if":null,"repeatable_config":null},{"uuid":"93dede62-6d0c-4a7f-934d-42175eb94011","value":"question_4","element_type":"DROPDOWN","is_required":true,"title":"What is your approximate net worth (range)?","description":null,"placeholder":null,"choices":[{"label":"Less than $50,000","value":"<50k"},{"label":"$50,000 - $250,000","value":"50k-250k"},{"label":"$250,001 - $1,000,000","value":"250k-1m"},{"label":"$1,000,001 - $5,000,000","value":"1m-5m"},{"label":"More than $5,000,000","value":">5m"}],"max_files":1,"answer":{"value":"<50k"},"required_if":null,"repeatable_config":null},{"uuid":"2af60d6f-6961-4692-9ee7-24b3033610a6","value":"question_5","element_type":"LONG_TEXT","is_required":true,"title":"For your initial deposit/funding, indicate the exact source and amount.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"0ad9d1aa-736f-46cf-947b-9e1241b53e40","value":"question_6","element_type":"LONG_TEXT","is_required":true,"title":"Breakdown of sources by percentage.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"1bf8a2a3-14ee-48a8-bb3d-175481aae4aa","value":"question_7","element_type":"SINGLE_CHOICE","is_required":true,"title":"Will any funds originate from third parties? If yes, please provide details.","description":null,"placeholder":null,"choices":[{"label":"Yes","value":"yes","requires_text_input":true},{"label":"No","value":"no"}],"max_files":1,"answer":{"text":"Additional details","value":"yes"},"required_if":null,"repeatable_config":null},{"uuid":"e18d4dd3-b7bf-4883-ba18-d6046adbe313","value":"question_8","element_type":"SINGLE_CHOICE","is_required":true,"title":"Do you hold or plan to use virtual assets (e.g., crypto) to fund this account? If yes, please provide details.","description":null,"placeholder":null,"choices":[{"label":"Yes","value":"yes","requires_text_input":true},{"label":"No","value":"no"}],"max_files":1,"answer":{"text":"Additional details","value":"yes"},"required_if":null,"repeatable_config":null},{"uuid":"a90a073d-e098-404c-bbce-5130d8b12a13","value":"question_9","element_type":"FILE_UPLOAD","is_required":true,"title":"Upload a proof of funds document","description":"You can upload your three (3) most recent bank statements, three (3) most recent payslips, your most recent tax return, proof of company ownership, trading exchange statement, sale of property, or proof of inheritance.","placeholder":null,"choices":null,"max_files":3,"answer":{"files":["/media/ocr/","/media/ocr/"]},"required_if":null,"repeatable_config":null},{"uuid":"9503b486-7cb8-4c3b-a97d-4b64926a5a47","value":"question_10","element_type":"LONG_TEXT","is_required":false,"title":"Would you like to add any details to help us expedite our review of the documents you submitted?","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null}]}],"status":"Approved"}],"aml_screenings":[{"node_id":"feature_aml_1","status":"In Review","total_hits":1,"entity_type":"person","hits":[{"id":"hit_7c1e9a40b2d35f86e0a4c912","url":"https://news.example.org/articles/sample","match":false,"score":0.73,"target":null,"caption":"Javier Ejemplo Modelo","datasets":["PEP"],"features":null,"rca_name":"","last_seen":"2025-06-13T00:00:00","risk_view":{"crimes":{"score":0,"weightage":20,"risk_level":"Low","risk_scores":{}},"countries":{"score":0,"weightage":30,"risk_level":"Low","risk_scores":{}},"categories":{"score":100,"weightage":50,"risk_level":"High","risk_scores":{"PEP":100}},"custom_list":{}},"first_seen":"2025-01-18T00:00:00","properties":{"name":["Javier Ejemplo Modelo"],"alias":["Javier Ejemplo Modelo","David Azagra"],"notes":["Spanish orchestra conductor"],"title":null,"gender":["male"],"height":null,"topics":null,"weight":null,"address":null,"country":null,"website":null,"eyeColor":null,"keywords":null,"lastName":["Ejemplo","Modelo"],"position":null,"religion":null,"birthDate":["1974"],"education":["Tokyo Arts and Space (2012-2012)","Saint Petersburg Conservatory (-2010)","Comillas Pontifical University"],"ethnicity":null,"firstName":["David"],"hairColor":null,"weakAlias":null,"birthPlace":["Madrid"],"modifiedAt":null,"wikidataId":null,"citizenship":null,"nationality":null},"match_score":98,"risk_score":73,"review_status":"Unreviewed","score_breakdown":{"name_score":95,"name_weight":60,"name_weight_normalized":70.59,"name_contribution":67.06,"dob_score":100,"dob_weight":25,"dob_weight_normalized":29.41,"dob_contribution":29.41,"country_score":0,"country_weight":15,"country_weight_normalized":0,"country_contribution":0,"document_number_match_type":"NEUTRAL","document_number_effect":"No document number provided for screening","total_score":98},"pep_matches":[{"aliases":["Javier Ejemplo Modelo","David Azagra"],"education":["Tokyo Arts and Space (2012-2012)","Saint Petersburg Conservatory (-2010)","Comillas Pontifical University"],"list_name":"Wikidata","publisher":"Wikidata","source_url":"https://news.example.org/articles/sample","description":"Wikidata is the structured data project of the Wikipedia community, providing fact-based information edited by humans and machines","matched_name":"Javier Ejemplo Modelo","pep_position":"","date_of_birth":"1974","other_sources":[],"place_of_birth":"Madrid"}],"linked_entities":[{"name":["Antonio Ejemplo"],"active":[],"status":[],"details":[],"relation":[]}],"warning_matches":[],"sanction_matches":[],"adverse_media_details":{"sentiment":"Moderately Negative","entity_type":"person","sentiment_score":-2,"adverse_keywords":{"fraud":3,"juicio":1,"delitos":2,"imputado":1,"impunidad":1,"corruption":2,"favoritism":2,"privilegio":1,"corrupción":1,"persecution":2,"desconfianza":1,"desprestigio":1,"fraude de ley":2,"manipulación":1,"investigación":3,"prevaricación":8,"trato de favor":1,"irregularidades":2,"crisis de confianza":1,"tráfico de influencias":8}},"adverse_media_matches":[{"country":"spain","summary":"Javier Ejemplo is implicated in legal violations related to favoritism and influence trafficking, leading to a negative portrayal in the article.","headline":"La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \\"hermanito\\" de Ejemplo","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","prevaricación","tráfico de influencias","irregularidades","imputado"],"sentiment_score":-2,"publication_date":"2025-06-10T20:46:38"},{"country":"spain","summary":"Javier Ejemplo is implicated in legal issues regarding favoritism and corruption, leading to a negative portrayal in the article.","headline":"La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \\"hermanito\\" de Ejemplo","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","prevaricación","tráfico de influencias","irregularidades","trato de favor"],"sentiment_score":-2,"publication_date":"2025-06-10T20:46:38"},{"country":"spain","summary":"Javier Ejemplo Modelo is mentioned in connection with Carlos Ficticio\'s corruption case, indicating his involvement in alleged influence peddling.","headline":"España, paraíso del aforado","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","corrupción","impunidad","privilegio","desconfianza","manipulación","fraude de ley"],"sentiment_score":-2,"publication_date":"2025-06-10T05:05:34"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises questions about his conduct and political ethics.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación","juicio","fraude de ley","desprestigio","crisis de confianza","delitos"],"sentiment_score":-2,"publication_date":"2025-06-08T06:01:00"},{"country":"spain","summary":"Javier Ejemplo is implicated in a legal investigation regarding irregularities in his hiring, which raises serious concerns about his conduct.","headline":"La jueza del \'caso Javier Ejemplo\' denuncia un «fraude de ley» en el aforamiento de Ficticio (Partido Ejemplo)","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","irregularities","prevaricación","tráfico de influencias"],"sentiment_score":-2,"publication_date":"2025-06-09T10:19:10"},{"country":"spain","summary":"Javier Ejemplo Modelo is mentioned in connection with legal allegations of corruption, contributing to a negative perception.","headline":"\'Caso aforamiento\': la letrada mayor de la Asamblea certifica a la juez que Ficticio es diputado desde antes de prometer su cargo en el Pleno","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias"],"sentiment_score":-2,"publication_date":"2025-06-09T08:08:30"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, raising concerns about political corruption and influence.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación"],"sentiment_score":-2,"publication_date":"2025-06-08T06:01:00"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises concerns about political misconduct.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación","delitos"],"sentiment_score":-2,"publication_date":"2025-06-08T06:00:59"},{"country":"spain","summary":"Javier Ejemplo is implicated in a case of favoritism and corruption, which casts a negative light on his character and actions.","headline":"\'Caso Javier Ejemplo\': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \\"presiones externas\\" que sufre","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["favoritism","corruption","persecution"],"sentiment_score":-2,"publication_date":"2025-06-06T10:08:15"},{"country":"spain","summary":"Javier Ejemplo is implicated in a case of alleged favoritism and corruption, which casts a negative light on his character and actions.","headline":"\'Caso Javier Ejemplo\': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \\"presiones externas\\" que sufre","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["favoritism","corruption","persecution"],"sentiment_score":-2,"publication_date":"2025-06-06T08:08:15"}],"additional_information":{}}],"score":80,"screened_data":{"full_name":"Javier Ejemplo Modelo","nationality":"ES","date_of_birth":"1974-01-01","document_number":null},"is_ongoing_monitoring_enabled":true,"next_ongoing_monitoring_bill_date":"2026-07-24","last_ongoing_screening_at":"2026-09-12T04:03:11Z","last_ongoing_screening_datasets_updated_at":"2026-09-11T06:00:00Z","warnings":[{"feature":"AML","risk":"POSSIBLE_MATCH_FOUND","additional_data":null,"log_type":"warning","short_description":"Possible match found in AML screening","long_description":"The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review.","node_id":"feature_aml_1"}]}],"ip_analyses":[{"node_id":"feature_ip_1","status":"Approved","device_brand":"Apple","device_model":"iPhone","browser_family":"Mobile Safari","os_family":"iOS","platform":"mobile","device_fingerprint":"didit-fp-a1b2c3d4e5f6g7h8","ip_country":"Spain","ip_country_code":"ES","ip_state":"Barcelona","ip_city":"Barcelona","latitude":41.4022,"longitude":2.1407,"ip_address":"83.50.226.71","isp":null,"organization":null,"is_vpn_or_tor":false,"is_data_center":false,"time_zone":"Europe/Madrid","time_zone_offset":"+0100","ip":{"location":{"latitude":40.2206327,"longitude":1.5770097},"distance_from_id_document":23.4,"distance_from_poa_document":12.3},"id_document":{"location":{"latitude":41.2706327,"longitude":1.9770097},"distance_from_ip":23.4,"distance_from_poa_document":18.7},"poa_document":{"location":{"latitude":41.2706327,"longitude":1.9770097},"distance_from_ip":12.3,"distance_from_id_document":18.7},"warnings":[],"matches":[{"session_id":"99999999-8888-7777-6666-555555555555","session_number":41205,"vendor_data":"22222222-2222-2222-2222-222222222222","verification_date":"2024-07-20T10:15:30Z","match_type":"ip_address","match_source":"ip_address","matched_value":"83.50.226.71","status":"Approved","is_blocklisted":false,"api_service":null,"source":"session","device_info":{"device_brand":"Apple","device_model":"iPhone","browser_family":"Mobile Safari","os_family":"iOS","platform":"mobile","device_fingerprint":"didit-fp-f9e8d7c6b5a40312"},"location_info":{"ip_address":"83.50.226.71","ip_country":"Spain","ip_country_code":"ES","ip_state":"Barcelona","ip_city":"Barcelona","is_vpn_or_tor":false,"is_data_center":false},"confidence":0.0,"match_mode":"co_occurrence"},{"session_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","session_number":42830,"vendor_data":"33333333-3333-3333-3333-333333333333","verification_date":"2024-06-30T18:22:05Z","match_type":"device_fingerprint","match_source":"recovered_high","matched_value":"f47ac10b-58cc-4372-a567-0e02b2c3d479","status":"Declined","is_blocklisted":false,"api_service":null,"source":"session","device_info":{"device_brand":"Samsung","device_model":"SM-G991B","browser_family":"Chrome Mobile","os_family":"Android","platform":"mobile","device_fingerprint":null},"location_info":{"ip_address":"83.50.231.18","ip_country":"Spain","ip_country_code":"ES","ip_state":"Madrid","ip_city":"Madrid","is_vpn_or_tor":false,"is_data_center":false},"confidence":1.0,"match_mode":"deterministic","recovery_similarity":0.9874,"tls_ja4_corroborated":true,"recovery_gate_reason":"hardware_root_match"}]}],"database_validations":[{"node_id":"feature_db_validation_1","issuing_state":"BRA","validation_type":"one_by_one","screened_data":{"last_name":"De Lima","first_name":"Fernando","tax_number":"01234567890","date_of_birth":"1980-01-01","document_type":"ID","expiration_date":"2030-01-01"},"validations":[{"service_id":"bra_cpf","service_name":"Brazil - CPF status check","outcome_code":"MATCH","validation":{"full_name":"full_match","date_of_birth":"full_match","identification_number":"full_match"},"source_data":{"identification_number":"01234567890","first_name":"FERNANDO","last_name":"DE LIMA","date_of_birth":"1980-01-01","gender":"M","nationality":"BRA"}}],"match_type":"full_match","status":"Approved","warnings":[]}],"reviews":[{"user":"compliance@example.com","new_status":"Declined","comment":"Possible match found in AML screening","created_at":"2024-07-18T13:29:00.366811Z"}],"created_at":"2024-07-24T08:54:25.443172Z","expires_at":"2025-07-24T08:54:25.443172Z","biometric_consent":{"required":false,"trigger":null,"status":"not_required","given_at":null,"declined_at":null,"text_version":null,"text_hash":null,"locale":null,"policy_url":null,"step":null,"node_id":null,"ip_address":null,"ip_country_code":null,"ip_state":null,"ip_city":null,"user_agent":null,"detected_ip_address":"83.50.226.71","detected_country_code":"ES","detected_state":"ES-B","detected_city":"Barcelona","declared_state":null,"document_state":null,"jurisdictions":[],"retention_months":null,"reason":null,"decline_reason":null,"face_data_deleted_at":null}}'); + $this->queueJson(200, '{"session_id":"11111111-2222-3333-4444-555555555555","session_kind":"user","session_number":43762,"session_url":"https://verify.didit.me/session/11111111-2222-3333-4444-555555555555","status":"In Review","environment":"live","workflow_id":"11111111-2222-3333-4444-555555555555","features":["ID_VERIFICATION","NFC","LIVENESS","FACE_MATCH","POA","PHONE","DATABASE_VALIDATION","AML","IP_ANALYSIS"],"vendor_data":"11111111-1111-1111-1111-111111111111","metadata":{"user_type":"premium","account_id":"ABC123"},"expected_details":{"first_name":"Carmen","last_name":"Española Española"},"contact_details":{"email":"carmen@example.com","email_lang":"es","send_notification_emails":false,"phone":null},"callback":"https://verify.didit.me/","id_verifications":[{"node_id":"feature_ocr_1","status":"Approved","document_type":"Identity Card","document_subtype":"ID_CARD_GENERIC","document_number":"CAA000000","personal_number":"99999999R","portrait_image":"https:///portrait.jpg","front_image":"https:///front.jpg","front_video":"https:///front.mp4","back_image":"https:///back.jpg","back_video":"https:///back.mp4","full_front_image":"https:///full_front.jpg","full_back_image":"https:///full_back.jpg","front_image_camera_front":"https:///front_camera_front.jpg","back_image_camera_front":"https:///back_camera_front.jpg","date_of_birth":"1980-01-01","age":45,"expiration_date":"2031-06-02","date_of_issue":"2021-06-02","issuing_state":"ESP","issuing_state_name":"Spain","first_name":"Carmen","last_name":"Española Española","full_name":"Carmen Española Española","gender":"F","address":"Avda de Madrid 34, Madrid, Madrid","formatted_address":"Avda de Madrid 34, Madrid, Madrid 28822, Spain","place_of_birth":"Madrid","marital_status":"Single","nationality":"ESP","extra_fields":{"dl_categories":[],"blood_group":null},"mrz":{"surname":"ESPANOLA ESPANOLA","name":"CARMEN","country":"ESP","nationality":"ESP","birth_date":"800101","expiry_date":"310602","sex":"F","document_type":"ID","document_number":"CAA000000","optional_data":"99999999R","optional_data_2":"","birth_date_hash":"4","expiry_date_hash":"8","document_number_hash":"4","final_hash":"1","personal_number":"99999999R","warnings":[],"errors":[],"mrz_type":"TD1","mrz_string":"IDESPCAA000000499999999R<<<<<<\\n8001014F3106028ESP<<<<<<<<<<<1\\nESPANOLA/match_face.jpg","status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":null,"source":"session"}],"front_image_quality_score":{"focus_score":85.3,"brightness_score":92.1,"brightness_issue":"ok","is_document_fully_visible":true,"resolution_score":72.4,"overall_score":88.7},"back_image_quality_score":{"focus_score":79.1,"brightness_score":90.5,"brightness_issue":"ok","is_document_fully_visible":true,"resolution_score":72.4,"overall_score":85.2},"extra_files":["https:///extra_id_verification.jpg"],"matches":[{"session_id":"7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f","session_number":1234,"vendor_data":"user_ref_001","verification_date":"2024-06-15T10:30:00Z","user_details":{"name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Approved","is_blocklisted":false,"api_service":null,"front_image_url":"https:///document_front.jpg"},{"session_id":"b2c8e4d1-6a3f-4e7b-95c0-1d8f2a6b4c9e","session_number":1235,"vendor_data":null,"verification_date":"2024-05-20T14:45:00Z","user_details":{"name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Declined","is_blocklisted":true,"api_service":"ID_VERIFICATION","front_image_url":"https:///document_front_2.jpg"}],"warnings":[{"feature":"ID_VERIFICATION","risk":"QR_NOT_DETECTED","additional_data":null,"log_type":"information","short_description":"QR not detected","long_description":"The system couldn\'t find or read the QR code on the document, which is necessary for document verification. This could be due to poor image quality or an unsupported document type.","node_id":"feature_ocr_1"}],"verification_method":"document","assurance":"documentary","wallet_provider":null,"fallback_from":null,"id_lookup":null,"wallet_verification":null,"document_liveness":{"portrait_replace":{"score":96.46,"front":96.46,"back":98.2,"decline_threshold":35,"review_threshold":70,"bucket":"approve"},"printed_copy":{"score":91.2,"front":91.2,"back":93.7,"decline_threshold":35,"review_threshold":77,"bucket":"approve"},"screen_replay":{"score":99.9,"front":99.9,"back":99.5,"decline_threshold":30,"review_threshold":70,"bucket":"approve"}}},{"node_id":"feature_ocr_2","status":"Approved","issuing_state":"ZAF","issuing_state_name":"South Africa","first_name":"Thabo","last_name":"Mokoena","full_name":"Thabo Mokoena","date_of_birth":"1991-06-15","personal_number":"9106155043088","verification_method":"id_lookup","assurance":"data_match","wallet_provider":null,"fallback_from":null,"id_lookup":{"source":"Department of Home Affairs","checked_at":"2026-09-04T09:12:44Z","attempts":1,"max_attempts":2,"outcome":"match","comparison":[{"field":"identification_number","label":"ID number","provided":"9106155043088","record":"9106155043088","result":"match"},{"field":"full_name","label":"Full name","provided":"Thabo Mokoena","record":"Thabo Mokoena","result":"match"},{"field":"date_of_birth","label":"Date of birth","provided":"1991-06-15","record":"1991-06-15","result":"match"}],"registry_portrait":"https:///registry_portrait.jpg","face_match_score":96.4,"source_errors":[]},"wallet_verification":null,"warnings":[]},{"node_id":"feature_ocr_3","status":"Approved","issuing_state":"DNK","issuing_state_name":"Denmark","first_name":"Freja","last_name":"Nielsen","full_name":"Freja Nielsen","date_of_birth":"1988-03-02","verification_method":"wallet","assurance":"cryptographic","wallet_provider":"mitid","fallback_from":null,"id_lookup":null,"wallet_verification":{"provider":"mitid","provider_name":"MitID","issuing_authority":"Danish Agency for Digital Government","issuing_country":"DNK","credential_type":"person_identification","level_of_assurance":"substantial","verified_at":"2026-09-04T09:12:44Z","signature_valid":true,"attributes":{"full_name":"Freja Nielsen","date_of_birth":"1988-03-02","cpr_alias":"b0f1c2d3-e4f5-4678-9abc-def012345678"},"portrait":null,"face_match_score":null},"warnings":[]}],"nfc_verifications":[{"node_id":"feature_nfc_1","status":"In Review","is_nfc_skipped":false,"skip_reason":null,"chip_protocol":"icao","jpki":null,"portrait_image":"https:///portrait.jpg","signature_image":"https:///signature.jpg","chip_data":{"document_type":"ID","issuing_country":"ESP","document_number":"123456789","expiration_date":"2030-01-01","first_name":"John","last_name":"Smith","birth_date":"1990-05-15","gender":"M","nationality":"ESP","address":"CALLE MAYOR 123 4B, MADRID, MADRID","place_of_birth":"MADRID, MADRID"},"authenticity":{"sod_integrity":true,"dg_integrity":true},"certificate_summary":{"issuer":"Common Name: CSCA SPAIN, Serial Number: 3, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES","subject":"Common Name: DS n-eID SPAIN 2, Organizational Unit: PASSPORT, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES","serial_number":"118120836164494130086420187336801405660","not_valid_after":"2031-02-18 10:21:11","not_valid_before":"2020-11-18 10:21:11"},"warnings":[{"feature":"NFC","risk":"DATA_INCONSISTENT","additional_data":null,"log_type":"warning","short_description":"OCR and NFC mrz code extracted are not the same","long_description":"The Optical Character Recognition (OCR) data and the NFC chip data don\'t match, indicating potential document tampering or data inconsistency.","node_id":"feature_nfc_1"}]}],"liveness_checks":[{"node_id":"feature_liveness_1","status":"Approved","method":"ACTIVE_3D","score":89.92,"reference_image":"https:///reference.jpg","video_url":"https:///video.mp4","age_estimation":24.3,"matches":[{"session_id":"7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f","session_number":1234,"vendor_data":"user_ref_001","verification_date":"2024-06-15T10:30:00Z","user_details":{"full_name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":null,"source":"session","match_image_url":"https:///face_match.jpg","similarity_percentage":98.5},{"session_id":"3e9a7c21-5b48-4f0e-9c6a-8d2f4b1e0a35","session_number":1100,"vendor_data":"customer_xyz","verification_date":"2024-04-10T09:15:00Z","user_details":{"full_name":"John Smith","document_type":"P","document_number":"DZ8375806"},"status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":"PASSIVE_LIVENESS","source":"session","match_image_url":"https:///face_match_2.jpg","similarity_percentage":95.2}],"warnings":[{"feature":"LIVENESS","risk":"LOW_LIVENESS_SCORE","additional_data":null,"log_type":"information","short_description":"Low liveness score","long_description":"The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data.","node_id":"feature_liveness_1"}],"face_quality":null,"face_luminance":null}],"face_matches":[{"node_id":"feature_face_match_1","status":"In Review","score":65.43,"source_image_session_id":null,"source_image":"https:///source-image.jpg","target_image":"https:///target-image.jpg","warnings":[{"feature":"FACEMATCH","risk":"LOW_FACE_MATCH_SIMILARITY","additional_data":null,"log_type":"warning","short_description":"Low face match similarity","long_description":"The facial features of the provided image don\'t closely match the reference image, suggesting a potential identity mismatch.","node_id":"feature_face_match_1"}]}],"phone_verifications":[{"node_id":"feature_phone_1","status":"Approved","phone_number_prefix":"+34","phone_number":"600600600","full_number":"+34600600600","country_code":"ES","country_name":"Spain","carrier":{"name":"Orange","type":"mobile"},"is_disposable":false,"is_virtual":false,"verification_method":"sms","verification_attempts":1,"verified_at":"2024-07-28T06:47:35.654321Z","lifecycle":[{"type":"PHONE_VERIFICATION_MESSAGE_SENT","timestamp":"2025-08-24T09:12:39.580554+00:00","details":{"status":"Success","reason":null,"channel":"sms","actual_channel":"sms","attempt":0},"fee":0.1},{"type":"VALID_CODE_ENTERED","timestamp":"2025-08-24T09:12:39.662157+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"PHONE_VERIFICATION_APPROVED","timestamp":"2025-08-24T09:12:39.684292+00:00","details":null,"fee":0}],"warnings":[],"matches":[{"session_id":null,"session_number":null,"vendor_data":null,"verification_date":null,"phone_number":"+34600000000","status":null,"is_blocklisted":true,"api_service":null,"source":"list_entry"}]}],"email_verifications":[{"node_id":"feature_email_1","status":"Approved","email":"test@example.com","is_breached":true,"breaches":[{"name":"TAPAirPortugal","domain":"flytap.com","logo_path":"https://logos.example.com/TAPAirPortugal.png","breach_date":"2022-08-25","description":"In August 2022, the Portuguese airline TAP Air Portugal was the target of a ransomware attack perpetrated by the Ragnar Locker gang who later leaked the compromised data via a public dark web site. Over 5M unique email addresses were exposed alongside other personal data including names, genders, DoBs, phone numbers and physical addresses.","is_verified":true,"data_classes":["dates_of_birth","email_addresses","genders","names","nationalities","phone_numbers","physical_addresses","salutations","spoken_languages"],"breach_emails_count":6083479}],"is_disposable":false,"is_undeliverable":false,"verification_attempts":1,"verified_at":"2025-09-15T17:36:19.963451Z","warnings":[{"feature":"EMAIL","risk":"BREACHED_EMAIL_DETECTED","additional_data":null,"log_type":"information","short_description":"Breached email detected","long_description":"This email address was found in one or more known data breaches.","node_id":"feature_email_1"}],"lifecycle":[{"type":"EMAIL_VERIFICATION_MESSAGE_SENT","timestamp":"2025-09-15T17:36:19.792684+00:00","details":{"status":"Success","reason":null},"fee":0.02},{"type":"VALID_CODE_ENTERED","timestamp":"2025-09-15T17:36:19.963427+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"EMAIL_VERIFICATION_DECLINED","timestamp":"2025-09-15T17:36:20.081471+00:00","details":{"reason":"BREACHED_EMAIL_DETECTED"},"fee":0}],"matches":[{"session_id":null,"session_number":null,"vendor_data":null,"verification_date":null,"email":"test@example.com","status":null,"is_blocklisted":true,"api_service":null,"source":"list_entry"}]}],"poa_verifications":[{"node_id":"feature_poa_1","status":"Declined","document_file":"https:///poa_document.pdf","issuing_state":"AR","document_type":"UTILITY_BILL","document_subtype":null,"document_language":"es","document_metadata":{"file_size":1000,"content_type":"application/pdf","creation_date":"2021-01-01","modified_date":"2021-01-01","overlay_manipulation":null,"creator":null,"producer":"PDF Generator","software":null,"encryption":null,"is_signed":false,"is_tampered":false,"signature_info":null,"exif_original_date":null,"exif_digitized_date":null,"processed_by_known_editor":false,"has_different_creation_mod_date":true},"issuer":"Aguas del Norte","issue_date":"2021-02-01","expiration_date":null,"poa_address":"AVDA. MONSEÑOR TAVELLA N° 3396, SALTA","poa_formatted_address":"Av. Monseñor Tavella 3396, A4400 Salta, Argentina","poa_parsed_address":{"address_type":"Avenida","street_1":"Avenida Monseñor Tavella 3396","street_2":null,"city":"Salta","region":"Salta","country":"AR","postal_code":"A4400","document_location":{"latitude":-24.8208664,"longitude":-65.4131}},"name_on_document":"Fernando De Lima","name_match_score_expected_details":null,"name_match_score_id_verification":38.5,"expected_details_address":null,"expected_details_formatted_address":null,"expected_details_parsed_address":{},"extra_fields":{"bank_account_number":"1234567890","bank_iban":null,"bank_sort_code":null,"bank_routing_number":null,"bank_swift_bic":null,"bank_branch_name":null,"bank_branch_address":null,"document_phone_number":"+5491112345678","additional_names":[]},"extra_files":["https:///extra_poa.pdf"],"detected_codes":[{"type":"QR_CODE","page_number":1,"position":[[820,1120],[1002,1120],[1002,1302],[820,1302]],"x":820,"y":1120,"width":182,"height":182,"page_width":1190,"page_height":1684,"raw_payload":"aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==","parsed_payload":"https://aguasdelnorte.com/factura/998811"},{"type":"CODE_128","page_number":1,"position":[[112,1480],[560,1480],[560,1540],[112,1540]],"x":112,"y":1480,"width":448,"height":60,"page_width":1190,"page_height":1684,"raw_payload":"MDA5OTg4MTEwMDA0Mg==","parsed_payload":"0099881100042"}],"warnings":[]}],"document_ai_documents":[{"status":"Approved","node_id":"feature_document_ai_1","items":[{"uuid":"c1a2b3c4-d5e6-7f80-9a1b-2c3d4e5f6071","node_id":"feature_document_ai_1","document_key":"proof_of_funds","original_filename":"bank_statement.pdf","file_size":184320,"file_url":"https:///document_ai/proof_of_funds.pdf","status":"Approved","extracted_data":{"account_holder":"John Doe","balance":15230.55,"currency":"EUR","statement_date":"2026-05-31"},"detected_codes":[{"type":"QR_CODE","page_number":2,"position":[[124,86],[306,86],[306,268],[124,268]],"x":124,"y":86,"width":182,"height":182,"page_width":1190,"page_height":1684,"raw_payload":"SU5WLTIwMjYtMDA0Mg==","parsed_payload":"INV-2026-0042"}],"fields":[{"key":"account_holder","name":"Account holder","instruction":"Extract the full name of the account holder.","type":"text","required":true},{"key":"balance","name":"Closing balance","instruction":"Extract the closing balance amount.","type":"number","required":true}],"document_metadata":{"is_tampered":false},"cross_check_result":null,"created_at":"2026-06-01T12:34:56Z"}],"warnings":[]}],"questionnaire_responses":[{"node_id":"feature_questionnaire_1","questionnaire_id":"9f7485e0-b00b-4d56-9d3e-7859b68d1213","title":"Source of Funds","description":"Reply to this questionnaire to help us understand the source of funds.","languages":["en"],"default_language":"en","is_active":true,"is_simple_questionnaire":true,"questionnaire_group_id":"2b6a9d40-13a8-4b1e-9a6c-3f1d2e4b5a60","version":1,"published_at":"2025-11-02T09:14:55.000000Z","sections":[{"title":null,"description":null,"items":[{"uuid":"618636d9-7d5c-41ce-b8d0-1ab2a4be20db","value":"question_1","element_type":"DROPDOWN","is_required":true,"title":"What is your primary source of funds?","description":null,"placeholder":null,"choices":[{"label":"Salary","value":"salary"},{"label":"Business Income","value":"business_income"},{"label":"Savings","value":"savings"},{"label":"Investments","value":"investments"},{"label":"Sale of Asset","value":"sale_of_asset"},{"label":"Inheritance/Gift","value":"inheritance_gift"},{"label":"Pension","value":"pension"},{"label":"Crypto Proceeds","value":"crypto_proceeds"},{"label":"Other","value":"other","requires_text_input":true}],"max_files":1,"answer":{"value":"salary"},"required_if":null,"repeatable_config":null},{"uuid":"2d16b527-72be-42e0-8e96-b164b818386c","value":"question_2","element_type":"LONG_TEXT","is_required":true,"title":"Provide details of the primary source.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0","value":"question_3","element_type":"DROPDOWN","is_required":true,"title":"What is your annual income range (pre-tax)?","description":null,"placeholder":null,"choices":[{"label":"Less than $25,000","value":"<25k"},{"label":"$25,000 - $50,000","value":"25k-50k"},{"label":"$50,001 - $100,000","value":"50k-100k"},{"label":"$100,001 - $250,000","value":"100k-250k"},{"label":"More than $250,000","value":">250k"}],"max_files":1,"answer":{"value":"<25k"},"required_if":null,"repeatable_config":null},{"uuid":"93dede62-6d0c-4a7f-934d-42175eb94011","value":"question_4","element_type":"DROPDOWN","is_required":true,"title":"What is your approximate net worth (range)?","description":null,"placeholder":null,"choices":[{"label":"Less than $50,000","value":"<50k"},{"label":"$50,000 - $250,000","value":"50k-250k"},{"label":"$250,001 - $1,000,000","value":"250k-1m"},{"label":"$1,000,001 - $5,000,000","value":"1m-5m"},{"label":"More than $5,000,000","value":">5m"}],"max_files":1,"answer":{"value":"<50k"},"required_if":null,"repeatable_config":null},{"uuid":"2af60d6f-6961-4692-9ee7-24b3033610a6","value":"question_5","element_type":"LONG_TEXT","is_required":true,"title":"For your initial deposit/funding, indicate the exact source and amount.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"0ad9d1aa-736f-46cf-947b-9e1241b53e40","value":"question_6","element_type":"LONG_TEXT","is_required":true,"title":"Breakdown of sources by percentage.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"1bf8a2a3-14ee-48a8-bb3d-175481aae4aa","value":"question_7","element_type":"SINGLE_CHOICE","is_required":true,"title":"Will any funds originate from third parties? If yes, please provide details.","description":null,"placeholder":null,"choices":[{"label":"Yes","value":"yes","requires_text_input":true},{"label":"No","value":"no"}],"max_files":1,"answer":{"text":"Additional details","value":"yes"},"required_if":null,"repeatable_config":null},{"uuid":"e18d4dd3-b7bf-4883-ba18-d6046adbe313","value":"question_8","element_type":"SINGLE_CHOICE","is_required":true,"title":"Do you hold or plan to use virtual assets (e.g., crypto) to fund this account? If yes, please provide details.","description":null,"placeholder":null,"choices":[{"label":"Yes","value":"yes","requires_text_input":true},{"label":"No","value":"no"}],"max_files":1,"answer":{"text":"Additional details","value":"yes"},"required_if":null,"repeatable_config":null},{"uuid":"a90a073d-e098-404c-bbce-5130d8b12a13","value":"question_9","element_type":"FILE_UPLOAD","is_required":true,"title":"Upload a proof of funds document","description":"You can upload your three (3) most recent bank statements, three (3) most recent payslips, your most recent tax return, proof of company ownership, trading exchange statement, sale of property, or proof of inheritance.","placeholder":null,"choices":null,"max_files":3,"answer":{"files":["/media/ocr/","/media/ocr/"]},"required_if":null,"repeatable_config":null},{"uuid":"9503b486-7cb8-4c3b-a97d-4b64926a5a47","value":"question_10","element_type":"LONG_TEXT","is_required":false,"title":"Would you like to add any details to help us expedite our review of the documents you submitted?","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null}]}],"status":"Approved"}],"aml_screenings":[{"node_id":"feature_aml_1","status":"In Review","total_hits":1,"entity_type":"person","hits":[{"id":"hit_7c1e9a40b2d35f86e0a4c912","url":"https://news.example.org/articles/sample","match":false,"score":0.73,"target":null,"caption":"Javier Ejemplo Modelo","datasets":["PEP"],"features":null,"rca_name":"","last_seen":"2025-06-13T00:00:00","risk_view":{"crimes":{"score":0,"weightage":20,"risk_level":"Low","risk_scores":{}},"countries":{"score":0,"weightage":30,"risk_level":"Low","risk_scores":{}},"categories":{"score":100,"weightage":50,"risk_level":"High","risk_scores":{"PEP":100}},"custom_list":{}},"first_seen":"2025-01-18T00:00:00","properties":{"name":["Javier Ejemplo Modelo"],"alias":["Javier Ejemplo Modelo","David Azagra"],"notes":["Spanish orchestra conductor"],"title":null,"gender":["male"],"height":null,"topics":null,"weight":null,"address":null,"country":null,"website":null,"eyeColor":null,"keywords":null,"lastName":["Ejemplo","Modelo"],"position":null,"religion":null,"birthDate":["1974"],"education":["Tokyo Arts and Space (2012-2012)","Saint Petersburg Conservatory (-2010)","Comillas Pontifical University"],"ethnicity":null,"firstName":["David"],"hairColor":null,"weakAlias":null,"birthPlace":["Madrid"],"modifiedAt":null,"wikidataId":null,"citizenship":null,"nationality":null},"match_score":98,"risk_score":73,"review_status":"Unreviewed","score_breakdown":{"name_score":95,"name_weight":60,"name_weight_normalized":70.59,"name_contribution":67.06,"dob_score":100,"dob_weight":25,"dob_weight_normalized":29.41,"dob_contribution":29.41,"country_score":0,"country_weight":15,"country_weight_normalized":0,"country_contribution":0,"document_number_match_type":"NEUTRAL","document_number_effect":"No document number provided for screening","total_score":98},"pep_matches":[{"aliases":["Javier Ejemplo Modelo","David Azagra"],"education":["Tokyo Arts and Space (2012-2012)","Saint Petersburg Conservatory (-2010)","Comillas Pontifical University"],"list_name":"Wikidata","publisher":"Wikidata","source_url":"https://news.example.org/articles/sample","description":"Wikidata is the structured data project of the Wikipedia community, providing fact-based information edited by humans and machines","matched_name":"Javier Ejemplo Modelo","pep_position":"","date_of_birth":"1974","other_sources":[],"place_of_birth":"Madrid"}],"linked_entities":[{"name":["Antonio Ejemplo"],"active":[],"status":[],"details":[],"relation":[]}],"warning_matches":[],"sanction_matches":[],"adverse_media_details":{"sentiment":"Moderately Negative","entity_type":"person","sentiment_score":-2,"adverse_keywords":{"fraud":3,"juicio":1,"delitos":2,"imputado":1,"impunidad":1,"corruption":2,"favoritism":2,"privilegio":1,"corrupción":1,"persecution":2,"desconfianza":1,"desprestigio":1,"fraude de ley":2,"manipulación":1,"investigación":3,"prevaricación":8,"trato de favor":1,"irregularidades":2,"crisis de confianza":1,"tráfico de influencias":8}},"adverse_media_matches":[{"country":"spain","summary":"Javier Ejemplo is implicated in legal violations related to favoritism and influence trafficking, leading to a negative portrayal in the article.","headline":"La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \\"hermanito\\" de Ejemplo","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","prevaricación","tráfico de influencias","irregularidades","imputado"],"sentiment_score":-2,"publication_date":"2025-06-10T20:46:38"},{"country":"spain","summary":"Javier Ejemplo is implicated in legal issues regarding favoritism and corruption, leading to a negative portrayal in the article.","headline":"La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \\"hermanito\\" de Ejemplo","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","prevaricación","tráfico de influencias","irregularidades","trato de favor"],"sentiment_score":-2,"publication_date":"2025-06-10T20:46:38"},{"country":"spain","summary":"Javier Ejemplo Modelo is mentioned in connection with Carlos Ficticio\'s corruption case, indicating his involvement in alleged influence peddling.","headline":"España, paraíso del aforado","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","corrupción","impunidad","privilegio","desconfianza","manipulación","fraude de ley"],"sentiment_score":-2,"publication_date":"2025-06-10T05:05:34"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises questions about his conduct and political ethics.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación","juicio","fraude de ley","desprestigio","crisis de confianza","delitos"],"sentiment_score":-2,"publication_date":"2025-06-08T06:01:00"},{"country":"spain","summary":"Javier Ejemplo is implicated in a legal investigation regarding irregularities in his hiring, which raises serious concerns about his conduct.","headline":"La jueza del \'caso Javier Ejemplo\' denuncia un «fraude de ley» en el aforamiento de Ficticio (Partido Ejemplo)","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","irregularities","prevaricación","tráfico de influencias"],"sentiment_score":-2,"publication_date":"2025-06-09T10:19:10"},{"country":"spain","summary":"Javier Ejemplo Modelo is mentioned in connection with legal allegations of corruption, contributing to a negative perception.","headline":"\'Caso aforamiento\': la letrada mayor de la Asamblea certifica a la juez que Ficticio es diputado desde antes de prometer su cargo en el Pleno","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias"],"sentiment_score":-2,"publication_date":"2025-06-09T08:08:30"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, raising concerns about political corruption and influence.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación"],"sentiment_score":-2,"publication_date":"2025-06-08T06:01:00"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises concerns about political misconduct.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación","delitos"],"sentiment_score":-2,"publication_date":"2025-06-08T06:00:59"},{"country":"spain","summary":"Javier Ejemplo is implicated in a case of favoritism and corruption, which casts a negative light on his character and actions.","headline":"\'Caso Javier Ejemplo\': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \\"presiones externas\\" que sufre","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["favoritism","corruption","persecution"],"sentiment_score":-2,"publication_date":"2025-06-06T10:08:15"},{"country":"spain","summary":"Javier Ejemplo is implicated in a case of alleged favoritism and corruption, which casts a negative light on his character and actions.","headline":"\'Caso Javier Ejemplo\': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \\"presiones externas\\" que sufre","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["favoritism","corruption","persecution"],"sentiment_score":-2,"publication_date":"2025-06-06T08:08:15"}],"additional_information":{}}],"score":80,"screened_data":{"full_name":"Javier Ejemplo Modelo","nationality":"ES","date_of_birth":"1974-01-01","document_number":null},"is_ongoing_monitoring_enabled":true,"next_ongoing_monitoring_bill_date":"2026-07-24","last_ongoing_screening_at":"2026-09-12T04:03:11Z","last_ongoing_screening_datasets_updated_at":"2026-09-11T06:00:00Z","warnings":[{"feature":"AML","risk":"POSSIBLE_MATCH_FOUND","additional_data":null,"log_type":"warning","short_description":"Possible match found in AML screening","long_description":"The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review.","node_id":"feature_aml_1"}]}],"ip_analyses":[{"node_id":"feature_ip_1","status":"Approved","device_brand":"Apple","device_model":"iPhone","browser_family":"Mobile Safari","os_family":"iOS","platform":"mobile","device_fingerprint":"didit-fp-a1b2c3d4e5f6g7h8","ip_country":"Spain","ip_country_code":"ES","ip_state":"Barcelona","ip_city":"Barcelona","latitude":41.4022,"longitude":2.1407,"ip_address":"83.50.226.71","isp":null,"organization":null,"is_vpn_or_tor":false,"is_data_center":false,"time_zone":"Europe/Madrid","time_zone_offset":"+0100","ip":{"location":{"latitude":40.2206327,"longitude":1.5770097},"distance_from_id_document":23.4,"distance_from_poa_document":12.3},"id_document":{"location":{"latitude":41.2706327,"longitude":1.9770097},"distance_from_ip":23.4,"distance_from_poa_document":18.7},"poa_document":{"location":{"latitude":41.2706327,"longitude":1.9770097},"distance_from_ip":12.3,"distance_from_id_document":18.7},"warnings":[],"matches":[{"session_id":"99999999-8888-7777-6666-555555555555","session_number":41205,"vendor_data":"22222222-2222-2222-2222-222222222222","verification_date":"2024-07-20T10:15:30Z","match_type":"ip_address","match_source":"ip_address","matched_value":"83.50.226.71","status":"Approved","is_blocklisted":false,"api_service":null,"source":"session","device_info":{"device_brand":"Apple","device_model":"iPhone","browser_family":"Mobile Safari","os_family":"iOS","platform":"mobile","device_fingerprint":"didit-fp-f9e8d7c6b5a40312"},"location_info":{"ip_address":"83.50.226.71","ip_country":"Spain","ip_country_code":"ES","ip_state":"Barcelona","ip_city":"Barcelona","is_vpn_or_tor":false,"is_data_center":false},"confidence":0.0,"match_mode":"co_occurrence"},{"session_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","session_number":42830,"vendor_data":"33333333-3333-3333-3333-333333333333","verification_date":"2024-06-30T18:22:05Z","match_type":"device_fingerprint","match_source":"recovered_high","matched_value":"f47ac10b-58cc-4372-a567-0e02b2c3d479","status":"Declined","is_blocklisted":false,"api_service":null,"source":"session","device_info":{"device_brand":"Samsung","device_model":"SM-G991B","browser_family":"Chrome Mobile","os_family":"Android","platform":"mobile","device_fingerprint":null},"location_info":{"ip_address":"83.50.231.18","ip_country":"Spain","ip_country_code":"ES","ip_state":"Madrid","ip_city":"Madrid","is_vpn_or_tor":false,"is_data_center":false},"confidence":1.0,"match_mode":"deterministic","recovery_similarity":0.9874,"tls_ja4_corroborated":true,"recovery_gate_reason":"hardware_root_match"}]}],"database_validations":[{"node_id":"feature_db_validation_1","issuing_state":"BRA","validation_type":"one_by_one","screened_data":{"last_name":"De Lima","first_name":"Fernando","tax_number":"01234567890","date_of_birth":"1980-01-01","document_type":"ID","expiration_date":"2030-01-01"},"validations":[{"service_id":"bra_cpf","service_name":"Brazil - CPF status check","outcome_code":"MATCH","validation":{"full_name":"full_match","date_of_birth":"full_match","identification_number":"full_match"},"source_data":{"identification_number":"01234567890","first_name":"FERNANDO","last_name":"DE LIMA","date_of_birth":"1980-01-01","gender":"M","nationality":"BRA"}}],"match_type":"full_match","status":"Approved","warnings":[]}],"reviews":[{"user":"compliance@example.com","new_status":"Declined","comment":"Possible match found in AML screening","created_at":"2024-07-18T13:29:00.366811Z"}],"created_at":"2024-07-24T08:54:25.443172Z","expires_at":"2025-07-24T08:54:25.443172Z","biometric_consent":{"required":false,"trigger":null,"status":"not_required","given_at":null,"declined_at":null,"text_version":null,"text_hash":null,"locale":null,"policy_url":null,"step":null,"node_id":null,"ip_address":null,"ip_country_code":null,"ip_state":null,"ip_city":null,"user_agent":null,"detected_ip_address":"83.50.226.71","detected_country_code":"ES","detected_state":"ES-B","detected_city":"Barcelona","declared_state":null,"document_state":null,"jurisdictions":[],"retention_months":null,"reason":null,"decline_reason":null,"face_data_deleted_at":null}}'); $result = $this->client->sessions->retrieveDecision('sessionId-1', [ 'include' => 'events', @@ -108,7 +108,7 @@ public function testRetrieveDecision(): void self::assertSame(self::API_KEY, $request->getHeaderLine('x-api-key')); self::assertSame('', (string) $request->getBody()); self::assertSame(200, $result->rawResponse()?->status); - self::assertSame($this->decoded('{"session_id":"11111111-2222-3333-4444-555555555555","session_kind":"user","session_number":43762,"session_url":"https://verify.didit.me/session/11111111-2222-3333-4444-555555555555","status":"In Review","environment":"live","workflow_id":"11111111-2222-3333-4444-555555555555","features":["ID_VERIFICATION","NFC","LIVENESS","FACE_MATCH","POA","PHONE","DATABASE_VALIDATION","AML","IP_ANALYSIS"],"vendor_data":"11111111-1111-1111-1111-111111111111","metadata":{"user_type":"premium","account_id":"ABC123"},"expected_details":{"first_name":"Carmen","last_name":"Española Española"},"contact_details":{"email":"carmen@example.com","email_lang":"es","send_notification_emails":false,"phone":null},"callback":"https://verify.didit.me/","id_verifications":[{"node_id":"feature_ocr_1","status":"Approved","document_type":"Identity Card","document_subtype":"ID_CARD_GENERIC","document_number":"CAA000000","personal_number":"99999999R","portrait_image":"https:///portrait.jpg","front_image":"https:///front.jpg","front_video":"https:///front.mp4","back_image":"https:///back.jpg","back_video":"https:///back.mp4","full_front_image":"https:///full_front.jpg","full_back_image":"https:///full_back.jpg","front_image_camera_front":"https:///front_camera_front.jpg","back_image_camera_front":"https:///back_camera_front.jpg","date_of_birth":"1980-01-01","age":45,"expiration_date":"2031-06-02","date_of_issue":"2021-06-02","issuing_state":"ESP","issuing_state_name":"Spain","first_name":"Carmen","last_name":"Española Española","full_name":"Carmen Española Española","gender":"F","address":"Avda de Madrid 34, Madrid, Madrid","formatted_address":"Avda de Madrid 34, Madrid, Madrid 28822, Spain","place_of_birth":"Madrid","marital_status":"Single","nationality":"ESP","extra_fields":{"dl_categories":[],"blood_group":null},"mrz":{"surname":"ESPANOLA ESPANOLA","name":"CARMEN","country":"ESP","nationality":"ESP","birth_date":"800101","expiry_date":"310602","sex":"F","document_type":"ID","document_number":"CAA000000","optional_data":"99999999R","optional_data_2":"","birth_date_hash":"4","expiry_date_hash":"8","document_number_hash":"4","final_hash":"1","personal_number":"99999999R","warnings":[],"errors":[],"mrz_type":"TD1","mrz_string":"IDESPCAA000000499999999R<<<<<<\\n8001014F3106028ESP<<<<<<<<<<<1\\nESPANOLA/match_face.jpg","status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":null,"source":"session"}],"front_image_quality_score":{"focus_score":85.3,"brightness_score":92.1,"brightness_issue":"ok","is_document_fully_visible":true,"resolution_score":72.4,"overall_score":88.7},"back_image_quality_score":{"focus_score":79.1,"brightness_score":90.5,"brightness_issue":"ok","is_document_fully_visible":true,"resolution_score":72.4,"overall_score":85.2},"extra_files":["https:///extra_id_verification.jpg"],"matches":[{"session_id":"7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f","session_number":1234,"vendor_data":"user_ref_001","verification_date":"2024-06-15T10:30:00Z","user_details":{"name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Approved","is_blocklisted":false,"api_service":null,"front_image_url":"https:///document_front.jpg"},{"session_id":"b2c8e4d1-6a3f-4e7b-95c0-1d8f2a6b4c9e","session_number":1235,"vendor_data":null,"verification_date":"2024-05-20T14:45:00Z","user_details":{"name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Declined","is_blocklisted":true,"api_service":"ID_VERIFICATION","front_image_url":"https:///document_front_2.jpg"}],"warnings":[{"feature":"ID_VERIFICATION","risk":"QR_NOT_DETECTED","additional_data":null,"log_type":"information","short_description":"QR not detected","long_description":"The system couldn\'t find or read the QR code on the document, which is necessary for document verification. This could be due to poor image quality or an unsupported document type.","node_id":"feature_ocr_1"}],"verification_method":"document","assurance":"documentary","wallet_provider":null,"fallback_from":null,"id_lookup":null,"wallet_verification":null,"document_liveness":{"portrait_replace":{"score":96.46,"front":96.46,"back":98.2,"decline_threshold":35,"review_threshold":70,"bucket":"approve"},"printed_copy":{"score":91.2,"front":91.2,"back":93.7,"decline_threshold":35,"review_threshold":77,"bucket":"approve"},"screen_replay":{"score":99.9,"front":99.9,"back":99.5,"decline_threshold":30,"review_threshold":70,"bucket":"approve"}}},{"node_id":"feature_ocr_2","status":"Approved","issuing_state":"ZAF","issuing_state_name":"South Africa","first_name":"Thabo","last_name":"Mokoena","full_name":"Thabo Mokoena","date_of_birth":"1991-06-15","personal_number":"9106155043088","verification_method":"id_lookup","assurance":"data_match","wallet_provider":null,"fallback_from":null,"id_lookup":{"source":"Department of Home Affairs","checked_at":"2026-09-04T09:12:44Z","attempts":1,"max_attempts":2,"outcome":"match","comparison":[{"field":"identification_number","label":"ID number","provided":"9106155043088","record":"9106155043088","result":"match"},{"field":"full_name","label":"Full name","provided":"Thabo Mokoena","record":"Thabo Mokoena","result":"match"},{"field":"date_of_birth","label":"Date of birth","provided":"1991-06-15","record":"1991-06-15","result":"match"}],"registry_portrait":"https:///registry_portrait.jpg","face_match_score":96.4,"source_errors":[]},"wallet_verification":null,"warnings":[]},{"node_id":"feature_ocr_3","status":"Approved","issuing_state":"DNK","issuing_state_name":"Denmark","first_name":"Freja","last_name":"Nielsen","full_name":"Freja Nielsen","date_of_birth":"1988-03-02","verification_method":"wallet","assurance":"cryptographic","wallet_provider":"mitid","fallback_from":null,"id_lookup":null,"wallet_verification":{"provider":"mitid","provider_name":"MitID","issuing_authority":"Danish Agency for Digital Government","issuing_country":"DNK","credential_type":"person_identification","level_of_assurance":"substantial","verified_at":"2026-09-04T09:12:44Z","signature_valid":true,"attributes":{"full_name":"Freja Nielsen","date_of_birth":"1988-03-02","cpr_alias":"b0f1c2d3-e4f5-4678-9abc-def012345678"},"portrait":null,"face_match_score":null},"warnings":[]}],"nfc_verifications":[{"node_id":"feature_nfc_1","status":"In Review","is_nfc_skipped":false,"skip_reason":null,"chip_protocol":"icao","jpki":null,"portrait_image":"https:///portrait.jpg","signature_image":"https:///signature.jpg","chip_data":{"document_type":"ID","issuing_country":"ESP","document_number":"123456789","expiration_date":"2030-01-01","first_name":"John","last_name":"Smith","birth_date":"1990-05-15","gender":"M","nationality":"ESP","address":"CALLE MAYOR 123 4B, MADRID, MADRID","place_of_birth":"MADRID, MADRID"},"authenticity":{"sod_integrity":true,"dg_integrity":true},"certificate_summary":{"issuer":"Common Name: CSCA SPAIN, Serial Number: 3, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES","subject":"Common Name: DS n-eID SPAIN 2, Organizational Unit: PASSPORT, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES","serial_number":"118120836164494130086420187336801405660","not_valid_after":"2031-02-18 10:21:11","not_valid_before":"2020-11-18 10:21:11"},"warnings":[{"feature":"NFC","risk":"DATA_INCONSISTENT","additional_data":null,"log_type":"warning","short_description":"OCR and NFC mrz code extracted are not the same","long_description":"The Optical Character Recognition (OCR) data and the NFC chip data don\'t match, indicating potential document tampering or data inconsistency.","node_id":"feature_nfc_1"}]}],"liveness_checks":[{"node_id":"feature_liveness_1","status":"Approved","method":"ACTIVE_3D","score":89.92,"reference_image":"https:///reference.jpg","video_url":"https:///video.mp4","age_estimation":24.3,"matches":[{"session_id":"7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f","session_number":1234,"vendor_data":"user_ref_001","verification_date":"2024-06-15T10:30:00Z","user_details":{"full_name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":null,"source":"session","match_image_url":"https:///face_match.jpg","similarity_percentage":98.5},{"session_id":"3e9a7c21-5b48-4f0e-9c6a-8d2f4b1e0a35","session_number":1100,"vendor_data":"customer_xyz","verification_date":"2024-04-10T09:15:00Z","user_details":{"full_name":"John Smith","document_type":"P","document_number":"DZ8375806"},"status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":"PASSIVE_LIVENESS","source":"session","match_image_url":"https:///face_match_2.jpg","similarity_percentage":95.2}],"warnings":[{"feature":"LIVENESS","risk":"LOW_LIVENESS_SCORE","additional_data":null,"log_type":"information","short_description":"Low liveness score","long_description":"The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data.","node_id":"feature_liveness_1"}],"face_quality":null,"face_luminance":null}],"face_matches":[{"node_id":"feature_face_match_1","status":"In Review","score":65.43,"source_image_session_id":null,"source_image":"https:///source-image.jpg","target_image":"https:///target-image.jpg","warnings":[{"feature":"FACEMATCH","risk":"LOW_FACE_MATCH_SIMILARITY","additional_data":null,"log_type":"warning","short_description":"Low face match similarity","long_description":"The facial features of the provided image don\'t closely match the reference image, suggesting a potential identity mismatch.","node_id":"feature_face_match_1"}]}],"phone_verifications":[{"node_id":"feature_phone_1","status":"Approved","phone_number_prefix":"+34","phone_number":"600600600","full_number":"+34600600600","country_code":"ES","country_name":"Spain","carrier":{"name":"Orange","type":"mobile"},"is_disposable":false,"is_virtual":false,"verification_method":"sms","verification_attempts":1,"verified_at":"2024-07-28T06:47:35.654321Z","lifecycle":[{"type":"PHONE_VERIFICATION_MESSAGE_SENT","timestamp":"2025-08-24T09:12:39.580554+00:00","details":{"status":"Success","reason":null,"channel":"sms","actual_channel":"sms"},"fee":0.1},{"type":"VALID_CODE_ENTERED","timestamp":"2025-08-24T09:12:39.662157+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"PHONE_VERIFICATION_APPROVED","timestamp":"2025-08-24T09:12:39.684292+00:00","details":null,"fee":0}],"warnings":[],"matches":[{"session_id":null,"session_number":null,"vendor_data":null,"verification_date":null,"phone_number":"+34600000000","status":null,"is_blocklisted":true,"api_service":null,"source":"list_entry"}]}],"email_verifications":[{"node_id":"feature_email_1","status":"Approved","email":"test@example.com","is_breached":true,"breaches":[{"name":"TAPAirPortugal","domain":"flytap.com","logo_path":"https://logos.example.com/TAPAirPortugal.png","breach_date":"2022-08-25","description":"In August 2022, the Portuguese airline TAP Air Portugal was the target of a ransomware attack perpetrated by the Ragnar Locker gang who later leaked the compromised data via a public dark web site. Over 5M unique email addresses were exposed alongside other personal data including names, genders, DoBs, phone numbers and physical addresses.","is_verified":true,"data_classes":["dates_of_birth","email_addresses","genders","names","nationalities","phone_numbers","physical_addresses","salutations","spoken_languages"],"breach_emails_count":6083479}],"is_disposable":false,"is_undeliverable":false,"verification_attempts":1,"verified_at":"2025-09-15T17:36:19.963451Z","warnings":[{"feature":"EMAIL","risk":"BREACHED_EMAIL_DETECTED","additional_data":null,"log_type":"information","short_description":"Breached email detected","long_description":"This email address was found in one or more known data breaches.","node_id":"feature_email_1"}],"lifecycle":[{"type":"EMAIL_VERIFICATION_MESSAGE_SENT","timestamp":"2025-09-15T17:36:19.792684+00:00","details":{"status":"Success","reason":null},"fee":0.02},{"type":"VALID_CODE_ENTERED","timestamp":"2025-09-15T17:36:19.963427+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"EMAIL_VERIFICATION_DECLINED","timestamp":"2025-09-15T17:36:20.081471+00:00","details":{"reason":"BREACHED_EMAIL_DETECTED"},"fee":0}],"matches":[{"session_id":null,"session_number":null,"vendor_data":null,"verification_date":null,"email":"test@example.com","status":null,"is_blocklisted":true,"api_service":null,"source":"list_entry"}]}],"poa_verifications":[{"node_id":"feature_poa_1","status":"Declined","document_file":"https:///poa_document.pdf","issuing_state":"AR","document_type":"UTILITY_BILL","document_subtype":null,"document_language":"es","document_metadata":{"file_size":1000,"content_type":"application/pdf","creation_date":"2021-01-01","modified_date":"2021-01-01","overlay_manipulation":null,"creator":null,"producer":"PDF Generator","software":null,"encryption":null,"is_signed":false,"is_tampered":false,"signature_info":null,"exif_original_date":null,"exif_digitized_date":null,"processed_by_known_editor":false,"has_different_creation_mod_date":true},"issuer":"Aguas del Norte","issue_date":"2021-02-01","expiration_date":null,"poa_address":"AVDA. MONSEÑOR TAVELLA N° 3396, SALTA","poa_formatted_address":"Av. Monseñor Tavella 3396, A4400 Salta, Argentina","poa_parsed_address":{"address_type":"Avenida","street_1":"Avenida Monseñor Tavella 3396","street_2":null,"city":"Salta","region":"Salta","country":"AR","postal_code":"A4400","document_location":{"latitude":-24.8208664,"longitude":-65.4131}},"name_on_document":"Fernando De Lima","name_match_score_expected_details":null,"name_match_score_id_verification":38.5,"expected_details_address":null,"expected_details_formatted_address":null,"expected_details_parsed_address":{},"extra_fields":{"bank_account_number":"1234567890","bank_iban":null,"bank_sort_code":null,"bank_routing_number":null,"bank_swift_bic":null,"bank_branch_name":null,"bank_branch_address":null,"document_phone_number":"+5491112345678","additional_names":[]},"extra_files":["https:///extra_poa.pdf"],"detected_codes":[{"type":"QR_CODE","page_number":1,"position":[[820,1120],[1002,1120],[1002,1302],[820,1302]],"x":820,"y":1120,"width":182,"height":182,"page_width":1190,"page_height":1684,"raw_payload":"aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==","parsed_payload":"https://aguasdelnorte.com/factura/998811"},{"type":"CODE_128","page_number":1,"position":[[112,1480],[560,1480],[560,1540],[112,1540]],"x":112,"y":1480,"width":448,"height":60,"page_width":1190,"page_height":1684,"raw_payload":"MDA5OTg4MTEwMDA0Mg==","parsed_payload":"0099881100042"}],"warnings":[]}],"document_ai_documents":[{"status":"Approved","node_id":"feature_document_ai_1","items":[{"uuid":"c1a2b3c4-d5e6-7f80-9a1b-2c3d4e5f6071","node_id":"feature_document_ai_1","document_key":"proof_of_funds","original_filename":"bank_statement.pdf","file_size":184320,"file_url":"https:///document_ai/proof_of_funds.pdf","status":"Approved","extracted_data":{"account_holder":"John Doe","balance":15230.55,"currency":"EUR","statement_date":"2026-05-31"},"detected_codes":[{"type":"QR_CODE","page_number":2,"position":[[124,86],[306,86],[306,268],[124,268]],"x":124,"y":86,"width":182,"height":182,"page_width":1190,"page_height":1684,"raw_payload":"SU5WLTIwMjYtMDA0Mg==","parsed_payload":"INV-2026-0042"}],"fields":[{"key":"account_holder","name":"Account holder","instruction":"Extract the full name of the account holder.","type":"text","required":true},{"key":"balance","name":"Closing balance","instruction":"Extract the closing balance amount.","type":"number","required":true}],"document_metadata":{"is_tampered":false},"cross_check_result":null,"created_at":"2026-06-01T12:34:56Z"}],"warnings":[]}],"questionnaire_responses":[{"node_id":"feature_questionnaire_1","questionnaire_id":"9f7485e0-b00b-4d56-9d3e-7859b68d1213","title":"Source of Funds","description":"Reply to this questionnaire to help us understand the source of funds.","languages":["en"],"default_language":"en","is_active":true,"is_simple_questionnaire":true,"questionnaire_group_id":"2b6a9d40-13a8-4b1e-9a6c-3f1d2e4b5a60","version":1,"published_at":"2025-11-02T09:14:55.000000Z","sections":[{"title":null,"description":null,"items":[{"uuid":"618636d9-7d5c-41ce-b8d0-1ab2a4be20db","value":"question_1","element_type":"DROPDOWN","is_required":true,"title":"What is your primary source of funds?","description":null,"placeholder":null,"choices":[{"label":"Salary","value":"salary"},{"label":"Business Income","value":"business_income"},{"label":"Savings","value":"savings"},{"label":"Investments","value":"investments"},{"label":"Sale of Asset","value":"sale_of_asset"},{"label":"Inheritance/Gift","value":"inheritance_gift"},{"label":"Pension","value":"pension"},{"label":"Crypto Proceeds","value":"crypto_proceeds"},{"label":"Other","value":"other","requires_text_input":true}],"max_files":1,"answer":{"value":"salary"},"required_if":null,"repeatable_config":null},{"uuid":"2d16b527-72be-42e0-8e96-b164b818386c","value":"question_2","element_type":"LONG_TEXT","is_required":true,"title":"Provide details of the primary source.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0","value":"question_3","element_type":"DROPDOWN","is_required":true,"title":"What is your annual income range (pre-tax)?","description":null,"placeholder":null,"choices":[{"label":"Less than $25,000","value":"<25k"},{"label":"$25,000 - $50,000","value":"25k-50k"},{"label":"$50,001 - $100,000","value":"50k-100k"},{"label":"$100,001 - $250,000","value":"100k-250k"},{"label":"More than $250,000","value":">250k"}],"max_files":1,"answer":{"value":"<25k"},"required_if":null,"repeatable_config":null},{"uuid":"93dede62-6d0c-4a7f-934d-42175eb94011","value":"question_4","element_type":"DROPDOWN","is_required":true,"title":"What is your approximate net worth (range)?","description":null,"placeholder":null,"choices":[{"label":"Less than $50,000","value":"<50k"},{"label":"$50,000 - $250,000","value":"50k-250k"},{"label":"$250,001 - $1,000,000","value":"250k-1m"},{"label":"$1,000,001 - $5,000,000","value":"1m-5m"},{"label":"More than $5,000,000","value":">5m"}],"max_files":1,"answer":{"value":"<50k"},"required_if":null,"repeatable_config":null},{"uuid":"2af60d6f-6961-4692-9ee7-24b3033610a6","value":"question_5","element_type":"LONG_TEXT","is_required":true,"title":"For your initial deposit/funding, indicate the exact source and amount.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"0ad9d1aa-736f-46cf-947b-9e1241b53e40","value":"question_6","element_type":"LONG_TEXT","is_required":true,"title":"Breakdown of sources by percentage.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"1bf8a2a3-14ee-48a8-bb3d-175481aae4aa","value":"question_7","element_type":"SINGLE_CHOICE","is_required":true,"title":"Will any funds originate from third parties? If yes, please provide details.","description":null,"placeholder":null,"choices":[{"label":"Yes","value":"yes","requires_text_input":true},{"label":"No","value":"no"}],"max_files":1,"answer":{"text":"Additional details","value":"yes"},"required_if":null,"repeatable_config":null},{"uuid":"e18d4dd3-b7bf-4883-ba18-d6046adbe313","value":"question_8","element_type":"SINGLE_CHOICE","is_required":true,"title":"Do you hold or plan to use virtual assets (e.g., crypto) to fund this account? If yes, please provide details.","description":null,"placeholder":null,"choices":[{"label":"Yes","value":"yes","requires_text_input":true},{"label":"No","value":"no"}],"max_files":1,"answer":{"text":"Additional details","value":"yes"},"required_if":null,"repeatable_config":null},{"uuid":"a90a073d-e098-404c-bbce-5130d8b12a13","value":"question_9","element_type":"FILE_UPLOAD","is_required":true,"title":"Upload a proof of funds document","description":"You can upload your three (3) most recent bank statements, three (3) most recent payslips, your most recent tax return, proof of company ownership, trading exchange statement, sale of property, or proof of inheritance.","placeholder":null,"choices":null,"max_files":3,"answer":{"files":["/media/ocr/","/media/ocr/"]},"required_if":null,"repeatable_config":null},{"uuid":"9503b486-7cb8-4c3b-a97d-4b64926a5a47","value":"question_10","element_type":"LONG_TEXT","is_required":false,"title":"Would you like to add any details to help us expedite our review of the documents you submitted?","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null}]}],"status":"Approved"}],"aml_screenings":[{"node_id":"feature_aml_1","status":"In Review","total_hits":1,"entity_type":"person","hits":[{"id":"hit_7c1e9a40b2d35f86e0a4c912","url":"https://news.example.org/articles/sample","match":false,"score":0.73,"target":null,"caption":"Javier Ejemplo Modelo","datasets":["PEP"],"features":null,"rca_name":"","last_seen":"2025-06-13T00:00:00","risk_view":{"crimes":{"score":0,"weightage":20,"risk_level":"Low","risk_scores":{}},"countries":{"score":0,"weightage":30,"risk_level":"Low","risk_scores":{}},"categories":{"score":100,"weightage":50,"risk_level":"High","risk_scores":{"PEP":100}},"custom_list":{}},"first_seen":"2025-01-18T00:00:00","properties":{"name":["Javier Ejemplo Modelo"],"alias":["Javier Ejemplo Modelo","David Azagra"],"notes":["Spanish orchestra conductor"],"title":null,"gender":["male"],"height":null,"topics":null,"weight":null,"address":null,"country":null,"website":null,"eyeColor":null,"keywords":null,"lastName":["Ejemplo","Modelo"],"position":null,"religion":null,"birthDate":["1974"],"education":["Tokyo Arts and Space (2012-2012)","Saint Petersburg Conservatory (-2010)","Comillas Pontifical University"],"ethnicity":null,"firstName":["David"],"hairColor":null,"weakAlias":null,"birthPlace":["Madrid"],"modifiedAt":null,"wikidataId":null,"citizenship":null,"nationality":null},"match_score":98,"risk_score":73,"review_status":"Unreviewed","score_breakdown":{"name_score":95,"name_weight":60,"name_weight_normalized":70.59,"name_contribution":67.06,"dob_score":100,"dob_weight":25,"dob_weight_normalized":29.41,"dob_contribution":29.41,"country_score":0,"country_weight":15,"country_weight_normalized":0,"country_contribution":0,"document_number_match_type":"NEUTRAL","document_number_effect":"No document number provided for screening","total_score":98},"pep_matches":[{"aliases":["Javier Ejemplo Modelo","David Azagra"],"education":["Tokyo Arts and Space (2012-2012)","Saint Petersburg Conservatory (-2010)","Comillas Pontifical University"],"list_name":"Wikidata","publisher":"Wikidata","source_url":"https://news.example.org/articles/sample","description":"Wikidata is the structured data project of the Wikipedia community, providing fact-based information edited by humans and machines","matched_name":"Javier Ejemplo Modelo","pep_position":"","date_of_birth":"1974","other_sources":[],"place_of_birth":"Madrid"}],"linked_entities":[{"name":["Antonio Ejemplo"],"active":[],"status":[],"details":[],"relation":[]}],"warning_matches":[],"sanction_matches":[],"adverse_media_details":{"sentiment":"Moderately Negative","entity_type":"person","sentiment_score":-2,"adverse_keywords":{"fraud":3,"juicio":1,"delitos":2,"imputado":1,"impunidad":1,"corruption":2,"favoritism":2,"privilegio":1,"corrupción":1,"persecution":2,"desconfianza":1,"desprestigio":1,"fraude de ley":2,"manipulación":1,"investigación":3,"prevaricación":8,"trato de favor":1,"irregularidades":2,"crisis de confianza":1,"tráfico de influencias":8}},"adverse_media_matches":[{"country":"spain","summary":"Javier Ejemplo is implicated in legal violations related to favoritism and influence trafficking, leading to a negative portrayal in the article.","headline":"La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \\"hermanito\\" de Ejemplo","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","prevaricación","tráfico de influencias","irregularidades","imputado"],"sentiment_score":-2,"publication_date":"2025-06-10T20:46:38"},{"country":"spain","summary":"Javier Ejemplo is implicated in legal issues regarding favoritism and corruption, leading to a negative portrayal in the article.","headline":"La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \\"hermanito\\" de Ejemplo","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","prevaricación","tráfico de influencias","irregularidades","trato de favor"],"sentiment_score":-2,"publication_date":"2025-06-10T20:46:38"},{"country":"spain","summary":"Javier Ejemplo Modelo is mentioned in connection with Carlos Ficticio\'s corruption case, indicating his involvement in alleged influence peddling.","headline":"España, paraíso del aforado","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","corrupción","impunidad","privilegio","desconfianza","manipulación","fraude de ley"],"sentiment_score":-2,"publication_date":"2025-06-10T05:05:34"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises questions about his conduct and political ethics.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación","juicio","fraude de ley","desprestigio","crisis de confianza","delitos"],"sentiment_score":-2,"publication_date":"2025-06-08T06:01:00"},{"country":"spain","summary":"Javier Ejemplo is implicated in a legal investigation regarding irregularities in his hiring, which raises serious concerns about his conduct.","headline":"La jueza del \'caso Javier Ejemplo\' denuncia un «fraude de ley» en el aforamiento de Ficticio (Partido Ejemplo)","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","irregularities","prevaricación","tráfico de influencias"],"sentiment_score":-2,"publication_date":"2025-06-09T10:19:10"},{"country":"spain","summary":"Javier Ejemplo Modelo is mentioned in connection with legal allegations of corruption, contributing to a negative perception.","headline":"\'Caso aforamiento\': la letrada mayor de la Asamblea certifica a la juez que Ficticio es diputado desde antes de prometer su cargo en el Pleno","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias"],"sentiment_score":-2,"publication_date":"2025-06-09T08:08:30"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, raising concerns about political corruption and influence.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación"],"sentiment_score":-2,"publication_date":"2025-06-08T06:01:00"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises concerns about political misconduct.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación","delitos"],"sentiment_score":-2,"publication_date":"2025-06-08T06:00:59"},{"country":"spain","summary":"Javier Ejemplo is implicated in a case of favoritism and corruption, which casts a negative light on his character and actions.","headline":"\'Caso Javier Ejemplo\': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \\"presiones externas\\" que sufre","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["favoritism","corruption","persecution"],"sentiment_score":-2,"publication_date":"2025-06-06T10:08:15"},{"country":"spain","summary":"Javier Ejemplo is implicated in a case of alleged favoritism and corruption, which casts a negative light on his character and actions.","headline":"\'Caso Javier Ejemplo\': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \\"presiones externas\\" que sufre","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["favoritism","corruption","persecution"],"sentiment_score":-2,"publication_date":"2025-06-06T08:08:15"}],"additional_information":{}}],"score":80,"screened_data":{"full_name":"Javier Ejemplo Modelo","nationality":"ES","date_of_birth":"1974-01-01","document_number":null},"is_ongoing_monitoring_enabled":true,"next_ongoing_monitoring_bill_date":"2026-07-24","last_ongoing_screening_at":"2026-09-12T04:03:11Z","last_ongoing_screening_datasets_updated_at":"2026-09-11T06:00:00Z","warnings":[{"feature":"AML","risk":"POSSIBLE_MATCH_FOUND","additional_data":null,"log_type":"warning","short_description":"Possible match found in AML screening","long_description":"The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review.","node_id":"feature_aml_1"}]}],"ip_analyses":[{"node_id":"feature_ip_1","status":"Approved","device_brand":"Apple","device_model":"iPhone","browser_family":"Mobile Safari","os_family":"iOS","platform":"mobile","device_fingerprint":"didit-fp-a1b2c3d4e5f6g7h8","ip_country":"Spain","ip_country_code":"ES","ip_state":"Barcelona","ip_city":"Barcelona","latitude":41.4022,"longitude":2.1407,"ip_address":"83.50.226.71","isp":null,"organization":null,"is_vpn_or_tor":false,"is_data_center":false,"time_zone":"Europe/Madrid","time_zone_offset":"+0100","ip":{"location":{"latitude":40.2206327,"longitude":1.5770097},"distance_from_id_document":23.4,"distance_from_poa_document":12.3},"id_document":{"location":{"latitude":41.2706327,"longitude":1.9770097},"distance_from_ip":23.4,"distance_from_poa_document":18.7},"poa_document":{"location":{"latitude":41.2706327,"longitude":1.9770097},"distance_from_ip":12.3,"distance_from_id_document":18.7},"warnings":[],"matches":[{"session_id":"99999999-8888-7777-6666-555555555555","session_number":41205,"vendor_data":"22222222-2222-2222-2222-222222222222","verification_date":"2024-07-20T10:15:30Z","match_type":"ip_address","match_source":"ip_address","matched_value":"83.50.226.71","status":"Approved","is_blocklisted":false,"api_service":null,"source":"session","device_info":{"device_brand":"Apple","device_model":"iPhone","browser_family":"Mobile Safari","os_family":"iOS","platform":"mobile","device_fingerprint":"didit-fp-f9e8d7c6b5a40312"},"location_info":{"ip_address":"83.50.226.71","ip_country":"Spain","ip_country_code":"ES","ip_state":"Barcelona","ip_city":"Barcelona","is_vpn_or_tor":false,"is_data_center":false},"confidence":0.0,"match_mode":"co_occurrence"},{"session_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","session_number":42830,"vendor_data":"33333333-3333-3333-3333-333333333333","verification_date":"2024-06-30T18:22:05Z","match_type":"device_fingerprint","match_source":"recovered_high","matched_value":"f47ac10b-58cc-4372-a567-0e02b2c3d479","status":"Declined","is_blocklisted":false,"api_service":null,"source":"session","device_info":{"device_brand":"Samsung","device_model":"SM-G991B","browser_family":"Chrome Mobile","os_family":"Android","platform":"mobile","device_fingerprint":null},"location_info":{"ip_address":"83.50.231.18","ip_country":"Spain","ip_country_code":"ES","ip_state":"Madrid","ip_city":"Madrid","is_vpn_or_tor":false,"is_data_center":false},"confidence":1.0,"match_mode":"deterministic","recovery_similarity":0.9874,"tls_ja4_corroborated":true,"recovery_gate_reason":"hardware_root_match"}]}],"database_validations":[{"node_id":"feature_db_validation_1","issuing_state":"BRA","validation_type":"one_by_one","screened_data":{"last_name":"De Lima","first_name":"Fernando","tax_number":"01234567890","date_of_birth":"1980-01-01","document_type":"ID","expiration_date":"2030-01-01"},"validations":[{"service_id":"bra_cpf","service_name":"Brazil - CPF status check","outcome_code":"MATCH","validation":{"full_name":"full_match","date_of_birth":"full_match","identification_number":"full_match"},"source_data":{"identification_number":"01234567890","first_name":"FERNANDO","last_name":"DE LIMA","date_of_birth":"1980-01-01","gender":"M","nationality":"BRA"}}],"match_type":"full_match","status":"Approved","warnings":[]}],"reviews":[{"user":"compliance@example.com","new_status":"Declined","comment":"Possible match found in AML screening","created_at":"2024-07-18T13:29:00.366811Z"}],"created_at":"2024-07-24T08:54:25.443172Z","expires_at":"2025-07-24T08:54:25.443172Z","biometric_consent":{"required":false,"trigger":null,"status":"not_required","given_at":null,"declined_at":null,"text_version":null,"text_hash":null,"locale":null,"policy_url":null,"step":null,"node_id":null,"ip_address":null,"ip_country_code":null,"ip_state":null,"ip_city":null,"user_agent":null,"detected_ip_address":"83.50.226.71","detected_country_code":"ES","detected_state":"ES-B","detected_city":"Barcelona","declared_state":null,"document_state":null,"jurisdictions":[],"retention_months":null,"reason":null,"decline_reason":null,"face_data_deleted_at":null}}'), $result->toArray()); + self::assertSame($this->decoded('{"session_id":"11111111-2222-3333-4444-555555555555","session_kind":"user","session_number":43762,"session_url":"https://verify.didit.me/session/11111111-2222-3333-4444-555555555555","status":"In Review","environment":"live","workflow_id":"11111111-2222-3333-4444-555555555555","features":["ID_VERIFICATION","NFC","LIVENESS","FACE_MATCH","POA","PHONE","DATABASE_VALIDATION","AML","IP_ANALYSIS"],"vendor_data":"11111111-1111-1111-1111-111111111111","metadata":{"user_type":"premium","account_id":"ABC123"},"expected_details":{"first_name":"Carmen","last_name":"Española Española"},"contact_details":{"email":"carmen@example.com","email_lang":"es","send_notification_emails":false,"phone":null},"callback":"https://verify.didit.me/","id_verifications":[{"node_id":"feature_ocr_1","status":"Approved","document_type":"Identity Card","document_subtype":"ID_CARD_GENERIC","document_number":"CAA000000","personal_number":"99999999R","portrait_image":"https:///portrait.jpg","front_image":"https:///front.jpg","front_video":"https:///front.mp4","back_image":"https:///back.jpg","back_video":"https:///back.mp4","full_front_image":"https:///full_front.jpg","full_back_image":"https:///full_back.jpg","front_image_camera_front":"https:///front_camera_front.jpg","back_image_camera_front":"https:///back_camera_front.jpg","date_of_birth":"1980-01-01","age":45,"expiration_date":"2031-06-02","date_of_issue":"2021-06-02","issuing_state":"ESP","issuing_state_name":"Spain","first_name":"Carmen","last_name":"Española Española","full_name":"Carmen Española Española","gender":"F","address":"Avda de Madrid 34, Madrid, Madrid","formatted_address":"Avda de Madrid 34, Madrid, Madrid 28822, Spain","place_of_birth":"Madrid","marital_status":"Single","nationality":"ESP","extra_fields":{"dl_categories":[],"blood_group":null},"mrz":{"surname":"ESPANOLA ESPANOLA","name":"CARMEN","country":"ESP","nationality":"ESP","birth_date":"800101","expiry_date":"310602","sex":"F","document_type":"ID","document_number":"CAA000000","optional_data":"99999999R","optional_data_2":"","birth_date_hash":"4","expiry_date_hash":"8","document_number_hash":"4","final_hash":"1","personal_number":"99999999R","warnings":[],"errors":[],"mrz_type":"TD1","mrz_string":"IDESPCAA000000499999999R<<<<<<\\n8001014F3106028ESP<<<<<<<<<<<1\\nESPANOLA/match_face.jpg","status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":null,"source":"session"}],"front_image_quality_score":{"focus_score":85.3,"brightness_score":92.1,"brightness_issue":"ok","is_document_fully_visible":true,"resolution_score":72.4,"overall_score":88.7},"back_image_quality_score":{"focus_score":79.1,"brightness_score":90.5,"brightness_issue":"ok","is_document_fully_visible":true,"resolution_score":72.4,"overall_score":85.2},"extra_files":["https:///extra_id_verification.jpg"],"matches":[{"session_id":"7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f","session_number":1234,"vendor_data":"user_ref_001","verification_date":"2024-06-15T10:30:00Z","user_details":{"name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Approved","is_blocklisted":false,"api_service":null,"front_image_url":"https:///document_front.jpg"},{"session_id":"b2c8e4d1-6a3f-4e7b-95c0-1d8f2a6b4c9e","session_number":1235,"vendor_data":null,"verification_date":"2024-05-20T14:45:00Z","user_details":{"name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Declined","is_blocklisted":true,"api_service":"ID_VERIFICATION","front_image_url":"https:///document_front_2.jpg"}],"warnings":[{"feature":"ID_VERIFICATION","risk":"QR_NOT_DETECTED","additional_data":null,"log_type":"information","short_description":"QR not detected","long_description":"The system couldn\'t find or read the QR code on the document, which is necessary for document verification. This could be due to poor image quality or an unsupported document type.","node_id":"feature_ocr_1"}],"verification_method":"document","assurance":"documentary","wallet_provider":null,"fallback_from":null,"id_lookup":null,"wallet_verification":null,"document_liveness":{"portrait_replace":{"score":96.46,"front":96.46,"back":98.2,"decline_threshold":35,"review_threshold":70,"bucket":"approve"},"printed_copy":{"score":91.2,"front":91.2,"back":93.7,"decline_threshold":35,"review_threshold":77,"bucket":"approve"},"screen_replay":{"score":99.9,"front":99.9,"back":99.5,"decline_threshold":30,"review_threshold":70,"bucket":"approve"}}},{"node_id":"feature_ocr_2","status":"Approved","issuing_state":"ZAF","issuing_state_name":"South Africa","first_name":"Thabo","last_name":"Mokoena","full_name":"Thabo Mokoena","date_of_birth":"1991-06-15","personal_number":"9106155043088","verification_method":"id_lookup","assurance":"data_match","wallet_provider":null,"fallback_from":null,"id_lookup":{"source":"Department of Home Affairs","checked_at":"2026-09-04T09:12:44Z","attempts":1,"max_attempts":2,"outcome":"match","comparison":[{"field":"identification_number","label":"ID number","provided":"9106155043088","record":"9106155043088","result":"match"},{"field":"full_name","label":"Full name","provided":"Thabo Mokoena","record":"Thabo Mokoena","result":"match"},{"field":"date_of_birth","label":"Date of birth","provided":"1991-06-15","record":"1991-06-15","result":"match"}],"registry_portrait":"https:///registry_portrait.jpg","face_match_score":96.4,"source_errors":[]},"wallet_verification":null,"warnings":[]},{"node_id":"feature_ocr_3","status":"Approved","issuing_state":"DNK","issuing_state_name":"Denmark","first_name":"Freja","last_name":"Nielsen","full_name":"Freja Nielsen","date_of_birth":"1988-03-02","verification_method":"wallet","assurance":"cryptographic","wallet_provider":"mitid","fallback_from":null,"id_lookup":null,"wallet_verification":{"provider":"mitid","provider_name":"MitID","issuing_authority":"Danish Agency for Digital Government","issuing_country":"DNK","credential_type":"person_identification","level_of_assurance":"substantial","verified_at":"2026-09-04T09:12:44Z","signature_valid":true,"attributes":{"full_name":"Freja Nielsen","date_of_birth":"1988-03-02","cpr_alias":"b0f1c2d3-e4f5-4678-9abc-def012345678"},"portrait":null,"face_match_score":null},"warnings":[]}],"nfc_verifications":[{"node_id":"feature_nfc_1","status":"In Review","is_nfc_skipped":false,"skip_reason":null,"chip_protocol":"icao","jpki":null,"portrait_image":"https:///portrait.jpg","signature_image":"https:///signature.jpg","chip_data":{"document_type":"ID","issuing_country":"ESP","document_number":"123456789","expiration_date":"2030-01-01","first_name":"John","last_name":"Smith","birth_date":"1990-05-15","gender":"M","nationality":"ESP","address":"CALLE MAYOR 123 4B, MADRID, MADRID","place_of_birth":"MADRID, MADRID"},"authenticity":{"sod_integrity":true,"dg_integrity":true},"certificate_summary":{"issuer":"Common Name: CSCA SPAIN, Serial Number: 3, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES","subject":"Common Name: DS n-eID SPAIN 2, Organizational Unit: PASSPORT, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES","serial_number":"118120836164494130086420187336801405660","not_valid_after":"2031-02-18 10:21:11","not_valid_before":"2020-11-18 10:21:11"},"warnings":[{"feature":"NFC","risk":"DATA_INCONSISTENT","additional_data":null,"log_type":"warning","short_description":"OCR and NFC mrz code extracted are not the same","long_description":"The Optical Character Recognition (OCR) data and the NFC chip data don\'t match, indicating potential document tampering or data inconsistency.","node_id":"feature_nfc_1"}]}],"liveness_checks":[{"node_id":"feature_liveness_1","status":"Approved","method":"ACTIVE_3D","score":89.92,"reference_image":"https:///reference.jpg","video_url":"https:///video.mp4","age_estimation":24.3,"matches":[{"session_id":"7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f","session_number":1234,"vendor_data":"user_ref_001","verification_date":"2024-06-15T10:30:00Z","user_details":{"full_name":"John Smith","document_type":"ID","document_number":"CLM148418"},"status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":null,"source":"session","match_image_url":"https:///face_match.jpg","similarity_percentage":98.5},{"session_id":"3e9a7c21-5b48-4f0e-9c6a-8d2f4b1e0a35","session_number":1100,"vendor_data":"customer_xyz","verification_date":"2024-04-10T09:15:00Z","user_details":{"full_name":"John Smith","document_type":"P","document_number":"DZ8375806"},"status":"Approved","is_blocklisted":false,"is_allowlisted":false,"api_service":"PASSIVE_LIVENESS","source":"session","match_image_url":"https:///face_match_2.jpg","similarity_percentage":95.2}],"warnings":[{"feature":"LIVENESS","risk":"LOW_LIVENESS_SCORE","additional_data":null,"log_type":"information","short_description":"Low liveness score","long_description":"The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data.","node_id":"feature_liveness_1"}],"face_quality":null,"face_luminance":null}],"face_matches":[{"node_id":"feature_face_match_1","status":"In Review","score":65.43,"source_image_session_id":null,"source_image":"https:///source-image.jpg","target_image":"https:///target-image.jpg","warnings":[{"feature":"FACEMATCH","risk":"LOW_FACE_MATCH_SIMILARITY","additional_data":null,"log_type":"warning","short_description":"Low face match similarity","long_description":"The facial features of the provided image don\'t closely match the reference image, suggesting a potential identity mismatch.","node_id":"feature_face_match_1"}]}],"phone_verifications":[{"node_id":"feature_phone_1","status":"Approved","phone_number_prefix":"+34","phone_number":"600600600","full_number":"+34600600600","country_code":"ES","country_name":"Spain","carrier":{"name":"Orange","type":"mobile"},"is_disposable":false,"is_virtual":false,"verification_method":"sms","verification_attempts":1,"verified_at":"2024-07-28T06:47:35.654321Z","lifecycle":[{"type":"PHONE_VERIFICATION_MESSAGE_SENT","timestamp":"2025-08-24T09:12:39.580554+00:00","details":{"status":"Success","reason":null,"channel":"sms","actual_channel":"sms","attempt":0},"fee":0.1},{"type":"VALID_CODE_ENTERED","timestamp":"2025-08-24T09:12:39.662157+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"PHONE_VERIFICATION_APPROVED","timestamp":"2025-08-24T09:12:39.684292+00:00","details":null,"fee":0}],"warnings":[],"matches":[{"session_id":null,"session_number":null,"vendor_data":null,"verification_date":null,"phone_number":"+34600000000","status":null,"is_blocklisted":true,"api_service":null,"source":"list_entry"}]}],"email_verifications":[{"node_id":"feature_email_1","status":"Approved","email":"test@example.com","is_breached":true,"breaches":[{"name":"TAPAirPortugal","domain":"flytap.com","logo_path":"https://logos.example.com/TAPAirPortugal.png","breach_date":"2022-08-25","description":"In August 2022, the Portuguese airline TAP Air Portugal was the target of a ransomware attack perpetrated by the Ragnar Locker gang who later leaked the compromised data via a public dark web site. Over 5M unique email addresses were exposed alongside other personal data including names, genders, DoBs, phone numbers and physical addresses.","is_verified":true,"data_classes":["dates_of_birth","email_addresses","genders","names","nationalities","phone_numbers","physical_addresses","salutations","spoken_languages"],"breach_emails_count":6083479}],"is_disposable":false,"is_undeliverable":false,"verification_attempts":1,"verified_at":"2025-09-15T17:36:19.963451Z","warnings":[{"feature":"EMAIL","risk":"BREACHED_EMAIL_DETECTED","additional_data":null,"log_type":"information","short_description":"Breached email detected","long_description":"This email address was found in one or more known data breaches.","node_id":"feature_email_1"}],"lifecycle":[{"type":"EMAIL_VERIFICATION_MESSAGE_SENT","timestamp":"2025-09-15T17:36:19.792684+00:00","details":{"status":"Success","reason":null},"fee":0.02},{"type":"VALID_CODE_ENTERED","timestamp":"2025-09-15T17:36:19.963427+00:00","details":{"code_tried":"123456","status":"Approved"},"fee":0},{"type":"EMAIL_VERIFICATION_DECLINED","timestamp":"2025-09-15T17:36:20.081471+00:00","details":{"reason":"BREACHED_EMAIL_DETECTED"},"fee":0}],"matches":[{"session_id":null,"session_number":null,"vendor_data":null,"verification_date":null,"email":"test@example.com","status":null,"is_blocklisted":true,"api_service":null,"source":"list_entry"}]}],"poa_verifications":[{"node_id":"feature_poa_1","status":"Declined","document_file":"https:///poa_document.pdf","issuing_state":"AR","document_type":"UTILITY_BILL","document_subtype":null,"document_language":"es","document_metadata":{"file_size":1000,"content_type":"application/pdf","creation_date":"2021-01-01","modified_date":"2021-01-01","overlay_manipulation":null,"creator":null,"producer":"PDF Generator","software":null,"encryption":null,"is_signed":false,"is_tampered":false,"signature_info":null,"exif_original_date":null,"exif_digitized_date":null,"processed_by_known_editor":false,"has_different_creation_mod_date":true},"issuer":"Aguas del Norte","issue_date":"2021-02-01","expiration_date":null,"poa_address":"AVDA. MONSEÑOR TAVELLA N° 3396, SALTA","poa_formatted_address":"Av. Monseñor Tavella 3396, A4400 Salta, Argentina","poa_parsed_address":{"address_type":"Avenida","street_1":"Avenida Monseñor Tavella 3396","street_2":null,"city":"Salta","region":"Salta","country":"AR","postal_code":"A4400","document_location":{"latitude":-24.8208664,"longitude":-65.4131}},"name_on_document":"Fernando De Lima","name_match_score_expected_details":null,"name_match_score_id_verification":38.5,"expected_details_address":null,"expected_details_formatted_address":null,"expected_details_parsed_address":{},"extra_fields":{"bank_account_number":"1234567890","bank_iban":null,"bank_sort_code":null,"bank_routing_number":null,"bank_swift_bic":null,"bank_branch_name":null,"bank_branch_address":null,"document_phone_number":"+5491112345678","additional_names":[]},"extra_files":["https:///extra_poa.pdf"],"detected_codes":[{"type":"QR_CODE","page_number":1,"position":[[820,1120],[1002,1120],[1002,1302],[820,1302]],"x":820,"y":1120,"width":182,"height":182,"page_width":1190,"page_height":1684,"raw_payload":"aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==","parsed_payload":"https://aguasdelnorte.com/factura/998811"},{"type":"CODE_128","page_number":1,"position":[[112,1480],[560,1480],[560,1540],[112,1540]],"x":112,"y":1480,"width":448,"height":60,"page_width":1190,"page_height":1684,"raw_payload":"MDA5OTg4MTEwMDA0Mg==","parsed_payload":"0099881100042"}],"warnings":[]}],"document_ai_documents":[{"status":"Approved","node_id":"feature_document_ai_1","items":[{"uuid":"c1a2b3c4-d5e6-7f80-9a1b-2c3d4e5f6071","node_id":"feature_document_ai_1","document_key":"proof_of_funds","original_filename":"bank_statement.pdf","file_size":184320,"file_url":"https:///document_ai/proof_of_funds.pdf","status":"Approved","extracted_data":{"account_holder":"John Doe","balance":15230.55,"currency":"EUR","statement_date":"2026-05-31"},"detected_codes":[{"type":"QR_CODE","page_number":2,"position":[[124,86],[306,86],[306,268],[124,268]],"x":124,"y":86,"width":182,"height":182,"page_width":1190,"page_height":1684,"raw_payload":"SU5WLTIwMjYtMDA0Mg==","parsed_payload":"INV-2026-0042"}],"fields":[{"key":"account_holder","name":"Account holder","instruction":"Extract the full name of the account holder.","type":"text","required":true},{"key":"balance","name":"Closing balance","instruction":"Extract the closing balance amount.","type":"number","required":true}],"document_metadata":{"is_tampered":false},"cross_check_result":null,"created_at":"2026-06-01T12:34:56Z"}],"warnings":[]}],"questionnaire_responses":[{"node_id":"feature_questionnaire_1","questionnaire_id":"9f7485e0-b00b-4d56-9d3e-7859b68d1213","title":"Source of Funds","description":"Reply to this questionnaire to help us understand the source of funds.","languages":["en"],"default_language":"en","is_active":true,"is_simple_questionnaire":true,"questionnaire_group_id":"2b6a9d40-13a8-4b1e-9a6c-3f1d2e4b5a60","version":1,"published_at":"2025-11-02T09:14:55.000000Z","sections":[{"title":null,"description":null,"items":[{"uuid":"618636d9-7d5c-41ce-b8d0-1ab2a4be20db","value":"question_1","element_type":"DROPDOWN","is_required":true,"title":"What is your primary source of funds?","description":null,"placeholder":null,"choices":[{"label":"Salary","value":"salary"},{"label":"Business Income","value":"business_income"},{"label":"Savings","value":"savings"},{"label":"Investments","value":"investments"},{"label":"Sale of Asset","value":"sale_of_asset"},{"label":"Inheritance/Gift","value":"inheritance_gift"},{"label":"Pension","value":"pension"},{"label":"Crypto Proceeds","value":"crypto_proceeds"},{"label":"Other","value":"other","requires_text_input":true}],"max_files":1,"answer":{"value":"salary"},"required_if":null,"repeatable_config":null},{"uuid":"2d16b527-72be-42e0-8e96-b164b818386c","value":"question_2","element_type":"LONG_TEXT","is_required":true,"title":"Provide details of the primary source.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0","value":"question_3","element_type":"DROPDOWN","is_required":true,"title":"What is your annual income range (pre-tax)?","description":null,"placeholder":null,"choices":[{"label":"Less than $25,000","value":"<25k"},{"label":"$25,000 - $50,000","value":"25k-50k"},{"label":"$50,001 - $100,000","value":"50k-100k"},{"label":"$100,001 - $250,000","value":"100k-250k"},{"label":"More than $250,000","value":">250k"}],"max_files":1,"answer":{"value":"<25k"},"required_if":null,"repeatable_config":null},{"uuid":"93dede62-6d0c-4a7f-934d-42175eb94011","value":"question_4","element_type":"DROPDOWN","is_required":true,"title":"What is your approximate net worth (range)?","description":null,"placeholder":null,"choices":[{"label":"Less than $50,000","value":"<50k"},{"label":"$50,000 - $250,000","value":"50k-250k"},{"label":"$250,001 - $1,000,000","value":"250k-1m"},{"label":"$1,000,001 - $5,000,000","value":"1m-5m"},{"label":"More than $5,000,000","value":">5m"}],"max_files":1,"answer":{"value":"<50k"},"required_if":null,"repeatable_config":null},{"uuid":"2af60d6f-6961-4692-9ee7-24b3033610a6","value":"question_5","element_type":"LONG_TEXT","is_required":true,"title":"For your initial deposit/funding, indicate the exact source and amount.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"0ad9d1aa-736f-46cf-947b-9e1241b53e40","value":"question_6","element_type":"LONG_TEXT","is_required":true,"title":"Breakdown of sources by percentage.","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null},{"uuid":"1bf8a2a3-14ee-48a8-bb3d-175481aae4aa","value":"question_7","element_type":"SINGLE_CHOICE","is_required":true,"title":"Will any funds originate from third parties? If yes, please provide details.","description":null,"placeholder":null,"choices":[{"label":"Yes","value":"yes","requires_text_input":true},{"label":"No","value":"no"}],"max_files":1,"answer":{"text":"Additional details","value":"yes"},"required_if":null,"repeatable_config":null},{"uuid":"e18d4dd3-b7bf-4883-ba18-d6046adbe313","value":"question_8","element_type":"SINGLE_CHOICE","is_required":true,"title":"Do you hold or plan to use virtual assets (e.g., crypto) to fund this account? If yes, please provide details.","description":null,"placeholder":null,"choices":[{"label":"Yes","value":"yes","requires_text_input":true},{"label":"No","value":"no"}],"max_files":1,"answer":{"text":"Additional details","value":"yes"},"required_if":null,"repeatable_config":null},{"uuid":"a90a073d-e098-404c-bbce-5130d8b12a13","value":"question_9","element_type":"FILE_UPLOAD","is_required":true,"title":"Upload a proof of funds document","description":"You can upload your three (3) most recent bank statements, three (3) most recent payslips, your most recent tax return, proof of company ownership, trading exchange statement, sale of property, or proof of inheritance.","placeholder":null,"choices":null,"max_files":3,"answer":{"files":["/media/ocr/","/media/ocr/"]},"required_if":null,"repeatable_config":null},{"uuid":"9503b486-7cb8-4c3b-a97d-4b64926a5a47","value":"question_10","element_type":"LONG_TEXT","is_required":false,"title":"Would you like to add any details to help us expedite our review of the documents you submitted?","description":null,"placeholder":null,"choices":null,"max_files":1,"answer":{"value":"Test answer"},"required_if":null,"repeatable_config":null}]}],"status":"Approved"}],"aml_screenings":[{"node_id":"feature_aml_1","status":"In Review","total_hits":1,"entity_type":"person","hits":[{"id":"hit_7c1e9a40b2d35f86e0a4c912","url":"https://news.example.org/articles/sample","match":false,"score":0.73,"target":null,"caption":"Javier Ejemplo Modelo","datasets":["PEP"],"features":null,"rca_name":"","last_seen":"2025-06-13T00:00:00","risk_view":{"crimes":{"score":0,"weightage":20,"risk_level":"Low","risk_scores":{}},"countries":{"score":0,"weightage":30,"risk_level":"Low","risk_scores":{}},"categories":{"score":100,"weightage":50,"risk_level":"High","risk_scores":{"PEP":100}},"custom_list":{}},"first_seen":"2025-01-18T00:00:00","properties":{"name":["Javier Ejemplo Modelo"],"alias":["Javier Ejemplo Modelo","David Azagra"],"notes":["Spanish orchestra conductor"],"title":null,"gender":["male"],"height":null,"topics":null,"weight":null,"address":null,"country":null,"website":null,"eyeColor":null,"keywords":null,"lastName":["Ejemplo","Modelo"],"position":null,"religion":null,"birthDate":["1974"],"education":["Tokyo Arts and Space (2012-2012)","Saint Petersburg Conservatory (-2010)","Comillas Pontifical University"],"ethnicity":null,"firstName":["David"],"hairColor":null,"weakAlias":null,"birthPlace":["Madrid"],"modifiedAt":null,"wikidataId":null,"citizenship":null,"nationality":null},"match_score":98,"risk_score":73,"review_status":"Unreviewed","score_breakdown":{"name_score":95,"name_weight":60,"name_weight_normalized":70.59,"name_contribution":67.06,"dob_score":100,"dob_weight":25,"dob_weight_normalized":29.41,"dob_contribution":29.41,"country_score":0,"country_weight":15,"country_weight_normalized":0,"country_contribution":0,"document_number_match_type":"NEUTRAL","document_number_effect":"No document number provided for screening","total_score":98},"pep_matches":[{"aliases":["Javier Ejemplo Modelo","David Azagra"],"education":["Tokyo Arts and Space (2012-2012)","Saint Petersburg Conservatory (-2010)","Comillas Pontifical University"],"list_name":"Wikidata","publisher":"Wikidata","source_url":"https://news.example.org/articles/sample","description":"Wikidata is the structured data project of the Wikipedia community, providing fact-based information edited by humans and machines","matched_name":"Javier Ejemplo Modelo","pep_position":"","date_of_birth":"1974","other_sources":[],"place_of_birth":"Madrid"}],"linked_entities":[{"name":["Antonio Ejemplo"],"active":[],"status":[],"details":[],"relation":[]}],"warning_matches":[],"sanction_matches":[],"adverse_media_details":{"sentiment":"Moderately Negative","entity_type":"person","sentiment_score":-2,"adverse_keywords":{"fraud":3,"juicio":1,"delitos":2,"imputado":1,"impunidad":1,"corruption":2,"favoritism":2,"privilegio":1,"corrupción":1,"persecution":2,"desconfianza":1,"desprestigio":1,"fraude de ley":2,"manipulación":1,"investigación":3,"prevaricación":8,"trato de favor":1,"irregularidades":2,"crisis de confianza":1,"tráfico de influencias":8}},"adverse_media_matches":[{"country":"spain","summary":"Javier Ejemplo is implicated in legal violations related to favoritism and influence trafficking, leading to a negative portrayal in the article.","headline":"La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \\"hermanito\\" de Ejemplo","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","prevaricación","tráfico de influencias","irregularidades","imputado"],"sentiment_score":-2,"publication_date":"2025-06-10T20:46:38"},{"country":"spain","summary":"Javier Ejemplo is implicated in legal issues regarding favoritism and corruption, leading to a negative portrayal in the article.","headline":"La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \\"hermanito\\" de Ejemplo","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","prevaricación","tráfico de influencias","irregularidades","trato de favor"],"sentiment_score":-2,"publication_date":"2025-06-10T20:46:38"},{"country":"spain","summary":"Javier Ejemplo Modelo is mentioned in connection with Carlos Ficticio\'s corruption case, indicating his involvement in alleged influence peddling.","headline":"España, paraíso del aforado","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","corrupción","impunidad","privilegio","desconfianza","manipulación","fraude de ley"],"sentiment_score":-2,"publication_date":"2025-06-10T05:05:34"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises questions about his conduct and political ethics.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación","juicio","fraude de ley","desprestigio","crisis de confianza","delitos"],"sentiment_score":-2,"publication_date":"2025-06-08T06:01:00"},{"country":"spain","summary":"Javier Ejemplo is implicated in a legal investigation regarding irregularities in his hiring, which raises serious concerns about his conduct.","headline":"La jueza del \'caso Javier Ejemplo\' denuncia un «fraude de ley» en el aforamiento de Ficticio (Partido Ejemplo)","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["fraud","irregularities","prevaricación","tráfico de influencias"],"sentiment_score":-2,"publication_date":"2025-06-09T10:19:10"},{"country":"spain","summary":"Javier Ejemplo Modelo is mentioned in connection with legal allegations of corruption, contributing to a negative perception.","headline":"\'Caso aforamiento\': la letrada mayor de la Asamblea certifica a la juez que Ficticio es diputado desde antes de prometer su cargo en el Pleno","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias"],"sentiment_score":-2,"publication_date":"2025-06-09T08:08:30"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, raising concerns about political corruption and influence.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación"],"sentiment_score":-2,"publication_date":"2025-06-08T06:01:00"},{"country":"spain","summary":"Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises concerns about political misconduct.","headline":"Aforamientos: esa figura incómoda","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["prevaricación","tráfico de influencias","investigación","delitos"],"sentiment_score":-2,"publication_date":"2025-06-08T06:00:59"},{"country":"spain","summary":"Javier Ejemplo is implicated in a case of favoritism and corruption, which casts a negative light on his character and actions.","headline":"\'Caso Javier Ejemplo\': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \\"presiones externas\\" que sufre","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["favoritism","corruption","persecution"],"sentiment_score":-2,"publication_date":"2025-06-06T10:08:15"},{"country":"spain","summary":"Javier Ejemplo is implicated in a case of alleged favoritism and corruption, which casts a negative light on his character and actions.","headline":"\'Caso Javier Ejemplo\': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \\"presiones externas\\" que sufre","sentiment":"moderately negative","thumbnail":"https://news.example.org/articles/sample","source_url":"https://news.example.org/articles/sample","author_name":null,"other_sources":[],"adverse_keywords":["favoritism","corruption","persecution"],"sentiment_score":-2,"publication_date":"2025-06-06T08:08:15"}],"additional_information":{}}],"score":80,"screened_data":{"full_name":"Javier Ejemplo Modelo","nationality":"ES","date_of_birth":"1974-01-01","document_number":null},"is_ongoing_monitoring_enabled":true,"next_ongoing_monitoring_bill_date":"2026-07-24","last_ongoing_screening_at":"2026-09-12T04:03:11Z","last_ongoing_screening_datasets_updated_at":"2026-09-11T06:00:00Z","warnings":[{"feature":"AML","risk":"POSSIBLE_MATCH_FOUND","additional_data":null,"log_type":"warning","short_description":"Possible match found in AML screening","long_description":"The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review.","node_id":"feature_aml_1"}]}],"ip_analyses":[{"node_id":"feature_ip_1","status":"Approved","device_brand":"Apple","device_model":"iPhone","browser_family":"Mobile Safari","os_family":"iOS","platform":"mobile","device_fingerprint":"didit-fp-a1b2c3d4e5f6g7h8","ip_country":"Spain","ip_country_code":"ES","ip_state":"Barcelona","ip_city":"Barcelona","latitude":41.4022,"longitude":2.1407,"ip_address":"83.50.226.71","isp":null,"organization":null,"is_vpn_or_tor":false,"is_data_center":false,"time_zone":"Europe/Madrid","time_zone_offset":"+0100","ip":{"location":{"latitude":40.2206327,"longitude":1.5770097},"distance_from_id_document":23.4,"distance_from_poa_document":12.3},"id_document":{"location":{"latitude":41.2706327,"longitude":1.9770097},"distance_from_ip":23.4,"distance_from_poa_document":18.7},"poa_document":{"location":{"latitude":41.2706327,"longitude":1.9770097},"distance_from_ip":12.3,"distance_from_id_document":18.7},"warnings":[],"matches":[{"session_id":"99999999-8888-7777-6666-555555555555","session_number":41205,"vendor_data":"22222222-2222-2222-2222-222222222222","verification_date":"2024-07-20T10:15:30Z","match_type":"ip_address","match_source":"ip_address","matched_value":"83.50.226.71","status":"Approved","is_blocklisted":false,"api_service":null,"source":"session","device_info":{"device_brand":"Apple","device_model":"iPhone","browser_family":"Mobile Safari","os_family":"iOS","platform":"mobile","device_fingerprint":"didit-fp-f9e8d7c6b5a40312"},"location_info":{"ip_address":"83.50.226.71","ip_country":"Spain","ip_country_code":"ES","ip_state":"Barcelona","ip_city":"Barcelona","is_vpn_or_tor":false,"is_data_center":false},"confidence":0.0,"match_mode":"co_occurrence"},{"session_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","session_number":42830,"vendor_data":"33333333-3333-3333-3333-333333333333","verification_date":"2024-06-30T18:22:05Z","match_type":"device_fingerprint","match_source":"recovered_high","matched_value":"f47ac10b-58cc-4372-a567-0e02b2c3d479","status":"Declined","is_blocklisted":false,"api_service":null,"source":"session","device_info":{"device_brand":"Samsung","device_model":"SM-G991B","browser_family":"Chrome Mobile","os_family":"Android","platform":"mobile","device_fingerprint":null},"location_info":{"ip_address":"83.50.231.18","ip_country":"Spain","ip_country_code":"ES","ip_state":"Madrid","ip_city":"Madrid","is_vpn_or_tor":false,"is_data_center":false},"confidence":1.0,"match_mode":"deterministic","recovery_similarity":0.9874,"tls_ja4_corroborated":true,"recovery_gate_reason":"hardware_root_match"}]}],"database_validations":[{"node_id":"feature_db_validation_1","issuing_state":"BRA","validation_type":"one_by_one","screened_data":{"last_name":"De Lima","first_name":"Fernando","tax_number":"01234567890","date_of_birth":"1980-01-01","document_type":"ID","expiration_date":"2030-01-01"},"validations":[{"service_id":"bra_cpf","service_name":"Brazil - CPF status check","outcome_code":"MATCH","validation":{"full_name":"full_match","date_of_birth":"full_match","identification_number":"full_match"},"source_data":{"identification_number":"01234567890","first_name":"FERNANDO","last_name":"DE LIMA","date_of_birth":"1980-01-01","gender":"M","nationality":"BRA"}}],"match_type":"full_match","status":"Approved","warnings":[]}],"reviews":[{"user":"compliance@example.com","new_status":"Declined","comment":"Possible match found in AML screening","created_at":"2024-07-18T13:29:00.366811Z"}],"created_at":"2024-07-24T08:54:25.443172Z","expires_at":"2025-07-24T08:54:25.443172Z","biometric_consent":{"required":false,"trigger":null,"status":"not_required","given_at":null,"declined_at":null,"text_version":null,"text_hash":null,"locale":null,"policy_url":null,"step":null,"node_id":null,"ip_address":null,"ip_country_code":null,"ip_state":null,"ip_city":null,"user_agent":null,"detected_ip_address":"83.50.226.71","detected_country_code":"ES","detected_state":"ES-B","detected_city":"Barcelona","declared_state":null,"document_state":null,"jurisdictions":[],"retention_months":null,"reason":null,"decline_reason":null,"face_data_deleted_at":null}}'), $result->toArray()); self::assertSame('11111111-2222-3333-4444-555555555555', $result->sessionId); }