Skip to content

Commit 3e8e162

Browse files
Merge pull request #1265 from Adyen/automation/release
Release v14.4.0
2 parents 80fe8f9 + 096d5d8 commit 3e8e162

24 files changed

+1279
-26
lines changed

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ openapi-generator-url:=https://repo1.maven.org/maven2/org/openapitools/openapi-g
44
openapi-generator-jar:=build/openapi-generator-cli.jar
55
openapi-generator-cli:=java -jar $(openapi-generator-jar)
66

7-
services:=acsWebhooks balanceControl balancePlatform binLookup checkout configurationWebhooks dataProtection legalEntityManagement management managementWebhooks payment payout recurring reportWebhooks storedValue terminalManagement transfers transferWebhooks
7+
services:=acsWebhooks balanceControl balancePlatform binLookup checkout configurationWebhooks dataProtection disputes legalEntityManagement management managementWebhooks payment payout recurring reportWebhooks storedValue terminalManagement transfers transferWebhooks
88

99
# Generate models (for each service)
1010
models: $(services)
@@ -14,6 +14,7 @@ balancePlatform: spec=BalancePlatformService-v2
1414
binLookup: spec=BinLookupService-v54
1515
checkout: spec=CheckoutService-v70
1616
dataProtection: spec=DataProtectionService-v1
17+
disputes: spec=DisputeService-v30
1718
storedValue: spec=StoredValueService-v46
1819
terminalManagement: spec=TfmAPIService-v1
1920
payment: spec=PaymentService-v68
@@ -50,7 +51,7 @@ $(services): build/spec $(openapi-generator-jar)
5051

5152
# Service + Models automation
5253
services:=balancePlatform checkout management legalEntityManagement payout transfers
53-
singleFileServices:=balanceControl dataProtection payment recurring binLookup storedValue terminalManagement
54+
singleFileServices:=balanceControl dataProtection payment recurring binLookup storedValue terminalManagement disputes
5455

5556
services: $(services) $(singleFileServices)
5657

README.md

Lines changed: 24 additions & 23 deletions
Large diffs are not rendered by default.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@adyen/api-library",
3-
"version": "14.3.0",
3+
"version": "14.4.0",
44
"description": "The Adyen API Library for NodeJS enables you to work with Adyen APIs.",
55
"main": "lib/src/index.js",
66
"types": "lib/src/index.d.ts",

