@hyperline/cli 0.1.0-build.1.6d94297 → 0.1.0-build.1.6de97bc

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.
@@ -34985,10 +34985,10 @@ var require_shared = __commonJS({
34985
34985
  ZodId: () => ZodId,
34986
34986
  ZodTranslationsSchemaFn: () => ZodTranslationsSchemaFn
34987
34987
  });
34988
- var import_zod23 = require_lib();
34988
+ var import_zod24 = require_lib();
34989
34989
  var countryIds2 = ["all", ...countries.map(({ id }) => id)];
34990
- var ZodId = import_zod23.z.enum(countryIds2);
34991
- var ZodTranslationsSchemaFn = (schema) => import_zod23.z.record(import_zod23.z.string(), schema.optional());
34990
+ var ZodId = import_zod24.z.enum(countryIds2);
34991
+ var ZodTranslationsSchemaFn = (schema) => import_zod24.z.record(import_zod24.z.string(), schema.optional());
34992
34992
  var UsStates = [
34993
34993
  { id: "AA", name: "Armed Forces Americas" },
34994
34994
  { id: "AE", name: "Armed Forces Europe" },
@@ -36287,14 +36287,14 @@ var require_shared = __commonJS({
36287
36287
  ZodNumberCurrencyPositiveValue: () => ZodNumberCurrencyPositiveValue,
36288
36288
  ZodNumberCurrencyPositiveValueExcludingZero: () => ZodNumberCurrencyPositiveValueExcludingZero
36289
36289
  });
36290
- var import_zod24 = require_lib();
36291
- var ZodCurrencyId = import_zod24.z.enum(
36290
+ var import_zod25 = require_lib();
36291
+ var ZodCurrencyId = import_zod25.z.enum(
36292
36292
  all_default.map(({ id }) => id)
36293
36293
  );
36294
- var ZodNumberCurrency = import_zod24.z.string().or(import_zod24.z.number().transform((number4) => number4)).transform((number4) => number4);
36295
- var ZodNumberCurrencyPositiveValue = import_zod24.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
36296
- var ZodNumberCurrencyPositiveValueExcludingZero = import_zod24.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
36297
- var ZodCurrencyMap = import_zod24.z.record(ZodNumberCurrency).refine(
36294
+ var ZodNumberCurrency = import_zod25.z.string().or(import_zod25.z.number().transform((number4) => number4)).transform((number4) => number4);
36295
+ var ZodNumberCurrencyPositiveValue = import_zod25.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
36296
+ var ZodNumberCurrencyPositiveValueExcludingZero = import_zod25.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
36297
+ var ZodCurrencyMap = import_zod25.z.record(ZodNumberCurrency).refine(
36298
36298
  (data) => Object.keys(data).every((key) => ZodCurrencyId.safeParse(key).success),
36299
36299
  {
36300
36300
  message: "Invalid currency key.",
@@ -38165,7 +38165,7 @@ Examples:
38165
38165
  // build/commands/generated/accounting-journal-entries.js
38166
38166
  function registerAccounting_Journal_EntriesCommands(parent) {
38167
38167
  const resource = parent.command("accounting-journal-entries").description("Manage accounting > journal entries");
38168
- resource.command("list-journal-entries").description(`List accounting journal entries with optional filters.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--entry-number <value>", `Filter by journal entry number.`).option("--status <value>", `Filter by journal entry status.`).option("--origin <value>", `Filter by automatic or manual origin.`).option("--ledger-id <value>", `Filter by ledger identifier.`).option("--invoicing-entity-id <value>", `Filter by invoicing entity identifier.`).option("--invoice-id <value>", `Filter by invoice identifier.`).option("--customer-id <value>", `Filter by customer identifier.`).option("--subscription-id <value>", `Filter by subscription identifier.`).option("--transaction-id <value>", `Filter by transaction identifier.`).option("--ledger-account-id <value>", `Filter entries containing a ledger account.`).option("--rule-id <value>", `Filter entries containing an accounting rule.`).option("--search <value>", `Search entry number, description, customer, or invoice.`).option("--year <number>", `Filter by entry year.`).option("--quarter <number>", `Filter by entry quarter.`).addHelpText("after", `
38168
+ resource.command("list-journal-entries").description(`List accounting journal entries with optional filters.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--entry-number <value>", `Filter by journal entry number.`).option("--status <value>", `Filter by journal entry status.`).option("--origin <value>", `Filter by automatic or manual origin.`).option("--ledger-id <value>", `Filter by ledger identifier.`).option("--invoicing-entity-id <value>", `Filter by invoicing entity identifier.`).option("--invoice-id <value>", `Filter by invoice identifier.`).option("--customer-id <value>", `Filter by customer identifier.`).option("--subscription-id <value>", `Filter by subscription identifier.`).option("--transaction-id <value>", `Filter by transaction identifier.`).option("--ledger-account-id <value>", `Filter entries containing a ledger account.`).option("--rule-id <value>", `Filter entries containing an accounting rule.`).option("--search <value>", `Search entry number, description, amount, invoice number or ID, customer name or ID, or subscription ID.`).option("--year <number>", `Filter by entry year.`).option("--quarter <number>", `Filter by entry quarter.`).addHelpText("after", `
38169
38169
  Examples:
38170
38170
  hyperline accounting-journal-entries list-journal-entries
38171
38171
  hyperline accounting-journal-entries list-journal-entries --take <take> --entry-number <entry_number>`).action(async (opts) => {
@@ -38409,9 +38409,10 @@ Examples:
38409
38409
  queryParamKeys: ["invoicing_entity_id"]
38410
38410
  });
38411
38411
  });
38412
- resource.command("create-ledger").description(`Create an accounting ledger for an invoicing entity.`).requiredOption("--invoicing-entity-id <value>", `Identifier of the invoicing entity that owns the ledger.`).requiredOption("--name <value>", `Display name of the ledger.`).requiredOption("--code <value>", `Optional accounting code of the ledger.`).requiredOption("--description <value>", `Optional description of the ledger.`).requiredOption("--type <value>", `Type of ledger.`).requiredOption("--currency <value>", `ISO 4217 currency used by the ledger.`).requiredOption("--entry-number-pattern <value>", `Entry numbering pattern containing \`{number}\`.`).requiredOption("--is-primary", `Whether this is the primary ledger for the invoicing entity.`).requiredOption("--is-inactive", `Whether the ledger is inactive.`).addHelpText("after", `
38412
+ resource.command("create-ledger").description(`Create an accounting ledger for an invoicing entity.`).requiredOption("--invoicing-entity-id <value>", `Identifier of the invoicing entity that owns the ledger.`).requiredOption("--name <value>", `Display name of the ledger.`).requiredOption("--code <value>", `Optional accounting code of the ledger.`).requiredOption("--description <value>", `Optional description of the ledger.`).requiredOption("--type <value>", `Type of ledger.`).requiredOption("--currency <value>", `ISO 4217 currency used by the ledger.`).option("--fiscal-year-end-month <number>", `Last month of the ledger's fiscal year, from 1 (January) to 12 (December). Reports split profit between past fiscal years and the current one from it. Defaults to 12. It cannot be changed after creation.`).requiredOption("--entry-number-pattern <value>", `Entry numbering pattern containing \`{number}\`.`).requiredOption("--is-primary", `Whether this is the primary ledger for the invoicing entity.`).requiredOption("--is-inactive", `Whether the ledger is inactive.`).addHelpText("after", `
38413
38413
  Examples:
38414
38414
  hyperline accounting-ledgers create-ledger --invoicing-entity-id <invoicing_entity_id> --name <name> --code <code> --description <description> --type <type> --currency <currency> --entry-number-pattern <entry_number_pattern> --is-primary --is-inactive
38415
+ hyperline accounting-ledgers create-ledger --invoicing-entity-id <invoicing_entity_id> --name <name> --code <code> --description <description> --type <type> --currency <currency> --entry-number-pattern <entry_number_pattern> --is-primary --is-inactive --fiscal-year-end-month <fiscal_year_end_month>
38415
38416
  hyperline accounting-ledgers create-ledger --invoicing-entity-id <invoicing_entity_id> --name <name> --code <code> --description <description> --type <type> --currency <currency> --entry-number-pattern <entry_number_pattern> --is-primary --is-inactive --output json`).action(async (opts) => {
38416
38417
  const ctx = resource.parent?.opts()._ctx;
38417
38418
  if (!ctx) {
@@ -38433,6 +38434,8 @@ Examples:
38433
38434
  args.currency = opts.currency;
38434
38435
  if (opts.entryNumberPattern !== void 0)
38435
38436
  args.entry_number_pattern = opts.entryNumberPattern;
38437
+ if (opts.fiscalYearEndMonth !== void 0)
38438
+ args.fiscal_year_end_month = Number(opts.fiscalYearEndMonth);
38436
38439
  if (opts.isPrimary !== void 0)
38437
38440
  args.is_primary = true;
38438
38441
  if (opts.isInactive !== void 0)
@@ -38504,6 +38507,94 @@ Examples:
38504
38507
  queryParamKeys: []
38505
38508
  });
38506
38509
  });
38510
+ resource.command("get-ledger-close-state").description(`Retrieve the last closed month of a ledger and the latest month that can be closed.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
38511
+ Examples:
38512
+ hyperline accounting-ledgers get-ledger-close-state --id <id>`).action(async (opts) => {
38513
+ const ctx = resource.parent?.opts()._ctx;
38514
+ if (!ctx) {
38515
+ process.stderr.write("Error: Not authenticated\n");
38516
+ process.exit(1);
38517
+ }
38518
+ const args = {};
38519
+ if (opts.id !== void 0)
38520
+ args.id = opts.id;
38521
+ await ctx.execute({
38522
+ method: "GET",
38523
+ path: "/v1/accounting/ledgers/{id}/close",
38524
+ args,
38525
+ queryParamKeys: []
38526
+ });
38527
+ });
38528
+ resource.command("list-ledger-close-events").description(`List the closes and reopens of a ledger, newest first, with who did them and why.`).requiredOption("--id <value>", `id parameter`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
38529
+ Examples:
38530
+ hyperline accounting-ledgers list-ledger-close-events --id <id>
38531
+ hyperline accounting-ledgers list-ledger-close-events --id <id> --take <take>`).action(async (opts) => {
38532
+ const ctx = resource.parent?.opts()._ctx;
38533
+ if (!ctx) {
38534
+ process.stderr.write("Error: Not authenticated\n");
38535
+ process.exit(1);
38536
+ }
38537
+ const args = {};
38538
+ if (opts.id !== void 0)
38539
+ args.id = opts.id;
38540
+ if (opts.take !== void 0)
38541
+ args.take = Number(opts.take);
38542
+ if (opts.skip !== void 0)
38543
+ args.skip = Number(opts.skip);
38544
+ await ctx.execute({
38545
+ method: "GET",
38546
+ path: "/v1/accounting/ledgers/{id}/close-events",
38547
+ args,
38548
+ queryParamKeys: ["take", "skip"]
38549
+ });
38550
+ });
38551
+ resource.command("close-ledger-period").description(`Close every month of a ledger through an ended month, after posting the revenue recognition due by its end; a user token needs the accounting_close permission.`).requiredOption("--id <value>", `id parameter`).requiredOption("--through-month <value>", `Last month to close, formatted YYYY-MM: an ended month after the last closed month. Every earlier month is closed too.`).option("--reason <value>", `Why the months are closed, 1 to 500 characters.`).addHelpText("after", `
38552
+ Examples:
38553
+ hyperline accounting-ledgers close-ledger-period --id <id> --through-month <through_month>
38554
+ hyperline accounting-ledgers close-ledger-period --id <id> --through-month <through_month> --reason <reason>
38555
+ hyperline accounting-ledgers close-ledger-period --id <id> --through-month <through_month> --output json`).action(async (opts) => {
38556
+ const ctx = resource.parent?.opts()._ctx;
38557
+ if (!ctx) {
38558
+ process.stderr.write("Error: Not authenticated\n");
38559
+ process.exit(1);
38560
+ }
38561
+ const args = {};
38562
+ if (opts.id !== void 0)
38563
+ args.id = opts.id;
38564
+ if (opts.throughMonth !== void 0)
38565
+ args.through_month = opts.throughMonth;
38566
+ if (opts.reason !== void 0)
38567
+ args.reason = opts.reason;
38568
+ await ctx.execute({
38569
+ method: "POST",
38570
+ path: "/v1/accounting/ledgers/{id}/close",
38571
+ args,
38572
+ queryParamKeys: []
38573
+ });
38574
+ });
38575
+ resource.command("reopen-ledger-period").description(`Reopen a closed month of a ledger and every later month, with a mandatory reason; a user token needs the accounting_close permission.`).requiredOption("--id <value>", `id parameter`).requiredOption("--from-month <value>", `First month to reopen, formatted YYYY-MM: a closed month. Every later month is reopened too.`).requiredOption("--reason <value>", `Why the months are reopened, 1 to 500 characters.`).addHelpText("after", `
38576
+ Examples:
38577
+ hyperline accounting-ledgers reopen-ledger-period --id <id> --from-month <from_month> --reason <reason>
38578
+ hyperline accounting-ledgers reopen-ledger-period --id <id> --from-month <from_month> --reason <reason> --output json`).action(async (opts) => {
38579
+ const ctx = resource.parent?.opts()._ctx;
38580
+ if (!ctx) {
38581
+ process.stderr.write("Error: Not authenticated\n");
38582
+ process.exit(1);
38583
+ }
38584
+ const args = {};
38585
+ if (opts.id !== void 0)
38586
+ args.id = opts.id;
38587
+ if (opts.fromMonth !== void 0)
38588
+ args.from_month = opts.fromMonth;
38589
+ if (opts.reason !== void 0)
38590
+ args.reason = opts.reason;
38591
+ await ctx.execute({
38592
+ method: "POST",
38593
+ path: "/v1/accounting/ledgers/{id}/reopen",
38594
+ args,
38595
+ queryParamKeys: []
38596
+ });
38597
+ });
38507
38598
  }
38508
38599
 
38509
38600
  // build/commands/generated/accounting-reports.js
@@ -38864,7 +38955,7 @@ Examples:
38864
38955
  // build/commands/generated/accounting-rules.js
38865
38956
  function registerAccounting_RulesCommands(parent) {
38866
38957
  const resource = parent.command("accounting-rules").description("Manage accounting > rules");
38867
- resource.command("list").description(`Retrieve existing accounting rules with optional filtering.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--ledger-id <value>", `ledger_id`).option("--ledger-id.not <value>", `ledger_id__not`).option("--ledger-id.is-null <value>", `ledger_id__isNull`).option("--ledger-id.is-not-null <value>", `ledger_id__isNotNull`).option("--ledger-id.equals <value>", `ledger_id__equals`).option("--ledger-id.contains <value>", `ledger_id__contains`).option("--ledger-id.starts-with <value>", `ledger_id__startsWith`).option("--ledger-id.end-with <value>", `ledger_id__endWith`).option("--category <value>", `category`).option("--category.not <value>", `category__not`).option("--category.is-null <value>", `category__isNull`).option("--category.is-not-null <value>", `category__isNotNull`).option("--category.equals <value>", `category__equals`).option("--category.contains <value>", `category__contains`).option("--category.starts-with <value>", `category__startsWith`).option("--category.end-with <value>", `category__endWith`).addHelpText("after", `
38958
+ resource.command("list").description(`Retrieve existing accounting rules with optional filtering.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--ledger-id <value>", `ledger_id`).option("--ledger-id.not <value>", `ledger_id__not`).option("--ledger-id.equals <value>", `ledger_id__equals`).option("--ledger-id.contains <value>", `ledger_id__contains`).option("--ledger-id.starts-with <value>", `ledger_id__startsWith`).option("--ledger-id.end-with <value>", `ledger_id__endWith`).option("--category <value>", `category`).option("--category.not <value>", `category__not`).option("--category.equals <value>", `category__equals`).option("--category.contains <value>", `category__contains`).option("--category.starts-with <value>", `category__startsWith`).option("--category.end-with <value>", `category__endWith`).addHelpText("after", `
38868
38959
  Examples:
38869
38960
  hyperline accounting-rules list
38870
38961
  hyperline accounting-rules list --take <take> --ledger-id <ledger_id>`).action(async (opts) => {
@@ -38878,10 +38969,6 @@ Examples:
38878
38969
  args.ledger_id = opts.ledgerId;
38879
38970
  if (opts["ledgerId.not"] !== void 0)
38880
38971
  args.ledger_id__not = opts["ledgerId.not"];
38881
- if (opts["ledgerId.isNull"] !== void 0)
38882
- args.ledger_id__isNull = opts["ledgerId.isNull"];
38883
- if (opts["ledgerId.isNotNull"] !== void 0)
38884
- args.ledger_id__isNotNull = opts["ledgerId.isNotNull"];
38885
38972
  if (opts["ledgerId.equals"] !== void 0)
38886
38973
  args.ledger_id__equals = opts["ledgerId.equals"];
38887
38974
  if (opts["ledgerId.contains"] !== void 0)
@@ -38894,10 +38981,6 @@ Examples:
38894
38981
  args.category = opts.category;
38895
38982
  if (opts["category.not"] !== void 0)
38896
38983
  args.category__not = opts["category.not"];
38897
- if (opts["category.isNull"] !== void 0)
38898
- args.category__isNull = opts["category.isNull"];
38899
- if (opts["category.isNotNull"] !== void 0)
38900
- args.category__isNotNull = opts["category.isNotNull"];
38901
38984
  if (opts["category.equals"] !== void 0)
38902
38985
  args.category__equals = opts["category.equals"];
38903
38986
  if (opts["category.contains"] !== void 0)
@@ -38919,16 +39002,12 @@ Examples:
38919
39002
  "skip",
38920
39003
  "ledger_id",
38921
39004
  "ledger_id__not",
38922
- "ledger_id__isNull",
38923
- "ledger_id__isNotNull",
38924
39005
  "ledger_id__equals",
38925
39006
  "ledger_id__contains",
38926
39007
  "ledger_id__startsWith",
38927
39008
  "ledger_id__endWith",
38928
39009
  "category",
38929
39010
  "category__not",
38930
- "category__isNull",
38931
- "category__isNotNull",
38932
39011
  "category__equals",
38933
39012
  "category__contains",
38934
39013
  "category__startsWith",
@@ -39008,7 +39087,7 @@ Examples:
39008
39087
  queryParamKeys: []
39009
39088
  });
39010
39089
  });
39011
- 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", `
39012
39091
  Examples:
39013
39092
  hyperline accounting-rules create --category <category> --priority <priority>
39014
39093
  hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
@@ -39108,7 +39187,7 @@ Examples:
39108
39187
  queryParamKeys: []
39109
39188
  });
39110
39189
  });
39111
- 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", `
39112
39191
  Examples:
39113
39192
  hyperline accounting-rules update --id <id>
39114
39193
  hyperline accounting-rules update --id <id> --name <name> --category <category>
@@ -40594,6 +40673,131 @@ Examples:
40594
40673
  });
40595
40674
  }
40596
40675
 
40676
+ // build/commands/generated/approval-requests.js
40677
+ function registerApproval_RequestsCommands(parent) {
40678
+ const resource = parent.command("approval-requests").description("Manage approval > requests");
40679
+ resource.command("get").description(`Retrieve an approval request and its decisions.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
40680
+ Examples:
40681
+ hyperline approval-requests get --id <id>`).action(async (opts) => {
40682
+ const ctx = resource.parent?.opts()._ctx;
40683
+ if (!ctx) {
40684
+ process.stderr.write("Error: Not authenticated\n");
40685
+ process.exit(1);
40686
+ }
40687
+ const args = {};
40688
+ if (opts.id !== void 0)
40689
+ args.id = opts.id;
40690
+ await ctx.execute({
40691
+ method: "GET",
40692
+ path: "/v1/approvals/requests/{id}",
40693
+ args,
40694
+ queryParamKeys: []
40695
+ });
40696
+ });
40697
+ resource.command("approve").description(`Approve the current step of an approval request.`).requiredOption("--id <value>", `id parameter`).requiredOption("--step-id <value>", `Expected current workflow step ID. A stale step is rejected instead of deciding the next step.`).option("--approver-id <value>", `Identifier of the account member making the decision. Supply exactly one of approver_id or approver_email. With a user token, this must be the authenticated user.`).option("--comment <value>", `Decision comment. Required and nonblank when rejecting; optional when approving. Trimmed, with a maximum of 2000 characters.`).option("--approver-email <value>", `Email of the account member making the decision, matched case-insensitively. Supply exactly one of approver_id or approver_email. With a user token, this must be the authenticated user.`).addHelpText("after", `
40698
+ Examples:
40699
+ hyperline approval-requests approve --id <id> --step-id <step_id>
40700
+ hyperline approval-requests approve --id <id> --step-id <step_id> --approver-id <approver_id> --comment <comment>
40701
+ hyperline approval-requests approve --id <id> --step-id <step_id> --output json`).action(async (opts) => {
40702
+ const ctx = resource.parent?.opts()._ctx;
40703
+ if (!ctx) {
40704
+ process.stderr.write("Error: Not authenticated\n");
40705
+ process.exit(1);
40706
+ }
40707
+ const args = {};
40708
+ if (opts.id !== void 0)
40709
+ args.id = opts.id;
40710
+ if (opts.stepId !== void 0)
40711
+ args.step_id = opts.stepId;
40712
+ if (opts.approverId !== void 0)
40713
+ args.approver_id = opts.approverId;
40714
+ if (opts.comment !== void 0)
40715
+ args.comment = opts.comment;
40716
+ if (opts.approverEmail !== void 0)
40717
+ args.approver_email = opts.approverEmail;
40718
+ await ctx.execute({
40719
+ method: "POST",
40720
+ path: "/v1/approvals/requests/{id}/approve",
40721
+ args,
40722
+ queryParamKeys: []
40723
+ });
40724
+ });
40725
+ resource.command("reject").description(`Reject an approval request with a required comment.`).requiredOption("--id <value>", `id parameter`).requiredOption("--step-id <value>", `Expected current workflow step ID. A stale step is rejected instead of deciding the next step.`).option("--approver-id <value>", `Identifier of the account member making the decision. Supply exactly one of approver_id or approver_email. With a user token, this must be the authenticated user.`).requiredOption("--comment <value>", `Decision comment. Required and nonblank when rejecting; optional when approving. Trimmed, with a maximum of 2000 characters.`).option("--approver-email <value>", `Email of the account member making the decision, matched case-insensitively. Supply exactly one of approver_id or approver_email. With a user token, this must be the authenticated user.`).addHelpText("after", `
40726
+ Examples:
40727
+ hyperline approval-requests reject --id <id> --step-id <step_id> --comment <comment>
40728
+ hyperline approval-requests reject --id <id> --step-id <step_id> --comment <comment> --approver-id <approver_id> --approver-email <approver_email>
40729
+ hyperline approval-requests reject --id <id> --step-id <step_id> --comment <comment> --output json`).action(async (opts) => {
40730
+ const ctx = resource.parent?.opts()._ctx;
40731
+ if (!ctx) {
40732
+ process.stderr.write("Error: Not authenticated\n");
40733
+ process.exit(1);
40734
+ }
40735
+ const args = {};
40736
+ if (opts.id !== void 0)
40737
+ args.id = opts.id;
40738
+ if (opts.stepId !== void 0)
40739
+ args.step_id = opts.stepId;
40740
+ if (opts.approverId !== void 0)
40741
+ args.approver_id = opts.approverId;
40742
+ if (opts.comment !== void 0)
40743
+ args.comment = opts.comment;
40744
+ if (opts.approverEmail !== void 0)
40745
+ args.approver_email = opts.approverEmail;
40746
+ await ctx.execute({
40747
+ method: "POST",
40748
+ path: "/v1/approvals/requests/{id}/reject",
40749
+ args,
40750
+ queryParamKeys: []
40751
+ });
40752
+ });
40753
+ }
40754
+
40755
+ // build/commands/generated/approval-workflows.js
40756
+ function registerApproval_WorkflowsCommands(parent) {
40757
+ const resource = parent.command("approval-workflows").description("Manage approval > workflows");
40758
+ resource.command("list").description(`List approval workflows with their steps and approvers. Those whose \`applicable_flows\` include \`workflow_step\` can be picked as the \`approvalWorkflowId\` of a workflow's Request approval step (\`hyperline.request_approval\`). Filter with \`is_active\`; paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--is-active <value>", `Only return workflows matching this active state.`).addHelpText("after", `
40759
+ Examples:
40760
+ hyperline approval-workflows list
40761
+ hyperline approval-workflows list --take <take> --is-active <is_active>`).action(async (opts) => {
40762
+ const ctx = resource.parent?.opts()._ctx;
40763
+ if (!ctx) {
40764
+ process.stderr.write("Error: Not authenticated\n");
40765
+ process.exit(1);
40766
+ }
40767
+ const args = {};
40768
+ if (opts.isActive !== void 0)
40769
+ args.is_active = opts.isActive;
40770
+ if (opts.take !== void 0)
40771
+ args.take = Number(opts.take);
40772
+ if (opts.skip !== void 0)
40773
+ args.skip = Number(opts.skip);
40774
+ await ctx.execute({
40775
+ method: "GET",
40776
+ path: "/v1/approvals/workflows",
40777
+ args,
40778
+ queryParamKeys: ["take", "skip", "is_active"]
40779
+ });
40780
+ });
40781
+ resource.command("get").description(`Retrieve a single approval workflow.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
40782
+ Examples:
40783
+ hyperline approval-workflows get --id <id>`).action(async (opts) => {
40784
+ const ctx = resource.parent?.opts()._ctx;
40785
+ if (!ctx) {
40786
+ process.stderr.write("Error: Not authenticated\n");
40787
+ process.exit(1);
40788
+ }
40789
+ const args = {};
40790
+ if (opts.id !== void 0)
40791
+ args.id = opts.id;
40792
+ await ctx.execute({
40793
+ method: "GET",
40794
+ path: "/v1/approvals/workflows/{id}",
40795
+ args,
40796
+ queryParamKeys: []
40797
+ });
40798
+ });
40799
+ }
40800
+
40597
40801
  // build/commands/generated/bank-accounts.js
40598
40802
  function registerBank_AccountsCommands(parent) {
40599
40803
  const resource = parent.command("bank-accounts").description("Manage bank accounts");
@@ -40663,6 +40867,84 @@ Examples:
40663
40867
  });
40664
40868
  }
40665
40869
 
40870
+ // build/commands/generated/catalog.js
40871
+ function registerCatalogCommands(parent) {
40872
+ const resource = parent.command("catalog").description("Manage catalog");
40873
+ resource.command("list-catalog-versions").description(`List product catalog versions (pending draft and published history). Catalog versioning must be enabled for the organisation.`).addHelpText("after", `
40874
+ Examples:
40875
+ hyperline catalog list-catalog-versions`).action(async (_opts) => {
40876
+ const ctx = resource.parent?.opts()._ctx;
40877
+ if (!ctx) {
40878
+ process.stderr.write("Error: Not authenticated\n");
40879
+ process.exit(1);
40880
+ }
40881
+ const args = {};
40882
+ await ctx.execute({
40883
+ method: "GET",
40884
+ path: "/v1/catalog/versions",
40885
+ args,
40886
+ queryParamKeys: []
40887
+ });
40888
+ });
40889
+ resource.command("get-catalog-draft").description(`Get the pending product catalog draft (null when there is none).`).addHelpText("after", `
40890
+ Examples:
40891
+ hyperline catalog get-catalog-draft`).action(async (_opts) => {
40892
+ const ctx = resource.parent?.opts()._ctx;
40893
+ if (!ctx) {
40894
+ process.stderr.write("Error: Not authenticated\n");
40895
+ process.exit(1);
40896
+ }
40897
+ const args = {};
40898
+ await ctx.execute({
40899
+ method: "GET",
40900
+ path: "/v1/catalog/versions/draft",
40901
+ args,
40902
+ queryParamKeys: []
40903
+ });
40904
+ });
40905
+ resource.command("publish-catalog-draft").description(`Publish the pending product catalog draft: its changes become the live catalog.`).addHelpText("after", `
40906
+ Examples:
40907
+ hyperline catalog publish-catalog-draft
40908
+ hyperline catalog publish-catalog-draft --output json`).action(async (_opts) => {
40909
+ const ctx = resource.parent?.opts()._ctx;
40910
+ if (!ctx) {
40911
+ process.stderr.write("Error: Not authenticated\n");
40912
+ process.exit(1);
40913
+ }
40914
+ const args = {};
40915
+ await ctx.execute({
40916
+ method: "POST",
40917
+ path: "/v1/catalog/versions/draft/publish",
40918
+ args,
40919
+ queryParamKeys: []
40920
+ });
40921
+ });
40922
+ resource.command("discard-catalog-draft").description(`Discard the pending product catalog draft without publishing it.`).option("--yes", "Skip confirmation").addHelpText("after", `
40923
+ Examples:
40924
+ hyperline catalog discard-catalog-draft
40925
+ hyperline catalog discard-catalog-draft --output json`).action(async (opts) => {
40926
+ const ctx = resource.parent?.opts()._ctx;
40927
+ if (!ctx) {
40928
+ process.stderr.write("Error: Not authenticated\n");
40929
+ process.exit(1);
40930
+ }
40931
+ const args = {};
40932
+ if (!opts.yes) {
40933
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
40934
+ if (!confirmed) {
40935
+ process.stdout.write("Aborted.\n");
40936
+ return;
40937
+ }
40938
+ }
40939
+ await ctx.execute({
40940
+ method: "DELETE",
40941
+ path: "/v1/catalog/versions/draft",
40942
+ args,
40943
+ queryParamKeys: []
40944
+ });
40945
+ });
40946
+ }
40947
+
40666
40948
  // build/commands/generated/companies.js
40667
40949
  function registerCompaniesCommands(parent) {
40668
40950
  const resource = parent.command("companies").description("Manage companies");
@@ -40705,13 +40987,13 @@ Examples:
40705
40987
  });
40706
40988
  }
40707
40989
 
40708
- // build/commands/generated/coupons.js
40709
- function registerCouponsCommands(parent) {
40710
- const resource = parent.command("coupons").description("Manage coupons");
40711
- resource.command("list").description(`List all coupons with pagination (take/skip). Coupons define discount rules (percentage or fixed amount) that can be applied to subscriptions or invoices.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
40990
+ // build/commands/generated/contracts-clauses.js
40991
+ function registerContracts_ClausesCommands(parent) {
40992
+ const resource = parent.command("contracts-clauses").description("Manage contracts > clauses");
40993
+ 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", `
40712
40994
  Examples:
40713
- hyperline coupons list
40714
- hyperline coupons list --take <take>`).action(async (opts) => {
40995
+ hyperline contracts-clauses list-contract-clauses
40996
+ hyperline contracts-clauses list-contract-clauses --take <take>`).action(async (opts) => {
40715
40997
  const ctx = resource.parent?.opts()._ctx;
40716
40998
  if (!ctx) {
40717
40999
  process.stderr.write("Error: Not authenticated\n");
@@ -40724,16 +41006,16 @@ Examples:
40724
41006
  args.skip = Number(opts.skip);
40725
41007
  await ctx.execute({
40726
41008
  method: "GET",
40727
- path: "/v1/coupons",
41009
+ path: "/v1/contracts/clauses",
40728
41010
  args,
40729
41011
  queryParamKeys: ["take", "skip"]
40730
41012
  });
40731
41013
  });
40732
- resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
41014
+ 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", `
40733
41015
  Examples:
40734
- hyperline coupons create --name <name> --type <type>
40735
- hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
40736
- hyperline coupons create --name <name> --type <type> --output json`).action(async (opts) => {
41016
+ hyperline contracts-clauses create-contract-clause --name <name> --text <text>
41017
+ hyperline contracts-clauses create-contract-clause --name <name> --text <text> --translations <translations> --invoicing-entity-ids <invoicing_entity_ids>
41018
+ hyperline contracts-clauses create-contract-clause --name <name> --text <text> --output json`).action(async (opts) => {
40737
41019
  const ctx = resource.parent?.opts()._ctx;
40738
41020
  if (!ctx) {
40739
41021
  process.stderr.write("Error: Not authenticated\n");
@@ -40742,40 +41024,22 @@ Examples:
40742
41024
  const args = {};
40743
41025
  if (opts.name !== void 0)
40744
41026
  args.name = opts.name;
40745
- if (opts.description !== void 0)
40746
- args.description = opts.description;
40747
- if (opts.expirationDate !== void 0)
40748
- args.expiration_date = opts.expirationDate;
40749
- if (opts.productScope !== void 0)
40750
- args.product_scope = opts.productScope;
40751
- if (opts.repeat !== void 0)
40752
- args.repeat = opts.repeat;
40753
- if (opts.type !== void 0)
40754
- args.type = opts.type;
40755
- if (opts.currency !== void 0)
40756
- args.currency = opts.currency;
40757
- if (opts.redemptionLimit !== void 0)
40758
- args.redemption_limit = Number(opts.redemptionLimit);
40759
- if (opts.discountAmount !== void 0)
40760
- args.discount_amount = Number(opts.discountAmount);
40761
- if (opts.discountPercent !== void 0)
40762
- args.discount_percent = Number(opts.discountPercent);
40763
- if (opts.productIds !== void 0)
40764
- args.product_ids = JSON.parse(opts.productIds);
40765
- if (opts.duration !== void 0)
40766
- args.duration = JSON.parse(opts.duration);
40767
- if (opts.properties !== void 0)
40768
- args.properties = JSON.parse(opts.properties);
41027
+ if (opts.text !== void 0)
41028
+ args.text = opts.text;
41029
+ if (opts.translations !== void 0)
41030
+ args.translations = JSON.parse(opts.translations);
41031
+ if (opts.invoicingEntityIds !== void 0)
41032
+ args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
40769
41033
  await ctx.execute({
40770
41034
  method: "POST",
40771
- path: "/v1/coupons",
41035
+ path: "/v1/contracts/clauses",
40772
41036
  args,
40773
41037
  queryParamKeys: []
40774
41038
  });
40775
41039
  });
40776
- resource.command("get").description(`Retrieve a specific coupon by ID including its discount configuration, redemption count, and deletion status.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
41040
+ resource.command("get-contract-clause").description(`Retrieve a contract clause by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
40777
41041
  Examples:
40778
- hyperline coupons get --id <id>`).action(async (opts) => {
41042
+ hyperline contracts-clauses get-contract-clause --id <id>`).action(async (opts) => {
40779
41043
  const ctx = resource.parent?.opts()._ctx;
40780
41044
  if (!ctx) {
40781
41045
  process.stderr.write("Error: Not authenticated\n");
@@ -40786,7 +41050,351 @@ Examples:
40786
41050
  args.id = opts.id;
40787
41051
  await ctx.execute({
40788
41052
  method: "GET",
40789
- path: "/v1/coupons/{id}",
41053
+ path: "/v1/contracts/clauses/{id}",
41054
+ args,
41055
+ queryParamKeys: []
41056
+ });
41057
+ });
41058
+ 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", `
41059
+ Examples:
41060
+ hyperline contracts-clauses update-contract-clause --id <id>
41061
+ hyperline contracts-clauses update-contract-clause --id <id> --name <name> --text <text>
41062
+ hyperline contracts-clauses update-contract-clause --id <id> --output json`).action(async (opts) => {
41063
+ const ctx = resource.parent?.opts()._ctx;
41064
+ if (!ctx) {
41065
+ process.stderr.write("Error: Not authenticated\n");
41066
+ process.exit(1);
41067
+ }
41068
+ const args = {};
41069
+ if (opts.id !== void 0)
41070
+ args.id = opts.id;
41071
+ if (opts.name !== void 0)
41072
+ args.name = opts.name;
41073
+ if (opts.text !== void 0)
41074
+ args.text = opts.text;
41075
+ if (opts.translations !== void 0)
41076
+ args.translations = JSON.parse(opts.translations);
41077
+ if (opts.invoicingEntityIds !== void 0)
41078
+ args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
41079
+ await ctx.execute({
41080
+ method: "PUT",
41081
+ path: "/v1/contracts/clauses/{id}",
41082
+ args,
41083
+ queryParamKeys: []
41084
+ });
41085
+ });
41086
+ 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", `
41087
+ Examples:
41088
+ hyperline contracts-clauses delete-contract-clause --id <id>
41089
+ hyperline contracts-clauses delete-contract-clause --id <id> --output json`).action(async (opts) => {
41090
+ const ctx = resource.parent?.opts()._ctx;
41091
+ if (!ctx) {
41092
+ process.stderr.write("Error: Not authenticated\n");
41093
+ process.exit(1);
41094
+ }
41095
+ const args = {};
41096
+ if (opts.id !== void 0)
41097
+ args.id = opts.id;
41098
+ if (!opts.yes) {
41099
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
41100
+ if (!confirmed) {
41101
+ process.stdout.write("Aborted.\n");
41102
+ return;
41103
+ }
41104
+ }
41105
+ await ctx.execute({
41106
+ method: "DELETE",
41107
+ path: "/v1/contracts/clauses/{id}",
41108
+ args,
41109
+ queryParamKeys: []
41110
+ });
41111
+ });
41112
+ }
41113
+
41114
+ // build/commands/generated/contracts-documents.js
41115
+ function registerContracts_DocumentsCommands(parent) {
41116
+ const resource = parent.command("contracts-documents").description("Manage contracts > documents");
41117
+ 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", `
41118
+ Examples:
41119
+ hyperline contracts-documents list-contract-documents
41120
+ hyperline contracts-documents list-contract-documents --take <take>`).action(async (opts) => {
41121
+ const ctx = resource.parent?.opts()._ctx;
41122
+ if (!ctx) {
41123
+ process.stderr.write("Error: Not authenticated\n");
41124
+ process.exit(1);
41125
+ }
41126
+ const args = {};
41127
+ if (opts.take !== void 0)
41128
+ args.take = Number(opts.take);
41129
+ if (opts.skip !== void 0)
41130
+ args.skip = Number(opts.skip);
41131
+ await ctx.execute({
41132
+ method: "GET",
41133
+ path: "/v1/contracts/documents",
41134
+ args,
41135
+ queryParamKeys: ["take", "skip"]
41136
+ });
41137
+ });
41138
+ 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", `
41139
+ Examples:
41140
+ hyperline contracts-documents create-contract-document --name <name>
41141
+ hyperline contracts-documents create-contract-document --name <name> --invoicing-entity-ids <invoicing_entity_ids>
41142
+ hyperline contracts-documents create-contract-document --name <name> --output json`).action(async (opts) => {
41143
+ const ctx = resource.parent?.opts()._ctx;
41144
+ if (!ctx) {
41145
+ process.stderr.write("Error: Not authenticated\n");
41146
+ process.exit(1);
41147
+ }
41148
+ const args = {};
41149
+ if (opts.name !== void 0)
41150
+ args.name = opts.name;
41151
+ if (opts.invoicingEntityIds !== void 0)
41152
+ args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
41153
+ await ctx.execute({
41154
+ method: "POST",
41155
+ path: "/v1/contracts/documents",
41156
+ args,
41157
+ queryParamKeys: []
41158
+ });
41159
+ });
41160
+ 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", `
41161
+ Examples:
41162
+ hyperline contracts-documents get-contract-document --id <id>`).action(async (opts) => {
41163
+ const ctx = resource.parent?.opts()._ctx;
41164
+ if (!ctx) {
41165
+ process.stderr.write("Error: Not authenticated\n");
41166
+ process.exit(1);
41167
+ }
41168
+ const args = {};
41169
+ if (opts.id !== void 0)
41170
+ args.id = opts.id;
41171
+ await ctx.execute({
41172
+ method: "GET",
41173
+ path: "/v1/contracts/documents/{id}",
41174
+ args,
41175
+ queryParamKeys: []
41176
+ });
41177
+ });
41178
+ 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", `
41179
+ Examples:
41180
+ hyperline contracts-documents update-contract-document --id <id>
41181
+ hyperline contracts-documents update-contract-document --id <id> --name <name> --invoicing-entity-ids <invoicing_entity_ids>
41182
+ hyperline contracts-documents update-contract-document --id <id> --output json`).action(async (opts) => {
41183
+ const ctx = resource.parent?.opts()._ctx;
41184
+ if (!ctx) {
41185
+ process.stderr.write("Error: Not authenticated\n");
41186
+ process.exit(1);
41187
+ }
41188
+ const args = {};
41189
+ if (opts.id !== void 0)
41190
+ args.id = opts.id;
41191
+ if (opts.name !== void 0)
41192
+ args.name = opts.name;
41193
+ if (opts.invoicingEntityIds !== void 0)
41194
+ args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
41195
+ await ctx.execute({
41196
+ method: "PUT",
41197
+ path: "/v1/contracts/documents/{id}",
41198
+ args,
41199
+ queryParamKeys: []
41200
+ });
41201
+ });
41202
+ 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", `
41203
+ Examples:
41204
+ hyperline contracts-documents delete-contract-document --id <id>
41205
+ hyperline contracts-documents delete-contract-document --id <id> --output json`).action(async (opts) => {
41206
+ const ctx = resource.parent?.opts()._ctx;
41207
+ if (!ctx) {
41208
+ process.stderr.write("Error: Not authenticated\n");
41209
+ process.exit(1);
41210
+ }
41211
+ const args = {};
41212
+ if (opts.id !== void 0)
41213
+ args.id = opts.id;
41214
+ if (!opts.yes) {
41215
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
41216
+ if (!confirmed) {
41217
+ process.stdout.write("Aborted.\n");
41218
+ return;
41219
+ }
41220
+ }
41221
+ await ctx.execute({
41222
+ method: "DELETE",
41223
+ path: "/v1/contracts/documents/{id}",
41224
+ args,
41225
+ queryParamKeys: []
41226
+ });
41227
+ });
41228
+ 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", `
41229
+ Examples:
41230
+ hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path>
41231
+ hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path> --countries <countries>
41232
+ hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path> --output json`).action(async (opts) => {
41233
+ const ctx = resource.parent?.opts()._ctx;
41234
+ if (!ctx) {
41235
+ process.stderr.write("Error: Not authenticated\n");
41236
+ process.exit(1);
41237
+ }
41238
+ const args = {};
41239
+ if (opts.id !== void 0)
41240
+ args.id = opts.id;
41241
+ if (opts.language !== void 0)
41242
+ args.language = opts.language;
41243
+ if (opts.countries !== void 0)
41244
+ args.countries = opts.countries;
41245
+ const files = {};
41246
+ if (opts.files !== void 0)
41247
+ files.files = [opts.files].flat();
41248
+ await ctx.execute({
41249
+ method: "POST",
41250
+ path: "/v1/contracts/documents/{id}/contents",
41251
+ args,
41252
+ queryParamKeys: [],
41253
+ files
41254
+ });
41255
+ });
41256
+ 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", `
41257
+ Examples:
41258
+ hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId>
41259
+ hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId> --language <language> --countries <countries>
41260
+ hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId> --output json`).action(async (opts) => {
41261
+ const ctx = resource.parent?.opts()._ctx;
41262
+ if (!ctx) {
41263
+ process.stderr.write("Error: Not authenticated\n");
41264
+ process.exit(1);
41265
+ }
41266
+ const args = {};
41267
+ if (opts.id !== void 0)
41268
+ args.id = opts.id;
41269
+ if (opts.contentId !== void 0)
41270
+ args.contentId = opts.contentId;
41271
+ if (opts.language !== void 0)
41272
+ args.language = opts.language;
41273
+ if (opts.countries !== void 0)
41274
+ args.countries = opts.countries;
41275
+ const files = {};
41276
+ if (opts.files !== void 0)
41277
+ files.files = [opts.files].flat();
41278
+ await ctx.execute({
41279
+ method: "PUT",
41280
+ path: "/v1/contracts/documents/{id}/contents/{contentId}",
41281
+ args,
41282
+ queryParamKeys: [],
41283
+ files
41284
+ });
41285
+ });
41286
+ 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", `
41287
+ Examples:
41288
+ hyperline contracts-documents delete-contract-document-content --id <id> --content-id <contentId>
41289
+ hyperline contracts-documents delete-contract-document-content --id <id> --content-id <contentId> --output json`).action(async (opts) => {
41290
+ const ctx = resource.parent?.opts()._ctx;
41291
+ if (!ctx) {
41292
+ process.stderr.write("Error: Not authenticated\n");
41293
+ process.exit(1);
41294
+ }
41295
+ const args = {};
41296
+ if (opts.id !== void 0)
41297
+ args.id = opts.id;
41298
+ if (opts.contentId !== void 0)
41299
+ args.contentId = opts.contentId;
41300
+ if (!opts.yes) {
41301
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
41302
+ if (!confirmed) {
41303
+ process.stdout.write("Aborted.\n");
41304
+ return;
41305
+ }
41306
+ }
41307
+ await ctx.execute({
41308
+ method: "DELETE",
41309
+ path: "/v1/contracts/documents/{id}/contents/{contentId}",
41310
+ args,
41311
+ queryParamKeys: []
41312
+ });
41313
+ });
41314
+ }
41315
+
41316
+ // build/commands/generated/coupons.js
41317
+ function registerCouponsCommands(parent) {
41318
+ const resource = parent.command("coupons").description("Manage coupons");
41319
+ resource.command("list").description(`List all coupons with pagination (take/skip). Coupons define discount rules (percentage or fixed amount) that can be applied to subscriptions or invoices.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
41320
+ Examples:
41321
+ hyperline coupons list
41322
+ hyperline coupons list --take <take>`).action(async (opts) => {
41323
+ const ctx = resource.parent?.opts()._ctx;
41324
+ if (!ctx) {
41325
+ process.stderr.write("Error: Not authenticated\n");
41326
+ process.exit(1);
41327
+ }
41328
+ const args = {};
41329
+ if (opts.take !== void 0)
41330
+ args.take = Number(opts.take);
41331
+ if (opts.skip !== void 0)
41332
+ args.skip = Number(opts.skip);
41333
+ await ctx.execute({
41334
+ method: "GET",
41335
+ path: "/v1/coupons",
41336
+ args,
41337
+ queryParamKeys: ["take", "skip"]
41338
+ });
41339
+ });
41340
+ resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
41341
+ Examples:
41342
+ hyperline coupons create --name <name> --type <type>
41343
+ hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
41344
+ hyperline coupons create --name <name> --type <type> --output json`).action(async (opts) => {
41345
+ const ctx = resource.parent?.opts()._ctx;
41346
+ if (!ctx) {
41347
+ process.stderr.write("Error: Not authenticated\n");
41348
+ process.exit(1);
41349
+ }
41350
+ const args = {};
41351
+ if (opts.name !== void 0)
41352
+ args.name = opts.name;
41353
+ if (opts.description !== void 0)
41354
+ args.description = opts.description;
41355
+ if (opts.expirationDate !== void 0)
41356
+ args.expiration_date = opts.expirationDate;
41357
+ if (opts.productScope !== void 0)
41358
+ args.product_scope = opts.productScope;
41359
+ if (opts.repeat !== void 0)
41360
+ args.repeat = opts.repeat;
41361
+ if (opts.type !== void 0)
41362
+ args.type = opts.type;
41363
+ if (opts.currency !== void 0)
41364
+ args.currency = opts.currency;
41365
+ if (opts.redemptionLimit !== void 0)
41366
+ args.redemption_limit = Number(opts.redemptionLimit);
41367
+ if (opts.discountAmount !== void 0)
41368
+ args.discount_amount = Number(opts.discountAmount);
41369
+ if (opts.discountPercent !== void 0)
41370
+ args.discount_percent = Number(opts.discountPercent);
41371
+ if (opts.productIds !== void 0)
41372
+ args.product_ids = JSON.parse(opts.productIds);
41373
+ if (opts.duration !== void 0)
41374
+ args.duration = JSON.parse(opts.duration);
41375
+ if (opts.properties !== void 0)
41376
+ args.properties = JSON.parse(opts.properties);
41377
+ await ctx.execute({
41378
+ method: "POST",
41379
+ path: "/v1/coupons",
41380
+ args,
41381
+ queryParamKeys: []
41382
+ });
41383
+ });
41384
+ resource.command("get").description(`Retrieve a specific coupon by ID including its discount configuration, redemption count, and deletion status.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
41385
+ Examples:
41386
+ hyperline coupons get --id <id>`).action(async (opts) => {
41387
+ const ctx = resource.parent?.opts()._ctx;
41388
+ if (!ctx) {
41389
+ process.stderr.write("Error: Not authenticated\n");
41390
+ process.exit(1);
41391
+ }
41392
+ const args = {};
41393
+ if (opts.id !== void 0)
41394
+ args.id = opts.id;
41395
+ await ctx.execute({
41396
+ method: "GET",
41397
+ path: "/v1/coupons/{id}",
40790
41398
  args,
40791
41399
  queryParamKeys: []
40792
41400
  });
@@ -40868,7 +41476,7 @@ Examples:
40868
41476
  // build/commands/generated/coupons-promotion-codes.js
40869
41477
  function registerCoupons_Promotion_CodesCommands(parent) {
40870
41478
  const resource = parent.command("coupons-promotion-codes").description("Manage coupons > promotion codes");
40871
- resource.command("list-promotion-codes").description(`List promotion codes with optional filter by coupon_id. Promotion codes are shareable codes that reference a coupon. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--coupon-id <value>", `coupon_id`).option("--coupon-id.not <value>", `coupon_id__not`).option("--coupon-id.is-null <value>", `coupon_id__isNull`).option("--coupon-id.is-not-null <value>", `coupon_id__isNotNull`).option("--coupon-id.equals <value>", `coupon_id__equals`).option("--coupon-id.contains <value>", `coupon_id__contains`).option("--coupon-id.starts-with <value>", `coupon_id__startsWith`).option("--coupon-id.end-with <value>", `coupon_id__endWith`).addHelpText("after", `
41479
+ resource.command("list-promotion-codes").description(`List promotion codes with optional filter by coupon_id. Promotion codes are shareable codes that reference a coupon. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--coupon-id <value>", `coupon_id`).option("--coupon-id.not <value>", `coupon_id__not`).option("--coupon-id.equals <value>", `coupon_id__equals`).option("--coupon-id.contains <value>", `coupon_id__contains`).option("--coupon-id.starts-with <value>", `coupon_id__startsWith`).option("--coupon-id.end-with <value>", `coupon_id__endWith`).addHelpText("after", `
40872
41480
  Examples:
40873
41481
  hyperline coupons-promotion-codes list-promotion-codes
40874
41482
  hyperline coupons-promotion-codes list-promotion-codes --take <take> --coupon-id <coupon_id>`).action(async (opts) => {
@@ -40882,10 +41490,6 @@ Examples:
40882
41490
  args.coupon_id = opts.couponId;
40883
41491
  if (opts["couponId.not"] !== void 0)
40884
41492
  args.coupon_id__not = opts["couponId.not"];
40885
- if (opts["couponId.isNull"] !== void 0)
40886
- args.coupon_id__isNull = opts["couponId.isNull"];
40887
- if (opts["couponId.isNotNull"] !== void 0)
40888
- args.coupon_id__isNotNull = opts["couponId.isNotNull"];
40889
41493
  if (opts["couponId.equals"] !== void 0)
40890
41494
  args.coupon_id__equals = opts["couponId.equals"];
40891
41495
  if (opts["couponId.contains"] !== void 0)
@@ -40907,8 +41511,6 @@ Examples:
40907
41511
  "skip",
40908
41512
  "coupon_id",
40909
41513
  "coupon_id__not",
40910
- "coupon_id__isNull",
40911
- "coupon_id__isNotNull",
40912
41514
  "coupon_id__equals",
40913
41515
  "coupon_id__contains",
40914
41516
  "coupon_id__startsWith",
@@ -41162,7 +41764,7 @@ Examples:
41162
41764
  // build/commands/generated/customers.js
41163
41765
  function registerCustomersCommands(parent) {
41164
41766
  const resource = parent.command("customers").description("Manage customers");
41165
- 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>", `
41767
+ 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>", `
41166
41768
  Verification status of the customer tax ID.
41167
41769
 
41168
41770
  - \`valid\`: Tax ID has been verified and is valid.
@@ -41170,7 +41772,7 @@ Verification status of the customer tax ID.
41170
41772
  - \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
41171
41773
  - \`unverified\`: Tax ID has not been verified yet.
41172
41774
  - \`unsupported\`: Tax ID verification for this type not supported yet.
41173
- `).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).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.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).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("--country <value>", `country`).option("--country.not <value>", `country__not`).option("--country.is-null <value>", `country__isNull`).option("--country.is-not-null <value>", `country__isNotNull`).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("--external-id <value>", `external_id`).option("--external-id.not <value>", `external_id__not`).option("--external-id.is-null <value>", `external_id__isNull`).option("--external-id.is-not-null <value>", `external_id__isNotNull`).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("--billing-email <value>", `billing_email`).option("--billing-email.not <value>", `billing_email__not`).option("--billing-email.is-null <value>", `billing_email__isNull`).option("--billing-email.is-not-null <value>", `billing_email__isNotNull`).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("--search <value>", `search`).option("--tax-id <value>", `tax_id`).option("--tax-id.not <value>", `tax_id__not`).option("--tax-id.is-null <value>", `tax_id__isNull`).option("--tax-id.is-not-null <value>", `tax_id__isNotNull`).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("--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.is-null <value>", `invoicing_entity_id__isNull`).option("--invoicing-entity-id.is-not-null <value>", `invoicing_entity_id__isNotNull`).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.is-null <value>", `created_at__isNull`).option("--created-at.is-not-null <value>", `created_at__isNotNull`).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.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).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", `
41775
+ `).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", `
41174
41776
  Examples:
41175
41777
  hyperline customers list
41176
41778
  hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -41194,10 +41796,6 @@ Examples:
41194
41796
  args.name = opts.name;
41195
41797
  if (opts["name.not"] !== void 0)
41196
41798
  args.name__not = opts["name.not"];
41197
- if (opts["name.isNull"] !== void 0)
41198
- args.name__isNull = opts["name.isNull"];
41199
- if (opts["name.isNotNull"] !== void 0)
41200
- args.name__isNotNull = opts["name.isNotNull"];
41201
41799
  if (opts["name.equals"] !== void 0)
41202
41800
  args.name__equals = opts["name.equals"];
41203
41801
  if (opts["name.contains"] !== void 0)
@@ -41218,10 +41816,6 @@ Examples:
41218
41816
  args.currency = opts.currency;
41219
41817
  if (opts["currency.not"] !== void 0)
41220
41818
  args.currency__not = opts["currency.not"];
41221
- if (opts["currency.isNull"] !== void 0)
41222
- args.currency__isNull = opts["currency.isNull"];
41223
- if (opts["currency.isNotNull"] !== void 0)
41224
- args.currency__isNotNull = opts["currency.isNotNull"];
41225
41819
  if (opts["currency.equals"] !== void 0)
41226
41820
  args.currency__equals = opts["currency.equals"];
41227
41821
  if (opts["currency.contains"] !== void 0)
@@ -41230,14 +41824,14 @@ Examples:
41230
41824
  args.currency__startsWith = opts["currency.startsWith"];
41231
41825
  if (opts["currency.endWith"] !== void 0)
41232
41826
  args.currency__endWith = opts["currency.endWith"];
41827
+ if (opts["currency.isNull"] !== void 0)
41828
+ args.currency__isNull = opts["currency.isNull"];
41829
+ if (opts["currency.isNotNull"] !== void 0)
41830
+ args.currency__isNotNull = opts["currency.isNotNull"];
41233
41831
  if (opts.country !== void 0)
41234
41832
  args.country = opts.country;
41235
41833
  if (opts["country.not"] !== void 0)
41236
41834
  args.country__not = opts["country.not"];
41237
- if (opts["country.isNull"] !== void 0)
41238
- args.country__isNull = opts["country.isNull"];
41239
- if (opts["country.isNotNull"] !== void 0)
41240
- args.country__isNotNull = opts["country.isNotNull"];
41241
41835
  if (opts["country.equals"] !== void 0)
41242
41836
  args.country__equals = opts["country.equals"];
41243
41837
  if (opts["country.contains"] !== void 0)
@@ -41246,14 +41840,14 @@ Examples:
41246
41840
  args.country__startsWith = opts["country.startsWith"];
41247
41841
  if (opts["country.endWith"] !== void 0)
41248
41842
  args.country__endWith = opts["country.endWith"];
41843
+ if (opts["country.isNull"] !== void 0)
41844
+ args.country__isNull = opts["country.isNull"];
41845
+ if (opts["country.isNotNull"] !== void 0)
41846
+ args.country__isNotNull = opts["country.isNotNull"];
41249
41847
  if (opts.externalId !== void 0)
41250
41848
  args.external_id = opts.externalId;
41251
41849
  if (opts["externalId.not"] !== void 0)
41252
41850
  args.external_id__not = opts["externalId.not"];
41253
- if (opts["externalId.isNull"] !== void 0)
41254
- args.external_id__isNull = opts["externalId.isNull"];
41255
- if (opts["externalId.isNotNull"] !== void 0)
41256
- args.external_id__isNotNull = opts["externalId.isNotNull"];
41257
41851
  if (opts["externalId.equals"] !== void 0)
41258
41852
  args.external_id__equals = opts["externalId.equals"];
41259
41853
  if (opts["externalId.contains"] !== void 0)
@@ -41262,14 +41856,14 @@ Examples:
41262
41856
  args.external_id__startsWith = opts["externalId.startsWith"];
41263
41857
  if (opts["externalId.endWith"] !== void 0)
41264
41858
  args.external_id__endWith = opts["externalId.endWith"];
41859
+ if (opts["externalId.isNull"] !== void 0)
41860
+ args.external_id__isNull = opts["externalId.isNull"];
41861
+ if (opts["externalId.isNotNull"] !== void 0)
41862
+ args.external_id__isNotNull = opts["externalId.isNotNull"];
41265
41863
  if (opts.billingEmail !== void 0)
41266
41864
  args.billing_email = opts.billingEmail;
41267
41865
  if (opts["billingEmail.not"] !== void 0)
41268
41866
  args.billing_email__not = opts["billingEmail.not"];
41269
- if (opts["billingEmail.isNull"] !== void 0)
41270
- args.billing_email__isNull = opts["billingEmail.isNull"];
41271
- if (opts["billingEmail.isNotNull"] !== void 0)
41272
- args.billing_email__isNotNull = opts["billingEmail.isNotNull"];
41273
41867
  if (opts["billingEmail.equals"] !== void 0)
41274
41868
  args.billing_email__equals = opts["billingEmail.equals"];
41275
41869
  if (opts["billingEmail.contains"] !== void 0)
@@ -41278,16 +41872,16 @@ Examples:
41278
41872
  args.billing_email__startsWith = opts["billingEmail.startsWith"];
41279
41873
  if (opts["billingEmail.endWith"] !== void 0)
41280
41874
  args.billing_email__endWith = opts["billingEmail.endWith"];
41875
+ if (opts["billingEmail.isNull"] !== void 0)
41876
+ args.billing_email__isNull = opts["billingEmail.isNull"];
41877
+ if (opts["billingEmail.isNotNull"] !== void 0)
41878
+ args.billing_email__isNotNull = opts["billingEmail.isNotNull"];
41281
41879
  if (opts.search !== void 0)
41282
41880
  args.search = opts.search;
41283
41881
  if (opts.taxId !== void 0)
41284
41882
  args.tax_id = opts.taxId;
41285
41883
  if (opts["taxId.not"] !== void 0)
41286
41884
  args.tax_id__not = opts["taxId.not"];
41287
- if (opts["taxId.isNull"] !== void 0)
41288
- args.tax_id__isNull = opts["taxId.isNull"];
41289
- if (opts["taxId.isNotNull"] !== void 0)
41290
- args.tax_id__isNotNull = opts["taxId.isNotNull"];
41291
41885
  if (opts["taxId.equals"] !== void 0)
41292
41886
  args.tax_id__equals = opts["taxId.equals"];
41293
41887
  if (opts["taxId.contains"] !== void 0)
@@ -41296,6 +41890,10 @@ Examples:
41296
41890
  args.tax_id__startsWith = opts["taxId.startsWith"];
41297
41891
  if (opts["taxId.endWith"] !== void 0)
41298
41892
  args.tax_id__endWith = opts["taxId.endWith"];
41893
+ if (opts["taxId.isNull"] !== void 0)
41894
+ args.tax_id__isNull = opts["taxId.isNull"];
41895
+ if (opts["taxId.isNotNull"] !== void 0)
41896
+ args.tax_id__isNotNull = opts["taxId.isNotNull"];
41299
41897
  if (opts.subscriptionStatus !== void 0)
41300
41898
  args.subscription_status = opts.subscriptionStatus;
41301
41899
  if (opts["subscriptionStatus.in"] !== void 0)
@@ -41304,10 +41902,6 @@ Examples:
41304
41902
  args.invoicing_entity_id = opts.invoicingEntityId;
41305
41903
  if (opts["invoicingEntityId.not"] !== void 0)
41306
41904
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
41307
- if (opts["invoicingEntityId.isNull"] !== void 0)
41308
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
41309
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
41310
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
41311
41905
  if (opts["invoicingEntityId.equals"] !== void 0)
41312
41906
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
41313
41907
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -41330,10 +41924,6 @@ Examples:
41330
41924
  args.created_at = opts.createdAt;
41331
41925
  if (opts["createdAt.not"] !== void 0)
41332
41926
  args.created_at__not = opts["createdAt.not"];
41333
- if (opts["createdAt.isNull"] !== void 0)
41334
- args.created_at__isNull = opts["createdAt.isNull"];
41335
- if (opts["createdAt.isNotNull"] !== void 0)
41336
- args.created_at__isNotNull = opts["createdAt.isNotNull"];
41337
41927
  if (opts["createdAt.equals"] !== void 0)
41338
41928
  args.created_at__equals = opts["createdAt.equals"];
41339
41929
  if (opts["createdAt.lt"] !== void 0)
@@ -41348,10 +41938,6 @@ Examples:
41348
41938
  args.updated_at = opts.updatedAt;
41349
41939
  if (opts["updatedAt.not"] !== void 0)
41350
41940
  args.updated_at__not = opts["updatedAt.not"];
41351
- if (opts["updatedAt.isNull"] !== void 0)
41352
- args.updated_at__isNull = opts["updatedAt.isNull"];
41353
- if (opts["updatedAt.isNotNull"] !== void 0)
41354
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
41355
41941
  if (opts["updatedAt.equals"] !== void 0)
41356
41942
  args.updated_at__equals = opts["updatedAt.equals"];
41357
41943
  if (opts["updatedAt.lt"] !== void 0)
@@ -41377,8 +41963,6 @@ Examples:
41377
41963
  "tax_id_status",
41378
41964
  "name",
41379
41965
  "name__not",
41380
- "name__isNull",
41381
- "name__isNotNull",
41382
41966
  "name__equals",
41383
41967
  "name__contains",
41384
41968
  "name__startsWith",
@@ -41389,51 +41973,49 @@ Examples:
41389
41973
  "status__in",
41390
41974
  "currency",
41391
41975
  "currency__not",
41392
- "currency__isNull",
41393
- "currency__isNotNull",
41394
41976
  "currency__equals",
41395
41977
  "currency__contains",
41396
41978
  "currency__startsWith",
41397
41979
  "currency__endWith",
41980
+ "currency__isNull",
41981
+ "currency__isNotNull",
41398
41982
  "country",
41399
41983
  "country__not",
41400
- "country__isNull",
41401
- "country__isNotNull",
41402
41984
  "country__equals",
41403
41985
  "country__contains",
41404
41986
  "country__startsWith",
41405
41987
  "country__endWith",
41988
+ "country__isNull",
41989
+ "country__isNotNull",
41406
41990
  "external_id",
41407
41991
  "external_id__not",
41408
- "external_id__isNull",
41409
- "external_id__isNotNull",
41410
41992
  "external_id__equals",
41411
41993
  "external_id__contains",
41412
41994
  "external_id__startsWith",
41413
41995
  "external_id__endWith",
41996
+ "external_id__isNull",
41997
+ "external_id__isNotNull",
41414
41998
  "billing_email",
41415
41999
  "billing_email__not",
41416
- "billing_email__isNull",
41417
- "billing_email__isNotNull",
41418
42000
  "billing_email__equals",
41419
42001
  "billing_email__contains",
41420
42002
  "billing_email__startsWith",
41421
42003
  "billing_email__endWith",
42004
+ "billing_email__isNull",
42005
+ "billing_email__isNotNull",
41422
42006
  "search",
41423
42007
  "tax_id",
41424
42008
  "tax_id__not",
41425
- "tax_id__isNull",
41426
- "tax_id__isNotNull",
41427
42009
  "tax_id__equals",
41428
42010
  "tax_id__contains",
41429
42011
  "tax_id__startsWith",
41430
42012
  "tax_id__endWith",
42013
+ "tax_id__isNull",
42014
+ "tax_id__isNotNull",
41431
42015
  "subscription_status",
41432
42016
  "subscription_status__in",
41433
42017
  "invoicing_entity_id",
41434
42018
  "invoicing_entity_id__not",
41435
- "invoicing_entity_id__isNull",
41436
- "invoicing_entity_id__isNotNull",
41437
42019
  "invoicing_entity_id__equals",
41438
42020
  "invoicing_entity_id__contains",
41439
42021
  "invoicing_entity_id__startsWith",
@@ -41445,8 +42027,6 @@ Examples:
41445
42027
  "integration_entity_id",
41446
42028
  "created_at",
41447
42029
  "created_at__not",
41448
- "created_at__isNull",
41449
- "created_at__isNotNull",
41450
42030
  "created_at__equals",
41451
42031
  "created_at__lt",
41452
42032
  "created_at__lte",
@@ -41454,8 +42034,6 @@ Examples:
41454
42034
  "created_at__gte",
41455
42035
  "updated_at",
41456
42036
  "updated_at__not",
41457
- "updated_at__isNull",
41458
- "updated_at__isNotNull",
41459
42037
  "updated_at__equals",
41460
42038
  "updated_at__lt",
41461
42039
  "updated_at__lte",
@@ -41492,13 +42070,13 @@ Customer type.
41492
42070
 
41493
42071
  - \`taxable\`: Taxes are automatically determined for the customer.
41494
42072
  - \`exempt\`: The customer is exempt from tax.
41495
- `).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>", `
42073
+ `).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>", `
41496
42074
  How customer invoices are issued from the parent organisation.
41497
42075
 
41498
42076
  - \`none\`: Invoices will keep being issued from this customer.
41499
42077
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
41500
42078
  - \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
41501
- `).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", `
42079
+ `).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", `
41502
42080
  Examples:
41503
42081
  hyperline customers create-customer
41504
42082
  hyperline customers create-customer --name <name> --type <type>
@@ -41543,6 +42121,8 @@ Examples:
41543
42121
  args.organisation_invoicing = opts.organisationInvoicing;
41544
42122
  if (opts.invoiceRemindersEnabled !== void 0)
41545
42123
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
42124
+ if (opts.consolidatedInvoicingEnabled !== void 0)
42125
+ args.consolidated_invoicing_enabled = opts.consolidatedInvoicingEnabled;
41546
42126
  if (opts.forceInvoiceDraft !== void 0)
41547
42127
  args.force_invoice_draft = opts.forceInvoiceDraft;
41548
42128
  if (opts.priceBookId !== void 0)
@@ -41629,13 +42209,13 @@ Customer type.
41629
42209
 
41630
42210
  - \`taxable\`: Taxes are automatically determined for the customer.
41631
42211
  - \`exempt\`: The customer is exempt from tax.
41632
- `).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>", `
42212
+ `).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>", `
41633
42213
  How customer invoices are issued from the parent organisation.
41634
42214
 
41635
42215
  - \`none\`: Invoices will keep being issued from this customer.
41636
42216
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
41637
42217
  - \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
41638
- `).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", `
42218
+ `).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", `
41639
42219
  Examples:
41640
42220
  hyperline customers update --id <id>
41641
42221
  hyperline customers update --id <id> --name <name> --type <type>
@@ -41684,6 +42264,8 @@ Examples:
41684
42264
  args.organisation_invoicing = opts.organisationInvoicing;
41685
42265
  if (opts.invoiceRemindersEnabled !== void 0)
41686
42266
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
42267
+ if (opts.consolidatedInvoicingEnabled !== void 0)
42268
+ args.consolidated_invoicing_enabled = opts.consolidatedInvoicingEnabled;
41687
42269
  if (opts.forceInvoiceDraft !== void 0)
41688
42270
  args.force_invoice_draft = opts.forceInvoiceDraft;
41689
42271
  if (opts.priceBookId !== void 0)
@@ -41915,7 +42497,13 @@ Examples:
41915
42497
  queryParamKeys: []
41916
42498
  });
