@tangle-network/agent-integrations 0.53.2 → 0.53.3
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/catalog.js +4 -4
- package/dist/{chunk-IL2SROKV.js → chunk-EJIOD53H.js} +3 -3
- package/dist/{chunk-BFKVIZD5.js → chunk-PU4QS6E2.js} +2 -2
- package/dist/{chunk-MWEIKCF5.js → chunk-VC5G627L.js} +2 -2
- package/dist/{chunk-JOQQ2VYH.js → chunk-XOOZW3XK.js} +860 -849
- package/dist/{chunk-JOQQ2VYH.js.map → chunk-XOOZW3XK.js.map} +1 -1
- package/dist/connectors/adapters/index.js +1 -1
- package/dist/connectors/index.js +2 -2
- package/dist/index.js +4 -4
- package/dist/mcp.js +4 -4
- package/dist/registry.js +4 -4
- package/dist/runtime.js +4 -4
- package/dist/specs.js +3 -3
- package/package.json +1 -1
- /package/dist/{chunk-IL2SROKV.js.map → chunk-EJIOD53H.js.map} +0 -0
- /package/dist/{chunk-BFKVIZD5.js.map → chunk-PU4QS6E2.js.map} +0 -0
- /package/dist/{chunk-MWEIKCF5.js.map → chunk-VC5G627L.js.map} +0 -0
|
@@ -9481,6 +9481,437 @@ async function ensureFreshAccessTokenFromCreds(creds, clientId, clientSecret, on
|
|
|
9481
9481
|
return creds.accessToken;
|
|
9482
9482
|
}
|
|
9483
9483
|
|
|
9484
|
+
// src/connectors/adapters/quickbooks.ts
|
|
9485
|
+
var quickbooksConnector = declarativeRestConnector({
|
|
9486
|
+
kind: "quickbooks",
|
|
9487
|
+
displayName: "QuickBooks",
|
|
9488
|
+
description: "Query QuickBooks Online entities with SQL-like queries and create or update customers, invoices, and items.",
|
|
9489
|
+
auth: {
|
|
9490
|
+
kind: "oauth2",
|
|
9491
|
+
authorizationUrl: "https://appcenter.intuit.com/connect/oauth2",
|
|
9492
|
+
tokenUrl: "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",
|
|
9493
|
+
scopes: ["com.intuit.quickbooks.accounting"],
|
|
9494
|
+
clientIdEnv: "QUICKBOOKS_OAUTH_CLIENT_ID",
|
|
9495
|
+
clientSecretEnv: "QUICKBOOKS_OAUTH_CLIENT_SECRET"
|
|
9496
|
+
},
|
|
9497
|
+
category: "commerce",
|
|
9498
|
+
defaultConsistencyModel: "authoritative",
|
|
9499
|
+
baseUrl: { metadataKey: "apiBaseUrl" },
|
|
9500
|
+
defaultHeaders: {
|
|
9501
|
+
accept: "application/json"
|
|
9502
|
+
},
|
|
9503
|
+
// `realmId` is pinned at connect time, not passed per call, so the health
|
|
9504
|
+
// check reads it from connection metadata. Written as `{realmId}` it resolved
|
|
9505
|
+
// against the (empty) test argument map and threw before any request was
|
|
9506
|
+
// made — the connection test could never pass, for any connection.
|
|
9507
|
+
test: { method: "GET", path: "companyinfo/{connection.realmId}", query: { minorversion: "70" } },
|
|
9508
|
+
capabilities: [
|
|
9509
|
+
{
|
|
9510
|
+
// The reports namespace is NOT reachable through `entities.query` — QBO
|
|
9511
|
+
// exposes the accountant-grade statements only under /reports/{name}.
|
|
9512
|
+
// These four are the tax/bookkeeping read surface; without them a tax
|
|
9513
|
+
// agent can enumerate ledger rows but cannot obtain a P&L or a balance
|
|
9514
|
+
// sheet, which is what a return is actually built from.
|
|
9515
|
+
name: "reports.get",
|
|
9516
|
+
class: "read",
|
|
9517
|
+
description: "Run a QuickBooks Online report. `reportName` is the QBO report id (ProfitAndLoss, BalanceSheet, TrialBalance, GeneralLedger, CashFlow, AgedReceivables, AgedPayables).",
|
|
9518
|
+
parameters: {
|
|
9519
|
+
type: "object",
|
|
9520
|
+
properties: {
|
|
9521
|
+
reportName: {
|
|
9522
|
+
type: "string",
|
|
9523
|
+
enum: [
|
|
9524
|
+
"ProfitAndLoss",
|
|
9525
|
+
"BalanceSheet",
|
|
9526
|
+
"TrialBalance",
|
|
9527
|
+
"GeneralLedger",
|
|
9528
|
+
"CashFlow",
|
|
9529
|
+
"AgedReceivables",
|
|
9530
|
+
"AgedPayables"
|
|
9531
|
+
]
|
|
9532
|
+
},
|
|
9533
|
+
start_date: { type: "string", description: "YYYY-MM-DD (inclusive)." },
|
|
9534
|
+
end_date: { type: "string", description: "YYYY-MM-DD (inclusive)." },
|
|
9535
|
+
accounting_method: { type: "string", enum: ["Cash", "Accrual"] },
|
|
9536
|
+
date_macro: { type: "string", description: 'e.g. "Last Fiscal Year" \u2014 alternative to start/end dates.' },
|
|
9537
|
+
summarize_column_by: { type: "string", description: "e.g. Month, Quarter, Year, Total." },
|
|
9538
|
+
minorversion: { type: "string" }
|
|
9539
|
+
},
|
|
9540
|
+
required: ["reportName"]
|
|
9541
|
+
},
|
|
9542
|
+
request: {
|
|
9543
|
+
method: "GET",
|
|
9544
|
+
path: "reports/{reportName}",
|
|
9545
|
+
query: {
|
|
9546
|
+
start_date: "{start_date}",
|
|
9547
|
+
end_date: "{end_date}",
|
|
9548
|
+
accounting_method: "{accounting_method}",
|
|
9549
|
+
date_macro: "{date_macro}",
|
|
9550
|
+
summarize_column_by: "{summarize_column_by}",
|
|
9551
|
+
minorversion: "{minorversion}"
|
|
9552
|
+
}
|
|
9553
|
+
},
|
|
9554
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9555
|
+
},
|
|
9556
|
+
{
|
|
9557
|
+
name: "companyinfo.get",
|
|
9558
|
+
class: "read",
|
|
9559
|
+
description: "Read the connected QuickBooks company profile (legal name, EIN/company id, fiscal year start, country) for the realm this connection was authorized against.",
|
|
9560
|
+
parameters: { type: "object", properties: { minorversion: { type: "string" } } },
|
|
9561
|
+
request: {
|
|
9562
|
+
method: "GET",
|
|
9563
|
+
path: "companyinfo/{connection.realmId}",
|
|
9564
|
+
query: { minorversion: "{minorversion}" }
|
|
9565
|
+
},
|
|
9566
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9567
|
+
},
|
|
9568
|
+
{
|
|
9569
|
+
name: "entities.query",
|
|
9570
|
+
class: "read",
|
|
9571
|
+
description: 'Run a QuickBooks Online query (e.g. "SELECT * FROM Customer WHERE Active = true MAXRESULTS 50").',
|
|
9572
|
+
parameters: {
|
|
9573
|
+
type: "object",
|
|
9574
|
+
properties: {
|
|
9575
|
+
query: { type: "string" },
|
|
9576
|
+
minorversion: { type: "string" }
|
|
9577
|
+
},
|
|
9578
|
+
required: ["query"]
|
|
9579
|
+
},
|
|
9580
|
+
request: {
|
|
9581
|
+
method: "GET",
|
|
9582
|
+
path: "query",
|
|
9583
|
+
query: { query: "{query}", minorversion: "{minorversion}" }
|
|
9584
|
+
},
|
|
9585
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9586
|
+
},
|
|
9587
|
+
{
|
|
9588
|
+
name: "customers.get",
|
|
9589
|
+
class: "read",
|
|
9590
|
+
description: "Read a QuickBooks customer by id.",
|
|
9591
|
+
parameters: {
|
|
9592
|
+
type: "object",
|
|
9593
|
+
properties: {
|
|
9594
|
+
customerId: { type: "string" },
|
|
9595
|
+
minorversion: { type: "string" }
|
|
9596
|
+
},
|
|
9597
|
+
required: ["customerId"]
|
|
9598
|
+
},
|
|
9599
|
+
request: {
|
|
9600
|
+
method: "GET",
|
|
9601
|
+
path: "customer/{customerId}",
|
|
9602
|
+
query: { minorversion: "{minorversion}" }
|
|
9603
|
+
},
|
|
9604
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9605
|
+
},
|
|
9606
|
+
{
|
|
9607
|
+
name: "customers.create",
|
|
9608
|
+
class: "mutation",
|
|
9609
|
+
description: "Create a QuickBooks customer.",
|
|
9610
|
+
parameters: {
|
|
9611
|
+
type: "object",
|
|
9612
|
+
properties: {
|
|
9613
|
+
DisplayName: { type: "string" },
|
|
9614
|
+
GivenName: { type: "string" },
|
|
9615
|
+
FamilyName: { type: "string" },
|
|
9616
|
+
CompanyName: { type: "string" },
|
|
9617
|
+
PrimaryEmailAddr: { type: "object" },
|
|
9618
|
+
PrimaryPhone: { type: "object" },
|
|
9619
|
+
BillAddr: { type: "object" },
|
|
9620
|
+
Notes: { type: "string" }
|
|
9621
|
+
},
|
|
9622
|
+
required: ["DisplayName"]
|
|
9623
|
+
},
|
|
9624
|
+
request: {
|
|
9625
|
+
method: "POST",
|
|
9626
|
+
path: "customer",
|
|
9627
|
+
query: { minorversion: "70" },
|
|
9628
|
+
body: "args"
|
|
9629
|
+
},
|
|
9630
|
+
cas: "native-idempotency",
|
|
9631
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9632
|
+
},
|
|
9633
|
+
{
|
|
9634
|
+
name: "customers.update",
|
|
9635
|
+
class: "mutation",
|
|
9636
|
+
description: "Sparse-update a QuickBooks customer. Caller must include Id and SyncToken from the prior read.",
|
|
9637
|
+
parameters: {
|
|
9638
|
+
type: "object",
|
|
9639
|
+
properties: {
|
|
9640
|
+
Id: { type: "string" },
|
|
9641
|
+
SyncToken: { type: "string" },
|
|
9642
|
+
sparse: { type: "boolean", default: true },
|
|
9643
|
+
DisplayName: { type: "string" },
|
|
9644
|
+
GivenName: { type: "string" },
|
|
9645
|
+
FamilyName: { type: "string" },
|
|
9646
|
+
CompanyName: { type: "string" },
|
|
9647
|
+
PrimaryEmailAddr: { type: "object" },
|
|
9648
|
+
PrimaryPhone: { type: "object" },
|
|
9649
|
+
BillAddr: { type: "object" },
|
|
9650
|
+
Notes: { type: "string" },
|
|
9651
|
+
Active: { type: "boolean" }
|
|
9652
|
+
},
|
|
9653
|
+
required: ["Id", "SyncToken"]
|
|
9654
|
+
},
|
|
9655
|
+
request: {
|
|
9656
|
+
method: "POST",
|
|
9657
|
+
path: "customer",
|
|
9658
|
+
query: { minorversion: "70" },
|
|
9659
|
+
body: "args"
|
|
9660
|
+
},
|
|
9661
|
+
cas: "optimistic-read-verify",
|
|
9662
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9663
|
+
},
|
|
9664
|
+
{
|
|
9665
|
+
name: "invoices.get",
|
|
9666
|
+
class: "read",
|
|
9667
|
+
description: "Read a QuickBooks invoice by id.",
|
|
9668
|
+
parameters: {
|
|
9669
|
+
type: "object",
|
|
9670
|
+
properties: {
|
|
9671
|
+
invoiceId: { type: "string" },
|
|
9672
|
+
minorversion: { type: "string" }
|
|
9673
|
+
},
|
|
9674
|
+
required: ["invoiceId"]
|
|
9675
|
+
},
|
|
9676
|
+
request: {
|
|
9677
|
+
method: "GET",
|
|
9678
|
+
path: "invoice/{invoiceId}",
|
|
9679
|
+
query: { minorversion: "{minorversion}" }
|
|
9680
|
+
},
|
|
9681
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9682
|
+
},
|
|
9683
|
+
{
|
|
9684
|
+
name: "invoices.create",
|
|
9685
|
+
class: "mutation",
|
|
9686
|
+
description: "Create a QuickBooks invoice. `Line` and `CustomerRef` are required by the API.",
|
|
9687
|
+
parameters: {
|
|
9688
|
+
type: "object",
|
|
9689
|
+
properties: {
|
|
9690
|
+
CustomerRef: { type: "object" },
|
|
9691
|
+
Line: { type: "array", items: { type: "object" } },
|
|
9692
|
+
TxnDate: { type: "string" },
|
|
9693
|
+
DueDate: { type: "string" },
|
|
9694
|
+
CurrencyRef: { type: "object" },
|
|
9695
|
+
BillEmail: { type: "object" },
|
|
9696
|
+
PrivateNote: { type: "string" },
|
|
9697
|
+
CustomerMemo: { type: "object" }
|
|
9698
|
+
},
|
|
9699
|
+
required: ["CustomerRef", "Line"]
|
|
9700
|
+
},
|
|
9701
|
+
request: {
|
|
9702
|
+
method: "POST",
|
|
9703
|
+
path: "invoice",
|
|
9704
|
+
query: { minorversion: "70" },
|
|
9705
|
+
body: "args"
|
|
9706
|
+
},
|
|
9707
|
+
cas: "native-idempotency",
|
|
9708
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9709
|
+
},
|
|
9710
|
+
{
|
|
9711
|
+
name: "invoices.update",
|
|
9712
|
+
class: "mutation",
|
|
9713
|
+
description: "Sparse-update a QuickBooks invoice. Caller must include Id and SyncToken from the prior read.",
|
|
9714
|
+
parameters: {
|
|
9715
|
+
type: "object",
|
|
9716
|
+
properties: {
|
|
9717
|
+
Id: { type: "string" },
|
|
9718
|
+
SyncToken: { type: "string" },
|
|
9719
|
+
sparse: { type: "boolean", default: true },
|
|
9720
|
+
CustomerRef: { type: "object" },
|
|
9721
|
+
Line: { type: "array", items: { type: "object" } },
|
|
9722
|
+
DueDate: { type: "string" },
|
|
9723
|
+
CustomerMemo: { type: "object" },
|
|
9724
|
+
PrivateNote: { type: "string" }
|
|
9725
|
+
},
|
|
9726
|
+
required: ["Id", "SyncToken"]
|
|
9727
|
+
},
|
|
9728
|
+
request: {
|
|
9729
|
+
method: "POST",
|
|
9730
|
+
path: "invoice",
|
|
9731
|
+
query: { minorversion: "70" },
|
|
9732
|
+
body: "args"
|
|
9733
|
+
},
|
|
9734
|
+
cas: "optimistic-read-verify",
|
|
9735
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9736
|
+
},
|
|
9737
|
+
{
|
|
9738
|
+
name: "items.create",
|
|
9739
|
+
class: "mutation",
|
|
9740
|
+
description: "Create a QuickBooks item (product or service).",
|
|
9741
|
+
parameters: {
|
|
9742
|
+
type: "object",
|
|
9743
|
+
properties: {
|
|
9744
|
+
Name: { type: "string" },
|
|
9745
|
+
Type: { type: "string", enum: ["Service", "Inventory", "NonInventory"] },
|
|
9746
|
+
IncomeAccountRef: { type: "object" },
|
|
9747
|
+
ExpenseAccountRef: { type: "object" },
|
|
9748
|
+
UnitPrice: { type: "number" },
|
|
9749
|
+
Description: { type: "string" },
|
|
9750
|
+
Taxable: { type: "boolean" }
|
|
9751
|
+
},
|
|
9752
|
+
required: ["Name", "Type", "IncomeAccountRef"]
|
|
9753
|
+
},
|
|
9754
|
+
request: {
|
|
9755
|
+
method: "POST",
|
|
9756
|
+
path: "item",
|
|
9757
|
+
query: { minorversion: "70" },
|
|
9758
|
+
body: "args"
|
|
9759
|
+
},
|
|
9760
|
+
cas: "native-idempotency",
|
|
9761
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9762
|
+
},
|
|
9763
|
+
{
|
|
9764
|
+
name: "customers.delete",
|
|
9765
|
+
class: "mutation",
|
|
9766
|
+
description: "Mark a QuickBooks customer inactive. QBO does not support hard deletes \u2014 caller must supply Id and SyncToken from the prior read.",
|
|
9767
|
+
parameters: {
|
|
9768
|
+
type: "object",
|
|
9769
|
+
properties: {
|
|
9770
|
+
Id: { type: "string" },
|
|
9771
|
+
SyncToken: { type: "string" },
|
|
9772
|
+
sparse: { type: "boolean", default: true },
|
|
9773
|
+
Active: { type: "boolean", default: false }
|
|
9774
|
+
},
|
|
9775
|
+
required: ["Id", "SyncToken"]
|
|
9776
|
+
},
|
|
9777
|
+
request: {
|
|
9778
|
+
method: "POST",
|
|
9779
|
+
path: "customer",
|
|
9780
|
+
query: { minorversion: "70" },
|
|
9781
|
+
body: "args"
|
|
9782
|
+
},
|
|
9783
|
+
cas: "native-idempotency",
|
|
9784
|
+
externalEffect: true,
|
|
9785
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9786
|
+
},
|
|
9787
|
+
{
|
|
9788
|
+
name: "invoices.delete",
|
|
9789
|
+
class: "mutation",
|
|
9790
|
+
description: "Void a QuickBooks invoice (QBO does not hard-delete invoices). Caller must supply Id and SyncToken.",
|
|
9791
|
+
parameters: {
|
|
9792
|
+
type: "object",
|
|
9793
|
+
properties: {
|
|
9794
|
+
Id: { type: "string" },
|
|
9795
|
+
SyncToken: { type: "string" }
|
|
9796
|
+
},
|
|
9797
|
+
required: ["Id", "SyncToken"]
|
|
9798
|
+
},
|
|
9799
|
+
request: {
|
|
9800
|
+
method: "POST",
|
|
9801
|
+
path: "invoice",
|
|
9802
|
+
query: { operation: "void", minorversion: "70" },
|
|
9803
|
+
body: "args"
|
|
9804
|
+
},
|
|
9805
|
+
cas: "native-idempotency",
|
|
9806
|
+
externalEffect: true,
|
|
9807
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9808
|
+
},
|
|
9809
|
+
{
|
|
9810
|
+
name: "invoices.send",
|
|
9811
|
+
class: "mutation",
|
|
9812
|
+
description: "Email a QuickBooks invoice to the customer (optionally override the recipient with `sendTo`).",
|
|
9813
|
+
parameters: {
|
|
9814
|
+
type: "object",
|
|
9815
|
+
properties: {
|
|
9816
|
+
invoiceId: { type: "string" },
|
|
9817
|
+
sendTo: { type: "string" }
|
|
9818
|
+
},
|
|
9819
|
+
required: ["invoiceId"]
|
|
9820
|
+
},
|
|
9821
|
+
request: {
|
|
9822
|
+
method: "POST",
|
|
9823
|
+
path: "invoice/{invoiceId}/send",
|
|
9824
|
+
query: { sendTo: "{sendTo}", minorversion: "70" }
|
|
9825
|
+
},
|
|
9826
|
+
cas: "native-idempotency",
|
|
9827
|
+
externalEffect: true,
|
|
9828
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9829
|
+
},
|
|
9830
|
+
{
|
|
9831
|
+
name: "bills.create",
|
|
9832
|
+
class: "mutation",
|
|
9833
|
+
description: "Create a QuickBooks vendor bill. `VendorRef` and `Line` are required by the API.",
|
|
9834
|
+
parameters: {
|
|
9835
|
+
type: "object",
|
|
9836
|
+
properties: {
|
|
9837
|
+
VendorRef: { type: "object" },
|
|
9838
|
+
Line: { type: "array", items: { type: "object" } },
|
|
9839
|
+
TxnDate: { type: "string" },
|
|
9840
|
+
DueDate: { type: "string" },
|
|
9841
|
+
CurrencyRef: { type: "object" },
|
|
9842
|
+
PrivateNote: { type: "string" },
|
|
9843
|
+
APAccountRef: { type: "object" }
|
|
9844
|
+
},
|
|
9845
|
+
required: ["VendorRef", "Line"]
|
|
9846
|
+
},
|
|
9847
|
+
request: {
|
|
9848
|
+
method: "POST",
|
|
9849
|
+
path: "bill",
|
|
9850
|
+
query: { minorversion: "70" },
|
|
9851
|
+
body: "args"
|
|
9852
|
+
},
|
|
9853
|
+
cas: "native-idempotency",
|
|
9854
|
+
externalEffect: true,
|
|
9855
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9856
|
+
},
|
|
9857
|
+
{
|
|
9858
|
+
name: "vendors.create",
|
|
9859
|
+
class: "mutation",
|
|
9860
|
+
description: "Create a QuickBooks vendor.",
|
|
9861
|
+
parameters: {
|
|
9862
|
+
type: "object",
|
|
9863
|
+
properties: {
|
|
9864
|
+
DisplayName: { type: "string" },
|
|
9865
|
+
GivenName: { type: "string" },
|
|
9866
|
+
FamilyName: { type: "string" },
|
|
9867
|
+
CompanyName: { type: "string" },
|
|
9868
|
+
PrimaryEmailAddr: { type: "object" },
|
|
9869
|
+
PrimaryPhone: { type: "object" },
|
|
9870
|
+
BillAddr: { type: "object" },
|
|
9871
|
+
TaxIdentifier: { type: "string" },
|
|
9872
|
+
AcctNum: { type: "string" }
|
|
9873
|
+
},
|
|
9874
|
+
required: ["DisplayName"]
|
|
9875
|
+
},
|
|
9876
|
+
request: {
|
|
9877
|
+
method: "POST",
|
|
9878
|
+
path: "vendor",
|
|
9879
|
+
query: { minorversion: "70" },
|
|
9880
|
+
body: "args"
|
|
9881
|
+
},
|
|
9882
|
+
cas: "native-idempotency",
|
|
9883
|
+
externalEffect: true,
|
|
9884
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9885
|
+
},
|
|
9886
|
+
{
|
|
9887
|
+
name: "payments.create",
|
|
9888
|
+
class: "mutation",
|
|
9889
|
+
description: "Record a QuickBooks payment against a customer (and optionally apply to invoices via `Line[].LinkedTxn`).",
|
|
9890
|
+
parameters: {
|
|
9891
|
+
type: "object",
|
|
9892
|
+
properties: {
|
|
9893
|
+
CustomerRef: { type: "object" },
|
|
9894
|
+
TotalAmt: { type: "number" },
|
|
9895
|
+
TxnDate: { type: "string" },
|
|
9896
|
+
PaymentMethodRef: { type: "object" },
|
|
9897
|
+
DepositToAccountRef: { type: "object" },
|
|
9898
|
+
Line: { type: "array", items: { type: "object" } },
|
|
9899
|
+
PrivateNote: { type: "string" }
|
|
9900
|
+
},
|
|
9901
|
+
required: ["CustomerRef", "TotalAmt"]
|
|
9902
|
+
},
|
|
9903
|
+
request: {
|
|
9904
|
+
method: "POST",
|
|
9905
|
+
path: "payment",
|
|
9906
|
+
query: { minorversion: "70" },
|
|
9907
|
+
body: "args"
|
|
9908
|
+
},
|
|
9909
|
+
cas: "native-idempotency",
|
|
9910
|
+
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
9911
|
+
}
|
|
9912
|
+
]
|
|
9913
|
+
});
|
|
9914
|
+
|
|
9484
9915
|
// src/connectors/adapters/sharepoint.ts
|
|
9485
9916
|
var SCOPES11 = [
|
|
9486
9917
|
"https://graph.microsoft.com/Sites.ReadWrite.All",
|
|
@@ -12116,6 +12547,421 @@ async function deleteTemplate(inv, accessToken) {
|
|
|
12116
12547
|
};
|
|
12117
12548
|
}
|
|
12118
12549
|
|
|
12550
|
+
// src/connectors/adapters/xero.ts
|
|
12551
|
+
var xeroConnector = declarativeRestConnector({
|
|
12552
|
+
kind: "xero",
|
|
12553
|
+
displayName: "Xero",
|
|
12554
|
+
description: "Search and update Xero contacts, invoices, and chart-of-account records across authorized organizations.",
|
|
12555
|
+
auth: {
|
|
12556
|
+
kind: "oauth2",
|
|
12557
|
+
authorizationUrl: "https://login.xero.com/identity/connect/authorize",
|
|
12558
|
+
tokenUrl: "https://identity.xero.com/connect/token",
|
|
12559
|
+
// `accounting.reports.read` is a distinct Xero scope — the reports
|
|
12560
|
+
// namespace is not covered by settings/transactions and 403s without it.
|
|
12561
|
+
scopes: [
|
|
12562
|
+
"offline_access",
|
|
12563
|
+
"accounting.contacts",
|
|
12564
|
+
"accounting.transactions",
|
|
12565
|
+
"accounting.settings.read",
|
|
12566
|
+
"accounting.reports.read"
|
|
12567
|
+
],
|
|
12568
|
+
clientIdEnv: "XERO_OAUTH_CLIENT_ID",
|
|
12569
|
+
clientSecretEnv: "XERO_OAUTH_CLIENT_SECRET"
|
|
12570
|
+
},
|
|
12571
|
+
category: "crm",
|
|
12572
|
+
defaultConsistencyModel: "authoritative",
|
|
12573
|
+
baseUrl: "https://api.xero.com",
|
|
12574
|
+
defaultHeaders: { accept: "application/json" },
|
|
12575
|
+
test: { method: "GET", path: "/connections" },
|
|
12576
|
+
capabilities: [
|
|
12577
|
+
{
|
|
12578
|
+
// Every other Xero capability REQUIRES `tenantId`, and a tenant id is an
|
|
12579
|
+
// opaque GUID no caller can know before asking. Without this read the
|
|
12580
|
+
// connector is unusable by an agent: the only place the id appeared was
|
|
12581
|
+
// the health check, which discards its body.
|
|
12582
|
+
name: "tenants.list",
|
|
12583
|
+
class: "read",
|
|
12584
|
+
description: "List the Xero organizations (tenants) this connection is authorized for. Call this FIRST \u2014 every other Xero capability requires the `tenantId` returned here.",
|
|
12585
|
+
parameters: { type: "object", properties: {} },
|
|
12586
|
+
request: { method: "GET", path: "/connections" }
|
|
12587
|
+
},
|
|
12588
|
+
{
|
|
12589
|
+
// Xero's reporting surface, like QBO's, is a separate namespace from the
|
|
12590
|
+
// record endpoints. These are the statements a return or a books review
|
|
12591
|
+
// is actually built from.
|
|
12592
|
+
name: "reports.get",
|
|
12593
|
+
class: "read",
|
|
12594
|
+
description: "Run a Xero accounting report. `reportName` is the Xero report id (ProfitAndLoss, BalanceSheet, TrialBalance, BankSummary, AgedReceivablesByContact, AgedPayablesByContact).",
|
|
12595
|
+
parameters: {
|
|
12596
|
+
type: "object",
|
|
12597
|
+
properties: {
|
|
12598
|
+
tenantId: { type: "string", description: "From tenants.list." },
|
|
12599
|
+
reportName: {
|
|
12600
|
+
type: "string",
|
|
12601
|
+
enum: [
|
|
12602
|
+
"ProfitAndLoss",
|
|
12603
|
+
"BalanceSheet",
|
|
12604
|
+
"TrialBalance",
|
|
12605
|
+
"BankSummary",
|
|
12606
|
+
"AgedReceivablesByContact",
|
|
12607
|
+
"AgedPayablesByContact"
|
|
12608
|
+
]
|
|
12609
|
+
},
|
|
12610
|
+
fromDate: { type: "string", description: "YYYY-MM-DD." },
|
|
12611
|
+
toDate: { type: "string", description: "YYYY-MM-DD." },
|
|
12612
|
+
date: { type: "string", description: "YYYY-MM-DD \u2014 point-in-time reports (BalanceSheet, TrialBalance)." },
|
|
12613
|
+
contactId: { type: "string", description: "Required by the aged receivables/payables reports." }
|
|
12614
|
+
},
|
|
12615
|
+
required: ["tenantId", "reportName"]
|
|
12616
|
+
},
|
|
12617
|
+
request: {
|
|
12618
|
+
method: "GET",
|
|
12619
|
+
path: "/api.xro/2.0/Reports/{reportName}",
|
|
12620
|
+
query: { fromDate: "{fromDate}", toDate: "{toDate}", date: "{date}", contactID: "{contactId}" },
|
|
12621
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12622
|
+
},
|
|
12623
|
+
requiredScopes: ["accounting.reports.read"]
|
|
12624
|
+
},
|
|
12625
|
+
{
|
|
12626
|
+
name: "contacts.search",
|
|
12627
|
+
class: "read",
|
|
12628
|
+
description: "Search Xero contacts in a tenant using the Xero where-clause query language.",
|
|
12629
|
+
parameters: {
|
|
12630
|
+
type: "object",
|
|
12631
|
+
properties: {
|
|
12632
|
+
tenantId: { type: "string", description: "Xero tenant (organization) id from /connections." },
|
|
12633
|
+
where: { type: "string", description: `Xero where clause, e.g. 'Name.Contains("Acme")'.` },
|
|
12634
|
+
order: { type: "string", description: 'Sort expression, e.g. "Name ASC".' },
|
|
12635
|
+
page: { type: "integer", minimum: 1 }
|
|
12636
|
+
},
|
|
12637
|
+
required: ["tenantId"]
|
|
12638
|
+
},
|
|
12639
|
+
request: {
|
|
12640
|
+
method: "GET",
|
|
12641
|
+
path: "/api.xro/2.0/Contacts",
|
|
12642
|
+
query: { where: "{where}", order: "{order}", page: "{page}" },
|
|
12643
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12644
|
+
},
|
|
12645
|
+
requiredScopes: ["accounting.contacts"]
|
|
12646
|
+
},
|
|
12647
|
+
{
|
|
12648
|
+
name: "contacts.get",
|
|
12649
|
+
class: "read",
|
|
12650
|
+
description: "Read a single Xero contact by ContactID.",
|
|
12651
|
+
parameters: {
|
|
12652
|
+
type: "object",
|
|
12653
|
+
properties: {
|
|
12654
|
+
tenantId: { type: "string" },
|
|
12655
|
+
contactId: { type: "string", description: "Xero ContactID (GUID)." }
|
|
12656
|
+
},
|
|
12657
|
+
required: ["tenantId", "contactId"]
|
|
12658
|
+
},
|
|
12659
|
+
request: {
|
|
12660
|
+
method: "GET",
|
|
12661
|
+
path: "/api.xro/2.0/Contacts/{contactId}",
|
|
12662
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12663
|
+
},
|
|
12664
|
+
requiredScopes: ["accounting.contacts"]
|
|
12665
|
+
},
|
|
12666
|
+
{
|
|
12667
|
+
name: "contacts.create",
|
|
12668
|
+
class: "mutation",
|
|
12669
|
+
description: "Create a Xero contact. Pass a Contacts array per the Xero API contract.",
|
|
12670
|
+
parameters: {
|
|
12671
|
+
type: "object",
|
|
12672
|
+
properties: {
|
|
12673
|
+
tenantId: { type: "string" },
|
|
12674
|
+
Contacts: {
|
|
12675
|
+
type: "array",
|
|
12676
|
+
items: {
|
|
12677
|
+
type: "object",
|
|
12678
|
+
properties: {
|
|
12679
|
+
Name: { type: "string" },
|
|
12680
|
+
EmailAddress: { type: "string" },
|
|
12681
|
+
FirstName: { type: "string" },
|
|
12682
|
+
LastName: { type: "string" }
|
|
12683
|
+
},
|
|
12684
|
+
required: ["Name"]
|
|
12685
|
+
}
|
|
12686
|
+
}
|
|
12687
|
+
},
|
|
12688
|
+
required: ["tenantId", "Contacts"]
|
|
12689
|
+
},
|
|
12690
|
+
request: {
|
|
12691
|
+
method: "POST",
|
|
12692
|
+
path: "/api.xro/2.0/Contacts",
|
|
12693
|
+
body: { Contacts: "{Contacts}" },
|
|
12694
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12695
|
+
},
|
|
12696
|
+
cas: "native-idempotency",
|
|
12697
|
+
requiredScopes: ["accounting.contacts"]
|
|
12698
|
+
},
|
|
12699
|
+
{
|
|
12700
|
+
name: "contacts.update",
|
|
12701
|
+
class: "mutation",
|
|
12702
|
+
description: "Update a Xero contact by ContactID.",
|
|
12703
|
+
parameters: {
|
|
12704
|
+
type: "object",
|
|
12705
|
+
properties: {
|
|
12706
|
+
tenantId: { type: "string" },
|
|
12707
|
+
contactId: { type: "string" },
|
|
12708
|
+
fields: { type: "object", description: "Partial Xero Contact payload." }
|
|
12709
|
+
},
|
|
12710
|
+
required: ["tenantId", "contactId", "fields"]
|
|
12711
|
+
},
|
|
12712
|
+
request: {
|
|
12713
|
+
method: "POST",
|
|
12714
|
+
path: "/api.xro/2.0/Contacts/{contactId}",
|
|
12715
|
+
body: "{fields}",
|
|
12716
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12717
|
+
},
|
|
12718
|
+
cas: "optimistic-read-verify",
|
|
12719
|
+
requiredScopes: ["accounting.contacts"]
|
|
12720
|
+
},
|
|
12721
|
+
{
|
|
12722
|
+
name: "invoices.search",
|
|
12723
|
+
class: "read",
|
|
12724
|
+
description: "Search Xero invoices in a tenant.",
|
|
12725
|
+
parameters: {
|
|
12726
|
+
type: "object",
|
|
12727
|
+
properties: {
|
|
12728
|
+
tenantId: { type: "string" },
|
|
12729
|
+
where: { type: "string", description: `Xero where clause, e.g. 'Status=="AUTHORISED"'.` },
|
|
12730
|
+
order: { type: "string", description: 'Sort expression, e.g. "Date DESC".' },
|
|
12731
|
+
page: { type: "integer", minimum: 1 }
|
|
12732
|
+
},
|
|
12733
|
+
required: ["tenantId"]
|
|
12734
|
+
},
|
|
12735
|
+
request: {
|
|
12736
|
+
method: "GET",
|
|
12737
|
+
path: "/api.xro/2.0/Invoices",
|
|
12738
|
+
query: { where: "{where}", order: "{order}", page: "{page}" },
|
|
12739
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12740
|
+
},
|
|
12741
|
+
requiredScopes: ["accounting.transactions"]
|
|
12742
|
+
},
|
|
12743
|
+
{
|
|
12744
|
+
name: "invoices.get",
|
|
12745
|
+
class: "read",
|
|
12746
|
+
description: "Read a single Xero invoice by InvoiceID or InvoiceNumber.",
|
|
12747
|
+
parameters: {
|
|
12748
|
+
type: "object",
|
|
12749
|
+
properties: {
|
|
12750
|
+
tenantId: { type: "string" },
|
|
12751
|
+
invoiceId: { type: "string", description: "Xero InvoiceID (GUID) or InvoiceNumber." }
|
|
12752
|
+
},
|
|
12753
|
+
required: ["tenantId", "invoiceId"]
|
|
12754
|
+
},
|
|
12755
|
+
request: {
|
|
12756
|
+
method: "GET",
|
|
12757
|
+
path: "/api.xro/2.0/Invoices/{invoiceId}",
|
|
12758
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12759
|
+
},
|
|
12760
|
+
requiredScopes: ["accounting.transactions"]
|
|
12761
|
+
},
|
|
12762
|
+
{
|
|
12763
|
+
name: "invoices.create",
|
|
12764
|
+
class: "mutation",
|
|
12765
|
+
description: "Create a Xero invoice (AR or AP). Pass an Invoices array per the Xero API contract.",
|
|
12766
|
+
parameters: {
|
|
12767
|
+
type: "object",
|
|
12768
|
+
properties: {
|
|
12769
|
+
tenantId: { type: "string" },
|
|
12770
|
+
Invoices: {
|
|
12771
|
+
type: "array",
|
|
12772
|
+
items: {
|
|
12773
|
+
type: "object",
|
|
12774
|
+
properties: {
|
|
12775
|
+
Type: { type: "string", enum: ["ACCREC", "ACCPAY"] },
|
|
12776
|
+
Contact: { type: "object" },
|
|
12777
|
+
LineItems: { type: "array", items: { type: "object" } },
|
|
12778
|
+
Date: { type: "string", description: "YYYY-MM-DD." },
|
|
12779
|
+
DueDate: { type: "string", description: "YYYY-MM-DD." },
|
|
12780
|
+
Reference: { type: "string" },
|
|
12781
|
+
Status: { type: "string", enum: ["DRAFT", "SUBMITTED", "AUTHORISED"] }
|
|
12782
|
+
},
|
|
12783
|
+
required: ["Type", "Contact", "LineItems"]
|
|
12784
|
+
}
|
|
12785
|
+
}
|
|
12786
|
+
},
|
|
12787
|
+
required: ["tenantId", "Invoices"]
|
|
12788
|
+
},
|
|
12789
|
+
request: {
|
|
12790
|
+
method: "POST",
|
|
12791
|
+
path: "/api.xro/2.0/Invoices",
|
|
12792
|
+
body: { Invoices: "{Invoices}" },
|
|
12793
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12794
|
+
},
|
|
12795
|
+
cas: "native-idempotency",
|
|
12796
|
+
requiredScopes: ["accounting.transactions"]
|
|
12797
|
+
},
|
|
12798
|
+
{
|
|
12799
|
+
name: "accounts.search",
|
|
12800
|
+
class: "read",
|
|
12801
|
+
description: "List Xero chart-of-account records for a tenant.",
|
|
12802
|
+
parameters: {
|
|
12803
|
+
type: "object",
|
|
12804
|
+
properties: {
|
|
12805
|
+
tenantId: { type: "string" },
|
|
12806
|
+
where: { type: "string", description: `Xero where clause, e.g. 'Type=="REVENUE"'.` },
|
|
12807
|
+
order: { type: "string" }
|
|
12808
|
+
},
|
|
12809
|
+
required: ["tenantId"]
|
|
12810
|
+
},
|
|
12811
|
+
request: {
|
|
12812
|
+
method: "GET",
|
|
12813
|
+
path: "/api.xro/2.0/Accounts",
|
|
12814
|
+
query: { where: "{where}", order: "{order}" },
|
|
12815
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12816
|
+
},
|
|
12817
|
+
requiredScopes: ["accounting.settings.read"]
|
|
12818
|
+
},
|
|
12819
|
+
{
|
|
12820
|
+
name: "contacts.archive",
|
|
12821
|
+
class: "mutation",
|
|
12822
|
+
description: "Archive a Xero contact (sets ContactStatus to ARCHIVED).",
|
|
12823
|
+
parameters: {
|
|
12824
|
+
type: "object",
|
|
12825
|
+
properties: {
|
|
12826
|
+
tenantId: { type: "string" },
|
|
12827
|
+
contactId: { type: "string", description: "Xero ContactID (GUID)." }
|
|
12828
|
+
},
|
|
12829
|
+
required: ["tenantId", "contactId"]
|
|
12830
|
+
},
|
|
12831
|
+
request: {
|
|
12832
|
+
method: "POST",
|
|
12833
|
+
path: "/api.xro/2.0/Contacts/{contactId}",
|
|
12834
|
+
body: { ContactStatus: "ARCHIVED" },
|
|
12835
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12836
|
+
},
|
|
12837
|
+
cas: "native-idempotency",
|
|
12838
|
+
externalEffect: true,
|
|
12839
|
+
requiredScopes: ["accounting.contacts"]
|
|
12840
|
+
},
|
|
12841
|
+
{
|
|
12842
|
+
name: "invoices.delete",
|
|
12843
|
+
class: "mutation",
|
|
12844
|
+
description: "Void or delete a Xero invoice. DRAFT/SUBMITTED invoices accept DELETED, AUTHORISED invoices accept VOIDED.",
|
|
12845
|
+
parameters: {
|
|
12846
|
+
type: "object",
|
|
12847
|
+
properties: {
|
|
12848
|
+
tenantId: { type: "string" },
|
|
12849
|
+
invoiceId: { type: "string", description: "Xero InvoiceID (GUID) or InvoiceNumber." },
|
|
12850
|
+
status: {
|
|
12851
|
+
type: "string",
|
|
12852
|
+
enum: ["VOIDED", "DELETED"],
|
|
12853
|
+
description: "Target status. VOIDED for authorised invoices, DELETED for draft/submitted invoices."
|
|
12854
|
+
}
|
|
12855
|
+
},
|
|
12856
|
+
required: ["tenantId", "invoiceId", "status"]
|
|
12857
|
+
},
|
|
12858
|
+
request: {
|
|
12859
|
+
method: "POST",
|
|
12860
|
+
path: "/api.xro/2.0/Invoices/{invoiceId}",
|
|
12861
|
+
body: { Status: "{status}" },
|
|
12862
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12863
|
+
},
|
|
12864
|
+
cas: "native-idempotency",
|
|
12865
|
+
externalEffect: true,
|
|
12866
|
+
requiredScopes: ["accounting.transactions"]
|
|
12867
|
+
},
|
|
12868
|
+
{
|
|
12869
|
+
name: "invoices.email",
|
|
12870
|
+
class: "mutation",
|
|
12871
|
+
description: "Email a Xero invoice to its contact using the saved template.",
|
|
12872
|
+
parameters: {
|
|
12873
|
+
type: "object",
|
|
12874
|
+
properties: {
|
|
12875
|
+
tenantId: { type: "string" },
|
|
12876
|
+
invoiceId: { type: "string", description: "Xero InvoiceID (GUID) or InvoiceNumber." }
|
|
12877
|
+
},
|
|
12878
|
+
required: ["tenantId", "invoiceId"]
|
|
12879
|
+
},
|
|
12880
|
+
request: {
|
|
12881
|
+
method: "POST",
|
|
12882
|
+
path: "/api.xro/2.0/Invoices/{invoiceId}/Email",
|
|
12883
|
+
body: {},
|
|
12884
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12885
|
+
},
|
|
12886
|
+
cas: "native-idempotency",
|
|
12887
|
+
externalEffect: true,
|
|
12888
|
+
requiredScopes: ["accounting.transactions"]
|
|
12889
|
+
},
|
|
12890
|
+
{
|
|
12891
|
+
name: "payments.create",
|
|
12892
|
+
class: "mutation",
|
|
12893
|
+
description: "Apply a payment to a Xero invoice or credit note. Pass a Payments array per the Xero API contract.",
|
|
12894
|
+
parameters: {
|
|
12895
|
+
type: "object",
|
|
12896
|
+
properties: {
|
|
12897
|
+
tenantId: { type: "string" },
|
|
12898
|
+
Payments: {
|
|
12899
|
+
type: "array",
|
|
12900
|
+
items: {
|
|
12901
|
+
type: "object",
|
|
12902
|
+
properties: {
|
|
12903
|
+
Invoice: { type: "object", description: 'Invoice reference, e.g. { InvoiceID: "..." }.' },
|
|
12904
|
+
CreditNote: { type: "object", description: 'CreditNote reference, e.g. { CreditNoteID: "..." }.' },
|
|
12905
|
+
Account: { type: "object", description: 'Bank account reference, e.g. { Code: "090" }.' },
|
|
12906
|
+
Date: { type: "string", description: "YYYY-MM-DD." },
|
|
12907
|
+
Amount: { type: "number" },
|
|
12908
|
+
Reference: { type: "string" }
|
|
12909
|
+
},
|
|
12910
|
+
required: ["Account", "Date", "Amount"]
|
|
12911
|
+
}
|
|
12912
|
+
}
|
|
12913
|
+
},
|
|
12914
|
+
required: ["tenantId", "Payments"]
|
|
12915
|
+
},
|
|
12916
|
+
request: {
|
|
12917
|
+
method: "POST",
|
|
12918
|
+
path: "/api.xro/2.0/Payments",
|
|
12919
|
+
body: { Payments: "{Payments}" },
|
|
12920
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12921
|
+
},
|
|
12922
|
+
cas: "native-idempotency",
|
|
12923
|
+
externalEffect: true,
|
|
12924
|
+
requiredScopes: ["accounting.transactions"]
|
|
12925
|
+
},
|
|
12926
|
+
{
|
|
12927
|
+
name: "credit-notes.create",
|
|
12928
|
+
class: "mutation",
|
|
12929
|
+
description: "Create a Xero credit note (ACCRECCREDIT or ACCPAYCREDIT). Pass a CreditNotes array per the Xero API contract.",
|
|
12930
|
+
parameters: {
|
|
12931
|
+
type: "object",
|
|
12932
|
+
properties: {
|
|
12933
|
+
tenantId: { type: "string" },
|
|
12934
|
+
CreditNotes: {
|
|
12935
|
+
type: "array",
|
|
12936
|
+
items: {
|
|
12937
|
+
type: "object",
|
|
12938
|
+
properties: {
|
|
12939
|
+
Type: { type: "string", enum: ["ACCRECCREDIT", "ACCPAYCREDIT"] },
|
|
12940
|
+
Contact: { type: "object" },
|
|
12941
|
+
LineItems: { type: "array", items: { type: "object" } },
|
|
12942
|
+
Date: { type: "string", description: "YYYY-MM-DD." },
|
|
12943
|
+
Reference: { type: "string" },
|
|
12944
|
+
Status: { type: "string", enum: ["DRAFT", "SUBMITTED", "AUTHORISED"] }
|
|
12945
|
+
},
|
|
12946
|
+
required: ["Type", "Contact", "LineItems"]
|
|
12947
|
+
}
|
|
12948
|
+
}
|
|
12949
|
+
},
|
|
12950
|
+
required: ["tenantId", "CreditNotes"]
|
|
12951
|
+
},
|
|
12952
|
+
request: {
|
|
12953
|
+
method: "POST",
|
|
12954
|
+
path: "/api.xro/2.0/CreditNotes",
|
|
12955
|
+
body: { CreditNotes: "{CreditNotes}" },
|
|
12956
|
+
headers: { "xero-tenant-id": "{tenantId}" }
|
|
12957
|
+
},
|
|
12958
|
+
cas: "native-idempotency",
|
|
12959
|
+
externalEffect: true,
|
|
12960
|
+
requiredScopes: ["accounting.transactions"]
|
|
12961
|
+
}
|
|
12962
|
+
]
|
|
12963
|
+
});
|
|
12964
|
+
|
|
12119
12965
|
// src/connectors/adapters/factories.ts
|
|
12120
12966
|
function defineFactoryAdapter(factory, envMap) {
|
|
12121
12967
|
const metadataOptions = Object.fromEntries(
|
|
@@ -12217,6 +13063,17 @@ var CONNECTOR_ADAPTER_FACTORIES = [
|
|
|
12217
13063
|
defineFactoryAdapter(twitter, {
|
|
12218
13064
|
clientId: "TWITTER_OAUTH_CLIENT_ID",
|
|
12219
13065
|
clientSecret: "TWITTER_OAUTH_CLIENT_SECRET"
|
|
13066
|
+
}),
|
|
13067
|
+
// Declarative OAuth2 connectors: the manifest already pins clientIdEnv /
|
|
13068
|
+
// clientSecretEnv; the envMap re-pins the same names so registration is
|
|
13069
|
+
// gated on the OAuth app actually being configured (no half-live connector).
|
|
13070
|
+
defineFactoryAdapter(() => quickbooksConnector, {
|
|
13071
|
+
clientId: "QUICKBOOKS_OAUTH_CLIENT_ID",
|
|
13072
|
+
clientSecret: "QUICKBOOKS_OAUTH_CLIENT_SECRET"
|
|
13073
|
+
}),
|
|
13074
|
+
defineFactoryAdapter(() => xeroConnector, {
|
|
13075
|
+
clientId: "XERO_OAUTH_CLIENT_ID",
|
|
13076
|
+
clientSecret: "XERO_OAUTH_CLIENT_SECRET"
|
|
12220
13077
|
})
|
|
12221
13078
|
];
|
|
12222
13079
|
function resolveConnectorAdapterFactoryOptions(definition, envSource) {
|
|
@@ -19315,852 +20172,6 @@ var attioConnector = declarativeRestConnector({
|
|
|
19315
20172
|
]
|
|
19316
20173
|
});
|
|
19317
20174
|
|
|
19318
|
-
// src/connectors/adapters/quickbooks.ts
|
|
19319
|
-
var quickbooksConnector = declarativeRestConnector({
|
|
19320
|
-
kind: "quickbooks",
|
|
19321
|
-
displayName: "QuickBooks",
|
|
19322
|
-
description: "Query QuickBooks Online entities with SQL-like queries and create or update customers, invoices, and items.",
|
|
19323
|
-
auth: {
|
|
19324
|
-
kind: "oauth2",
|
|
19325
|
-
authorizationUrl: "https://appcenter.intuit.com/connect/oauth2",
|
|
19326
|
-
tokenUrl: "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",
|
|
19327
|
-
scopes: ["com.intuit.quickbooks.accounting"],
|
|
19328
|
-
clientIdEnv: "QUICKBOOKS_OAUTH_CLIENT_ID",
|
|
19329
|
-
clientSecretEnv: "QUICKBOOKS_OAUTH_CLIENT_SECRET"
|
|
19330
|
-
},
|
|
19331
|
-
category: "commerce",
|
|
19332
|
-
defaultConsistencyModel: "authoritative",
|
|
19333
|
-
baseUrl: { metadataKey: "apiBaseUrl" },
|
|
19334
|
-
defaultHeaders: {
|
|
19335
|
-
accept: "application/json"
|
|
19336
|
-
},
|
|
19337
|
-
// `realmId` is pinned at connect time, not passed per call, so the health
|
|
19338
|
-
// check reads it from connection metadata. Written as `{realmId}` it resolved
|
|
19339
|
-
// against the (empty) test argument map and threw before any request was
|
|
19340
|
-
// made — the connection test could never pass, for any connection.
|
|
19341
|
-
test: { method: "GET", path: "companyinfo/{connection.realmId}", query: { minorversion: "70" } },
|
|
19342
|
-
capabilities: [
|
|
19343
|
-
{
|
|
19344
|
-
// The reports namespace is NOT reachable through `entities.query` — QBO
|
|
19345
|
-
// exposes the accountant-grade statements only under /reports/{name}.
|
|
19346
|
-
// These four are the tax/bookkeeping read surface; without them a tax
|
|
19347
|
-
// agent can enumerate ledger rows but cannot obtain a P&L or a balance
|
|
19348
|
-
// sheet, which is what a return is actually built from.
|
|
19349
|
-
name: "reports.get",
|
|
19350
|
-
class: "read",
|
|
19351
|
-
description: "Run a QuickBooks Online report. `reportName` is the QBO report id (ProfitAndLoss, BalanceSheet, TrialBalance, GeneralLedger, CashFlow, AgedReceivables, AgedPayables).",
|
|
19352
|
-
parameters: {
|
|
19353
|
-
type: "object",
|
|
19354
|
-
properties: {
|
|
19355
|
-
reportName: {
|
|
19356
|
-
type: "string",
|
|
19357
|
-
enum: [
|
|
19358
|
-
"ProfitAndLoss",
|
|
19359
|
-
"BalanceSheet",
|
|
19360
|
-
"TrialBalance",
|
|
19361
|
-
"GeneralLedger",
|
|
19362
|
-
"CashFlow",
|
|
19363
|
-
"AgedReceivables",
|
|
19364
|
-
"AgedPayables"
|
|
19365
|
-
]
|
|
19366
|
-
},
|
|
19367
|
-
start_date: { type: "string", description: "YYYY-MM-DD (inclusive)." },
|
|
19368
|
-
end_date: { type: "string", description: "YYYY-MM-DD (inclusive)." },
|
|
19369
|
-
accounting_method: { type: "string", enum: ["Cash", "Accrual"] },
|
|
19370
|
-
date_macro: { type: "string", description: 'e.g. "Last Fiscal Year" \u2014 alternative to start/end dates.' },
|
|
19371
|
-
summarize_column_by: { type: "string", description: "e.g. Month, Quarter, Year, Total." },
|
|
19372
|
-
minorversion: { type: "string" }
|
|
19373
|
-
},
|
|
19374
|
-
required: ["reportName"]
|
|
19375
|
-
},
|
|
19376
|
-
request: {
|
|
19377
|
-
method: "GET",
|
|
19378
|
-
path: "reports/{reportName}",
|
|
19379
|
-
query: {
|
|
19380
|
-
start_date: "{start_date}",
|
|
19381
|
-
end_date: "{end_date}",
|
|
19382
|
-
accounting_method: "{accounting_method}",
|
|
19383
|
-
date_macro: "{date_macro}",
|
|
19384
|
-
summarize_column_by: "{summarize_column_by}",
|
|
19385
|
-
minorversion: "{minorversion}"
|
|
19386
|
-
}
|
|
19387
|
-
},
|
|
19388
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19389
|
-
},
|
|
19390
|
-
{
|
|
19391
|
-
name: "companyinfo.get",
|
|
19392
|
-
class: "read",
|
|
19393
|
-
description: "Read the connected QuickBooks company profile (legal name, EIN/company id, fiscal year start, country) for the realm this connection was authorized against.",
|
|
19394
|
-
parameters: { type: "object", properties: { minorversion: { type: "string" } } },
|
|
19395
|
-
request: {
|
|
19396
|
-
method: "GET",
|
|
19397
|
-
path: "companyinfo/{connection.realmId}",
|
|
19398
|
-
query: { minorversion: "{minorversion}" }
|
|
19399
|
-
},
|
|
19400
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19401
|
-
},
|
|
19402
|
-
{
|
|
19403
|
-
name: "entities.query",
|
|
19404
|
-
class: "read",
|
|
19405
|
-
description: 'Run a QuickBooks Online query (e.g. "SELECT * FROM Customer WHERE Active = true MAXRESULTS 50").',
|
|
19406
|
-
parameters: {
|
|
19407
|
-
type: "object",
|
|
19408
|
-
properties: {
|
|
19409
|
-
query: { type: "string" },
|
|
19410
|
-
minorversion: { type: "string" }
|
|
19411
|
-
},
|
|
19412
|
-
required: ["query"]
|
|
19413
|
-
},
|
|
19414
|
-
request: {
|
|
19415
|
-
method: "GET",
|
|
19416
|
-
path: "query",
|
|
19417
|
-
query: { query: "{query}", minorversion: "{minorversion}" }
|
|
19418
|
-
},
|
|
19419
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19420
|
-
},
|
|
19421
|
-
{
|
|
19422
|
-
name: "customers.get",
|
|
19423
|
-
class: "read",
|
|
19424
|
-
description: "Read a QuickBooks customer by id.",
|
|
19425
|
-
parameters: {
|
|
19426
|
-
type: "object",
|
|
19427
|
-
properties: {
|
|
19428
|
-
customerId: { type: "string" },
|
|
19429
|
-
minorversion: { type: "string" }
|
|
19430
|
-
},
|
|
19431
|
-
required: ["customerId"]
|
|
19432
|
-
},
|
|
19433
|
-
request: {
|
|
19434
|
-
method: "GET",
|
|
19435
|
-
path: "customer/{customerId}",
|
|
19436
|
-
query: { minorversion: "{minorversion}" }
|
|
19437
|
-
},
|
|
19438
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19439
|
-
},
|
|
19440
|
-
{
|
|
19441
|
-
name: "customers.create",
|
|
19442
|
-
class: "mutation",
|
|
19443
|
-
description: "Create a QuickBooks customer.",
|
|
19444
|
-
parameters: {
|
|
19445
|
-
type: "object",
|
|
19446
|
-
properties: {
|
|
19447
|
-
DisplayName: { type: "string" },
|
|
19448
|
-
GivenName: { type: "string" },
|
|
19449
|
-
FamilyName: { type: "string" },
|
|
19450
|
-
CompanyName: { type: "string" },
|
|
19451
|
-
PrimaryEmailAddr: { type: "object" },
|
|
19452
|
-
PrimaryPhone: { type: "object" },
|
|
19453
|
-
BillAddr: { type: "object" },
|
|
19454
|
-
Notes: { type: "string" }
|
|
19455
|
-
},
|
|
19456
|
-
required: ["DisplayName"]
|
|
19457
|
-
},
|
|
19458
|
-
request: {
|
|
19459
|
-
method: "POST",
|
|
19460
|
-
path: "customer",
|
|
19461
|
-
query: { minorversion: "70" },
|
|
19462
|
-
body: "args"
|
|
19463
|
-
},
|
|
19464
|
-
cas: "native-idempotency",
|
|
19465
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19466
|
-
},
|
|
19467
|
-
{
|
|
19468
|
-
name: "customers.update",
|
|
19469
|
-
class: "mutation",
|
|
19470
|
-
description: "Sparse-update a QuickBooks customer. Caller must include Id and SyncToken from the prior read.",
|
|
19471
|
-
parameters: {
|
|
19472
|
-
type: "object",
|
|
19473
|
-
properties: {
|
|
19474
|
-
Id: { type: "string" },
|
|
19475
|
-
SyncToken: { type: "string" },
|
|
19476
|
-
sparse: { type: "boolean", default: true },
|
|
19477
|
-
DisplayName: { type: "string" },
|
|
19478
|
-
GivenName: { type: "string" },
|
|
19479
|
-
FamilyName: { type: "string" },
|
|
19480
|
-
CompanyName: { type: "string" },
|
|
19481
|
-
PrimaryEmailAddr: { type: "object" },
|
|
19482
|
-
PrimaryPhone: { type: "object" },
|
|
19483
|
-
BillAddr: { type: "object" },
|
|
19484
|
-
Notes: { type: "string" },
|
|
19485
|
-
Active: { type: "boolean" }
|
|
19486
|
-
},
|
|
19487
|
-
required: ["Id", "SyncToken"]
|
|
19488
|
-
},
|
|
19489
|
-
request: {
|
|
19490
|
-
method: "POST",
|
|
19491
|
-
path: "customer",
|
|
19492
|
-
query: { minorversion: "70" },
|
|
19493
|
-
body: "args"
|
|
19494
|
-
},
|
|
19495
|
-
cas: "optimistic-read-verify",
|
|
19496
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19497
|
-
},
|
|
19498
|
-
{
|
|
19499
|
-
name: "invoices.get",
|
|
19500
|
-
class: "read",
|
|
19501
|
-
description: "Read a QuickBooks invoice by id.",
|
|
19502
|
-
parameters: {
|
|
19503
|
-
type: "object",
|
|
19504
|
-
properties: {
|
|
19505
|
-
invoiceId: { type: "string" },
|
|
19506
|
-
minorversion: { type: "string" }
|
|
19507
|
-
},
|
|
19508
|
-
required: ["invoiceId"]
|
|
19509
|
-
},
|
|
19510
|
-
request: {
|
|
19511
|
-
method: "GET",
|
|
19512
|
-
path: "invoice/{invoiceId}",
|
|
19513
|
-
query: { minorversion: "{minorversion}" }
|
|
19514
|
-
},
|
|
19515
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19516
|
-
},
|
|
19517
|
-
{
|
|
19518
|
-
name: "invoices.create",
|
|
19519
|
-
class: "mutation",
|
|
19520
|
-
description: "Create a QuickBooks invoice. `Line` and `CustomerRef` are required by the API.",
|
|
19521
|
-
parameters: {
|
|
19522
|
-
type: "object",
|
|
19523
|
-
properties: {
|
|
19524
|
-
CustomerRef: { type: "object" },
|
|
19525
|
-
Line: { type: "array", items: { type: "object" } },
|
|
19526
|
-
TxnDate: { type: "string" },
|
|
19527
|
-
DueDate: { type: "string" },
|
|
19528
|
-
CurrencyRef: { type: "object" },
|
|
19529
|
-
BillEmail: { type: "object" },
|
|
19530
|
-
PrivateNote: { type: "string" },
|
|
19531
|
-
CustomerMemo: { type: "object" }
|
|
19532
|
-
},
|
|
19533
|
-
required: ["CustomerRef", "Line"]
|
|
19534
|
-
},
|
|
19535
|
-
request: {
|
|
19536
|
-
method: "POST",
|
|
19537
|
-
path: "invoice",
|
|
19538
|
-
query: { minorversion: "70" },
|
|
19539
|
-
body: "args"
|
|
19540
|
-
},
|
|
19541
|
-
cas: "native-idempotency",
|
|
19542
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19543
|
-
},
|
|
19544
|
-
{
|
|
19545
|
-
name: "invoices.update",
|
|
19546
|
-
class: "mutation",
|
|
19547
|
-
description: "Sparse-update a QuickBooks invoice. Caller must include Id and SyncToken from the prior read.",
|
|
19548
|
-
parameters: {
|
|
19549
|
-
type: "object",
|
|
19550
|
-
properties: {
|
|
19551
|
-
Id: { type: "string" },
|
|
19552
|
-
SyncToken: { type: "string" },
|
|
19553
|
-
sparse: { type: "boolean", default: true },
|
|
19554
|
-
CustomerRef: { type: "object" },
|
|
19555
|
-
Line: { type: "array", items: { type: "object" } },
|
|
19556
|
-
DueDate: { type: "string" },
|
|
19557
|
-
CustomerMemo: { type: "object" },
|
|
19558
|
-
PrivateNote: { type: "string" }
|
|
19559
|
-
},
|
|
19560
|
-
required: ["Id", "SyncToken"]
|
|
19561
|
-
},
|
|
19562
|
-
request: {
|
|
19563
|
-
method: "POST",
|
|
19564
|
-
path: "invoice",
|
|
19565
|
-
query: { minorversion: "70" },
|
|
19566
|
-
body: "args"
|
|
19567
|
-
},
|
|
19568
|
-
cas: "optimistic-read-verify",
|
|
19569
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19570
|
-
},
|
|
19571
|
-
{
|
|
19572
|
-
name: "items.create",
|
|
19573
|
-
class: "mutation",
|
|
19574
|
-
description: "Create a QuickBooks item (product or service).",
|
|
19575
|
-
parameters: {
|
|
19576
|
-
type: "object",
|
|
19577
|
-
properties: {
|
|
19578
|
-
Name: { type: "string" },
|
|
19579
|
-
Type: { type: "string", enum: ["Service", "Inventory", "NonInventory"] },
|
|
19580
|
-
IncomeAccountRef: { type: "object" },
|
|
19581
|
-
ExpenseAccountRef: { type: "object" },
|
|
19582
|
-
UnitPrice: { type: "number" },
|
|
19583
|
-
Description: { type: "string" },
|
|
19584
|
-
Taxable: { type: "boolean" }
|
|
19585
|
-
},
|
|
19586
|
-
required: ["Name", "Type", "IncomeAccountRef"]
|
|
19587
|
-
},
|
|
19588
|
-
request: {
|
|
19589
|
-
method: "POST",
|
|
19590
|
-
path: "item",
|
|
19591
|
-
query: { minorversion: "70" },
|
|
19592
|
-
body: "args"
|
|
19593
|
-
},
|
|
19594
|
-
cas: "native-idempotency",
|
|
19595
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19596
|
-
},
|
|
19597
|
-
{
|
|
19598
|
-
name: "customers.delete",
|
|
19599
|
-
class: "mutation",
|
|
19600
|
-
description: "Mark a QuickBooks customer inactive. QBO does not support hard deletes \u2014 caller must supply Id and SyncToken from the prior read.",
|
|
19601
|
-
parameters: {
|
|
19602
|
-
type: "object",
|
|
19603
|
-
properties: {
|
|
19604
|
-
Id: { type: "string" },
|
|
19605
|
-
SyncToken: { type: "string" },
|
|
19606
|
-
sparse: { type: "boolean", default: true },
|
|
19607
|
-
Active: { type: "boolean", default: false }
|
|
19608
|
-
},
|
|
19609
|
-
required: ["Id", "SyncToken"]
|
|
19610
|
-
},
|
|
19611
|
-
request: {
|
|
19612
|
-
method: "POST",
|
|
19613
|
-
path: "customer",
|
|
19614
|
-
query: { minorversion: "70" },
|
|
19615
|
-
body: "args"
|
|
19616
|
-
},
|
|
19617
|
-
cas: "native-idempotency",
|
|
19618
|
-
externalEffect: true,
|
|
19619
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19620
|
-
},
|
|
19621
|
-
{
|
|
19622
|
-
name: "invoices.delete",
|
|
19623
|
-
class: "mutation",
|
|
19624
|
-
description: "Void a QuickBooks invoice (QBO does not hard-delete invoices). Caller must supply Id and SyncToken.",
|
|
19625
|
-
parameters: {
|
|
19626
|
-
type: "object",
|
|
19627
|
-
properties: {
|
|
19628
|
-
Id: { type: "string" },
|
|
19629
|
-
SyncToken: { type: "string" }
|
|
19630
|
-
},
|
|
19631
|
-
required: ["Id", "SyncToken"]
|
|
19632
|
-
},
|
|
19633
|
-
request: {
|
|
19634
|
-
method: "POST",
|
|
19635
|
-
path: "invoice",
|
|
19636
|
-
query: { operation: "void", minorversion: "70" },
|
|
19637
|
-
body: "args"
|
|
19638
|
-
},
|
|
19639
|
-
cas: "native-idempotency",
|
|
19640
|
-
externalEffect: true,
|
|
19641
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19642
|
-
},
|
|
19643
|
-
{
|
|
19644
|
-
name: "invoices.send",
|
|
19645
|
-
class: "mutation",
|
|
19646
|
-
description: "Email a QuickBooks invoice to the customer (optionally override the recipient with `sendTo`).",
|
|
19647
|
-
parameters: {
|
|
19648
|
-
type: "object",
|
|
19649
|
-
properties: {
|
|
19650
|
-
invoiceId: { type: "string" },
|
|
19651
|
-
sendTo: { type: "string" }
|
|
19652
|
-
},
|
|
19653
|
-
required: ["invoiceId"]
|
|
19654
|
-
},
|
|
19655
|
-
request: {
|
|
19656
|
-
method: "POST",
|
|
19657
|
-
path: "invoice/{invoiceId}/send",
|
|
19658
|
-
query: { sendTo: "{sendTo}", minorversion: "70" }
|
|
19659
|
-
},
|
|
19660
|
-
cas: "native-idempotency",
|
|
19661
|
-
externalEffect: true,
|
|
19662
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19663
|
-
},
|
|
19664
|
-
{
|
|
19665
|
-
name: "bills.create",
|
|
19666
|
-
class: "mutation",
|
|
19667
|
-
description: "Create a QuickBooks vendor bill. `VendorRef` and `Line` are required by the API.",
|
|
19668
|
-
parameters: {
|
|
19669
|
-
type: "object",
|
|
19670
|
-
properties: {
|
|
19671
|
-
VendorRef: { type: "object" },
|
|
19672
|
-
Line: { type: "array", items: { type: "object" } },
|
|
19673
|
-
TxnDate: { type: "string" },
|
|
19674
|
-
DueDate: { type: "string" },
|
|
19675
|
-
CurrencyRef: { type: "object" },
|
|
19676
|
-
PrivateNote: { type: "string" },
|
|
19677
|
-
APAccountRef: { type: "object" }
|
|
19678
|
-
},
|
|
19679
|
-
required: ["VendorRef", "Line"]
|
|
19680
|
-
},
|
|
19681
|
-
request: {
|
|
19682
|
-
method: "POST",
|
|
19683
|
-
path: "bill",
|
|
19684
|
-
query: { minorversion: "70" },
|
|
19685
|
-
body: "args"
|
|
19686
|
-
},
|
|
19687
|
-
cas: "native-idempotency",
|
|
19688
|
-
externalEffect: true,
|
|
19689
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19690
|
-
},
|
|
19691
|
-
{
|
|
19692
|
-
name: "vendors.create",
|
|
19693
|
-
class: "mutation",
|
|
19694
|
-
description: "Create a QuickBooks vendor.",
|
|
19695
|
-
parameters: {
|
|
19696
|
-
type: "object",
|
|
19697
|
-
properties: {
|
|
19698
|
-
DisplayName: { type: "string" },
|
|
19699
|
-
GivenName: { type: "string" },
|
|
19700
|
-
FamilyName: { type: "string" },
|
|
19701
|
-
CompanyName: { type: "string" },
|
|
19702
|
-
PrimaryEmailAddr: { type: "object" },
|
|
19703
|
-
PrimaryPhone: { type: "object" },
|
|
19704
|
-
BillAddr: { type: "object" },
|
|
19705
|
-
TaxIdentifier: { type: "string" },
|
|
19706
|
-
AcctNum: { type: "string" }
|
|
19707
|
-
},
|
|
19708
|
-
required: ["DisplayName"]
|
|
19709
|
-
},
|
|
19710
|
-
request: {
|
|
19711
|
-
method: "POST",
|
|
19712
|
-
path: "vendor",
|
|
19713
|
-
query: { minorversion: "70" },
|
|
19714
|
-
body: "args"
|
|
19715
|
-
},
|
|
19716
|
-
cas: "native-idempotency",
|
|
19717
|
-
externalEffect: true,
|
|
19718
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19719
|
-
},
|
|
19720
|
-
{
|
|
19721
|
-
name: "payments.create",
|
|
19722
|
-
class: "mutation",
|
|
19723
|
-
description: "Record a QuickBooks payment against a customer (and optionally apply to invoices via `Line[].LinkedTxn`).",
|
|
19724
|
-
parameters: {
|
|
19725
|
-
type: "object",
|
|
19726
|
-
properties: {
|
|
19727
|
-
CustomerRef: { type: "object" },
|
|
19728
|
-
TotalAmt: { type: "number" },
|
|
19729
|
-
TxnDate: { type: "string" },
|
|
19730
|
-
PaymentMethodRef: { type: "object" },
|
|
19731
|
-
DepositToAccountRef: { type: "object" },
|
|
19732
|
-
Line: { type: "array", items: { type: "object" } },
|
|
19733
|
-
PrivateNote: { type: "string" }
|
|
19734
|
-
},
|
|
19735
|
-
required: ["CustomerRef", "TotalAmt"]
|
|
19736
|
-
},
|
|
19737
|
-
request: {
|
|
19738
|
-
method: "POST",
|
|
19739
|
-
path: "payment",
|
|
19740
|
-
query: { minorversion: "70" },
|
|
19741
|
-
body: "args"
|
|
19742
|
-
},
|
|
19743
|
-
cas: "native-idempotency",
|
|
19744
|
-
requiredScopes: ["com.intuit.quickbooks.accounting"]
|
|
19745
|
-
}
|
|
19746
|
-
]
|
|
19747
|
-
});
|
|
19748
|
-
|
|
19749
|
-
// src/connectors/adapters/xero.ts
|
|
19750
|
-
var xeroConnector = declarativeRestConnector({
|
|
19751
|
-
kind: "xero",
|
|
19752
|
-
displayName: "Xero",
|
|
19753
|
-
description: "Search and update Xero contacts, invoices, and chart-of-account records across authorized organizations.",
|
|
19754
|
-
auth: {
|
|
19755
|
-
kind: "oauth2",
|
|
19756
|
-
authorizationUrl: "https://login.xero.com/identity/connect/authorize",
|
|
19757
|
-
tokenUrl: "https://identity.xero.com/connect/token",
|
|
19758
|
-
// `accounting.reports.read` is a distinct Xero scope — the reports
|
|
19759
|
-
// namespace is not covered by settings/transactions and 403s without it.
|
|
19760
|
-
scopes: [
|
|
19761
|
-
"offline_access",
|
|
19762
|
-
"accounting.contacts",
|
|
19763
|
-
"accounting.transactions",
|
|
19764
|
-
"accounting.settings.read",
|
|
19765
|
-
"accounting.reports.read"
|
|
19766
|
-
],
|
|
19767
|
-
clientIdEnv: "XERO_OAUTH_CLIENT_ID",
|
|
19768
|
-
clientSecretEnv: "XERO_OAUTH_CLIENT_SECRET"
|
|
19769
|
-
},
|
|
19770
|
-
category: "crm",
|
|
19771
|
-
defaultConsistencyModel: "authoritative",
|
|
19772
|
-
baseUrl: "https://api.xero.com",
|
|
19773
|
-
defaultHeaders: { accept: "application/json" },
|
|
19774
|
-
test: { method: "GET", path: "/connections" },
|
|
19775
|
-
capabilities: [
|
|
19776
|
-
{
|
|
19777
|
-
// Every other Xero capability REQUIRES `tenantId`, and a tenant id is an
|
|
19778
|
-
// opaque GUID no caller can know before asking. Without this read the
|
|
19779
|
-
// connector is unusable by an agent: the only place the id appeared was
|
|
19780
|
-
// the health check, which discards its body.
|
|
19781
|
-
name: "tenants.list",
|
|
19782
|
-
class: "read",
|
|
19783
|
-
description: "List the Xero organizations (tenants) this connection is authorized for. Call this FIRST \u2014 every other Xero capability requires the `tenantId` returned here.",
|
|
19784
|
-
parameters: { type: "object", properties: {} },
|
|
19785
|
-
request: { method: "GET", path: "/connections" }
|
|
19786
|
-
},
|
|
19787
|
-
{
|
|
19788
|
-
// Xero's reporting surface, like QBO's, is a separate namespace from the
|
|
19789
|
-
// record endpoints. These are the statements a return or a books review
|
|
19790
|
-
// is actually built from.
|
|
19791
|
-
name: "reports.get",
|
|
19792
|
-
class: "read",
|
|
19793
|
-
description: "Run a Xero accounting report. `reportName` is the Xero report id (ProfitAndLoss, BalanceSheet, TrialBalance, BankSummary, AgedReceivablesByContact, AgedPayablesByContact).",
|
|
19794
|
-
parameters: {
|
|
19795
|
-
type: "object",
|
|
19796
|
-
properties: {
|
|
19797
|
-
tenantId: { type: "string", description: "From tenants.list." },
|
|
19798
|
-
reportName: {
|
|
19799
|
-
type: "string",
|
|
19800
|
-
enum: [
|
|
19801
|
-
"ProfitAndLoss",
|
|
19802
|
-
"BalanceSheet",
|
|
19803
|
-
"TrialBalance",
|
|
19804
|
-
"BankSummary",
|
|
19805
|
-
"AgedReceivablesByContact",
|
|
19806
|
-
"AgedPayablesByContact"
|
|
19807
|
-
]
|
|
19808
|
-
},
|
|
19809
|
-
fromDate: { type: "string", description: "YYYY-MM-DD." },
|
|
19810
|
-
toDate: { type: "string", description: "YYYY-MM-DD." },
|
|
19811
|
-
date: { type: "string", description: "YYYY-MM-DD \u2014 point-in-time reports (BalanceSheet, TrialBalance)." },
|
|
19812
|
-
contactId: { type: "string", description: "Required by the aged receivables/payables reports." }
|
|
19813
|
-
},
|
|
19814
|
-
required: ["tenantId", "reportName"]
|
|
19815
|
-
},
|
|
19816
|
-
request: {
|
|
19817
|
-
method: "GET",
|
|
19818
|
-
path: "/api.xro/2.0/Reports/{reportName}",
|
|
19819
|
-
query: { fromDate: "{fromDate}", toDate: "{toDate}", date: "{date}", contactID: "{contactId}" },
|
|
19820
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
19821
|
-
},
|
|
19822
|
-
requiredScopes: ["accounting.reports.read"]
|
|
19823
|
-
},
|
|
19824
|
-
{
|
|
19825
|
-
name: "contacts.search",
|
|
19826
|
-
class: "read",
|
|
19827
|
-
description: "Search Xero contacts in a tenant using the Xero where-clause query language.",
|
|
19828
|
-
parameters: {
|
|
19829
|
-
type: "object",
|
|
19830
|
-
properties: {
|
|
19831
|
-
tenantId: { type: "string", description: "Xero tenant (organization) id from /connections." },
|
|
19832
|
-
where: { type: "string", description: `Xero where clause, e.g. 'Name.Contains("Acme")'.` },
|
|
19833
|
-
order: { type: "string", description: 'Sort expression, e.g. "Name ASC".' },
|
|
19834
|
-
page: { type: "integer", minimum: 1 }
|
|
19835
|
-
},
|
|
19836
|
-
required: ["tenantId"]
|
|
19837
|
-
},
|
|
19838
|
-
request: {
|
|
19839
|
-
method: "GET",
|
|
19840
|
-
path: "/api.xro/2.0/Contacts",
|
|
19841
|
-
query: { where: "{where}", order: "{order}", page: "{page}" },
|
|
19842
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
19843
|
-
},
|
|
19844
|
-
requiredScopes: ["accounting.contacts"]
|
|
19845
|
-
},
|
|
19846
|
-
{
|
|
19847
|
-
name: "contacts.get",
|
|
19848
|
-
class: "read",
|
|
19849
|
-
description: "Read a single Xero contact by ContactID.",
|
|
19850
|
-
parameters: {
|
|
19851
|
-
type: "object",
|
|
19852
|
-
properties: {
|
|
19853
|
-
tenantId: { type: "string" },
|
|
19854
|
-
contactId: { type: "string", description: "Xero ContactID (GUID)." }
|
|
19855
|
-
},
|
|
19856
|
-
required: ["tenantId", "contactId"]
|
|
19857
|
-
},
|
|
19858
|
-
request: {
|
|
19859
|
-
method: "GET",
|
|
19860
|
-
path: "/api.xro/2.0/Contacts/{contactId}",
|
|
19861
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
19862
|
-
},
|
|
19863
|
-
requiredScopes: ["accounting.contacts"]
|
|
19864
|
-
},
|
|
19865
|
-
{
|
|
19866
|
-
name: "contacts.create",
|
|
19867
|
-
class: "mutation",
|
|
19868
|
-
description: "Create a Xero contact. Pass a Contacts array per the Xero API contract.",
|
|
19869
|
-
parameters: {
|
|
19870
|
-
type: "object",
|
|
19871
|
-
properties: {
|
|
19872
|
-
tenantId: { type: "string" },
|
|
19873
|
-
Contacts: {
|
|
19874
|
-
type: "array",
|
|
19875
|
-
items: {
|
|
19876
|
-
type: "object",
|
|
19877
|
-
properties: {
|
|
19878
|
-
Name: { type: "string" },
|
|
19879
|
-
EmailAddress: { type: "string" },
|
|
19880
|
-
FirstName: { type: "string" },
|
|
19881
|
-
LastName: { type: "string" }
|
|
19882
|
-
},
|
|
19883
|
-
required: ["Name"]
|
|
19884
|
-
}
|
|
19885
|
-
}
|
|
19886
|
-
},
|
|
19887
|
-
required: ["tenantId", "Contacts"]
|
|
19888
|
-
},
|
|
19889
|
-
request: {
|
|
19890
|
-
method: "POST",
|
|
19891
|
-
path: "/api.xro/2.0/Contacts",
|
|
19892
|
-
body: { Contacts: "{Contacts}" },
|
|
19893
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
19894
|
-
},
|
|
19895
|
-
cas: "native-idempotency",
|
|
19896
|
-
requiredScopes: ["accounting.contacts"]
|
|
19897
|
-
},
|
|
19898
|
-
{
|
|
19899
|
-
name: "contacts.update",
|
|
19900
|
-
class: "mutation",
|
|
19901
|
-
description: "Update a Xero contact by ContactID.",
|
|
19902
|
-
parameters: {
|
|
19903
|
-
type: "object",
|
|
19904
|
-
properties: {
|
|
19905
|
-
tenantId: { type: "string" },
|
|
19906
|
-
contactId: { type: "string" },
|
|
19907
|
-
fields: { type: "object", description: "Partial Xero Contact payload." }
|
|
19908
|
-
},
|
|
19909
|
-
required: ["tenantId", "contactId", "fields"]
|
|
19910
|
-
},
|
|
19911
|
-
request: {
|
|
19912
|
-
method: "POST",
|
|
19913
|
-
path: "/api.xro/2.0/Contacts/{contactId}",
|
|
19914
|
-
body: "{fields}",
|
|
19915
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
19916
|
-
},
|
|
19917
|
-
cas: "optimistic-read-verify",
|
|
19918
|
-
requiredScopes: ["accounting.contacts"]
|
|
19919
|
-
},
|
|
19920
|
-
{
|
|
19921
|
-
name: "invoices.search",
|
|
19922
|
-
class: "read",
|
|
19923
|
-
description: "Search Xero invoices in a tenant.",
|
|
19924
|
-
parameters: {
|
|
19925
|
-
type: "object",
|
|
19926
|
-
properties: {
|
|
19927
|
-
tenantId: { type: "string" },
|
|
19928
|
-
where: { type: "string", description: `Xero where clause, e.g. 'Status=="AUTHORISED"'.` },
|
|
19929
|
-
order: { type: "string", description: 'Sort expression, e.g. "Date DESC".' },
|
|
19930
|
-
page: { type: "integer", minimum: 1 }
|
|
19931
|
-
},
|
|
19932
|
-
required: ["tenantId"]
|
|
19933
|
-
},
|
|
19934
|
-
request: {
|
|
19935
|
-
method: "GET",
|
|
19936
|
-
path: "/api.xro/2.0/Invoices",
|
|
19937
|
-
query: { where: "{where}", order: "{order}", page: "{page}" },
|
|
19938
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
19939
|
-
},
|
|
19940
|
-
requiredScopes: ["accounting.transactions"]
|
|
19941
|
-
},
|
|
19942
|
-
{
|
|
19943
|
-
name: "invoices.get",
|
|
19944
|
-
class: "read",
|
|
19945
|
-
description: "Read a single Xero invoice by InvoiceID or InvoiceNumber.",
|
|
19946
|
-
parameters: {
|
|
19947
|
-
type: "object",
|
|
19948
|
-
properties: {
|
|
19949
|
-
tenantId: { type: "string" },
|
|
19950
|
-
invoiceId: { type: "string", description: "Xero InvoiceID (GUID) or InvoiceNumber." }
|
|
19951
|
-
},
|
|
19952
|
-
required: ["tenantId", "invoiceId"]
|
|
19953
|
-
},
|
|
19954
|
-
request: {
|
|
19955
|
-
method: "GET",
|
|
19956
|
-
path: "/api.xro/2.0/Invoices/{invoiceId}",
|
|
19957
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
19958
|
-
},
|
|
19959
|
-
requiredScopes: ["accounting.transactions"]
|
|
19960
|
-
},
|
|
19961
|
-
{
|
|
19962
|
-
name: "invoices.create",
|
|
19963
|
-
class: "mutation",
|
|
19964
|
-
description: "Create a Xero invoice (AR or AP). Pass an Invoices array per the Xero API contract.",
|
|
19965
|
-
parameters: {
|
|
19966
|
-
type: "object",
|
|
19967
|
-
properties: {
|
|
19968
|
-
tenantId: { type: "string" },
|
|
19969
|
-
Invoices: {
|
|
19970
|
-
type: "array",
|
|
19971
|
-
items: {
|
|
19972
|
-
type: "object",
|
|
19973
|
-
properties: {
|
|
19974
|
-
Type: { type: "string", enum: ["ACCREC", "ACCPAY"] },
|
|
19975
|
-
Contact: { type: "object" },
|
|
19976
|
-
LineItems: { type: "array", items: { type: "object" } },
|
|
19977
|
-
Date: { type: "string", description: "YYYY-MM-DD." },
|
|
19978
|
-
DueDate: { type: "string", description: "YYYY-MM-DD." },
|
|
19979
|
-
Reference: { type: "string" },
|
|
19980
|
-
Status: { type: "string", enum: ["DRAFT", "SUBMITTED", "AUTHORISED"] }
|
|
19981
|
-
},
|
|
19982
|
-
required: ["Type", "Contact", "LineItems"]
|
|
19983
|
-
}
|
|
19984
|
-
}
|
|
19985
|
-
},
|
|
19986
|
-
required: ["tenantId", "Invoices"]
|
|
19987
|
-
},
|
|
19988
|
-
request: {
|
|
19989
|
-
method: "POST",
|
|
19990
|
-
path: "/api.xro/2.0/Invoices",
|
|
19991
|
-
body: { Invoices: "{Invoices}" },
|
|
19992
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
19993
|
-
},
|
|
19994
|
-
cas: "native-idempotency",
|
|
19995
|
-
requiredScopes: ["accounting.transactions"]
|
|
19996
|
-
},
|
|
19997
|
-
{
|
|
19998
|
-
name: "accounts.search",
|
|
19999
|
-
class: "read",
|
|
20000
|
-
description: "List Xero chart-of-account records for a tenant.",
|
|
20001
|
-
parameters: {
|
|
20002
|
-
type: "object",
|
|
20003
|
-
properties: {
|
|
20004
|
-
tenantId: { type: "string" },
|
|
20005
|
-
where: { type: "string", description: `Xero where clause, e.g. 'Type=="REVENUE"'.` },
|
|
20006
|
-
order: { type: "string" }
|
|
20007
|
-
},
|
|
20008
|
-
required: ["tenantId"]
|
|
20009
|
-
},
|
|
20010
|
-
request: {
|
|
20011
|
-
method: "GET",
|
|
20012
|
-
path: "/api.xro/2.0/Accounts",
|
|
20013
|
-
query: { where: "{where}", order: "{order}" },
|
|
20014
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
20015
|
-
},
|
|
20016
|
-
requiredScopes: ["accounting.settings.read"]
|
|
20017
|
-
},
|
|
20018
|
-
{
|
|
20019
|
-
name: "contacts.archive",
|
|
20020
|
-
class: "mutation",
|
|
20021
|
-
description: "Archive a Xero contact (sets ContactStatus to ARCHIVED).",
|
|
20022
|
-
parameters: {
|
|
20023
|
-
type: "object",
|
|
20024
|
-
properties: {
|
|
20025
|
-
tenantId: { type: "string" },
|
|
20026
|
-
contactId: { type: "string", description: "Xero ContactID (GUID)." }
|
|
20027
|
-
},
|
|
20028
|
-
required: ["tenantId", "contactId"]
|
|
20029
|
-
},
|
|
20030
|
-
request: {
|
|
20031
|
-
method: "POST",
|
|
20032
|
-
path: "/api.xro/2.0/Contacts/{contactId}",
|
|
20033
|
-
body: { ContactStatus: "ARCHIVED" },
|
|
20034
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
20035
|
-
},
|
|
20036
|
-
cas: "native-idempotency",
|
|
20037
|
-
externalEffect: true,
|
|
20038
|
-
requiredScopes: ["accounting.contacts"]
|
|
20039
|
-
},
|
|
20040
|
-
{
|
|
20041
|
-
name: "invoices.delete",
|
|
20042
|
-
class: "mutation",
|
|
20043
|
-
description: "Void or delete a Xero invoice. DRAFT/SUBMITTED invoices accept DELETED, AUTHORISED invoices accept VOIDED.",
|
|
20044
|
-
parameters: {
|
|
20045
|
-
type: "object",
|
|
20046
|
-
properties: {
|
|
20047
|
-
tenantId: { type: "string" },
|
|
20048
|
-
invoiceId: { type: "string", description: "Xero InvoiceID (GUID) or InvoiceNumber." },
|
|
20049
|
-
status: {
|
|
20050
|
-
type: "string",
|
|
20051
|
-
enum: ["VOIDED", "DELETED"],
|
|
20052
|
-
description: "Target status. VOIDED for authorised invoices, DELETED for draft/submitted invoices."
|
|
20053
|
-
}
|
|
20054
|
-
},
|
|
20055
|
-
required: ["tenantId", "invoiceId", "status"]
|
|
20056
|
-
},
|
|
20057
|
-
request: {
|
|
20058
|
-
method: "POST",
|
|
20059
|
-
path: "/api.xro/2.0/Invoices/{invoiceId}",
|
|
20060
|
-
body: { Status: "{status}" },
|
|
20061
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
20062
|
-
},
|
|
20063
|
-
cas: "native-idempotency",
|
|
20064
|
-
externalEffect: true,
|
|
20065
|
-
requiredScopes: ["accounting.transactions"]
|
|
20066
|
-
},
|
|
20067
|
-
{
|
|
20068
|
-
name: "invoices.email",
|
|
20069
|
-
class: "mutation",
|
|
20070
|
-
description: "Email a Xero invoice to its contact using the saved template.",
|
|
20071
|
-
parameters: {
|
|
20072
|
-
type: "object",
|
|
20073
|
-
properties: {
|
|
20074
|
-
tenantId: { type: "string" },
|
|
20075
|
-
invoiceId: { type: "string", description: "Xero InvoiceID (GUID) or InvoiceNumber." }
|
|
20076
|
-
},
|
|
20077
|
-
required: ["tenantId", "invoiceId"]
|
|
20078
|
-
},
|
|
20079
|
-
request: {
|
|
20080
|
-
method: "POST",
|
|
20081
|
-
path: "/api.xro/2.0/Invoices/{invoiceId}/Email",
|
|
20082
|
-
body: {},
|
|
20083
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
20084
|
-
},
|
|
20085
|
-
cas: "native-idempotency",
|
|
20086
|
-
externalEffect: true,
|
|
20087
|
-
requiredScopes: ["accounting.transactions"]
|
|
20088
|
-
},
|
|
20089
|
-
{
|
|
20090
|
-
name: "payments.create",
|
|
20091
|
-
class: "mutation",
|
|
20092
|
-
description: "Apply a payment to a Xero invoice or credit note. Pass a Payments array per the Xero API contract.",
|
|
20093
|
-
parameters: {
|
|
20094
|
-
type: "object",
|
|
20095
|
-
properties: {
|
|
20096
|
-
tenantId: { type: "string" },
|
|
20097
|
-
Payments: {
|
|
20098
|
-
type: "array",
|
|
20099
|
-
items: {
|
|
20100
|
-
type: "object",
|
|
20101
|
-
properties: {
|
|
20102
|
-
Invoice: { type: "object", description: 'Invoice reference, e.g. { InvoiceID: "..." }.' },
|
|
20103
|
-
CreditNote: { type: "object", description: 'CreditNote reference, e.g. { CreditNoteID: "..." }.' },
|
|
20104
|
-
Account: { type: "object", description: 'Bank account reference, e.g. { Code: "090" }.' },
|
|
20105
|
-
Date: { type: "string", description: "YYYY-MM-DD." },
|
|
20106
|
-
Amount: { type: "number" },
|
|
20107
|
-
Reference: { type: "string" }
|
|
20108
|
-
},
|
|
20109
|
-
required: ["Account", "Date", "Amount"]
|
|
20110
|
-
}
|
|
20111
|
-
}
|
|
20112
|
-
},
|
|
20113
|
-
required: ["tenantId", "Payments"]
|
|
20114
|
-
},
|
|
20115
|
-
request: {
|
|
20116
|
-
method: "POST",
|
|
20117
|
-
path: "/api.xro/2.0/Payments",
|
|
20118
|
-
body: { Payments: "{Payments}" },
|
|
20119
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
20120
|
-
},
|
|
20121
|
-
cas: "native-idempotency",
|
|
20122
|
-
externalEffect: true,
|
|
20123
|
-
requiredScopes: ["accounting.transactions"]
|
|
20124
|
-
},
|
|
20125
|
-
{
|
|
20126
|
-
name: "credit-notes.create",
|
|
20127
|
-
class: "mutation",
|
|
20128
|
-
description: "Create a Xero credit note (ACCRECCREDIT or ACCPAYCREDIT). Pass a CreditNotes array per the Xero API contract.",
|
|
20129
|
-
parameters: {
|
|
20130
|
-
type: "object",
|
|
20131
|
-
properties: {
|
|
20132
|
-
tenantId: { type: "string" },
|
|
20133
|
-
CreditNotes: {
|
|
20134
|
-
type: "array",
|
|
20135
|
-
items: {
|
|
20136
|
-
type: "object",
|
|
20137
|
-
properties: {
|
|
20138
|
-
Type: { type: "string", enum: ["ACCRECCREDIT", "ACCPAYCREDIT"] },
|
|
20139
|
-
Contact: { type: "object" },
|
|
20140
|
-
LineItems: { type: "array", items: { type: "object" } },
|
|
20141
|
-
Date: { type: "string", description: "YYYY-MM-DD." },
|
|
20142
|
-
Reference: { type: "string" },
|
|
20143
|
-
Status: { type: "string", enum: ["DRAFT", "SUBMITTED", "AUTHORISED"] }
|
|
20144
|
-
},
|
|
20145
|
-
required: ["Type", "Contact", "LineItems"]
|
|
20146
|
-
}
|
|
20147
|
-
}
|
|
20148
|
-
},
|
|
20149
|
-
required: ["tenantId", "CreditNotes"]
|
|
20150
|
-
},
|
|
20151
|
-
request: {
|
|
20152
|
-
method: "POST",
|
|
20153
|
-
path: "/api.xro/2.0/CreditNotes",
|
|
20154
|
-
body: { CreditNotes: "{CreditNotes}" },
|
|
20155
|
-
headers: { "xero-tenant-id": "{tenantId}" }
|
|
20156
|
-
},
|
|
20157
|
-
cas: "native-idempotency",
|
|
20158
|
-
externalEffect: true,
|
|
20159
|
-
requiredScopes: ["accounting.transactions"]
|
|
20160
|
-
}
|
|
20161
|
-
]
|
|
20162
|
-
});
|
|
20163
|
-
|
|
20164
20175
|
// src/connectors/adapters/gusto.ts
|
|
20165
20176
|
var gustoConnector = declarativeRestConnector({
|
|
20166
20177
|
kind: "gusto",
|
|
@@ -127238,11 +127249,13 @@ export {
|
|
|
127238
127249
|
oneDrive,
|
|
127239
127250
|
outlookMail,
|
|
127240
127251
|
pandadoc,
|
|
127252
|
+
quickbooksConnector,
|
|
127241
127253
|
sharepoint,
|
|
127242
127254
|
slack,
|
|
127243
127255
|
twitterConnector,
|
|
127244
127256
|
twitter,
|
|
127245
127257
|
whatsappBusiness,
|
|
127258
|
+
xeroConnector,
|
|
127246
127259
|
CONNECTOR_ADAPTER_FACTORIES,
|
|
127247
127260
|
resolveConnectorAdapterFactoryOptions,
|
|
127248
127261
|
googleSlidesConnector,
|
|
@@ -127273,8 +127286,6 @@ export {
|
|
|
127273
127286
|
zohoCrmConnector,
|
|
127274
127287
|
zohoDeskConnector,
|
|
127275
127288
|
attioConnector,
|
|
127276
|
-
quickbooksConnector,
|
|
127277
|
-
xeroConnector,
|
|
127278
127289
|
gustoConnector,
|
|
127279
127290
|
bigcommerceConnector,
|
|
127280
127291
|
shopifyConnector,
|
|
@@ -127763,4 +127774,4 @@ export {
|
|
|
127763
127774
|
demandbaseConnector,
|
|
127764
127775
|
adapters_exports
|
|
127765
127776
|
};
|
|
127766
|
-
//# sourceMappingURL=chunk-
|
|
127777
|
+
//# sourceMappingURL=chunk-XOOZW3XK.js.map
|