@pax2pay/client 0.0.45 → 0.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +2 -13
- package/Client/Card/index.ts +10 -7
- package/Client/Cards/create/factory.ts +75 -0
- package/Client/Cards/index.ts +16 -4
- package/dist/Client/Card/index.d.ts +5 -4
- package/dist/Client/Card/index.js +3 -0
- package/dist/Client/Card/index.js.map +1 -1
- package/dist/Client/Cards/index.d.ts +7 -3
- package/dist/Client/Cards/index.js +8 -1
- package/dist/Client/Cards/index.js.map +1 -1
- package/dist/model/AccountResponse.d.ts +1 -1
- package/dist/model/CardFundingAccountResponse.d.ts +14 -3
- package/dist/model/CardResponse.d.ts +3 -2
- package/dist/model/CardResponseV2.d.ts +3 -2
- package/dist/model/CardTypeResponse.d.ts +2 -1
- package/dist/model/CardUsage.d.ts +1 -0
- package/dist/model/CardUsage.js +2 -0
- package/dist/model/CardUsage.js.map +1 -0
- package/dist/model/CreateCardRequest.d.ts +1 -0
- package/dist/model/FundingAccountSearchResponse.d.ts +16 -0
- package/dist/model/FundingAccountSearchResponse.js +2 -0
- package/dist/model/FundingAccountSearchResponse.js.map +1 -0
- package/dist/model/index.d.ts +2 -1
- package/dist/model/index.js.map +1 -1
- package/model/AccountResponse.ts +1 -1
- package/model/CardFundingAccountResponse.ts +14 -3
- package/model/CardResponse.ts +3 -2
- package/model/CardResponseV2.ts +3 -2
- package/model/CardTypeResponse.ts +2 -1
- package/model/CardUsage.ts +1 -0
- package/model/CreateCardRequest.ts +1 -0
- package/model/FundingAccountSearchResponse.ts +17 -0
- package/model/Sorting.ts +1 -1
- package/model/index.ts +2 -0
- package/package.json +14 -15
package/.eslintrc
CHANGED
|
@@ -3,23 +3,14 @@
|
|
|
3
3
|
"parser": "@typescript-eslint/parser",
|
|
4
4
|
"plugins": [
|
|
5
5
|
"@typescript-eslint",
|
|
6
|
-
"prettierx",
|
|
7
6
|
"simple-import-sort"
|
|
8
7
|
],
|
|
9
8
|
"extends": [
|
|
10
9
|
"eslint:recommended",
|
|
11
10
|
"plugin:@typescript-eslint/eslint-recommended",
|
|
12
|
-
"plugin:@typescript-eslint/recommended"
|
|
13
|
-
"plugin:prettierx/default",
|
|
14
|
-
"plugin:prettierx/@typescript-eslint"
|
|
11
|
+
"plugin:@typescript-eslint/recommended"
|
|
15
12
|
],
|
|
16
13
|
"rules": {
|
|
17
|
-
"prettierx/options": [
|
|
18
|
-
1,
|
|
19
|
-
{
|
|
20
|
-
"singleQuote": false
|
|
21
|
-
}
|
|
22
|
-
],
|
|
23
14
|
"@typescript-eslint/no-explicit-any": "off",
|
|
24
15
|
"@typescript-eslint/no-namespace": "off",
|
|
25
16
|
"prefer-const": 1,
|
|
@@ -71,8 +62,6 @@
|
|
|
71
62
|
]
|
|
72
63
|
},
|
|
73
64
|
"settings": {
|
|
74
|
-
|
|
75
|
-
"usePrettierrc": true
|
|
76
|
-
}
|
|
65
|
+
|
|
77
66
|
}
|
|
78
67
|
}
|
package/Client/Card/index.ts
CHANGED
|
@@ -2,26 +2,29 @@ import * as model from "../../model"
|
|
|
2
2
|
import { Connection } from "../Connection"
|
|
3
3
|
import { Resource } from "../Resource"
|
|
4
4
|
|
|
5
|
-
export class Card extends Resource<model.
|
|
6
|
-
constructor(connection: Connection, folder: string, backend: model.
|
|
5
|
+
export class Card extends Resource<model.CardResponse, model.CreateCardRequest> {
|
|
6
|
+
constructor(connection: Connection, folder: string, backend: model.CardResponse) {
|
|
7
7
|
super(connection, folder, backend)
|
|
8
8
|
}
|
|
9
9
|
amend(request: model.AmendCardRequest) {
|
|
10
|
-
return this.connection.post<model.
|
|
10
|
+
return this.connection.post<model.CardResponse>(`${this.folder}/amend`, request)
|
|
11
11
|
}
|
|
12
12
|
freeze() {
|
|
13
|
-
return this.connection.get<model.
|
|
13
|
+
return this.connection.get<model.CardResponse>(`${this.folder}/freeze`)
|
|
14
14
|
}
|
|
15
15
|
thaw() {
|
|
16
|
-
this.connection.get<model.
|
|
16
|
+
this.connection.get<model.CardResponse>(`${this.folder}/thaw`)
|
|
17
17
|
}
|
|
18
18
|
cancel() {
|
|
19
|
-
this.connection.get<model.
|
|
19
|
+
this.connection.get<model.CardResponse>(`${this.folder}/cancel`)
|
|
20
20
|
}
|
|
21
21
|
process() {
|
|
22
|
-
this.connection.get<model.
|
|
22
|
+
this.connection.get<model.CardResponse>(`${this.folder}/statements/processed`)
|
|
23
23
|
}
|
|
24
24
|
getTransactions() {
|
|
25
25
|
return this.connection.get<model.TransactionResponse>(`${this.folder}/transactions`)
|
|
26
26
|
}
|
|
27
|
+
getBackend() {
|
|
28
|
+
return this.backend
|
|
29
|
+
}
|
|
27
30
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { mathExact } from "math-exact"
|
|
2
|
+
import * as model from "../../../model"
|
|
3
|
+
|
|
4
|
+
export function factory(card: Partial<model.CreateCardRequest>): [model.CreateCardRequest, model.CardResponseV2, model.CardResponse] {
|
|
5
|
+
const result: model.CreateCardRequest = {
|
|
6
|
+
cardType: {
|
|
7
|
+
cardTypeId: "VISA_DEBIT_CORPORATE",
|
|
8
|
+
},
|
|
9
|
+
providerAccountId: "AAAAAAA",
|
|
10
|
+
providerCode: "modulr",
|
|
11
|
+
balance: 1,
|
|
12
|
+
currency: "EUR",
|
|
13
|
+
friendlyName: "test card",
|
|
14
|
+
...card,
|
|
15
|
+
}
|
|
16
|
+
return [
|
|
17
|
+
result,
|
|
18
|
+
{
|
|
19
|
+
cardType: result.cardType.cardTypeId,
|
|
20
|
+
cardNumber: expect.stringMatching(/\d{16}/),
|
|
21
|
+
cvv: expect.stringMatching(/\d{3}/),
|
|
22
|
+
expiryDate: expect.stringMatching(/\d{4}-\d{2}/),
|
|
23
|
+
nameOnCard: expect.any(String),
|
|
24
|
+
balance: result.providerCode == "modulr" ? mathExact("Add", result.balance, 1) : result.balance,
|
|
25
|
+
issueDate: new Date().toISOString().slice(0,10),
|
|
26
|
+
providerCardId: expect.any(String),
|
|
27
|
+
providerCode: result.providerCode,
|
|
28
|
+
usage: result.providerCode == "modulr" ? "SINGLE_USE_ALLOW_TEST_AUTH" : "SINGLE_USE",
|
|
29
|
+
createdBy: process.env.username,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
cardType: result.cardType.cardTypeId,
|
|
33
|
+
cardNumber: expect.stringMatching(/\d{16}/),
|
|
34
|
+
cvv: expect.stringMatching(/\d{3}/),
|
|
35
|
+
expiryDate: expect.stringMatching(/\d{4}-\d{2}/),
|
|
36
|
+
nameOnCard: expect.any(String),
|
|
37
|
+
balance: result.providerCode == "modulr" ? mathExact("Add", result.balance, 2) : result.balance,
|
|
38
|
+
issueDate: new Date().toISOString().slice(0,10),
|
|
39
|
+
providerCardId: expect.any(String),
|
|
40
|
+
providerCode: result.providerCode,
|
|
41
|
+
usage: result.providerCode == "modulr" ? "SINGLE_USE_ALLOW_TEST_AUTH" : "SINGLE_USE",
|
|
42
|
+
createdBy: expect.any(String),
|
|
43
|
+
remainingBalance: result.providerCode == "modulr" ? mathExact("Add", result.balance, 2) : result.balance,
|
|
44
|
+
cardForm: "GENERATABLE",
|
|
45
|
+
state: "ACTIVE",
|
|
46
|
+
cardAccount: {
|
|
47
|
+
id: expect.any(Number),
|
|
48
|
+
providerAccountId: expect.any(String),
|
|
49
|
+
provider: expect.objectContaining({ id: expect.any(Number), code: result.providerCode, name: expect.any(String), status: 'ACTIVE' }),
|
|
50
|
+
organisation: { code: expect.any(String), name: expect.any(String), status: 'ACTIVE' },
|
|
51
|
+
currency: result.currency,
|
|
52
|
+
state: 'ACTIVE',
|
|
53
|
+
friendlyName: expect.any(String),
|
|
54
|
+
balance: result.providerCode == "modulr" ? mathExact("Add", result.balance, 2) : result.balance,
|
|
55
|
+
accountType: 'CARD',
|
|
56
|
+
updatedOn: expect.stringMatching(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+/),
|
|
57
|
+
createdOn: expect.stringMatching(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+/),
|
|
58
|
+
},
|
|
59
|
+
fundingAccount: {
|
|
60
|
+
id: expect.any(Number),
|
|
61
|
+
providerAccountId: expect.any(String),
|
|
62
|
+
provider: { id: expect.any(Number), code: result.providerCode, name: expect.any(String), status: 'ACTIVE' },
|
|
63
|
+
organisation: { code: expect.any(String), name: expect.any(String), status: 'ACTIVE' },
|
|
64
|
+
currency: result.currency,
|
|
65
|
+
state: 'ACTIVE',
|
|
66
|
+
friendlyName: expect.any(String),
|
|
67
|
+
balance: expect.any(Number),
|
|
68
|
+
accountType: 'FUNDING',
|
|
69
|
+
updatedOn: expect.stringMatching(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+/),
|
|
70
|
+
},
|
|
71
|
+
creatingSystem: expect.any(String),
|
|
72
|
+
|
|
73
|
+
},
|
|
74
|
+
]
|
|
75
|
+
}
|
package/Client/Cards/index.ts
CHANGED
|
@@ -3,12 +3,17 @@ import { Card } from "../Card"
|
|
|
3
3
|
import { Connection } from "../Connection"
|
|
4
4
|
import { List } from "../List"
|
|
5
5
|
|
|
6
|
-
export class Cards extends List<
|
|
6
|
+
export class Cards extends List<
|
|
7
|
+
model.CardResponseV2 | model.CardResponse,
|
|
8
|
+
model.CardSearch,
|
|
9
|
+
model.CreateCardRequest,
|
|
10
|
+
Card
|
|
11
|
+
> {
|
|
7
12
|
protected folder = "cards"
|
|
8
13
|
constructor(connection: Connection) {
|
|
9
14
|
super(connection)
|
|
10
15
|
}
|
|
11
|
-
protected getResourcePath(resource: model.CardResponseV2): string {
|
|
16
|
+
protected getResourcePath(resource: model.CardResponseV2 | model.CardResponse): string {
|
|
12
17
|
return [this.folder, resource.providerCode, resource.providerCardId].join("/")
|
|
13
18
|
}
|
|
14
19
|
protected createResource(response: model.CardResponseV2): Card {
|
|
@@ -17,16 +22,23 @@ export class Cards extends List<model.CardResponseV2, model.CardSearch, model.Cr
|
|
|
17
22
|
protected map(response: model.CardResponseV2): Card & model.CardResponseV2 {
|
|
18
23
|
return Object.assign(new Card(this.connection, this.getResourcePath(response), response), response)
|
|
19
24
|
}
|
|
25
|
+
protected mapLegacy(response: model.CardResponse): Card & model.CardResponse {
|
|
26
|
+
return Object.assign(new Card(this.connection, this.getResourcePath(response), response), response)
|
|
27
|
+
}
|
|
20
28
|
async create(request: model.CreateCardRequest) {
|
|
21
29
|
const result = await this.connection.post<model.CardResponseV2>("v2/cards/virtual", request)
|
|
22
30
|
return model.ErrorResponse.is(result) ? result : this.map(result)
|
|
23
31
|
}
|
|
32
|
+
async createLegacy(request: model.CreateCardRequest) {
|
|
33
|
+
const result = await this.connection.post<model.CardResponseV2>("cards/virtual", request)
|
|
34
|
+
return model.ErrorResponse.is(result) ? result : this.map(result)
|
|
35
|
+
}
|
|
24
36
|
static create(connection: Connection): Cards {
|
|
25
37
|
return new Cards(connection)
|
|
26
38
|
}
|
|
27
39
|
async getCard(providerCardId: string, providerCode: model.ProviderCode) {
|
|
28
|
-
const result = await this.connection.get<model.
|
|
29
|
-
return model.ErrorResponse.is(result) ? result : this.
|
|
40
|
+
const result = await this.connection.get<model.CardResponse>(`cards/virtual/${providerCode}/${providerCardId}`)
|
|
41
|
+
return model.ErrorResponse.is(result) ? result : this.mapLegacy(result)
|
|
30
42
|
}
|
|
31
43
|
async getCardTypes(providerCode: model.ProviderCode) {
|
|
32
44
|
const result = await this.connection.get<model.CardTypeResponse[]>(`v2/cards/types/${providerCode}`)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as model from "../../model";
|
|
2
2
|
import { Connection } from "../Connection";
|
|
3
3
|
import { Resource } from "../Resource";
|
|
4
|
-
export declare class Card extends Resource<model.
|
|
5
|
-
constructor(connection: Connection, folder: string, backend: model.
|
|
6
|
-
amend(request: model.AmendCardRequest): Promise<model.
|
|
4
|
+
export declare class Card extends Resource<model.CardResponse, model.CreateCardRequest> {
|
|
5
|
+
constructor(connection: Connection, folder: string, backend: model.CardResponse);
|
|
6
|
+
amend(request: model.AmendCardRequest): Promise<model.CardResponse | (model.ErrorResponse & {
|
|
7
7
|
status: 400 | 404 | 500 | 403 | 503;
|
|
8
8
|
})>;
|
|
9
|
-
freeze(): Promise<model.
|
|
9
|
+
freeze(): Promise<model.CardResponse | (model.ErrorResponse & {
|
|
10
10
|
status: 400 | 404 | 500 | 403 | 503;
|
|
11
11
|
})>;
|
|
12
12
|
thaw(): void;
|
|
@@ -15,4 +15,5 @@ export declare class Card extends Resource<model.CardResponseV2, model.CreateCar
|
|
|
15
15
|
getTransactions(): Promise<model.TransactionResponse | (model.ErrorResponse & {
|
|
16
16
|
status: 400 | 404 | 500 | 403 | 503;
|
|
17
17
|
})>;
|
|
18
|
+
getBackend(): model.CardResponse;
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Client/Card/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,OAAO,IAAK,SAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Client/Card/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,OAAO,IAAK,SAAQ,QAAqD;IAC9E,YAAY,UAAsB,EAAE,MAAc,EAAE,OAA2B;QAC9E,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;IACD,KAAK,CAAC,OAA+B;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAqB,GAAG,IAAI,CAAC,MAAM,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjF,CAAC;IACD,MAAM;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAqB,GAAG,IAAI,CAAC,MAAM,SAAS,CAAC,CAAA;IACxE,CAAC;IACD,IAAI;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAqB,GAAG,IAAI,CAAC,MAAM,OAAO,CAAC,CAAA;IAC/D,CAAC;IACD,MAAM;QACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAqB,GAAG,IAAI,CAAC,MAAM,SAAS,CAAC,CAAA;IACjE,CAAC;IACD,OAAO;QACN,IAAI,CAAC,UAAU,CAAC,GAAG,CAAqB,GAAG,IAAI,CAAC,MAAM,uBAAuB,CAAC,CAAA;IAC/E,CAAC;IACD,eAAe;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA4B,GAAG,IAAI,CAAC,MAAM,eAAe,CAAC,CAAA;IACrF,CAAC;IACD,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;CACD"}
|
|
@@ -2,19 +2,23 @@ import * as model from "../../model";
|
|
|
2
2
|
import { Card } from "../Card";
|
|
3
3
|
import { Connection } from "../Connection";
|
|
4
4
|
import { List } from "../List";
|
|
5
|
-
export declare class Cards extends List<model.CardResponseV2, model.CardSearch, model.CreateCardRequest, Card> {
|
|
5
|
+
export declare class Cards extends List<model.CardResponseV2 | model.CardResponse, model.CardSearch, model.CreateCardRequest, Card> {
|
|
6
6
|
protected folder: string;
|
|
7
7
|
constructor(connection: Connection);
|
|
8
|
-
protected getResourcePath(resource: model.CardResponseV2): string;
|
|
8
|
+
protected getResourcePath(resource: model.CardResponseV2 | model.CardResponse): string;
|
|
9
9
|
protected createResource(response: model.CardResponseV2): Card;
|
|
10
10
|
protected map(response: model.CardResponseV2): Card & model.CardResponseV2;
|
|
11
|
+
protected mapLegacy(response: model.CardResponse): Card & model.CardResponse;
|
|
11
12
|
create(request: model.CreateCardRequest): Promise<(model.ErrorResponse & {
|
|
12
13
|
status: 400 | 404 | 500 | 403 | 503;
|
|
13
14
|
}) | (Card & model.CardResponseV2)>;
|
|
15
|
+
createLegacy(request: model.CreateCardRequest): Promise<(model.ErrorResponse & {
|
|
16
|
+
status: 400 | 404 | 500 | 403 | 503;
|
|
17
|
+
}) | (Card & model.CardResponseV2)>;
|
|
14
18
|
static create(connection: Connection): Cards;
|
|
15
19
|
getCard(providerCardId: string, providerCode: model.ProviderCode): Promise<(model.ErrorResponse & {
|
|
16
20
|
status: 400 | 404 | 500 | 403 | 503;
|
|
17
|
-
}) | (Card & model.
|
|
21
|
+
}) | (Card & model.CardResponse)>;
|
|
18
22
|
getCardTypes(providerCode: model.ProviderCode): Promise<(model.ErrorResponse & {
|
|
19
23
|
status: 400 | 404 | 500 | 403 | 503;
|
|
20
24
|
}) | model.CardTypeResponse[]>;
|
|
@@ -15,16 +15,23 @@ export class Cards extends List {
|
|
|
15
15
|
map(response) {
|
|
16
16
|
return Object.assign(new Card(this.connection, this.getResourcePath(response), response), response);
|
|
17
17
|
}
|
|
18
|
+
mapLegacy(response) {
|
|
19
|
+
return Object.assign(new Card(this.connection, this.getResourcePath(response), response), response);
|
|
20
|
+
}
|
|
18
21
|
async create(request) {
|
|
19
22
|
const result = await this.connection.post("v2/cards/virtual", request);
|
|
20
23
|
return model.ErrorResponse.is(result) ? result : this.map(result);
|
|
21
24
|
}
|
|
25
|
+
async createLegacy(request) {
|
|
26
|
+
const result = await this.connection.post("cards/virtual", request);
|
|
27
|
+
return model.ErrorResponse.is(result) ? result : this.map(result);
|
|
28
|
+
}
|
|
22
29
|
static create(connection) {
|
|
23
30
|
return new Cards(connection);
|
|
24
31
|
}
|
|
25
32
|
async getCard(providerCardId, providerCode) {
|
|
26
33
|
const result = await this.connection.get(`cards/virtual/${providerCode}/${providerCardId}`);
|
|
27
|
-
return model.ErrorResponse.is(result) ? result : this.
|
|
34
|
+
return model.ErrorResponse.is(result) ? result : this.mapLegacy(result);
|
|
28
35
|
}
|
|
29
36
|
async getCardTypes(providerCode) {
|
|
30
37
|
const result = await this.connection.get(`v2/cards/types/${providerCode}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Client/Cards/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,MAAM,OAAO,KAAM,SAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Client/Cards/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
import * as isoly from "isoly";
|
|
2
|
+
import { ProviderResponse } from ".";
|
|
3
|
+
import { OrganisationResponse } from "./OrganisationResponse";
|
|
1
4
|
export interface CardFundingAccountResponse {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
id: number;
|
|
6
|
+
providerAccountId: string;
|
|
7
|
+
provider: ProviderResponse;
|
|
8
|
+
organisation: OrganisationResponse;
|
|
9
|
+
currency: isoly.Currency;
|
|
10
|
+
state: "ACTIVE" | "INACTIVE" | "CLOSED" | "DELETED" | "EXPIRED" | "PENDING" | "APPROVED" | "DECLINED" | "GENERATED";
|
|
11
|
+
friendlyName: string;
|
|
12
|
+
balance: number;
|
|
13
|
+
accountType: "FUNDING" | "CARD";
|
|
14
|
+
updatedOn: isoly.Date;
|
|
15
|
+
createdOn: isoly.Date;
|
|
5
16
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AccountResponse } from "./AccountResponse";
|
|
2
2
|
import { BookingInfo } from "./BookingInfo";
|
|
3
3
|
import { CardTypeSpecification } from "./CardTypeSpecification";
|
|
4
|
+
import { CardUsage } from "./CardUsage";
|
|
4
5
|
import { ProviderCode } from "./ProviderCode";
|
|
5
6
|
export interface CardResponse {
|
|
6
|
-
cardType?: CardTypeSpecification;
|
|
7
|
+
cardType?: CardTypeSpecification | string;
|
|
7
8
|
useAs?: string;
|
|
8
9
|
nameOnCard?: string;
|
|
9
10
|
cardNumber?: string;
|
|
@@ -16,7 +17,7 @@ export interface CardResponse {
|
|
|
16
17
|
balance?: number;
|
|
17
18
|
remainingBalance?: number;
|
|
18
19
|
notes?: string;
|
|
19
|
-
usage?:
|
|
20
|
+
usage?: CardUsage;
|
|
20
21
|
state?: "ACTIVE" | "INACTIVE" | "CLOSED" | "DELETED" | "EXPIRED" | "PENDING" | "APPROVED" | "DECLINED" | "GENERATED";
|
|
21
22
|
providerCode?: ProviderCode;
|
|
22
23
|
providerCardId?: string;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CardFundingAccountResponse } from "./CardFundingAccountResponse";
|
|
2
2
|
import { CardTypeSpecification } from "./CardTypeSpecification";
|
|
3
|
+
import { CardUsage } from "./CardUsage";
|
|
3
4
|
import { ProviderCode } from "./ProviderCode";
|
|
4
5
|
export interface CardResponseV2 {
|
|
5
|
-
cardType?: CardTypeSpecification;
|
|
6
|
+
cardType?: CardTypeSpecification | string;
|
|
6
7
|
cardNumber?: string;
|
|
7
8
|
cvv?: string;
|
|
8
9
|
expiryDate?: any;
|
|
@@ -11,7 +12,7 @@ export interface CardResponseV2 {
|
|
|
11
12
|
issueDate?: string;
|
|
12
13
|
providerCode?: ProviderCode;
|
|
13
14
|
providerCardId?: string;
|
|
14
|
-
usage?:
|
|
15
|
+
usage?: CardUsage;
|
|
15
16
|
fundingAccount?: CardFundingAccountResponse;
|
|
16
17
|
createdBy?: string;
|
|
17
18
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type CardUsage = "SINGLE_USE" | "MULTIPLE_USE" | "SINGLE_USE_ALLOW_TEST_AUTH";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardUsage.js","sourceRoot":"../","sources":["model/CardUsage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as isoly from "isoly";
|
|
2
|
+
import { ProviderResponse } from ".";
|
|
3
|
+
import { OrganisationResponse } from "./OrganisationResponse";
|
|
4
|
+
export interface FundingAccountSearchResponse {
|
|
5
|
+
id: number;
|
|
6
|
+
providerAccountId: string;
|
|
7
|
+
provider: ProviderResponse;
|
|
8
|
+
organisation: OrganisationResponse;
|
|
9
|
+
currency: isoly.Currency;
|
|
10
|
+
state: "ACTIVE" | "INACTIVE" | "CLOSED" | "DELETED" | "EXPIRED" | "PENDING" | "APPROVED" | "DECLINED" | "GENERATED";
|
|
11
|
+
friendlyName: string;
|
|
12
|
+
balance: number;
|
|
13
|
+
accountType: "FUNDING" | "CARD";
|
|
14
|
+
updatedOn: isoly.Date;
|
|
15
|
+
createdOn: isoly.Date;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FundingAccountSearchResponse.js","sourceRoot":"../","sources":["model/FundingAccountSearchResponse.ts"],"names":[],"mappings":""}
|
package/dist/model/index.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ import { FiveFieldsBookingInfoRequest } from "./FiveFieldsBookingInfoRequest";
|
|
|
36
36
|
import { FiveFieldsBookingInfoResponse } from "./FiveFieldsBookingInfoResponse";
|
|
37
37
|
import { FundingAccountInboundTransferNotificationConfig } from "./FundingAccountInboundTransferNotificationConfig";
|
|
38
38
|
import { FundingAccountSearchRequest } from "./FundingAccountSearchRequest";
|
|
39
|
+
import { FundingAccountSearchResponse } from "./FundingAccountSearchResponse";
|
|
39
40
|
import { FundingLimitRequest } from "./FundingLimitRequest";
|
|
40
41
|
import { FundingLimitResponse } from "./FundingLimitResponse";
|
|
41
42
|
import { InsertCardOptionRequest } from "./InsertCardOptionRequest";
|
|
@@ -85,4 +86,4 @@ import { UserRequest } from "./UserRequest";
|
|
|
85
86
|
import { UserResponse } from "./UserResponse";
|
|
86
87
|
import { UserRoleResponse } from "./UserRoleResponse";
|
|
87
88
|
import { UserSearchRequest } from "./UserSearchRequest";
|
|
88
|
-
export { AccountCreationRequest, AccountResponse, AccountSearchRequest, AddressInfo, AgentBookingInfo, AmendCardRequest, BeneficiaryRequest, BeneficiaryResponse, BookedProductInfo, BookingInfo, BookingInfoRequest, BookingInfoResponse, CardFundingAccountResponse, CardOptionSearch, CardResponse, CardResponseV2, CardSearch, CardTypeResponse, CardTypesConfig, CardTypeSearchRequest, CardTypeSpecification, ConfigMatchesRequest, ConfigMatchesResponse, ConfigRequest, ConfigResponse, ConfigTypesResponse, CreateCardRequest, CreateRolesetRequest, CredentialRequest, CredentialResponse, Criteria, DateRangeLocalDate, ErrorMessageDto, ErrorResponse, FiveFieldsBookingInfoRequest, FiveFieldsBookingInfoResponse, FundingAccountInboundTransferNotificationConfig, FundingAccountSearchRequest, FundingLimitRequest, FundingLimitResponse, InsertCardOptionRequest, InsertCardRequest, Issue, LoginRequest, LoginResponse, NonBeneficiaryTransferDestination, OrganisationBalanceLimitResponse, OrganisationConfig, OrganisationRequest, OrganisationResponse, PasswordChangeRequest, PasswordValidateRequest, PasswordValidateResponse, Payload, PaymentMethodOptionResponse, PaymentOption, ProcessedStatement, ProviderResponse, RelogWithNewSessionDetailsRequest, Report, RoleResponse, RolesetResponse, SearchRolesetsRequest, Sorting, SupplierBookingInfo, TransactionResponse, TransactionType, TransferDestinationInfo, TransferRequest, TransferResponse, TransferSearch, TravelPartyInfo, TwoFactorAuthenticationDetails, TwoFactorAuthenticationRegistrationResponse, UpdateAccountRequest, UpdateBeneficiaryRequest, UpdateRolesetRequest, UserChangeRequest, UserConfig, UserLimit, UserLimitsDeleteRequest, UserLimitsRequest, UserRequest, UserResponse, UserRoleResponse, UserSearchRequest, ProviderCode, };
|
|
89
|
+
export { AccountCreationRequest, AccountResponse, AccountSearchRequest, AddressInfo, AgentBookingInfo, AmendCardRequest, BeneficiaryRequest, BeneficiaryResponse, BookedProductInfo, BookingInfo, BookingInfoRequest, BookingInfoResponse, CardFundingAccountResponse, CardOptionSearch, CardResponse, CardResponseV2, CardSearch, CardTypeResponse, CardTypesConfig, CardTypeSearchRequest, CardTypeSpecification, ConfigMatchesRequest, ConfigMatchesResponse, ConfigRequest, ConfigResponse, ConfigTypesResponse, CreateCardRequest, CreateRolesetRequest, CredentialRequest, CredentialResponse, Criteria, DateRangeLocalDate, ErrorMessageDto, ErrorResponse, FiveFieldsBookingInfoRequest, FiveFieldsBookingInfoResponse, FundingAccountInboundTransferNotificationConfig, FundingAccountSearchRequest, FundingAccountSearchResponse, FundingLimitRequest, FundingLimitResponse, InsertCardOptionRequest, InsertCardRequest, Issue, LoginRequest, LoginResponse, NonBeneficiaryTransferDestination, OrganisationBalanceLimitResponse, OrganisationConfig, OrganisationRequest, OrganisationResponse, PasswordChangeRequest, PasswordValidateRequest, PasswordValidateResponse, Payload, PaymentMethodOptionResponse, PaymentOption, ProcessedStatement, ProviderResponse, RelogWithNewSessionDetailsRequest, Report, RoleResponse, RolesetResponse, SearchRolesetsRequest, Sorting, SupplierBookingInfo, TransactionResponse, TransactionType, TransferDestinationInfo, TransferRequest, TransferResponse, TransferSearch, TravelPartyInfo, TwoFactorAuthenticationDetails, TwoFactorAuthenticationRegistrationResponse, UpdateAccountRequest, UpdateBeneficiaryRequest, UpdateRolesetRequest, UserChangeRequest, UserConfig, UserLimit, UserLimitsDeleteRequest, UserLimitsRequest, UserRequest, UserResponse, UserRoleResponse, UserSearchRequest, ProviderCode, };
|
package/dist/model/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["model/index.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["model/index.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAU/C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AAGrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAmC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7C,OAAO,EAiCN,eAAe,EACf,aAAa,EAUb,KAAK,EAEL,aAAa,EAEb,gCAAgC,EAGhC,oBAAoB,EAkCpB,YAAY,GAIZ,CAAA"}
|
package/model/AccountResponse.ts
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
import * as isoly from "isoly"
|
|
2
|
+
import { ProviderResponse } from "."
|
|
3
|
+
import { OrganisationResponse } from "./OrganisationResponse"
|
|
1
4
|
/**
|
|
2
5
|
* Funding account information
|
|
3
6
|
*/
|
|
4
7
|
export interface CardFundingAccountResponse {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
id: number
|
|
9
|
+
providerAccountId: string
|
|
10
|
+
provider: ProviderResponse
|
|
11
|
+
organisation: OrganisationResponse
|
|
12
|
+
currency: isoly.Currency
|
|
13
|
+
state: "ACTIVE" | "INACTIVE" | "CLOSED" | "DELETED" | "EXPIRED" | "PENDING" | "APPROVED" | "DECLINED" | "GENERATED"
|
|
14
|
+
friendlyName: string
|
|
15
|
+
balance: number
|
|
16
|
+
accountType: "FUNDING" | "CARD"
|
|
17
|
+
updatedOn: isoly.Date
|
|
18
|
+
createdOn: isoly.Date
|
|
8
19
|
}
|
package/model/CardResponse.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AccountResponse } from "./AccountResponse"
|
|
2
2
|
import { BookingInfo } from "./BookingInfo"
|
|
3
3
|
import { CardTypeSpecification } from "./CardTypeSpecification"
|
|
4
|
+
import { CardUsage } from "./CardUsage"
|
|
4
5
|
import { ProviderCode } from "./ProviderCode"
|
|
5
6
|
|
|
6
7
|
export interface CardResponse {
|
|
7
|
-
cardType?: CardTypeSpecification
|
|
8
|
+
cardType?: CardTypeSpecification | string
|
|
8
9
|
useAs?: string
|
|
9
10
|
nameOnCard?: string
|
|
10
11
|
cardNumber?: string
|
|
@@ -17,7 +18,7 @@ export interface CardResponse {
|
|
|
17
18
|
balance?: number
|
|
18
19
|
remainingBalance?: number
|
|
19
20
|
notes?: string
|
|
20
|
-
usage?:
|
|
21
|
+
usage?: CardUsage
|
|
21
22
|
state?: "ACTIVE" | "INACTIVE" | "CLOSED" | "DELETED" | "EXPIRED" | "PENDING" | "APPROVED" | "DECLINED" | "GENERATED"
|
|
22
23
|
providerCode?: ProviderCode
|
|
23
24
|
providerCardId?: string
|
package/model/CardResponseV2.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { CardFundingAccountResponse } from "./CardFundingAccountResponse"
|
|
2
2
|
import { CardTypeSpecification } from "./CardTypeSpecification"
|
|
3
|
+
import { CardUsage } from "./CardUsage"
|
|
3
4
|
import { ProviderCode } from "./ProviderCode"
|
|
4
5
|
|
|
5
6
|
export interface CardResponseV2 {
|
|
6
|
-
cardType?: CardTypeSpecification
|
|
7
|
+
cardType?: CardTypeSpecification | string
|
|
7
8
|
cardNumber?: string
|
|
8
9
|
cvv?: string
|
|
9
10
|
expiryDate?: any
|
|
@@ -12,7 +13,7 @@ export interface CardResponseV2 {
|
|
|
12
13
|
issueDate?: string
|
|
13
14
|
providerCode?: ProviderCode
|
|
14
15
|
providerCardId?: string
|
|
15
|
-
usage?:
|
|
16
|
+
usage?: CardUsage
|
|
16
17
|
fundingAccount?: CardFundingAccountResponse
|
|
17
18
|
createdBy?: string
|
|
18
19
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type CardUsage = "SINGLE_USE" | "MULTIPLE_USE" | "SINGLE_USE_ALLOW_TEST_AUTH"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as isoly from "isoly"
|
|
2
|
+
import { ProviderResponse } from "."
|
|
3
|
+
import { OrganisationResponse } from "./OrganisationResponse"
|
|
4
|
+
|
|
5
|
+
export interface FundingAccountSearchResponse {
|
|
6
|
+
id: number
|
|
7
|
+
providerAccountId: string
|
|
8
|
+
provider: ProviderResponse
|
|
9
|
+
organisation: OrganisationResponse
|
|
10
|
+
currency: isoly.Currency
|
|
11
|
+
state: "ACTIVE" | "INACTIVE" | "CLOSED" | "DELETED" | "EXPIRED" | "PENDING" | "APPROVED" | "DECLINED" | "GENERATED"
|
|
12
|
+
friendlyName: string
|
|
13
|
+
balance: number
|
|
14
|
+
accountType: "FUNDING" | "CARD"
|
|
15
|
+
updatedOn: isoly.Date
|
|
16
|
+
createdOn: isoly.Date
|
|
17
|
+
}
|
package/model/Sorting.ts
CHANGED
package/model/index.ts
CHANGED
|
@@ -36,6 +36,7 @@ import { FiveFieldsBookingInfoRequest } from "./FiveFieldsBookingInfoRequest"
|
|
|
36
36
|
import { FiveFieldsBookingInfoResponse } from "./FiveFieldsBookingInfoResponse"
|
|
37
37
|
import { FundingAccountInboundTransferNotificationConfig } from "./FundingAccountInboundTransferNotificationConfig"
|
|
38
38
|
import { FundingAccountSearchRequest } from "./FundingAccountSearchRequest"
|
|
39
|
+
import { FundingAccountSearchResponse } from "./FundingAccountSearchResponse"
|
|
39
40
|
import { FundingLimitRequest } from "./FundingLimitRequest"
|
|
40
41
|
import { FundingLimitResponse } from "./FundingLimitResponse"
|
|
41
42
|
import { InsertCardOptionRequest } from "./InsertCardOptionRequest"
|
|
@@ -125,6 +126,7 @@ export {
|
|
|
125
126
|
FiveFieldsBookingInfoResponse,
|
|
126
127
|
FundingAccountInboundTransferNotificationConfig,
|
|
127
128
|
FundingAccountSearchRequest,
|
|
129
|
+
FundingAccountSearchResponse,
|
|
128
130
|
FundingLimitRequest,
|
|
129
131
|
FundingLimitResponse,
|
|
130
132
|
InsertCardOptionRequest,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pax2pay/client",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.46",
|
|
4
4
|
"description": "Client library for the Pax2Pay API",
|
|
5
5
|
"author": "Pax2Pay Ltd.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -55,27 +55,26 @@
|
|
|
55
55
|
"clean": "rm -rf dist node_modules coverage"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@babel/core": "^7.
|
|
58
|
+
"@babel/core": "^7.15.5",
|
|
59
59
|
"@types/isomorphic-fetch": "^0.0.35",
|
|
60
|
-
"@types/jest": "^
|
|
61
|
-
"@types/node": "^
|
|
62
|
-
"@typescript-eslint/eslint-plugin": "4.
|
|
63
|
-
"@typescript-eslint/parser": "4.
|
|
60
|
+
"@types/jest": "^27.0.2",
|
|
61
|
+
"@types/node": "^16.10.3",
|
|
62
|
+
"@typescript-eslint/eslint-plugin": "4.33.0",
|
|
63
|
+
"@typescript-eslint/parser": "4.33.0",
|
|
64
64
|
"babel-core": "^6.26.3",
|
|
65
|
-
"babel-jest": "^27.
|
|
65
|
+
"babel-jest": "^27.2.4",
|
|
66
66
|
"dotenv": "^10.0.0",
|
|
67
|
-
"eslint": "7.
|
|
68
|
-
"eslint-plugin-prettierx": "github:nilssonemma/eslint-plugin-prettierx#master",
|
|
67
|
+
"eslint": "7.32.0",
|
|
69
68
|
"eslint-plugin-simple-import-sort": "^7.0.0",
|
|
70
|
-
"jest": "^27.
|
|
69
|
+
"jest": "^27.2.4",
|
|
71
70
|
"openapi-to-ts": "^1.1.0",
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"typescript": "^4.3.4",
|
|
71
|
+
"ts-jest": "^27.0.5",
|
|
72
|
+
"typescript": "^4.4.3",
|
|
75
73
|
"watch": "^1.0.2"
|
|
76
74
|
},
|
|
77
75
|
"dependencies": {
|
|
78
|
-
"isoly": "^0.1.
|
|
79
|
-
"isomorphic-fetch": "^3.0.0"
|
|
76
|
+
"isoly": "^0.1.16",
|
|
77
|
+
"isomorphic-fetch": "^3.0.0",
|
|
78
|
+
"math-exact": "^1.0.5"
|
|
80
79
|
}
|
|
81
80
|
}
|