@hyperline/cli 0.1.0-build.1.734d35e → 0.1.0-build.1.73e0b80

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.
@@ -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.).`).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", `
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.).`).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", `
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");
@@ -41359,7 +41685,7 @@ Examples:
41359
41685
  // build/commands/generated/customers.js
41360
41686
  function registerCustomersCommands(parent) {
41361
41687
  const resource = parent.command("customers").description("Manage customers");
41362
- resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, tax_id_status, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--tax-id-status <value>", `
41688
+ resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, tax_id_status, subscription_status, invoicing_entity_id, segment_id, custom_properties (JSON object of slug to exact value, e.g. {"my_slug":"value"}; slugs matching no custom property are ignored), payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--tax-id-status <value>", `
41363
41689
  Verification status of the customer tax ID.
41364
41690
 
41365
41691
  - \`valid\`: Tax ID has been verified and is valid.
@@ -41367,7 +41693,7 @@ Verification status of the customer tax ID.
41367
41693
  - \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
41368
41694
  - \`unverified\`: Tax ID has not been verified yet.
41369
41695
  - \`unsupported\`: Tax ID verification for this type not supported yet.
41370
- `).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--country <value>", `country`).option("--country.not <value>", `country__not`).option("--country.equals <value>", `country__equals`).option("--country.contains <value>", `country__contains`).option("--country.starts-with <value>", `country__startsWith`).option("--country.end-with <value>", `country__endWith`).option("--country.is-null <value>", `country__isNull`).option("--country.is-not-null <value>", `country__isNotNull`).option("--external-id <value>", `external_id`).option("--external-id.not <value>", `external_id__not`).option("--external-id.equals <value>", `external_id__equals`).option("--external-id.contains <value>", `external_id__contains`).option("--external-id.starts-with <value>", `external_id__startsWith`).option("--external-id.end-with <value>", `external_id__endWith`).option("--external-id.is-null <value>", `external_id__isNull`).option("--external-id.is-not-null <value>", `external_id__isNotNull`).option("--billing-email <value>", `billing_email`).option("--billing-email.not <value>", `billing_email__not`).option("--billing-email.equals <value>", `billing_email__equals`).option("--billing-email.contains <value>", `billing_email__contains`).option("--billing-email.starts-with <value>", `billing_email__startsWith`).option("--billing-email.end-with <value>", `billing_email__endWith`).option("--billing-email.is-null <value>", `billing_email__isNull`).option("--billing-email.is-not-null <value>", `billing_email__isNotNull`).option("--search <value>", `search`).option("--tax-id <value>", `tax_id`).option("--tax-id.not <value>", `tax_id__not`).option("--tax-id.equals <value>", `tax_id__equals`).option("--tax-id.contains <value>", `tax_id__contains`).option("--tax-id.starts-with <value>", `tax_id__startsWith`).option("--tax-id.end-with <value>", `tax_id__endWith`).option("--tax-id.is-null <value>", `tax_id__isNull`).option("--tax-id.is-not-null <value>", `tax_id__isNotNull`).option("--subscription-status <value>", `subscription_status`).option("--subscription-status.in <value>", `subscription_status__in`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--segment-id <value>", `segment_id`).option("--custom-properties <value>", `custom_properties`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-type.in <value>", `payment_method_type__in`).option("--integration-entity-id <value>", `integration_entity_id`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).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", `
41696
+ `).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--country <value>", `country`).option("--country.not <value>", `country__not`).option("--country.equals <value>", `country__equals`).option("--country.contains <value>", `country__contains`).option("--country.starts-with <value>", `country__startsWith`).option("--country.end-with <value>", `country__endWith`).option("--country.is-null <value>", `country__isNull`).option("--country.is-not-null <value>", `country__isNotNull`).option("--external-id <value>", `external_id`).option("--external-id.not <value>", `external_id__not`).option("--external-id.equals <value>", `external_id__equals`).option("--external-id.contains <value>", `external_id__contains`).option("--external-id.starts-with <value>", `external_id__startsWith`).option("--external-id.end-with <value>", `external_id__endWith`).option("--external-id.is-null <value>", `external_id__isNull`).option("--external-id.is-not-null <value>", `external_id__isNotNull`).option("--billing-email <value>", `billing_email`).option("--billing-email.not <value>", `billing_email__not`).option("--billing-email.equals <value>", `billing_email__equals`).option("--billing-email.contains <value>", `billing_email__contains`).option("--billing-email.starts-with <value>", `billing_email__startsWith`).option("--billing-email.end-with <value>", `billing_email__endWith`).option("--billing-email.is-null <value>", `billing_email__isNull`).option("--billing-email.is-not-null <value>", `billing_email__isNotNull`).option("--search <value>", `search`).option("--tax-id <value>", `tax_id`).option("--tax-id.not <value>", `tax_id__not`).option("--tax-id.equals <value>", `tax_id__equals`).option("--tax-id.contains <value>", `tax_id__contains`).option("--tax-id.starts-with <value>", `tax_id__startsWith`).option("--tax-id.end-with <value>", `tax_id__endWith`).option("--tax-id.is-null <value>", `tax_id__isNull`).option("--tax-id.is-not-null <value>", `tax_id__isNotNull`).option("--subscription-status <value>", `subscription_status`).option("--subscription-status.in <value>", `subscription_status__in`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--segment-id <value>", `segment_id`).option("--custom-properties <value>", `Filter by custom property values, as a JSON object mapping a custom property slug to the exact value to match. Suffix a slug with \`__contains\` for a case-sensitive substring match on text values. Several entries are combined with AND. Entries whose slug matches no custom property, or whose value is \`false\`, \`0\`, \`null\` or an empty string, are ignored.`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-type.in <value>", `payment_method_type__in`).option("--integration-entity-id <value>", `integration_entity_id`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).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", `
41371
41697
  Examples:
41372
41698
  hyperline customers list
41373
41699
  hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -41665,13 +41991,13 @@ Customer type.
41665
41991
 
41666
41992
  - \`taxable\`: Taxes are automatically determined for the customer.
41667
41993
  - \`exempt\`: The customer is exempt from tax.
41668
- `).option("--registration-number <value>", `Customer registration number.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
41994
+ `).option("--registration-number <value>", `Customer registration number.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline. When external ID uniqueness is enforced for your account, two active customers cannot share the same external ID.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
41669
41995
  How customer invoices are issued from the parent organisation.
41670
41996
 
41671
41997
  - \`none\`: Invoices will keep being issued from this customer.
41672
41998
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
41673
41999
  - \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
41674
- `).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--force-invoice-draft <value>", `Indicates if customer invoices should be created as draft invoices.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <json>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
42000
+ `).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--consolidated-invoicing-enabled <value>", `Indicates if consolidated invoicing is enabled for the customer. When enabled, subscription invoices billed on the same day are grouped into a single invoice. Cannot be disabled while invoices are pending consolidation.`).option("--force-invoice-draft <value>", `Indicates if customer invoices should be created as draft invoices.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <json>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
41675
42001
  Examples:
