conductor-node 9.4.1 → 9.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -100,14 +100,12 @@ Fetches all authorized integration-connections.
100
100
  const qbdConnections = await conductor.getIntegrationConnections();
101
101
  ```
102
102
 
103
- ### `getIntegrationConnectionById(id: string)`
103
+ ### `getIntegrationConnection(id: string)`
104
104
 
105
105
  Fetches a single integration-connection by id.
106
106
 
107
107
  ```ts
108
- const qbdConnection = await conductor.getIntegrationConnectionById(
109
- qbdConnectionId
110
- );
108
+ const qbdConnection = await conductor.getIntegrationConnection(qbdConnectionId);
111
109
  ```
112
110
 
113
111
  ### `pingIntegrationConnection(id: string)`
@@ -175,7 +173,7 @@ All errors thrown by the Conductor API are instances of `ConductorError` or its
175
173
 
176
174
  The error object you receive will have one of the following error types:
177
175
 
178
- | Type | Description |
176
+ | Name | Description |
179
177
  | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
180
178
  | `ConductorIntegrationError` | Raised when the third-party integration encounters an error while processing the end-user's request. This often results from an issue with the request or data handling that requires your attention to resolve.<br><br>E.g., a `ListID` you provided was not found in QuickBooks Desktop, or an accounting value you supplied did not adhere to the integration's accounting rules.<br><br>Refer to `error.integrationCode` for the error code returned by the integration, if available. |
181
179
  | `ConductorIntegrationConnectionError` | Raised when a connection error occurs with the third-party integration on the end-user's side. This typically indicates an issue with the end-user's integration connection or configuration, which they must resolve. In other words, you cannot take action to fix these errors.<br><br>E.g., QuickBooks Web Connector (QBWC) failed to connect to QuickBooks Desktop on the end-user's computer.<br><br>Refer to `error.integrationCode` for the error code returned by the integration connector, if available.<br><br>❗ We recommend _not_ alerting your team for these errors because only the end-user can fix them. See [Centralized Error Handling](#centralized-error-handling) for an example of this. |
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conductor-node",
3
- "version": "9.4.1",
3
+ "version": "9.5.0",
4
4
  "description": "Easily integrate with the entire QuickBooks Desktop API with fully-typed async TypeScript",
5
5
  "author": "Danny Nemer <hi@DannyNemer.com>",
6
6
  "license": "MIT",
@@ -12,6 +12,12 @@ export default class Client {
12
12
  private readonly graphqlClient;
13
13
  private readonly graphqlOperations;
14
14
  constructor(apiKey: string, { verbose, serverEnvironment }?: ClientOptions);
15
+ /**
16
+ * Fetches all integration-connections associated with your Conductor account.
17
+ *
18
+ * @returns The integration-connections.
19
+ */
20
+ getIntegrationConnections(): Promise<GraphqlGetIntegrationConnectionsQuery["integrationConnections"]>;
15
21
  /**
16
22
  * Fetches the specified integration-connection.
17
23
  *
@@ -19,12 +25,6 @@ export default class Client {
19
25
  * @returns The integration-connection.
20
26
  */
21
27
  getIntegrationConnection(integrationConnectionId: GraphqlGetIntegrationConnectionQueryVariables["integrationConnectionId"]): Promise<GraphqlGetIntegrationConnectionQuery["integrationConnection"]>;
22
- /**
23
- * Fetches all integration-connections associated with your Conductor account.
24
- *
25
- * @returns The integration-connections.
26
- */
27
- getIntegrationConnections(): Promise<GraphqlGetIntegrationConnectionsQuery["integrationConnections"]>;
28
28
  /**
29
29
  * Creates a new integration-connection.
30
30
  *
@@ -20,6 +20,16 @@ class Client {
20
20
  this.graphqlOperations = (0, graphqlOperationWrapper_1.wrapGraphqlOperations)((0, operationTypes_1.getSdk)(this.graphqlClient), verbose);
21
21
  this.qbd = new QbdIntegration_1.default(this.graphqlOperations);
22
22
  }
23
+ /**
24
+ * Fetches all integration-connections associated with your Conductor account.
25
+ *
26
+ * @returns The integration-connections.
27
+ */
28
+ async getIntegrationConnections() {
29
+ return this.graphqlOperations
30
+ .getIntegrationConnections()
31
+ .then((result) => result.integrationConnections);
32
+ }
23
33
  /**
24
34
  * Fetches the specified integration-connection.
25
35
  *
@@ -31,16 +41,6 @@ class Client {
31
41
  .getIntegrationConnection({ integrationConnectionId })
32
42
  .then((result) => result.integrationConnection);
33
43
  }
34
- /**
35
- * Fetches all integration-connections associated with your Conductor account.
36
- *
37
- * @returns The integration-connections.
38
- */
39
- async getIntegrationConnections() {
40
- return this.graphqlOperations
41
- .getIntegrationConnections()
42
- .then((result) => result.integrationConnections);
43
- }
44
44
  /**
45
45
  * Creates a new integration-connection.
46
46
  *
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.wrapError = exports.getDurationString = exports.graphqlOperationWrapper = exports.wrapGraphqlOperations = void 0;
7
- const package_json_1 = __importDefault(require("../../package.json"));
8
7
  const error_1 = require("../utils/error");
9
8
  const graphql_request_1 = require("graphql-request");
10
9
  const node_util_1 = __importDefault(require("node:util"));
@@ -77,13 +76,6 @@ function wrapError(error) {
77
76
  const nestedError = response.errors?.[0];
78
77
  const errorExtensions = nestedError?.extensions;
79
78
  if (errorExtensions) {
80
- if (errorExtensions["code"] === "GRAPHQL_VALIDATION_FAILED") {
81
- return new error_1.ConductorInvalidRequestError({
82
- code: "CLIENT_OUTDATED",
83
- message: `Your version of "${package_json_1.default.name}" is no longer compatible with the Conductor server. Please run "yarn upgrade ${package_json_1.default.name} --latest" to update.`,
84
- httpStatusCode: response.status,
85
- });
86
- }
87
79
  // Do *not* bother validating if this error is a Conductor error:
88
80
  // 1. We know this is a `ClientError`, so `message` and `httpStatusCode`
89
81
  // exist.
@@ -1344,6 +1344,17 @@ export default class QbdIntegration extends BaseIntegration {
1344
1344
  */
1345
1345
  query: (integrationConnectionId: string, params: QbdTypes.ItemSubtotalQueryRq) => Promise<NonNullable<QbdTypes.ItemSubtotalQueryRs["ItemSubtotalRet"]>>;
1346
1346
  };
1347
+ jobReport: {
1348
+ /**
1349
+ * Queries for a job report, which includes both summary and transaction
1350
+ * detail reports. The reports can be customized only by date range, by
1351
+ * column summarization, and by common filters. Some job reports require a
1352
+ * `customer:job` reference in order to work.
1353
+ *
1354
+ * https://developer.intuit.com/app/developer/qbdesktop/docs/api-reference/qbdesktop/JobReportQuery
1355
+ */
1356
+ query: (integrationConnectionId: string, params: QbdTypes.JobReportQueryRq) => Promise<NonNullable<QbdTypes.JobReportQueryRs["ReportRet"]>>;
1357
+ };
1347
1358
  jobType: {
1348
1359
  /**
1349
1360
  * Adds a job type. A job type can be used to separate jobs into any
@@ -1349,6 +1349,17 @@ class QbdIntegration extends BaseIntegration_1.default {
1349
1349
  */
1350
1350
  query: async (integrationConnectionId, params) => this.sendRequestWrapper(integrationConnectionId, { ItemSubtotalQueryRq: params }, "ItemSubtotalQueryRs", "ItemSubtotalRet"),
1351
1351
  };
1352
+ jobReport = {
1353
+ /**
1354
+ * Queries for a job report, which includes both summary and transaction
1355
+ * detail reports. The reports can be customized only by date range, by
1356
+ * column summarization, and by common filters. Some job reports require a
1357
+ * `customer:job` reference in order to work.
1358
+ *
1359
+ * https://developer.intuit.com/app/developer/qbdesktop/docs/api-reference/qbdesktop/JobReportQuery
1360
+ */
1361
+ query: async (integrationConnectionId, params) => this.sendRequestWrapper(integrationConnectionId, { JobReportQueryRq: params }, "JobReportQueryRs", "ReportRet"),
1362
+ };
1352
1363
  jobType = {
1353
1364
  /**
1354
1365
  * Adds a job type. A job type can be used to separate jobs into any
@@ -1775,9 +1786,9 @@ class QbdIntegration extends BaseIntegration_1.default {
1775
1786
  requestObject,
1776
1787
  });
1777
1788
  }
1778
- async sendRequestWrapper(integrationConnectionId, params, responseKey, responseBodyKey) {
1789
+ async sendRequestWrapper(integrationConnectionId, params, responseWrapperKey, responseBodyKey) {
1779
1790
  const response = (await this.sendRequest(integrationConnectionId, params));
1780
- const responseBody = response[responseKey]?.[responseBodyKey];
1791
+ const responseBody = response[responseWrapperKey]?.[responseBodyKey];
1781
1792
  if (responseBody === undefined) {
1782
1793
  throw new error_1.ConductorIntegrationError({
1783
1794
  message: "No response received from QuickBooks Desktop.",
@@ -232,6 +232,7 @@ export interface AccountRet {
232
232
  DataExtRet?: DataExtRet | DataExtRet[];
233
233
  }
234
234
  export type AccountType = "AccountsPayable" | "AccountsReceivable" | "Bank" | "CostOfGoodsSold" | "CreditCard" | "Equity" | "Expense" | "FixedAsset" | "Income" | "LongTermLiability" | "NonPosting" | "OtherAsset" | "OtherCurrentAsset" | "OtherCurrentLiability" | "OtherExpense" | "OtherIncome";
235
+ export type AccountTypeFilter = "AccountsPayable" | "AccountsReceivable" | "AllowedFor1099" | "APAndSalesTax" | "APOrCreditCard" | "ARAndAP" | "Asset" | "BalanceSheet" | "Bank" | "BankAndARAndAPAndUF" | "BankAndUF" | "CostOfSales" | "CreditCard" | "CurrentAsset" | "CurrentAssetAndExpense" | "CurrentLiability" | "Equity" | "EquityAndIncomeAndExpense" | "ExpenseAndOtherExpense" | "FixedAsset" | "IncomeAndExpense" | "IncomeAndOtherIncome" | "Liability" | "LiabilityAndEquity" | "LongTermLiability" | "NonPosting" | "OrdinaryExpense" | "OrdinaryIncome" | "OrdinaryIncomeAndCOGS" | "OrdinaryIncomeAndExpense" | "OtherAsset" | "OtherCurrentAsset" | "OtherCurrentLiability" | "OtherExpense" | "OtherIncome" | "OtherIncomeOrExpense";
235
236
  export type AccrualPeriod = "BeginningOfYear" | "EveryHourOnPaycheck" | "EveryPaycheck";
236
237
  export type AcquiredAs = "New" | "Old";
237
238
  /** @default: ActiveOnly */
@@ -1403,6 +1404,31 @@ export interface COGSAccountRef {
1403
1404
  /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
1404
1405
  FullName?: string;
1405
1406
  }
1407
+ export interface ColData {
1408
+ /** An identifying number that corresponds to the position of this column in the report. The columns are numbered from left to right, starting with 1. */
1409
+ ColID: number;
1410
+ /** The data in this cell of the report. */
1411
+ Value: string;
1412
+ /** The data type: IDTYPE, STRTYPE, and so on. */
1413
+ DataType: DataType;
1414
+ }
1415
+ export interface ColDesc {
1416
+ /** A list of `IColTitle` objects, each of which represents a title for this column. For example, if the first two rows of this column were titles, two `IColTitle` objects would be returned. */
1417
+ ColTitle: ColTitle | ColTitle[];
1418
+ /** The type of data that this column contains. `ColType` values are formatted types. (Returned `ctPercent` values, for example, will have digits after the decimal points, and ctAddr1 values will be strings.) */
1419
+ ColType: ColType;
1420
+ /** An identifying number that corresponds to the position of this column in the report. The columns are numbered from left to right, starting with 1. */
1421
+ ColID: number;
1422
+ /** The data type: IDTYPE, STRTYPE, and so on. */
1423
+ DataType: DataType;
1424
+ }
1425
+ export interface ColTitle {
1426
+ /** The number of this title row. For example, if the first three rows of a report were titles, `titleRow` of the third of these rows would be 3. */
1427
+ TitleRow: number;
1428
+ /** The data in this cell of the report. */
1429
+ Value: string;
1430
+ }
1431
+ export type ColType = "Account" | "Addr1" | "Addr2" | "Addr3" | "Addr4" | "Addr5" | "Aging" | "Amount" | "AmountDifference" | "AverageCost" | "BilledDate" | "BillingStatus" | "Blank" | "CalculatedAmount" | "Class" | "ClearedStatus" | "CostPrice" | "CreateDate" | "Credit" | "CustomField" | "Date" | "Debit" | "DeliveryDate" | "DueDate" | "Duration" | "EarliestReceiptDate" | "EstimateActive" | "FOB" | "IncomeSubjectToTax" | "Invoiced" | "IsAdjustment" | "Item" | "ItemDesc" | "ItemVendor" | "Label" | "LastModifiedBy" | "LatestOrPriorState" | "Memo" | "ModifiedTime" | "Name" | "NameAccountNumber" | "NameAddress" | "NameCity" | "NameContact" | "NameEmail" | "NameFax" | "NamePhone" | "NameState" | "NameZip" | "OpenBalance" | "OriginalAmount" | "PaidAmount" | "PaidStatus" | "PaidThroughDate" | "PaymentMethod" | "PayrollItem" | "Percent" | "PercentChange" | "PercentOfTotalRetail" | "PercentOfTotalValue" | "PhysicalCount" | "PONumber" | "PrintStatus" | "ProgressAmount" | "ProgressPercent" | "Quantity" | "QuantityAvailable" | "QuantityOnHand" | "QuantityOnOrder" | "QuantityOnPendingBuild" | "QuantityOnSalesOrder" | "ReceivedQuantity" | "RefNumber" | "ReorderPoint" | "RetailValueOnHand" | "RunningBalance" | "SalesPerWeek" | "SalesRep" | "SalesTaxCode" | "ShipDate" | "ShipMethod" | "ShipToAddr1" | "ShipToAddr2" | "ShipToAddr3" | "ShipToAddr4" | "ShipToAddr5" | "SONumber" | "SourceName" | "SplitAccount" | "SSNOrTaxID" | "SuggestedReorder" | "TaxLine" | "TaxTableVersion" | "Terms" | "Total" | "TxnID" | "TxnNumber" | "TxnType" | "UnitPrice" | "UserEdit" | "ValueOnHand" | "WageBase" | "WageBaseTips";
1406
1432
  export interface CompanyAddressBlockForCustomer {
1407
1433
  /** The first line of an address. */
1408
1434
  Addr1?: string;
@@ -2469,6 +2495,13 @@ export interface DataExtRet {
2469
2495
  DataExtValue: string;
2470
2496
  }
2471
2497
  export type DataExtType = "AMTTYPE" | "DATETIMETYPE" | "INTTYPE" | "PERCENTTYPE" | "PRICETYPE" | "QUANTYPE" | "STR255TYPE" | "STR1024TYPE";
2498
+ export interface DataRow {
2499
+ /** `RowData` describes one row in the report. */
2500
+ RowData?: RowData;
2501
+ /** A list of `IColData` objects, each of which describes the data in one cell of the report. */
2502
+ ColData?: ColData | ColData[];
2503
+ }
2504
+ export type DataType = "AMTTYPE" | "BOOLTYPE" | "DATETIMETYPE" | "DATETYPE" | "ENUMTYPE" | "GUIDTYPE" | "IDTYPE" | "INTTYPE" | "PERCENTTYPE" | "PRICETYPE" | "QUANTYPE" | "STRTYPE" | "TIMEINTERVALTYPE";
2472
2505
  export type DateMacro = "All" | "LastCalendarQuarter" | "LastCalendarQuarterToDate" | "LastCalendarYear" | "LastCalendarYearToDate" | "LastFiscalQuarter" | "LastFiscalQuarterToDate" | "LastFiscalYear" | "LastFiscalYearToDate" | "LastMonth" | "LastMonthToDate" | "LastWeek" | "LastWeekToDate" | "NextCalendarQuarter" | "NextCalendarYear" | "NextFiscalQuarter" | "NextFiscalYear" | "NextFourWeeks" | "NextMonth" | "NextWeek" | "ThisCalendarQuarter" | "ThisCalendarQuarterToDate" | "ThisCalendarYear" | "ThisCalendarYearToDate" | "ThisFiscalQuarter" | "ThisFiscalQuarterToDate" | "ThisFiscalYear" | "ThisFiscalYearToDate" | "ThisMonth" | "ThisMonthToDate" | "ThisWeek" | "ThisWeekToDate" | "Today" | "Yesterday";
2473
2506
  export interface DepositAdd {
2474
2507
  /** The date of the transaction. In some cases, if you leave `TxnDate` out of an -Add message, QuickBooks will prefill `TxnDate` with the date of the last-saved transaction of the same type. */
@@ -3099,6 +3132,7 @@ export interface EntityRef {
3099
3132
  /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
3100
3133
  FullName?: string;
3101
3134
  }
3135
+ export type EntityTypeFilter = "Customer" | "Employee" | "OtherName" | "Vendor";
3102
3136
  export interface ErrorRecovery {
3103
3137
  /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
3104
3138
  ListID?: string;
@@ -6969,6 +7003,43 @@ export interface ItemSubtotalRet {
6969
7003
  /** A list of `IDataExtRet` objects, each of which represents a field that has been added to QuickBooks as a data extension. */
6970
7004
  DataExtRet?: DataExtRet | DataExtRet[];
6971
7005
  }
7006
+ export type ItemTypeFilter = "AllExceptFixedAsset" | "Assembly" | "Discount" | "FixedAsset" | "Inventory" | "InventoryAndAssembly" | "NonInventory" | "OtherCharge" | "Payment" | "Sales" | "SalesTax" | "Service";
7007
+ export interface JobReportQueryRq {
7008
+ /** The type of job report. */
7009
+ JobReportType: JobReportType;
7010
+ /** Set `DisplayReport` to true to display this report within the QuickBooks UI. (Default is false.) If you want the request to display the report without returning any data to your application, set the `responseData` attribute to `includeNone`. */
7011
+ DisplayReport?: boolean;
7012
+ /** If you omit both `ToReportDate` and `FromReportDate`, the report will cover the current fiscal year to date. */
7013
+ ReportPeriod?: ReportPeriod;
7014
+ /** The time period covered by this report. */
7015
+ ReportDateMacro?: ReportDateMacro;
7016
+ /** Allows you to query for a specified account type or for specific list elements. */
7017
+ ReportAccountFilter?: ReportAccountFilter;
7018
+ /** Allows you to query for a specified name type (customer, employee, vendor, or other) or query for specific list elements. */
7019
+ ReportEntityFilter?: ReportEntityFilter;
7020
+ /** Allows you to query for a specified item type (for example, discount, inventory, or non-inventory) or query for specific list elements. */
7021
+ ReportItemFilter?: ReportItemFilter;
7022
+ /** Allows you to query for a specified class. Classes can be used to separate transactions into meaningful categories. (For example, transactions could be classified according to department, business location, or type of work.) In QuickBooks, class tracking is off by default. */
7023
+ ReportClassFilter?: ReportClassFilter;
7024
+ /** Allows you to report on specific transaction types (for example, charge, check, deposit, or estimate). */
7025
+ ReportTxnTypeFilter?: ReportTxnTypeFilter;
7026
+ /** Returns reports that were modified between these two dates (inclusive). The range of acceptable dates for both `FromReportModifiedDate` and `ToReportModifiedDate` is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
7027
+ ReportModifiedDateRangeFilter?: ReportModifiedDateRangeFilter;
7028
+ /** The time period covered by this report. */
7029
+ ReportModifiedDateRangeMacro?: ReportModifiedDateRangeMacro;
7030
+ /** The level of detail to include in the report. */
7031
+ ReportDetailLevelFilter?: ReportDetailLevelFilter;
7032
+ /** Allows you to query for posting reports, non-posting reports, or reports that are either one. */
7033
+ ReportPostingStatusFilter?: ReportPostingStatusFilter;
7034
+ /** `SummarizeColumnsBy` determines which data the report calculates and how the columns will be labeled across the top of the report. For example, if you set the value to `scbTwoWeek`, the report’s column labels might be “Feb 10-23, 02,” “Feb 24-Mar9, 02,” and so on. */
7035
+ SummarizeColumnsBy?: SummarizeColumnsBy;
7036
+ /** The default value is false, which means that the report will not include any subcolumn information. To include all available types of subcolumns for this report, set `IncludeSubcolumns` to true. The SDK will not return subcolumn information for data that can be easily computed. (For example, the SDK does not return the “percent of row” column.) */
7037
+ IncludeSubcolumns?: boolean;
7038
+ }
7039
+ export interface JobReportQueryRs {
7040
+ ReportRet: ReportRet[];
7041
+ }
7042
+ export type JobReportType = "ItemEstimatesVsActuals" | "ItemProfitability" | "JobEstimatesVsActualsDetail" | "JobEstimatesVsActualsSummary" | "JobProfitabilityDetail" | "JobProfitabilitySummary,";
6972
7043
  /** @default: None */
6973
7044
  export type JobStatus = "Awarded" | "Closed" | "InProgress" | "None" | "NotAwarded" | "Pending";
6974
7045
  export interface JobTypeAdd {
@@ -7989,8 +8060,112 @@ export interface RefNumberRangeFilter {
7989
8060
  ToRefNumber?: string;
7990
8061
  }
7991
8062
  export type Relation = "Brother" | "Daughter" | "Father" | "Friend" | "Mother" | "Other" | "Partner" | "Sister" | "Son" | "Spouse";
8063
+ export interface ReportAccountFilter {
8064
+ /** Allows you to report on a specific account type. */
8065
+ AccountTypeFilter?: AccountTypeFilter;
8066
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
8067
+ ListID?: string[] | string;
8068
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
8069
+ FullName?: string[] | string;
8070
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
8071
+ ListIDWithChildren?: string;
8072
+ /** Allows you to filter for data that relates to the specified object and its descendants. For names that do not have children, `FullNameWithChildren` is exactly the same as `FullName`. */
8073
+ FullNameWithChildren?: string;
8074
+ }
8075
+ /** @default: None */
8076
+ export type ReportBasis = "Accrual" | "Cash" | "None";
8077
+ export interface ReportClassFilter {
8078
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
8079
+ ListID?: string[] | string;
8080
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
8081
+ FullName?: string[] | string;
8082
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
8083
+ ListIDWithChildren?: string;
8084
+ /** Allows you to filter for data that relates to the specified object and its descendants. For names that do not have children, `FullNameWithChildren` is exactly the same as `FullName`. */
8085
+ FullNameWithChildren?: string;
8086
+ }
8087
+ export interface ReportData {
8088
+ /** A data row contains the actual data for each column. */
8089
+ DataRow?: DataRow;
8090
+ /** A text row contains only text and is used mainly for headings. */
8091
+ TextRow?: TextRow;
8092
+ /** A row that contains a calculated subtotal of the data in all the rows since the last `SubTotalRow` and, usually, a single underline. There can be multiple `SubTotalRow` aggregates in a report. */
8093
+ SubtotalRow?: SubtotalRow;
8094
+ /** A row that contains a calculated total of all the data that has come before and a double underline. There will only be one `TotalRow` per report. If `TotalRow` does not include any numerical values, the columns required to show the total values are not part of the report. These columns were not included when the report was customized. */
8095
+ TotalRow?: TotalRow;
8096
+ }
8097
+ export type ReportDateMacro = "All" | "LastMonth" | "LastMonthToDate" | "LastQuarter" | "LastQuarterToDate" | "LastWeek" | "LastWeekToDate" | "LastYear" | "LastYearToDate" | "NextFourWeeks" | "NextMonth" | "NextQuarter" | "NextWeek" | "NextYear" | "ThisMonth" | "ThisMonthToDate" | "ThisQuarter" | "ThisQuarterToDate" | "ThisWeek" | "ThisWeekToDate" | "ThisYear" | "ThisYearToDate" | "Today" | "Yesterday";
8098
+ /** @default: All */
8099
+ export type ReportDetailLevelFilter = "All" | "AllExceptSummary" | "SummaryOnly";
8100
+ export interface ReportEntityFilter {
8101
+ /** Allows you to report on a specific name type. */
8102
+ EntityTypeFilter?: EntityTypeFilter;
8103
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
8104
+ ListID?: string[] | string;
8105
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
8106
+ FullName?: string[] | string;
8107
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
8108
+ ListIDWithChildren?: string;
8109
+ /** Allows you to filter for data that relates to the specified object and its descendants. For names that do not have children, `FullNameWithChildren` is exactly the same as `FullName`. */
8110
+ FullNameWithChildren?: string;
8111
+ }
7992
8112
  /** @default: Quarterly */
7993
8113
  export type ReportingPeriod = "Monthly" | "Quarterly";
8114
+ export interface ReportItemFilter {
8115
+ /** Allows you to report on a specific item type. */
8116
+ ItemTypeFilter?: ItemTypeFilter;
8117
+ /** One or more `ListID` values. Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
8118
+ ListID?: string[] | string;
8119
+ /** A list of one or more `FullName` values. `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
8120
+ FullName?: string[] | string;
8121
+ /** Allows you to filter for data that relates to the specified object and its descendants. */
8122
+ ListIDWithChildren?: string;
8123
+ /** Allows you to filter for data that relates to the specified object and its descendants. For names that do not have children, `FullNameWithChildren` is exactly the same as `FullName`. */
8124
+ FullNameWithChildren?: string;
8125
+ }
8126
+ export interface ReportModifiedDateRangeFilter {
8127
+ /** Selects information from this date and later. The range of acceptable dates is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
8128
+ FromReportModifiedDate?: string;
8129
+ /** Selects information created on this date or earlier. The range of acceptable dates is 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
8130
+ ToReportModifiedDate?: string;
8131
+ }
8132
+ export type ReportModifiedDateRangeMacro = "All" | "LastMonth" | "LastMonthToDate" | "LastQuarter" | "LastQuarterToDate" | "LastWeek" | "LastWeekToDate" | "LastYear" | "LastYearToDate" | "NextFourWeeks" | "NextMonth" | "NextQuarter" | "NextWeek" | "NextYear" | "ThisMonth" | "ThisMonthToDate" | "ThisQuarter" | "ThisQuarterToDate" | "ThisWeek" | "ThisWeekToDate" | "ThisYear" | "ThisYearToDate" | "Today" | "Yesterday";
8133
+ export interface ReportPeriod {
8134
+ /** Selects information from this date and later. The range of acceptable `FromReportDate` and `ToReportDate` values depends on how the report dates are determined. If the report dates are based on the dates of transactions, the range is 01/01/1901 to 12/31/9999. If the report dates are based on modification dates, the range will be 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). If you omit `FromReportDate`, it will be set to 1970-01-01T00:00:00 (1969-12-31T16:00:00-08:00 PST). */
8135
+ FromReportDate?: string;
8136
+ /** Selects information created on this date or earlier. The range of acceptable `ToReportDate` and `FromReportDate` values depends on how the report dates are determined. If the report dates are based on the dates of transactions, the range is 01/01/1901 to 12/31/9999. If the report dates are based on modification dates, the range will be 1970-01-01 to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). If you omit `ToReportDate`, it will be set to 2038-01-19T03:14:07 (2038-01-18T19:14:07-08:00 PST). */
8137
+ ToReportDate?: string;
8138
+ }
8139
+ export type ReportPostingStatusFilter = "Either" | "NonPosting" | "Posting";
8140
+ export interface ReportRet {
8141
+ /** The main title for this report. */
8142
+ ReportTitle: string;
8143
+ /** The subtitle for this report. */
8144
+ ReportSubtitle: string;
8145
+ /** If `ReportBasis` is `rbCash`, the report bases income and expenses on the dates when money changed hands.`rbAccrual`, the report bases income on the dates when customers were invoiced and bases expenses on the dates when bills were entered.`rbNone`, the report uses the default `ReportBasis`, which is either the QuickBooks Preference setting or the QuickBooks default for a given type of report. In a report response, the SDK returns `rbNone` for reports that do not support `ReportBasis`. (The 1099 report, for example, has its own basis for generation.) */
8146
+ ReportBasis?: ReportBasis;
8147
+ /** The number of rows in the report. */
8148
+ NumRows: number;
8149
+ /** The number of columns in the report. */
8150
+ NumColumns: number;
8151
+ /** The number of rows to allocate for column titles. Although this number is usually 1, with some reports it is 2 or 3. (For an example of column titles that span multiple rows, look at a `ProfitAndLossByJob` report in QuickBooks.) */
8152
+ NumColTitleRows: number;
8153
+ /** A list of `IColDesc` objects, each of which identifies one column in the report. Each column is identified by a `colID` (the position of the column in the report), a title, and a type. If the report contains any data, it is given row-by-row in an `IReportData` object. */
8154
+ ColDesc: ColDesc | ColDesc[];
8155
+ /** If the report contains any data, it is given row-by-row in a `ReportData` aggregate. */
8156
+ ReportData?: ReportData;
8157
+ }
8158
+ export interface ReportTxnTypeFilter {
8159
+ /** A list of the transaction types you want the report to cover. */
8160
+ TxnTypeFilter: TxnTypeFilter | TxnTypeFilter[];
8161
+ }
8162
+ export interface RowData {
8163
+ /** An enumerated value that shows the type of data that this row contains. Values: account class customer `customerMessage` `customerType` employee item `jobType` label `memorizedTxn` `memorizedReport` name `otherName` `paymentMethod` `payrollItem` `salesRep` `salesTaxCode` `shipMethod` state style terms `toDo` vendor `vendorType` */
8164
+ RowType: RowType;
8165
+ /** The data in this cell of the report. */
8166
+ Value: string;
8167
+ }
8168
+ export type RowType = "account" | "class" | "customer" | "customerMessage" | "customerType" | "employee" | "item" | "jobType" | "label" | "memorizedReport" | "memorizedTxn" | "name" | "otherName" | "paymentMethod" | "payrollItem" | "salesRep" | "salesTaxCode" | "shipMethod" | "state" | "style" | "terms" | "toDo" | "vendor" | "vendorType";
7994
8169
  export interface SalesAndPurchase {
7995
8170
  /** Appears in the `Description` column of a sales form when the QuickBooks user sells this item. For a fixed asset, describes the sale of the asset (for accounting purposes). */
7996
8171
  SalesDesc?: string;
@@ -8765,6 +8940,13 @@ export interface SubscribedServices {
8765
8940
  /** The list of the Intuit services that the company is or has been subscribed to, for example, Intuit Payroll, QBMS. */
8766
8941
  Service?: Service | Service[];
8767
8942
  }
8943
+ export interface SubtotalRow {
8944
+ /** `RowData` describes one row in the report. */
8945
+ RowData?: RowData;
8946
+ /** A list of `IColData` objects, each of which describes the data in one cell of the report. */
8947
+ ColData?: ColData | ColData[];
8948
+ }
8949
+ export type SummarizeColumnsBy = "Account" | "BalanceSheet" | "Class" | "Customer" | "CustomerType" | "Day" | "Employee" | "FourWeek" | "HalfMonth" | "IncomeStatement" | "ItemDetail" | "ItemType" | "Month" | "Payee" | "PaymentMethod" | "PayrollItemDetail" | "PayrollYtdDetail" | "Quarter" | "SalesRep" | "SalesTaxCode" | "ShipMethod" | "Terms" | "TotalOnly" | "TwoWeek" | "Vendor" | "VendorType" | "Week" | "Year";
8768
8950
  export interface SupervisorRef {
8769
8951
  /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
8770
8952
  ListID?: string;
@@ -8808,6 +8990,12 @@ export interface TermsRef {
8808
8990
  /** `FullName` (along with `ListID`) is a way to identify a list object. The `FullName` is the name prefixed by the names of each ancestor, for example `Jones:Kitchen:Cabinets`. `FullName` values are not case-sensitive. */
8809
8991
  FullName?: string;
8810
8992
  }
8993
+ export interface TextRow {
8994
+ /** The row number. Rows are numbered from top to bottom, starting with 1. */
8995
+ RowNumber: number;
8996
+ /** The data in this cell of the report. */
8997
+ Value: string;
8998
+ }
8811
8999
  export interface TimeTrackingAdd {
8812
9000
  /** The date of the transaction. In some cases, if you leave `TxnDate` out of an -Add message, QuickBooks will prefill `TxnDate` with the date of the last-saved transaction of the same type. */
8813
9001
  TxnDate?: string;
@@ -8939,6 +9127,12 @@ export interface TotalBalanceFilter {
8939
9127
  /** The monetary amount to which `Operator` refers. */
8940
9128
  Amount: string;
8941
9129
  }
9130
+ export interface TotalRow {
9131
+ /** `RowData` describes one row in the report. */
9132
+ RowData?: RowData;
9133
+ /** A list of `IColData` objects, each of which describes the data in one cell of the report. */
9134
+ ColData?: ColData | ColData[];
9135
+ }
8942
9136
  /** @default: CardNotPresent */
8943
9137
  export type TransactionMode = "CardNotPresent" | "CardPresent";
8944
9138
  export interface TxnDateRangeFilter {
@@ -8958,6 +9152,7 @@ export interface TxnDateRangeFilter {
8958
9152
  DateMacro?: DateMacro;
8959
9153
  }
8960
9154
  export type TxnType = "ARRefundCreditCard" | "Bill" | "BillPaymentCheck" | "BillPaymentCreditCard" | "BuildAssembly" | "Charge" | "Check" | "CreditCardCharge" | "CreditCardCredit" | "CreditMemo" | "Deposit" | "Estimate" | "InventoryAdjustment" | "Invoice" | "ItemReceipt" | "JournalEntry" | "LiabilityAdjustment" | "Paycheck" | "PayrollLiabilityCheck" | "PurchaseOrder" | "ReceivePayment" | "SalesOrder" | "SalesReceipt" | "SalesTaxPaymentCheck" | "Transfer" | "VendorCredit" | "YTDAdjustment";
9155
+ export type TxnTypeFilter = "All" | "ARRefundCreditCard" | "Bill" | "BillPaymentCheck" | "BillPaymentCreditCard" | "BuildAssembly" | "Charge" | "Check" | "CreditCardCharge" | "CreditCardCredit" | "CreditMemo" | "Deposit" | "Estimate" | "InventoryAdjustment" | "Invoice" | "ItemReceipt" | "JournalEntry" | "LiabilityAdjustment" | "Paycheck" | "PayrollLiabilityCheck" | "PurchaseOrder" | "ReceivePayment" | "SalesOrder" | "SalesReceipt" | "SalesTaxPaymentCheck" | "Transfer" | "VendorCredit" | "YTDAdjustment";
8961
9156
  export interface UnitOfMeasureSetRef {
8962
9157
  /** Along with `FullName`, `ListID` is a way to identify a list object. When a list object is added to QuickBooks through the SDK or through the QuickBooks user interface, the server assigns it a `ListID`. A `ListID` is not unique across lists, but it is unique across each particular type of list. For example, two customers could not have the same `ListID`, and a customer could not have the same `ListID` as an employee (because Customer and Employee are both name lists). But a customer could have the same `ListID` as a non-inventory item. */
8963
9158
  ListID?: string;
@@ -64,7 +64,7 @@ class ConductorError extends Error {
64
64
  rawType;
65
65
  constructor(options) {
66
66
  // Do not pass `options.message` to the superclass `Error` constructor to
67
- // avoid this bug: https://twitter.com/DannyNemer/status/1638997876176195584
67
+ // avoid this bug: https://twitter.com/DannyNemer/status/1639513810141687810
68
68
  super();
69
69
  // Set `name` to the constructor name so that the error appears in logs as
70
70
  // `[ConductorError: foo]` instead of `[Error: foo]`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conductor-node",
3
- "version": "9.4.1",
3
+ "version": "9.5.0",
4
4
  "description": "Easily integrate with the entire QuickBooks Desktop API with fully-typed async TypeScript",
5
5
  "author": "Danny Nemer <hi@DannyNemer.com>",
6
6
  "license": "MIT",