From 90b80da8e15bc8746fbc6573b32133e3797ad172 Mon Sep 17 00:00:00 2001 From: Gregory Oschwald Date: Fri, 9 Oct 2026 20:58:24 +0000 Subject: [PATCH 1/2] Add email verification inputs to minFraud The email object now accepts verification_time and was_verification_successful. They describe the most recent verification of the email address. Co-Authored-By: Claude Opus 5.5 --- bundled/minfraud.yaml | 10 ++++++++++ components/minfraud-request.yaml | 18 ++++++++++++++++++ examples/minfraud/request.yaml | 2 ++ 3 files changed, 30 insertions(+) diff --git a/bundled/minfraud.yaml b/bundled/minfraud.yaml index cb855af..a481f76 100644 --- a/bundled/minfraud.yaml +++ b/bundled/minfraud.yaml @@ -685,6 +685,14 @@ components: type: string maxLength: 255 description: The domain of the email address. Do not include the `@`. You do not need to send this field unless you send the email address as an MD5 hash. + verification_time: + type: string + format: date-time + pattern: ^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$ + description: The most recent date and time a verification of the email address was attempted, if known, in RFC 3339 date-time format. The time must not be before 1970-01-01T00:00:00Z or more than two days in the future. For a time outside this range, MaxMind ignores the input and returns a warning. + was_verification_successful: + type: boolean + description: Whether the most recent verification that the end user controls this email address was successful (e.g. by confirming a link sent to the email address). `true` if the email verification was successful, or `false` if the user failed email verification. Do not include this field if you have not performed this check. Event: type: object properties: @@ -1965,6 +1973,8 @@ components: email: address: 977577b140bfb7c516e4746204fbdb01 domain: maxmind.com + verification_time: '2026-10-01T14:25:00Z' + was_verification_successful: true event: party: customer shop_id: s2123 diff --git a/components/minfraud-request.yaml b/components/minfraud-request.yaml index b6c2ea7..15e201f 100644 --- a/components/minfraud-request.yaml +++ b/components/minfraud-request.yaml @@ -207,6 +207,24 @@ schemas: The domain of the email address. Do not include the `@`. You do not need to send this field unless you send the email address as an MD5 hash. + verification_time: + type: string + format: date-time + pattern: "^\\d{4}-\\d{2}-\\d{2}T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(\\.\\d+)?(Z|[+-]([01]\\d|2[0-3]):[0-5]\\d)$" + description: >- + The most recent date and time a verification of the email address was + attempted, if known, in RFC 3339 date-time format. The time must not + be before 1970-01-01T00:00:00Z or more than two days in the future. + For a time outside this range, MaxMind ignores the input and returns a + warning. + was_verification_successful: + type: boolean + description: >- + Whether the most recent verification that the end user controls this + email address was successful (e.g. by confirming a link sent to the + email address). `true` if the email verification was successful, or + `false` if the user failed email verification. Do not include this + field if you have not performed this check. Address: type: object description: A billing or shipping address. diff --git a/examples/minfraud/request.yaml b/examples/minfraud/request.yaml index 6cde525..fb11506 100644 --- a/examples/minfraud/request.yaml +++ b/examples/minfraud/request.yaml @@ -43,6 +43,8 @@ value: email: address: 977577b140bfb7c516e4746204fbdb01 domain: maxmind.com + verification_time: "2026-10-01T14:25:00Z" + was_verification_successful: true event: party: customer shop_id: s2123 From 5d23dce84b56a89f6e3f5e946027eef1135588fd Mon Sep 17 00:00:00 2001 From: Gregory Oschwald Date: Mon, 26 Oct 2026 18:49:54 +0000 Subject: [PATCH 2/2] Share the RFC 3339 date-time schema event.time, email.verification_time, and phone_verification_time each had a copy of the same pattern. They now refer to one DateTime schema and keep their own descriptions. Co-Authored-By: Claude Opus 5.5 --- bundled/minfraud.yaml | 17 ++++++++--------- components/minfraud-request.yaml | 17 ++++++++--------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/bundled/minfraud.yaml b/bundled/minfraud.yaml index a481f76..11d7b45 100644 --- a/bundled/minfraud.yaml +++ b/bundled/minfraud.yaml @@ -524,6 +524,11 @@ components: type: string pattern: ^[0-9a-fA-F]{32}$ description: An MD5 hash of the account username. + DateTime: + type: string + format: date-time + pattern: ^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$ + description: An RFC 3339 date-time. Address: type: object description: A billing or shipping address. @@ -574,9 +579,7 @@ components: - `delivered_code`: a one-time code delivered to the phone number by SMS, an automated voice call, or an over-the-top messaging channel such as WhatsApp or RCS, and entered by the user. - `other`: a method not listed above, such as flash or missed call verification, or a method you do not know because a third party performed the check. phone_verification_time: - type: string - format: date-time - pattern: ^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$ + $ref: '#/components/schemas/DateTime' description: The most recent date and time a verification of the phone number was attempted, if known, in RFC 3339 date-time format. The time must not be before 1970-01-01T00:00:00Z or more than two days in the future. For a time outside this range, MaxMind ignores the input and returns a warning. phone_was_verification_successful: type: boolean @@ -686,9 +689,7 @@ components: maxLength: 255 description: The domain of the email address. Do not include the `@`. You do not need to send this field unless you send the email address as an MD5 hash. verification_time: - type: string - format: date-time - pattern: ^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$ + $ref: '#/components/schemas/DateTime' description: The most recent date and time a verification of the email address was attempted, if known, in RFC 3339 date-time format. The time must not be before 1970-01-01T00:00:00Z or more than two days in the future. For a time outside this range, MaxMind ignores the input and returns a warning. was_verification_successful: type: boolean @@ -707,9 +708,7 @@ components: maxLength: 255 description: Your internal ID for the shop, affiliate, or merchant the order comes from. Required for a reseller, payment provider, gateway, or affiliate network. If you are testing the minFraud service, prefix your shop ID with `test`, or set it to `test`. time: - type: string - format: date-time - pattern: ^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$ + $ref: '#/components/schemas/DateTime' description: |- The time the event occurred, in RFC 3339 format. If you omit this field, MaxMind uses the time it receives the request. MaxMind does not recommend this field for live transactions. It can be useful for stored transactions that you score later. diff --git a/components/minfraud-request.yaml b/components/minfraud-request.yaml index 15e201f..45cce93 100644 --- a/components/minfraud-request.yaml +++ b/components/minfraud-request.yaml @@ -111,9 +111,7 @@ schemas: network. If you are testing the minFraud service, prefix your shop ID with `test`, or set it to `test`. time: - type: string - format: date-time - pattern: "^\\d{4}-\\d{2}-\\d{2}T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(\\.\\d+)?(Z|[+-]([01]\\d|2[0-3]):[0-5]\\d)$" + $ref: "#/schemas/DateTime" description: >- The time the event occurred, in RFC 3339 format. If you omit this field, MaxMind uses the time it receives the request. MaxMind does not @@ -208,9 +206,7 @@ schemas: need to send this field unless you send the email address as an MD5 hash. verification_time: - type: string - format: date-time - pattern: "^\\d{4}-\\d{2}-\\d{2}T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(\\.\\d+)?(Z|[+-]([01]\\d|2[0-3]):[0-5]\\d)$" + $ref: "#/schemas/DateTime" description: >- The most recent date and time a verification of the email address was attempted, if known, in RFC 3339 date-time format. The time must not @@ -287,9 +283,7 @@ schemas: verification, or a method you do not know because a third party performed the check. phone_verification_time: - type: string - format: date-time - pattern: "^\\d{4}-\\d{2}-\\d{2}T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(\\.\\d+)?(Z|[+-]([01]\\d|2[0-3]):[0-5]\\d)$" + $ref: "#/schemas/DateTime" description: >- The most recent date and time a verification of the phone number was attempted, if known, in RFC 3339 date-time format. The time must not @@ -793,3 +787,8 @@ schemas: description: >- The transaction ID you gave in the original minFraud request. It must not contain a NUL character. + DateTime: + type: string + format: date-time + pattern: "^\\d{4}-\\d{2}-\\d{2}T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(\\.\\d+)?(Z|[+-]([01]\\d|2[0-3]):[0-5]\\d)$" + description: An RFC 3339 date-time.