41676
42002
  hyperline customers create-customer
41677
42003
  hyperline customers create-customer --name <name> --type <type>
@@ -41716,6 +42042,8 @@ Examples:
41716
42042
  args.organisation_invoicing = opts.organisationInvoicing;
41717
42043
  if (opts.invoiceRemindersEnabled !== void 0)
41718
42044
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
42045
+ if (opts.consolidatedInvoicingEnabled !== void 0)
42046
+ args.consolidated_invoicing_enabled = opts.consolidatedInvoicingEnabled;
41719
42047
  if (opts.forceInvoiceDraft !== void 0)
41720
42048
  args.force_invoice_draft = opts.forceInvoiceDraft;
41721
42049
  if (opts.priceBookId !== void 0)
@@ -41802,13 +42130,13 @@ Customer type.
41802
42130
 
41803
42131
  - \`taxable\`: Taxes are automatically determined for the customer.
41804
42132
  - \`exempt\`: The customer is exempt from tax.
41805
- `).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
42133
+ `).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline. When external ID uniqueness is enforced for your account, two active customers cannot share the same external ID.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
41806
42134
  How customer invoices are issued from the parent organisation.
41807
42135
 
41808
42136
  - \`none\`: Invoices will keep being issued from this customer.
41809
42137
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
41810
42138
  - \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
41811
- `).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--force-invoice-draft <value>", `Indicates if customer invoices should be created as draft invoices.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <json>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
42139
+ `).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--consolidated-invoicing-enabled <value>", `Indicates if consolidated invoicing is enabled for the customer. When enabled, subscription invoices billed on the same day are grouped into a single invoice. Cannot be disabled while invoices are pending consolidation.`).option("--force-invoice-draft <value>", `Indicates if customer invoices should be created as draft invoices.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <json>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
41812
42140
  Examples:
41813
42141
  hyperline customers update --id <id>
41814
42142
  hyperline customers update --id <id> --name <name> --type <type>
@@ -41857,6 +42185,8 @@ Examples:
41857
42185
  args.organisation_invoicing = opts.organisationInvoicing;
41858
42186
  if (opts.invoiceRemindersEnabled !== void 0)
41859
42187
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
42188
+ if (opts.consolidatedInvoicingEnabled !== void 0)
42189
+ args.consolidated_invoicing_enabled = opts.consolidatedInvoicingEnabled;
41860
42190
  if (opts.forceInvoiceDraft !== void 0)
41861
42191
  args.force_invoice_draft = opts.forceInvoiceDraft;
41862
42192
  if (opts.priceBookId !== void 0)
@@ -42088,7 +42418,13 @@ Examples:
42088
42418
  queryParamKeys: []
42089
42419
  });
42090
42420
  });
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>", `Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).`).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", `
42421
+ 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:
42422
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
42423
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
42424
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
42425
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
42426
+
42427
+ 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
42428
  Examples:
42093
42429
  hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
42094
42430
  hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
@@ -42126,7 +42462,13 @@ Examples:
42126
42462
  queryParamKeys: []
42127
42463
  });
42128
42464
  });
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>", `Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).`).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", `
42465
+ 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:
42466
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
42467
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
42468
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
42469
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
42470
+
42471
+ 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
42472
  Examples:
42131
42473
  hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
42132
42474
  hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
@@ -43376,10 +43718,10 @@ Examples:
43376
43718
  ]
43377
43719
  });
