payment-skill 1.1.0 → 1.1.1
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/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +97 -2
- package/dist/server/server.js.map +1 -1
- package/package.json +1 -1
- package/src/server/server.ts +112 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,GAAE,MAAa;IAO/B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,GAAE,MAAa;IAO/B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,WAAW;IAkMnB,KAAK,IAAI,IAAI;CAMd"}
|
package/dist/server/server.js
CHANGED
|
@@ -77,13 +77,108 @@ class PaymentSkillServer {
|
|
|
77
77
|
config_1.configManager.deactivateEmergencyStop();
|
|
78
78
|
res.json({ success: true, message: 'Emergency stop deactivated' });
|
|
79
79
|
});
|
|
80
|
-
// Get limits
|
|
80
|
+
// Get all limits and controls
|
|
81
81
|
this.app.get('/api/limits', (req, res) => {
|
|
82
82
|
res.json({
|
|
83
83
|
limits: config_1.configManager.getLimits(),
|
|
84
|
-
timeWindow: config_1.configManager.getTimeWindow()
|
|
84
|
+
timeWindow: config_1.configManager.getTimeWindow(),
|
|
85
|
+
cumulativeBudgets: config_1.configManager.getCumulativeBudgets(),
|
|
86
|
+
domainControls: config_1.configManager.getDomainControls(),
|
|
87
|
+
geographyControls: config_1.configManager.getGeographyControls(),
|
|
88
|
+
categoryControls: config_1.configManager.getCategoryControls()
|
|
85
89
|
});
|
|
86
90
|
});
|
|
91
|
+
// Update basic limits
|
|
92
|
+
this.app.post('/api/limits', (req, res) => {
|
|
93
|
+
const { perTransaction, daily, weekly, monthly, maxTransactionsPerHour } = req.body;
|
|
94
|
+
config_1.configManager.setLimits({ perTransaction, daily, weekly, monthly, maxTransactionsPerHour });
|
|
95
|
+
res.json({ success: true, message: 'Limits updated' });
|
|
96
|
+
});
|
|
97
|
+
// Cumulative Budgets
|
|
98
|
+
this.app.get('/api/limits/budgets', (req, res) => {
|
|
99
|
+
res.json(config_1.configManager.getCumulativeBudgets());
|
|
100
|
+
});
|
|
101
|
+
this.app.post('/api/limits/budgets', (req, res) => {
|
|
102
|
+
config_1.configManager.addCumulativeBudget(req.body);
|
|
103
|
+
res.json({ success: true, message: 'Budget added' });
|
|
104
|
+
});
|
|
105
|
+
this.app.delete('/api/limits/budgets/:index', (req, res) => {
|
|
106
|
+
config_1.configManager.removeCumulativeBudget(parseInt(req.params.index));
|
|
107
|
+
res.json({ success: true, message: 'Budget removed' });
|
|
108
|
+
});
|
|
109
|
+
// Domain Controls
|
|
110
|
+
this.app.get('/api/limits/domains', (req, res) => {
|
|
111
|
+
res.json(config_1.configManager.getDomainControls());
|
|
112
|
+
});
|
|
113
|
+
this.app.post('/api/limits/domains', (req, res) => {
|
|
114
|
+
const { mode, domain } = req.body;
|
|
115
|
+
if (mode) {
|
|
116
|
+
const controls = config_1.configManager.getDomainControls();
|
|
117
|
+
controls.mode = mode;
|
|
118
|
+
config_1.configManager.setDomainControls(controls);
|
|
119
|
+
}
|
|
120
|
+
if (domain) {
|
|
121
|
+
config_1.configManager.addDomain(domain);
|
|
122
|
+
}
|
|
123
|
+
res.json({ success: true, message: 'Domain controls updated' });
|
|
124
|
+
});
|
|
125
|
+
this.app.delete('/api/limits/domains/:domain', (req, res) => {
|
|
126
|
+
config_1.configManager.removeDomain(req.params.domain);
|
|
127
|
+
res.json({ success: true, message: 'Domain removed' });
|
|
128
|
+
});
|
|
129
|
+
// Time Window
|
|
130
|
+
this.app.get('/api/limits/time-window', (req, res) => {
|
|
131
|
+
res.json(config_1.configManager.getTimeWindow());
|
|
132
|
+
});
|
|
133
|
+
this.app.post('/api/limits/time-window', (req, res) => {
|
|
134
|
+
config_1.configManager.setTimeWindow(req.body);
|
|
135
|
+
res.json({ success: true, message: 'Time window updated' });
|
|
136
|
+
});
|
|
137
|
+
// Geography Controls
|
|
138
|
+
this.app.get('/api/limits/geo', (req, res) => {
|
|
139
|
+
res.json(config_1.configManager.getGeographyControls());
|
|
140
|
+
});
|
|
141
|
+
this.app.post('/api/limits/geo', (req, res) => {
|
|
142
|
+
const { enabled, mode, country } = req.body;
|
|
143
|
+
const controls = config_1.configManager.getGeographyControls();
|
|
144
|
+
if (enabled !== undefined)
|
|
145
|
+
controls.enabled = enabled;
|
|
146
|
+
if (mode)
|
|
147
|
+
controls.mode = mode;
|
|
148
|
+
if (country) {
|
|
149
|
+
if (!controls.countries.includes(country)) {
|
|
150
|
+
controls.countries.push(country);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
config_1.configManager.setGeographyControls(controls);
|
|
154
|
+
res.json({ success: true, message: 'Geography controls updated' });
|
|
155
|
+
});
|
|
156
|
+
this.app.delete('/api/limits/geo/:country', (req, res) => {
|
|
157
|
+
const controls = config_1.configManager.getGeographyControls();
|
|
158
|
+
controls.countries = controls.countries.filter((c) => c !== req.params.country);
|
|
159
|
+
config_1.configManager.setGeographyControls(controls);
|
|
160
|
+
res.json({ success: true, message: 'Country removed' });
|
|
161
|
+
});
|
|
162
|
+
// Category Controls
|
|
163
|
+
this.app.get('/api/limits/categories', (req, res) => {
|
|
164
|
+
res.json(config_1.configManager.getCategoryControls());
|
|
165
|
+
});
|
|
166
|
+
this.app.post('/api/limits/categories/block', (req, res) => {
|
|
167
|
+
config_1.configManager.addBlockedCategory(req.body.category);
|
|
168
|
+
res.json({ success: true, message: 'Category blocked' });
|
|
169
|
+
});
|
|
170
|
+
this.app.post('/api/limits/categories/unblock', (req, res) => {
|
|
171
|
+
config_1.configManager.removeBlockedCategory(req.body.category);
|
|
172
|
+
res.json({ success: true, message: 'Category unblocked' });
|
|
173
|
+
});
|
|
174
|
+
this.app.post('/api/limits/categories/allow', (req, res) => {
|
|
175
|
+
config_1.configManager.addAllowedCategory(req.body.category);
|
|
176
|
+
res.json({ success: true, message: 'Category added to allowed list' });
|
|
177
|
+
});
|
|
178
|
+
this.app.post('/api/limits/categories/disallow', (req, res) => {
|
|
179
|
+
config_1.configManager.removeAllowedCategory(req.body.category);
|
|
180
|
+
res.json({ success: true, message: 'Category removed from allowed list' });
|
|
181
|
+
});
|
|
87
182
|
// Webhook endpoints
|
|
88
183
|
this.app.post('/webhooks/wise', (req, res) => {
|
|
89
184
|
console.log('Wise webhook received:', req.body);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,sDAA8B;AAC9B,gDAAwB;AACxB,oDAA4B;AAC5B,gDAAwB;AACxB,2CAA+C;AAC/C,qDAAyD;AAEzD,MAAa,kBAAkB;IAI7B,YAAY,OAAe,IAAI;QAC7B,IAAI,CAAC,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAA,gBAAM,EAAC;YAClB,qBAAqB,EAAE,KAAK,CAAC,qCAAqC;SACnE,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,WAAW;QACjB,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC;gBACP,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,OAAO;gBAChB,aAAa,EAAE,sBAAa,CAAC,qBAAqB,EAAE;aACrD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,sBAAa,CAAC,SAAS,EAAE,CAAC;YACzC,wBAAwB;YACxB,MAAM,UAAU,GAAG;gBACjB,GAAG,MAAM;gBACT,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAgB,EAAE,EAAE;oBACpF,GAAG,CAAC,GAAG,CAAC,GAAG;wBACT,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,wBAAwB;wBACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;qBACvC,CAAC;oBACF,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,EAAS,CAAC;aACd,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC7C,MAAM,YAAY,GAAG,gCAAkB,CAAC,eAAe,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1C,GAAG,CAAC,IAAI,CAAC,sBAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAChD,sBAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,gCAAkB,CAAC,gBAAgB,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClD,sBAAa,CAAC,uBAAuB,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC;gBACP,MAAM,EAAE,sBAAa,CAAC,SAAS,EAAE;gBACjC,UAAU,EAAE,sBAAa,CAAC,aAAa,EAAE;gBACzC,iBAAiB,EAAE,sBAAa,CAAC,oBAAoB,EAAE;gBACvD,cAAc,EAAE,sBAAa,CAAC,iBAAiB,EAAE;gBACjD,iBAAiB,EAAE,sBAAa,CAAC,oBAAoB,EAAE;gBACvD,gBAAgB,EAAE,sBAAa,CAAC,mBAAmB,EAAE;aACtD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACxC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACpF,sBAAa,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAC5F,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC/C,GAAG,CAAC,IAAI,CAAC,sBAAa,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAChD,sBAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACzD,sBAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC/C,GAAG,CAAC,IAAI,CAAC,sBAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAChD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAClC,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,QAAQ,GAAG,sBAAa,CAAC,iBAAiB,EAAE,CAAC;gBACnD,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,sBAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACX,sBAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1D,sBAAa,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,cAAc;QACd,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnD,GAAG,CAAC,IAAI,CAAC,sBAAa,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACpD,sBAAa,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3C,GAAG,CAAC,IAAI,CAAC,sBAAa,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAC5C,MAAM,QAAQ,GAAG,sBAAa,CAAC,oBAAoB,EAAE,CAAC;YACtD,IAAI,OAAO,KAAK,SAAS;gBAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YACtD,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAC/B,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,sBAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvD,MAAM,QAAQ,GAAG,sBAAa,CAAC,oBAAoB,EAAE,CAAC;YACtD,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxF,sBAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClD,GAAG,CAAC,IAAI,CAAC,sBAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACzD,sBAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3D,sBAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACzD,sBAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5D,sBAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,kBAAkB;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,kBAAkB;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC7B,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACtC,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,oDAAoD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA5ND,gDA4NC;AAED,+BAA+B;AAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
package/src/server/server.ts
CHANGED
|
@@ -84,14 +84,124 @@ export class PaymentSkillServer {
|
|
|
84
84
|
res.json({ success: true, message: 'Emergency stop deactivated' });
|
|
85
85
|
});
|
|
86
86
|
|
|
87
|
-
// Get limits
|
|
87
|
+
// Get all limits and controls
|
|
88
88
|
this.app.get('/api/limits', (req, res) => {
|
|
89
89
|
res.json({
|
|
90
90
|
limits: configManager.getLimits(),
|
|
91
|
-
timeWindow: configManager.getTimeWindow()
|
|
91
|
+
timeWindow: configManager.getTimeWindow(),
|
|
92
|
+
cumulativeBudgets: configManager.getCumulativeBudgets(),
|
|
93
|
+
domainControls: configManager.getDomainControls(),
|
|
94
|
+
geographyControls: configManager.getGeographyControls(),
|
|
95
|
+
categoryControls: configManager.getCategoryControls()
|
|
92
96
|
});
|
|
93
97
|
});
|
|
94
98
|
|
|
99
|
+
// Update basic limits
|
|
100
|
+
this.app.post('/api/limits', (req, res) => {
|
|
101
|
+
const { perTransaction, daily, weekly, monthly, maxTransactionsPerHour } = req.body;
|
|
102
|
+
configManager.setLimits({ perTransaction, daily, weekly, monthly, maxTransactionsPerHour });
|
|
103
|
+
res.json({ success: true, message: 'Limits updated' });
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Cumulative Budgets
|
|
107
|
+
this.app.get('/api/limits/budgets', (req, res) => {
|
|
108
|
+
res.json(configManager.getCumulativeBudgets());
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
this.app.post('/api/limits/budgets', (req, res) => {
|
|
112
|
+
configManager.addCumulativeBudget(req.body);
|
|
113
|
+
res.json({ success: true, message: 'Budget added' });
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
this.app.delete('/api/limits/budgets/:index', (req, res) => {
|
|
117
|
+
configManager.removeCumulativeBudget(parseInt(req.params.index));
|
|
118
|
+
res.json({ success: true, message: 'Budget removed' });
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Domain Controls
|
|
122
|
+
this.app.get('/api/limits/domains', (req, res) => {
|
|
123
|
+
res.json(configManager.getDomainControls());
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
this.app.post('/api/limits/domains', (req, res) => {
|
|
127
|
+
const { mode, domain } = req.body;
|
|
128
|
+
if (mode) {
|
|
129
|
+
const controls = configManager.getDomainControls();
|
|
130
|
+
controls.mode = mode;
|
|
131
|
+
configManager.setDomainControls(controls);
|
|
132
|
+
}
|
|
133
|
+
if (domain) {
|
|
134
|
+
configManager.addDomain(domain);
|
|
135
|
+
}
|
|
136
|
+
res.json({ success: true, message: 'Domain controls updated' });
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
this.app.delete('/api/limits/domains/:domain', (req, res) => {
|
|
140
|
+
configManager.removeDomain(req.params.domain);
|
|
141
|
+
res.json({ success: true, message: 'Domain removed' });
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Time Window
|
|
145
|
+
this.app.get('/api/limits/time-window', (req, res) => {
|
|
146
|
+
res.json(configManager.getTimeWindow());
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
this.app.post('/api/limits/time-window', (req, res) => {
|
|
150
|
+
configManager.setTimeWindow(req.body);
|
|
151
|
+
res.json({ success: true, message: 'Time window updated' });
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
// Geography Controls
|
|
155
|
+
this.app.get('/api/limits/geo', (req, res) => {
|
|
156
|
+
res.json(configManager.getGeographyControls());
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
this.app.post('/api/limits/geo', (req, res) => {
|
|
160
|
+
const { enabled, mode, country } = req.body;
|
|
161
|
+
const controls = configManager.getGeographyControls();
|
|
162
|
+
if (enabled !== undefined) controls.enabled = enabled;
|
|
163
|
+
if (mode) controls.mode = mode;
|
|
164
|
+
if (country) {
|
|
165
|
+
if (!controls.countries.includes(country)) {
|
|
166
|
+
controls.countries.push(country);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
configManager.setGeographyControls(controls);
|
|
170
|
+
res.json({ success: true, message: 'Geography controls updated' });
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
this.app.delete('/api/limits/geo/:country', (req, res) => {
|
|
174
|
+
const controls = configManager.getGeographyControls();
|
|
175
|
+
controls.countries = controls.countries.filter((c: string) => c !== req.params.country);
|
|
176
|
+
configManager.setGeographyControls(controls);
|
|
177
|
+
res.json({ success: true, message: 'Country removed' });
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
// Category Controls
|
|
181
|
+
this.app.get('/api/limits/categories', (req, res) => {
|
|
182
|
+
res.json(configManager.getCategoryControls());
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
this.app.post('/api/limits/categories/block', (req, res) => {
|
|
186
|
+
configManager.addBlockedCategory(req.body.category);
|
|
187
|
+
res.json({ success: true, message: 'Category blocked' });
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
this.app.post('/api/limits/categories/unblock', (req, res) => {
|
|
191
|
+
configManager.removeBlockedCategory(req.body.category);
|
|
192
|
+
res.json({ success: true, message: 'Category unblocked' });
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
this.app.post('/api/limits/categories/allow', (req, res) => {
|
|
196
|
+
configManager.addAllowedCategory(req.body.category);
|
|
197
|
+
res.json({ success: true, message: 'Category added to allowed list' });
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
this.app.post('/api/limits/categories/disallow', (req, res) => {
|
|
201
|
+
configManager.removeAllowedCategory(req.body.category);
|
|
202
|
+
res.json({ success: true, message: 'Category removed from allowed list' });
|
|
203
|
+
});
|
|
204
|
+
|
|
95
205
|
// Webhook endpoints
|
|
96
206
|
this.app.post('/webhooks/wise', (req, res) => {
|
|
97
207
|
console.log('Wise webhook received:', req.body);
|