41917
42499
  });
41918
- 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", `
42500
+ 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:
42501
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
42502
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
42503
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
42504
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
42505
+
42506
+ 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", `
41919
42507
  Examples:
41920
42508
  hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
41921
42509
  hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
@@ -41953,7 +42541,13 @@ Examples:
41953
42541
  queryParamKeys: []
41954
42542
  });
41955
42543
  });
41956
- 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", `
42544
+ 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:
42545
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
42546
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
42547
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
42548
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
42549
+
42550
+ 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", `
41957
42551
  Examples:
41958
42552
  hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
41959
42553
  hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
@@ -42024,7 +42618,7 @@ Examples:
42024
42618
  // build/commands/generated/customers-credits.js
42025
42619
  function registerCustomers_CreditsCommands(parent) {
42026
42620
  const resource = parent.command("customers-credits").description("Manage customers > credits");
42027
- resource.command("list").description(`List credit products across all customers with optional filters for product_id, customer_id, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--product-id <value>", `product_id`).option("--product-id.not <value>", `product_id__not`).option("--product-id.is-null <value>", `product_id__isNull`).option("--product-id.is-not-null <value>", `product_id__isNotNull`).option("--product-id.equals <value>", `product_id__equals`).option("--product-id.contains <value>", `product_id__contains`).option("--product-id.starts-with <value>", `product_id__startsWith`).option("--product-id.end-with <value>", `product_id__endWith`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).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("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).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", `
42621
+ resource.command("list").description(`List credit products across all customers with optional filters for product_id, customer_id, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--product-id <value>", `product_id`).option("--product-id.not <value>", `product_id__not`).option("--product-id.equals <value>", `product_id__equals`).option("--product-id.contains <value>", `product_id__contains`).option("--product-id.starts-with <value>", `product_id__startsWith`).option("--product-id.end-with <value>", `product_id__endWith`).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("--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", `
42028
42622
  Examples:
42029
42623
  hyperline customers-credits list
42030
42624
  hyperline customers-credits list --take <take> --product-id <product_id>`).action(async (opts) => {
@@ -42038,10 +42632,6 @@ Examples:
42038
42632
  args.product_id = opts.productId;
42039
42633
  if (opts["productId.not"] !== void 0)
42040
42634
  args.product_id__not = opts["productId.not"];
42041
- if (opts["productId.isNull"] !== void 0)
42042
- args.product_id__isNull = opts["productId.isNull"];
42043
- if (opts["productId.isNotNull"] !== void 0)
42044
- args.product_id__isNotNull = opts["productId.isNotNull"];
42045
42635
  if (opts["productId.equals"] !== void 0)
42046
42636
  args.product_id__equals = opts["productId.equals"];
42047
42637
  if (opts["productId.contains"] !== void 0)
@@ -42054,10 +42644,6 @@ Examples:
42054
42644
  args.customer_id = opts.customerId;
42055
42645
  if (opts["customerId.not"] !== void 0)
42056
42646
  args.customer_id__not = opts["customerId.not"];
42057
- if (opts["customerId.isNull"] !== void 0)
42058
- args.customer_id__isNull = opts["customerId.isNull"];
42059
- if (opts["customerId.isNotNull"] !== void 0)
42060
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
42061
42647
  if (opts["customerId.equals"] !== void 0)
42062
42648
  args.customer_id__equals = opts["customerId.equals"];
42063
42649
  if (opts["customerId.contains"] !== void 0)
@@ -42070,10 +42656,6 @@ Examples:
42070
42656
  args.updated_at = opts.updatedAt;
42071
42657
  if (opts["updatedAt.not"] !== void 0)
42072
42658
  args.updated_at__not = opts["updatedAt.not"];
42073
- if (opts["updatedAt.isNull"] !== void 0)
42074
- args.updated_at__isNull = opts["updatedAt.isNull"];
42075
- if (opts["updatedAt.isNotNull"] !== void 0)
42076
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
42077
42659
  if (opts["updatedAt.equals"] !== void 0)
42078
42660
  args.updated_at__equals = opts["updatedAt.equals"];
42079
42661
  if (opts["updatedAt.lt"] !== void 0)
@@ -42097,24 +42679,18 @@ Examples:
42097
42679
  "skip",
42098
42680
  "product_id",
42099
42681
  "product_id__not",
42100
- "product_id__isNull",
42101
- "product_id__isNotNull",
42102
42682
  "product_id__equals",
42103
42683
  "product_id__contains",
42104
42684
  "product_id__startsWith",
42105
42685
  "product_id__endWith",
42106
42686
  "customer_id",
42107
42687
  "customer_id__not",
42108
- "customer_id__isNull",
42109
- "customer_id__isNotNull",
42110
42688
  "customer_id__equals",
42111
42689
  "customer_id__contains",
42112
42690
  "customer_id__startsWith",
42113
42691
  "customer_id__endWith",
42114
42692
  "updated_at",
42115
42693
  "updated_at__not",
42116
- "updated_at__isNull",
42117
- "updated_at__isNotNull",
42118
42694
  "updated_at__equals",
42119
42695
  "updated_at__lt",
42120
42696
  "updated_at__lte",
@@ -42387,6 +42963,88 @@ Examples:
42387
42963
  });
42388
42964
  }
42389
42965
 
42966
+ // build/commands/generated/customers-features.js
42967
+ function registerCustomers_FeaturesCommands(parent) {
42968
+ const resource = parent.command("customers-features").description("Manage customers > features");
42969
+ resource.command("resolve-customer-features").description(`Resolve feature values for a customer.`).requiredOption("--id <value>", `id parameter`).option("--at <value>", `Resolution date.`).addHelpText("after", `
42970
+ Examples:
42971
+ hyperline customers-features resolve-customer-features --id <id>
42972
+ hyperline customers-features resolve-customer-features --id <id> --at <at>`).action(async (opts) => {
42973
+ const ctx = resource.parent?.opts()._ctx;
42974
+ if (!ctx) {
42975
+ process.stderr.write("Error: Not authenticated\n");
42976
+ process.exit(1);
42977
+ }
42978
+ const args = {};
42979
+ if (opts.id !== void 0)
42980
+ args.id = opts.id;
42981
+ if (opts.at !== void 0)
42982
+ args.at = opts.at;
42983
+ await ctx.execute({
42984
+ method: "GET",
42985
+ path: "/v1/customers/{id}/features",
42986
+ args,
42987
+ queryParamKeys: ["at"]
42988
+ });
42989
+ });
42990
+ resource.command("set-customer-feature").description(`Set a feature override for a customer.`).requiredOption("--id <value>", `id parameter`).requiredOption("--code <value>", `code parameter`).requiredOption("--value", `Feature value.`).option("--reason <value>", `Reason associated with a customer feature override.`).option("--expires-at <value>", `Expiration date of a customer feature override.`).addHelpText("after", `
42991
+ Examples:
42992
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value
42993
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value --reason <reason> --expires-at <expires_at>
42994
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value --output json`).action(async (opts) => {
42995
+ const ctx = resource.parent?.opts()._ctx;
42996
+ if (!ctx) {
42997
+ process.stderr.write("Error: Not authenticated\n");
42998
+ process.exit(1);
42999
+ }
43000
+ const args = {};
43001
+ if (opts.id !== void 0)
43002
+ args.id = opts.id;
43003
+ if (opts.code !== void 0)
43004
+ args.code = opts.code;
43005
+ if (opts.reason !== void 0)
43006
+ args.reason = opts.reason;
43007
+ if (opts.expiresAt !== void 0)
43008
+ args.expires_at = opts.expiresAt;
43009
+ if (opts.value !== void 0)
43010
+ args.value = true;
43011
+ await ctx.execute({
43012
+ method: "PUT",
43013
+ path: "/v1/customers/{id}/features/{code}",
43014
+ args,
43015
+ queryParamKeys: []
43016
+ });
43017
+ });
43018
+ resource.command("delete-customer-feature").description(`Delete a feature override from a customer.`).requiredOption("--id <value>", `id parameter`).requiredOption("--code <value>", `code parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
43019
+ Examples:
43020
+ hyperline customers-features delete-customer-feature --id <id> --code <code>
43021
+ hyperline customers-features delete-customer-feature --id <id> --code <code> --output json`).action(async (opts) => {
43022
+ const ctx = resource.parent?.opts()._ctx;
43023
+ if (!ctx) {
43024
+ process.stderr.write("Error: Not authenticated\n");
43025
+ process.exit(1);
43026
+ }
43027
+ const args = {};
43028
+ if (opts.id !== void 0)
43029
+ args.id = opts.id;
43030
+ if (opts.code !== void 0)
43031
+ args.code = opts.code;
43032
+ if (!opts.yes) {
43033
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
43034
+ if (!confirmed) {
43035
+ process.stdout.write("Aborted.\n");
43036
+ return;
43037
+ }
43038
+ }
43039
+ await ctx.execute({
43040
+ method: "DELETE",
43041
+ path: "/v1/customers/{id}/features/{code}",
43042
+ args,
43043
+ queryParamKeys: []
43044
+ });
43045
+ });
43046
+ }
43047
+
42390
43048
  // build/commands/generated/customers-payment-methods.js
42391
43049
  function registerCustomers_Payment_MethodsCommands(parent) {
42392
43050
  const resource = parent.command("customers-payment-methods").description("Manage customers > payment methods");
@@ -42771,65 +43429,281 @@ Examples:
42771
43429
  if (opts.fileType !== void 0)
42772
43430
  args.file_type = opts.fileType;
42773
43431
  await ctx.execute({
42774
- method: "POST",
42775
- path: "/v1/exports",
43432
+ method: "POST",
43433
+ path: "/v1/exports",
43434
+ args,
43435
+ queryParamKeys: []
43436
+ });
43437
+ });
43438
+ resource.command("list").description(`List the client's data exports (customers, invoices, etc.) with pagination. Use take/skip to page through results.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
43439
+ Examples:
43440
+ hyperline exports list
43441
+ hyperline exports list --take <take>`).action(async (opts) => {
43442
+ const ctx = resource.parent?.opts()._ctx;
43443
+ if (!ctx) {
43444
+ process.stderr.write("Error: Not authenticated\n");
43445
+ process.exit(1);
43446
+ }
43447
+ const args = {};
43448
+ if (opts.take !== void 0)
43449
+ args.take = Number(opts.take);
43450
+ if (opts.skip !== void 0)
43451
+ args.skip = Number(opts.skip);
43452
+ await ctx.execute({
43453
+ method: "GET",
43454
+ path: "/v1/exports",
43455
+ args,
43456
+ queryParamKeys: ["take", "skip"]
43457
+ });
43458
+ });
43459
+ resource.command("get").description(`Check the status of an export by ID. Status can be pending, processing, or completed. Use download_export to get the file once completed.`).requiredOption("--export-id <value>", `exportId parameter`).addHelpText("after", `
43460
+ Examples:
43461
+ hyperline exports get --export-id <exportId>`).action(async (opts) => {
43462
+ const ctx = resource.parent?.opts()._ctx;
43463
+ if (!ctx) {
43464
+ process.stderr.write("Error: Not authenticated\n");
43465
+ process.exit(1);
43466
+ }
43467
+ const args = {};
43468
+ if (opts.exportId !== void 0)
43469
+ args.exportId = opts.exportId;
43470
+ await ctx.execute({
43471
+ method: "GET",
43472
+ path: "/v1/exports/{exportId}",
43473
+ args,
43474
+ queryParamKeys: []
43475
+ });
43476
+ });
43477
+ resource.command("download").description(`Download the file for a completed export as a downloadable file. The HTTP client must follow redirects. Supports CSV, JSON, XLSX and ZIP formats depending on the export type.`).requiredOption("--export-id <value>", `exportId parameter`).addHelpText("after", `
43478
+ Examples:
43479
+ hyperline exports download --export-id <exportId>`).action(async (opts) => {
43480
+ const ctx = resource.parent?.opts()._ctx;
43481
+ if (!ctx) {
43482
+ process.stderr.write("Error: Not authenticated\n");
43483
+ process.exit(1);
43484
+ }
43485
+ const args = {};
43486
+ if (opts.exportId !== void 0)
43487
+ args.exportId = opts.exportId;
43488
+ await ctx.execute({
43489
+ method: "GET",
43490
+ path: "/v2/exports/{exportId}/download",
43491
+ args,
43492
+ queryParamKeys: []
43493
+ });
43494
+ });
43495
+ }
43496
+
43497
+ // build/commands/generated/features.js
43498
+ function registerFeaturesCommands(parent) {
43499
+ const resource = parent.command("features").description("Manage features");
43500
+ resource.command("list").description(`List feature definitions.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--code <value>", `code`).option("--code.not <value>", `code__not`).option("--code.equals <value>", `code__equals`).option("--code.contains <value>", `code__contains`).option("--code.starts-with <value>", `code__startsWith`).option("--code.end-with <value>", `code__endWith`).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("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--search <value>", `search`).addHelpText("after", `
43501
+ Examples:
43502
+ hyperline features list
43503
+ hyperline features list --take <take> --code <code>`).action(async (opts) => {
43504
+ const ctx = resource.parent?.opts()._ctx;
43505
+ if (!ctx) {
43506
+ process.stderr.write("Error: Not authenticated\n");
43507
+ process.exit(1);
43508
+ }
43509
+ const args = {};
43510
+ if (opts.code !== void 0)
43511
+ args.code = opts.code;
43512
+ if (opts["code.not"] !== void 0)
43513
+ args.code__not = opts["code.not"];
43514
+ if (opts["code.equals"] !== void 0)
43515
+ args.code__equals = opts["code.equals"];
43516
+ if (opts["code.contains"] !== void 0)
43517
+ args.code__contains = opts["code.contains"];
43518
+ if (opts["code.startsWith"] !== void 0)
43519
+ args.code__startsWith = opts["code.startsWith"];
43520
+ if (opts["code.endWith"] !== void 0)
43521
+ args.code__endWith = opts["code.endWith"];
43522
+ if (opts.name !== void 0)
43523
+ args.name = opts.name;
43524
+ if (opts["name.not"] !== void 0)
43525
+ args.name__not = opts["name.not"];
43526
+ if (opts["name.equals"] !== void 0)
43527
+ args.name__equals = opts["name.equals"];
43528
+ if (opts["name.contains"] !== void 0)
43529
+ args.name__contains = opts["name.contains"];
43530
+ if (opts["name.startsWith"] !== void 0)
43531
+ args.name__startsWith = opts["name.startsWith"];
43532
+ if (opts["name.endWith"] !== void 0)
43533
+ args.name__endWith = opts["name.endWith"];
43534
+ if (opts.status !== void 0)
43535
+ args.status = opts.status;
43536
+ if (opts["status.in"] !== void 0)
43537
+ args.status__in = opts["status.in"];
43538
+ if (opts.search !== void 0)
43539
+ args.search = opts.search;
43540
+ if (opts.take !== void 0)
43541
+ args.take = Number(opts.take);
43542
+ if (opts.skip !== void 0)
43543
+ args.skip = Number(opts.skip);
43544
+ await ctx.execute({
43545
+ method: "GET",
43546
+ path: "/v1/features",
43547
+ args,
43548
+ queryParamKeys: [
43549
+ "take",
43550
+ "skip",
43551
+ "code",
43552
+ "code__not",
43553
+ "code__equals",
43554
+ "code__contains",
43555
+ "code__startsWith",
43556
+ "code__endWith",
43557
+ "name",
43558
+ "name__not",
43559
+ "name__equals",
43560
+ "name__contains",
43561
+ "name__startsWith",
43562
+ "name__endWith",
43563
+ "status",
43564
+ "status__in",
43565
+ "search"
43566
+ ]
43567
+ });
43568
+ });
43569
+ resource.command("create").description(`Create a feature definition.`).requiredOption("--code <value>", `Feature code.`).requiredOption("--name <value>", `Feature name.`).option("--description <value>", `Feature description.`).requiredOption("--value-type <value>", `Type of feature value.`).requiredOption("--default-value", `Default value used when no product or customer feature value applies. Null means no default.`).option("--resolution-strategy <value>", `Strategy used to combine multiple product feature values for number features.`).addHelpText("after", `
43570
+ Examples:
43571
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value
43572
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value --description <description> --resolution-strategy <resolution_strategy>
43573
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value --output json`).action(async (opts) => {
43574
+ const ctx = resource.parent?.opts()._ctx;
43575
+ if (!ctx) {
43576
+ process.stderr.write("Error: Not authenticated\n");
43577
+ process.exit(1);
43578
+ }
43579
+ const args = {};
43580
+ if (opts.code !== void 0)
43581
+ args.code = opts.code;
43582
+ if (opts.name !== void 0)
43583
+ args.name = opts.name;
43584
+ if (opts.description !== void 0)
43585
+ args.description = opts.description;
43586
+ if (opts.valueType !== void 0)
43587
+ args.value_type = opts.valueType;
43588
+ if (opts.resolutionStrategy !== void 0)
43589
+ args.resolution_strategy = opts.resolutionStrategy;
43590
+ if (opts.defaultValue !== void 0)
43591
+ args.default_value = true;
43592
+ await ctx.execute({
43593
+ method: "POST",
43594
+ path: "/v1/features",
43595
+ args,
43596
+ queryParamKeys: []
43597
+ });
43598
+ });
43599
+ resource.command("get").description(`Retrieve a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
43600
+ Examples:
43601
+ hyperline features get --code <code>`).action(async (opts) => {
43602
+ const ctx = resource.parent?.opts()._ctx;
43603
+ if (!ctx) {
43604
+ process.stderr.write("Error: Not authenticated\n");
43605
+ process.exit(1);
43606
+ }
43607
+ const args = {};
43608
+ if (opts.code !== void 0)
43609
+ args.code = opts.code;
43610
+ await ctx.execute({
43611
+ method: "GET",
43612
+ path: "/v1/features/{code}",
43613
+ args,
43614
+ queryParamKeys: []
43615
+ });
43616
+ });
43617
+ resource.command("update").description(`Update a feature definition.`).requiredOption("--code <value>", `code parameter`).option("--name <value>", `Feature name.`).option("--description <value>", `Feature description.`).option("--value-type <value>", `value_type`).option("--default-value", `Default value used when no product or customer feature value applies. Null means no default.`).option("--resolution-strategy <value>", `Strategy used to combine multiple product feature values for number features.`).addHelpText("after", `
43618
+ Examples:
43619
+ hyperline features update --code <code>
43620
+ hyperline features update --code <code> --name <name> --description <description>
43621
+ hyperline features update --code <code> --output json`).action(async (opts) => {
43622
+ const ctx = resource.parent?.opts()._ctx;
43623
+ if (!ctx) {
43624
+ process.stderr.write("Error: Not authenticated\n");
43625
+ process.exit(1);
43626
+ }
43627
+ const args = {};
43628
+ if (opts.code !== void 0)
43629
+ args.code = opts.code;
43630
+ if (opts.name !== void 0)
43631
+ args.name = opts.name;
43632
+ if (opts.description !== void 0)
43633
+ args.description = opts.description;
43634
+ if (opts.valueType !== void 0)
43635
+ args.value_type = opts.valueType;
43636
+ if (opts.resolutionStrategy !== void 0)
43637
+ args.resolution_strategy = opts.resolutionStrategy;
43638
+ if (opts.defaultValue !== void 0)
43639
+ args.default_value = true;
43640
+ await ctx.execute({
43641
+ method: "PUT",
43642
+ path: "/v1/features/{code}",
42776
43643
  args,
42777
43644
  queryParamKeys: []
42778
43645
  });
42779
43646
  });
42780
- resource.command("list").description(`List the client's data exports (customers, invoices, etc.) with pagination. Use take/skip to page through results.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
43647
+ resource.command("archive").description(`Archive a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
42781
43648
  Examples:
42782
- hyperline exports list
42783
- hyperline exports list --take <take>`).action(async (opts) => {
43649
+ hyperline features archive --code <code>
43650
+ hyperline features archive --code <code> --output json`).action(async (opts) => {
42784
43651
  const ctx = resource.parent?.opts()._ctx;
42785
43652
  if (!ctx) {
42786
43653
  process.stderr.write("Error: Not authenticated\n");
42787
43654
  process.exit(1);
42788
43655
  }
42789
43656
  const args = {};
42790
- if (opts.take !== void 0)
42791
- args.take = Number(opts.take);
42792
- if (opts.skip !== void 0)
42793
- args.skip = Number(opts.skip);
43657
+ if (opts.code !== void 0)
43658
+ args.code = opts.code;
42794
43659
  await ctx.execute({
42795
- method: "GET",
42796
- path: "/v1/exports",
43660
+ method: "PUT",
43661
+ path: "/v1/features/{code}/archive",
42797
43662
  args,
42798
- queryParamKeys: ["take", "skip"]
43663
+ queryParamKeys: []
42799
43664
  });
42800
43665
  });
42801
- resource.command("get").description(`Check the status of an export by ID. Status can be pending, processing, or completed. Use download_export to get the file once completed.`).requiredOption("--export-id <value>", `exportId parameter`).addHelpText("after", `
43666
+ resource.command("delete").description(`Delete an archived feature definition that is not in use.`).requiredOption("--code <value>", `code parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
42802
43667
  Examples:
42803
- hyperline exports get --export-id <exportId>`).action(async (opts) => {
43668
+ hyperline features delete --code <code>
43669
+ hyperline features delete --code <code> --output json`).action(async (opts) => {
42804
43670
  const ctx = resource.parent?.opts()._ctx;
42805
43671
  if (!ctx) {
42806
43672
  process.stderr.write("Error: Not authenticated\n");
42807
43673
  process.exit(1);
42808
43674
  }
42809
43675
  const args = {};
42810
- if (opts.exportId !== void 0)
42811
- args.exportId = opts.exportId;
43676
+ if (opts.code !== void 0)
43677
+ args.code = opts.code;
43678
+ if (!opts.yes) {
43679
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
43680
+ if (!confirmed) {
43681
+ process.stdout.write("Aborted.\n");
43682
+ return;
43683
+ }
43684
+ }
42812
43685
  await ctx.execute({
42813
- method: "GET",
42814
- path: "/v1/exports/{exportId}",
43686
+ method: "DELETE",
43687
+ path: "/v1/features/{code}",
42815
43688
  args,
42816
43689
  queryParamKeys: []
42817
43690
  });
42818
43691
  });
42819
- resource.command("download").description(`Download the file for a completed export as a downloadable file. The HTTP client must follow redirects. Supports CSV, JSON, XLSX and ZIP formats depending on the export type.`).requiredOption("--export-id <value>", `exportId parameter`).addHelpText("after", `
43692
+ resource.command("unarchive").description(`Unarchive a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
42820
43693
  Examples:
42821
- hyperline exports download --export-id <exportId>`).action(async (opts) => {
43694
+ hyperline features unarchive --code <code>
43695
+ hyperline features unarchive --code <code> --output json`).action(async (opts) => {
42822
43696
  const ctx = resource.parent?.opts()._ctx;
42823
43697
  if (!ctx) {
42824
43698
  process.stderr.write("Error: Not authenticated\n");
42825
43699
  process.exit(1);
42826
43700
  }
42827
43701
  const args = {};
42828
- if (opts.exportId !== void 0)
42829
- args.exportId = opts.exportId;
43702
+ if (opts.code !== void 0)
43703
+ args.code = opts.code;
42830
43704
  await ctx.execute({
42831
- method: "GET",
42832
- path: "/v2/exports/{exportId}/download",
43705
+ method: "PUT",
43706
+ path: "/v1/features/{code}/unarchive",
42833
43707
  args,
42834
43708
  queryParamKeys: []
42835
43709
  });
@@ -42857,7 +43731,7 @@ Examples:
42857
43731
  queryParamKeys: []
42858
43732
  });
42859
43733
  });
42860
- resource.command("list").description(`List uploaded files with optional filters for name and customer_id. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).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("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).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`).addHelpText("after", `
43734
+ resource.command("list").description(`List uploaded files with optional filters for name and customer_id. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).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("--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`).addHelpText("after", `
42861
43735
  Examples:
42862
43736
  hyperline files list
42863
43737
  hyperline files list --take <take> --name <name>`).action(async (opts) => {
@@ -42871,10 +43745,6 @@ Examples:
42871
43745
  args.name = opts.name;
42872
43746
  if (opts["name.not"] !== void 0)
42873
43747
  args.name__not = opts["name.not"];
42874
- if (opts["name.isNull"] !== void 0)
42875
- args.name__isNull = opts["name.isNull"];
42876
- if (opts["name.isNotNull"] !== void 0)
42877
- args.name__isNotNull = opts["name.isNotNull"];
42878
43748
  if (opts["name.equals"] !== void 0)
42879
43749
  args.name__equals = opts["name.equals"];
42880
43750
  if (opts["name.contains"] !== void 0)
@@ -42887,10 +43757,6 @@ Examples:
42887
43757
  args.customer_id = opts.customerId;
42888
43758
  if (opts["customerId.not"] !== void 0)
42889
43759
  args.customer_id__not = opts["customerId.not"];
42890
- if (opts["customerId.isNull"] !== void 0)
42891
- args.customer_id__isNull = opts["customerId.isNull"];
42892
- if (opts["customerId.isNotNull"] !== void 0)
42893
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
42894
43760
  if (opts["customerId.equals"] !== void 0)
42895
43761
  args.customer_id__equals = opts["customerId.equals"];
42896
43762
  if (opts["customerId.contains"] !== void 0)
@@ -42899,6 +43765,10 @@ Examples:
42899
43765
  args.customer_id__startsWith = opts["customerId.startsWith"];
42900
43766
  if (opts["customerId.endWith"] !== void 0)
42901
43767
  args.customer_id__endWith = opts["customerId.endWith"];
43768
+ if (opts["customerId.isNull"] !== void 0)
43769
+ args.customer_id__isNull = opts["customerId.isNull"];
43770
+ if (opts["customerId.isNotNull"] !== void 0)
43771
+ args.customer_id__isNotNull = opts["customerId.isNotNull"];
42902
43772
  if (opts.take !== void 0)
42903
43773
  args.take = Number(opts.take);
42904
43774
  if (opts.skip !== void 0)
@@ -42912,27 +43782,25 @@ Examples:
42912
43782
  "skip",
42913
43783
  "name",
42914
43784
  "name__not",
42915
- "name__isNull",
42916
- "name__isNotNull",
42917
43785
  "name__equals",
42918
43786
  "name__contains",
42919
43787
  "name__startsWith",
42920
43788
  "name__endWith",
42921
43789
  "customer_id",
42922
43790
  "customer_id__not",
42923
- "customer_id__isNull",
42924
- "customer_id__isNotNull",
42925
43791
  "customer_id__equals",
42926
43792
  "customer_id__contains",
42927
43793
  "customer_id__startsWith",
42928
- "customer_id__endWith"
43794
+ "customer_id__endWith",
43795
+ "customer_id__isNull",
43796
+ "customer_id__isNotNull"
42929
43797
  ]
42930
43798
  });
42931
43799
  });
42932
- 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", `
43800
+ 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", `
42933
43801
  Examples:
42934
- hyperline files create --name <name> --customer-id <customer_id>
42935
- hyperline files create --name <name> --customer-id <customer_id> --output json`).action(async (opts) => {
43802
+ hyperline files create --name <name> --customer-id <customer_id> --file <path>
43803
+ hyperline files create --name <name> --customer-id <customer_id> --file <path> --output json`).action(async (opts) => {
42936
43804
  const ctx = resource.parent?.opts()._ctx;
42937
43805
  if (!ctx) {
42938
43806
  process.stderr.write("Error: Not authenticated\n");
@@ -42943,11 +43811,15 @@ Examples:
42943
43811
  args.name = opts.name;
42944
43812
  if (opts.customerId !== void 0)
42945
43813
  args.customer_id = opts.customerId;
43814
+ const files = {};
43815
+ if (opts.file !== void 0)
43816
+ files.file = [opts.file].flat();
42946
43817
  await ctx.execute({
42947
43818
  method: "POST",
42948
43819
  path: "/v1/files",
42949
43820
  args,
42950
- queryParamKeys: []
43821
+ queryParamKeys: [],
43822
+ files
42951
43823
  });
42952
43824
  });
42953
43825
  resource.command("delete").description(`Permanently delete a file by ID.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
@@ -42981,7 +43853,7 @@ Examples:
42981
43853
  // build/commands/generated/invoices.js
42982
43854
  function registerInvoicesCommands(parent) {
42983
43855
  const resource = parent.command("invoices").description("Manage invoices");
42984
- resource.command("list").description(`List invoices with filters for type, status, customer_id, customer_external_id, subscription_id, invoicing_entity_id, invoice_number, period dates, emission_date, due_date, and updated_at. Sortable by created_at or emitted_at. By default, open invoices are excluded. 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("--type <value>", `type`).option("--type.in <value>", `type__in`).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.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).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-external-id <value>", `customer_external_id`).option("--subscription-id <value>", `subscription_id`).option("--subscription-id.not <value>", `subscription_id__not`).option("--subscription-id.is-null <value>", `subscription_id__isNull`).option("--subscription-id.is-not-null <value>", `subscription_id__isNotNull`).option("--subscription-id.equals <value>", `subscription_id__equals`).option("--subscription-id.contains <value>", `subscription_id__contains`).option("--subscription-id.starts-with <value>", `subscription_id__startsWith`).option("--subscription-id.end-with <value>", `subscription_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.is-null <value>", `invoicing_entity_id__isNull`).option("--invoicing-entity-id.is-not-null <value>", `invoicing_entity_id__isNotNull`).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("--invoice-number <value>", `invoice_number`).option("--invoice-number.not <value>", `invoice_number__not`).option("--invoice-number.is-null <value>", `invoice_number__isNull`).option("--invoice-number.is-not-null <value>", `invoice_number__isNotNull`).option("--invoice-number.equals <value>", `invoice_number__equals`).option("--invoice-number.contains <value>", `invoice_number__contains`).option("--invoice-number.starts-with <value>", `invoice_number__startsWith`).option("--invoice-number.end-with <value>", `invoice_number__endWith`).option("--original-invoice-id <value>", `original_invoice_id`).option("--original-invoice-id.not <value>", `original_invoice_id__not`).option("--original-invoice-id.is-null <value>", `original_invoice_id__isNull`).option("--original-invoice-id.is-not-null <value>", `original_invoice_id__isNotNull`).option("--original-invoice-id.equals <value>", `original_invoice_id__equals`).option("--original-invoice-id.contains <value>", `original_invoice_id__contains`).option("--original-invoice-id.starts-with <value>", `original_invoice_id__startsWith`).option("--original-invoice-id.end-with <value>", `original_invoice_id__endWith`).option("--original-invoice-number <value>", `original_invoice_number`).option("--original-invoice-number.not <value>", `original_invoice_number__not`).option("--original-invoice-number.is-null <value>", `original_invoice_number__isNull`).option("--original-invoice-number.is-not-null <value>", `original_invoice_number__isNotNull`).option("--original-invoice-number.equals <value>", `original_invoice_number__equals`).option("--original-invoice-number.contains <value>", `original_invoice_number__contains`).option("--original-invoice-number.starts-with <value>", `original_invoice_number__startsWith`).option("--original-invoice-number.end-with <value>", `original_invoice_number__endWith`).option("--line-item-id <value>", `line_item_id`).option("--period-start <value>", `period_start`).option("--period-start.not <value>", `period_start__not`).option("--period-start.is-null <value>", `period_start__isNull`).option("--period-start.is-not-null <value>", `period_start__isNotNull`).option("--period-start.equals <value>", `period_start__equals`).option("--period-start.lt <value>", `period_start__lt`).option("--period-start.lte <value>", `period_start__lte`).option("--period-start.gt <value>", `period_start__gt`).option("--period-start.gte <value>", `period_start__gte`).option("--period-end <value>", `period_end`).option("--period-end.not <value>", `period_end__not`).option("--period-end.is-null <value>", `period_end__isNull`).option("--period-end.is-not-null <value>", `period_end__isNotNull`).option("--period-end.equals <value>", `period_end__equals`).option("--period-end.lt <value>", `period_end__lt`).option("--period-end.lte <value>", `period_end__lte`).option("--period-end.gt <value>", `period_end__gt`).option("--period-end.gte <value>", `period_end__gte`).option("--issued-at <value>", `issued_at`).option("--issued-at.not <value>", `issued_at__not`).option("--issued-at.is-null <value>", `issued_at__isNull`).option("--issued-at.is-not-null <value>", `issued_at__isNotNull`).option("--issued-at.equals <value>", `issued_at__equals`).option("--issued-at.lt <value>", `issued_at__lt`).option("--issued-at.lte <value>", `issued_at__lte`).option("--issued-at.gt <value>", `issued_at__gt`).option("--issued-at.gte <value>", `issued_at__gte`).option("--due-at <value>", `due_at`).option("--due-at.not <value>", `due_at__not`).option("--due-at.is-null <value>", `due_at__isNull`).option("--due-at.is-not-null <value>", `due_at__isNotNull`).option("--due-at.equals <value>", `due_at__equals`).option("--due-at.lt <value>", `due_at__lt`).option("--due-at.lte <value>", `due_at__lte`).option("--due-at.gt <value>", `due_at__gt`).option("--due-at.gte <value>", `due_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).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", `
43856
+ resource.command("list").description(`List invoices with filters for type, status, customer_id, customer_external_id, subscription_id, invoicing_entity_id, invoice_number, period dates, emission_date, due_date, and updated_at. Sortable by created_at or emitted_at. By default, open invoices are excluded. 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("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--origin <value>", `origin`).option("--origin.in <value>", `origin__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("--customer-external-id <value>", `customer_external_id`).option("--subscription-id <value>", `subscription_id`).option("--subscription-id.not <value>", `subscription_id__not`).option("--subscription-id.equals <value>", `subscription_id__equals`).option("--subscription-id.contains <value>", `subscription_id__contains`).option("--subscription-id.starts-with <value>", `subscription_id__startsWith`).option("--subscription-id.end-with <value>", `subscription_id__endWith`).option("--subscription-id.is-null <value>", `subscription_id__isNull`).option("--subscription-id.is-not-null <value>", `subscription_id__isNotNull`).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("--invoice-number <value>", `invoice_number`).option("--invoice-number.not <value>", `invoice_number__not`).option("--invoice-number.equals <value>", `invoice_number__equals`).option("--invoice-number.contains <value>", `invoice_number__contains`).option("--invoice-number.starts-with <value>", `invoice_number__startsWith`).option("--invoice-number.end-with <value>", `invoice_number__endWith`).option("--original-invoice-id <value>", `original_invoice_id`).option("--original-invoice-id.not <value>", `original_invoice_id__not`).option("--original-invoice-id.equals <value>", `original_invoice_id__equals`).option("--original-invoice-id.contains <value>", `original_invoice_id__contains`).option("--original-invoice-id.starts-with <value>", `original_invoice_id__startsWith`).option("--original-invoice-id.end-with <value>", `original_invoice_id__endWith`).option("--original-invoice-id.is-null <value>", `original_invoice_id__isNull`).option("--original-invoice-id.is-not-null <value>", `original_invoice_id__isNotNull`).option("--original-invoice-number <value>", `original_invoice_number`).option("--original-invoice-number.not <value>", `original_invoice_number__not`).option("--original-invoice-number.equals <value>", `original_invoice_number__equals`).option("--original-invoice-number.contains <value>", `original_invoice_number__contains`).option("--original-invoice-number.starts-with <value>", `original_invoice_number__startsWith`).option("--original-invoice-number.end-with <value>", `original_invoice_number__endWith`).option("--original-invoice-number.is-null <value>", `original_invoice_number__isNull`).option("--original-invoice-number.is-not-null <value>", `original_invoice_number__isNotNull`).option("--line-item-id <value>", `line_item_id`).option("--period-start <value>", `period_start`).option("--period-start.not <value>", `period_start__not`).option("--period-start.equals <value>", `period_start__equals`).option("--period-start.lt <value>", `period_start__lt`).option("--period-start.lte <value>", `period_start__lte`).option("--period-start.gt <value>", `period_start__gt`).option("--period-start.gte <value>", `period_start__gte`).option("--period-start.is-null <value>", `period_start__isNull`).option("--period-start.is-not-null <value>", `period_start__isNotNull`).option("--period-end <value>", `period_end`).option("--period-end.not <value>", `period_end__not`).option("--period-end.equals <value>", `period_end__equals`).option("--period-end.lt <value>", `period_end__lt`).option("--period-end.lte <value>", `period_end__lte`).option("--period-end.gt <value>", `period_end__gt`).option("--period-end.gte <value>", `period_end__gte`).option("--period-end.is-null <value>", `period_end__isNull`).option("--period-end.is-not-null <value>", `period_end__isNotNull`).option("--issued-at <value>", `issued_at`).option("--issued-at.not <value>", `issued_at__not`).option("--issued-at.equals <value>", `issued_at__equals`).option("--issued-at.lt <value>", `issued_at__lt`).option("--issued-at.lte <value>", `issued_at__lte`).option("--issued-at.gt <value>", `issued_at__gt`).option("--issued-at.gte <value>", `issued_at__gte`).option("--due-at <value>", `due_at`).option("--due-at.not <value>", `due_at__not`).option("--due-at.equals <value>", `due_at__equals`).option("--due-at.lt <value>", `due_at__lt`).option("--due-at.lte <value>", `due_at__lte`).option("--due-at.gt <value>", `due_at__gt`).option("--due-at.gte <value>", `due_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", `
42985
43857
  Examples:
42986
43858
  hyperline invoices list
42987
43859
  hyperline invoices list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -43007,14 +43879,14 @@ Examples:
43007
43879
  args.status = opts.status;
43008
43880
  if (opts["status.in"] !== void 0)
43009
43881
  args.status__in = opts["status.in"];
43882
+ if (opts.origin !== void 0)
43883
+ args.origin = opts.origin;
43884
+ if (opts["origin.in"] !== void 0)
43885
+ args.origin__in = opts["origin.in"];
43010
43886
  if (opts.customerId !== void 0)
43011
43887
  args.customer_id = opts.customerId;
43012
43888
  if (opts["customerId.not"] !== void 0)
43013
43889
  args.customer_id__not = opts["customerId.not"];
43014
- if (opts["customerId.isNull"] !== void 0)
43015
- args.customer_id__isNull = opts["customerId.isNull"];
43016
- if (opts["customerId.isNotNull"] !== void 0)
43017
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
43018
43890
  if (opts["customerId.equals"] !== void 0)
43019
43891
  args.customer_id__equals = opts["customerId.equals"];
43020
43892
  if (opts["customerId.contains"] !== void 0)
@@ -43029,10 +43901,6 @@ Examples:
43029
43901
  args.subscription_id = opts.subscriptionId;
43030
43902
  if (opts["subscriptionId.not"] !== void 0)
43031
43903
  args.subscription_id__not = opts["subscriptionId.not"];
43032
- if (opts["subscriptionId.isNull"] !== void 0)
43033
- args.subscription_id__isNull = opts["subscriptionId.isNull"];
43034
- if (opts["subscriptionId.isNotNull"] !== void 0)
43035
- args.subscription_id__isNotNull = opts["subscriptionId.isNotNull"];
43036
43904
  if (opts["subscriptionId.equals"] !== void 0)
43037
43905
  args.subscription_id__equals = opts["subscriptionId.equals"];
43038
43906
  if (opts["subscriptionId.contains"] !== void 0)
@@ -43041,14 +43909,14 @@ Examples:
43041
43909
  args.subscription_id__startsWith = opts["subscriptionId.startsWith"];
43042
43910
  if (opts["subscriptionId.endWith"] !== void 0)
43043
43911
  args.subscription_id__endWith = opts["subscriptionId.endWith"];
43912
+ if (opts["subscriptionId.isNull"] !== void 0)
43913
+ args.subscription_id__isNull = opts["subscriptionId.isNull"];
43914
+ if (opts["subscriptionId.isNotNull"] !== void 0)
43915
+ args.subscription_id__isNotNull = opts["subscriptionId.isNotNull"];
43044
43916
  if (opts.invoicingEntityId !== void 0)
43045
43917
  args.invoicing_entity_id = opts.invoicingEntityId;
43046
43918
  if (opts["invoicingEntityId.not"] !== void 0)
43047
43919
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
43048
- if (opts["invoicingEntityId.isNull"] !== void 0)
43049
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
43050
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
43051
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
43052
43920
  if (opts["invoicingEntityId.equals"] !== void 0)
43053
43921
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
43054
43922
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -43061,10 +43929,6 @@ Examples:
43061
43929
  args.invoice_number = opts.invoiceNumber;
43062
43930
  if (opts["invoiceNumber.not"] !== void 0)
43063
43931
  args.invoice_number__not = opts["invoiceNumber.not"];
43064
- if (opts["invoiceNumber.isNull"] !== void 0)
43065
- args.invoice_number__isNull = opts["invoiceNumber.isNull"];
43066
- if (opts["invoiceNumber.isNotNull"] !== void 0)
43067
- args.invoice_number__isNotNull = opts["invoiceNumber.isNotNull"];
43068
43932
  if (opts["invoiceNumber.equals"] !== void 0)
43069
43933
  args.invoice_number__equals = opts["invoiceNumber.equals"];
43070
43934
  if (opts["invoiceNumber.contains"] !== void 0)
@@ -43077,10 +43941,6 @@ Examples:
43077
43941
  args.original_invoice_id = opts.originalInvoiceId;
43078
43942
  if (opts["originalInvoiceId.not"] !== void 0)
43079
43943
  args.original_invoice_id__not = opts["originalInvoiceId.not"];
43080
- if (opts["originalInvoiceId.isNull"] !== void 0)
43081
- args.original_invoice_id__isNull = opts["originalInvoiceId.isNull"];
43082
- if (opts["originalInvoiceId.isNotNull"] !== void 0)
43083
- args.original_invoice_id__isNotNull = opts["originalInvoiceId.isNotNull"];
43084
43944
  if (opts["originalInvoiceId.equals"] !== void 0)
43085
43945
  args.original_invoice_id__equals = opts["originalInvoiceId.equals"];
43086
43946
  if (opts["originalInvoiceId.contains"] !== void 0)
@@ -43089,14 +43949,14 @@ Examples:
43089
43949
  args.original_invoice_id__startsWith = opts["originalInvoiceId.startsWith"];
43090
43950
  if (opts["originalInvoiceId.endWith"] !== void 0)
43091
43951
  args.original_invoice_id__endWith = opts["originalInvoiceId.endWith"];
43952
+ if (opts["originalInvoiceId.isNull"] !== void 0)
43953
+ args.original_invoice_id__isNull = opts["originalInvoiceId.isNull"];
43954
+ if (opts["originalInvoiceId.isNotNull"] !== void 0)
43955
+ args.original_invoice_id__isNotNull = opts["originalInvoiceId.isNotNull"];
43092
43956
  if (opts.originalInvoiceNumber !== void 0)
43093
43957
  args.original_invoice_number = opts.originalInvoiceNumber;
43094
43958
  if (opts["originalInvoiceNumber.not"] !== void 0)
43095
43959
  args.original_invoice_number__not = opts["originalInvoiceNumber.not"];
43096
- if (opts["originalInvoiceNumber.isNull"] !== void 0)
43097
- args.original_invoice_number__isNull = opts["originalInvoiceNumber.isNull"];
43098
- if (opts["originalInvoiceNumber.isNotNull"] !== void 0)
43099
- args.original_invoice_number__isNotNull = opts["originalInvoiceNumber.isNotNull"];
43100
43960
  if (opts["originalInvoiceNumber.equals"] !== void 0)
43101
43961
  args.original_invoice_number__equals = opts["originalInvoiceNumber.equals"];
43102
43962
  if (opts["originalInvoiceNumber.contains"] !== void 0)
@@ -43105,16 +43965,16 @@ Examples:
43105
43965
  args.original_invoice_number__startsWith = opts["originalInvoiceNumber.startsWith"];
43106
43966
  if (opts["originalInvoiceNumber.endWith"] !== void 0)
43107
43967
  args.original_invoice_number__endWith = opts["originalInvoiceNumber.endWith"];
43968
+ if (opts["originalInvoiceNumber.isNull"] !== void 0)
43969
+ args.original_invoice_number__isNull = opts["originalInvoiceNumber.isNull"];
43970
+ if (opts["originalInvoiceNumber.isNotNull"] !== void 0)
43971
+ args.original_invoice_number__isNotNull = opts["originalInvoiceNumber.isNotNull"];
43108
43972
  if (opts.lineItemId !== void 0)
43109
43973
  args.line_item_id = opts.lineItemId;
43110
43974
  if (opts.periodStart !== void 0)
43111
43975
  args.period_start = opts.periodStart;
43112
43976
  if (opts["periodStart.not"] !== void 0)
43113
43977
  args.period_start__not = opts["periodStart.not"];
43114
- if (opts["periodStart.isNull"] !== void 0)
43115
- args.period_start__isNull = opts["periodStart.isNull"];
43116
- if (opts["periodStart.isNotNull"] !== void 0)
43117
- args.period_start__isNotNull = opts["periodStart.isNotNull"];
43118
43978
  if (opts["periodStart.equals"] !== void 0)
43119
43979
  args.period_start__equals = opts["periodStart.equals"];
43120
43980
  if (opts["periodStart.lt"] !== void 0)
@@ -43125,14 +43985,14 @@ Examples:
43125
43985
  args.period_start__gt = opts["periodStart.gt"];
43126
43986
  if (opts["periodStart.gte"] !== void 0)
43127
43987
  args.period_start__gte = opts["periodStart.gte"];
43988
+ if (opts["periodStart.isNull"] !== void 0)
43989
+ args.period_start__isNull = opts["periodStart.isNull"];
43990
+ if (opts["periodStart.isNotNull"] !== void 0)
43991
+ args.period_start__isNotNull = opts["periodStart.isNotNull"];
43128
43992
  if (opts.periodEnd !== void 0)
43129
43993
  args.period_end = opts.periodEnd;
43130
43994
  if (opts["periodEnd.not"] !== void 0)
43131
43995
  args.period_end__not = opts["periodEnd.not"];
43132
- if (opts["periodEnd.isNull"] !== void 0)
43133
- args.period_end__isNull = opts["periodEnd.isNull"];
43134
- if (opts["periodEnd.isNotNull"] !== void 0)
43135
- args.period_end__isNotNull = opts["periodEnd.isNotNull"];
43136
43996
  if (opts["periodEnd.equals"] !== void 0)
43137
43997
  args.period_end__equals = opts["periodEnd.equals"];
43138
43998
  if (opts["periodEnd.lt"] !== void 0)
@@ -43143,14 +44003,14 @@ Examples:
43143
44003
  args.period_end__gt = opts["periodEnd.gt"];
43144
44004
  if (opts["periodEnd.gte"] !== void 0)
43145
44005
  args.period_end__gte = opts["periodEnd.gte"];
44006
+ if (opts["periodEnd.isNull"] !== void 0)
44007
+ args.period_end__isNull = opts["periodEnd.isNull"];
44008
+ if (opts["periodEnd.isNotNull"] !== void 0)
44009
+ args.period_end__isNotNull = opts["periodEnd.isNotNull"];
43146
44010
  if (opts.issuedAt !== void 0)
43147
44011
  args.issued_at = opts.issuedAt;
43148
44012
  if (opts["issuedAt.not"] !== void 0)
43149
44013
  args.issued_at__not = opts["issuedAt.not"];
43150
- if (opts["issuedAt.isNull"] !== void 0)
43151
- args.issued_at__isNull = opts["issuedAt.isNull"];
43152
- if (opts["issuedAt.isNotNull"] !== void 0)
43153
- args.issued_at__isNotNull = opts["issuedAt.isNotNull"];
43154
44014
  if (opts["issuedAt.equals"] !== void 0)
43155
44015
  args.issued_at__equals = opts["issuedAt.equals"];
43156
44016
  if (opts["issuedAt.lt"] !== void 0)
@@ -43165,10 +44025,6 @@ Examples:
43165
44025
  args.due_at = opts.dueAt;
43166
44026
  if (opts["dueAt.not"] !== void 0)
43167
44027
  args.due_at__not = opts["dueAt.not"];
43168
- if (opts["dueAt.isNull"] !== void 0)
43169
- args.due_at__isNull = opts["dueAt.isNull"];
43170
- if (opts["dueAt.isNotNull"] !== void 0)
43171
- args.due_at__isNotNull = opts["dueAt.isNotNull"];
43172
44028
  if (opts["dueAt.equals"] !== void 0)
43173
44029
  args.due_at__equals = opts["dueAt.equals"];
43174
44030
  if (opts["dueAt.lt"] !== void 0)
@@ -43183,10 +44039,6 @@ Examples:
43183
44039
  args.updated_at = opts.updatedAt;
43184
44040
  if (opts["updatedAt.not"] !== void 0)
43185
44041
  args.updated_at__not = opts["updatedAt.not"];
43186
- if (opts["updatedAt.isNull"] !== void 0)
43187
- args.updated_at__isNull = opts["updatedAt.isNull"];
43188
- if (opts["updatedAt.isNotNull"] !== void 0)
43189
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
43190
44042
  if (opts["updatedAt.equals"] !== void 0)
43191
44043
  args.updated_at__equals = opts["updatedAt.equals"];
43192
44044
  if (opts["updatedAt.lt"] !== void 0)
@@ -43213,10 +44065,10 @@ Examples:
43213
44065
  "type__in",
43214
44066
  "status",
43215
44067
  "status__in",
44068
+ "origin",
44069
+ "origin__in",
43216
44070
  "customer_id",
43217
44071
  "customer_id__not",
43218
- "customer_id__isNull",
43219
- "customer_id__isNotNull",
43220
44072
  "customer_id__equals",
43221
44073
  "customer_id__contains",
43222
44074
  "customer_id__startsWith",
@@ -43224,67 +44076,61 @@ Examples:
43224
44076
  "customer_external_id",
43225
44077
  "subscription_id",
43226
44078
  "subscription_id__not",
43227
- "subscription_id__isNull",
43228
- "subscription_id__isNotNull",
43229
44079
  "subscription_id__equals",
43230
44080
  "subscription_id__contains",
43231
44081
  "subscription_id__startsWith",
43232
44082
  "subscription_id__endWith",
44083
+ "subscription_id__isNull",
44084
+ "subscription_id__isNotNull",
43233
44085
  "invoicing_entity_id",
43234
44086
  "invoicing_entity_id__not",
43235
- "invoicing_entity_id__isNull",
43236
- "invoicing_entity_id__isNotNull",
43237
44087
  "invoicing_entity_id__equals",
43238
44088
  "invoicing_entity_id__contains",
43239
44089
  "invoicing_entity_id__startsWith",
43240
44090
  "invoicing_entity_id__endWith",
43241
44091
  "invoice_number",
43242
44092
  "invoice_number__not",
43243
- "invoice_number__isNull",
43244
- "invoice_number__isNotNull",
43245
44093
  "invoice_number__equals",
43246
44094
  "invoice_number__contains",
43247
44095
  "invoice_number__startsWith",
43248
44096
  "invoice_number__endWith",
43249
44097
  "original_invoice_id",
43250
44098
  "original_invoice_id__not",
43251
- "original_invoice_id__isNull",
43252
- "original_invoice_id__isNotNull",
43253
44099
  "original_invoice_id__equals",
43254
44100
  "original_invoice_id__contains",
43255
44101
  "original_invoice_id__startsWith",
43256
44102
  "original_invoice_id__endWith",
44103
+ "original_invoice_id__isNull",
44104
+ "original_invoice_id__isNotNull",
43257
44105
  "original_invoice_number",
43258
44106
  "original_invoice_number__not",
43259
- "original_invoice_number__isNull",
43260
- "original_invoice_number__isNotNull",
43261
44107
  "original_invoice_number__equals",
43262
44108
  "original_invoice_number__contains",
43263
44109
  "original_invoice_number__startsWith",
43264
44110
  "original_invoice_number__endWith",
44111
+ "original_invoice_number__isNull",
44112
+ "original_invoice_number__isNotNull",
43265
44113
  "line_item_id",
43266
44114
  "period_start",
43267
44115
  "period_start__not",
43268
- "period_start__isNull",
43269
- "period_start__isNotNull",
43270
44116
  "period_start__equals",
43271
44117
  "period_start__lt",
43272
44118
  "period_start__lte",
43273
44119
  "period_start__gt",
43274
44120
  "period_start__gte",
44121
+ "period_start__isNull",
44122
+ "period_start__isNotNull",
43275
44123
  "period_end",
43276
44124
  "period_end__not",
43277
- "period_end__isNull",
43278
- "period_end__isNotNull",
43279
44125
  "period_end__equals",
43280
44126
  "period_end__lt",
43281
44127
  "period_end__lte",
43282
44128
  "period_end__gt",
43283
44129
  "period_end__gte",
44130
+ "period_end__isNull",
44131
+ "period_end__isNotNull",
43284
44132
  "issued_at",
43285
44133
  "issued_at__not",
43286
- "issued_at__isNull",
43287
- "issued_at__isNotNull",
43288
44134
  "issued_at__equals",
43289
44135
  "issued_at__lt",
43290
44136
  "issued_at__lte",
@@ -43292,8 +44138,6 @@ Examples:
43292
44138
  "issued_at__gte",
43293
44139
  "due_at",
43294
44140
  "due_at__not",
43295
- "due_at__isNull",
43296
- "due_at__isNotNull",
43297
44141
  "due_at__equals",
43298
44142
  "due_at__lt",
43299
44143
  "due_at__lte",
@@ -43301,8 +44145,6 @@ Examples:
43301
44145
  "due_at__gte",
43302
44146
  "updated_at",
43303
44147
  "updated_at__not",
43304
- "updated_at__isNull",
43305
- "updated_at__isNotNull",
43306
44148
  "updated_at__equals",
43307
44149
  "updated_at__lt",
43308
44150
  "updated_at__lte",
@@ -43340,7 +44182,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
43340
44182
 
43341
44183
  - \`current\`: Use the current default payment method of the customer.
43342
44184
  - \`external\`: Manage the payment of the invoice outside of Hyperline.
43343
- `).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("--emitted-at <value>", `Issue date of the invoice.`).option("--due-at <value>", `Due date of the invoice. Computed from the issue date and the payment delay configured in your settings.`).option("--settled-at <value>", `Date the invoice was fully paid.`).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), resolved to the start of that day in the customer timezone. Requires \`status\` to be \`draft\` and an issue date after today. Default to \`manual\`.`).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.`).requiredOption("--line-items <json>", `line_items`).option("--transactions <json>", `transactions`).option("--coupons <json>", `coupons`).addHelpText("after", `
44185
+ `).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("--emitted-at <value>", `Issue date of the invoice.`).option("--due-at <value>", `Due date of the invoice. Computed from the issue date and the payment delay configured in your settings.`).option("--settled-at <value>", `Date the invoice was fully paid.`).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), resolved to the start of that day in the customer timezone. Requires \`status\` to be \`draft\` and an issue date after today. Default to \`manual\`.`).option("--send-email", `Whether to send the paid invoice or credit note email when creating with \`status: paid\` (the default status). Defaults to true and respects existing email settings. Set to false to suppress this email without suppressing lifecycle events or webhooks. Does not affect invoices created as \`draft\` or \`to_pay\`, or later email requests.`).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("--original-invoice-id <value>", `Reference invoice for a credit note, including an imported invoice. Must belong to the same customer, currency and invoicing entity. This reference does not apply credit; use \`allocations\` separately.`).requiredOption("--line-items <json>", `line_items`).option("--allocations <json>", `Invoice applications for a credit note, independent of \`original_invoice_id\`. Omit or send an empty array to apply no credit. Created atomically with the credit note. Amounts must fit the available credit and target balances. For \`paid\` credit notes, non-empty allocations and explicit transactions must settle the full amount; no refund transaction is inferred.`).option("--transactions <json>", `transactions`).option("--coupons <json>", `coupons`).addHelpText("after", `
43344
44186
  Examples:
43345
44187
  hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
43346
44188
  hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
@@ -43393,6 +44235,10 @@ Examples:
43393
44235
  args.settled_at = opts.settledAt;
43394
44236
  if (opts.issuingMethod !== void 0)
43395
44237
  args.issuing_method = opts.issuingMethod;
44238
+ if (opts.originalInvoiceId !== void 0)
44239
+ args.original_invoice_id = opts.originalInvoiceId;
44240
+ if (opts.sendEmail !== void 0)
44241
+ args.send_email = true;
43396
44242
  if (opts.properties !== void 0)
43397
44243
  args.properties = JSON.parse(opts.properties);
43398
44244
  if (opts.customProperties !== void 0)
@@ -43401,6 +44247,8 @@ Examples:
43401
44247
  args.additional_display_fields = JSON.parse(opts.additionalDisplayFields);
43402
44248
  if (opts.lineItems !== void 0)
43403
44249
  args.line_items = JSON.parse(opts.lineItems);
44250
+ if (opts.allocations !== void 0)
44251
+ args.allocations = JSON.parse(opts.allocations);
43404
44252
  if (opts.transactions !== void 0)
43405
44253
  args.transactions = JSON.parse(opts.transactions);
43406
44254
  if (opts.coupons !== void 0)
@@ -43536,6 +44384,36 @@ Examples:
43536
44384
  queryParamKeys: []
43537
44385
  });
43538
44386
  });
44387
+ 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\`.
44388
+
44389
+ - \`invoice_ready\`: The to-pay invoice email (for \`to_pay\`, \`partially_paid\`, \`late\` invoices).
44390
+ - \`invoice_settled\`: The paid-invoice email (for \`paid\` invoices).
44391
+ - \`invoice_errored\`: The failed-payment email (for \`error\` invoices with a payment method).
44392
+ - \`credit_note_ready\`: The issued-credit-note email (for \`to_pay\`, \`partially_paid\` refunds).
44393
+ - \`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", `
44394
+ Examples:
44395
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids>
44396
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids> --batch-id <batch_id>
44397
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids> --output json`).action(async (opts) => {
44398
+ const ctx = resource.parent?.opts()._ctx;
44399
+ if (!ctx) {
44400
+ process.stderr.write("Error: Not authenticated\n");
44401
+ process.exit(1);
44402
+ }
44403
+ const args = {};
44404
+ if (opts.batchId !== void 0)
44405
+ args.batch_id = opts.batchId;
44406
+ if (opts.emailType !== void 0)
44407
+ args.email_type = opts.emailType;
44408
+ if (opts.ids !== void 0)
44409
+ args.ids = JSON.parse(opts.ids);
44410
+ await ctx.execute({
44411
+ method: "POST",
44412
+ path: "/v1/invoices/send-email",
44413
+ args,
44414
+ queryParamKeys: []
44415
+ });
44416
+ });
43539
44417
  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", `
43540
44418
  Examples:
43541
44419
  hyperline invoices mark-invoice-as-uncollectible --id <id>
@@ -43573,7 +44451,28 @@ Examples:
43573
44451
  queryParamKeys: []
43574
44452
  });
43575
44453
  });
43576
- 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.
44454
+ resource.command("update-credit-note-allocations").description(`Replace a credit note's invoice allocations, including imported invoices, without changing its original invoice reference.`).requiredOption("--id <value>", `id parameter`).requiredOption("--allocations <json>", `Complete replacement of this credit note's invoice applications. An empty array removes all applications, preserving the original invoice reference. Targets must share the customer, currency and invoicing entity. Amounts exceeding available credit or invoice balances are rejected.`).addHelpText("after", `
44455
+ Examples:
44456
+ hyperline invoices update-credit-note-allocations --id <id> --allocations <allocations>
44457
+ hyperline invoices update-credit-note-allocations --id <id> --allocations <allocations> --output json`).action(async (opts) => {
44458
+ const ctx = resource.parent?.opts()._ctx;
44459
+ if (!ctx) {
44460
+ process.stderr.write("Error: Not authenticated\n");
44461
+ process.exit(1);
44462
+ }
44463
+ const args = {};
44464
+ if (opts.id !== void 0)
44465
+ args.id = opts.id;
44466
+ if (opts.allocations !== void 0)
44467
+ args.allocations = JSON.parse(opts.allocations);
44468
+ await ctx.execute({
44469
+ method: "PUT",
44470
+ path: "/v1/invoices/{id}/allocations",
44471
+ args,
44472
+ queryParamKeys: []
44473
+ });
44474
+ });
44475
+ resource.command("update").description(`Update an invoice. Send original_invoice_id alone to fill a missing reference on an imported credit note without changing allocations. 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.
43577
44476
 
43578
44477
  - \`invoice\`: Legal invoice to be paid by your customer.
43579
44478
  - \`credit_note\`: Legal credit note cancelling an invoice and refunding your customer.
@@ -43582,7 +44481,7 @@ Examples:
43582
44481
 
43583
44482
  - \`auto\`: Tax is automatically computed and applied.
43584
44483
  - \`not_eligible\`: Tax collection is disabled for the invoice.
43585
- `).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", `
44484
+ `).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("--original-invoice-id <value>", `Fill a missing reference invoice on an imported credit note. Cannot replace or clear an existing reference. Does not change allocations. Send this field alone.`).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", `
43586
44485
  Examples:
43587
44486
  hyperline invoices update --id <id>
43588
44487
  hyperline invoices update --id <id> --type <type> --document-name <document_name>
@@ -43623,6 +44522,8 @@ Examples:
43623
44522
  args.bank_account_id = opts.bankAccountId;
43624
44523
  if (opts.subscriptionId !== void 0)
43625
44524
  args.subscription_id = opts.subscriptionId;
44525
+ if (opts.originalInvoiceId !== void 0)
44526
+ args.original_invoice_id = opts.originalInvoiceId;
43626
44527
  if (opts.lineItems !== void 0)
43627
44528
  args.line_items = JSON.parse(opts.lineItems);
43628
44529
  if (opts.coupons !== void 0)
@@ -43668,10 +44569,10 @@ Examples:
43668
44569
  queryParamKeys: []
43669
44570
  });