43378
43720
  });
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", `
43721
+ 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
43722
  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) => {
43723
+ hyperline files create --name <name> --customer-id <customer_id> --file <path>
43724
+ hyperline files create --name <name> --customer-id <customer_id> --file <path> --output json`).action(async (opts) => {
43383
43725
  const ctx = resource.parent?.opts()._ctx;
43384
43726
  if (!ctx) {
43385
43727
  process.stderr.write("Error: Not authenticated\n");
@@ -43390,11 +43732,15 @@ Examples:
43390
43732
  args.name = opts.name;
43391
43733
  if (opts.customerId !== void 0)
43392
43734
  args.customer_id = opts.customerId;
43735
+ const files = {};
43736
+ if (opts.file !== void 0)
43737
+ files.file = [opts.file].flat();
43393
43738
  await ctx.execute({
43394
43739
  method: "POST",
43395
43740
  path: "/v1/files",
43396
43741
  args,
43397
- queryParamKeys: []
43742
+ queryParamKeys: [],
43743
+ files
43398
43744
  });
43399
43745
  });
43400
43746
  resource.command("delete").description(`Permanently delete a file by ID.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
@@ -43947,6 +44293,36 @@ Examples:
43947
44293
  queryParamKeys: []
43948
44294
  });
43949
44295
  });
44296
+ resource.command("send-invoice-emails").description(`Send a specific email (\`email_type\`, e.g. \`invoice_ready\` for the to-pay email) to the customer for a list of invoice IDs, asynchronously in batch. Returns a batch_id only; outcomes arrive via webhooks (invoice.batch.email_succeeded / invoice.batch.email_skipped / invoice.batch.email_failed). An invoice whose status doesn't match the email (e.g. a draft or an invoice still pending approval after validate_invoice) is skipped, so check each invoice's status with get_invoice first. Every call sends the emails again: never re-call it to retry or check status.`).option("--batch-id <value>", `Optional client-supplied identifier for the batch. Echoed back in the response and on the emitted webhook events. Generated if omitted.`).requiredOption("--email-type <value>", `The email to send. The invoice's status must resolve to this email, otherwise it is skipped with reason \`email_type_mismatch\`.
44297
+
44298
+ - \`invoice_ready\`: The to-pay invoice email (for \`to_pay\`, \`partially_paid\`, \`late\` invoices).
44299
+ - \`invoice_settled\`: The paid-invoice email (for \`paid\` invoices).
44300
+ - \`invoice_errored\`: The failed-payment email (for \`error\` invoices with a payment method).
44301
+ - \`credit_note_ready\`: The issued-credit-note email (for \`to_pay\`, \`partially_paid\` refunds).
44302
+ - \`credit_note_settled\`: The credit-note email (for paid refunds).`).requiredOption("--ids <json>", `IDs of the invoices to send the email for. Processed asynchronously; each outcome is reported via webhook events.`).addHelpText("after", `
44303
+ Examples:
44304
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids>
44305
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids> --batch-id <batch_id>
44306
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids> --output json`).action(async (opts) => {
44307
+ const ctx = resource.parent?.opts()._ctx;
44308
+ if (!ctx) {
44309
+ process.stderr.write("Error: Not authenticated\n");
44310
+ process.exit(1);
44311
+ }
44312
+ const args = {};
44313
+ if (opts.batchId !== void 0)
44314
+ args.batch_id = opts.batchId;
44315
+ if (opts.emailType !== void 0)
44316
+ args.email_type = opts.emailType;
44317
+ if (opts.ids !== void 0)
44318
+ args.ids = JSON.parse(opts.ids);
44319
+ await ctx.execute({
44320
+ method: "POST",
44321
+ path: "/v1/invoices/send-email",
44322
+ args,
44323
+ queryParamKeys: []
44324
+ });
44325
+ });
43950
44326
  resource.command("mark-invoice-as-uncollectible").description(`Mark an invoice as uncollectible for accounting write-off purposes. The invoice remains in the system for record keeping.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
43951
44327
  Examples:
43952
44328
  hyperline invoices mark-invoice-as-uncollectible --id <id>
@@ -43984,7 +44360,7 @@ Examples:
43984
44360
  queryParamKeys: []
43985
44361
  });
43986
44362
  });
43987
- resource.command("update").description(`Update an invoice. Draft/grace_period allow modifying line items, dates, and metadata before finalization. Finalized invoices are restricted to metadata (paid: custom_note/purchase_order/custom_properties/additional_display_fields/subscription_id; uncollectible: properties/custom_note/custom_properties/additional_display_fields/subscription_id).`).requiredOption("--id <value>", `id parameter`).option("--type <value>", `Type of the invoice.
44363
+ resource.command("update").description(`Update an invoice. Draft/grace_period allow modifying line items, dates, and metadata before finalization. Finalized invoices allow updating product and price links and revenue classification on existing line items by ID, with unchanged amounts/taxes and automatic accounting reposting, plus metadata (paid/partially_paid: custom_note/purchase_order/custom_properties/additional_display_fields/subscription_id; uncollectible: properties/custom_note/custom_properties/additional_display_fields/subscription_id).`).requiredOption("--id <value>", `id parameter`).option("--type <value>", `Type of the invoice.
43988
44364
 
43989
44365
  - \`invoice\`: Legal invoice to be paid by your customer.
43990
44366
  - \`credit_note\`: Legal credit note cancelling an invoice and refunding your customer.
@@ -43993,7 +44369,7 @@ Examples:
43993
44369
 
43994
44370
  - \`auto\`: Tax is automatically computed and applied.
43995
44371
  - \`not_eligible\`: Tax collection is disabled for the invoice.
43996
- `).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), in the invoice timezone. The issue date must be after today. Set to \`manual\` to unschedule the invoice.`).option("--emitted-at <value>", `Issue date of the draft invoice. For a scheduled invoice, the day on which it is automatically finalized.`).option("--line-items <json>", `line_items`).option("--coupons <json>", `coupons`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).option("--customer <json>", `Override customer details on the invoice. Only allowed for draft or grace period invoices.`).addHelpText("after", `
44372
+ `).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), in the invoice timezone. The issue date must be after today. Set to \`manual\` to unschedule the invoice.`).option("--emitted-at <value>", `Issue date of the draft invoice. For a scheduled invoice, the day on which it is automatically finalized.`).option("--line-items <json>", `Draft edits replace the line list. Finalized invoice line updates accept up to 100 lines per request and update only the specified existing line IDs and allow product and price links and revenue classification; amounts and taxes stay unchanged. Accounting postings are rebuilt atomically; updates affecting closed accounting periods are rejected.`).option("--coupons <json>", `coupons`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).option("--customer <json>", `Override customer details on the invoice. Only allowed for draft or grace period invoices.`).addHelpText("after", `
43997
44373
  Examples:
43998
44374
  hyperline invoices update --id <id>
43999
44375
  hyperline invoices update --id <id> --type <type> --document-name <document_name>
@@ -44079,10 +44455,10 @@ Examples:
44079
44455
  queryParamKeys: []
44080
44456
  });
44081
44457
  });
44082
- 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", `
44458
+ 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", `
44083
44459
  Examples:
44084
- hyperline invoices upload-pdf-to --id <id>
44085
- hyperline invoices upload-pdf-to --id <id> --output json`).action(async (opts) => {
44460
+ hyperline invoices upload-pdf-to --id <id> --file <path>
44461
+ hyperline invoices upload-pdf-to --id <id> --file <path> --output json`).action(async (opts) => {
44086
44462
  const ctx = resource.parent?.opts()._ctx;
44087
44463
  if (!ctx) {
44088
44464
  process.stderr.write("Error: Not authenticated\n");
@@ -44091,11 +44467,15 @@ Examples:
44091
44467
  const args = {};
44092
44468
  if (opts.id !== void 0)
44093
44469
  args.id = opts.id;
44470
+ const files = {};
44471
+ if (opts.file !== void 0)
44472
+ files.file = [opts.file].flat();
44094
44473
  await ctx.execute({
44095
44474
  method: "POST",
44096
44475
  path: "/v1/invoices/{id}/upload",
44097
44476
  args,
44098
- queryParamKeys: []
44477
+ queryParamKeys: [],
44478
+ files
44099
44479
  });
44100
44480
  });
44101
44481
  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", `
@@ -44234,7 +44614,13 @@ Examples:
44234
44614
  queryParamKeys: []
44235
44615
  });
