@hyperline/cli 0.1.0-build.1.07eb485 → 0.1.0-build.1.081b79f
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/bin/hyperline-main.js +465 -88
- package/package.json +1 -1
|
@@ -39087,7 +39087,7 @@ Examples:
|
|
|
39087
39087
|
queryParamKeys: []
|
|
39088
39088
|
});
|
|
39089
39089
|
});
|
|
39090
|
-
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.)
|
|
39090
|
+
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.). \`recurring\` matches every interval except \`once\` and requires a null \`interval_count\`. \`null\` matches every interval, including \`once\`.`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39091
39091
|
Examples:
|
|
39092
39092
|
hyperline accounting-rules create --category <category> --priority <priority>
|
|
39093
39093
|
hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
|
|
@@ -39187,7 +39187,7 @@ Examples:
|
|
|
39187
39187
|
queryParamKeys: []
|
|
39188
39188
|
});
|
|
39189
39189
|
});
|
|
39190
|
-
resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.)
|
|
39190
|
+
resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.). \`recurring\` matches every interval except \`once\` and requires a null \`interval_count\`. \`null\` matches every interval, including \`once\`.`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39191
39191
|
Examples:
|
|
39192
39192
|
hyperline accounting-rules update --id <id>
|
|
39193
39193
|
hyperline accounting-rules update --id <id> --name <name> --category <category>
|
|
@@ -40908,6 +40908,332 @@ Examples:
|
|
|
40908
40908
|
});
|
|
40909
40909
|
}
|
|
40910
40910
|
|
|
40911
|
+
// build/commands/generated/contracts-clauses.js
|
|
40912
|
+
function registerContracts_ClausesCommands(parent) {
|
|
40913
|
+
const resource = parent.command("contracts-clauses").description("Manage contracts > clauses");
|
|
40914
|
+
resource.command("list-contract-clauses").description(`List the contract clauses of the contract library, with their texts and translations. Use the returned IDs in \`contract_clause_ids\` when creating a quote. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
40915
|
+
Examples:
|
|
40916
|
+
hyperline contracts-clauses list-contract-clauses
|
|
40917
|
+
hyperline contracts-clauses list-contract-clauses --take <take>`).action(async (opts) => {
|
|
40918
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40919
|
+
if (!ctx) {
|
|
40920
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40921
|
+
process.exit(1);
|
|
40922
|
+
}
|
|
40923
|
+
const args = {};
|
|
40924
|
+
if (opts.take !== void 0)
|
|
40925
|
+
args.take = Number(opts.take);
|
|
40926
|
+
if (opts.skip !== void 0)
|
|
40927
|
+
args.skip = Number(opts.skip);
|
|
40928
|
+
await ctx.execute({
|
|
40929
|
+
method: "GET",
|
|
40930
|
+
path: "/v1/contracts/clauses",
|
|
40931
|
+
args,
|
|
40932
|
+
queryParamKeys: ["take", "skip"]
|
|
40933
|
+
});
|
|
40934
|
+
});
|
|
40935
|
+
resource.command("create-contract-clause").description(`Create a contract clause in the contract library, with a default text and optional translations keyed by language code.`).requiredOption("--name <value>", `Name of the contract clause, displayed in the contract library.`).requiredOption("--text <value>", `Default text of the clause, used when no translation exists for the customer language. Plain text, line breaks are preserved.`).option("--translations <json>", `Translations of the clause, keyed by language code. The translation matching the customer language is used instead of \`text\`.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the clause is available when building a quote.`).addHelpText("after", `
|
|
40936
|
+
Examples:
|
|
40937
|
+
hyperline contracts-clauses create-contract-clause --name <name> --text <text>
|
|
40938
|
+
hyperline contracts-clauses create-contract-clause --name <name> --text <text> --translations <translations> --invoicing-entity-ids <invoicing_entity_ids>
|
|
40939
|
+
hyperline contracts-clauses create-contract-clause --name <name> --text <text> --output json`).action(async (opts) => {
|
|
40940
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40941
|
+
if (!ctx) {
|
|
40942
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40943
|
+
process.exit(1);
|
|
40944
|
+
}
|
|
40945
|
+
const args = {};
|
|
40946
|
+
if (opts.name !== void 0)
|
|
40947
|
+
args.name = opts.name;
|
|
40948
|
+
if (opts.text !== void 0)
|
|
40949
|
+
args.text = opts.text;
|
|
40950
|
+
if (opts.translations !== void 0)
|
|
40951
|
+
args.translations = JSON.parse(opts.translations);
|
|
40952
|
+
if (opts.invoicingEntityIds !== void 0)
|
|
40953
|
+
args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
|
|
40954
|
+
await ctx.execute({
|
|
40955
|
+
method: "POST",
|
|
40956
|
+
path: "/v1/contracts/clauses",
|
|
40957
|
+
args,
|
|
40958
|
+
queryParamKeys: []
|
|
40959
|
+
});
|
|
40960
|
+
});
|
|
40961
|
+
resource.command("get-contract-clause").description(`Retrieve a contract clause by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40962
|
+
Examples:
|
|
40963
|
+
hyperline contracts-clauses get-contract-clause --id <id>`).action(async (opts) => {
|
|
40964
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40965
|
+
if (!ctx) {
|
|
40966
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40967
|
+
process.exit(1);
|
|
40968
|
+
}
|
|
40969
|
+
const args = {};
|
|
40970
|
+
if (opts.id !== void 0)
|
|
40971
|
+
args.id = opts.id;
|
|
40972
|
+
await ctx.execute({
|
|
40973
|
+
method: "GET",
|
|
40974
|
+
path: "/v1/contracts/clauses/{id}",
|
|
40975
|
+
args,
|
|
40976
|
+
queryParamKeys: []
|
|
40977
|
+
});
|
|
40978
|
+
});
|
|
40979
|
+
resource.command("update-contract-clause").description(`Update the name, text, translations or invoicing entities of a contract clause. Sending \`translations\` replaces all existing translations.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Name of the contract clause, displayed in the contract library.`).option("--text <value>", `Default text of the clause, used when no translation exists for the customer language. Plain text, line breaks are preserved.`).option("--translations <json>", `Translations of the clause, keyed by language code. Replaces all existing translations: omitted languages are removed.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the clause is available when building a quote.`).addHelpText("after", `
|
|
40980
|
+
Examples:
|
|
40981
|
+
hyperline contracts-clauses update-contract-clause --id <id>
|
|
40982
|
+
hyperline contracts-clauses update-contract-clause --id <id> --name <name> --text <text>
|
|
40983
|
+
hyperline contracts-clauses update-contract-clause --id <id> --output json`).action(async (opts) => {
|
|
40984
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40985
|
+
if (!ctx) {
|
|
40986
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40987
|
+
process.exit(1);
|
|
40988
|
+
}
|
|
40989
|
+
const args = {};
|
|
40990
|
+
if (opts.id !== void 0)
|
|
40991
|
+
args.id = opts.id;
|
|
40992
|
+
if (opts.name !== void 0)
|
|
40993
|
+
args.name = opts.name;
|
|
40994
|
+
if (opts.text !== void 0)
|
|
40995
|
+
args.text = opts.text;
|
|
40996
|
+
if (opts.translations !== void 0)
|
|
40997
|
+
args.translations = JSON.parse(opts.translations);
|
|
40998
|
+
if (opts.invoicingEntityIds !== void 0)
|
|
40999
|
+
args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
|
|
41000
|
+
await ctx.execute({
|
|
41001
|
+
method: "PUT",
|
|
41002
|
+
path: "/v1/contracts/clauses/{id}",
|
|
41003
|
+
args,
|
|
41004
|
+
queryParamKeys: []
|
|
41005
|
+
});
|
|
41006
|
+
});
|
|
41007
|
+
resource.command("delete-contract-clause").description(`Delete a contract clause from the contract library. Existing quotes keep their copy of the clause.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
41008
|
+
Examples:
|
|
41009
|
+
hyperline contracts-clauses delete-contract-clause --id <id>
|
|
41010
|
+
hyperline contracts-clauses delete-contract-clause --id <id> --output json`).action(async (opts) => {
|
|
41011
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41012
|
+
if (!ctx) {
|
|
41013
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41014
|
+
process.exit(1);
|
|
41015
|
+
}
|
|
41016
|
+
const args = {};
|
|
41017
|
+
if (opts.id !== void 0)
|
|
41018
|
+
args.id = opts.id;
|
|
41019
|
+
if (!opts.yes) {
|
|
41020
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
41021
|
+
if (!confirmed) {
|
|
41022
|
+
process.stdout.write("Aborted.\n");
|
|
41023
|
+
return;
|
|
41024
|
+
}
|
|
41025
|
+
}
|
|
41026
|
+
await ctx.execute({
|
|
41027
|
+
method: "DELETE",
|
|
41028
|
+
path: "/v1/contracts/clauses/{id}",
|
|
41029
|
+
args,
|
|
41030
|
+
queryParamKeys: []
|
|
41031
|
+
});
|
|
41032
|
+
});
|
|
41033
|
+
}
|
|
41034
|
+
|
|
41035
|
+
// build/commands/generated/contracts-documents.js
|
|
41036
|
+
function registerContracts_DocumentsCommands(parent) {
|
|
41037
|
+
const resource = parent.command("contracts-documents").description("Manage contracts > documents");
|
|
41038
|
+
resource.command("list-contract-documents").description(`List the contract documents of the contract library (terms of service, DPA, SLA...), with their contents per language and countries and the files of each content. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
41039
|
+
Examples:
|
|
41040
|
+
hyperline contracts-documents list-contract-documents
|
|
41041
|
+
hyperline contracts-documents list-contract-documents --take <take>`).action(async (opts) => {
|
|
41042
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41043
|
+
if (!ctx) {
|
|
41044
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41045
|
+
process.exit(1);
|
|
41046
|
+
}
|
|
41047
|
+
const args = {};
|
|
41048
|
+
if (opts.take !== void 0)
|
|
41049
|
+
args.take = Number(opts.take);
|
|
41050
|
+
if (opts.skip !== void 0)
|
|
41051
|
+
args.skip = Number(opts.skip);
|
|
41052
|
+
await ctx.execute({
|
|
41053
|
+
method: "GET",
|
|
41054
|
+
path: "/v1/contracts/documents",
|
|
41055
|
+
args,
|
|
41056
|
+
queryParamKeys: ["take", "skip"]
|
|
41057
|
+
});
|
|
41058
|
+
});
|
|
41059
|
+
resource.command("create-contract-document").description(`Create a contract document in the contract library. Its files are added afterwards per language with \`create_contract_document_content\`.`).requiredOption("--name <value>", `Name of the contract document, displayed in the contract library.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the contract document is available when building a quote.`).addHelpText("after", `
|
|
41060
|
+
Examples:
|
|
41061
|
+
hyperline contracts-documents create-contract-document --name <name>
|
|
41062
|
+
hyperline contracts-documents create-contract-document --name <name> --invoicing-entity-ids <invoicing_entity_ids>
|
|
41063
|
+
hyperline contracts-documents create-contract-document --name <name> --output json`).action(async (opts) => {
|
|
41064
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41065
|
+
if (!ctx) {
|
|
41066
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41067
|
+
process.exit(1);
|
|
41068
|
+
}
|
|
41069
|
+
const args = {};
|
|
41070
|
+
if (opts.name !== void 0)
|
|
41071
|
+
args.name = opts.name;
|
|
41072
|
+
if (opts.invoicingEntityIds !== void 0)
|
|
41073
|
+
args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
|
|
41074
|
+
await ctx.execute({
|
|
41075
|
+
method: "POST",
|
|
41076
|
+
path: "/v1/contracts/documents",
|
|
41077
|
+
args,
|
|
41078
|
+
queryParamKeys: []
|
|
41079
|
+
});
|
|
41080
|
+
});
|
|
41081
|
+
resource.command("get-contract-document").description(`Retrieve a contract document by ID, with its contents and their files.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
41082
|
+
Examples:
|
|
41083
|
+
hyperline contracts-documents get-contract-document --id <id>`).action(async (opts) => {
|
|
41084
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41085
|
+
if (!ctx) {
|
|
41086
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41087
|
+
process.exit(1);
|
|
41088
|
+
}
|
|
41089
|
+
const args = {};
|
|
41090
|
+
if (opts.id !== void 0)
|
|
41091
|
+
args.id = opts.id;
|
|
41092
|
+
await ctx.execute({
|
|
41093
|
+
method: "GET",
|
|
41094
|
+
path: "/v1/contracts/documents/{id}",
|
|
41095
|
+
args,
|
|
41096
|
+
queryParamKeys: []
|
|
41097
|
+
});
|
|
41098
|
+
});
|
|
41099
|
+
resource.command("update-contract-document").description(`Update the name or invoicing entities of a contract document. Its files are updated per content with \`update_contract_document_content\`.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Name of the contract document, displayed in the contract library.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the contract document is available when building a quote.`).addHelpText("after", `
|
|
41100
|
+
Examples:
|
|
41101
|
+
hyperline contracts-documents update-contract-document --id <id>
|
|
41102
|
+
hyperline contracts-documents update-contract-document --id <id> --name <name> --invoicing-entity-ids <invoicing_entity_ids>
|
|
41103
|
+
hyperline contracts-documents update-contract-document --id <id> --output json`).action(async (opts) => {
|
|
41104
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41105
|
+
if (!ctx) {
|
|
41106
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41107
|
+
process.exit(1);
|
|
41108
|
+
}
|
|
41109
|
+
const args = {};
|
|
41110
|
+
if (opts.id !== void 0)
|
|
41111
|
+
args.id = opts.id;
|
|
41112
|
+
if (opts.name !== void 0)
|
|
41113
|
+
args.name = opts.name;
|
|
41114
|
+
if (opts.invoicingEntityIds !== void 0)
|
|
41115
|
+
args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
|
|
41116
|
+
await ctx.execute({
|
|
41117
|
+
method: "PUT",
|
|
41118
|
+
path: "/v1/contracts/documents/{id}",
|
|
41119
|
+
args,
|
|
41120
|
+
queryParamKeys: []
|
|
41121
|
+
});
|
|
41122
|
+
});
|
|
41123
|
+
resource.command("delete-contract-document").description(`Delete a contract document from the contract library. Existing quotes keep their copy of the files.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
41124
|
+
Examples:
|
|
41125
|
+
hyperline contracts-documents delete-contract-document --id <id>
|
|
41126
|
+
hyperline contracts-documents delete-contract-document --id <id> --output json`).action(async (opts) => {
|
|
41127
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41128
|
+
if (!ctx) {
|
|
41129
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41130
|
+
process.exit(1);
|
|
41131
|
+
}
|
|
41132
|
+
const args = {};
|
|
41133
|
+
if (opts.id !== void 0)
|
|
41134
|
+
args.id = opts.id;
|
|
41135
|
+
if (!opts.yes) {
|
|
41136
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
41137
|
+
if (!confirmed) {
|
|
41138
|
+
process.stdout.write("Aborted.\n");
|
|
41139
|
+
return;
|
|
41140
|
+
}
|
|
41141
|
+
}
|
|
41142
|
+
await ctx.execute({
|
|
41143
|
+
method: "DELETE",
|
|
41144
|
+
path: "/v1/contracts/documents/{id}",
|
|
41145
|
+
args,
|
|
41146
|
+
queryParamKeys: []
|
|
41147
|
+
});
|
|
41148
|
+
});
|
|
41149
|
+
resource.command("create-contract-document-content").description(`Add a content to a contract document: its files for one language (\`default\` as fallback) and optional countries, sent as a comma-separated list. At least one PDF or Word file is required.`).requiredOption("--id <value>", `id parameter`).requiredOption("--language <value>", `Language of the content. \`default\` is used when no content exists for the customer language.`).option("--countries <value>", `Countries the content applies to, as ISO 3166-1 alpha-2 codes. Empty means all countries. In a multipart request, send a comma-separated list.`).requiredOption("--files <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
|
|
41150
|
+
Examples:
|
|
41151
|
+
hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path>
|
|
41152
|
+
hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path> --countries <countries>
|
|
41153
|
+
hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path> --output json`).action(async (opts) => {
|
|
41154
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41155
|
+
if (!ctx) {
|
|
41156
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41157
|
+
process.exit(1);
|
|
41158
|
+
}
|
|
41159
|
+
const args = {};
|
|
41160
|
+
if (opts.id !== void 0)
|
|
41161
|
+
args.id = opts.id;
|
|
41162
|
+
if (opts.language !== void 0)
|
|
41163
|
+
args.language = opts.language;
|
|
41164
|
+
if (opts.countries !== void 0)
|
|
41165
|
+
args.countries = opts.countries;
|
|
41166
|
+
const files = {};
|
|
41167
|
+
if (opts.files !== void 0)
|
|
41168
|
+
files.files = [opts.files].flat();
|
|
41169
|
+
await ctx.execute({
|
|
41170
|
+
method: "POST",
|
|
41171
|
+
path: "/v1/contracts/documents/{id}/contents",
|
|
41172
|
+
args,
|
|
41173
|
+
queryParamKeys: [],
|
|
41174
|
+
files
|
|
41175
|
+
});
|
|
41176
|
+
});
|
|
41177
|
+
resource.command("update-contract-document-content").description(`Update a contract document content. Sent files replace all its existing files: use it to publish a new version of a document. Existing quotes keep their copy of the previous files.`).requiredOption("--id <value>", `id parameter`).requiredOption("--content-id <value>", `contentId parameter`).option("--language <value>", `Language of the content. \`default\` is used when no content exists for the customer language.`).option("--countries <value>", `Countries the content applies to, as ISO 3166-1 alpha-2 codes. Empty means all countries. In a multipart request, send a comma-separated list, or an empty value for all countries.`).option("--files <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
|
|
41178
|
+
Examples:
|
|
41179
|
+
hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId>
|
|
41180
|
+
hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId> --language <language> --countries <countries>
|
|
41181
|
+
hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId> --output json`).action(async (opts) => {
|
|
41182
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41183
|
+
if (!ctx) {
|
|
41184
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41185
|
+
process.exit(1);
|
|
41186
|
+
}
|
|
41187
|
+
const args = {};
|
|
41188
|
+
if (opts.id !== void 0)
|
|
41189
|
+
args.id = opts.id;
|
|
41190
|
+
if (opts.contentId !== void 0)
|
|
41191
|
+
args.contentId = opts.contentId;
|
|
41192
|
+
if (opts.language !== void 0)
|
|
41193
|
+
args.language = opts.language;
|
|
41194
|
+
if (opts.countries !== void 0)
|
|
41195
|
+
args.countries = opts.countries;
|
|
41196
|
+
const files = {};
|
|
41197
|
+
if (opts.files !== void 0)
|
|
41198
|
+
files.files = [opts.files].flat();
|
|
41199
|
+
await ctx.execute({
|
|
41200
|
+
method: "PUT",
|
|
41201
|
+
path: "/v1/contracts/documents/{id}/contents/{contentId}",
|
|
41202
|
+
args,
|
|
41203
|
+
queryParamKeys: [],
|
|
41204
|
+
files
|
|
41205
|
+
});
|
|
41206
|
+
});
|
|
41207
|
+
resource.command("delete-contract-document-content").description(`Delete a content (one language and countries version) of a contract document.`).requiredOption("--id <value>", `id parameter`).requiredOption("--content-id <value>", `contentId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
41208
|
+
Examples:
|
|
41209
|
+
hyperline contracts-documents delete-contract-document-content --id <id> --content-id <contentId>
|
|
41210
|
+
hyperline contracts-documents delete-contract-document-content --id <id> --content-id <contentId> --output json`).action(async (opts) => {
|
|
41211
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41212
|
+
if (!ctx) {
|
|
41213
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41214
|
+
process.exit(1);
|
|
41215
|
+
}
|
|
41216
|
+
const args = {};
|
|
41217
|
+
if (opts.id !== void 0)
|
|
41218
|
+
args.id = opts.id;
|
|
41219
|
+
if (opts.contentId !== void 0)
|
|
41220
|
+
args.contentId = opts.contentId;
|
|
41221
|
+
if (!opts.yes) {
|
|
41222
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
41223
|
+
if (!confirmed) {
|
|
41224
|
+
process.stdout.write("Aborted.\n");
|
|
41225
|
+
return;
|
|
41226
|
+
}
|
|
41227
|
+
}
|
|
41228
|
+
await ctx.execute({
|
|
41229
|
+
method: "DELETE",
|
|
41230
|
+
path: "/v1/contracts/documents/{id}/contents/{contentId}",
|
|
41231
|
+
args,
|
|
41232
|
+
queryParamKeys: []
|
|
41233
|
+
});
|
|
41234
|
+
});
|
|
41235
|
+
}
|
|
41236
|
+
|
|
40911
41237
|
// build/commands/generated/coupons.js
|
|
40912
41238
|
function registerCouponsCommands(parent) {
|
|
40913
41239
|
const resource = parent.command("coupons").description("Manage coupons");
|
|
@@ -42088,7 +42414,13 @@ Examples:
|
|
|
42088
42414
|
queryParamKeys: []
|
|
42089
42415
|
});
|
|
42090
42416
|
});
|
|
42091
|
-
resource.command("create-customer-address").description(`Create a shipping address with type shipping; billing creation is rejected because a customer can have at most one billing address, managed through the customer endpoint.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--type <value>", `Only shipping addresses can be created here. A customer has at most one active billing address, managed through the customer or by updating its address ID.`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `
|
|
42417
|
+
resource.command("create-customer-address").description(`Create a shipping address with type shipping; billing creation is rejected because a customer can have at most one billing address, managed through the customer endpoint.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--type <value>", `Only shipping addresses can be created here. A customer has at most one active billing address, managed through the customer or by updating its address ID.`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
42418
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
42419
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
42420
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
42421
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
42422
|
+
|
|
42423
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).option("--tax-id <value>", `Tax ID override for a shipping address. Null or blank inherits the customer's tax ID; omission on update preserves the override. Billing addresses cannot have an override.`).addHelpText("after", `
|
|
42092
42424
|
Examples:
|
|
42093
42425
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
|
|
42094
42426
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
|
|
@@ -42126,7 +42458,13 @@ Examples:
|
|
|
42126
42458
|
queryParamKeys: []
|
|
42127
42459
|
});
|
|
42128
42460
|
});
|
|
42129
|
-
resource.command("update-customer-address").description(`Update a billing or shipping address by ID; billing changes also update the customer billing-address projection.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `
|
|
42461
|
+
resource.command("update-customer-address").description(`Update a billing or shipping address by ID; billing changes also update the customer billing-address projection.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
42462
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
42463
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
42464
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
42465
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
42466
|
+
|
|
42467
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).option("--tax-id <value>", `Tax ID override for a shipping address. Null or blank inherits the customer's tax ID; omission on update preserves the override. Billing addresses cannot have an override.`).addHelpText("after", `
|
|
42130
42468
|
Examples:
|
|
42131
42469
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
|
|
42132
42470
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
|
|
@@ -43376,10 +43714,10 @@ Examples:
|
|
|
43376
43714
|
]
|
|
43377
43715
|
});
|
|
43378
43716
|
});
|
|
43379
|
-
resource.command("create").description(`Upload a new file (max 10MB). Requires multipart form data with a file field and metadata (name and customer_id).`).requiredOption("--name <value>", `Name of the file to be uploaded.`).requiredOption("--customer-id <value>", `ID of the customer to link the file to.`).addHelpText("after", `
|
|
43717
|
+
resource.command("create").description(`Upload a new file (max 10MB). Requires multipart form data with a file field and metadata (name and customer_id).`).requiredOption("--name <value>", `Name of the file to be uploaded.`).requiredOption("--customer-id <value>", `ID of the customer to link the file to.`).requiredOption("--file <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
|
|
43380
43718
|
Examples:
|
|
43381
|
-
hyperline files create --name <name> --customer-id <customer_id>
|
|
43382
|
-
hyperline files create --name <name> --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
43719
|
+
hyperline files create --name <name> --customer-id <customer_id> --file <path>
|
|
43720
|
+
hyperline files create --name <name> --customer-id <customer_id> --file <path> --output json`).action(async (opts) => {
|
|
43383
43721
|
const ctx = resource.parent?.opts()._ctx;
|
|
43384
43722
|
if (!ctx) {
|
|
43385
43723
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -43390,11 +43728,15 @@ Examples:
|
|
|
43390
43728
|
args.name = opts.name;
|
|
43391
43729
|
if (opts.customerId !== void 0)
|
|
43392
43730
|
args.customer_id = opts.customerId;
|
|
43731
|
+
const files = {};
|
|
43732
|
+
if (opts.file !== void 0)
|
|
43733
|
+
files.file = [opts.file].flat();
|
|
43393
43734
|
await ctx.execute({
|
|
43394
43735
|
method: "POST",
|
|
43395
43736
|
path: "/v1/files",
|
|
43396
43737
|
args,
|
|
43397
|
-
queryParamKeys: []
|
|
43738
|
+
queryParamKeys: [],
|
|
43739
|
+
files
|
|
43398
43740
|
});
|
|
43399
43741
|
});
|
|
43400
43742
|
resource.command("delete").description(`Permanently delete a file by ID.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
@@ -44109,10 +44451,10 @@ Examples:
|
|
|
44109
44451
|
queryParamKeys: []
|
|
44110
44452
|
});
|
|
44111
44453
|
});
|
|
44112
|
-
resource.command("upload-pdf-to").description(`Upload a custom PDF file (max 5MB) to attach to an existing invoice, replacing the auto-generated PDF.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
44454
|
+
resource.command("upload-pdf-to").description(`Upload a custom PDF file (max 5MB) to attach to an existing invoice, replacing the auto-generated PDF.`).requiredOption("--id <value>", `id parameter`).requiredOption("--file <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
|
|
44113
44455
|
Examples:
|
|
44114
|
-
hyperline invoices upload-pdf-to --id <id>
|
|
44115
|
-
hyperline invoices upload-pdf-to --id <id> --output json`).action(async (opts) => {
|
|
44456
|
+
hyperline invoices upload-pdf-to --id <id> --file <path>
|
|
44457
|
+
hyperline invoices upload-pdf-to --id <id> --file <path> --output json`).action(async (opts) => {
|
|
44116
44458
|
const ctx = resource.parent?.opts()._ctx;
|
|
44117
44459
|
if (!ctx) {
|
|
44118
44460
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44121,11 +44463,15 @@ Examples:
|
|
|
44121
44463
|
const args = {};
|
|
44122
44464
|
if (opts.id !== void 0)
|
|
44123
44465
|
args.id = opts.id;
|
|
44466
|
+
const files = {};
|
|
44467
|
+
if (opts.file !== void 0)
|
|
44468
|
+
files.file = [opts.file].flat();
|
|
44124
44469
|
await ctx.execute({
|
|
44125
44470
|
method: "POST",
|
|
44126
44471
|
path: "/v1/invoices/{id}/upload",
|
|
44127
44472
|
args,
|
|
44128
|
-
queryParamKeys: []
|
|
44473
|
+
queryParamKeys: [],
|
|
44474
|
+
files
|
|
44129
44475
|
});
|
|
44130
44476
|
});
|
|
44131
44477
|
resource.command("download").description(`Download the PDF of an invoice as a downloadable file. The HTTP client must follow redirects. Supports lang/locale params for localization.`).requiredOption("--id <value>", `id parameter`).option("--lang <value>", `lang`).option("--locale <value>", `Locale as a supported language code and an uppercase ISO 3166-1 alpha-2 country code, separated by a hyphen.`).addHelpText("after", `
|
|
@@ -44264,7 +44610,13 @@ Examples:
|
|
|
44264
44610
|
queryParamKeys: []
|
|
44265
44611
|
});
|
|
44266
44612
|
});
|
|
44267
|
-
resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `
|
|
44613
|
+
resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
44614
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
44615
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
44616
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
44617
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
44618
|
+
|
|
44619
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
|
|
44268
44620
|
Examples:
|
|
44269
44621
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
44270
44622
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -44356,7 +44708,13 @@ Examples:
|
|
|
44356
44708
|
queryParamKeys: []
|
|
44357
44709
|
});
|
|
44358
44710
|
});
|
|
44359
|
-
resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `
|
|
44711
|
+
resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
44712
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
44713
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
44714
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
44715
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
44716
|
+
|
|
44717
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
|
|
44360
44718
|
Examples:
|
|
44361
44719
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
44362
44720
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -45233,7 +45591,7 @@ Quote status.
|
|
|
45233
45591
|
- \`all\`: Display all pricing tiers.
|
|
45234
45592
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
45235
45593
|
- \`none\`: Hide all pricing tiers.
|
|
45236
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
45594
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).option("--attachments <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
|
|
45237
45595
|
Examples:
|
|
45238
45596
|
hyperline quotes create --customer-id <customer_id>
|
|
45239
45597
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -45298,11 +45656,15 @@ Examples:
|
|
|
45298
45656
|
args.subscription = JSON.parse(opts.subscription);
|
|
45299
45657
|
if (opts.invoice !== void 0)
|
|
45300
45658
|
args.invoice = JSON.parse(opts.invoice);
|
|
45659
|
+
const files = {};
|
|
45660
|
+
if (opts.attachments !== void 0)
|
|
45661
|
+
files.attachments = [opts.attachments].flat();
|
|
45301
45662
|
await ctx.execute({
|
|
45302
45663
|
method: "POST",
|
|
45303
45664
|
path: "/v1/quotes",
|
|
45304
45665
|
args,
|
|
45305
|
-
queryParamKeys: []
|
|
45666
|
+
queryParamKeys: [],
|
|
45667
|
+
files
|
|
45306
45668
|
});
|
|
45307
45669
|
});
|
|
45308
45670
|
resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--type <value>", `type`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
@@ -45484,7 +45846,7 @@ Examples:
|
|
|
45484
45846
|
- \`all\`: Display all pricing tiers.
|
|
45485
45847
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
45486
45848
|
- \`none\`: Hide all pricing tiers.
|
|
45487
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
45849
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).option("--attachments <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
|
|
45488
45850
|
Examples:
|
|
45489
45851
|
hyperline quotes update --id <id>
|
|
45490
45852
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -45545,11 +45907,15 @@ Examples:
|
|
|
45545
45907
|
args.subscription = JSON.parse(opts.subscription);
|
|
45546
45908
|
if (opts.invoice !== void 0)
|
|
45547
45909
|
args.invoice = JSON.parse(opts.invoice);
|
|
45910
|
+
const files = {};
|
|
45911
|
+
if (opts.attachments !== void 0)
|
|
45912
|
+
files.attachments = [opts.attachments].flat();
|
|
45548
45913
|
await ctx.execute({
|
|
45549
45914
|
method: "PATCH",
|
|
45550
45915
|
path: "/v1/quotes/{id}",
|
|
45551
45916
|
args,
|
|
45552
|
-
queryParamKeys: []
|
|
45917
|
+
queryParamKeys: [],
|
|
45918
|
+
files
|
|
45553
45919
|
});
|
|
45554
45920
|
});
|
|
45555
45921
|
resource.command("duplicate").description(`Create a draft duplicate of an existing quote, including its linked invoice or subscription configuration.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
@@ -45702,9 +46068,10 @@ Examples:
|
|
|
45702
46068
|
queryParamKeys: []
|
|
45703
46069
|
});
|
|
45704
46070
|
});
|
|
45705
|
-
resource.command("sign").description(`Manually mark a quote as signed externally. Optionally upload a signed PDF. Bypasses the built-in Hyperline signature flow.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
46071
|
+
resource.command("sign").description(`Manually mark a quote as signed externally. Optionally upload a signed PDF. Bypasses the built-in Hyperline signature flow.`).requiredOption("--id <value>", `id parameter`).option("--signed-quote <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
|
|
45706
46072
|
Examples:
|
|
45707
46073
|
hyperline quotes sign --id <id>
|
|
46074
|
+
hyperline quotes sign --id <id> --signed-quote <path>
|
|
45708
46075
|
hyperline quotes sign --id <id> --output json`).action(async (opts) => {
|
|
45709
46076
|
const ctx = resource.parent?.opts()._ctx;
|
|
45710
46077
|
if (!ctx) {
|
|
@@ -45714,11 +46081,15 @@ Examples:
|
|
|
45714
46081
|
const args = {};
|
|
45715
46082
|
if (opts.id !== void 0)
|
|
45716
46083
|
args.id = opts.id;
|
|
46084
|
+
const files = {};
|
|
46085
|
+
if (opts.signedQuote !== void 0)
|
|
46086
|
+
files.signed_quote = [opts.signedQuote].flat();
|
|
45717
46087
|
await ctx.execute({
|
|
45718
46088
|
method: "POST",
|
|
45719
46089
|
path: "/v1/quotes/{id}/sign",
|
|
45720
46090
|
args,
|
|
45721
|
-
queryParamKeys: []
|
|
46091
|
+
queryParamKeys: [],
|
|
46092
|
+
files
|
|
45722
46093
|
});
|
|
45723
46094
|
});
|
|
45724
46095
|
resource.command("void").description(`Void an existing quote, canceling it and preventing further actions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--reason <value>", `Quote voiding reason.`).addHelpText("after", `
|
|
@@ -47727,6 +48098,8 @@ function registerAllCommands(program2) {
|
|
|
47727
48098
|
registerBank_AccountsCommands(program2);
|
|
47728
48099
|
registerCatalogCommands(program2);
|
|
47729
48100
|
registerCompaniesCommands(program2);
|
|
48101
|
+
registerContracts_ClausesCommands(program2);
|
|
48102
|
+
registerContracts_DocumentsCommands(program2);
|
|
47730
48103
|
registerCouponsCommands(program2);
|
|
47731
48104
|
registerCoupons_Promotion_CodesCommands(program2);
|
|
47732
48105
|
registerCustomers_CreditsCommands(program2);
|
|
@@ -67324,69 +67697,6 @@ var Decimal = P.constructor = clone2(DEFAULTS);
|
|
|
67324
67697
|
LN10 = new Decimal(LN10);
|
|
67325
67698
|
PI = new Decimal(PI);
|
|
67326
67699
|
|
|
67327
|
-
// ../hyperline-lib/build/utils/config/usStates.js
|
|
67328
|
-
var usStates = [
|
|
67329
|
-
"AA",
|
|
67330
|
-
"AE",
|
|
67331
|
-
"AK",
|
|
67332
|
-
"AL",
|
|
67333
|
-
"AP",
|
|
67334
|
-
"AR",
|
|
67335
|
-
"AS",
|
|
67336
|
-
"AZ",
|
|
67337
|
-
"CA",
|
|
67338
|
-
"CO",
|
|
67339
|
-
"CT",
|
|
67340
|
-
"DC",
|
|
67341
|
-
"DE",
|
|
67342
|
-
"FL",
|
|
67343
|
-
"GA",
|
|
67344
|
-
"GU",
|
|
67345
|
-
"HI",
|
|
67346
|
-
"IA",
|
|
67347
|
-
"ID",
|
|
67348
|
-
"IL",
|
|
67349
|
-
"IN",
|
|
67350
|
-
"KS",
|
|
67351
|
-
"KY",
|
|
67352
|
-
"LA",
|
|
67353
|
-
"MA",
|
|
67354
|
-
"MD",
|
|
67355
|
-
"ME",
|
|
67356
|
-
"MI",
|
|
67357
|
-
"MN",
|
|
67358
|
-
"MO",
|
|
67359
|
-
"MP",
|
|
67360
|
-
"MS",
|
|
67361
|
-
"MT",
|
|
67362
|
-
"NC",
|
|
67363
|
-
"ND",
|
|
67364
|
-
"NE",
|
|
67365
|
-
"NH",
|
|
67366
|
-
"NJ",
|
|
67367
|
-
"NM",
|
|
67368
|
-
"NV",
|
|
67369
|
-
"NY",
|
|
67370
|
-
"OH",
|
|
67371
|
-
"OK",
|
|
67372
|
-
"OR",
|
|
67373
|
-
"PA",
|
|
67374
|
-
"PR",
|
|
67375
|
-
"RI",
|
|
67376
|
-
"SC",
|
|
67377
|
-
"SD",
|
|
67378
|
-
"TN",
|
|
67379
|
-
"TX",
|
|
67380
|
-
"UT",
|
|
67381
|
-
"VA",
|
|
67382
|
-
"VI",
|
|
67383
|
-
"VT",
|
|
67384
|
-
"WA",
|
|
67385
|
-
"WI",
|
|
67386
|
-
"WV",
|
|
67387
|
-
"WY"
|
|
67388
|
-
];
|
|
67389
|
-
|
|
67390
67700
|
// ../hyperline-lib/build/utils/dates.js
|
|
67391
67701
|
var import_shared2 = __toESM(require_shared(), 1);
|
|
67392
67702
|
var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
|
|
@@ -67411,7 +67721,8 @@ var dateRealignmentModeSchema = external_exports.enum([
|
|
|
67411
67721
|
"utc_midnight_import",
|
|
67412
67722
|
"dst_hour_drift",
|
|
67413
67723
|
"month_start_drift",
|
|
67414
|
-
"manual_phase_end_midnight"
|
|
67724
|
+
"manual_phase_end_midnight",
|
|
67725
|
+
"customer_timezone_change"
|
|
67415
67726
|
]).default("utc_midnight_import");
|
|
67416
67727
|
var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
|
|
67417
67728
|
[23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
@@ -67461,8 +67772,14 @@ var authorizedOperators = [
|
|
|
67461
67772
|
var NullFilterValueSchema = BooleanSchema.or(external_exports.literal("")).optional();
|
|
67462
67773
|
|
|
67463
67774
|
// ../hyperline-lib/build/http/dto/state.js
|
|
67464
|
-
var StateSchema = external_exports.
|
|
67465
|
-
description:
|
|
67775
|
+
var StateSchema = external_exports.string().openapi({
|
|
67776
|
+
description: `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
67777
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
67778
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
67779
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
67780
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
67781
|
+
|
|
67782
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`,
|
|
67466
67783
|
example: "CA"
|
|
67467
67784
|
});
|
|
67468
67785
|
|
|
@@ -67664,6 +67981,62 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
|
|
|
67664
67981
|
// ../hyperline-mcp/build/server/server.js
|
|
67665
67982
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
67666
67983
|
|
|
67984
|
+
// build/multipart.js
|
|
67985
|
+
import { readFile as readFile2 } from "node:fs/promises";
|
|
67986
|
+
import { basename, extname } from "node:path";
|
|
67987
|
+
var MIMETYPES_BY_EXTENSION = {
|
|
67988
|
+
".csv": "text/csv",
|
|
67989
|
+
".doc": "application/msword",
|
|
67990
|
+
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
67991
|
+
".gif": "image/gif",
|
|
67992
|
+
".jpeg": "image/jpeg",
|
|
67993
|
+
".jpg": "image/jpeg",
|
|
67994
|
+
".json": "application/json",
|
|
67995
|
+
".pdf": "application/pdf",
|
|
67996
|
+
".png": "image/png",
|
|
67997
|
+
".svg": "image/svg+xml",
|
|
67998
|
+
".txt": "text/plain",
|
|
67999
|
+
".xls": "application/vnd.ms-excel",
|
|
68000
|
+
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
68001
|
+
".xml": "application/xml"
|
|
68002
|
+
};
|
|
68003
|
+
function getMimetypeFromPath(filePath) {
|
|
68004
|
+
return MIMETYPES_BY_EXTENSION[extname(filePath).toLowerCase()] ?? "application/octet-stream";
|
|
68005
|
+
}
|
|
68006
|
+
function appendFormValue({ formData, key, value }) {
|
|
68007
|
+
if (value === void 0) {
|
|
68008
|
+
return;
|
|
68009
|
+
}
|
|
68010
|
+
if (value === null) {
|
|
68011
|
+
formData.append(key, "");
|
|
68012
|
+
return;
|
|
68013
|
+
}
|
|
68014
|
+
if (Array.isArray(value)) {
|
|
68015
|
+
for (const [index, item] of value.entries()) {
|
|
68016
|
+
appendFormValue({ formData, key: `${key}[${index}]`, value: item });
|
|
68017
|
+
}
|
|
68018
|
+
return;
|
|
68019
|
+
}
|
|
68020
|
+
if (typeof value === "object") {
|
|
68021
|
+
throw new Error(`--${key} cannot be sent alongside files: a multipart request only carries scalar fields.`);
|
|
68022
|
+
}
|
|
68023
|
+
formData.append(key, String(value));
|
|
68024
|
+
}
|
|
68025
|
+
async function buildMultipartBody({ data, files }) {
|
|
68026
|
+
const formData = new FormData();
|
|
68027
|
+
for (const [key, value] of Object.entries(data)) {
|
|
68028
|
+
appendFormValue({ formData, key, value });
|
|
68029
|
+
}
|
|
68030
|
+
const fileUploads = Object.entries(files).flatMap(([fieldName, filePaths]) => filePaths.map((filePath) => ({ fieldName, filePath })));
|
|
68031
|
+
const fileContents = await Promise.all(fileUploads.map(({ filePath }) => readFile2(filePath)));
|
|
68032
|
+
for (const [index, { fieldName, filePath }] of fileUploads.entries()) {
|
|
68033
|
+
formData.append(fieldName, new Blob([new Uint8Array(fileContents[index])], {
|
|
68034
|
+
type: getMimetypeFromPath(filePath)
|
|
68035
|
+
}), basename(filePath));
|
|
68036
|
+
}
|
|
68037
|
+
return formData;
|
|
68038
|
+
}
|
|
68039
|
+
|
|
67667
68040
|
// build/output.js
|
|
67668
68041
|
function formatOutput({ data, format: format2 }) {
|
|
67669
68042
|
if (format2 === "json") {
|
|
@@ -67723,7 +68096,7 @@ function createCLIContext({ apiKey, baseUrl, outputFormat, source, companyId })
|
|
|
67723
68096
|
return {
|
|
67724
68097
|
baseUrl,
|
|
67725
68098
|
outputFormat,
|
|
67726
|
-
async execute({ method, path: path2, args, queryParamKeys = [], body, baseUrlOverride }) {
|
|
68099
|
+
async execute({ method, path: path2, args, queryParamKeys = [], body, files, baseUrlOverride }) {
|
|
67727
68100
|
const { url: url2, params, data } = buildRequestConfig({
|
|
67728
68101
|
path: path2,
|
|
67729
68102
|
args,
|
|
@@ -67732,12 +68105,16 @@ function createCLIContext({ apiKey, baseUrl, outputFormat, source, companyId })
|
|
|
67732
68105
|
});
|
|
67733
68106
|
const requestData = body ?? data;
|
|
67734
68107
|
const hasData = Array.isArray(requestData) ? requestData.length > 0 : requestData != null && Object.keys(requestData).length > 0;
|
|
68108
|
+
const hasFiles = Object.values(files ?? {}).some((filePaths) => filePaths.length > 0);
|
|
67735
68109
|
try {
|
|
67736
68110
|
const response = await httpClient.request({
|
|
67737
68111
|
method,
|
|
67738
68112
|
url: url2,
|
|
67739
68113
|
params,
|
|
67740
|
-
data:
|
|
68114
|
+
data: hasFiles ? await buildMultipartBody({
|
|
68115
|
+
data: requestData ?? {},
|
|
68116
|
+
files: files ?? {}
|
|
68117
|
+
}) : hasData ? requestData : void 0,
|
|
67741
68118
|
...baseUrlOverride ? { baseURL: baseUrlOverride } : {},
|
|
67742
68119
|
headers: {
|
|
67743
68120
|
"Hyperline-Source": source,
|