43670
44571
  });
43671
- 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", `
44572
+ 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", `
43672
44573
  Examples:
43673
- hyperline invoices upload-pdf-to --id <id>
43674
- hyperline invoices upload-pdf-to --id <id> --output json`).action(async (opts) => {
44574
+ hyperline invoices upload-pdf-to --id <id> --file <path>
44575
+ hyperline invoices upload-pdf-to --id <id> --file <path> --output json`).action(async (opts) => {
43675
44576
  const ctx = resource.parent?.opts()._ctx;
43676
44577
  if (!ctx) {
43677
44578
  process.stderr.write("Error: Not authenticated\n");
@@ -43680,11 +44581,15 @@ Examples:
43680
44581
  const args = {};
43681
44582
  if (opts.id !== void 0)
43682
44583
  args.id = opts.id;
44584
+ const files = {};
44585
+ if (opts.file !== void 0)
44586
+ files.file = [opts.file].flat();
43683
44587
  await ctx.execute({
43684
44588
  method: "POST",
43685
44589
  path: "/v1/invoices/{id}/upload",
43686
44590
  args,
43687
- queryParamKeys: []
44591
+ queryParamKeys: [],
44592
+ files
43688
44593
  });
43689
44594
  });
43690
44595
  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", `
@@ -43823,7 +44728,13 @@ Examples:
43823
44728
  queryParamKeys: []
43824
44729
  });