44236
44616
  });
44237
- 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>", `The state or province of the invoicing entity.`).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", `
44617
+ 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:
44618
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
44619
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
44620
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
44621
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
44622
+
44623
+ 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", `
44238
44624
  Examples:
44239
44625
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
44240
44626
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
@@ -44326,7 +44712,13 @@ Examples:
44326
44712
  queryParamKeys: []
44327
44713
  });
44328
44714
  });
44329
- 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>", `The state or province of the invoicing entity.`).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", `
44715
+ 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:
44716
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
44717
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
44718
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
44719
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
44720
+
44721
+ 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", `
44330
44722
  Examples:
44331
44723
  hyperline invoicing-entities update-invoicing-entity --id <id>
44332
44724
  hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
@@ -44573,7 +44965,7 @@ function registerPaymentsCommands(parent) {
44573
44965
  Payment type.
44574
44966
 
44575
44967
  - \`one_time\`: One-time payment, generating one-off invoice.
44576
- `).requiredOption("--customer-id <value>", `ID of the customer.`).option("--products <json>", `Products composing the related invoice.`).option("--purchase-order <value>", `Purchase order added on the generated invoice.`).option("--custom-note <value>", `Custom note added on the generated invoice.`).requiredOption("--charging-method <value>", `
44968
+ `).requiredOption("--customer-id <value>", `ID of the customer.`).option("--products <json>", `Products composing the related invoice.`).option("--purchase-order <value>", `Purchase order added on the generated invoice.`).option("--custom-note <value>", `Custom note added on the generated invoice.`).option("--coupons <json>", `Coupons applied to the generated invoice before the checkout is created, so the checkout email already shows the discounted amount. \`line_item_indexes\` refer to the position of the products in \`products\`. Only supported with the \`checkout\` charging method.`).requiredOption("--charging-method <value>", `
44577
44969
  Charging method.
44578
44970
 
44579
44971
  - \`immediately\`: Customer's payment method will be charged directly to pay the invoice.
@@ -44605,6 +44997,8 @@ Examples:
44605
44997
  args.payment_method_id = opts.paymentMethodId;
44606
44998
  if (opts.products !== void 0)
44607
44999
  args.products = JSON.parse(opts.products);
45000
+ if (opts.coupons !== void 0)
45001
+ args.coupons = JSON.parse(opts.coupons);
44608
45002
  if (opts.availablePaymentMethods !== void 0)
44609
45003
  args.available_payment_methods = JSON.parse(opts.availablePaymentMethods);
44610
45004
  if (opts.checkoutSession !== void 0)
@@ -44809,7 +45203,7 @@ Examples:
44809
45203
  // build/commands/generated/products.js
44810
45204
  function registerProductsCommands(parent) {
44811
45205
  const resource = parent.command("products").description("Manage products");
44812
- resource.command("list").description(`List products with optional filters for id, status, name, description, type, and price_book_id. Products define what is being sold (flat fee, per-unit, usage-based, etc.). 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("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--description <value>", `description`).option("--description.not <value>", `description__not`).option("--description.equals <value>", `description__equals`).option("--description.contains <value>", `description__contains`).option("--description.starts-with <value>", `description__startsWith`).option("--description.end-with <value>", `description__endWith`).option("--description.is-null <value>", `description__isNull`).option("--description.is-not-null <value>", `description__isNotNull`).option("--type <value>", `type`).option("--type.not <value>", `type__not`).option("--type.equals <value>", `type__equals`).option("--type.contains <value>", `type__contains`).option("--type.starts-with <value>", `type__startsWith`).option("--type.end-with <value>", `type__endWith`).option("--price-book-id <value>", `price_book_id`).addHelpText("after", `
45206
+ resource.command("list").description(`List products with optional filters for id, status, name, description, type, price_book_id, and custom_properties (JSON object of slug to exact value, e.g. {"my_slug":"value"}; slugs matching no custom property are rejected). Products define what is being sold (flat fee, per-unit, usage-based, etc.). Paginated with take/skip. Includes bundle items and the first 50 price configurations per product. Use list_price_configurations filtered by product_id for the complete list.`).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("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--description <value>", `description`).option("--description.not <value>", `description__not`).option("--description.equals <value>", `description__equals`).option("--description.contains <value>", `description__contains`).option("--description.starts-with <value>", `description__startsWith`).option("--description.end-with <value>", `description__endWith`).option("--description.is-null <value>", `description__isNull`).option("--description.is-not-null <value>", `description__isNotNull`).option("--type <value>", `type`).option("--type.not <value>", `type__not`).option("--type.equals <value>", `type__equals`).option("--type.contains <value>", `type__contains`).option("--type.starts-with <value>", `type__startsWith`).option("--type.end-with <value>", `type__endWith`).option("--price-book-id <value>", `price_book_id`).option("--custom-properties <value>", `Filter by custom property values, as a JSON object mapping a custom property slug to the exact value to match. Suffix a slug with \`__contains\` for a case-sensitive substring match on text values. Several entries are combined with AND. A slug that matches no custom property returns a \`400\` error.`).addHelpText("after", `
44813
45207
  Examples:
44814
45208
  hyperline products list
44815
45209
  hyperline products list --take <take> --id <id>`).action(async (opts) => {
@@ -44877,6 +45271,8 @@ Examples:
44877
45271
  args.type__endWith = opts["type.endWith"];
44878
45272
  if (opts.priceBookId !== void 0)
44879
45273
  args.price_book_id = opts.priceBookId;
45274
+ if (opts.customProperties !== void 0)
45275
+ args.custom_properties = opts.customProperties;
44880
45276
  if (opts.take !== void 0)
44881
45277
  args.take = Number(opts.take);
44882
45278
  if (opts.skip !== void 0)
@@ -44916,7 +45312,8 @@ Examples:
44916
45312
  "type__contains",
44917
45313
  "type__startsWith",
44918
45314
  "type__endWith",
44919
- "price_book_id"
45315
+ "price_book_id",
45316
+ "custom_properties"
44920
45317
  ]
44921
45318
  });
