mcp-zenskar 1.1.0 → 1.1.2
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 +194 -41
- package/package.json +1 -1
- package/src/mcp-config.json +124 -57
package/README.md
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
# Zenskar MCP Server
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
3
|
+
MCP server for the Zenskar API. 103 tools covering customers, contracts, invoices, payments, credit notes, accounting, products, plans, quotes, and more.
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
- Customers: list, search, create, update, addresses, contacts, payment methods
|
|
8
|
+
- Contracts: create, read, update, delete, amend, add phases and pricing, expire
|
|
9
|
+
- Invoices: list, get, approve, void, generate, credit notes, download
|
|
10
|
+
- Payments: create, edit, refund, delete, auto-charge
|
|
11
|
+
- Credit notes: list, create (standalone or against invoice), get by ID
|
|
12
|
+
- Accounting: chart of accounts, journal entries and lines, balance sheet, income statement, account balances
|
|
13
|
+
- Products: CRUD, pricing configurations
|
|
14
|
+
- Plans: list, create, add products, preview estimates
|
|
15
|
+
- Quotes: create, preview, accept (converts to contract)
|
|
16
|
+
- Business entities: list, get, create, update
|
|
17
|
+
- Jobs: monitor async operations
|
|
18
|
+
- Custom attributes and tax categories
|
|
19
|
+
- Multi-tenant, supports Bearer token and API key auth
|
|
13
20
|
|
|
14
21
|
## Installation
|
|
15
22
|
|
|
@@ -51,7 +58,7 @@ npx mcp-zenskar
|
|
|
51
58
|
This MCP server requires two authentication parameters for every request:
|
|
52
59
|
|
|
53
60
|
1. **Organization ID**: Your Zenskar organization identifier
|
|
54
|
-
2. **Authorization Token**: Your API Bearer token
|
|
61
|
+
2. **Authorization Token**: Your API Bearer token or API key
|
|
55
62
|
|
|
56
63
|
### Getting Your Credentials
|
|
57
64
|
|
|
@@ -68,47 +75,193 @@ Once configured, you can ask Claude to interact with your Zenskar data:
|
|
|
68
75
|
|
|
69
76
|
```
|
|
70
77
|
"Show me my recent customers"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
Each tool requires authentication parameters:
|
|
78
|
-
|
|
79
|
-
```javascript
|
|
80
|
-
{
|
|
81
|
-
"organization": "your-org-id",
|
|
82
|
-
"authorization": "Bearer your-token",
|
|
83
|
-
// ... other tool-specific parameters
|
|
84
|
-
}
|
|
78
|
+
"Find the contract for Acme Corp and add a $500/month add-on phase"
|
|
79
|
+
"Create a $25 credit note against the latest invoice for customer X"
|
|
80
|
+
"Show me the balance sheet and income statement"
|
|
81
|
+
"List all products and their pricing configurations"
|
|
82
|
+
"Record a $1000 manual payment against invoice Y"
|
|
85
83
|
```
|
|
86
84
|
|
|
87
85
|
## Available Tools
|
|
88
86
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
87
|
+
### Customers
|
|
88
|
+
| Tool | Description |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `listCustomers` | List customers with search, filtering, and pagination |
|
|
91
|
+
| `getCustomerById` | Get a customer by ID |
|
|
92
|
+
| `createCustomer` | Create a customer with address and tax info |
|
|
93
|
+
| `updateCustomer` | Update customer details (partial update) |
|
|
94
|
+
|
|
95
|
+
### Contacts
|
|
96
|
+
| Tool | Description |
|
|
97
|
+
|---|---|
|
|
98
|
+
| `listContacts` | List contacts with pagination |
|
|
99
|
+
| `getContactById` | Get a contact by ID |
|
|
100
|
+
| `createContact` | Create a contact for a customer |
|
|
101
|
+
| `updateContact` | Update a contact's details |
|
|
102
|
+
|
|
103
|
+
### Contracts
|
|
104
|
+
| Tool | Description |
|
|
105
|
+
|---|---|
|
|
106
|
+
| `listContracts` | List contracts with filtering by status, customer, dates |
|
|
107
|
+
| `getContractById` | Get a contract with phases, pricings, and customer details |
|
|
108
|
+
| `createContract` | Create a contract with phases and pricing |
|
|
109
|
+
| `updateContract` | Update contract terms, status, pricing, or renewal policy |
|
|
110
|
+
| `deleteContract` | Delete a draft contract |
|
|
111
|
+
| `getContractAmendments` | Get amendment history for a contract |
|
|
112
|
+
| `createContractPhase` | Add a phase to a contract (add-ons, expansions) |
|
|
113
|
+
| `createContractPhasePricing` | Add pricing to a contract phase |
|
|
114
|
+
| `expireContract` | Expire an active contract |
|
|
115
|
+
| `createContractPrompt` | Create a contract prompt |
|
|
116
|
+
| `extractContractFromRaw` | Extract contract data from raw text using AI |
|
|
117
|
+
|
|
118
|
+
### Invoices
|
|
119
|
+
| Tool | Description |
|
|
120
|
+
|---|---|
|
|
121
|
+
| `listInvoices` | List invoices with filtering by customer, status, dates |
|
|
122
|
+
| `getInvoiceById` | Get an invoice by ID |
|
|
123
|
+
| `getInvoiceByExternalId` | Get an invoice by external ID |
|
|
124
|
+
| `getInvoiceGenerationStatus` | Check invoice generation status |
|
|
125
|
+
| `downloadInvoice` | Download invoice in JSON format |
|
|
126
|
+
| `getInvoiceContractJsonActuals` | Get contract actuals for an invoice |
|
|
127
|
+
| `getInvoicePayments` | Get payments for an invoice |
|
|
128
|
+
| `getInvoicePaymentsById` | Get a specific payment on an invoice |
|
|
129
|
+
| `getInvoicePaymentsWithoutRefunds` | Get invoice payments excluding refunds |
|
|
130
|
+
| `getInvoiceLineItems` | Get invoice line items and pricing details |
|
|
131
|
+
| `getInvoiceSummary` | Get invoice summary |
|
|
132
|
+
| `getAllInvoiceTags` | Get all available invoice tags |
|
|
133
|
+
| `generateInvoicePaymentLink` | Generate a payment link for an invoice |
|
|
134
|
+
| `payInvoice` | Initiate payment for an invoice |
|
|
135
|
+
| `approveInvoice` | Approve an invoice for billing |
|
|
136
|
+
| `voidInvoice` | Void an approved unpaid invoice |
|
|
137
|
+
| `generateInvoice` | Generate an invoice for a contract and date range |
|
|
138
|
+
| `createInvoiceCreditNote` | Create a credit note against an invoice |
|
|
139
|
+
| `createInvoiceCharge` | Auto-charge an invoice via payment gateway |
|
|
140
|
+
|
|
141
|
+
### Payments
|
|
142
|
+
| Tool | Description |
|
|
143
|
+
|---|---|
|
|
144
|
+
| `listAllPayments` | List all payments with filtering and sorting |
|
|
145
|
+
| `getPaymentById` | Get a payment by ID |
|
|
146
|
+
| `createPayment` | Record a payment against an invoice |
|
|
147
|
+
| `updatePayment` | Update a payment's status or details |
|
|
148
|
+
| `deleteManualPayment` | Delete a manual payment |
|
|
149
|
+
| `editManualPayment` | Edit a manual payment's amount or method |
|
|
150
|
+
| `refundPayment` | Refund a payment (full or partial) |
|
|
151
|
+
|
|
152
|
+
### Credit Notes
|
|
153
|
+
| Tool | Description |
|
|
154
|
+
|---|---|
|
|
155
|
+
| `listCreditNotes` | List credit notes with pagination |
|
|
156
|
+
| `getCreditNoteById` | Get a credit note by ID |
|
|
157
|
+
| `createCreditNote` | Create a standalone credit note |
|
|
158
|
+
|
|
159
|
+
### Products and Pricing
|
|
160
|
+
| Tool | Description |
|
|
161
|
+
|---|---|
|
|
162
|
+
| `listProducts` | List products in the catalog |
|
|
163
|
+
| `getProductById` | Get a product by ID |
|
|
164
|
+
| `createProduct` | Create a product |
|
|
165
|
+
| `updateProduct` | Update a product's details |
|
|
166
|
+
| `getProductPricings` | Get pricing configs for a product |
|
|
167
|
+
| `createProductPricing` | Create a pricing config for a product |
|
|
168
|
+
|
|
169
|
+
### Plans (Templates)
|
|
170
|
+
| Tool | Description |
|
|
171
|
+
|---|---|
|
|
172
|
+
| `listPlans` | List plan templates |
|
|
173
|
+
| `getPlanById` | Get a plan by ID with phases and pricing |
|
|
174
|
+
| `createPlan` | Create a plan template |
|
|
175
|
+
| `addProductsToPlan` | Add products to an existing plan |
|
|
176
|
+
| `previewPlanEstimate` | Preview estimated billing for a plan |
|
|
177
|
+
|
|
178
|
+
### Accounting
|
|
179
|
+
| Tool | Description |
|
|
180
|
+
|---|---|
|
|
181
|
+
| `getChartOfAccounts` | Get the full chart of accounts |
|
|
182
|
+
| `listAccounts` | List GL accounts with filtering |
|
|
183
|
+
| `createAccount` | Create a GL account |
|
|
184
|
+
| `listJournalEntries` | List journal entries with filtering |
|
|
185
|
+
| `createJournalEntry` | Create a manual journal entry |
|
|
186
|
+
| `getJournalEntry` | Get a journal entry by ID with all lines |
|
|
187
|
+
| `listJournalLines` | List journal lines across all entries |
|
|
188
|
+
| `getBalanceSheet` | Get the balance sheet report |
|
|
189
|
+
| `getIncomeStatement` | Get the income statement (P&L) |
|
|
190
|
+
| `getAccountBalance` | Get balance for a specific GL account |
|
|
191
|
+
| `recogniseRevenue` | Trigger revenue recognition up to a date |
|
|
192
|
+
|
|
193
|
+
### Quotes
|
|
194
|
+
| Tool | Description |
|
|
195
|
+
|---|---|
|
|
196
|
+
| `createQuote` | Create a quote/proposal |
|
|
197
|
+
| `previewQuoteEstimate` | Preview estimated billing for a quote |
|
|
198
|
+
| `getQuoteById` | Get a quote by ID |
|
|
199
|
+
| `acceptQuote` | Accept a quote, converting to a contract |
|
|
200
|
+
|
|
201
|
+
### Custom Attributes and Tax
|
|
202
|
+
| Tool | Description |
|
|
203
|
+
|---|---|
|
|
204
|
+
| `listCustomAttributes` | List custom attribute definitions |
|
|
205
|
+
| `createCustomAttribute` | Create a custom attribute definition |
|
|
206
|
+
| `listTaxCategories` | List tax categories |
|
|
207
|
+
| `createTaxCategory` | Create a tax category |
|
|
208
|
+
|
|
209
|
+
### Jobs
|
|
210
|
+
| Tool | Description |
|
|
211
|
+
|---|---|
|
|
212
|
+
| `listJobs` | List async jobs (invoice gen, rev rec, etc.) |
|
|
213
|
+
| `getJobById` | Get a job by ID to check status |
|
|
214
|
+
|
|
215
|
+
### Business Entities
|
|
216
|
+
| Tool | Description |
|
|
217
|
+
|---|---|
|
|
218
|
+
| `listBusinessEntities` | List business entities |
|
|
219
|
+
| `getBusinessEntityById` | Get a business entity by ID |
|
|
220
|
+
| `createBusinessEntity` | Create a business entity |
|
|
221
|
+
| `updateBusinessEntity` | Update a business entity |
|
|
222
|
+
|
|
223
|
+
### Customer Addresses and Payment Methods
|
|
224
|
+
| Tool | Description |
|
|
225
|
+
|---|---|
|
|
226
|
+
| `listCustomerAddresses` | List addresses for a customer |
|
|
227
|
+
| `createCustomerAddress` | Add an address to a customer |
|
|
228
|
+
| `updateCustomerAddress` | Update a customer address |
|
|
229
|
+
| `listPaymentMethods` | List payment methods for a customer |
|
|
230
|
+
| `attachPaymentMethod` | Attach a payment method to a customer |
|
|
231
|
+
|
|
232
|
+
### Metrics and Usage Events
|
|
233
|
+
| Tool | Description |
|
|
234
|
+
|---|---|
|
|
235
|
+
| `listAggregates` | List billable metrics with filtering |
|
|
236
|
+
| `getAggregateSchemas` | Get all billable metric schemas |
|
|
237
|
+
| `getAggregateEstimates` | Get billable metric estimates |
|
|
238
|
+
| `getAggregateById` | Get a billable metric by ID |
|
|
239
|
+
| `getAggregateLogs` | Get logs for a billable metric |
|
|
240
|
+
| `listRawMetrics` | List usage events with filtering |
|
|
241
|
+
| `createRawMetric` | Create a usage event schema |
|
|
242
|
+
| `getRawMetricById` | Get a usage event by ID |
|
|
243
|
+
| `getRawMetricLogs` | Get logs for a usage event |
|
|
244
|
+
| `getRawMetricBySlug` | Get a usage event by API slug |
|
|
245
|
+
| `ingestRawMetricEvent` | Ingest a usage event |
|
|
246
|
+
|
|
247
|
+
### Other
|
|
248
|
+
| Tool | Description |
|
|
249
|
+
|---|---|
|
|
250
|
+
| `createEntitlement` | Create an entitlement |
|
|
251
|
+
| `getCustomerPortalConfiguration` | Get customer portal config |
|
|
252
|
+
| `getCurrentDateTime` | Get current date/time in multiple formats |
|
|
99
253
|
|
|
100
254
|
## Security
|
|
101
255
|
|
|
102
|
-
- All
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
- All authentication is passed through from the client
|
|
256
|
+
- All requests require a valid organization ID and auth token
|
|
257
|
+
- No credentials are stored by the server
|
|
258
|
+
- Auth is passed through from the client
|
|
106
259
|
|
|
107
260
|
## Development
|
|
108
261
|
|
|
109
262
|
```bash
|
|
110
263
|
# Clone the repository
|
|
111
|
-
git clone https://github.com/
|
|
264
|
+
git clone https://github.com/zenskar/mcp-zenskar
|
|
112
265
|
cd mcp-zenskar
|
|
113
266
|
|
|
114
267
|
# Install dependencies
|
|
@@ -145,7 +298,7 @@ Then either point Claude to the globally-installed binary (usually `$(npm bin -g
|
|
|
145
298
|
|
|
146
299
|
## Configuration
|
|
147
300
|
|
|
148
|
-
The server uses `src/mcp-config.json` to define available tools and API endpoints. This file contains the complete mapping of MCP tools to Zenskar API operations.
|
|
301
|
+
The server uses `src/mcp-config.json` to define available tools and API endpoints. This file contains the complete mapping of MCP tools to Zenskar API operations. All tools are declarative — no code changes needed to add new tools.
|
|
149
302
|
|
|
150
303
|
## License
|
|
151
304
|
|
package/package.json
CHANGED
package/src/mcp-config.json
CHANGED
|
@@ -2445,7 +2445,13 @@
|
|
|
2445
2445
|
"required": true,
|
|
2446
2446
|
"position": "body",
|
|
2447
2447
|
"default": "draft",
|
|
2448
|
-
"enum": [
|
|
2448
|
+
"enum": [
|
|
2449
|
+
"draft",
|
|
2450
|
+
"active",
|
|
2451
|
+
"paused",
|
|
2452
|
+
"expired",
|
|
2453
|
+
"disputed"
|
|
2454
|
+
]
|
|
2449
2455
|
},
|
|
2450
2456
|
{
|
|
2451
2457
|
"name": "currency",
|
|
@@ -2490,7 +2496,11 @@
|
|
|
2490
2496
|
"required": false,
|
|
2491
2497
|
"position": "body",
|
|
2492
2498
|
"default": "do_not_renew",
|
|
2493
|
-
"enum": [
|
|
2499
|
+
"enum": [
|
|
2500
|
+
"do_not_renew",
|
|
2501
|
+
"auto_renew",
|
|
2502
|
+
"manual"
|
|
2503
|
+
]
|
|
2494
2504
|
},
|
|
2495
2505
|
{
|
|
2496
2506
|
"name": "bill_parent_customer",
|
|
@@ -2580,7 +2590,13 @@
|
|
|
2580
2590
|
"type": "string",
|
|
2581
2591
|
"required": true,
|
|
2582
2592
|
"position": "body",
|
|
2583
|
-
"enum": [
|
|
2593
|
+
"enum": [
|
|
2594
|
+
"draft",
|
|
2595
|
+
"active",
|
|
2596
|
+
"paused",
|
|
2597
|
+
"expired",
|
|
2598
|
+
"disputed"
|
|
2599
|
+
]
|
|
2584
2600
|
},
|
|
2585
2601
|
{
|
|
2586
2602
|
"name": "currency",
|
|
@@ -2651,7 +2667,11 @@
|
|
|
2651
2667
|
"type": "string",
|
|
2652
2668
|
"required": false,
|
|
2653
2669
|
"position": "body",
|
|
2654
|
-
"enum": [
|
|
2670
|
+
"enum": [
|
|
2671
|
+
"renew_with_default_contract",
|
|
2672
|
+
"renew_with_existing",
|
|
2673
|
+
"do_not_renew"
|
|
2674
|
+
]
|
|
2655
2675
|
},
|
|
2656
2676
|
{
|
|
2657
2677
|
"name": "contract_link",
|
|
@@ -2791,7 +2811,11 @@
|
|
|
2791
2811
|
"type": "string",
|
|
2792
2812
|
"required": false,
|
|
2793
2813
|
"position": "body",
|
|
2794
|
-
"enum": [
|
|
2814
|
+
"enum": [
|
|
2815
|
+
"active",
|
|
2816
|
+
"pause",
|
|
2817
|
+
"trial"
|
|
2818
|
+
]
|
|
2795
2819
|
},
|
|
2796
2820
|
{
|
|
2797
2821
|
"name": "description",
|
|
@@ -3112,7 +3136,12 @@
|
|
|
3112
3136
|
"type": "string",
|
|
3113
3137
|
"required": false,
|
|
3114
3138
|
"position": "query",
|
|
3115
|
-
"enum": [
|
|
3139
|
+
"enum": [
|
|
3140
|
+
"in_progress",
|
|
3141
|
+
"issued",
|
|
3142
|
+
"void",
|
|
3143
|
+
"paid"
|
|
3144
|
+
]
|
|
3116
3145
|
}
|
|
3117
3146
|
],
|
|
3118
3147
|
"requestTemplate": {
|
|
@@ -3157,7 +3186,12 @@
|
|
|
3157
3186
|
"type": "string",
|
|
3158
3187
|
"required": true,
|
|
3159
3188
|
"position": "body",
|
|
3160
|
-
"enum": [
|
|
3189
|
+
"enum": [
|
|
3190
|
+
"in_progress",
|
|
3191
|
+
"issued",
|
|
3192
|
+
"void",
|
|
3193
|
+
"paid"
|
|
3194
|
+
]
|
|
3161
3195
|
},
|
|
3162
3196
|
{
|
|
3163
3197
|
"name": "repayment_method",
|
|
@@ -3165,7 +3199,13 @@
|
|
|
3165
3199
|
"type": "string",
|
|
3166
3200
|
"required": true,
|
|
3167
3201
|
"position": "body",
|
|
3168
|
-
"enum": [
|
|
3202
|
+
"enum": [
|
|
3203
|
+
"credits",
|
|
3204
|
+
"invoice_adjusted",
|
|
3205
|
+
"external_payment",
|
|
3206
|
+
"credits_against_payment",
|
|
3207
|
+
"original_payment_method"
|
|
3208
|
+
]
|
|
3169
3209
|
},
|
|
3170
3210
|
{
|
|
3171
3211
|
"name": "line_items",
|
|
@@ -3247,7 +3287,21 @@
|
|
|
3247
3287
|
"type": "string",
|
|
3248
3288
|
"required": true,
|
|
3249
3289
|
"position": "body",
|
|
3250
|
-
"enum": [
|
|
3290
|
+
"enum": [
|
|
3291
|
+
"card",
|
|
3292
|
+
"cash",
|
|
3293
|
+
"check",
|
|
3294
|
+
"charge_back",
|
|
3295
|
+
"bank_transfer",
|
|
3296
|
+
"direct_debit",
|
|
3297
|
+
"amazon_payments",
|
|
3298
|
+
"paypal_express_checkout",
|
|
3299
|
+
"upi",
|
|
3300
|
+
"netbanking_emandates",
|
|
3301
|
+
"other",
|
|
3302
|
+
"credits",
|
|
3303
|
+
"ach_credit_transfer"
|
|
3304
|
+
]
|
|
3251
3305
|
},
|
|
3252
3306
|
{
|
|
3253
3307
|
"name": "currency_code",
|
|
@@ -3263,7 +3317,13 @@
|
|
|
3263
3317
|
"required": false,
|
|
3264
3318
|
"position": "body",
|
|
3265
3319
|
"default": "payment",
|
|
3266
|
-
"enum": [
|
|
3320
|
+
"enum": [
|
|
3321
|
+
"payment",
|
|
3322
|
+
"refund",
|
|
3323
|
+
"payment_reversal",
|
|
3324
|
+
"authorization",
|
|
3325
|
+
"tax_withheld"
|
|
3326
|
+
]
|
|
3267
3327
|
},
|
|
3268
3328
|
{
|
|
3269
3329
|
"name": "external_id",
|
|
@@ -3825,7 +3885,7 @@
|
|
|
3825
3885
|
"description": "Retrieve a journal entry by its ID, including all journal lines.",
|
|
3826
3886
|
"args": [
|
|
3827
3887
|
{
|
|
3828
|
-
"name": "
|
|
3888
|
+
"name": "journalEntryId",
|
|
3829
3889
|
"description": "The unique identifier of the journal entry.",
|
|
3830
3890
|
"type": "string",
|
|
3831
3891
|
"required": true,
|
|
@@ -3833,7 +3893,7 @@
|
|
|
3833
3893
|
}
|
|
3834
3894
|
],
|
|
3835
3895
|
"requestTemplate": {
|
|
3836
|
-
"url": "/accounting_new/journal_entry/{
|
|
3896
|
+
"url": "/accounting_new/journal_entry/{journalEntryId}",
|
|
3837
3897
|
"method": "GET",
|
|
3838
3898
|
"headers": {
|
|
3839
3899
|
"Content-Type": "application/json"
|
|
@@ -3938,7 +3998,7 @@
|
|
|
3938
3998
|
"description": "Retrieve the balance for a specific accounting account.",
|
|
3939
3999
|
"args": [
|
|
3940
4000
|
{
|
|
3941
|
-
"name": "
|
|
4001
|
+
"name": "accountId",
|
|
3942
4002
|
"description": "The unique identifier of the account.",
|
|
3943
4003
|
"type": "string",
|
|
3944
4004
|
"required": true,
|
|
@@ -3953,7 +4013,7 @@
|
|
|
3953
4013
|
}
|
|
3954
4014
|
],
|
|
3955
4015
|
"requestTemplate": {
|
|
3956
|
-
"url": "/accounting_new/accounts/{
|
|
4016
|
+
"url": "/accounting_new/accounts/{accountId}/balance",
|
|
3957
4017
|
"method": "GET",
|
|
3958
4018
|
"headers": {
|
|
3959
4019
|
"Content-Type": "application/json"
|
|
@@ -3990,9 +4050,9 @@
|
|
|
3990
4050
|
},
|
|
3991
4051
|
{
|
|
3992
4052
|
"name": "type",
|
|
3993
|
-
"description": "Product type
|
|
4053
|
+
"description": "Product type. Use 'product' for standard products, 'service' for services.",
|
|
3994
4054
|
"type": "string",
|
|
3995
|
-
"required":
|
|
4055
|
+
"required": true,
|
|
3996
4056
|
"position": "body"
|
|
3997
4057
|
},
|
|
3998
4058
|
{
|
|
@@ -4033,7 +4093,7 @@
|
|
|
4033
4093
|
"description": "Update an existing product's details.",
|
|
4034
4094
|
"args": [
|
|
4035
4095
|
{
|
|
4036
|
-
"name": "
|
|
4096
|
+
"name": "productId",
|
|
4037
4097
|
"description": "The unique identifier of the product to update.",
|
|
4038
4098
|
"type": "string",
|
|
4039
4099
|
"required": true,
|
|
@@ -4083,7 +4143,7 @@
|
|
|
4083
4143
|
}
|
|
4084
4144
|
],
|
|
4085
4145
|
"requestTemplate": {
|
|
4086
|
-
"url": "/products/{
|
|
4146
|
+
"url": "/products/{productId}",
|
|
4087
4147
|
"method": "PATCH",
|
|
4088
4148
|
"headers": {
|
|
4089
4149
|
"Content-Type": "application/json"
|
|
@@ -4098,7 +4158,7 @@
|
|
|
4098
4158
|
"description": "Retrieve all pricing configurations for a specific product.",
|
|
4099
4159
|
"args": [
|
|
4100
4160
|
{
|
|
4101
|
-
"name": "
|
|
4161
|
+
"name": "productId",
|
|
4102
4162
|
"description": "The unique identifier of the product.",
|
|
4103
4163
|
"type": "string",
|
|
4104
4164
|
"required": true,
|
|
@@ -4106,7 +4166,7 @@
|
|
|
4106
4166
|
}
|
|
4107
4167
|
],
|
|
4108
4168
|
"requestTemplate": {
|
|
4109
|
-
"url": "/products/{
|
|
4169
|
+
"url": "/products/{productId}/pricing",
|
|
4110
4170
|
"method": "GET",
|
|
4111
4171
|
"headers": {
|
|
4112
4172
|
"Content-Type": "application/json"
|
|
@@ -4121,7 +4181,7 @@
|
|
|
4121
4181
|
"description": "Create a new pricing configuration for a product.",
|
|
4122
4182
|
"args": [
|
|
4123
4183
|
{
|
|
4124
|
-
"name": "
|
|
4184
|
+
"name": "productId",
|
|
4125
4185
|
"description": "The unique identifier of the product.",
|
|
4126
4186
|
"type": "string",
|
|
4127
4187
|
"required": true,
|
|
@@ -4171,7 +4231,7 @@
|
|
|
4171
4231
|
}
|
|
4172
4232
|
],
|
|
4173
4233
|
"requestTemplate": {
|
|
4174
|
-
"url": "/products/{
|
|
4234
|
+
"url": "/products/{productId}/pricing",
|
|
4175
4235
|
"method": "POST",
|
|
4176
4236
|
"headers": {
|
|
4177
4237
|
"Content-Type": "application/json"
|
|
@@ -4223,7 +4283,7 @@
|
|
|
4223
4283
|
"description": "Retrieve a plan by its ID, including phases, products, and pricing configurations.",
|
|
4224
4284
|
"args": [
|
|
4225
4285
|
{
|
|
4226
|
-
"name": "
|
|
4286
|
+
"name": "planId",
|
|
4227
4287
|
"description": "The unique identifier of the plan.",
|
|
4228
4288
|
"type": "string",
|
|
4229
4289
|
"required": true,
|
|
@@ -4231,7 +4291,7 @@
|
|
|
4231
4291
|
}
|
|
4232
4292
|
],
|
|
4233
4293
|
"requestTemplate": {
|
|
4234
|
-
"url": "/templates/plan/{
|
|
4294
|
+
"url": "/templates/plan/{planId}",
|
|
4235
4295
|
"method": "GET",
|
|
4236
4296
|
"headers": {
|
|
4237
4297
|
"Content-Type": "application/json"
|
|
@@ -4297,7 +4357,7 @@
|
|
|
4297
4357
|
"description": "Add products with pricing to an existing plan.",
|
|
4298
4358
|
"args": [
|
|
4299
4359
|
{
|
|
4300
|
-
"name": "
|
|
4360
|
+
"name": "planId",
|
|
4301
4361
|
"description": "The unique identifier of the plan.",
|
|
4302
4362
|
"type": "string",
|
|
4303
4363
|
"required": true,
|
|
@@ -4312,7 +4372,7 @@
|
|
|
4312
4372
|
}
|
|
4313
4373
|
],
|
|
4314
4374
|
"requestTemplate": {
|
|
4315
|
-
"url": "/templates/plan/{
|
|
4375
|
+
"url": "/templates/plan/{planId}/products",
|
|
4316
4376
|
"method": "POST",
|
|
4317
4377
|
"headers": {
|
|
4318
4378
|
"Content-Type": "application/json"
|
|
@@ -4327,7 +4387,7 @@
|
|
|
4327
4387
|
"description": "Preview the estimated billing for a plan, showing projected charges per phase.",
|
|
4328
4388
|
"args": [
|
|
4329
4389
|
{
|
|
4330
|
-
"name": "
|
|
4390
|
+
"name": "planId",
|
|
4331
4391
|
"description": "The unique identifier of the plan.",
|
|
4332
4392
|
"type": "string",
|
|
4333
4393
|
"required": true,
|
|
@@ -4349,7 +4409,7 @@
|
|
|
4349
4409
|
}
|
|
4350
4410
|
],
|
|
4351
4411
|
"requestTemplate": {
|
|
4352
|
-
"url": "/templates/plan/{
|
|
4412
|
+
"url": "/templates/plan/{planId}/preview",
|
|
4353
4413
|
"method": "POST",
|
|
4354
4414
|
"headers": {
|
|
4355
4415
|
"Content-Type": "application/json"
|
|
@@ -4641,7 +4701,7 @@
|
|
|
4641
4701
|
"description": "Retrieve a quote by its ID, including phases, pricing, and status.",
|
|
4642
4702
|
"args": [
|
|
4643
4703
|
{
|
|
4644
|
-
"name": "
|
|
4704
|
+
"name": "quoteId",
|
|
4645
4705
|
"description": "The unique identifier of the quote.",
|
|
4646
4706
|
"type": "string",
|
|
4647
4707
|
"required": true,
|
|
@@ -4649,7 +4709,7 @@
|
|
|
4649
4709
|
}
|
|
4650
4710
|
],
|
|
4651
4711
|
"requestTemplate": {
|
|
4652
|
-
"url": "/quotes/{
|
|
4712
|
+
"url": "/quotes/{quoteId}",
|
|
4653
4713
|
"method": "GET",
|
|
4654
4714
|
"headers": {
|
|
4655
4715
|
"Content-Type": "application/json"
|
|
@@ -4664,7 +4724,7 @@
|
|
|
4664
4724
|
"description": "Accept a quote, converting it into an active contract.",
|
|
4665
4725
|
"args": [
|
|
4666
4726
|
{
|
|
4667
|
-
"name": "
|
|
4727
|
+
"name": "quoteId",
|
|
4668
4728
|
"description": "The unique identifier of the quote to accept.",
|
|
4669
4729
|
"type": "string",
|
|
4670
4730
|
"required": true,
|
|
@@ -4672,7 +4732,7 @@
|
|
|
4672
4732
|
}
|
|
4673
4733
|
],
|
|
4674
4734
|
"requestTemplate": {
|
|
4675
|
-
"url": "/quotes/{
|
|
4735
|
+
"url": "/quotes/{quoteId}/accept",
|
|
4676
4736
|
"method": "POST",
|
|
4677
4737
|
"headers": {
|
|
4678
4738
|
"Content-Type": "application/json"
|
|
@@ -4724,7 +4784,7 @@
|
|
|
4724
4784
|
"description": "Retrieve a specific job by its ID to check status and results.",
|
|
4725
4785
|
"args": [
|
|
4726
4786
|
{
|
|
4727
|
-
"name": "
|
|
4787
|
+
"name": "jobId",
|
|
4728
4788
|
"description": "The unique identifier of the job.",
|
|
4729
4789
|
"type": "string",
|
|
4730
4790
|
"required": true,
|
|
@@ -4732,7 +4792,7 @@
|
|
|
4732
4792
|
}
|
|
4733
4793
|
],
|
|
4734
4794
|
"requestTemplate": {
|
|
4735
|
-
"url": "/jobs/{
|
|
4795
|
+
"url": "/jobs/{jobId}",
|
|
4736
4796
|
"method": "GET",
|
|
4737
4797
|
"headers": {
|
|
4738
4798
|
"Content-Type": "application/json"
|
|
@@ -4747,8 +4807,8 @@
|
|
|
4747
4807
|
"description": "Create a new contact associated with a customer.",
|
|
4748
4808
|
"args": [
|
|
4749
4809
|
{
|
|
4750
|
-
"name": "
|
|
4751
|
-
"description": "The customer ID to associate this contact with.",
|
|
4810
|
+
"name": "customer",
|
|
4811
|
+
"description": "The customer ID (UUID) to associate this contact with.",
|
|
4752
4812
|
"type": "string",
|
|
4753
4813
|
"required": true,
|
|
4754
4814
|
"position": "body"
|
|
@@ -4771,7 +4831,7 @@
|
|
|
4771
4831
|
"name": "email",
|
|
4772
4832
|
"description": "Email address of the contact.",
|
|
4773
4833
|
"type": "string",
|
|
4774
|
-
"required":
|
|
4834
|
+
"required": true,
|
|
4775
4835
|
"position": "body"
|
|
4776
4836
|
},
|
|
4777
4837
|
{
|
|
@@ -4809,15 +4869,22 @@
|
|
|
4809
4869
|
},
|
|
4810
4870
|
{
|
|
4811
4871
|
"name": "updateContact",
|
|
4812
|
-
"description": "Update an existing contact's details.",
|
|
4872
|
+
"description": "Update an existing contact's details. Requires customer (customer ID) and email even for partial updates.",
|
|
4813
4873
|
"args": [
|
|
4814
4874
|
{
|
|
4815
|
-
"name": "
|
|
4875
|
+
"name": "contactId",
|
|
4816
4876
|
"description": "The unique identifier of the contact to update.",
|
|
4817
4877
|
"type": "string",
|
|
4818
4878
|
"required": true,
|
|
4819
4879
|
"position": "path"
|
|
4820
4880
|
},
|
|
4881
|
+
{
|
|
4882
|
+
"name": "customer",
|
|
4883
|
+
"description": "The customer ID (UUID) this contact belongs to. Required even for updates.",
|
|
4884
|
+
"type": "string",
|
|
4885
|
+
"required": true,
|
|
4886
|
+
"position": "body"
|
|
4887
|
+
},
|
|
4821
4888
|
{
|
|
4822
4889
|
"name": "first_name",
|
|
4823
4890
|
"description": "Updated first name.",
|
|
@@ -4834,9 +4901,9 @@
|
|
|
4834
4901
|
},
|
|
4835
4902
|
{
|
|
4836
4903
|
"name": "email",
|
|
4837
|
-
"description": "
|
|
4904
|
+
"description": "Email address of the contact. Required even for updates.",
|
|
4838
4905
|
"type": "string",
|
|
4839
|
-
"required":
|
|
4906
|
+
"required": true,
|
|
4840
4907
|
"position": "body"
|
|
4841
4908
|
},
|
|
4842
4909
|
{
|
|
@@ -4862,7 +4929,7 @@
|
|
|
4862
4929
|
}
|
|
4863
4930
|
],
|
|
4864
4931
|
"requestTemplate": {
|
|
4865
|
-
"url": "/contacts/{
|
|
4932
|
+
"url": "/contacts/{contactId}",
|
|
4866
4933
|
"method": "PATCH",
|
|
4867
4934
|
"headers": {
|
|
4868
4935
|
"Content-Type": "application/json"
|
|
@@ -4907,7 +4974,7 @@
|
|
|
4907
4974
|
"description": "Retrieve a business entity by its ID.",
|
|
4908
4975
|
"args": [
|
|
4909
4976
|
{
|
|
4910
|
-
"name": "
|
|
4977
|
+
"name": "entityId",
|
|
4911
4978
|
"description": "The unique identifier of the business entity.",
|
|
4912
4979
|
"type": "string",
|
|
4913
4980
|
"required": true,
|
|
@@ -4915,7 +4982,7 @@
|
|
|
4915
4982
|
}
|
|
4916
4983
|
],
|
|
4917
4984
|
"requestTemplate": {
|
|
4918
|
-
"url": "/business_entities/{
|
|
4985
|
+
"url": "/business_entities/{entityId}",
|
|
4919
4986
|
"method": "GET",
|
|
4920
4987
|
"headers": {
|
|
4921
4988
|
"Content-Type": "application/json"
|
|
@@ -4930,7 +4997,7 @@
|
|
|
4930
4997
|
"description": "Update an existing business entity's details.",
|
|
4931
4998
|
"args": [
|
|
4932
4999
|
{
|
|
4933
|
-
"name": "
|
|
5000
|
+
"name": "entityId",
|
|
4934
5001
|
"description": "The unique identifier of the business entity to update.",
|
|
4935
5002
|
"type": "string",
|
|
4936
5003
|
"required": true,
|
|
@@ -4966,7 +5033,7 @@
|
|
|
4966
5033
|
}
|
|
4967
5034
|
],
|
|
4968
5035
|
"requestTemplate": {
|
|
4969
|
-
"url": "/business_entities/{
|
|
5036
|
+
"url": "/business_entities/{entityId}",
|
|
4970
5037
|
"method": "PATCH",
|
|
4971
5038
|
"headers": {
|
|
4972
5039
|
"Content-Type": "application/json"
|
|
@@ -4981,7 +5048,7 @@
|
|
|
4981
5048
|
"description": "Retrieve all addresses for a specific customer.",
|
|
4982
5049
|
"args": [
|
|
4983
5050
|
{
|
|
4984
|
-
"name": "
|
|
5051
|
+
"name": "customerId",
|
|
4985
5052
|
"description": "The unique identifier of the customer.",
|
|
4986
5053
|
"type": "string",
|
|
4987
5054
|
"required": true,
|
|
@@ -4989,7 +5056,7 @@
|
|
|
4989
5056
|
}
|
|
4990
5057
|
],
|
|
4991
5058
|
"requestTemplate": {
|
|
4992
|
-
"url": "/customers/{
|
|
5059
|
+
"url": "/customers/{customerId}/addresses",
|
|
4993
5060
|
"method": "GET",
|
|
4994
5061
|
"headers": {
|
|
4995
5062
|
"Content-Type": "application/json"
|
|
@@ -5004,7 +5071,7 @@
|
|
|
5004
5071
|
"description": "Add a new address to a customer.",
|
|
5005
5072
|
"args": [
|
|
5006
5073
|
{
|
|
5007
|
-
"name": "
|
|
5074
|
+
"name": "customerId",
|
|
5008
5075
|
"description": "The unique identifier of the customer.",
|
|
5009
5076
|
"type": "string",
|
|
5010
5077
|
"required": true,
|
|
@@ -5068,7 +5135,7 @@
|
|
|
5068
5135
|
}
|
|
5069
5136
|
],
|
|
5070
5137
|
"requestTemplate": {
|
|
5071
|
-
"url": "/customers/{
|
|
5138
|
+
"url": "/customers/{customerId}/addresses",
|
|
5072
5139
|
"method": "POST",
|
|
5073
5140
|
"headers": {
|
|
5074
5141
|
"Content-Type": "application/json"
|
|
@@ -5083,14 +5150,14 @@
|
|
|
5083
5150
|
"description": "Update an existing customer address.",
|
|
5084
5151
|
"args": [
|
|
5085
5152
|
{
|
|
5086
|
-
"name": "
|
|
5153
|
+
"name": "customerId",
|
|
5087
5154
|
"description": "The unique identifier of the customer.",
|
|
5088
5155
|
"type": "string",
|
|
5089
5156
|
"required": true,
|
|
5090
5157
|
"position": "path"
|
|
5091
5158
|
},
|
|
5092
5159
|
{
|
|
5093
|
-
"name": "
|
|
5160
|
+
"name": "addressId",
|
|
5094
5161
|
"description": "The unique identifier of the address to update.",
|
|
5095
5162
|
"type": "string",
|
|
5096
5163
|
"required": true,
|
|
@@ -5147,7 +5214,7 @@
|
|
|
5147
5214
|
}
|
|
5148
5215
|
],
|
|
5149
5216
|
"requestTemplate": {
|
|
5150
|
-
"url": "/customers/{
|
|
5217
|
+
"url": "/customers/{customerId}/addresses/{addressId}",
|
|
5151
5218
|
"method": "PATCH",
|
|
5152
5219
|
"headers": {
|
|
5153
5220
|
"Content-Type": "application/json"
|
|
@@ -5162,7 +5229,7 @@
|
|
|
5162
5229
|
"description": "Retrieve all payment methods for a specific customer.",
|
|
5163
5230
|
"args": [
|
|
5164
5231
|
{
|
|
5165
|
-
"name": "
|
|
5232
|
+
"name": "customerId",
|
|
5166
5233
|
"description": "The unique identifier of the customer.",
|
|
5167
5234
|
"type": "string",
|
|
5168
5235
|
"required": true,
|
|
@@ -5170,7 +5237,7 @@
|
|
|
5170
5237
|
}
|
|
5171
5238
|
],
|
|
5172
5239
|
"requestTemplate": {
|
|
5173
|
-
"url": "/customers/{
|
|
5240
|
+
"url": "/customers/{customerId}/payment_methods",
|
|
5174
5241
|
"method": "GET",
|
|
5175
5242
|
"headers": {
|
|
5176
5243
|
"Content-Type": "application/json"
|
|
@@ -5185,7 +5252,7 @@
|
|
|
5185
5252
|
"description": "Attach a payment method to a customer.",
|
|
5186
5253
|
"args": [
|
|
5187
5254
|
{
|
|
5188
|
-
"name": "
|
|
5255
|
+
"name": "customerId",
|
|
5189
5256
|
"description": "The unique identifier of the customer.",
|
|
5190
5257
|
"type": "string",
|
|
5191
5258
|
"required": true,
|
|
@@ -5214,7 +5281,7 @@
|
|
|
5214
5281
|
}
|
|
5215
5282
|
],
|
|
5216
5283
|
"requestTemplate": {
|
|
5217
|
-
"url": "/customers/{
|
|
5284
|
+
"url": "/customers/{customerId}/payment_methods/attach",
|
|
5218
5285
|
"method": "POST",
|
|
5219
5286
|
"headers": {
|
|
5220
5287
|
"Content-Type": "application/json"
|