43825
44730
  });
43826
- 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", `
44731
+ 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:
44732
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
44733
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
44734
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
44735
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
44736
+
44737
+ 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", `
43827
44738
  Examples:
43828
44739
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
43829
44740
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
@@ -43915,7 +44826,13 @@ Examples:
43915
44826
  queryParamKeys: []
43916
44827
  });
43917
44828
  });
43918
- 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", `
44829
+ 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:
44830
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
44831
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
44832
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
44833
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
44834
+
44835
+ 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", `
43919
44836
  Examples:
43920
44837
  hyperline invoicing-entities update-invoicing-entity --id <id>
43921
44838
  hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
@@ -44030,7 +44947,7 @@ Examples:
44030
44947
  // build/commands/generated/organisations.js
44031
44948
  function registerOrganisationsCommands(parent) {
44032
44949
  const resource = parent.command("organisations").description("Manage organisations");
44033
- resource.command("list").description(`Retrieve organisations with their billing details and child customer IDs.`).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("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.is-null <value>", `created_at__isNull`).option("--created-at.is-not-null <value>", `created_at__isNotNull`).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.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).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", `
44950
+ resource.command("list").description(`Retrieve organisations with their billing details and child customer IDs.`).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("--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", `
44034
44951
  Examples:
44035
44952
  hyperline organisations list
44036
44953
  hyperline organisations list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -44052,10 +44969,6 @@ Examples:
44052
44969
  args.created_at = opts.createdAt;
44053
44970
  if (opts["createdAt.not"] !== void 0)
44054
44971
  args.created_at__not = opts["createdAt.not"];
44055
- if (opts["createdAt.isNull"] !== void 0)
44056
- args.created_at__isNull = opts["createdAt.isNull"];
44057
- if (opts["createdAt.isNotNull"] !== void 0)
44058
- args.created_at__isNotNull = opts["createdAt.isNotNull"];
44059
44972
  if (opts["createdAt.equals"] !== void 0)
44060
44973
  args.created_at__equals = opts["createdAt.equals"];
44061
44974
  if (opts["createdAt.lt"] !== void 0)
@@ -44070,10 +44983,6 @@ Examples:
44070
44983
  args.updated_at = opts.updatedAt;
44071
44984
  if (opts["updatedAt.not"] !== void 0)
44072
44985
  args.updated_at__not = opts["updatedAt.not"];
44073
- if (opts["updatedAt.isNull"] !== void 0)
44074
- args.updated_at__isNull = opts["updatedAt.isNull"];
44075
- if (opts["updatedAt.isNotNull"] !== void 0)
44076
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
44077
44986
  if (opts["updatedAt.equals"] !== void 0)
44078
44987
  args.updated_at__equals = opts["updatedAt.equals"];
44079
44988
  if (opts["updatedAt.lt"] !== void 0)
@@ -44098,8 +45007,6 @@ Examples:
44098
45007
  "sort",
44099
45008
  "created_at",
44100
45009
  "created_at__not",
44101
- "created_at__isNull",
44102
- "created_at__isNotNull",
44103
45010
  "created_at__equals",
44104
45011
  "created_at__lt",
44105
45012
  "created_at__lte",
@@ -44107,8 +45014,6 @@ Examples:
44107
45014
  "created_at__gte",
44108
45015
  "updated_at",
44109
45016
  "updated_at__not",
44110
- "updated_at__isNull",
44111
- "updated_at__isNotNull",
44112
45017
  "updated_at__equals",
44113
45018
  "updated_at__lt",
44114
45019
  "updated_at__lte",
@@ -44174,7 +45079,7 @@ function registerPaymentsCommands(parent) {
44174
45079
  Payment type.
44175
45080
 
44176
45081
  - \`one_time\`: One-time payment, generating one-off invoice.
44177
- `).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>", `
45082
+ `).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>", `
44178
45083
  Charging method.