44922
45319
  });
@@ -45200,7 +45597,7 @@ Quote status.
45200
45597
  - \`all\`: Display all pricing tiers.
45201
45598
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
45202
45599
  - \`none\`: Hide all pricing tiers.
45203
- `).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", `
45600
+ `).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", `
45204
45601
  Examples:
45205
45602
  hyperline quotes create --customer-id <customer_id>
45206
45603
  hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
@@ -45265,11 +45662,15 @@ Examples:
45265
45662
  args.subscription = JSON.parse(opts.subscription);
45266
45663
  if (opts.invoice !== void 0)
45267
45664
  args.invoice = JSON.parse(opts.invoice);
45665
+ const files = {};
45666
+ if (opts.attachments !== void 0)
45667
+ files.attachments = [opts.attachments].flat();
45268
45668
  await ctx.execute({
45269
45669
  method: "POST",
45270
45670
  path: "/v1/quotes",
45271
45671
  args,
45272
- queryParamKeys: []
45672
+ queryParamKeys: [],
45673
+ files
45273
45674
  });
45274
45675
  });
45275
45676
  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", `
@@ -45451,7 +45852,7 @@ Examples:
45451
45852
  - \`all\`: Display all pricing tiers.
45452
45853
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
45453
45854
  - \`none\`: Hide all pricing tiers.
45454
- `).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", `
45855
+ `).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", `
45455
45856
  Examples:
45456
45857
  hyperline quotes update --id <id>
45457
45858
  hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