src/__tests__/disputes.spec.ts

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
import nock from "nock";
2+
import { createClient } from "../__mocks__/base";
3+
import {DisputesAPI} from "../services";
4+
import Client from "../client";
5+
import { AcceptDisputeRequest } from "../typings/disputes/acceptDisputeRequest";
6+
import { AcceptDisputeResponse } from "../typings/disputes/acceptDisputeResponse";
7+
import { DefendDisputeRequest } from "../typings/disputes/defendDisputeRequest";
8+
import { DefendDisputeResponse } from "../typings/disputes/defendDisputeResponse";
9+
import { DeleteDefenseDocumentRequest } from "../typings/disputes/deleteDefenseDocumentRequest";
10+
import { DeleteDefenseDocumentResponse } from "../typings/disputes/deleteDefenseDocumentResponse";
11+
import { DefenseReasonsRequest } from "../typings/disputes/defenseReasonsRequest";
12+
import { DefenseReasonsResponse } from "../typings/disputes/defenseReasonsResponse";
13+
import { SupplyDefenseDocumentRequest } from "../typings/disputes/supplyDefenseDocumentRequest";
14+
import { SupplyDefenseDocumentResponse } from "../typings/disputes/supplyDefenseDocumentResponse";
15+
16+
let client: Client,
17+
disputesService: DisputesAPI,
18+
scope: nock.Scope;
19+
20+
beforeEach((): void => {
21+
if (!nock.isActive()) {
22+
nock.activate();
23+
}
24+
client = createClient();
25+
disputesService = new DisputesAPI(client);
26+
scope = nock("https://ca-test.adyen.com/ca/services/DisputeService/v30");
27+
});
28+
29+
afterEach(() => {
30+
nock.cleanAll();
31+
});
32+
33+
describe("Disputes", (): void => {
34+
test("Should Accept Dispute", async (): Promise<void> => {
35+
const expected = {
36+
"disputeServiceResult": {
37+
"success": true
38+
}
39+
};
40+
const request: AcceptDisputeRequest = new AcceptDisputeRequest;
41+
42+
scope.post("/acceptDispute")
43+
.reply(200, expected);
44+
45+
const response: AcceptDisputeResponse = await disputesService.acceptDispute(request);
46+
expect(response.disputeServiceResult.success).toEqual(true);
47+
});
48+
49+
test("Should Defend Dispute", async (): Promise<void> => {
50+
const expected = {
51+
"disputeServiceResult": {
52+
"success": true
53+
}
54+
};
55+
const request: DefendDisputeRequest = new DefendDisputeRequest;
56+
57+
scope.post("/defendDispute")
58+
.reply(200, expected);
59+
60+
const response: DefendDisputeResponse = await disputesService.defendDispute(request);
61+
expect(response.disputeServiceResult.success).toEqual(true);
62+
});
63+
64+
test("Should delete Dispute defense document", async (): Promise<void> => {
65+
const expected = {
66+
"disputeServiceResult": {
67+
"success": true
68+
}
69+
};
70+
const request: DeleteDefenseDocumentRequest = new DeleteDefenseDocumentRequest;
71+
72+
scope.post("/deleteDisputeDefenseDocument")
73+
.reply(200, expected);
74+
75+
const response: DeleteDefenseDocumentResponse = await disputesService.deleteDisputeDefenseDocument(request);
76+
expect(response.disputeServiceResult.success).toEqual(true);
77+
});
78+
79+
test("Should download Dispute defense document", async (): Promise<void> => {
80+
const expected = {
81+
"disputeServiceResult": {
82+
"success": true
83+
}
84+
};
85+
const request: DeleteDefenseDocumentRequest = new DeleteDefenseDocumentRequest;
86+
87+
scope.post("/deleteDisputeDefenseDocument")
88+
.reply(200, expected);
89+
90+
const response: DeleteDefenseDocumentResponse = await disputesService.deleteDisputeDefenseDocument(request);
91+
expect(response.disputeServiceResult.success).toEqual(true);
92+
});
93+
94+
test("Should retrieve defense reasons", async (): Promise<void> => {
95+
const expected = {
96+
"defenseReasons": [
97+
{
98+
"defenseDocumentTypes": [
99+
{
100+
"available": false,
101+
"defenseDocumentTypeCode": "TIDorInvoice",
102+
"requirementLevel": "Optional"
103+
},
104+
{
105+
"available": false,
106+
"defenseDocumentTypeCode": "GoodsNotReturned",
107+
"requirementLevel": "Required"
108+
}
109+
],
110+
"defenseReasonCode": "GoodsNotReturned",
111+
"satisfied": false
112+
},
113+
{
114+
"defenseDocumentTypes": [
115+
{
116+
"available": false,
117+
"defenseDocumentTypeCode": "TIDorInvoice",
118+
"requirementLevel": "Optional"
119+
},
120+
{
121+
"available": false,
122+
"defenseDocumentTypeCode": "GoodsRepairedOrReplaced",
123+
"requirementLevel": "Required"
124+
}
125+
],
126+
"defenseReasonCode": "GoodsRepairedOrReplaced",
127+
"satisfied": false
128+
},
129+
{
130+
"defenseDocumentTypes": [
131+
{
132+
"available": false,
133+
"defenseDocumentTypeCode": "GoodsWereAsDescribed",
134+
"requirementLevel": "Required"
135+
},
136+
{
137+
"available": false,
138+
"defenseDocumentTypeCode": "TIDorInvoice",
139+
"requirementLevel": "Required"
140+
}
141+
],
142+
"defenseReasonCode": "GoodsWereAsDescribed",
143+
"satisfied": false
144+
},
145+
{
146+
"defenseDocumentTypes": [
147+
{
148+
"available": false,
149+
"defenseDocumentTypeCode": "TIDorInvoice",
150+
"requirementLevel": "Optional"
151+
},
152+
{
153+
"available": false,
154+
"defenseDocumentTypeCode": "DefenseMaterial",
155+
"requirementLevel": "Required"
156+
}
157+
],
158+
"defenseReasonCode": "SupplyDefenseMaterial",
159+
"satisfied": false
160+
}
161+
],
162+
"disputeServiceResult": {
163+
"success": true
164+
}
165+
};
166+
const request: DefenseReasonsRequest = new DefenseReasonsRequest;
167+
168+
scope.post("/retrieveApplicableDefenseReasons")
169+
.reply(200, expected);
170+
171+
const response: DefenseReasonsResponse = await disputesService.retrieveApplicableDefenseReasons(request);
172+
expect(response.disputeServiceResult.success).toEqual(true);
173+
expect(response.defenseReasons?.length).toEqual(4);
174+
});
175+
176+
test("Should supply Dispute defense document", async (): Promise<void> => {
177+
const expected = {
178+
"disputeServiceResult": {
179+
"success": true
180+
}
181+
};
182+
const request: SupplyDefenseDocumentRequest = new SupplyDefenseDocumentRequest;
183+
184+
scope.post("/supplyDefenseDocument")
185+
.reply(200, expected);
186+
187+
const response: SupplyDefenseDocumentResponse = await disputesService.supplyDefenseDocument(request);
188+
expect(response.disputeServiceResult.success).toEqual(true);
189+
});
190+
})