44179
45084
 
44180
45085
  - \`immediately\`: Customer's payment method will be charged directly to pay the invoice.
@@ -44206,6 +45111,8 @@ Examples:
44206
45111
  args.payment_method_id = opts.paymentMethodId;
44207
45112
  if (opts.products !== void 0)
44208
45113
  args.products = JSON.parse(opts.products);
45114
+ if (opts.coupons !== void 0)
45115
+ args.coupons = JSON.parse(opts.coupons);
44209
45116
  if (opts.availablePaymentMethods !== void 0)
44210
45117
  args.available_payment_methods = JSON.parse(opts.availablePaymentMethods);
44211
45118
  if (opts.checkoutSession !== void 0)
@@ -44222,7 +45129,7 @@ Examples:
44222
45129
  // build/commands/generated/price-configurations.js
44223
45130
  function registerPrice_ConfigurationsCommands(parent) {
44224
45131
  const resource = parent.command("price-configurations").description("Manage price configurations");
44225
- resource.command("list").description(`List price configurations with optional filters for product_id and price_book_id. Price configurations define how a product is priced (tiers, volume, graduated, etc.). Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--product-id <value>", `product_id`).option("--product-id.not <value>", `product_id__not`).option("--product-id.is-null <value>", `product_id__isNull`).option("--product-id.is-not-null <value>", `product_id__isNotNull`).option("--product-id.equals <value>", `product_id__equals`).option("--product-id.contains <value>", `product_id__contains`).option("--product-id.starts-with <value>", `product_id__startsWith`).option("--product-id.end-with <value>", `product_id__endWith`).option("--price-book-id <value>", `price_book_id`).option("--price-book-id.not <value>", `price_book_id__not`).option("--price-book-id.is-null <value>", `price_book_id__isNull`).option("--price-book-id.is-not-null <value>", `price_book_id__isNotNull`).option("--price-book-id.equals <value>", `price_book_id__equals`).option("--price-book-id.contains <value>", `price_book_id__contains`).option("--price-book-id.starts-with <value>", `price_book_id__startsWith`).option("--price-book-id.end-with <value>", `price_book_id__endWith`).addHelpText("after", `
45132
+ resource.command("list").description(`List price configurations with optional filters for product_id and price_book_id. Price configurations define how a product is priced (tiers, volume, graduated, etc.). Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--product-id <value>", `product_id`).option("--product-id.not <value>", `product_id__not`).option("--product-id.equals <value>", `product_id__equals`).option("--product-id.contains <value>", `product_id__contains`).option("--product-id.starts-with <value>", `product_id__startsWith`).option("--product-id.end-with <value>", `product_id__endWith`).option("--price-book-id <value>", `price_book_id`).option("--price-book-id.not <value>", `price_book_id__not`).option("--price-book-id.equals <value>", `price_book_id__equals`).option("--price-book-id.contains <value>", `price_book_id__contains`).option("--price-book-id.starts-with <value>", `price_book_id__startsWith`).option("--price-book-id.end-with <value>", `price_book_id__endWith`).option("--price-book-id.is-null <value>", `price_book_id__isNull`).option("--price-book-id.is-not-null <value>", `price_book_id__isNotNull`).addHelpText("after", `
44226
45133
  Examples:
44227
45134
  hyperline price-configurations list
44228
45135
  hyperline price-configurations list --take <take> --product-id <product_id>`).action(async (opts) => {
@@ -44236,10 +45143,6 @@ Examples:
44236
45143
  args.product_id = opts.productId;
44237
45144
  if (opts["productId.not"] !== void 0)
44238
45145
  args.product_id__not = opts["productId.not"];
44239
- if (opts["productId.isNull"] !== void 0)
44240
- args.product_id__isNull = opts["productId.isNull"];
44241
- if (opts["productId.isNotNull"] !== void 0)
44242
- args.product_id__isNotNull = opts["productId.isNotNull"];
44243
45146
  if (opts["productId.equals"] !== void 0)
44244
45147
  args.product_id__equals = opts["productId.equals"];
44245
45148
  if (opts["productId.contains"] !== void 0)
@@ -44252,10 +45155,6 @@ Examples:
44252
45155
  args.price_book_id = opts.priceBookId;
44253
45156
  if (opts["priceBookId.not"] !== void 0)
44254
45157
  args.price_book_id__not = opts["priceBookId.not"];
44255
- if (opts["priceBookId.isNull"] !== void 0)
44256
- args.price_book_id__isNull = opts["priceBookId.isNull"];
44257
- if (opts["priceBookId.isNotNull"] !== void 0)
44258
- args.price_book_id__isNotNull = opts["priceBookId.isNotNull"];
44259
45158
  if (opts["priceBookId.equals"] !== void 0)
44260
45159
  args.price_book_id__equals = opts["priceBookId.equals"];
44261
45160
  if (opts["priceBookId.contains"] !== void 0)
@@ -44264,6 +45163,10 @@ Examples:
44264
45163
  args.price_book_id__startsWith = opts["priceBookId.startsWith"];
44265
45164
  if (opts["priceBookId.endWith"] !== void 0)
44266
45165
  args.price_book_id__endWith = opts["priceBookId.endWith"];
45166
+ if (opts["priceBookId.isNull"] !== void 0)
45167
+ args.price_book_id__isNull = opts["priceBookId.isNull"];
45168
+ if (opts["priceBookId.isNotNull"] !== void 0)
45169
+ args.price_book_id__isNotNull = opts["priceBookId.isNotNull"];
44267
45170
  if (opts.take !== void 0)
44268
45171
  args.take = Number(opts.take);
44269
45172
  if (opts.skip !== void 0)
@@ -44277,20 +45180,18 @@ Examples:
44277
45180
  "skip",
44278
45181
  "product_id",
44279
45182
  "product_id__not",
44280
- "product_id__isNull",
44281
- "product_id__isNotNull",
44282
45183
  "product_id__equals",
44283
45184
  "product_id__contains",
44284
45185
  "product_id__startsWith",
44285
45186
  "product_id__endWith",
44286
45187
  "price_book_id",
44287
45188
  "price_book_id__not",
44288
- "price_book_id__isNull",
44289
- "price_book_id__isNotNull",
44290
45189
  "price_book_id__equals",
44291
45190
  "price_book_id__contains",
44292
45191
  "price_book_id__startsWith",
44293
- "price_book_id__endWith"
45192
+ "price_book_id__endWith",
45193
+ "price_book_id__isNull",
45194
+ "price_book_id__isNotNull"
44294
45195
  ]
44295
45196
  });
44296
45197
  });
@@ -44416,7 +45317,7 @@ Examples:
44416
45317
  // build/commands/generated/products.js
44417
45318
  function registerProductsCommands(parent) {
44418
45319
  const resource = parent.command("products").description("Manage products");
44419
- 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.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).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.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).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.is-null <value>", `description__isNull`).option("--description.is-not-null <value>", `description__isNotNull`).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("--type <value>", `type`).option("--type.not <value>", `type__not`).option("--type.is-null <value>", `type__isNull`).option("--type.is-not-null <value>", `type__isNotNull`).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", `
45320
+ 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", `
44420
45321
  Examples:
44421
45322
  hyperline products list
44422
45323
  hyperline products list --take <take> --id <id>`).action(async (opts) => {
@@ -44430,10 +45331,6 @@ Examples:
44430
45331
  args.id = opts.id;
44431
45332
  if (opts["id.not"] !== void 0)
44432
45333
  args.id__not = opts["id.not"];
44433
- if (opts["id.isNull"] !== void 0)
44434
- args.id__isNull = opts["id.isNull"];
44435
- if (opts["id.isNotNull"] !== void 0)
44436
- args.id__isNotNull = opts["id.isNotNull"];
44437
45334
  if (opts["id.equals"] !== void 0)
44438
45335
  args.id__equals = opts["id.equals"];
44439
45336
  if (opts["id.contains"] !== void 0)
@@ -44450,10 +45347,6 @@ Examples:
44450
45347
  args.name = opts.name;
44451
45348
  if (opts["name.not"] !== void 0)
44452
45349
  args.name__not = opts["name.not"];
44453
- if (opts["name.isNull"] !== void 0)
44454
- args.name__isNull = opts["name.isNull"];
44455
- if (opts["name.isNotNull"] !== void 0)
44456
- args.name__isNotNull = opts["name.isNotNull"];
44457
45350
  if (opts["name.equals"] !== void 0)
44458
45351
  args.name__equals = opts["name.equals"];
44459
45352
  if (opts["name.contains"] !== void 0)
@@ -44466,10 +45359,6 @@ Examples:
44466
45359
  args.description = opts.description;
44467
45360
  if (opts["description.not"] !== void 0)
44468
45361
  args.description__not = opts["description.not"];
44469
- if (opts["description.isNull"] !== void 0)
44470
- args.description__isNull = opts["description.isNull"];
44471
- if (opts["description.isNotNull"] !== void 0)
44472
- args.description__isNotNull = opts["description.isNotNull"];
44473
45362
  if (opts["description.equals"] !== void 0)
44474
45363
  args.description__equals = opts["description.equals"];
44475
45364
  if (opts["description.contains"] !== void 0)
@@ -44478,14 +45367,14 @@ Examples:
44478
45367
  args.description__startsWith = opts["description.startsWith"];
44479
45368
  if (opts["description.endWith"] !== void 0)
44480
45369
  args.description__endWith = opts["description.endWith"];
45370
+ if (opts["description.isNull"] !== void 0)
45371
+ args.description__isNull = opts["description.isNull"];
45372
+ if (opts["description.isNotNull"] !== void 0)
45373
+ args.description__isNotNull = opts["description.isNotNull"];
44481
45374
  if (opts.type !== void 0)
44482
45375
  args.type = opts.type;
44483
45376
  if (opts["type.not"] !== void 0)
44484
45377
  args.type__not = opts["type.not"];
44485
- if (opts["type.isNull"] !== void 0)
44486
- args.type__isNull = opts["type.isNull"];
44487
- if (opts["type.isNotNull"] !== void 0)
44488
- args.type__isNotNull = opts["type.isNotNull"];
44489
45378
  if (opts["type.equals"] !== void 0)
44490
45379
  args.type__equals = opts["type.equals"];
44491
45380
  if (opts["type.contains"] !== void 0)
@@ -44496,6 +45385,8 @@ Examples:
44496
45385
  args.type__endWith = opts["type.endWith"];
44497
45386
  if (opts.priceBookId !== void 0)
44498
45387
  args.price_book_id = opts.priceBookId;
45388
+ if (opts.customProperties !== void 0)
45389
+ args.custom_properties = opts.customProperties;
44499
45390
  if (opts.take !== void 0)
44500
45391
  args.take = Number(opts.take);
44501
45392
  if (opts.skip !== void 0)
@@ -44509,8 +45400,6 @@ Examples:
44509
45400
  "skip",
44510
45401
  "id",
44511
45402
  "id__not",
44512
- "id__isNull",
44513
- "id__isNotNull",
44514
45403
  "id__equals",
44515
45404
  "id__contains",
44516
45405
  "id__startsWith",
@@ -44519,33 +45408,30 @@ Examples:
44519
45408
  "status__in",
44520
45409
  "name",
44521
45410
  "name__not",
44522
- "name__isNull",
44523
- "name__isNotNull",
44524
45411
  "name__equals",
44525
45412
  "name__contains",
44526
45413
  "name__startsWith",
44527
45414
  "name__endWith",
44528
45415
  "description",
44529
45416
  "description__not",
44530
- "description__isNull",
44531
- "description__isNotNull",
44532
45417
  "description__equals",
44533
45418
  "description__contains",
44534
45419
  "description__startsWith",
44535
45420
  "description__endWith",
45421
+ "description__isNull",
45422
+ "description__isNotNull",
44536
45423
  "type",
44537
45424
  "type__not",
44538
- "type__isNull",
44539
- "type__isNotNull",
44540
45425
  "type__equals",
44541
45426
  "type__contains",
44542
45427
  "type__startsWith",
44543
45428
  "type__endWith",
44544
- "price_book_id"
45429
+ "price_book_id",
45430
+ "custom_properties"
44545
45431
  ]
44546
45432
  });
44547
45433
  });
44548
- resource.command("create").description(`Create a new product with name, type (flat_fee, per_unit, usage, seat, etc.), and pricing configuration.`).requiredOption("--name <value>", `Product name.`).option("--description <value>", `Product description.`).option("--description-display-interval-dates", `Indicates if the dates of the interval should be automatically added in the product description on the invoices.`).option("--public-description <value>", `Public description of the product.`).option("--translations <json>", `Product name and description translations.`).option("--is-available-on-demand", `is_available_on_demand`).option("--is-available-on-subscription", `is_available_on_subscription`).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("--accounting <json>", `Mapping invoicing entity ID/accounting settings.`).requiredOption("--type <value>", `Product type for fixed fee products.`).requiredOption("--price-configurations <json>", `Price configurations for the product.`).option("--aggregator <json>", `Aggregator configuration to automatically count seats from billable events. Only count aggregators are supported for seat products.`).option("--aggregator-id <value>", `ID of an existing aggregator to link to this product.`).option("--unit-name <value>", `Name of the unit (e.g., 'user', 'seat').`).option("--is-connected-seat-item", `When true, the seat count is automatically synced from an external source (e.g., CRM users).`).option("--credit-aggregators <json>", `Multiple aggregators with weights for multi-aggregator credit consumption. Cannot be used together with aggregator or aggregator_id.`).option("--low-credits-threshold <number>", `Threshold indicating a low level of credits.`).option("--credits-grant-mode <value>", `
45434
+ resource.command("create").description(`Create a new product with name, type (flat_fee, per_unit, usage, seat, etc.), and pricing configuration. With catalog versioning enabled, the change is staged in the pending catalog draft and only goes live after publish_catalog_draft.`).requiredOption("--name <value>", `Product name.`).option("--description <value>", `Product description.`).option("--description-display-interval-dates", `Indicates if the dates of the interval should be automatically added in the product description on the invoices.`).option("--public-description <value>", `Public description of the product.`).option("--translations <json>", `Product name and description translations.`).option("--is-available-on-demand", `is_available_on_demand`).option("--is-available-on-subscription", `is_available_on_subscription`).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("--accounting <json>", `Mapping invoicing entity ID/accounting settings.`).requiredOption("--type <value>", `Product type for fixed fee products.`).requiredOption("--price-configurations <json>", `Price configurations for the product.`).option("--aggregator <json>", `Aggregator configuration to automatically count seats from billable events. Only count aggregators are supported for seat products.`).option("--aggregator-id <value>", `ID of an existing aggregator to link to this product.`).option("--unit-name <value>", `Name of the unit (e.g., 'user', 'seat').`).option("--is-connected-seat-item", `When true, the seat count is automatically synced from an external source (e.g., CRM users).`).option("--credit-aggregators <json>", `Multiple aggregators with weights for multi-aggregator credit consumption. Cannot be used together with aggregator or aggregator_id.`).option("--low-credits-threshold <number>", `Threshold indicating a low level of credits.`).option("--credits-grant-mode <value>", `
44549
45435
  How the periodic credit allowance is granted for partial billing periods.
44550
45436
 
44551
45437
  - \`prorated\` (default): the granted credits are prorated to the elapsed period.
@@ -44633,7 +45519,7 @@ Examples:
44633
45519
  queryParamKeys: ["price_book_id"]
44634
45520
  });
44635
45521
  });
44636
- resource.command("update").description(`Update a product's name, description, type, or configuration by ID.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Product name.`).option("--description <value>", `Product description.`).option("--public-description <value>", `Public description of the product.`).option("--translations <json>", `Product name and description translations.`).option("--is-available-on-demand", `is_available_on_demand`).option("--is-available-on-subscription", `is_available_on_subscription`).option("--properties <json>", `properties`).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("--accounting <json>", `Mapping invoicing entity ID/accounting settings.`).addHelpText("after", `
45522
+ resource.command("update").description(`Update a product's name, description, type, or configuration by ID. With catalog versioning enabled, the change is staged in the pending catalog draft and only goes live after publish_catalog_draft.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Product name.`).option("--description <value>", `Product description.`).option("--public-description <value>", `Public description of the product.`).option("--translations <json>", `Product name and description translations.`).option("--is-available-on-demand", `is_available_on_demand`).option("--is-available-on-subscription", `is_available_on_subscription`).option("--properties <json>", `properties`).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("--accounting <json>", `Mapping invoicing entity ID/accounting settings.`).addHelpText("after", `
44637
45523
  Examples:
44638
45524
  hyperline products update --id <id> --name <name>
44639
45525
  hyperline products update --id <id> --name <name> --description <description> --public-description <public_description>
@@ -44710,16 +45596,81 @@ Examples:
44710
45596
  }
44711
45597
  }
44712
45598
  await ctx.execute({
44713
- method: "DELETE",
44714
- path: "/v1/products/{id}",
45599
+ method: "DELETE",
45600
+ path: "/v1/products/{id}",
45601
+ args,
45602
+ queryParamKeys: []
45603
+ });
45604
+ });
45605
+ resource.command("unarchive").description(`Restore a previously archived product, making it available for new subscriptions again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45606
+ Examples:
45607
+ hyperline products unarchive --id <id>
45608
+ hyperline products unarchive --id <id> --output json`).action(async (opts) => {
45609
+ const ctx = resource.parent?.opts()._ctx;
45610
+ if (!ctx) {
45611
+ process.stderr.write("Error: Not authenticated\n");
45612
+ process.exit(1);
45613
+ }
45614
+ const args = {};
45615
+ if (opts.id !== void 0)
45616
+ args.id = opts.id;
45617
+ await ctx.execute({
45618
+ method: "PUT",
45619
+ path: "/v1/products/{id}/unarchive",
45620
+ args,
45621
+ queryParamKeys: []
45622
+ });
45623
+ });
45624
+ }
45625
+
45626
+ // build/commands/generated/products-features.js
45627
+ function registerProducts_FeaturesCommands(parent) {
45628
+ const resource = parent.command("products-features").description("Manage products > features");
45629
+ resource.command("list-product-features").description(`List feature values assigned to a product.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45630
+ Examples:
45631
+ hyperline products-features list-product-features --id <id>`).action(async (opts) => {
45632
+ const ctx = resource.parent?.opts()._ctx;
45633
+ if (!ctx) {
45634
+ process.stderr.write("Error: Not authenticated\n");
45635
+ process.exit(1);
45636
+ }
45637
+ const args = {};
45638
+ if (opts.id !== void 0)
45639
+ args.id = opts.id;
45640
+ await ctx.execute({
45641
+ method: "GET",
45642
+ path: "/v1/products/{id}/features",
45643
+ args,
45644
+ queryParamKeys: []
45645
+ });
45646
+ });
45647
+ resource.command("set-product-feature").description(`Set a feature value for a product.`).requiredOption("--id <value>", `id parameter`).requiredOption("--code <value>", `code parameter`).requiredOption("--value", `Feature value.`).addHelpText("after", `
45648
+ Examples:
45649
+ hyperline products-features set-product-feature --id <id> --code <code> --value
45650
+ hyperline products-features set-product-feature --id <id> --code <code> --value --output json`).action(async (opts) => {
45651
+ const ctx = resource.parent?.opts()._ctx;
45652
+ if (!ctx) {
45653
+ process.stderr.write("Error: Not authenticated\n");
45654
+ process.exit(1);
45655
+ }
45656
+ const args = {};
45657
+ if (opts.id !== void 0)
45658
+ args.id = opts.id;
45659
+ if (opts.code !== void 0)
45660
+ args.code = opts.code;
45661
+ if (opts.value !== void 0)
45662
+ args.value = true;
45663
+ await ctx.execute({
45664
+ method: "PUT",
45665
+ path: "/v1/products/{id}/features/{code}",
44715
45666
  args,
44716
45667
  queryParamKeys: []
44717
45668
  });
44718
45669
  });
44719
- resource.command("unarchive").description(`Restore a previously archived product, making it available for new subscriptions again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45670
+ resource.command("delete-product-feature").description(`Delete a feature value from a product.`).requiredOption("--id <value>", `id parameter`).requiredOption("--code <value>", `code parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
44720
45671
  Examples:
44721
- hyperline products unarchive --id <id>
44722
- hyperline products unarchive --id <id> --output json`).action(async (opts) => {
45672
+ hyperline products-features delete-product-feature --id <id> --code <code>
45673
+ hyperline products-features delete-product-feature --id <id> --code <code> --output json`).action(async (opts) => {
44723
45674
  const ctx = resource.parent?.opts()._ctx;
44724
45675
  if (!ctx) {
44725
45676
  process.stderr.write("Error: Not authenticated\n");
@@ -44728,9 +45679,18 @@ Examples:
44728
45679
  const args = {};
44729
45680
  if (opts.id !== void 0)
44730
45681
  args.id = opts.id;
45682
+ if (opts.code !== void 0)
45683
+ args.code = opts.code;
45684
+ if (!opts.yes) {
45685
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
45686
+ if (!confirmed) {
45687
+ process.stdout.write("Aborted.\n");
45688
+ return;
45689
+ }
45690
+ }
44731
45691
  await ctx.execute({
44732
- method: "PUT",
44733
- path: "/v1/products/{id}/unarchive",
45692
+ method: "DELETE",
45693
+ path: "/v1/products/{id}/features/{code}",
44734
45694
  args,
44735
45695
  queryParamKeys: []
44736
45696
  });
@@ -44746,12 +45706,12 @@ Quote status.
44746
45706
  - \`draft\`: The quote is a draft.
44747
45707
  - \`approved\`: The quote is approved and ready to be sent to the customer.
44748
45708
  - \`pending_signature\`: The quote is awaiting the customer's signature.
44749
- `).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
45709
+ `).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The user must be a member of your Hyperline account. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. When computed, a subscription phase with neither an end date nor a fixed duration is counted over a conventional horizon: the contract's length for a single phase on a contract that has one, otherwise 12 months or the longest billing interval if longer. That horizon is not an end date: the subscription can run past it. Usage-based and connected seat lines are priced at their estimated quantity when it exceeds the committed quantity and, for seats, the live seat count. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
44750
45710
 
44751
45711
  - \`all\`: Display all pricing tiers.
44752
45712
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
44753
45713
  - \`none\`: Hide all pricing tiers.
44754
- `).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", `
45714
+ `).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", `
44755
45715
  Examples:
44756
45716
  hyperline quotes create --customer-id <customer_id>
44757
45717
  hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
@@ -44816,14 +45776,18 @@ Examples:
44816
45776
  args.subscription = JSON.parse(opts.subscription);
44817
45777
  if (opts.invoice !== void 0)
44818
45778
  args.invoice = JSON.parse(opts.invoice);
45779
+ const files = {};
45780
+ if (opts.attachments !== void 0)
45781
+ files.attachments = [opts.attachments].flat();
44819
45782
  await ctx.execute({
44820
45783
  method: "POST",
44821
45784
  path: "/v1/quotes",
44822
45785
  args,
44823
- queryParamKeys: []
45786
+ queryParamKeys: [],
45787
+ files
44824
45788
  });
44825
45789
  });
44826
- 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.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).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.is-null <value>", `number__isNull`).option("--number.is-not-null <value>", `number__isNotNull`).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.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).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.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).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("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).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("--type <value>", `type`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).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", `
45790
+ 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", `
44827
45791
  Examples:
44828
45792
  hyperline quotes list