@@ -45512,11 +45913,15 @@ Examples:
45512
45913
  args.subscription = JSON.parse(opts.subscription);
45513
45914
  if (opts.invoice !== void 0)
45514
45915
  args.invoice = JSON.parse(opts.invoice);
45916
+ const files = {};
45917
+ if (opts.attachments !== void 0)
45918
+ files.attachments = [opts.attachments].flat();
45515
45919
  await ctx.execute({
45516
45920
  method: "PATCH",
45517
45921
  path: "/v1/quotes/{id}",
45518
45922
  args,
45519
- queryParamKeys: []
45923
+ queryParamKeys: [],
45924
+ files
45520
45925
  });
45521
45926
  });
45522
45927
  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", `
@@ -45669,9 +46074,10 @@ Examples:
45669
46074
  queryParamKeys: []
45670
46075
  });
45671
46076
  });
45672
- 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", `
46077
+ 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", `
45673
46078
  Examples:
45674
46079
  hyperline quotes sign --id <id>
46080
+ hyperline quotes sign --id <id> --signed-quote <path>
45675
46081
  hyperline quotes sign --id <id> --output json`).action(async (opts) => {
45676
46082
  const ctx = resource.parent?.opts()._ctx;
45677
46083
  if (!ctx) {
@@ -45681,11 +46087,15 @@ Examples:
45681
46087
  const args = {};
45682
46088
  if (opts.id !== void 0)
45683
46089
  args.id = opts.id;
46090
+ const files = {};
46091
+ if (opts.signedQuote !== void 0)
46092
+ files.signed_quote = [opts.signedQuote].flat();
45684
46093
  await ctx.execute({
45685
46094
  method: "POST",
45686
46095
  path: "/v1/quotes/{id}/sign",
45687
46096
  args,
45688
- queryParamKeys: []
46097
+ queryParamKeys: [],
46098
+ files
45689
46099
  });
45690
46100
  });
45691
46101
  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", `
@@ -46281,7 +46691,7 @@ Examples:
46281
46691
  queryParamKeys: []
46282
46692
  });
46283
46693
  });
46284
- resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, cancel_at, custom_properties, and the active contract: contract_start__gte/__lte, contract_end__gte/__lte, renew_automatically. For upcoming renewals, combine contract_end__gte/__lte with renew_automatically, plus cancel_at for scheduled cancellations. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
46694
+ resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, cancel_at, custom_properties (JSON object of slug to exact value, e.g. {"my_slug":"value"}; slugs matching no custom property are ignored), and the active contract: contract_start__gte/__lte, contract_end__gte/__lte, renew_automatically. For upcoming renewals, combine contract_end__gte/__lte with renew_automatically, plus cancel_at for scheduled cancellations. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
46285
46695
  Subscription status filter.
46286
46696
 
