From d98e733497398700c6c061b6377cec15e24a0184 Mon Sep 17 00:00:00 2001 From: Serhat Tunca Date: Thu, 27 Aug 2026 16:10:11 +0300 Subject: [PATCH] Add support for global fraud rules --- .../java/io/craftgate/model/FraudRuleScope.java | 7 +++++++ .../craftgate/request/SearchFraudRuleRequest.java | 2 ++ .../io/craftgate/response/FraudRuleResponse.java | 1 + .../java/io/craftgate/response/dto/FraudCheck.java | 1 + src/test/java/io/craftgate/sample/FraudSample.java | 14 ++++++++++++++ 5 files changed, 25 insertions(+) create mode 100644 src/main/java/io/craftgate/model/FraudRuleScope.java diff --git a/src/main/java/io/craftgate/model/FraudRuleScope.java b/src/main/java/io/craftgate/model/FraudRuleScope.java new file mode 100644 index 00000000..d7dc6794 --- /dev/null +++ b/src/main/java/io/craftgate/model/FraudRuleScope.java @@ -0,0 +1,7 @@ +package io.craftgate.model; + +public enum FraudRuleScope { + + MERCHANT, + GLOBAL +} diff --git a/src/main/java/io/craftgate/request/SearchFraudRuleRequest.java b/src/main/java/io/craftgate/request/SearchFraudRuleRequest.java index 3f0babcd..38c859ee 100644 --- a/src/main/java/io/craftgate/request/SearchFraudRuleRequest.java +++ b/src/main/java/io/craftgate/request/SearchFraudRuleRequest.java @@ -2,6 +2,7 @@ import io.craftgate.model.FraudAction; import io.craftgate.model.FraudOperation; +import io.craftgate.model.FraudRuleScope; import lombok.Data; import java.time.LocalDateTime; @@ -19,6 +20,7 @@ public class SearchFraudRuleRequest extends BaseRequest { private String name; private FraudAction action; private FraudOperation operation; + private FraudRuleScope scope; private LocalDateTime minCreatedDate; private LocalDateTime maxCreatedDate; diff --git a/src/main/java/io/craftgate/response/FraudRuleResponse.java b/src/main/java/io/craftgate/response/FraudRuleResponse.java index 8c9f4318..88c44dd8 100644 --- a/src/main/java/io/craftgate/response/FraudRuleResponse.java +++ b/src/main/java/io/craftgate/response/FraudRuleResponse.java @@ -15,4 +15,5 @@ public class FraudRuleResponse { private FraudAction action; private String conditions; private List operations; + private Boolean isGlobal; } diff --git a/src/main/java/io/craftgate/response/dto/FraudCheck.java b/src/main/java/io/craftgate/response/dto/FraudCheck.java index e5fb8049..89010ccc 100644 --- a/src/main/java/io/craftgate/response/dto/FraudCheck.java +++ b/src/main/java/io/craftgate/response/dto/FraudCheck.java @@ -17,6 +17,7 @@ public class FraudCheck { private Long ruleId; private String ruleName; private String ruleConditions; + private Boolean isGlobalRule; private Long paymentId; private PaymentStatus paymentStatus; } diff --git a/src/test/java/io/craftgate/sample/FraudSample.java b/src/test/java/io/craftgate/sample/FraudSample.java index a8734823..38c46f95 100644 --- a/src/test/java/io/craftgate/sample/FraudSample.java +++ b/src/test/java/io/craftgate/sample/FraudSample.java @@ -4,6 +4,7 @@ import io.craftgate.model.FraudAction; import io.craftgate.model.FraudCheckStatus; import io.craftgate.model.FraudOperation; +import io.craftgate.model.FraudRuleScope; import io.craftgate.model.FraudValueType; import io.craftgate.request.AddCardFingerprintFraudValueListRequest; import io.craftgate.request.DeleteValueListRequest; @@ -15,6 +16,7 @@ import io.craftgate.response.FraudAllValueListsResponse; import io.craftgate.response.FraudCheckListResponse; import io.craftgate.response.FraudRuleListResponse; +import io.craftgate.response.FraudRuleResponse; import io.craftgate.response.FraudValueListResponse; import org.junit.jupiter.api.Test; @@ -23,6 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; public class FraudSample { @@ -138,4 +141,15 @@ void search_fraud_rules() { assertFalse(response.getItems().isEmpty()); } + @Test + void search_global_fraud_rules() { + SearchFraudRuleRequest request = SearchFraudRuleRequest.builder() + .scope(FraudRuleScope.GLOBAL) + .build(); + FraudRuleListResponse response = craftgate.fraud().searchRules(request); + + assertFalse(response.getItems().isEmpty()); + assertTrue(response.getItems().stream().allMatch(FraudRuleResponse::getIsGlobal)); + } + }