44829
45793
  hyperline quotes list --take <take> --id <id>`).action(async (opts) => {
@@ -44837,10 +45801,6 @@ Examples:
44837
45801
  args.id = opts.id;
44838
45802
  if (opts["id.not"] !== void 0)
44839
45803
  args.id__not = opts["id.not"];
44840
- if (opts["id.isNull"] !== void 0)
44841
- args.id__isNull = opts["id.isNull"];
44842
- if (opts["id.isNotNull"] !== void 0)
44843
- args.id__isNotNull = opts["id.isNotNull"];
44844
45804
  if (opts["id.equals"] !== void 0)
44845
45805
  args.id__equals = opts["id.equals"];
44846
45806
  if (opts["id.contains"] !== void 0)
@@ -44853,10 +45813,6 @@ Examples:
44853
45813
  args.number = opts.number;
44854
45814
  if (opts["number.not"] !== void 0)
44855
45815
  args.number__not = opts["number.not"];
44856
- if (opts["number.isNull"] !== void 0)
44857
- args.number__isNull = opts["number.isNull"];
44858
- if (opts["number.isNotNull"] !== void 0)
44859
- args.number__isNotNull = opts["number.isNotNull"];
44860
45816
  if (opts["number.equals"] !== void 0)
44861
45817
  args.number__equals = opts["number.equals"];
44862
45818
  if (opts["number.contains"] !== void 0)
@@ -44873,10 +45829,6 @@ Examples:
44873
45829
  args.customer_id = opts.customerId;
44874
45830
  if (opts["customerId.not"] !== void 0)
44875
45831
  args.customer_id__not = opts["customerId.not"];
44876
- if (opts["customerId.isNull"] !== void 0)
44877
- args.customer_id__isNull = opts["customerId.isNull"];
44878
- if (opts["customerId.isNotNull"] !== void 0)
44879
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
44880
45832
  if (opts["customerId.equals"] !== void 0)
44881
45833
  args.customer_id__equals = opts["customerId.equals"];
44882
45834
  if (opts["customerId.contains"] !== void 0)
@@ -44889,10 +45841,6 @@ Examples:
44889
45841
  args.template_id = opts.templateId;
44890
45842
  if (opts["templateId.not"] !== void 0)
44891
45843
  args.template_id__not = opts["templateId.not"];
44892
- if (opts["templateId.isNull"] !== void 0)
44893
- args.template_id__isNull = opts["templateId.isNull"];
44894
- if (opts["templateId.isNotNull"] !== void 0)
44895
- args.template_id__isNotNull = opts["templateId.isNotNull"];
44896
45844
  if (opts["templateId.equals"] !== void 0)
44897
45845
  args.template_id__equals = opts["templateId.equals"];
44898
45846
  if (opts["templateId.contains"] !== void 0)
@@ -44901,14 +45849,14 @@ Examples:
44901
45849
  args.template_id__startsWith = opts["templateId.startsWith"];
44902
45850
  if (opts["templateId.endWith"] !== void 0)
44903
45851
  args.template_id__endWith = opts["templateId.endWith"];
45852
+ if (opts["templateId.isNull"] !== void 0)
45853
+ args.template_id__isNull = opts["templateId.isNull"];
45854
+ if (opts["templateId.isNotNull"] !== void 0)
45855
+ args.template_id__isNotNull = opts["templateId.isNotNull"];
44904
45856
  if (opts.crmOpportunityId !== void 0)
44905
45857
  args.crm_opportunity_id = opts.crmOpportunityId;
44906
45858
  if (opts["crmOpportunityId.not"] !== void 0)
44907
45859
  args.crm_opportunity_id__not = opts["crmOpportunityId.not"];
44908
- if (opts["crmOpportunityId.isNull"] !== void 0)
44909
- args.crm_opportunity_id__isNull = opts["crmOpportunityId.isNull"];
44910
- if (opts["crmOpportunityId.isNotNull"] !== void 0)
44911
- args.crm_opportunity_id__isNotNull = opts["crmOpportunityId.isNotNull"];
44912
45860
  if (opts["crmOpportunityId.equals"] !== void 0)
44913
45861
  args.crm_opportunity_id__equals = opts["crmOpportunityId.equals"];
44914
45862
  if (opts["crmOpportunityId.contains"] !== void 0)
@@ -44917,16 +45865,16 @@ Examples:
44917
45865
  args.crm_opportunity_id__startsWith = opts["crmOpportunityId.startsWith"];
44918
45866
  if (opts["crmOpportunityId.endWith"] !== void 0)
44919
45867
  args.crm_opportunity_id__endWith = opts["crmOpportunityId.endWith"];
45868
+ if (opts["crmOpportunityId.isNull"] !== void 0)
45869
+ args.crm_opportunity_id__isNull = opts["crmOpportunityId.isNull"];
45870
+ if (opts["crmOpportunityId.isNotNull"] !== void 0)
45871
+ args.crm_opportunity_id__isNotNull = opts["crmOpportunityId.isNotNull"];
44920
45872
  if (opts.type !== void 0)
44921
45873
  args.type = opts.type;
44922
45874
  if (opts.updatedAt !== void 0)
44923
45875
  args.updated_at = opts.updatedAt;
44924
45876
  if (opts["updatedAt.not"] !== void 0)
44925
45877
  args.updated_at__not = opts["updatedAt.not"];
44926
- if (opts["updatedAt.isNull"] !== void 0)
44927
- args.updated_at__isNull = opts["updatedAt.isNull"];
44928
- if (opts["updatedAt.isNotNull"] !== void 0)
44929
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
44930
45878
  if (opts["updatedAt.equals"] !== void 0)
44931
45879
  args.updated_at__equals = opts["updatedAt.equals"];
44932
45880
  if (opts["updatedAt.lt"] !== void 0)
@@ -44950,16 +45898,12 @@ Examples:
44950
45898
  "skip",
44951
45899
  "id",
44952
45900
  "id__not",
44953
- "id__isNull",
44954
- "id__isNotNull",
44955
45901
  "id__equals",
44956
45902
  "id__contains",
44957
45903
  "id__startsWith",
44958
45904
  "id__endWith",
44959
45905
  "number",
44960
45906
  "number__not",
44961
- "number__isNull",
44962
- "number__isNotNull",
44963
45907
  "number__equals",
44964
45908
  "number__contains",
44965
45909
  "number__startsWith",
@@ -44968,33 +45912,29 @@ Examples:
44968
45912
  "status__in",
44969
45913
  "customer_id",
44970
45914
  "customer_id__not",
44971
- "customer_id__isNull",
44972
- "customer_id__isNotNull",
44973
45915
  "customer_id__equals",
44974
45916
  "customer_id__contains",
44975
45917
  "customer_id__startsWith",
44976
45918
  "customer_id__endWith",
44977
45919
  "template_id",
44978
45920
  "template_id__not",
44979
- "template_id__isNull",
44980
- "template_id__isNotNull",
44981
45921
  "template_id__equals",
44982
45922
  "template_id__contains",
44983
45923
  "template_id__startsWith",
44984
45924
  "template_id__endWith",
45925
+ "template_id__isNull",
45926
+ "template_id__isNotNull",
44985
45927
  "crm_opportunity_id",
44986
45928
  "crm_opportunity_id__not",
44987
- "crm_opportunity_id__isNull",
44988
- "crm_opportunity_id__isNotNull",
44989
45929
  "crm_opportunity_id__equals",
44990
45930
  "crm_opportunity_id__contains",
44991
45931
  "crm_opportunity_id__startsWith",
44992
45932
  "crm_opportunity_id__endWith",
45933
+ "crm_opportunity_id__isNull",
45934
+ "crm_opportunity_id__isNotNull",
44993
45935
  "type",
44994
45936
  "updated_at",
44995
45937
  "updated_at__not",
44996
- "updated_at__isNull",
44997
- "updated_at__isNotNull",
44998
45938
  "updated_at__equals",
44999
45939
  "updated_at__lt",
45000
45940
  "updated_at__lte",
@@ -45021,12 +45961,12 @@ Examples:
45021
45961
  queryParamKeys: []
45022
45962
  });
45023
45963
  });
45024
- resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value. Set to \`null\` to go back to the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
45964
+ resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The user must be a member of your Hyperline account. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. When computed, a subscription phase with neither an end date nor a fixed duration is counted over a conventional horizon: the contract's length for a single phase on a contract that has one, otherwise 12 months or the longest billing interval if longer. That horizon is not an end date: the subscription can run past it. Usage-based and connected seat lines are priced at their estimated quantity when it exceeds the committed quantity and, for seats, the live seat count. Set to \`null\` to clear the manually set value.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value. Set to \`null\` to go back to the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
45025
45965
 
45026
45966
  - \`all\`: Display all pricing tiers.
45027
45967
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
45028
45968
  - \`none\`: Hide all pricing tiers.
45029
- `).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", `
45969
+ `).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", `
45030
45970
  Examples:
45031
45971
  hyperline quotes update --id <id>
45032
45972
  hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
@@ -45087,11 +46027,15 @@ Examples:
45087
46027
  args.subscription = JSON.parse(opts.subscription);
45088
46028
  if (opts.invoice !== void 0)
45089
46029
  args.invoice = JSON.parse(opts.invoice);
46030
+ const files = {};
46031
+ if (opts.attachments !== void 0)
46032
+ files.attachments = [opts.attachments].flat();
45090
46033
  await ctx.execute({
45091
46034
  method: "PATCH",
45092
46035
  path: "/v1/quotes/{id}",
45093
46036
  args,
45094
- queryParamKeys: []
46037
+ queryParamKeys: [],
46038
+ files
45095
46039
  });
45096
46040
  });
45097
46041
  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", `
@@ -45244,9 +46188,10 @@ Examples:
45244
46188
  queryParamKeys: []
45245
46189
  });
45246
46190
  });
45247
- 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", `
46191
+ 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", `
45248
46192
  Examples:
45249
46193
  hyperline quotes sign --id <id>
46194
+ hyperline quotes sign --id <id> --signed-quote <path>
45250
46195
  hyperline quotes sign --id <id> --output json`).action(async (opts) => {
45251
46196
  const ctx = resource.parent?.opts()._ctx;
45252
46197
  if (!ctx) {
@@ -45256,11 +46201,15 @@ Examples:
45256
46201
  const args = {};
45257
46202
  if (opts.id !== void 0)
45258
46203
  args.id = opts.id;
46204
+ const files = {};
46205
+ if (opts.signedQuote !== void 0)
46206
+ files.signed_quote = [opts.signedQuote].flat();
45259
46207
  await ctx.execute({
45260
46208
  method: "POST",
45261
46209
  path: "/v1/quotes/{id}/sign",
45262
46210
  args,
45263
- queryParamKeys: []
46211
+ queryParamKeys: [],
46212
+ files
45264
46213
  });
45265
46214
  });
45266
46215
  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", `
@@ -45372,7 +46321,7 @@ Examples:
45372
46321
  // build/commands/generated/quotes-templates.js
45373
46322
  function registerQuotes_TemplatesCommands(parent) {
45374
46323
  const resource = parent.command("quotes-templates").description("Manage quotes > templates");
45375
- resource.command("list-quote-templates").description(`List quote templates with pagination and optional filters for id, name, subscription_template_id, and search. Use template IDs to create quotes from reusable quote defaults.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).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("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).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("--subscription-template-id <value>", `subscription_template_id`).option("--subscription-template-id.not <value>", `subscription_template_id__not`).option("--subscription-template-id.is-null <value>", `subscription_template_id__isNull`).option("--subscription-template-id.is-not-null <value>", `subscription_template_id__isNotNull`).option("--subscription-template-id.equals <value>", `subscription_template_id__equals`).option("--subscription-template-id.contains <value>", `subscription_template_id__contains`).option("--subscription-template-id.starts-with <value>", `subscription_template_id__startsWith`).option("--subscription-template-id.end-with <value>", `subscription_template_id__endWith`).option("--search <value>", `search`).addHelpText("after", `
46324
+ resource.command("list-quote-templates").description(`List quote templates with pagination and optional filters for id, name, subscription_template_id, and search. Use template IDs to create quotes from reusable quote defaults.`).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("--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("--subscription-template-id <value>", `subscription_template_id`).option("--search <value>", `search`).addHelpText("after", `
45376
46325
  Examples:
45377
46326
  hyperline quotes-templates list-quote-templates
45378
46327
  hyperline quotes-templates list-quote-templates --take <take> --id <id>`).action(async (opts) => {
@@ -45386,10 +46335,6 @@ Examples:
45386
46335
  args.id = opts.id;
45387
46336
  if (opts["id.not"] !== void 0)
45388
46337
  args.id__not = opts["id.not"];
45389
- if (opts["id.isNull"] !== void 0)
45390
- args.id__isNull = opts["id.isNull"];
45391
- if (opts["id.isNotNull"] !== void 0)
45392
- args.id__isNotNull = opts["id.isNotNull"];
45393
46338
  if (opts["id.equals"] !== void 0)
45394
46339
  args.id__equals = opts["id.equals"];
45395
46340
  if (opts["id.contains"] !== void 0)
@@ -45402,10 +46347,6 @@ Examples:
45402
46347
  args.name = opts.name;
45403
46348
  if (opts["name.not"] !== void 0)
45404
46349
  args.name__not = opts["name.not"];
45405
- if (opts["name.isNull"] !== void 0)
45406
- args.name__isNull = opts["name.isNull"];
45407
- if (opts["name.isNotNull"] !== void 0)
45408
- args.name__isNotNull = opts["name.isNotNull"];
45409
46350
  if (opts["name.equals"] !== void 0)
45410
46351
  args.name__equals = opts["name.equals"];
45411
46352
  if (opts["name.contains"] !== void 0)
@@ -45416,20 +46357,6 @@ Examples:
45416
46357
  args.name__endWith = opts["name.endWith"];
45417
46358
  if (opts.subscriptionTemplateId !== void 0)
45418
46359
  args.subscription_template_id = opts.subscriptionTemplateId;
45419
- if (opts["subscriptionTemplateId.not"] !== void 0)
45420
- args.subscription_template_id__not = opts["subscriptionTemplateId.not"];
45421
- if (opts["subscriptionTemplateId.isNull"] !== void 0)
45422
- args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
45423
- if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
45424
- args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
45425
- if (opts["subscriptionTemplateId.equals"] !== void 0)
45426
- args.subscription_template_id__equals = opts["subscriptionTemplateId.equals"];
45427
- if (opts["subscriptionTemplateId.contains"] !== void 0)
45428
- args.subscription_template_id__contains = opts["subscriptionTemplateId.contains"];
45429
- if (opts["subscriptionTemplateId.startsWith"] !== void 0)
45430
- args.subscription_template_id__startsWith = opts["subscriptionTemplateId.startsWith"];
45431
- if (opts["subscriptionTemplateId.endWith"] !== void 0)
45432
- args.subscription_template_id__endWith = opts["subscriptionTemplateId.endWith"];
45433
46360
  if (opts.search !== void 0)
45434
46361
  args.search = opts.search;
45435
46362
  if (opts.take !== void 0)
@@ -45445,28 +46372,17 @@ Examples:
45445
46372
  "skip",
45446
46373
  "id",
45447
46374
  "id__not",
45448
- "id__isNull",
45449
- "id__isNotNull",
45450
46375
  "id__equals",
45451
46376
  "id__contains",
45452
46377
  "id__startsWith",
45453
46378
  "id__endWith",
45454
46379
  "name",
45455
46380
  "name__not",
45456
- "name__isNull",
45457
- "name__isNotNull",
45458
46381
  "name__equals",
45459
46382
  "name__contains",
45460
46383
  "name__startsWith",
45461
46384
  "name__endWith",
45462
46385
  "subscription_template_id",
45463
- "subscription_template_id__not",
45464
- "subscription_template_id__isNull",
45465
- "subscription_template_id__isNotNull",
45466
- "subscription_template_id__equals",
45467
- "subscription_template_id__contains",
45468
- "subscription_template_id__startsWith",
45469
- "subscription_template_id__endWith",
45470
46386
  "search"
45471
46387
  ]
45472
46388
  });
@@ -45868,7 +46784,7 @@ Examples:
45868
46784
  queryParamKeys: []
45869
46785
  });
45870
46786
  });
45871
- 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>", `
46787
+ 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>", `
45872
46788
  Subscription status filter.
45873
46789
 
45874
46790
  - \`active\`, \`pending\`, \`paused\`, \`errored\`, \`cancelled\`, \`draft\`, \`voided\`, \`archived\`: match that status.
@@ -45877,7 +46793,7 @@ Subscription status filter.
45877
46793
  - \`any\`: every status, no exclusion.
45878
46794
 
45879
46795
  Use \`status__in\` with comma-separated values to combine statuses. When the filter is omitted, \`draft\`, \`voided\`, \`cancelled\` and \`archived\` subscriptions are excluded.
45880
- `).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.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).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.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).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("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).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("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).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("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).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("--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.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).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.is-null <value>", `cancel_at__isNull`).option("--cancel-at.is-not-null <value>", `cancel_at__isNotNull`).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("--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", `
46796
+ `).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", `
45881
46797
  Examples:
45882
46798
  hyperline subscriptions list