46287
46697
  - \`active\`, \`pending\`, \`paused\`, \`errored\`, \`cancelled\`, \`draft\`, \`voided\`, \`archived\`: match that status.
@@ -46290,7 +46700,7 @@ Subscription status filter.
46290
46700
  - \`any\`: every status, no exclusion.
46291
46701
 
46292
46702
  Use \`status__in\` with comma-separated values to combine statuses. When the filter is omitted, \`draft\`, \`voided\`, \`cancelled\` and \`archived\` subscriptions are excluded.
46293
- `).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).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("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--custom-properties <value>", `custom_properties`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).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`).option("--cancel-at <value>", `cancel_at`).option("--cancel-at.not <value>", `cancel_at__not`).option("--cancel-at.equals <value>", `cancel_at__equals`).option("--cancel-at.lt <value>", `cancel_at__lt`).option("--cancel-at.lte <value>", `cancel_at__lte`).option("--cancel-at.gt <value>", `cancel_at__gt`).option("--cancel-at.gte <value>", `cancel_at__gte`).option("--cancel-at.is-null <value>", `cancel_at__isNull`).option("--cancel-at.is-not-null <value>", `cancel_at__isNotNull`).option("--contract-start.gte <value>", `Return only subscriptions whose active contract starts on or after this date.`).option("--contract-start.lte <value>", `Return only subscriptions whose active contract starts on or before this date.`).option("--contract-end.gte <value>", `Return only subscriptions whose active contract ends on or after this date.`).option("--contract-end.lte <value>", `Return only subscriptions whose active contract ends on or before this date.`).option("--renew-automatically <value>", `Return only subscriptions whose active contract renews automatically (\`true\`) or not (\`false\`).`).addHelpText("after", `
46703
+ `).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).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("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--custom-properties <value>", `Filter by custom property values, as a JSON object mapping a custom property slug to the exact value to match. Suffix a slug with \`__contains\` for a case-sensitive substring match on text values. Several entries are combined with AND. Entries whose slug matches no custom property, or whose value is \`false\`, \`0\`, \`null\` or an empty string, are ignored.`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).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`).option("--cancel-at <value>", `cancel_at`).option("--cancel-at.not <value>", `cancel_at__not`).option("--cancel-at.equals <value>", `cancel_at__equals`).option("--cancel-at.lt <value>", `cancel_at__lt`).option("--cancel-at.lte <value>", `cancel_at__lte`).option("--cancel-at.gt <value>", `cancel_at__gt`).option("--cancel-at.gte <value>", `cancel_at__gte`).option("--cancel-at.is-null <value>", `cancel_at__isNull`).option("--cancel-at.is-not-null <value>", `cancel_at__isNotNull`).option("--contract-start.gte <value>", `Return only subscriptions whose active contract starts on or after this date.`).option("--contract-start.lte <value>", `Return only subscriptions whose active contract starts on or before this date.`).option("--contract-end.gte <value>", `Return only subscriptions whose active contract ends on or after this date.`).option("--contract-end.lte <value>", `Return only subscriptions whose active contract ends on or before this date.`).option("--renew-automatically <value>", `Return only subscriptions whose active contract renews automatically (\`true\`) or not (\`false\`).`).addHelpText("after", `
46294
46704
  Examples:
46295
46705
  hyperline subscriptions list
46296
46706
  hyperline subscriptions list --take <take> --activation-strategy <activation_strategy>`).action(async (opts) => {
@@ -47694,6 +48104,8 @@ function registerAllCommands(program2) {
47694
48104
  registerBank_AccountsCommands(program2);
47695
48105
  registerCatalogCommands(program2);
47696
48106
  registerCompaniesCommands(program2);
48107
+ registerContracts_ClausesCommands(program2);
48108
+ registerContracts_DocumentsCommands(program2);
47697
48109
  registerCouponsCommands(program2);
47698
48110
  registerCoupons_Promotion_CodesCommands(program2);
47699
48111
  registerCustomers_CreditsCommands(program2);
@@ -67291,69 +67703,6 @@ var Decimal = P.constructor = clone2(DEFAULTS);
67291
67703
  LN10 = new Decimal(LN10);
67292
67704
  PI = new Decimal(PI);
67293
67705
 
67294
- // ../hyperline-lib/build/utils/config/usStates.js
67295
- var usStates = [
67296
- "AA",
67297
- "AE",
67298
- "AK",
67299
- "AL",
67300
- "AP",
67301
- "AR",
67302
- "AS",
67303
- "AZ",
67304
- "CA",
67305
- "CO",
67306
- "CT",
67307
- "DC",
67308
- "DE",
67309
- "FL",
67310
- "GA",
67311
- "GU",
67312
- "HI",
67313
- "IA",
67314
- "ID",
67315
- "IL",
67316
- "IN",
67317
- "KS",
67318
- "KY",
67319
- "LA",
67320
- "MA",
67321
- "MD",
67322
- "ME",
67323
- "MI",
67324
- "MN",
67325
- "MO",
67326
- "MP",
67327
- "MS",
67328
- "MT",
67329
- "NC",
67330
- "ND",
67331
- "NE",
67332
- "NH",
67333
- "NJ",
67334
- "NM",
67335
- "NV",
67336
- "NY",
67337
- "OH",
67338
- "OK",
67339
- "OR",
67340
- "PA",
67341
- "PR",
67342
- "RI",
67343
- "SC",
67344
- "SD",
67345
- "TN",
67346
- "TX",
67347
- "UT",
67348
- "VA",
67349
- "VI",
67350
- "VT",
67351
- "WA",
67352
- "WI",
67353
- "WV",
67354
- "WY"
67355
- ];
67356
-
67357
67706
  // ../hyperline-lib/build/utils/dates.js
67358
67707
  var import_shared2 = __toESM(require_shared(), 1);
67359
67708
  var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
@@ -67378,7 +67727,8 @@ var dateRealignmentModeSchema = external_exports.enum([
67378
67727
  "utc_midnight_import",
67379
67728
  "dst_hour_drift",
67380
67729
  "month_start_drift",
67381
- "manual_phase_end_midnight"
67730
+ "manual_phase_end_midnight",
67731
+ "customer_timezone_change"
67382
67732
  ]).default("utc_midnight_import");
67383
67733
  var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
67384
67734
  [23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
@@ -67428,8 +67778,14 @@ var authorizedOperators = [
67428
67778
  var NullFilterValueSchema = BooleanSchema.or(external_exports.literal("")).optional();
67429
67779
 
67430
67780
  // ../hyperline-lib/build/http/dto/state.js
67431
- var StateSchema = external_exports.enum(usStates).openapi({
67432
- description: "Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).",
67781
+ var StateSchema = external_exports.string().openapi({
67782
+ 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:
67783
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
67784
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
67785
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
67786
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
67787
+
67788
+ 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.`,
67433
67789
  example: "CA"
67434
67790
  });
67435
67791
 
@@ -67543,6 +67899,7 @@ var toLogRequest = (config4) => {
67543
67899
  };
67544
67900
 
67545
67901
  // ../hyperline-lib/build/httpClient/publicUrlFetch.js
67902
+ import { lookup as lookupCallback } from "node:dns";
67546
67903
  import { lookup } from "node:dns/promises";
67547
67904
  import { isIP } from "node:net";
67548
67905
  import { Agent, fetch as fetch2 } from "undici";
@@ -67630,6 +67987,62 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
67630
67987
  // ../hyperline-mcp/build/server/server.js
67631
67988
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
67632
67989
 
67990
+ // build/multipart.js
67991
+ import { readFile as readFile2 } from "node:fs/promises";
67992
+ import { basename, extname } from "node:path";
67993
+ var MIMETYPES_BY_EXTENSION = {
67994
+ ".csv": "text/csv",
67995
+ ".doc": "application/msword",
67996
+ ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
67997
+ ".gif": "image/gif",
67998
+ ".jpeg": "image/jpeg",
67999
+ ".jpg": "image/jpeg",
68000
+ ".json": "application/json",
68001
+ ".pdf": "application/pdf",
68002
+ ".png": "image/png",
68003
+ ".svg": "image/svg+xml",
68004
+ ".txt": "text/plain",
68005
+ ".xls": "application/vnd.ms-excel",
68006
+ ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
68007
+ ".xml": "application/xml"
68008
+ };
68009
+ function getMimetypeFromPath(filePath) {
68010
+ return MIMETYPES_BY_EXTENSION[extname(filePath).toLowerCase()] ?? "application/octet-stream";
68011
+ }
68012
+ function appendFormValue({ formData, key, value }) {
68013
+ if (value === void 0) {
68014
+ return;
68015
+ }
68016
+ if (value === null) {
68017
+ formData.append(key, "");
68018
+ return;
68019
+ }
68020
+ if (Array.isArray(value)) {
68021
+ for (const [index, item] of value.entries()) {
68022
+ appendFormValue({ formData, key: `${key}[${index}]`, value: item });
68023
+ }
68024
+ return;
68025
+ }
68026
+ if (typeof value === "object") {
68027
+ throw new Error(`--${key} cannot be sent alongside files: a multipart request only carries scalar fields.`);
68028
+ }
68029
+ formData.append(key, String(value));
68030
+ }
68031
+ async function buildMultipartBody({ data, files }) {
68032
+ const formData = new FormData();
68033
+ for (const [key, value] of Object.entries(data)) {
68034
+ appendFormValue({ formData, key, value });
68035
+ }
68036
+ const fileUploads = Object.entries(files).flatMap(([fieldName, filePaths]) => filePaths.map((filePath) => ({ fieldName, filePath })));
68037
+ const fileContents = await Promise.all(fileUploads.map(({ filePath }) => readFile2(filePath)));
68038
+ for (const [index, { fieldName, filePath }] of fileUploads.entries()) {
68039
+ formData.append(fieldName, new Blob([new Uint8Array(fileContents[index])], {
68040
+ type: getMimetypeFromPath(filePath)
68041
+ }), basename(filePath));
68042
+ }
68043
+ return formData;
68044
+ }
68045
+
67633
68046
  // build/output.js
67634
68047
  function formatOutput({ data, format: format2 }) {
67635
68048
  if (format2 === "json") {
@@ -67689,7 +68102,7 @@ function createCLIContext({ apiKey, baseUrl, outputFormat, source, companyId })
67689
68102
  return {
67690
68103
  baseUrl,
67691
68104
  outputFormat,
67692
- async execute({ method, path: path2, args, queryParamKeys = [], body, baseUrlOverride }) {
68105
+ async execute({ method, path: path2, args, queryParamKeys = [], body, files, baseUrlOverride }) {
67693
68106
  const { url: url2, params, data } = buildRequestConfig({
67694
68107
  path: path2,
67695
68108
  args,
@@ -67698,12 +68111,16 @@ function createCLIContext({ apiKey, baseUrl, outputFormat, source, companyId })
67698
68111
  });
67699
68112
  const requestData = body ?? data;
67700
68113
  const hasData = Array.isArray(requestData) ? requestData.length > 0 : requestData != null && Object.keys(requestData).length > 0;
68114
+ const hasFiles = Object.values(files ?? {}).some((filePaths) => filePaths.length > 0);
67701
68115
  try {
67702
68116
  const response = await httpClient.request({
67703
68117
  method,
67704
68118
  url: url2,
67705
68119
  params,
67706
- data: hasData ? requestData : void 0,
68120
+ data: hasFiles ? await buildMultipartBody({
68121
+ data: requestData ?? {},
68122
+ files: files ?? {}
68123
+ }) : hasData ? requestData : void 0,
67707
68124
  ...baseUrlOverride ? { baseURL: baseUrlOverride } : {},
67708
68125
  headers: {
67709
68126
  "Hyperline-Source": source,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "@asteasolutions/zod-to-openapi": "8.1.0",
3
- "@aws-sdk/client-s3": "3.620.1",
4
- "@aws-sdk/client-sts": "3.620.1",
3
+ "@aws-sdk/client-s3": "3.1164.0",
4
+ "@aws-sdk/client-sts": "3.1164.0",
5
5
  "@modelcontextprotocol/sdk": "1.25.2",
6
6
  "axios": "1.13.2",
7
7
  "axios-retry": "4.5.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperline/cli",
3
- "version": "0.1.0-build.1.734d35e",
3
+ "version": "0.1.0-build.1.73e0b80",
4
4
  "description": "Agent-first CLI for Hyperline API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,8 +22,8 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@asteasolutions/zod-to-openapi": "8.1.0",
25
- "@aws-sdk/client-s3": "3.620.1",
26
- "@aws-sdk/client-sts": "3.620.1",
25
+ "@aws-sdk/client-s3": "3.1164.0",
26
+ "@aws-sdk/client-sts": "3.1164.0",
27
27
  "@modelcontextprotocol/sdk": "1.25.2",
28
28
  "axios": "1.13.2",
29
29
  "axios-retry": "4.5.0",