@sly_ai/sdk 0.1.0
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/README.md +346 -0
- package/dist/a2a.d.mts +108 -0
- package/dist/a2a.d.ts +108 -0
- package/dist/a2a.js +173 -0
- package/dist/a2a.js.map +1 -0
- package/dist/a2a.mjs +171 -0
- package/dist/a2a.mjs.map +1 -0
- package/dist/acp.d.mts +201 -0
- package/dist/acp.d.ts +201 -0
- package/dist/acp.js +143 -0
- package/dist/acp.js.map +1 -0
- package/dist/acp.mjs +141 -0
- package/dist/acp.mjs.map +1 -0
- package/dist/ap2.d.mts +188 -0
- package/dist/ap2.d.ts +188 -0
- package/dist/ap2.js +135 -0
- package/dist/ap2.js.map +1 -0
- package/dist/ap2.mjs +133 -0
- package/dist/ap2.mjs.map +1 -0
- package/dist/cards.d.mts +750 -0
- package/dist/cards.d.ts +750 -0
- package/dist/cards.js +373 -0
- package/dist/cards.js.map +1 -0
- package/dist/cards.mjs +369 -0
- package/dist/cards.mjs.map +1 -0
- package/dist/client-Cwe2CLU7.d.mts +41 -0
- package/dist/client-CyJe3uWO.d.ts +41 -0
- package/dist/index.d.mts +662 -0
- package/dist/index.d.ts +662 -0
- package/dist/index.js +2709 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2700 -0
- package/dist/index.mjs.map +1 -0
- package/dist/langchain.d.mts +11 -0
- package/dist/langchain.d.ts +11 -0
- package/dist/langchain.js +25 -0
- package/dist/langchain.js.map +1 -0
- package/dist/langchain.mjs +23 -0
- package/dist/langchain.mjs.map +1 -0
- package/dist/types-df1EICn_.d.mts +165 -0
- package/dist/types-df1EICn_.d.ts +165 -0
- package/dist/ucp.d.mts +844 -0
- package/dist/ucp.d.ts +844 -0
- package/dist/ucp.js +616 -0
- package/dist/ucp.js.map +1 -0
- package/dist/ucp.mjs +614 -0
- package/dist/ucp.mjs.map +1 -0
- package/dist/vercel.d.mts +178 -0
- package/dist/vercel.d.ts +178 -0
- package/dist/vercel.js +143 -0
- package/dist/vercel.js.map +1 -0
- package/dist/vercel.mjs +138 -0
- package/dist/vercel.mjs.map +1 -0
- package/dist/x402.d.mts +209 -0
- package/dist/x402.d.ts +209 -0
- package/dist/x402.js +476 -0
- package/dist/x402.js.map +1 -0
- package/dist/x402.mjs +471 -0
- package/dist/x402.mjs.map +1 -0
- package/package.json +118 -0
package/dist/ap2.d.mts
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { S as SlyClient } from './client-Cwe2CLU7.mjs';
|
|
2
|
+
import './types-df1EICn_.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Types for AP2 (Agent-to-Agent Protocol) - Google
|
|
6
|
+
*/
|
|
7
|
+
type MandateType = 'intent' | 'cart' | 'payment';
|
|
8
|
+
type MandateStatus = 'active' | 'completed' | 'cancelled' | 'expired';
|
|
9
|
+
interface Mandate {
|
|
10
|
+
id: string;
|
|
11
|
+
mandate_id: string;
|
|
12
|
+
mandate_type: MandateType;
|
|
13
|
+
agent_id: string;
|
|
14
|
+
agent_name?: string;
|
|
15
|
+
account_id: string;
|
|
16
|
+
authorized_amount: number;
|
|
17
|
+
used_amount: number;
|
|
18
|
+
remaining_amount: number;
|
|
19
|
+
currency: string;
|
|
20
|
+
status: MandateStatus;
|
|
21
|
+
execution_count: number;
|
|
22
|
+
expires_at?: string;
|
|
23
|
+
created_at: string;
|
|
24
|
+
updated_at?: string;
|
|
25
|
+
completed_at?: string;
|
|
26
|
+
cancelled_at?: string;
|
|
27
|
+
}
|
|
28
|
+
interface MandateWithExecutions extends Mandate {
|
|
29
|
+
mandate_data?: Record<string, any>;
|
|
30
|
+
a2a_session_id?: string;
|
|
31
|
+
metadata?: Record<string, any>;
|
|
32
|
+
executions: MandateExecution[];
|
|
33
|
+
}
|
|
34
|
+
interface MandateExecution {
|
|
35
|
+
id: string;
|
|
36
|
+
execution_index: number;
|
|
37
|
+
amount: number;
|
|
38
|
+
currency: string;
|
|
39
|
+
status: string;
|
|
40
|
+
transfer_id?: string;
|
|
41
|
+
created_at: string;
|
|
42
|
+
completed_at?: string;
|
|
43
|
+
}
|
|
44
|
+
interface CreateMandateRequest {
|
|
45
|
+
mandate_id: string;
|
|
46
|
+
mandate_type: MandateType;
|
|
47
|
+
agent_id: string;
|
|
48
|
+
agent_name?: string;
|
|
49
|
+
account_id: string;
|
|
50
|
+
authorized_amount: number;
|
|
51
|
+
currency?: string;
|
|
52
|
+
mandate_data?: Record<string, any>;
|
|
53
|
+
a2a_session_id?: string;
|
|
54
|
+
expires_at?: string;
|
|
55
|
+
metadata?: Record<string, any>;
|
|
56
|
+
}
|
|
57
|
+
interface ExecuteMandateRequest {
|
|
58
|
+
amount: number;
|
|
59
|
+
currency?: string;
|
|
60
|
+
authorization_proof?: string;
|
|
61
|
+
description?: string;
|
|
62
|
+
idempotency_key?: string;
|
|
63
|
+
order_ids?: string[];
|
|
64
|
+
}
|
|
65
|
+
interface ExecuteMandateResponse {
|
|
66
|
+
execution_id: string;
|
|
67
|
+
transfer_id: string;
|
|
68
|
+
mandate: {
|
|
69
|
+
id: string;
|
|
70
|
+
remaining_amount: number;
|
|
71
|
+
used_amount: number;
|
|
72
|
+
execution_count: number;
|
|
73
|
+
status: MandateStatus;
|
|
74
|
+
};
|
|
75
|
+
transfer: {
|
|
76
|
+
id: string;
|
|
77
|
+
amount: number;
|
|
78
|
+
currency: string;
|
|
79
|
+
status: string;
|
|
80
|
+
created_at: string;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
interface ListMandatesOptions {
|
|
84
|
+
status?: MandateStatus;
|
|
85
|
+
agent_id?: string;
|
|
86
|
+
account_id?: string;
|
|
87
|
+
page?: number;
|
|
88
|
+
limit?: number;
|
|
89
|
+
}
|
|
90
|
+
interface ListMandatesResponse {
|
|
91
|
+
data: Mandate[];
|
|
92
|
+
pagination: {
|
|
93
|
+
page: number;
|
|
94
|
+
limit: number;
|
|
95
|
+
total: number;
|
|
96
|
+
totalPages: number;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* AP2 Client - Google Agent-to-Agent Protocol
|
|
102
|
+
*
|
|
103
|
+
* Wraps PayOS AP2 API endpoints for mandate-based payments.
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
declare class AP2Client {
|
|
107
|
+
private client;
|
|
108
|
+
constructor(client: SlyClient);
|
|
109
|
+
/**
|
|
110
|
+
* Create a new AP2 mandate
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const mandate = await payos.ap2.createMandate({
|
|
115
|
+
* mandate_id: 'mdt_unique_123',
|
|
116
|
+
* mandate_type: 'payment',
|
|
117
|
+
* agent_id: 'agent_ai_assistant',
|
|
118
|
+
* account_id: 'acct_uuid',
|
|
119
|
+
* authorized_amount: 100.00,
|
|
120
|
+
* currency: 'USD',
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
createMandate(request: CreateMandateRequest): Promise<Mandate>;
|
|
125
|
+
/**
|
|
126
|
+
* List mandates with optional filtering
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const { data, pagination } = await payos.ap2.listMandates({
|
|
131
|
+
* status: 'active',
|
|
132
|
+
* agent_id: 'agent_ai_assistant',
|
|
133
|
+
* limit: 50,
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
listMandates(options?: ListMandatesOptions): Promise<ListMandatesResponse>;
|
|
138
|
+
/**
|
|
139
|
+
* Get mandate details with execution history
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const mandate = await payos.ap2.getMandate('mdt_id');
|
|
144
|
+
* console.log(mandate.remaining_amount);
|
|
145
|
+
* console.log(mandate.executions.length);
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
getMandate(mandateId: string): Promise<MandateWithExecutions>;
|
|
149
|
+
/**
|
|
150
|
+
* Execute a payment against a mandate
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const result = await payos.ap2.executeMandate('mdt_id', {
|
|
155
|
+
* amount: 25.00,
|
|
156
|
+
* currency: 'USD',
|
|
157
|
+
* description: 'Monthly subscription',
|
|
158
|
+
* });
|
|
159
|
+
*
|
|
160
|
+
* console.log(result.transfer_id);
|
|
161
|
+
* console.log(result.mandate.remaining_amount);
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
executeMandate(mandateId: string, request: ExecuteMandateRequest): Promise<ExecuteMandateResponse>;
|
|
165
|
+
/**
|
|
166
|
+
* Cancel an active mandate
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* const result = await payos.ap2.cancelMandate('mdt_id');
|
|
171
|
+
* console.log(result.status); // 'cancelled'
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
cancelMandate(mandateId: string): Promise<Mandate>;
|
|
175
|
+
/**
|
|
176
|
+
* Get AP2 analytics
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* const analytics = await payos.ap2.getAnalytics('30d');
|
|
181
|
+
* console.log(analytics.summary.totalRevenue);
|
|
182
|
+
* console.log(analytics.summary.activeMandates);
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
getAnalytics(period?: '24h' | '7d' | '30d' | '90d' | '1y'): Promise<any>;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export { AP2Client, type CreateMandateRequest, type ExecuteMandateRequest, type ExecuteMandateResponse, type ListMandatesOptions, type ListMandatesResponse, type Mandate, type MandateExecution, type MandateStatus, type MandateType, type MandateWithExecutions };
|
package/dist/ap2.d.ts
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { S as SlyClient } from './client-CyJe3uWO.js';
|
|
2
|
+
import './types-df1EICn_.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Types for AP2 (Agent-to-Agent Protocol) - Google
|
|
6
|
+
*/
|
|
7
|
+
type MandateType = 'intent' | 'cart' | 'payment';
|
|
8
|
+
type MandateStatus = 'active' | 'completed' | 'cancelled' | 'expired';
|
|
9
|
+
interface Mandate {
|
|
10
|
+
id: string;
|
|
11
|
+
mandate_id: string;
|
|
12
|
+
mandate_type: MandateType;
|
|
13
|
+
agent_id: string;
|
|
14
|
+
agent_name?: string;
|
|
15
|
+
account_id: string;
|
|
16
|
+
authorized_amount: number;
|
|
17
|
+
used_amount: number;
|
|
18
|
+
remaining_amount: number;
|
|
19
|
+
currency: string;
|
|
20
|
+
status: MandateStatus;
|
|
21
|
+
execution_count: number;
|
|
22
|
+
expires_at?: string;
|
|
23
|
+
created_at: string;
|
|
24
|
+
updated_at?: string;
|
|
25
|
+
completed_at?: string;
|
|
26
|
+
cancelled_at?: string;
|
|
27
|
+
}
|
|
28
|
+
interface MandateWithExecutions extends Mandate {
|
|
29
|
+
mandate_data?: Record<string, any>;
|
|
30
|
+
a2a_session_id?: string;
|
|
31
|
+
metadata?: Record<string, any>;
|
|
32
|
+
executions: MandateExecution[];
|
|
33
|
+
}
|
|
34
|
+
interface MandateExecution {
|
|
35
|
+
id: string;
|
|
36
|
+
execution_index: number;
|
|
37
|
+
amount: number;
|
|
38
|
+
currency: string;
|
|
39
|
+
status: string;
|
|
40
|
+
transfer_id?: string;
|
|
41
|
+
created_at: string;
|
|
42
|
+
completed_at?: string;
|
|
43
|
+
}
|
|
44
|
+
interface CreateMandateRequest {
|
|
45
|
+
mandate_id: string;
|
|
46
|
+
mandate_type: MandateType;
|
|
47
|
+
agent_id: string;
|
|
48
|
+
agent_name?: string;
|
|
49
|
+
account_id: string;
|
|
50
|
+
authorized_amount: number;
|
|
51
|
+
currency?: string;
|
|
52
|
+
mandate_data?: Record<string, any>;
|
|
53
|
+
a2a_session_id?: string;
|
|
54
|
+
expires_at?: string;
|
|
55
|
+
metadata?: Record<string, any>;
|
|
56
|
+
}
|
|
57
|
+
interface ExecuteMandateRequest {
|
|
58
|
+
amount: number;
|
|
59
|
+
currency?: string;
|
|
60
|
+
authorization_proof?: string;
|
|
61
|
+
description?: string;
|
|
62
|
+
idempotency_key?: string;
|
|
63
|
+
order_ids?: string[];
|
|
64
|
+
}
|
|
65
|
+
interface ExecuteMandateResponse {
|
|
66
|
+
execution_id: string;
|
|
67
|
+
transfer_id: string;
|
|
68
|
+
mandate: {
|
|
69
|
+
id: string;
|
|
70
|
+
remaining_amount: number;
|
|
71
|
+
used_amount: number;
|
|
72
|
+
execution_count: number;
|
|
73
|
+
status: MandateStatus;
|
|
74
|
+
};
|
|
75
|
+
transfer: {
|
|
76
|
+
id: string;
|
|
77
|
+
amount: number;
|
|
78
|
+
currency: string;
|
|
79
|
+
status: string;
|
|
80
|
+
created_at: string;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
interface ListMandatesOptions {
|
|
84
|
+
status?: MandateStatus;
|
|
85
|
+
agent_id?: string;
|
|
86
|
+
account_id?: string;
|
|
87
|
+
page?: number;
|
|
88
|
+
limit?: number;
|
|
89
|
+
}
|
|
90
|
+
interface ListMandatesResponse {
|
|
91
|
+
data: Mandate[];
|
|
92
|
+
pagination: {
|
|
93
|
+
page: number;
|
|
94
|
+
limit: number;
|
|
95
|
+
total: number;
|
|
96
|
+
totalPages: number;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* AP2 Client - Google Agent-to-Agent Protocol
|
|
102
|
+
*
|
|
103
|
+
* Wraps PayOS AP2 API endpoints for mandate-based payments.
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
declare class AP2Client {
|
|
107
|
+
private client;
|
|
108
|
+
constructor(client: SlyClient);
|
|
109
|
+
/**
|
|
110
|
+
* Create a new AP2 mandate
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const mandate = await payos.ap2.createMandate({
|
|
115
|
+
* mandate_id: 'mdt_unique_123',
|
|
116
|
+
* mandate_type: 'payment',
|
|
117
|
+
* agent_id: 'agent_ai_assistant',
|
|
118
|
+
* account_id: 'acct_uuid',
|
|
119
|
+
* authorized_amount: 100.00,
|
|
120
|
+
* currency: 'USD',
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
createMandate(request: CreateMandateRequest): Promise<Mandate>;
|
|
125
|
+
/**
|
|
126
|
+
* List mandates with optional filtering
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const { data, pagination } = await payos.ap2.listMandates({
|
|
131
|
+
* status: 'active',
|
|
132
|
+
* agent_id: 'agent_ai_assistant',
|
|
133
|
+
* limit: 50,
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
listMandates(options?: ListMandatesOptions): Promise<ListMandatesResponse>;
|
|
138
|
+
/**
|
|
139
|
+
* Get mandate details with execution history
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const mandate = await payos.ap2.getMandate('mdt_id');
|
|
144
|
+
* console.log(mandate.remaining_amount);
|
|
145
|
+
* console.log(mandate.executions.length);
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
getMandate(mandateId: string): Promise<MandateWithExecutions>;
|
|
149
|
+
/**
|
|
150
|
+
* Execute a payment against a mandate
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const result = await payos.ap2.executeMandate('mdt_id', {
|
|
155
|
+
* amount: 25.00,
|
|
156
|
+
* currency: 'USD',
|
|
157
|
+
* description: 'Monthly subscription',
|
|
158
|
+
* });
|
|
159
|
+
*
|
|
160
|
+
* console.log(result.transfer_id);
|
|
161
|
+
* console.log(result.mandate.remaining_amount);
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
executeMandate(mandateId: string, request: ExecuteMandateRequest): Promise<ExecuteMandateResponse>;
|
|
165
|
+
/**
|
|
166
|
+
* Cancel an active mandate
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* const result = await payos.ap2.cancelMandate('mdt_id');
|
|
171
|
+
* console.log(result.status); // 'cancelled'
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
cancelMandate(mandateId: string): Promise<Mandate>;
|
|
175
|
+
/**
|
|
176
|
+
* Get AP2 analytics
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* const analytics = await payos.ap2.getAnalytics('30d');
|
|
181
|
+
* console.log(analytics.summary.totalRevenue);
|
|
182
|
+
* console.log(analytics.summary.activeMandates);
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
getAnalytics(period?: '24h' | '7d' | '30d' | '90d' | '1y'): Promise<any>;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export { AP2Client, type CreateMandateRequest, type ExecuteMandateRequest, type ExecuteMandateResponse, type ListMandatesOptions, type ListMandatesResponse, type Mandate, type MandateExecution, type MandateStatus, type MandateType, type MandateWithExecutions };
|
package/dist/ap2.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/protocols/ap2/client.ts
|
|
4
|
+
var AP2Client = class {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Create a new AP2 mandate
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const mandate = await payos.ap2.createMandate({
|
|
14
|
+
* mandate_id: 'mdt_unique_123',
|
|
15
|
+
* mandate_type: 'payment',
|
|
16
|
+
* agent_id: 'agent_ai_assistant',
|
|
17
|
+
* account_id: 'acct_uuid',
|
|
18
|
+
* authorized_amount: 100.00,
|
|
19
|
+
* currency: 'USD',
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
async createMandate(request) {
|
|
24
|
+
const response = await this.client.request(
|
|
25
|
+
"/v1/ap2/mandates",
|
|
26
|
+
{
|
|
27
|
+
method: "POST",
|
|
28
|
+
body: JSON.stringify(request)
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
return response.data;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* List mandates with optional filtering
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const { data, pagination } = await payos.ap2.listMandates({
|
|
39
|
+
* status: 'active',
|
|
40
|
+
* agent_id: 'agent_ai_assistant',
|
|
41
|
+
* limit: 50,
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
async listMandates(options = {}) {
|
|
46
|
+
const params = new URLSearchParams();
|
|
47
|
+
if (options.status) params.append("status", options.status);
|
|
48
|
+
if (options.agent_id) params.append("agent_id", options.agent_id);
|
|
49
|
+
if (options.account_id) params.append("account_id", options.account_id);
|
|
50
|
+
if (options.page) params.append("page", options.page.toString());
|
|
51
|
+
if (options.limit) params.append("limit", options.limit.toString());
|
|
52
|
+
const queryString = params.toString();
|
|
53
|
+
const path = queryString ? `/v1/ap2/mandates?${queryString}` : "/v1/ap2/mandates";
|
|
54
|
+
return this.client.request(path);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get mandate details with execution history
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const mandate = await payos.ap2.getMandate('mdt_id');
|
|
62
|
+
* console.log(mandate.remaining_amount);
|
|
63
|
+
* console.log(mandate.executions.length);
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
async getMandate(mandateId) {
|
|
67
|
+
const response = await this.client.request(
|
|
68
|
+
`/v1/ap2/mandates/${mandateId}`
|
|
69
|
+
);
|
|
70
|
+
return response.data;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Execute a payment against a mandate
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const result = await payos.ap2.executeMandate('mdt_id', {
|
|
78
|
+
* amount: 25.00,
|
|
79
|
+
* currency: 'USD',
|
|
80
|
+
* description: 'Monthly subscription',
|
|
81
|
+
* });
|
|
82
|
+
*
|
|
83
|
+
* console.log(result.transfer_id);
|
|
84
|
+
* console.log(result.mandate.remaining_amount);
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
async executeMandate(mandateId, request) {
|
|
88
|
+
const response = await this.client.request(
|
|
89
|
+
`/v1/ap2/mandates/${mandateId}/execute`,
|
|
90
|
+
{
|
|
91
|
+
method: "POST",
|
|
92
|
+
body: JSON.stringify(request)
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
return response.data;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Cancel an active mandate
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* const result = await payos.ap2.cancelMandate('mdt_id');
|
|
103
|
+
* console.log(result.status); // 'cancelled'
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
async cancelMandate(mandateId) {
|
|
107
|
+
const response = await this.client.request(
|
|
108
|
+
`/v1/ap2/mandates/${mandateId}/cancel`,
|
|
109
|
+
{
|
|
110
|
+
method: "PATCH"
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
return response.data;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get AP2 analytics
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const analytics = await payos.ap2.getAnalytics('30d');
|
|
121
|
+
* console.log(analytics.summary.totalRevenue);
|
|
122
|
+
* console.log(analytics.summary.activeMandates);
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
async getAnalytics(period = "30d") {
|
|
126
|
+
const response = await this.client.request(
|
|
127
|
+
`/v1/ap2/analytics?period=${period}`
|
|
128
|
+
);
|
|
129
|
+
return response.data;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
exports.AP2Client = AP2Client;
|
|
134
|
+
//# sourceMappingURL=ap2.js.map
|
|
135
|
+
//# sourceMappingURL=ap2.js.map
|
package/dist/ap2.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/protocols/ap2/client.ts"],"names":[],"mappings":"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","file":"ap2.js","sourcesContent":["/**\n * AP2 Client - Google Agent-to-Agent Protocol\n * \n * Wraps PayOS AP2 API endpoints for mandate-based payments.\n */\n\nimport type { PayOSClient } from '../../client';\nimport type {\n Mandate,\n MandateWithExecutions,\n CreateMandateRequest,\n ExecuteMandateRequest,\n ExecuteMandateResponse,\n ListMandatesOptions,\n ListMandatesResponse,\n} from './types';\n\nexport class AP2Client {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n /**\n * Create a new AP2 mandate\n * \n * @example\n * ```typescript\n * const mandate = await payos.ap2.createMandate({\n * mandate_id: 'mdt_unique_123',\n * mandate_type: 'payment',\n * agent_id: 'agent_ai_assistant',\n * account_id: 'acct_uuid',\n * authorized_amount: 100.00,\n * currency: 'USD',\n * });\n * ```\n */\n public async createMandate(request: CreateMandateRequest): Promise<Mandate> {\n const response = await this.client.request<{ data: Mandate }>(\n '/v1/ap2/mandates',\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n return response.data;\n }\n\n /**\n * List mandates with optional filtering\n * \n * @example\n * ```typescript\n * const { data, pagination } = await payos.ap2.listMandates({\n * status: 'active',\n * agent_id: 'agent_ai_assistant',\n * limit: 50,\n * });\n * ```\n */\n public async listMandates(options: ListMandatesOptions = {}): Promise<ListMandatesResponse> {\n const params = new URLSearchParams();\n if (options.status) params.append('status', options.status);\n if (options.agent_id) params.append('agent_id', options.agent_id);\n if (options.account_id) params.append('account_id', options.account_id);\n if (options.page) params.append('page', options.page.toString());\n if (options.limit) params.append('limit', options.limit.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/ap2/mandates?${queryString}` : '/v1/ap2/mandates';\n\n return this.client.request<ListMandatesResponse>(path);\n }\n\n /**\n * Get mandate details with execution history\n * \n * @example\n * ```typescript\n * const mandate = await payos.ap2.getMandate('mdt_id');\n * console.log(mandate.remaining_amount);\n * console.log(mandate.executions.length);\n * ```\n */\n public async getMandate(mandateId: string): Promise<MandateWithExecutions> {\n const response = await this.client.request<{ data: MandateWithExecutions }>(\n `/v1/ap2/mandates/${mandateId}`\n );\n return response.data;\n }\n\n /**\n * Execute a payment against a mandate\n * \n * @example\n * ```typescript\n * const result = await payos.ap2.executeMandate('mdt_id', {\n * amount: 25.00,\n * currency: 'USD',\n * description: 'Monthly subscription',\n * });\n * \n * console.log(result.transfer_id);\n * console.log(result.mandate.remaining_amount);\n * ```\n */\n public async executeMandate(\n mandateId: string,\n request: ExecuteMandateRequest\n ): Promise<ExecuteMandateResponse> {\n const response = await this.client.request<{ data: ExecuteMandateResponse }>(\n `/v1/ap2/mandates/${mandateId}/execute`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n return response.data;\n }\n\n /**\n * Cancel an active mandate\n * \n * @example\n * ```typescript\n * const result = await payos.ap2.cancelMandate('mdt_id');\n * console.log(result.status); // 'cancelled'\n * ```\n */\n public async cancelMandate(mandateId: string): Promise<Mandate> {\n const response = await this.client.request<{ data: Mandate }>(\n `/v1/ap2/mandates/${mandateId}/cancel`,\n {\n method: 'PATCH',\n }\n );\n return response.data;\n }\n\n /**\n * Get AP2 analytics\n * \n * @example\n * ```typescript\n * const analytics = await payos.ap2.getAnalytics('30d');\n * console.log(analytics.summary.totalRevenue);\n * console.log(analytics.summary.activeMandates);\n * ```\n */\n public async getAnalytics(period: '24h' | '7d' | '30d' | '90d' | '1y' = '30d') {\n const response = await this.client.request<{ data: any }>(\n `/v1/ap2/analytics?period=${period}`\n );\n return response.data;\n }\n}\n\n"]}
|
package/dist/ap2.mjs
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// src/protocols/ap2/client.ts
|
|
2
|
+
var AP2Client = class {
|
|
3
|
+
constructor(client) {
|
|
4
|
+
this.client = client;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Create a new AP2 mandate
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const mandate = await payos.ap2.createMandate({
|
|
12
|
+
* mandate_id: 'mdt_unique_123',
|
|
13
|
+
* mandate_type: 'payment',
|
|
14
|
+
* agent_id: 'agent_ai_assistant',
|
|
15
|
+
* account_id: 'acct_uuid',
|
|
16
|
+
* authorized_amount: 100.00,
|
|
17
|
+
* currency: 'USD',
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
async createMandate(request) {
|
|
22
|
+
const response = await this.client.request(
|
|
23
|
+
"/v1/ap2/mandates",
|
|
24
|
+
{
|
|
25
|
+
method: "POST",
|
|
26
|
+
body: JSON.stringify(request)
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
return response.data;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* List mandates with optional filtering
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const { data, pagination } = await payos.ap2.listMandates({
|
|
37
|
+
* status: 'active',
|
|
38
|
+
* agent_id: 'agent_ai_assistant',
|
|
39
|
+
* limit: 50,
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
async listMandates(options = {}) {
|
|
44
|
+
const params = new URLSearchParams();
|
|
45
|
+
if (options.status) params.append("status", options.status);
|
|
46
|
+
if (options.agent_id) params.append("agent_id", options.agent_id);
|
|
47
|
+
if (options.account_id) params.append("account_id", options.account_id);
|
|
48
|
+
if (options.page) params.append("page", options.page.toString());
|
|
49
|
+
if (options.limit) params.append("limit", options.limit.toString());
|
|
50
|
+
const queryString = params.toString();
|
|
51
|
+
const path = queryString ? `/v1/ap2/mandates?${queryString}` : "/v1/ap2/mandates";
|
|
52
|
+
return this.client.request(path);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get mandate details with execution history
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const mandate = await payos.ap2.getMandate('mdt_id');
|
|
60
|
+
* console.log(mandate.remaining_amount);
|
|
61
|
+
* console.log(mandate.executions.length);
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
async getMandate(mandateId) {
|
|
65
|
+
const response = await this.client.request(
|
|
66
|
+
`/v1/ap2/mandates/${mandateId}`
|
|
67
|
+
);
|
|
68
|
+
return response.data;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Execute a payment against a mandate
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const result = await payos.ap2.executeMandate('mdt_id', {
|
|
76
|
+
* amount: 25.00,
|
|
77
|
+
* currency: 'USD',
|
|
78
|
+
* description: 'Monthly subscription',
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* console.log(result.transfer_id);
|
|
82
|
+
* console.log(result.mandate.remaining_amount);
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
async executeMandate(mandateId, request) {
|
|
86
|
+
const response = await this.client.request(
|
|
87
|
+
`/v1/ap2/mandates/${mandateId}/execute`,
|
|
88
|
+
{
|
|
89
|
+
method: "POST",
|
|
90
|
+
body: JSON.stringify(request)
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
return response.data;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Cancel an active mandate
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* const result = await payos.ap2.cancelMandate('mdt_id');
|
|
101
|
+
* console.log(result.status); // 'cancelled'
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
async cancelMandate(mandateId) {
|
|
105
|
+
const response = await this.client.request(
|
|
106
|
+
`/v1/ap2/mandates/${mandateId}/cancel`,
|
|
107
|
+
{
|
|
108
|
+
method: "PATCH"
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
return response.data;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get AP2 analytics
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const analytics = await payos.ap2.getAnalytics('30d');
|
|
119
|
+
* console.log(analytics.summary.totalRevenue);
|
|
120
|
+
* console.log(analytics.summary.activeMandates);
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
async getAnalytics(period = "30d") {
|
|
124
|
+
const response = await this.client.request(
|
|
125
|
+
`/v1/ap2/analytics?period=${period}`
|
|
126
|
+
);
|
|
127
|
+
return response.data;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export { AP2Client };
|
|
132
|
+
//# sourceMappingURL=ap2.mjs.map
|
|
133
|
+
//# sourceMappingURL=ap2.mjs.map
|
package/dist/ap2.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/protocols/ap2/client.ts"],"names":[],"mappings":"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","file":"ap2.mjs","sourcesContent":["/**\n * AP2 Client - Google Agent-to-Agent Protocol\n * \n * Wraps PayOS AP2 API endpoints for mandate-based payments.\n */\n\nimport type { PayOSClient } from '../../client';\nimport type {\n Mandate,\n MandateWithExecutions,\n CreateMandateRequest,\n ExecuteMandateRequest,\n ExecuteMandateResponse,\n ListMandatesOptions,\n ListMandatesResponse,\n} from './types';\n\nexport class AP2Client {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n /**\n * Create a new AP2 mandate\n * \n * @example\n * ```typescript\n * const mandate = await payos.ap2.createMandate({\n * mandate_id: 'mdt_unique_123',\n * mandate_type: 'payment',\n * agent_id: 'agent_ai_assistant',\n * account_id: 'acct_uuid',\n * authorized_amount: 100.00,\n * currency: 'USD',\n * });\n * ```\n */\n public async createMandate(request: CreateMandateRequest): Promise<Mandate> {\n const response = await this.client.request<{ data: Mandate }>(\n '/v1/ap2/mandates',\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n return response.data;\n }\n\n /**\n * List mandates with optional filtering\n * \n * @example\n * ```typescript\n * const { data, pagination } = await payos.ap2.listMandates({\n * status: 'active',\n * agent_id: 'agent_ai_assistant',\n * limit: 50,\n * });\n * ```\n */\n public async listMandates(options: ListMandatesOptions = {}): Promise<ListMandatesResponse> {\n const params = new URLSearchParams();\n if (options.status) params.append('status', options.status);\n if (options.agent_id) params.append('agent_id', options.agent_id);\n if (options.account_id) params.append('account_id', options.account_id);\n if (options.page) params.append('page', options.page.toString());\n if (options.limit) params.append('limit', options.limit.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/ap2/mandates?${queryString}` : '/v1/ap2/mandates';\n\n return this.client.request<ListMandatesResponse>(path);\n }\n\n /**\n * Get mandate details with execution history\n * \n * @example\n * ```typescript\n * const mandate = await payos.ap2.getMandate('mdt_id');\n * console.log(mandate.remaining_amount);\n * console.log(mandate.executions.length);\n * ```\n */\n public async getMandate(mandateId: string): Promise<MandateWithExecutions> {\n const response = await this.client.request<{ data: MandateWithExecutions }>(\n `/v1/ap2/mandates/${mandateId}`\n );\n return response.data;\n }\n\n /**\n * Execute a payment against a mandate\n * \n * @example\n * ```typescript\n * const result = await payos.ap2.executeMandate('mdt_id', {\n * amount: 25.00,\n * currency: 'USD',\n * description: 'Monthly subscription',\n * });\n * \n * console.log(result.transfer_id);\n * console.log(result.mandate.remaining_amount);\n * ```\n */\n public async executeMandate(\n mandateId: string,\n request: ExecuteMandateRequest\n ): Promise<ExecuteMandateResponse> {\n const response = await this.client.request<{ data: ExecuteMandateResponse }>(\n `/v1/ap2/mandates/${mandateId}/execute`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n return response.data;\n }\n\n /**\n * Cancel an active mandate\n * \n * @example\n * ```typescript\n * const result = await payos.ap2.cancelMandate('mdt_id');\n * console.log(result.status); // 'cancelled'\n * ```\n */\n public async cancelMandate(mandateId: string): Promise<Mandate> {\n const response = await this.client.request<{ data: Mandate }>(\n `/v1/ap2/mandates/${mandateId}/cancel`,\n {\n method: 'PATCH',\n }\n );\n return response.data;\n }\n\n /**\n * Get AP2 analytics\n * \n * @example\n * ```typescript\n * const analytics = await payos.ap2.getAnalytics('30d');\n * console.log(analytics.summary.totalRevenue);\n * console.log(analytics.summary.activeMandates);\n * ```\n */\n public async getAnalytics(period: '24h' | '7d' | '30d' | '90d' | '1y' = '30d') {\n const response = await this.client.request<{ data: any }>(\n `/v1/ap2/analytics?period=${period}`\n );\n return response.data;\n }\n}\n\n"]}
|