45883
46799
  hyperline subscriptions list --take <take> --activation-strategy <activation_strategy>`).action(async (opts) => {
@@ -45899,10 +46815,6 @@ Examples:
45899
46815
  args.currency = opts.currency;
45900
46816
  if (opts["currency.not"] !== void 0)
45901
46817
  args.currency__not = opts["currency.not"];
45902
- if (opts["currency.isNull"] !== void 0)
45903
- args.currency__isNull = opts["currency.isNull"];
45904
- if (opts["currency.isNotNull"] !== void 0)
45905
- args.currency__isNotNull = opts["currency.isNotNull"];
45906
46818
  if (opts["currency.equals"] !== void 0)
45907
46819
  args.currency__equals = opts["currency.equals"];
45908
46820
  if (opts["currency.contains"] !== void 0)
@@ -45915,10 +46827,6 @@ Examples:
45915
46827
  args.plan_id = opts.planId;
45916
46828
  if (opts["planId.not"] !== void 0)
45917
46829
  args.plan_id__not = opts["planId.not"];
45918
- if (opts["planId.isNull"] !== void 0)
45919
- args.plan_id__isNull = opts["planId.isNull"];
45920
- if (opts["planId.isNotNull"] !== void 0)
45921
- args.plan_id__isNotNull = opts["planId.isNotNull"];
45922
46830
  if (opts["planId.equals"] !== void 0)
45923
46831
  args.plan_id__equals = opts["planId.equals"];
45924
46832
  if (opts["planId.contains"] !== void 0)
@@ -45927,14 +46835,14 @@ Examples:
45927
46835
  args.plan_id__startsWith = opts["planId.startsWith"];
45928
46836
  if (opts["planId.endWith"] !== void 0)
45929
46837
  args.plan_id__endWith = opts["planId.endWith"];
46838
+ if (opts["planId.isNull"] !== void 0)
46839
+ args.plan_id__isNull = opts["planId.isNull"];
46840
+ if (opts["planId.isNotNull"] !== void 0)
46841
+ args.plan_id__isNotNull = opts["planId.isNotNull"];
45930
46842
  if (opts.originalQuoteId !== void 0)
45931
46843
  args.original_quote_id = opts.originalQuoteId;
45932
46844
  if (opts["originalQuoteId.not"] !== void 0)
45933
46845
  args.original_quote_id__not = opts["originalQuoteId.not"];
45934
- if (opts["originalQuoteId.isNull"] !== void 0)
45935
- args.original_quote_id__isNull = opts["originalQuoteId.isNull"];
45936
- if (opts["originalQuoteId.isNotNull"] !== void 0)
45937
- args.original_quote_id__isNotNull = opts["originalQuoteId.isNotNull"];
45938
46846
  if (opts["originalQuoteId.equals"] !== void 0)
45939
46847
  args.original_quote_id__equals = opts["originalQuoteId.equals"];
45940
46848
  if (opts["originalQuoteId.contains"] !== void 0)
@@ -45943,14 +46851,14 @@ Examples:
45943
46851
  args.original_quote_id__startsWith = opts["originalQuoteId.startsWith"];
45944
46852
  if (opts["originalQuoteId.endWith"] !== void 0)
45945
46853
  args.original_quote_id__endWith = opts["originalQuoteId.endWith"];
46854
+ if (opts["originalQuoteId.isNull"] !== void 0)
46855
+ args.original_quote_id__isNull = opts["originalQuoteId.isNull"];
46856
+ if (opts["originalQuoteId.isNotNull"] !== void 0)
46857
+ args.original_quote_id__isNotNull = opts["originalQuoteId.isNotNull"];
45946
46858
  if (opts.customerId !== void 0)
45947
46859
  args.customer_id = opts.customerId;
45948
46860
  if (opts["customerId.not"] !== void 0)
45949
46861
  args.customer_id__not = opts["customerId.not"];
45950
- if (opts["customerId.isNull"] !== void 0)
45951
- args.customer_id__isNull = opts["customerId.isNull"];
45952
- if (opts["customerId.isNotNull"] !== void 0)
45953
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
45954
46862
  if (opts["customerId.equals"] !== void 0)
45955
46863
  args.customer_id__equals = opts["customerId.equals"];
45956
46864
  if (opts["customerId.contains"] !== void 0)
@@ -45959,16 +46867,16 @@ Examples:
45959
46867
  args.customer_id__startsWith = opts["customerId.startsWith"];
45960
46868
  if (opts["customerId.endWith"] !== void 0)
45961
46869
  args.customer_id__endWith = opts["customerId.endWith"];
46870
+ if (opts["customerId.isNull"] !== void 0)
46871
+ args.customer_id__isNull = opts["customerId.isNull"];
46872
+ if (opts["customerId.isNotNull"] !== void 0)
46873
+ args.customer_id__isNotNull = opts["customerId.isNotNull"];
45962
46874
  if (opts.invoicingEntityId !== void 0)
45963
46875
  args.invoicing_entity_id = opts.invoicingEntityId;
45964
46876
  if (opts.purchaseOrder !== void 0)
45965
46877
  args.purchase_order = opts.purchaseOrder;
45966
46878
  if (opts["purchaseOrder.not"] !== void 0)
45967
46879
  args.purchase_order__not = opts["purchaseOrder.not"];
45968
- if (opts["purchaseOrder.isNull"] !== void 0)
45969
- args.purchase_order__isNull = opts["purchaseOrder.isNull"];
45970
- if (opts["purchaseOrder.isNotNull"] !== void 0)
45971
- args.purchase_order__isNotNull = opts["purchaseOrder.isNotNull"];
45972
46880
  if (opts["purchaseOrder.equals"] !== void 0)
45973
46881
  args.purchase_order__equals = opts["purchaseOrder.equals"];
45974
46882
  if (opts["purchaseOrder.contains"] !== void 0)
@@ -45977,6 +46885,10 @@ Examples:
45977
46885
  args.purchase_order__startsWith = opts["purchaseOrder.startsWith"];
45978
46886
  if (opts["purchaseOrder.endWith"] !== void 0)
45979
46887
  args.purchase_order__endWith = opts["purchaseOrder.endWith"];
46888
+ if (opts["purchaseOrder.isNull"] !== void 0)
46889
+ args.purchase_order__isNull = opts["purchaseOrder.isNull"];
46890
+ if (opts["purchaseOrder.isNotNull"] !== void 0)
46891
+ args.purchase_order__isNotNull = opts["purchaseOrder.isNotNull"];
45980
46892
  if (opts.customProperties !== void 0)
45981
46893
  args.custom_properties = opts.customProperties;
45982
46894
  if (opts.invoiceDrafts !== void 0)
@@ -45987,10 +46899,6 @@ Examples:
45987
46899
  args.updated_at = opts.updatedAt;
45988
46900
  if (opts["updatedAt.not"] !== void 0)
45989
46901
  args.updated_at__not = opts["updatedAt.not"];
45990
- if (opts["updatedAt.isNull"] !== void 0)
45991
- args.updated_at__isNull = opts["updatedAt.isNull"];
45992
- if (opts["updatedAt.isNotNull"] !== void 0)
45993
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
45994
46902
  if (opts["updatedAt.equals"] !== void 0)
45995
46903
  args.updated_at__equals = opts["updatedAt.equals"];
45996
46904
  if (opts["updatedAt.lt"] !== void 0)
@@ -46005,10 +46913,6 @@ Examples:
46005
46913
  args.cancel_at = opts.cancelAt;
46006
46914
  if (opts["cancelAt.not"] !== void 0)
46007
46915
  args.cancel_at__not = opts["cancelAt.not"];
46008
- if (opts["cancelAt.isNull"] !== void 0)
46009
- args.cancel_at__isNull = opts["cancelAt.isNull"];
46010
- if (opts["cancelAt.isNotNull"] !== void 0)
46011
- args.cancel_at__isNotNull = opts["cancelAt.isNotNull"];
46012
46916
  if (opts["cancelAt.equals"] !== void 0)
46013
46917
  args.cancel_at__equals = opts["cancelAt.equals"];
46014
46918
  if (opts["cancelAt.lt"] !== void 0)
@@ -46019,6 +46923,10 @@ Examples:
46019
46923
  args.cancel_at__gt = opts["cancelAt.gt"];
46020
46924
  if (opts["cancelAt.gte"] !== void 0)
46021
46925
  args.cancel_at__gte = opts["cancelAt.gte"];
46926
+ if (opts["cancelAt.isNull"] !== void 0)
46927
+ args.cancel_at__isNull = opts["cancelAt.isNull"];
46928
+ if (opts["cancelAt.isNotNull"] !== void 0)
46929
+ args.cancel_at__isNotNull = opts["cancelAt.isNotNull"];
46022
46930
  if (opts["contractStart.gte"] !== void 0)
46023
46931
  args.contract_start__gte = opts["contractStart.gte"];
46024
46932
  if (opts["contractStart.lte"] !== void 0)
@@ -46046,52 +46954,48 @@ Examples:
46046
46954
  "status__in",
46047
46955
  "currency",
46048
46956
  "currency__not",
46049
- "currency__isNull",
46050
- "currency__isNotNull",
46051
46957
  "currency__equals",
46052
46958
  "currency__contains",
46053
46959
  "currency__startsWith",
46054
46960
  "currency__endWith",
46055
46961
  "plan_id",
46056
46962
  "plan_id__not",
46057
- "plan_id__isNull",
46058
- "plan_id__isNotNull",
46059
46963
  "plan_id__equals",
46060
46964
  "plan_id__contains",
46061
46965
  "plan_id__startsWith",
46062
46966
  "plan_id__endWith",
46967
+ "plan_id__isNull",
46968
+ "plan_id__isNotNull",
46063
46969
  "original_quote_id",
46064
46970
  "original_quote_id__not",
46065
- "original_quote_id__isNull",
46066
- "original_quote_id__isNotNull",
46067
46971
  "original_quote_id__equals",
46068
46972
  "original_quote_id__contains",
46069
46973
  "original_quote_id__startsWith",
46070
46974
  "original_quote_id__endWith",
46975
+ "original_quote_id__isNull",
46976
+ "original_quote_id__isNotNull",
46071
46977
  "customer_id",
46072
46978
  "customer_id__not",
46073
- "customer_id__isNull",
46074
- "customer_id__isNotNull",
46075
46979
  "customer_id__equals",
46076
46980
  "customer_id__contains",
46077
46981
  "customer_id__startsWith",
46078
46982
  "customer_id__endWith",
46983
+ "customer_id__isNull",
46984
+ "customer_id__isNotNull",
46079
46985
  "invoicing_entity_id",
46080
46986
  "purchase_order",
46081
46987
  "purchase_order__not",
46082
- "purchase_order__isNull",
46083
- "purchase_order__isNotNull",
46084
46988
  "purchase_order__equals",
46085
46989
  "purchase_order__contains",
46086
46990
  "purchase_order__startsWith",
46087
46991
  "purchase_order__endWith",
46992
+ "purchase_order__isNull",
46993
+ "purchase_order__isNotNull",
46088
46994
  "custom_properties",
46089
46995
  "invoice_drafts",
46090
46996
  "integration_entity_id",
46091
46997
  "updated_at",
46092
46998
  "updated_at__not",
46093
- "updated_at__isNull",
46094
- "updated_at__isNotNull",
46095
46999
  "updated_at__equals",
46096
47000
  "updated_at__lt",
46097
47001
  "updated_at__lte",
@@ -46099,13 +47003,13 @@ Examples:
46099
47003
  "updated_at__gte",
46100
47004
  "cancel_at",
46101
47005
  "cancel_at__not",
46102
- "cancel_at__isNull",
46103
- "cancel_at__isNotNull",
46104
47006
  "cancel_at__equals",
46105
47007
  "cancel_at__lt",
46106
47008
  "cancel_at__lte",
46107
47009
  "cancel_at__gt",
46108
47010
  "cancel_at__gte",
47011
+ "cancel_at__isNull",
47012
+ "cancel_at__isNotNull",
46109
47013
  "contract_start__gte",
46110
47014
  "contract_start__lte",
46111
47015
  "contract_end__gte",
@@ -46392,7 +47296,7 @@ Examples:
46392
47296
  // build/commands/generated/subscriptions-transitions.js
46393
47297
  function registerSubscriptions_TransitionsCommands(parent) {
46394
47298
  const resource = parent.command("subscriptions-transitions").description("Manage subscriptions > transitions");
46395
- resource.command("list-subscription-transitions").description(`List subscription transitions (migrations from one subscription to another). Filterable and paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--source-subscription-id <value>", `source_subscription_id`).option("--source-subscription-id.not <value>", `source_subscription_id__not`).option("--source-subscription-id.is-null <value>", `source_subscription_id__isNull`).option("--source-subscription-id.is-not-null <value>", `source_subscription_id__isNotNull`).option("--source-subscription-id.equals <value>", `source_subscription_id__equals`).option("--source-subscription-id.contains <value>", `source_subscription_id__contains`).option("--source-subscription-id.starts-with <value>", `source_subscription_id__startsWith`).option("--source-subscription-id.end-with <value>", `source_subscription_id__endWith`).option("--base-subscription-id <value>", `base_subscription_id`).option("--base-subscription-id.not <value>", `base_subscription_id__not`).option("--base-subscription-id.is-null <value>", `base_subscription_id__isNull`).option("--base-subscription-id.is-not-null <value>", `base_subscription_id__isNotNull`).option("--base-subscription-id.equals <value>", `base_subscription_id__equals`).option("--base-subscription-id.contains <value>", `base_subscription_id__contains`).option("--base-subscription-id.starts-with <value>", `base_subscription_id__startsWith`).option("--base-subscription-id.end-with <value>", `base_subscription_id__endWith`).option("--target-subscription-id <value>", `target_subscription_id`).option("--target-subscription-id.not <value>", `target_subscription_id__not`).option("--target-subscription-id.is-null <value>", `target_subscription_id__isNull`).option("--target-subscription-id.is-not-null <value>", `target_subscription_id__isNotNull`).option("--target-subscription-id.equals <value>", `target_subscription_id__equals`).option("--target-subscription-id.contains <value>", `target_subscription_id__contains`).option("--target-subscription-id.starts-with <value>", `target_subscription_id__startsWith`).option("--target-subscription-id.end-with <value>", `target_subscription_id__endWith`).option("--transition-date <value>", `transition_date`).option("--transition-date.not <value>", `transition_date__not`).option("--transition-date.is-null <value>", `transition_date__isNull`).option("--transition-date.is-not-null <value>", `transition_date__isNotNull`).option("--transition-date.equals <value>", `transition_date__equals`).option("--transition-date.lt <value>", `transition_date__lt`).option("--transition-date.lte <value>", `transition_date__lte`).option("--transition-date.gt <value>", `transition_date__gt`).option("--transition-date.gte <value>", `transition_date__gte`).option("--transitioned-at <value>", `transitioned_at`).option("--transitioned-at.not <value>", `transitioned_at__not`).option("--transitioned-at.is-null <value>", `transitioned_at__isNull`).option("--transitioned-at.is-not-null <value>", `transitioned_at__isNotNull`).option("--transitioned-at.equals <value>", `transitioned_at__equals`).option("--transitioned-at.lt <value>", `transitioned_at__lt`).option("--transitioned-at.lte <value>", `transitioned_at__lte`).option("--transitioned-at.gt <value>", `transitioned_at__gt`).option("--transitioned-at.gte <value>", `transitioned_at__gte`).addHelpText("after", `
47299
+ resource.command("list-subscription-transitions").description(`List subscription transitions (migrations from one subscription to another). Filterable and paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--source-subscription-id <value>", `source_subscription_id`).option("--source-subscription-id.not <value>", `source_subscription_id__not`).option("--source-subscription-id.equals <value>", `source_subscription_id__equals`).option("--source-subscription-id.contains <value>", `source_subscription_id__contains`).option("--source-subscription-id.starts-with <value>", `source_subscription_id__startsWith`).option("--source-subscription-id.end-with <value>", `source_subscription_id__endWith`).option("--base-subscription-id <value>", `base_subscription_id`).option("--base-subscription-id.not <value>", `base_subscription_id__not`).option("--base-subscription-id.equals <value>", `base_subscription_id__equals`).option("--base-subscription-id.contains <value>", `base_subscription_id__contains`).option("--base-subscription-id.starts-with <value>", `base_subscription_id__startsWith`).option("--base-subscription-id.end-with <value>", `base_subscription_id__endWith`).option("--target-subscription-id <value>", `target_subscription_id`).option("--target-subscription-id.not <value>", `target_subscription_id__not`).option("--target-subscription-id.equals <value>", `target_subscription_id__equals`).option("--target-subscription-id.contains <value>", `target_subscription_id__contains`).option("--target-subscription-id.starts-with <value>", `target_subscription_id__startsWith`).option("--target-subscription-id.end-with <value>", `target_subscription_id__endWith`).option("--target-subscription-id.is-null <value>", `target_subscription_id__isNull`).option("--target-subscription-id.is-not-null <value>", `target_subscription_id__isNotNull`).option("--transition-date <value>", `transition_date`).option("--transition-date.not <value>", `transition_date__not`).option("--transition-date.equals <value>", `transition_date__equals`).option("--transition-date.lt <value>", `transition_date__lt`).option("--transition-date.lte <value>", `transition_date__lte`).option("--transition-date.gt <value>", `transition_date__gt`).option("--transition-date.gte <value>", `transition_date__gte`).option("--transition-date.is-null <value>", `transition_date__isNull`).option("--transition-date.is-not-null <value>", `transition_date__isNotNull`).option("--transitioned-at <value>", `transitioned_at`).option("--transitioned-at.not <value>", `transitioned_at__not`).option("--transitioned-at.equals <value>", `transitioned_at__equals`).option("--transitioned-at.lt <value>", `transitioned_at__lt`).option("--transitioned-at.lte <value>", `transitioned_at__lte`).option("--transitioned-at.gt <value>", `transitioned_at__gt`).option("--transitioned-at.gte <value>", `transitioned_at__gte`).option("--transitioned-at.is-null <value>", `transitioned_at__isNull`).option("--transitioned-at.is-not-null <value>", `transitioned_at__isNotNull`).addHelpText("after", `
46396
47300
  Examples:
46397
47301
  hyperline subscriptions-transitions list-subscription-transitions
46398
47302
  hyperline subscriptions-transitions list-subscription-transitions --take <take> --status <status>`).action(async (opts) => {
@@ -46410,10 +47314,6 @@ Examples:
46410
47314
  args.source_subscription_id = opts.sourceSubscriptionId;
46411
47315
  if (opts["sourceSubscriptionId.not"] !== void 0)
46412
47316
  args.source_subscription_id__not = opts["sourceSubscriptionId.not"];
46413
- if (opts["sourceSubscriptionId.isNull"] !== void 0)
46414
- args.source_subscription_id__isNull = opts["sourceSubscriptionId.isNull"];
46415
- if (opts["sourceSubscriptionId.isNotNull"] !== void 0)
46416
- args.source_subscription_id__isNotNull = opts["sourceSubscriptionId.isNotNull"];
46417
47317
  if (opts["sourceSubscriptionId.equals"] !== void 0)
46418
47318
  args.source_subscription_id__equals = opts["sourceSubscriptionId.equals"];
46419
47319
  if (opts["sourceSubscriptionId.contains"] !== void 0)
@@ -46426,10 +47326,6 @@ Examples:
46426
47326
  args.base_subscription_id = opts.baseSubscriptionId;
46427
47327
  if (opts["baseSubscriptionId.not"] !== void 0)
46428
47328
  args.base_subscription_id__not = opts["baseSubscriptionId.not"];
46429
- if (opts["baseSubscriptionId.isNull"] !== void 0)
46430
- args.base_subscription_id__isNull = opts["baseSubscriptionId.isNull"];
46431
- if (opts["baseSubscriptionId.isNotNull"] !== void 0)
46432
- args.base_subscription_id__isNotNull = opts["baseSubscriptionId.isNotNull"];
46433
47329
  if (opts["baseSubscriptionId.equals"] !== void 0)
46434
47330
  args.base_subscription_id__equals = opts["baseSubscriptionId.equals"];
46435
47331
  if (opts["baseSubscriptionId.contains"] !== void 0)
@@ -46442,10 +47338,6 @@ Examples:
46442
47338
  args.target_subscription_id = opts.targetSubscriptionId;
46443
47339
  if (opts["targetSubscriptionId.not"] !== void 0)
46444
47340
  args.target_subscription_id__not = opts["targetSubscriptionId.not"];
46445
- if (opts["targetSubscriptionId.isNull"] !== void 0)
46446
- args.target_subscription_id__isNull = opts["targetSubscriptionId.isNull"];
46447
- if (opts["targetSubscriptionId.isNotNull"] !== void 0)
46448
- args.target_subscription_id__isNotNull = opts["targetSubscriptionId.isNotNull"];
46449
47341
  if (opts["targetSubscriptionId.equals"] !== void 0)
46450
47342
  args.target_subscription_id__equals = opts["targetSubscriptionId.equals"];
46451
47343
  if (opts["targetSubscriptionId.contains"] !== void 0)
@@ -46454,14 +47346,14 @@ Examples:
46454
47346
  args.target_subscription_id__startsWith = opts["targetSubscriptionId.startsWith"];
46455
47347
  if (opts["targetSubscriptionId.endWith"] !== void 0)
46456
47348
  args.target_subscription_id__endWith = opts["targetSubscriptionId.endWith"];
47349
+ if (opts["targetSubscriptionId.isNull"] !== void 0)
47350
+ args.target_subscription_id__isNull = opts["targetSubscriptionId.isNull"];
47351
+ if (opts["targetSubscriptionId.isNotNull"] !== void 0)
47352
+ args.target_subscription_id__isNotNull = opts["targetSubscriptionId.isNotNull"];
46457
47353
  if (opts.transitionDate !== void 0)
46458
47354
  args.transition_date = opts.transitionDate;
46459
47355
  if (opts["transitionDate.not"] !== void 0)
46460
47356
  args.transition_date__not = opts["transitionDate.not"];
46461
- if (opts["transitionDate.isNull"] !== void 0)
46462
- args.transition_date__isNull = opts["transitionDate.isNull"];
46463
- if (opts["transitionDate.isNotNull"] !== void 0)
46464
- args.transition_date__isNotNull = opts["transitionDate.isNotNull"];
46465
47357
  if (opts["transitionDate.equals"] !== void 0)
46466
47358
  args.transition_date__equals = opts["transitionDate.equals"];
46467
47359
  if (opts["transitionDate.lt"] !== void 0)
@@ -46472,14 +47364,14 @@ Examples:
46472
47364
  args.transition_date__gt = opts["transitionDate.gt"];
46473
47365
  if (opts["transitionDate.gte"] !== void 0)
46474
47366
  args.transition_date__gte = opts["transitionDate.gte"];
47367
+ if (opts["transitionDate.isNull"] !== void 0)
47368
+ args.transition_date__isNull = opts["transitionDate.isNull"];
47369
+ if (opts["transitionDate.isNotNull"] !== void 0)
47370
+ args.transition_date__isNotNull = opts["transitionDate.isNotNull"];
46475
47371
  if (opts.transitionedAt !== void 0)
46476
47372
  args.transitioned_at = opts.transitionedAt;
46477
47373
  if (opts["transitionedAt.not"] !== void 0)
46478
47374
  args.transitioned_at__not = opts["transitionedAt.not"];
46479
- if (opts["transitionedAt.isNull"] !== void 0)
46480
- args.transitioned_at__isNull = opts["transitionedAt.isNull"];
46481
- if (opts["transitionedAt.isNotNull"] !== void 0)
46482
- args.transitioned_at__isNotNull = opts["transitionedAt.isNotNull"];
46483
47375
  if (opts["transitionedAt.equals"] !== void 0)
46484
47376
  args.transitioned_at__equals = opts["transitionedAt.equals"];
46485
47377
  if (opts["transitionedAt.lt"] !== void 0)
@@ -46490,6 +47382,10 @@ Examples:
46490
47382
  args.transitioned_at__gt = opts["transitionedAt.gt"];
46491
47383
  if (opts["transitionedAt.gte"] !== void 0)
46492
47384
  args.transitioned_at__gte = opts["transitionedAt.gte"];
47385
+ if (opts["transitionedAt.isNull"] !== void 0)
47386
+ args.transitioned_at__isNull = opts["transitionedAt.isNull"];
47387
+ if (opts["transitionedAt.isNotNull"] !== void 0)
47388
+ args.transitioned_at__isNotNull = opts["transitionedAt.isNotNull"];
46493
47389
  if (opts.take !== void 0)
46494
47390
  args.take = Number(opts.take);
46495
47391
  if (opts.skip !== void 0)
@@ -46505,50 +47401,46 @@ Examples:
46505
47401
  "status__in",
46506
47402
  "source_subscription_id",
46507
47403
  "source_subscription_id__not",
46508
- "source_subscription_id__isNull",
46509
- "source_subscription_id__isNotNull",
46510
47404
  "source_subscription_id__equals",
46511
47405
  "source_subscription_id__contains",
46512
47406
  "source_subscription_id__startsWith",
46513
47407
  "source_subscription_id__endWith",
46514
47408
  "base_subscription_id",
46515
47409
  "base_subscription_id__not",
46516
- "base_subscription_id__isNull",
46517
- "base_subscription_id__isNotNull",
46518
47410
  "base_subscription_id__equals",
46519
47411
  "base_subscription_id__contains",
46520
47412
  "base_subscription_id__startsWith",
46521
47413
  "base_subscription_id__endWith",
46522
47414
  "target_subscription_id",
46523
47415
  "target_subscription_id__not",
46524
- "target_subscription_id__isNull",
46525
- "target_subscription_id__isNotNull",
46526
47416
  "target_subscription_id__equals",
46527
47417
  "target_subscription_id__contains",
46528
47418
  "target_subscription_id__startsWith",
46529
47419
  "target_subscription_id__endWith",
47420
+ "target_subscription_id__isNull",
47421
+ "target_subscription_id__isNotNull",
46530
47422
  "transition_date",
46531
47423
  "transition_date__not",
46532
- "transition_date__isNull",
46533
- "transition_date__isNotNull",
46534
47424
  "transition_date__equals",
46535
47425
  "transition_date__lt",
46536
47426
  "transition_date__lte",
46537
47427
  "transition_date__gt",
46538
47428
  "transition_date__gte",
47429
+ "transition_date__isNull",
47430
+ "transition_date__isNotNull",
46539
47431
  "transitioned_at",
46540
47432
  "transitioned_at__not",
46541
- "transitioned_at__isNull",
46542
- "transitioned_at__isNotNull",
46543
47433
  "transitioned_at__equals",
46544
47434
  "transitioned_at__lt",
46545
47435
  "transitioned_at__lte",
46546
47436
  "transitioned_at__gt",
46547
- "transitioned_at__gte"
47437
+ "transitioned_at__gte",
47438
+ "transitioned_at__isNull",
47439
+ "transitioned_at__isNotNull"
46548
47440
  ]
46549
47441
  });
46550
47442
  });
46551
- resource.command("create-subscription-transition").description(`Submit a transition from one subscription to another. The result may be pending approval, applied immediately, or scheduled.`).requiredOption("--source-subscription-id <value>", `The ID of the subscription to transition from`).option("--name <value>", `An optional name for the transition`).option("--calculation-method <value>", `The calculation method to use for the transition. 'do_not_charge' will not generate any transition invoice. 'pro_rata' will generate a prorated invoice for the remaining period. 'pro_rata_separate_documents' issues a credit note for the current period (the amount invoiced when 'last_renewal', otherwise a prorated cancellation credit) and a separate invoice for the new configuration.`).option("--billing-cycle-transition-method <value>", `The billing cycle transition method to use. 'keep_current_billing_cycle' (the default) keeps the current billing cycle dates; the request is rejected when the phases share no product billing periodicity, as the cycle cannot then be preserved \u2014 use 'align_to_new_billing_cycle' in that case. 'align_to_new_billing_cycle' aligns the billing cycle to the transition date.`).requiredOption("--application-schedule <value>", `When the transition should be applied: 'immediately', 'scheduled' for a specific date, or 'last_renewal' to apply it retroactively to the start of the current billing period (refunding what was already invoiced for that period and re-charging the new configuration). Past dates within the current billing period are supported and will be applied immediately.`).option("--transition-date <value>", `The date at which the transition should occur. Only applicable if the application schedule is 'scheduled'. Can be a past date within the current billing period. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).requiredOption("--target-subscription <json>", `The configuration of the subscription to transition to`).addHelpText("after", `
47443
+ resource.command("create-subscription-transition").description(`Submit a transition from one subscription to another. The result may be pending approval, applied immediately, or scheduled.`).requiredOption("--source-subscription-id <value>", `The ID of the subscription to transition from`).option("--name <value>", `An optional name for the transition`).option("--calculation-method <value>", `The calculation method to use for the transition. 'do_not_charge' will not generate any transition invoice. 'pro_rata' will generate a prorated invoice for the remaining period. 'pro_rata_separate_documents' issues a credit note for the current period (the amount invoiced when 'last_renewal', otherwise a prorated cancellation credit) and a separate invoice for the new configuration.`).option("--billing-cycle-transition-method <value>", `The billing cycle transition method to use. 'keep_current_billing_cycle' (the default) keeps the current billing cycle dates; the request is rejected when the phases share no product billing periodicity, as the cycle cannot then be preserved \u2014 use 'align_to_new_billing_cycle' in that case. 'align_to_new_billing_cycle' aligns the billing cycle to the transition date.`).requiredOption("--application-schedule <value>", `When the transition should be applied: 'immediately', 'scheduled' for a specific date, or 'last_renewal' to apply it retroactively to the start of the current billing period (refunding what was already invoiced for that period and re-charging the new configuration). Past dates within the current billing period are supported and will be applied immediately.`).option("--transition-date <value>", `The date at which the transition should occur. Only applicable if the application schedule is 'scheduled'. Can be a past date within the current billing period. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).requiredOption("--target-subscription <json>", `The configuration of the subscription to transition to. It is billed in the source subscription's currency, even when the customer's currency has changed: a template configuration in another currency is refused.`).addHelpText("after", `
46552
47444
  Examples:
46553
47445
  hyperline subscriptions-transitions create-subscription-transition --source-subscription-id <source_subscription_id> --application-schedule <application_schedule> --target-subscription <target_subscription>
46554
47446
  hyperline subscriptions-transitions create-subscription-transition --source-subscription-id <source_subscription_id> --application-schedule <application_schedule> --target-subscription <target_subscription> --name <name> --calculation-method <calculation_method>
@@ -46622,7 +47514,7 @@ Examples:
46622
47514
  // build/commands/generated/taxes.js
46623
47515
  function registerTaxesCommands(parent) {
46624
47516
  const resource = parent.command("taxes").description("Manage taxes");
46625
- resource.command("list-tax-rates").description(`List custom and default tax rate mappings with optional filters for id, name, description, and invoicing_entity_id. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).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("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).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.is-null <value>", `description__isNull`).option("--description.is-not-null <value>", `description__isNotNull`).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("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.is-null <value>", `invoicing_entity_id__isNull`).option("--invoicing-entity-id.is-not-null <value>", `invoicing_entity_id__isNotNull`).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`).addHelpText("after", `
47517
+ resource.command("list-tax-rates").description(`List custom and default tax rate mappings with optional filters for id, name, description, and invoicing_entity_id. 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("--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("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).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("--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`).addHelpText("after", `
46626
47518
  Examples:
46627
47519
  hyperline taxes list-tax-rates
46628
47520
  hyperline taxes list-tax-rates --take <take> --id <id>`).action(async (opts) => {
@@ -46636,10 +47528,6 @@ Examples:
46636
47528
  args.id = opts.id;
46637
47529
  if (opts["id.not"] !== void 0)
46638
47530
  args.id__not = opts["id.not"];
46639
- if (opts["id.isNull"] !== void 0)
46640
- args.id__isNull = opts["id.isNull"];
46641
- if (opts["id.isNotNull"] !== void 0)
46642
- args.id__isNotNull = opts["id.isNotNull"];
46643
47531
  if (opts["id.equals"] !== void 0)
46644
47532
  args.id__equals = opts["id.equals"];
46645
47533
  if (opts["id.contains"] !== void 0)
@@ -46652,10 +47540,6 @@ Examples:
46652
47540
  args.name = opts.name;
46653
47541
  if (opts["name.not"] !== void 0)
46654
47542
  args.name__not = opts["name.not"];
46655
- if (opts["name.isNull"] !== void 0)
46656
- args.name__isNull = opts["name.isNull"];
46657
- if (opts["name.isNotNull"] !== void 0)
46658
- args.name__isNotNull = opts["name.isNotNull"];
46659
47543
  if (opts["name.equals"] !== void 0)
46660
47544
  args.name__equals = opts["name.equals"];
46661
47545
  if (opts["name.contains"] !== void 0)
@@ -46664,14 +47548,14 @@ Examples:
46664
47548
  args.name__startsWith = opts["name.startsWith"];
46665
47549
  if (opts["name.endWith"] !== void 0)
46666
47550
  args.name__endWith = opts["name.endWith"];
47551
+ if (opts["name.isNull"] !== void 0)
47552
+ args.name__isNull = opts["name.isNull"];
47553
+ if (opts["name.isNotNull"] !== void 0)
47554
+ args.name__isNotNull = opts["name.isNotNull"];
46667
47555
  if (opts.description !== void 0)
46668
47556
  args.description = opts.description;
46669
47557
  if (opts["description.not"] !== void 0)
46670
47558
  args.description__not = opts["description.not"];
46671
- if (opts["description.isNull"] !== void 0)
46672
- args.description__isNull = opts["description.isNull"];
46673
- if (opts["description.isNotNull"] !== void 0)
46674
- args.description__isNotNull = opts["description.isNotNull"];
46675
47559
  if (opts["description.equals"] !== void 0)
46676
47560
  args.description__equals = opts["description.equals"];
46677
47561
  if (opts["description.contains"] !== void 0)
@@ -46680,14 +47564,14 @@ Examples:
46680
47564
  args.description__startsWith = opts["description.startsWith"];
46681
47565
  if (opts["description.endWith"] !== void 0)
46682
47566
  args.description__endWith = opts["description.endWith"];
47567
+ if (opts["description.isNull"] !== void 0)
47568
+ args.description__isNull = opts["description.isNull"];
47569
+ if (opts["description.isNotNull"] !== void 0)
47570
+ args.description__isNotNull = opts["description.isNotNull"];
46683
47571
  if (opts.invoicingEntityId !== void 0)
46684
47572
  args.invoicing_entity_id = opts.invoicingEntityId;
46685
47573
  if (opts["invoicingEntityId.not"] !== void 0)
46686
47574
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
46687
- if (opts["invoicingEntityId.isNull"] !== void 0)
46688
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
46689
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
46690
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
46691
47575
  if (opts["invoicingEntityId.equals"] !== void 0)
46692
47576
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
46693
47577
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -46709,32 +47593,28 @@ Examples:
46709
47593
  "skip",
46710
47594
  "id",
46711
47595
  "id__not",
46712
- "id__isNull",
46713
- "id__isNotNull",
46714
47596
  "id__equals",
46715
47597
  "id__contains",
46716
47598
  "id__startsWith",
46717
47599
  "id__endWith",
46718
47600
  "name",
46719
47601
  "name__not",
46720
- "name__isNull",
46721
- "name__isNotNull",
46722
47602
  "name__equals",
46723
47603
  "name__contains",
46724
47604
  "name__startsWith",
46725
47605
  "name__endWith",
47606
+ "name__isNull",
47607
+ "name__isNotNull",
46726
47608
  "description",
46727
47609
  "description__not",
46728
- "description__isNull",
46729
- "description__isNotNull",
46730
47610
  "description__equals",
46731
47611
  "description__contains",
46732
47612
  "description__startsWith",
46733
47613
  "description__endWith",
47614
+ "description__isNull",
47615
+ "description__isNotNull",
46734
47616
  "invoicing_entity_id",
46735
47617
  "invoicing_entity_id__not",
46736
- "invoicing_entity_id__isNull",
46737
- "invoicing_entity_id__isNotNull",
46738
47618
  "invoicing_entity_id__equals",
46739
47619
  "invoicing_entity_id__contains",
46740
47620
  "invoicing_entity_id__startsWith",
@@ -46825,16 +47705,44 @@ Examples:
46825
47705
  queryParamKeys: []
46826
47706
  });
46827
47707
  });
46828
- resource.command("list").description(`List transactions across all invoices, including transactions without an invoice allocation. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
47708
+ resource.command("list").description(`List transactions across all invoices, including transactions without an invoice allocation. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).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", `
46829
47709
  Examples:
46830
47710
  hyperline transactions list
46831
- hyperline transactions list --take <take>`).action(async (opts) => {
47711
+ hyperline transactions list --take <take> --created-at <created_at>`).action(async (opts) => {
46832
47712
  const ctx = resource.parent?.opts()._ctx;
46833
47713
  if (!ctx) {
46834
47714
  process.stderr.write("Error: Not authenticated\n");
46835
47715
  process.exit(1);
46836
47716
  }
46837
47717
  const args = {};
47718
+ if (opts.createdAt !== void 0)
47719
+ args.created_at = opts.createdAt;
47720
+ if (opts["createdAt.not"] !== void 0)
47721
+ args.created_at__not = opts["createdAt.not"];
47722
+ if (opts["createdAt.equals"] !== void 0)
47723
+ args.created_at__equals = opts["createdAt.equals"];
47724
+ if (opts["createdAt.lt"] !== void 0)
47725
+ args.created_at__lt = opts["createdAt.lt"];
47726
+ if (opts["createdAt.lte"] !== void 0)
47727
+ args.created_at__lte = opts["createdAt.lte"];
47728
+ if (opts["createdAt.gt"] !== void 0)
47729
+ args.created_at__gt = opts["createdAt.gt"];
47730
+ if (opts["createdAt.gte"] !== void 0)
47731
+ args.created_at__gte = opts["createdAt.gte"];
47732
+ if (opts.updatedAt !== void 0)
47733
+ args.updated_at = opts.updatedAt;
47734
+ if (opts["updatedAt.not"] !== void 0)
47735
+ args.updated_at__not = opts["updatedAt.not"];
47736
+ if (opts["updatedAt.equals"] !== void 0)
47737
+ args.updated_at__equals = opts["updatedAt.equals"];
47738
+ if (opts["updatedAt.lt"] !== void 0)
47739
+ args.updated_at__lt = opts["updatedAt.lt"];
47740
+ if (opts["updatedAt.lte"] !== void 0)
47741
+ args.updated_at__lte = opts["updatedAt.lte"];
47742
+ if (opts["updatedAt.gt"] !== void 0)
47743
+ args.updated_at__gt = opts["updatedAt.gt"];
47744
+ if (opts["updatedAt.gte"] !== void 0)
47745
+ args.updated_at__gte = opts["updatedAt.gte"];
46838
47746
  if (opts.take !== void 0)
46839
47747
  args.take = Number(opts.take);
46840
47748
  if (opts.skip !== void 0)
@@ -46843,7 +47751,24 @@ Examples:
46843
47751
  method: "GET",
46844
47752
  path: "/v1/transactions",
46845
47753
  args,
46846
- queryParamKeys: ["take", "skip"]
47754
+ queryParamKeys: [
47755
+ "take",
47756
+ "skip",
47757
+ "created_at",
47758
+ "created_at__not",
47759
+ "created_at__equals",
47760
+ "created_at__lt",
47761
+ "created_at__lte",
47762
+ "created_at__gt",
47763
+ "created_at__gte",
47764
+ "updated_at",
47765
+ "updated_at__not",
47766
+ "updated_at__equals",
47767
+ "updated_at__lt",
47768
+ "updated_at__lte",
47769
+ "updated_at__gt",
47770
+ "updated_at__gte"
47771
+ ]
46847
47772
  });
46848
47773
  });