src/services/disputesApi.ts

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
/*
2+
* The version of the OpenAPI document: v30
3+
*
4+
*
5+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
6+
* https://openapi-generator.tech
7+
* Do not edit this class manually.
8+
*/
9+
10+
import Client from "../client";
11+
import getJsonResponse from "../helpers/getJsonResponse";
12+
import Service from "../service";
13+
import { AcceptDisputeRequest } from "../typings/disputes/models";
14+
import { AcceptDisputeResponse } from "../typings/disputes/models";
15+
import { DefendDisputeRequest } from "../typings/disputes/models";
16+
import { DefendDisputeResponse } from "../typings/disputes/models";
17+
import { DefenseReasonsRequest } from "../typings/disputes/models";
18+
import { DefenseReasonsResponse } from "../typings/disputes/models";
19+
import { DeleteDefenseDocumentRequest } from "../typings/disputes/models";
20+
import { DeleteDefenseDocumentResponse } from "../typings/disputes/models";
21+
import { DownloadDefenseDocumentRequest } from "../typings/disputes/models";
22+
import { DownloadDefenseDocumentResponse } from "../typings/disputes/models";
23+
import { SupplyDefenseDocumentRequest } from "../typings/disputes/models";
24+
import { SupplyDefenseDocumentResponse } from "../typings/disputes/models";
25+
import { IRequest } from "../typings/requestOptions";
26+
import Resource from "./resource";
27+
import { ObjectSerializer } from "../typings/disputes/models";
28+
29+
export class DisputesAPI extends Service {
30+
31+
private readonly API_BASEPATH: string = "https://ca-test.adyen.com/ca/services/DisputeService/v30";
32+
private baseUrl: string;
33+
34+
public constructor(client: Client) {
35+
super(client);
36+
this.baseUrl = this.createBaseUrl(this.API_BASEPATH);
37+
}
38+
39+
/**
40+
* @summary Accept a dispute
41+
* @param acceptDisputeRequest {@link AcceptDisputeRequest }
42+
* @param requestOptions {@link IRequest.Options}
43+
* @return {@link AcceptDisputeResponse }
44+
*/
45+
public async acceptDispute(acceptDisputeRequest: AcceptDisputeRequest, requestOptions?: IRequest.Options): Promise<AcceptDisputeResponse> {
46+
const endpoint = `${this.baseUrl}/acceptDispute`;
47+
const resource = new Resource(this, endpoint);
48+
const request: AcceptDisputeRequest = ObjectSerializer.serialize(acceptDisputeRequest, "AcceptDisputeRequest");
49+
const response = await getJsonResponse<AcceptDisputeRequest, AcceptDisputeResponse>(
50+
resource,
51+
request,
52+
{ ...requestOptions, method: "POST" }
53+
);
54+
return ObjectSerializer.deserialize(response, "AcceptDisputeResponse");
55+
}
56+
57+
/**
58+
* @summary Defend a dispute
59+
* @param defendDisputeRequest {@link DefendDisputeRequest }
60+
* @param requestOptions {@link IRequest.Options}
61+
* @return {@link DefendDisputeResponse }
62+
*/
63+
public async defendDispute(defendDisputeRequest: DefendDisputeRequest, requestOptions?: IRequest.Options): Promise<DefendDisputeResponse> {
64+
const endpoint = `${this.baseUrl}/defendDispute`;
65+
const resource = new Resource(this, endpoint);
66+
const request: DefendDisputeRequest = ObjectSerializer.serialize(defendDisputeRequest, "DefendDisputeRequest");
67+
const response = await getJsonResponse<DefendDisputeRequest, DefendDisputeResponse>(
68+
resource,
69+
request,
70+
{ ...requestOptions, method: "POST" }
71+
);
72+
return ObjectSerializer.deserialize(response, "DefendDisputeResponse");
73+
}
74+
75+
/**
76+
* @summary Delete a defense document
77+
* @param deleteDefenseDocumentRequest {@link DeleteDefenseDocumentRequest }
78+
* @param requestOptions {@link IRequest.Options}
79+
* @return {@link DeleteDefenseDocumentResponse }
80+
*/
81+
public async deleteDisputeDefenseDocument(deleteDefenseDocumentRequest: DeleteDefenseDocumentRequest, requestOptions?: IRequest.Options): Promise<DeleteDefenseDocumentResponse> {
82+
const endpoint = `${this.baseUrl}/deleteDisputeDefenseDocument`;
83+
const resource = new Resource(this, endpoint);
84+
const request: DeleteDefenseDocumentRequest = ObjectSerializer.serialize(deleteDefenseDocumentRequest, "DeleteDefenseDocumentRequest");
85+
const response = await getJsonResponse<DeleteDefenseDocumentRequest, DeleteDefenseDocumentResponse>(
86+
resource,
87+
request,
88+
{ ...requestOptions, method: "POST" }
89+
);
90+
return ObjectSerializer.deserialize(response, "DeleteDefenseDocumentResponse");
91+
}
92+
93+
/**
94+
* @summary Download a defense document
95+
* @param downloadDefenseDocumentRequest {@link DownloadDefenseDocumentRequest }
96+
* @param requestOptions {@link IRequest.Options}
97+
* @return {@link DownloadDefenseDocumentResponse }
98+
*/
99+
public async downloadDisputeDefenseDocument(downloadDefenseDocumentRequest: DownloadDefenseDocumentRequest, requestOptions?: IRequest.Options): Promise<DownloadDefenseDocumentResponse> {
100+
const endpoint = `${this.baseUrl}/downloadDisputeDefenseDocument`;
101+
const resource = new Resource(this, endpoint);
102+
const request: DownloadDefenseDocumentRequest = ObjectSerializer.serialize(downloadDefenseDocumentRequest, "DownloadDefenseDocumentRequest");
103+
const response = await getJsonResponse<DownloadDefenseDocumentRequest, DownloadDefenseDocumentResponse>(
104+
resource,
105+
request,
106+
{ ...requestOptions, method: "POST" }
107+
);
108+
return ObjectSerializer.deserialize(response, "DownloadDefenseDocumentResponse");
109+
}
110+
111+
/**
112+
* @summary Get applicable defense reasons
113+
* @param defenseReasonsRequest {@link DefenseReasonsRequest }
114+
* @param requestOptions {@link IRequest.Options}
115+
* @return {@link DefenseReasonsResponse }
116+
*/
117+
public async retrieveApplicableDefenseReasons(defenseReasonsRequest: DefenseReasonsRequest, requestOptions?: IRequest.Options): Promise<DefenseReasonsResponse> {
118+
const endpoint = `${this.baseUrl}/retrieveApplicableDefenseReasons`;
119+
const resource = new Resource(this, endpoint);
120+
const request: DefenseReasonsRequest = ObjectSerializer.serialize(defenseReasonsRequest, "DefenseReasonsRequest");
121+
const response = await getJsonResponse<DefenseReasonsRequest, DefenseReasonsResponse>(
122+
resource,
123+
request,
124+
{ ...requestOptions, method: "POST" }
125+
);
126+
return ObjectSerializer.deserialize(response, "DefenseReasonsResponse");
127+
}
128+
129+
/**
130+
* @summary Supply a defense document
131+
* @param supplyDefenseDocumentRequest {@link SupplyDefenseDocumentRequest }
132+
* @param requestOptions {@link IRequest.Options}
133+
* @return {@link SupplyDefenseDocumentResponse }
134+
*/
135+
public async supplyDefenseDocument(supplyDefenseDocumentRequest: SupplyDefenseDocumentRequest, requestOptions?: IRequest.Options): Promise<SupplyDefenseDocumentResponse> {
136+
const endpoint = `${this.baseUrl}/supplyDefenseDocument`;
137+
const resource = new Resource(this, endpoint);
138+
const request: SupplyDefenseDocumentRequest = ObjectSerializer.serialize(supplyDefenseDocumentRequest, "SupplyDefenseDocumentRequest");
139+
const response = await getJsonResponse<SupplyDefenseDocumentRequest, SupplyDefenseDocumentResponse>(
140+
resource,
141+
request,
142+
{ ...requestOptions, method: "POST" }
143+
);
144+
return ObjectSerializer.deserialize(response, "SupplyDefenseDocumentResponse");
145+
}
146+
}
147+
148+
export default DisputesAPI;

src/services/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ export { default as TransfersAPI } from "./transfers";
1414
export { default as BalancePlatformAPI } from "./balancePlatform";
1515
export { default as DataProtectionAPI } from "./dataProtectionApi";
1616
export { default as BalanceControlAPI } from "./balanceControlApi";
17+
export { default as DisputesAPI } from "./disputesApi";

0 commit comments

Comments
 (0)