46849
47774
  resource.command("get").description(`Retrieve a transaction by ID, including its current invoice allocations.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
@@ -47313,11 +48238,17 @@ function registerAllCommands(program2) {
47313
48238
  registerAi_BillingCommands(program2);
47314
48239
  registerAi_CostsCommands(program2);
47315
48240
  registerAnalyticsCommands(program2);
48241
+ registerApproval_RequestsCommands(program2);
48242
+ registerApproval_WorkflowsCommands(program2);
47316
48243
  registerBank_AccountsCommands(program2);
48244
+ registerCatalogCommands(program2);
47317
48245
  registerCompaniesCommands(program2);
48246
+ registerContracts_ClausesCommands(program2);
48247
+ registerContracts_DocumentsCommands(program2);
47318
48248
  registerCouponsCommands(program2);
47319
48249
  registerCoupons_Promotion_CodesCommands(program2);
47320
48250
  registerCustomers_CreditsCommands(program2);
48251
+ registerCustomers_FeaturesCommands(program2);
47321
48252
  registerCustomers_Payment_MethodsCommands(program2);
47322
48253
  registerCustomers_AddressCommands(program2);
47323
48254
  registerCustomers_ShippingCommands(program2);
@@ -47326,12 +48257,14 @@ function registerAllCommands(program2) {
47326
48257
  registerOrganisationsCommands(program2);
47327
48258
  registerCustomers_SegmentsCommands(program2);
47328
48259
  registerExportsCommands(program2);
48260
+ registerFeaturesCommands(program2);
47329
48261
  registerFilesCommands(program2);
47330
48262
  registerInvoicesCommands(program2);
47331
48263
  registerInvoices_TransactionsCommands(program2);
47332
48264
  registerInvoicing_EntitiesCommands(program2);
47333
48265
  registerAi_MonitoringCommands(program2);
47334
48266
  registerPaymentsCommands(program2);
48267
+ registerProducts_FeaturesCommands(program2);
47335
48268
  registerProductsCommands(program2);
47336
48269
  registerPrice_ConfigurationsCommands(program2);
47337
48270
  registerQuotesCommands(program2);
@@ -63392,7 +64325,26 @@ var de = {
63392
64325
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Diese Position wurde f\xFCr den anteiligen Zeitraum in Rechnung gestellt",
63393
64326
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Betrag von {{amount}} f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
63394
64327
  "subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren",
63395
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben"
64328
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben",
64329
+ "quotes.blockers.quote_not_draft": "Setzen Sie das Angebot auf Entwurf zur\xFCck, bevor Sie seine Konfigurationen \xE4ndern",
64330
+ "quotes.blockers.quote_expiration_date_missing": "Das Angebot muss ein Ablaufdatum haben, um zur Genehmigung gesendet zu werden",
64331
+ "quotes.blockers.quote_configuration_missing": "F\xFCgen Sie mindestens eine Konfiguration hinzu, bevor Sie das Angebot einreichen",
64332
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Abonnement\xE4nderungen m\xFCssen den Kunden des Angebots verwenden",
64333
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Aktivieren Sie mehrere Konfigurationen, bevor Sie einen untergeordneten Kunden zuweisen",
64334
+ "quotes.blockers.quote_configuration_customer_not_child": "W\xE4hlen Sie einen untergeordneten Kunden des Angebotskunden",
64335
+ "quotes.blockers.quote_configuration_type_mismatch": "Die verkn\xFCpfte Konfiguration entspricht nicht dem Konfigurationstyp",
64336
+ "quotes.blockers.quote_configuration_not_draft": "W\xE4hlen Sie eine Konfiguration im Entwurf",
64337
+ "quotes.blockers.quote_configuration_customer_mismatch": "Die Konfiguration muss zum Kunden der Konfiguration geh\xF6ren",
64338
+ "quotes.blockers.quote_configuration_currency_mismatch": "Die Konfiguration muss die W\xE4hrung des Angebots verwenden",
64339
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "Die Rechnung muss die Rechnungsstellungseinheit des Angebots verwenden",
64340
+ "quotes.blockers.quote_configuration_already_linked": "Die Konfiguration ist bereits mit einer Angebotskonfiguration verkn\xFCpft",
64341
+ "quotes.blockers.quote_configuration_not_subscription_update": "W\xE4hlen Sie eine Konfiguration f\xFCr eine Abonnement\xE4nderung",
64342
+ "quotes.blockers.quote_configuration_not_new_subscription": "W\xE4hlen Sie eine Konfiguration f\xFCr ein neues Abonnement",
64343
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Ein Abonnement kann in einem Angebot nur einmal ge\xE4ndert werden",
64344
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Jedes Produkt muss aus dem Konto des Abrechnungsanbieters des ge\xE4nderten Abonnements stammen",
64345
+ "quotes.blockers.quote_draft_invoice_missing": "Das Angebot muss eine Rechnung im Entwurf haben, um abgeschlossen zu werden",
64346
+ "quotes.blockers.quote_draft_subscription_missing": "Das Angebot muss ein Abonnement im Entwurf haben, um abgeschlossen zu werden",
64347
+ "quotes.blockers.quote_expiry_after_transition_date": "Das Ablaufdatum des Angebots muss sp\xE4testens am Ende des aktuellen Abrechnungszeitraums liegen, oder am geplanten \xDCbergangsdatum, wenn dieses sp\xE4ter liegt"
63396
64348
  };
63397
64349
 
63398
64350
  // ../hyperline-i18n/build/locales/en.js
@@ -63442,7 +64394,26 @@ var en = {
63442
64394
  "accounting.revrec.closedPeriodFallbackNote": " (posted to next open period \u2014 target accounting period closed; original date {{originalDate}})",
63443
64395
  "einvoicing.paymentProcessed": "Payment processed",
63444
64396
  "einvoicing.paymentReceived": "Payment received",
63445
- "einvoicing.paymentFromWallet": "Payment from wallet"
64397
+ "einvoicing.paymentFromWallet": "Payment from wallet",
64398
+ "quotes.blockers.quote_not_draft": "Redraft the quote before changing its configurations",
64399
+ "quotes.blockers.quote_expiration_date_missing": "Quote must have an expiration date to be sent for approval",
64400
+ "quotes.blockers.quote_configuration_missing": "Add at least one configuration before submitting the quote",
64401
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Subscription updates must use the quote customer",
64402
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Enable multiple configurations before assigning a child customer",
64403
+ "quotes.blockers.quote_configuration_customer_not_child": "Select a child customer of the quote customer",
64404
+ "quotes.blockers.quote_configuration_type_mismatch": "The linked configuration does not match the configuration type",
64405
+ "quotes.blockers.quote_configuration_not_draft": "Select a draft configuration",
64406
+ "quotes.blockers.quote_configuration_customer_mismatch": "The configuration must belong to the configuration customer",
64407
+ "quotes.blockers.quote_configuration_currency_mismatch": "The configuration must use the quote currency",
64408
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "The invoice must use the quote invoicing entity",
64409
+ "quotes.blockers.quote_configuration_already_linked": "The configuration is already linked to a quote configuration",
64410
+ "quotes.blockers.quote_configuration_not_subscription_update": "Select a subscription update configuration",
64411
+ "quotes.blockers.quote_configuration_not_new_subscription": "Select a new subscription configuration",
64412
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "A subscription can only be updated once in a quote",
64413
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Every product must come from the billing provider account of the subscription being updated",
64414
+ "quotes.blockers.quote_draft_invoice_missing": "Quote must have a draft invoice to be finalized",
64415
+ "quotes.blockers.quote_draft_subscription_missing": "Quote must have a draft subscription to be finalized",
64416
+ "quotes.blockers.quote_expiry_after_transition_date": "The quote expiration date must be on or before the end of the current billing period, or the scheduled transition date when it falls later"
63446
64417
  };
63447
64418
 
63448
64419
  // ../hyperline-i18n/build/locales/es.js
@@ -63492,7 +64463,26 @@ var es = {
63492
64463
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta l\xEDnea ha sido facturada para el per\xEDodo prorrateado",
63493
64464
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importe de {{amount}} no facturado para el per\xEDodo prorrateado",
63494
64465
  "subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}",
63495
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado"
64466
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado",
64467
+ "quotes.blockers.quote_not_draft": "Vuelve a poner el presupuesto en borrador antes de cambiar sus configuraciones",
64468
+ "quotes.blockers.quote_expiration_date_missing": "El presupuesto debe tener una fecha de vencimiento para enviarse a aprobaci\xF3n",
64469
+ "quotes.blockers.quote_configuration_missing": "A\xF1ade al menos una configuraci\xF3n antes de enviar el presupuesto",
64470
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Las actualizaciones de suscripci\xF3n deben usar el cliente del presupuesto",
64471
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Activa las configuraciones m\xFAltiples antes de asignar un cliente hijo",
64472
+ "quotes.blockers.quote_configuration_customer_not_child": "Selecciona un cliente hijo del cliente del presupuesto",
64473
+ "quotes.blockers.quote_configuration_type_mismatch": "La configuraci\xF3n vinculada no coincide con el tipo de configuraci\xF3n",
64474
+ "quotes.blockers.quote_configuration_not_draft": "Selecciona una configuraci\xF3n en borrador",
64475
+ "quotes.blockers.quote_configuration_customer_mismatch": "La configuraci\xF3n debe pertenecer al cliente de la configuraci\xF3n",
64476
+ "quotes.blockers.quote_configuration_currency_mismatch": "La configuraci\xF3n debe usar la moneda del presupuesto",
64477
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "La factura debe usar la entidad de facturaci\xF3n del presupuesto",
64478
+ "quotes.blockers.quote_configuration_already_linked": "La configuraci\xF3n ya est\xE1 vinculada a una configuraci\xF3n de presupuesto",
64479
+ "quotes.blockers.quote_configuration_not_subscription_update": "Selecciona una configuraci\xF3n de actualizaci\xF3n de suscripci\xF3n",
64480
+ "quotes.blockers.quote_configuration_not_new_subscription": "Selecciona una configuraci\xF3n de nueva suscripci\xF3n",
64481
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Una suscripci\xF3n solo puede actualizarse una vez en un presupuesto",
64482
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Cada producto debe provenir de la cuenta del proveedor de facturaci\xF3n de la suscripci\xF3n actualizada",
64483
+ "quotes.blockers.quote_draft_invoice_missing": "El presupuesto debe tener una factura en borrador para finalizarse",
64484
+ "quotes.blockers.quote_draft_subscription_missing": "El presupuesto debe tener una suscripci\xF3n en borrador para finalizarse",
64485
+ "quotes.blockers.quote_expiry_after_transition_date": "La fecha de vencimiento del presupuesto debe ser, como m\xE1ximo, el final del periodo de facturaci\xF3n actual, o la fecha de transici\xF3n programada si es posterior"
63496
64486
  };
63497
64487
 
63498
64488
  // ../hyperline-i18n/build/locales/fr.js
@@ -63542,7 +64532,26 @@ var fr = {
63542
64532
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Cette ligne a \xE9t\xE9 factur\xE9e pour la p\xE9riode proratis\xE9e",
63543
64533
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Montant de {{amount}} non factur\xE9 pour la p\xE9riode proratis\xE9e",
63544
64534
  "subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}",
63545
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9"
64535
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9",
64536
+ "quotes.blockers.quote_not_draft": "Repassez le devis en brouillon avant de modifier ses configurations",
64537
+ "quotes.blockers.quote_expiration_date_missing": "Le devis doit avoir une date d'expiration pour \xEAtre envoy\xE9 en validation",
64538
+ "quotes.blockers.quote_configuration_missing": "Ajoutez au moins une configuration avant de soumettre le devis",
64539
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Les mises \xE0 jour d'abonnement doivent utiliser le client du devis",
64540
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Activez les configurations multiples avant d'assigner un client enfant",
64541
+ "quotes.blockers.quote_configuration_customer_not_child": "S\xE9lectionnez un client enfant du client du devis",
64542
+ "quotes.blockers.quote_configuration_type_mismatch": "La configuration li\xE9e ne correspond pas au type de configuration",
64543
+ "quotes.blockers.quote_configuration_not_draft": "S\xE9lectionnez une configuration en brouillon",
64544
+ "quotes.blockers.quote_configuration_customer_mismatch": "La configuration doit appartenir au client de la configuration",
64545
+ "quotes.blockers.quote_configuration_currency_mismatch": "La configuration doit utiliser la devise du devis",
64546
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "La facture doit utiliser l'entit\xE9 de facturation du devis",
64547
+ "quotes.blockers.quote_configuration_already_linked": "La configuration est d\xE9j\xE0 li\xE9e \xE0 une configuration de devis",
64548
+ "quotes.blockers.quote_configuration_not_subscription_update": "S\xE9lectionnez une configuration de mise \xE0 jour d'abonnement",
64549
+ "quotes.blockers.quote_configuration_not_new_subscription": "S\xE9lectionnez une configuration de nouvel abonnement",
64550
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Un abonnement ne peut \xEAtre mis \xE0 jour qu'une seule fois dans un devis",
64551
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Chaque produit doit provenir du compte du fournisseur de facturation de l'abonnement mis \xE0 jour",
64552
+ "quotes.blockers.quote_draft_invoice_missing": "Le devis doit avoir une facture en brouillon pour \xEAtre finalis\xE9",
64553
+ "quotes.blockers.quote_draft_subscription_missing": "Le devis doit avoir un abonnement en brouillon pour \xEAtre finalis\xE9",
64554
+ "quotes.blockers.quote_expiry_after_transition_date": "La date d'expiration du devis doit \xEAtre au plus tard la fin de la p\xE9riode de facturation en cours, ou la date de transition planifi\xE9e si elle est post\xE9rieure"
63546
64555
  };
63547
64556
 
63548
64557
  // ../hyperline-i18n/build/locales/it.js
@@ -63592,7 +64601,26 @@ var it = {
63592
64601
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Questa voce \xE8 stata fatturata per il periodo proporzionato",
63593
64602
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importo di {{amount}} non fatturato per il periodo proporzionato",
63594
64603
  "subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}",
63595
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto"
64604
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto",
64605
+ "quotes.blockers.quote_not_draft": "Riporta il preventivo in bozza prima di modificarne le configurazioni",
64606
+ "quotes.blockers.quote_expiration_date_missing": "Il preventivo deve avere una data di scadenza per essere inviato per approvazione",
64607
+ "quotes.blockers.quote_configuration_missing": "Aggiungi almeno una configurazione prima di inviare il preventivo",
64608
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Gli aggiornamenti dell'abbonamento devono usare il cliente del preventivo",
64609
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Attiva le configurazioni multiple prima di assegnare un cliente figlio",
64610
+ "quotes.blockers.quote_configuration_customer_not_child": "Seleziona un cliente figlio del cliente del preventivo",
64611
+ "quotes.blockers.quote_configuration_type_mismatch": "La configurazione collegata non corrisponde al tipo di configurazione",
64612
+ "quotes.blockers.quote_configuration_not_draft": "Seleziona una configurazione in bozza",
64613
+ "quotes.blockers.quote_configuration_customer_mismatch": "La configurazione deve appartenere al cliente della configurazione",
64614
+ "quotes.blockers.quote_configuration_currency_mismatch": "La configurazione deve usare la valuta del preventivo",
64615
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "La fattura deve usare l'entit\xE0 di fatturazione del preventivo",
64616
+ "quotes.blockers.quote_configuration_already_linked": "La configurazione \xE8 gi\xE0 collegata a una configurazione del preventivo",
64617
+ "quotes.blockers.quote_configuration_not_subscription_update": "Seleziona una configurazione di aggiornamento dell'abbonamento",
64618
+ "quotes.blockers.quote_configuration_not_new_subscription": "Seleziona una configurazione di nuovo abbonamento",
64619
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Un abbonamento pu\xF2 essere aggiornato una sola volta in un preventivo",
64620
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Ogni prodotto deve provenire dall'account del provider di fatturazione dell'abbonamento aggiornato",
64621
+ "quotes.blockers.quote_draft_invoice_missing": "Il preventivo deve avere una fattura in bozza per essere finalizzato",
64622
+ "quotes.blockers.quote_draft_subscription_missing": "Il preventivo deve avere un abbonamento in bozza per essere finalizzato",
64623
+ "quotes.blockers.quote_expiry_after_transition_date": "La data di scadenza del preventivo deve essere entro la fine del periodo di fatturazione corrente, o la data di transizione pianificata se successiva"
63596
64624
  };
63597
64625
 
63598
64626
  // ../hyperline-i18n/build/locales/lt.js
@@ -63642,7 +64670,26 @@ var lt = {
63642
64670
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
63643
64671
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
63644
64672
  "subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
63645
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis"
64673
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis",
64674
+ "quotes.blockers.quote_not_draft": "Prie\u0161 keisdami pasi\u016Blymo konfig\u016Bracijas, gr\u0105\u017Einkite j\u012F \u012F juodra\u0161t\u012F",
64675
+ "quotes.blockers.quote_expiration_date_missing": "Pasi\u016Blymas turi tur\u0117ti galiojimo pabaigos dat\u0105, kad b\u016Bt\u0173 i\u0161si\u0173stas tvirtinti",
64676
+ "quotes.blockers.quote_configuration_missing": "Prie\u0161 pateikdami pasi\u016Blym\u0105, prid\u0117kite bent vien\u0105 konfig\u016Bracij\u0105",
64677
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Prenumeratos atnaujinimai turi naudoti pasi\u016Blymo klient\u0105",
64678
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Prie\u0161 priskirdami antrin\u012F klient\u0105, \u012Fjunkite kelias konfig\u016Bracijas",
64679
+ "quotes.blockers.quote_configuration_customer_not_child": "Pasirinkite pasi\u016Blymo kliento antrin\u012F klient\u0105",
64680
+ "quotes.blockers.quote_configuration_type_mismatch": "Susieta konfig\u016Bracija neatitinka konfig\u016Bracijos tipo",
64681
+ "quotes.blockers.quote_configuration_not_draft": "Pasirinkite konfig\u016Bracijos juodra\u0161t\u012F",
64682
+ "quotes.blockers.quote_configuration_customer_mismatch": "Konfig\u016Bracija turi priklausyti konfig\u016Bracijos klientui",
64683
+ "quotes.blockers.quote_configuration_currency_mismatch": "Konfig\u016Bracija turi naudoti pasi\u016Blymo valiut\u0105",
64684
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "S\u0105skaita fakt\u016Bra turi naudoti pasi\u016Blymo s\u0105skait\u0173 i\u0161ra\u0161ymo subjekt\u0105",
64685
+ "quotes.blockers.quote_configuration_already_linked": "Konfig\u016Bracija jau susieta su pasi\u016Blymo konfig\u016Bracija",
64686
+ "quotes.blockers.quote_configuration_not_subscription_update": "Pasirinkite prenumeratos atnaujinimo konfig\u016Bracij\u0105",
64687
+ "quotes.blockers.quote_configuration_not_new_subscription": "Pasirinkite naujos prenumeratos konfig\u016Bracij\u0105",
64688
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Prenumerat\u0105 pasi\u016Blyme galima atnaujinti tik vien\u0105 kart\u0105",
64689
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Kiekvienas produktas turi b\u016Bti i\u0161 atnaujinamos prenumeratos atsiskaitymo teik\u0117jo paskyros",
64690
+ "quotes.blockers.quote_draft_invoice_missing": "Pasi\u016Blymas turi tur\u0117ti s\u0105skaitos fakt\u016Bros juodra\u0161t\u012F, kad b\u016Bt\u0173 u\u017Ebaigtas",
64691
+ "quotes.blockers.quote_draft_subscription_missing": "Pasi\u016Blymas turi tur\u0117ti prenumeratos juodra\u0161t\u012F, kad b\u016Bt\u0173 u\u017Ebaigtas",
64692
+ "quotes.blockers.quote_expiry_after_transition_date": "Pasi\u016Blymo galiojimo pabaigos data turi b\u016Bti ne v\u0117lesn\u0117 nei dabartinio atsiskaitymo laikotarpio pabaiga arba suplanuota per\u0117jimo data, jei ji v\u0117lesn\u0117"
63646
64693
  };
63647
64694
 
63648
64695
  // ../hyperline-i18n/build/locales/nl.js
@@ -63692,7 +64739,26 @@ var nl = {
63692
64739
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Deze regel is gefactureerd voor de geproportioneerde periode",
63693
64740
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Bedrag van {{amount}} niet gefactureerd voor de geproportioneerde periode",
63694
64741
  "subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}",
63695
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo"
64742
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo",
64743
+ "quotes.blockers.quote_not_draft": "Zet de offerte terug naar concept voordat u de configuraties wijzigt",
64744
+ "quotes.blockers.quote_expiration_date_missing": "De offerte moet een vervaldatum hebben om ter goedkeuring te worden verzonden",
64745
+ "quotes.blockers.quote_configuration_missing": "Voeg ten minste \xE9\xE9n configuratie toe voordat u de offerte indient",
64746
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Abonnementswijzigingen moeten de klant van de offerte gebruiken",
64747
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Schakel meerdere configuraties in voordat u een onderliggende klant toewijst",
64748
+ "quotes.blockers.quote_configuration_customer_not_child": "Selecteer een onderliggende klant van de offerteklant",
64749
+ "quotes.blockers.quote_configuration_type_mismatch": "De gekoppelde configuratie komt niet overeen met het configuratietype",
64750
+ "quotes.blockers.quote_configuration_not_draft": "Selecteer een conceptconfiguratie",
64751
+ "quotes.blockers.quote_configuration_customer_mismatch": "De configuratie moet bij de klant van de configuratie horen",
64752
+ "quotes.blockers.quote_configuration_currency_mismatch": "De configuratie moet de valuta van de offerte gebruiken",
64753
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "De factuur moet de facturatie-entiteit van de offerte gebruiken",
64754
+ "quotes.blockers.quote_configuration_already_linked": "De configuratie is al gekoppeld aan een offerteconfiguratie",
64755
+ "quotes.blockers.quote_configuration_not_subscription_update": "Selecteer een configuratie voor een abonnementswijziging",
64756
+ "quotes.blockers.quote_configuration_not_new_subscription": "Selecteer een configuratie voor een nieuw abonnement",
64757
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Een abonnement kan maar \xE9\xE9n keer per offerte worden gewijzigd",
64758
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Elk product moet afkomstig zijn van het account van de factureringsprovider van het gewijzigde abonnement",
64759
+ "quotes.blockers.quote_draft_invoice_missing": "De offerte moet een conceptfactuur hebben om te worden afgerond",
64760
+ "quotes.blockers.quote_draft_subscription_missing": "De offerte moet een conceptabonnement hebben om te worden afgerond",
64761
+ "quotes.blockers.quote_expiry_after_transition_date": "De vervaldatum van de offerte moet uiterlijk het einde van de huidige factuurperiode zijn, of de geplande overgangsdatum als die later valt"
63696
64762
  };
63697
64763
 
63698
64764
  // ../hyperline-i18n/build/locales/pl.js
@@ -63742,7 +64808,26 @@ var pl = {
63742
64808
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Ta pozycja zosta\u0142a zafakturowana za okres proporcjonalny",
63743
64809
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Kwota {{amount}} niefakturowana za okres proporcjonalny",
63744
64810
  "subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}",
63745
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo"
64811
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo",
64812
+ "quotes.blockers.quote_not_draft": "Przywr\xF3\u0107 ofert\u0119 do wersji roboczej przed zmian\u0105 jej konfiguracji",
64813
+ "quotes.blockers.quote_expiration_date_missing": "Oferta musi mie\u0107 dat\u0119 wyga\u015Bni\u0119cia, aby zosta\u0142a wys\u0142ana do zatwierdzenia",
64814
+ "quotes.blockers.quote_configuration_missing": "Dodaj co najmniej jedn\u0105 konfiguracj\u0119 przed przes\u0142aniem oferty",
64815
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Aktualizacje subskrypcji musz\u0105 u\u017Cywa\u0107 klienta oferty",
64816
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "W\u0142\u0105cz wiele konfiguracji przed przypisaniem klienta podrz\u0119dnego",
64817
+ "quotes.blockers.quote_configuration_customer_not_child": "Wybierz klienta podrz\u0119dnego klienta oferty",
64818
+ "quotes.blockers.quote_configuration_type_mismatch": "Powi\u0105zana konfiguracja nie odpowiada typowi konfiguracji",
64819
+ "quotes.blockers.quote_configuration_not_draft": "Wybierz konfiguracj\u0119 w wersji roboczej",
64820
+ "quotes.blockers.quote_configuration_customer_mismatch": "Konfiguracja musi nale\u017Ce\u0107 do klienta konfiguracji",
64821
+ "quotes.blockers.quote_configuration_currency_mismatch": "Konfiguracja musi u\u017Cywa\u0107 waluty oferty",
64822
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "Faktura musi u\u017Cywa\u0107 podmiotu fakturuj\u0105cego oferty",
64823
+ "quotes.blockers.quote_configuration_already_linked": "Konfiguracja jest ju\u017C powi\u0105zana z konfiguracj\u0105 oferty",
64824
+ "quotes.blockers.quote_configuration_not_subscription_update": "Wybierz konfiguracj\u0119 aktualizacji subskrypcji",
64825
+ "quotes.blockers.quote_configuration_not_new_subscription": "Wybierz konfiguracj\u0119 nowej subskrypcji",
64826
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Subskrypcj\u0119 mo\u017Cna zaktualizowa\u0107 w ofercie tylko raz",
64827
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Ka\u017Cdy produkt musi pochodzi\u0107 z konta dostawcy rozlicze\u0144 aktualizowanej subskrypcji",
64828
+ "quotes.blockers.quote_draft_invoice_missing": "Oferta musi mie\u0107 faktur\u0119 w wersji roboczej, aby zosta\u0142a sfinalizowana",
64829
+ "quotes.blockers.quote_draft_subscription_missing": "Oferta musi mie\u0107 subskrypcj\u0119 w wersji roboczej, aby zosta\u0142a sfinalizowana",
64830
+ "quotes.blockers.quote_expiry_after_transition_date": "Data wyga\u015Bni\u0119cia oferty musi przypada\u0107 najp\xF3\u017Aniej na koniec bie\u017C\u0105cego okresu rozliczeniowego lub na zaplanowan\u0105 dat\u0119 przej\u015Bcia, je\u015Bli jest p\xF3\u017Aniejsza"
63746
64831
  };
63747
64832
 
63748
64833
  // ../hyperline-i18n/build/locales/pt.js
@@ -63792,7 +64877,26 @@ var pt = {
63792
64877
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta linha foi faturada para o per\xEDodo proporcional",
63793
64878
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Valor de {{amount}} n\xE3o faturado para o per\xEDodo proporcional",
63794
64879
  "subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}",
63795
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado"
64880
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado",
64881
+ "quotes.blockers.quote_not_draft": "Volte a colocar o or\xE7amento em rascunho antes de alterar as suas configura\xE7\xF5es",
64882
+ "quotes.blockers.quote_expiration_date_missing": "O or\xE7amento deve ter uma data de expira\xE7\xE3o para ser enviado para aprova\xE7\xE3o",
64883
+ "quotes.blockers.quote_configuration_missing": "Adicione pelo menos uma configura\xE7\xE3o antes de submeter o or\xE7amento",
64884
+ "quotes.blockers.quote_configuration_subscription_update_customer": "As atualiza\xE7\xF5es de subscri\xE7\xE3o devem usar o cliente do or\xE7amento",
64885
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Ative as configura\xE7\xF5es m\xFAltiplas antes de atribuir um cliente filho",
64886
+ "quotes.blockers.quote_configuration_customer_not_child": "Selecione um cliente filho do cliente do or\xE7amento",
64887
+ "quotes.blockers.quote_configuration_type_mismatch": "A configura\xE7\xE3o associada n\xE3o corresponde ao tipo de configura\xE7\xE3o",
64888
+ "quotes.blockers.quote_configuration_not_draft": "Selecione uma configura\xE7\xE3o em rascunho",
64889
+ "quotes.blockers.quote_configuration_customer_mismatch": "A configura\xE7\xE3o deve pertencer ao cliente da configura\xE7\xE3o",
64890
+ "quotes.blockers.quote_configuration_currency_mismatch": "A configura\xE7\xE3o deve usar a moeda do or\xE7amento",
64891
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "A fatura deve usar a entidade de fatura\xE7\xE3o do or\xE7amento",
64892
+ "quotes.blockers.quote_configuration_already_linked": "A configura\xE7\xE3o j\xE1 est\xE1 associada a uma configura\xE7\xE3o de or\xE7amento",
64893
+ "quotes.blockers.quote_configuration_not_subscription_update": "Selecione uma configura\xE7\xE3o de atualiza\xE7\xE3o de subscri\xE7\xE3o",
64894
+ "quotes.blockers.quote_configuration_not_new_subscription": "Selecione uma configura\xE7\xE3o de nova subscri\xE7\xE3o",
64895
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Uma subscri\xE7\xE3o s\xF3 pode ser atualizada uma vez num or\xE7amento",
64896
+ "quotes.blockers.quote_configuration_billing_provider_mismatch": "Cada produto deve vir da conta do fornecedor de fatura\xE7\xE3o da subscri\xE7\xE3o atualizada",
64897
+ "quotes.blockers.quote_draft_invoice_missing": "O or\xE7amento deve ter uma fatura em rascunho para ser finalizado",
64898
+ "quotes.blockers.quote_draft_subscription_missing": "O or\xE7amento deve ter uma subscri\xE7\xE3o em rascunho para ser finalizado",
64899
+ "quotes.blockers.quote_expiry_after_transition_date": "A data de expira\xE7\xE3o do or\xE7amento deve ser, no m\xE1ximo, o fim do per\xEDodo de fatura\xE7\xE3o atual, ou a data de transi\xE7\xE3o agendada se for posterior"
63796
64900
  };
63797
64901
 
63798
64902
  // ../hyperline-i18n/build/language.js
@@ -63973,16 +65077,19 @@ var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
63973
65077
  "credentials",
63974
65078
  "iban",
63975
65079
  "idtoken",
65080
+ "launchticket",
63976
65081
  "privatekey",
63977
65082
  "publictoken",
63978
65083
  "refreshtoken",
65084
+ // A workflow secret's value (core/workflows secrets).
65085
+ "secretvalue",
63979
65086
  "sessiontoken",
63980
65087
  "token",
63981
65088
  "tokenid",
63982
65089
  "verificationcode"
63983
65090
  ]);
63984
65091
  var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password|passphrase|apikey)$/;
63985
- var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
65092
+ var REDACTED_KEY_CANDIDATE_PATTERN = /token|ticket|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
63986
65093
  var URL_ONLY_REDACTED_KEYS = /* @__PURE__ */ new Set(["key"]);
63987
65094
  var OAUTH_CODE_KEY = "code";
63988
65095
  var OAUTH_CODE_CONTEXT_KEYS = ["state", "grant_type"];
@@ -66744,69 +67851,6 @@ var Decimal = P.constructor = clone2(DEFAULTS);
66744
67851
  LN10 = new Decimal(LN10);
66745
67852
  PI = new Decimal(PI);
66746
67853
 
66747
- // ../hyperline-lib/build/utils/config/usStates.js
66748
- var usStates = [
66749
- "AA",
66750
- "AE",
66751
- "AK",
66752
- "AL",
66753
- "AP",
66754
- "AR",
66755
- "AS",
66756
- "AZ",
66757
- "CA",
66758
- "CO",
66759
- "CT",
66760
- "DC",
66761
- "DE",
66762
- "FL",
66763
- "GA",
66764
- "GU",
66765
- "HI",
66766
- "IA",
66767
- "ID",
66768
- "IL",
66769
- "IN",
66770
- "KS",
66771
- "KY",
66772
- "LA",
66773
- "MA",
66774
- "MD",
66775
- "ME",
66776
- "MI",
66777
- "MN",
66778
- "MO",
66779
- "MP",
66780
- "MS",
66781
- "MT",
66782
- "NC",
66783
- "ND",
66784
- "NE",
66785
- "NH",
66786
- "NJ",
66787
- "NM",
66788
- "NV",
66789
- "NY",
66790
- "OH",
66791
- "OK",
66792
- "OR",
66793
- "PA",
66794
- "PR",
66795
- "RI",
66796
- "SC",
66797
- "SD",
66798
- "TN",
66799
- "TX",
66800
- "UT",
66801
- "VA",
66802
- "VI",
66803
- "VT",
66804
- "WA",
66805
- "WI",
66806
- "WV",
66807
- "WY"
66808
- ];
66809
-
66810
67854
  // ../hyperline-lib/build/utils/dates.js
66811
67855
  var import_shared2 = __toESM(require_shared(), 1);
66812
67856
  var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
@@ -66831,7 +67875,8 @@ var dateRealignmentModeSchema = external_exports.enum([
66831
67875
  "utc_midnight_import",
66832
67876
  "dst_hour_drift",
66833
67877
  "month_start_drift",
66834
- "manual_phase_end_midnight"
67878
+ "manual_phase_end_midnight",
67879
+ "customer_timezone_change"
66835
67880
  ]).default("utc_midnight_import");
66836
67881
  var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
66837
67882
  [23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
@@ -66840,8 +67885,16 @@ var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
66840
67885
  [MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
66841
67886
  ]);
66842
67887
 
67888
+ // ../hyperline-lib/build/utils/overviewPeriods.js
67889
+ var OverviewPeriodSchema = external_exports.enum([
67890
+ "this_month",
67891
+ "last_month",
67892
+ "last_3_months"
67893
+ ]);
67894
+
66843
67895
  // ../hyperline-lib/build/utils/api/filterBuilder.js
66844
- var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
67896
+ var nullAuthorizedOperators = ["isNull", "isNotNull"];
67897
+ var baseAuthorizedOperators = ["not", ...nullAuthorizedOperators];
66845
67898
  var booleanAuthorizedOperators = [
66846
67899
  ...baseAuthorizedOperators,
66847
67900
  "equals"
@@ -66870,10 +67923,17 @@ var authorizedOperators = [
66870
67923
  ...arrayAuthorizedOperators,
66871
67924
  ...mapAuthorizedOperators
66872
67925
  ];
67926
+ var NullFilterValueSchema = BooleanSchema.or(external_exports.literal("")).optional();
66873
67927
 
66874
67928
  // ../hyperline-lib/build/http/dto/state.js
66875
- var StateSchema = external_exports.enum(usStates).openapi({
66876
- 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).",
67929
+ var StateSchema = external_exports.string().openapi({
67930
+ 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:
67931
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
67932
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
67933
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
67934
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
67935
+
67936
+ 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.`,
66877
67937
  example: "CA"
66878
67938
  });
66879
67939
 
@@ -66987,9 +68047,10 @@ var toLogRequest = (config4) => {
66987
68047
  };
66988
68048
 
66989
68049
  // ../hyperline-lib/build/httpClient/publicUrlFetch.js
68050
+ import { lookup as lookupCallback } from "node:dns";
66990
68051
  import { lookup } from "node:dns/promises";
66991
68052
  import { isIP } from "node:net";
66992
- import { Agent } from "undici";
68053
+ import { Agent, fetch as fetch2 } from "undici";
66993
68054
  var PINNED_DISPATCHER_TTL_MS = 5 * 60 * 1e3;
66994
68055
  var DEFAULT_MAX_RESPONSE_BYTES = 2 * 1024 * 1024;
66995
68056
 
@@ -67001,14 +68062,23 @@ import multer2 from "multer";
67001
68062
  // ../hyperline-lib/build/httpRouter/file.js
67002
68063
  import helmet from "helmet";
67003
68064
 
67004
- // ../hyperline-lib/build/publicApi/auth/index.js
68065
+ // ../hyperline-lib/build/publicApi/auth/apiKey.js
67005
68066
  import { randomBytes as randomBytes2, scryptSync } from "node:crypto";
67006
68067
 
68068
+ // ../hyperline-lib/build/publicApi/auth/apiKeyHashCache.js
68069
+ import { createHash as createHash4 } from "node:crypto";
68070
+ var TTL_MS = 5 * 6e4;
68071
+
67007
68072
  // ../hyperline-mcp/build/requestBuilder.js
67008
- function buildRequestConfig(path2, args, method, queryParamKeys = []) {
68073
+ function buildRequestConfig({ path: path2, args, method, queryParamKeys = [], arrayBody = false }) {
67009
68074
  const { url: url2, usedKeys } = replacePathParams(path2, args);
67010
68075
  const remaining = removeUsedKeys(args, usedKeys);
67011
- const { params, data } = separateParamsAndBody(remaining, method, queryParamKeys);
68076
+ const { params, data } = separateParamsAndBody({
68077
+ args: remaining,
68078
+ method,
68079
+ queryParamKeys,
68080
+ arrayBody
68081
+ });
67012
68082
  return { url: url2, params, data };
67013
68083
  }
67014
68084
  function replacePathParams(path2, args) {
@@ -67039,7 +68109,7 @@ var PathParamError = class extends Error {
67039
68109
  function removeUsedKeys(args, usedKeys) {
67040
68110
  return Object.fromEntries(Object.entries(args).filter(([key]) => !usedKeys.has(key)));
67041
68111
  }
67042
- function separateParamsAndBody(args, method, queryParamKeys) {
68112
+ function separateParamsAndBody({ args, method, queryParamKeys, arrayBody }) {
67043
68113
  const isBodyMethod = ["POST", "PUT", "PATCH"].includes(method);
67044
68114
  if (!isBodyMethod) {
67045
68115
  return { params: args };
@@ -67047,8 +68117,7 @@ function separateParamsAndBody(args, method, queryParamKeys) {
67047
68117
  const queryKeySet = new Set(queryParamKeys);
67048
68118
  const params = Object.fromEntries(Object.entries(args).filter(([key]) => queryKeySet.has(key)));
67049
68119
  const data = Object.fromEntries(Object.entries(args).filter(([key]) => !queryKeySet.has(key)));
67050
- const dataKeys = Object.keys(data);
67051
- if (dataKeys.length === 1 && dataKeys[0] === "items" && Array.isArray(data.items)) {
68120
+ if (arrayBody && Array.isArray(data.items)) {
67052
68121
  return { params, data: data.items };
67053
68122
  }
67054
68123
  return { params, data };
@@ -67066,6 +68135,62 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
67066
68135
  // ../hyperline-mcp/build/server/server.js
67067
68136
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
67068
68137
 
68138
+ // build/multipart.js
68139
+ import { readFile as readFile2 } from "node:fs/promises";
68140
+ import { basename, extname } from "node:path";
68141
+ var MIMETYPES_BY_EXTENSION = {
68142
+ ".csv": "text/csv",
68143
+ ".doc": "application/msword",
68144
+ ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
68145
+ ".gif": "image/gif",
68146
+ ".jpeg": "image/jpeg",
68147
+ ".jpg": "image/jpeg",
68148
+ ".json": "application/json",
68149
+ ".pdf": "application/pdf",
68150
+ ".png": "image/png",
68151
+ ".svg": "image/svg+xml",
68152
+ ".txt": "text/plain",
68153
+ ".xls": "application/vnd.ms-excel",
68154
+ ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
68155
+ ".xml": "application/xml"
68156
+ };
68157
+ function getMimetypeFromPath(filePath) {
68158
+ return MIMETYPES_BY_EXTENSION[extname(filePath).toLowerCase()] ?? "application/octet-stream";
68159
+ }
68160
+ function appendFormValue({ formData, key, value }) {
68161
+ if (value === void 0) {
68162
+ return;
68163
+ }
68164
+ if (value === null) {
68165
+ formData.append(key, "");
68166
+ return;
68167
+ }
68168
+ if (Array.isArray(value)) {
68169
+ for (const [index, item] of value.entries()) {
68170
+ appendFormValue({ formData, key: `${key}[${index}]`, value: item });
68171
+ }
68172
+ return;
68173
+ }
68174
+ if (typeof value === "object") {
68175
+ throw new Error(`--${key} cannot be sent alongside files: a multipart request only carries scalar fields.`);
68176
+ }
68177
+ formData.append(key, String(value));
68178
+ }
68179
+ async function buildMultipartBody({ data, files }) {
68180
+ const formData = new FormData();
68181
+ for (const [key, value] of Object.entries(data)) {
68182
+ appendFormValue({ formData, key, value });
68183
+ }
68184
+ const fileUploads = Object.entries(files).flatMap(([fieldName, filePaths]) => filePaths.map((filePath) => ({ fieldName, filePath })));
68185
+ const fileContents = await Promise.all(fileUploads.map(({ filePath }) => readFile2(filePath)));
68186
+ for (const [index, { fieldName, filePath }] of fileUploads.entries()) {
68187
+ formData.append(fieldName, new Blob([new Uint8Array(fileContents[index])], {
68188
+ type: getMimetypeFromPath(filePath)
68189
+ }), basename(filePath));
68190
+ }
68191
+ return formData;
68192
+ }
68193
+
67069
68194
  // build/output.js
67070
68195
  function formatOutput({ data, format: format2 }) {
67071
68196
  if (format2 === "json") {
@@ -67125,16 +68250,25 @@ function createCLIContext({ apiKey, baseUrl, outputFormat, source, companyId })
67125
68250
  return {
67126
68251
  baseUrl,
67127
68252
  outputFormat,
67128
- async execute({ method, path: path2, args, queryParamKeys = [], body, baseUrlOverride }) {
67129
- const { url: url2, params, data } = buildRequestConfig(path2, args, method, queryParamKeys);
68253
+ async execute({ method, path: path2, args, queryParamKeys = [], body, files, baseUrlOverride }) {
68254
+ const { url: url2, params, data } = buildRequestConfig({
68255
+ path: path2,
68256
+ args,
68257
+ method,
68258
+ queryParamKeys
68259
+ });
67130
68260
  const requestData = body ?? data;
67131
68261
  const hasData = Array.isArray(requestData) ? requestData.length > 0 : requestData != null && Object.keys(requestData).length > 0;
68262
+ const hasFiles = Object.values(files ?? {}).some((filePaths) => filePaths.length > 0);
67132
68263
  try {
67133
68264
  const response = await httpClient.request({
67134
68265
  method,
67135
68266
  url: url2,
67136
68267
  params,
67137
- data: hasData ? requestData : void 0,
68268
+ data: hasFiles ? await buildMultipartBody({
68269
+ data: requestData ?? {},
68270
+ files: files ?? {}
68271
+ }) : hasData ? requestData : void 0,
67138
68272
  ...baseUrlOverride ? { baseURL: baseUrlOverride } : {},
67139
68273
  headers: {
67140
68274
  "Hyperline-Source": source,