@hyperline/cli 0.1.0-build.1.0e4d371 → 0.1.0-build.1.0eaa04d

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",
@@ -40508,7 +40587,7 @@ Examples:
40508
40587
  // build/commands/generated/ai-monitoring.js
40509
40588
  function registerAi_MonitoringCommands(parent) {
40510
40589
  const resource = parent.command("ai-monitoring").description("Manage ai > monitoring");
40511
- resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score. Only completed analyses unless status is set.`).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("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
40590
+ resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score, or by customer_id__in (up to 100 Hyperline IDs) for several customers; the first analysis per customer is its latest. Only completed analyses unless status is set.`).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("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--customer-id.in <value>", `Comma-separated list of up to 100 Hyperline customer IDs. Return only analyses of these customers. Cannot be combined with \`customer_id\`.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
40512
40591
  Examples:
40513
40592
  hyperline ai-monitoring list-monitoring-analyses
40514
40593
  hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -40524,6 +40603,8 @@ Examples:
40524
40603
  args.include_total = opts.includeTotal;
40525
40604
  if (opts.customerId !== void 0)
40526
40605
  args.customer_id = opts.customerId;
40606
+ if (opts["customerId.in"] !== void 0)
40607
+ args.customer_id__in = opts["customerId.in"];
40527
40608
  if (opts.status !== void 0)
40528
40609
  args.status = opts.status;
40529
40610
  if (opts["createdAt.gte"] !== void 0)
@@ -40541,6 +40622,7 @@ Examples:
40541
40622
  "cursor",
40542
40623
  "include_total",
40543
40624
  "customer_id",
40625
+ "customer_id__in",
40544
40626
  "status",
40545
40627
  "created_at__gte",
40546
40628
  "created_at__lte"
@@ -40591,6 +40673,52 @@ Examples:
40591
40673
  });
40592
40674
  }
40593
40675
 
40676
+ // build/commands/generated/approval-workflows.js
40677
+ function registerApproval_WorkflowsCommands(parent) {
40678
+ const resource = parent.command("approval-workflows").description("Manage approval workflows");
40679
+ 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", `
40680
+ Examples:
40681
+ hyperline approval-workflows list
40682
+ hyperline approval-workflows list --take <take> --is-active <is_active>`).action(async (opts) => {
40683
+ const ctx = resource.parent?.opts()._ctx;
40684
+ if (!ctx) {
40685
+ process.stderr.write("Error: Not authenticated\n");
40686
+ process.exit(1);
40687
+ }
40688
+ const args = {};
40689
+ if (opts.isActive !== void 0)
40690
+ args.is_active = opts.isActive;
40691
+ if (opts.take !== void 0)
40692
+ args.take = Number(opts.take);
40693
+ if (opts.skip !== void 0)
40694
+ args.skip = Number(opts.skip);
40695
+ await ctx.execute({
40696
+ method: "GET",
40697
+ path: "/v1/approvals/workflows",
40698
+ args,
40699
+ queryParamKeys: ["take", "skip", "is_active"]
40700
+ });
40701
+ });
40702
+ resource.command("get").description(`Retrieve a single approval workflow.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
40703
+ Examples:
40704
+ hyperline approval-workflows get --id <id>`).action(async (opts) => {
40705
+ const ctx = resource.parent?.opts()._ctx;
40706
+ if (!ctx) {
40707
+ process.stderr.write("Error: Not authenticated\n");
40708
+ process.exit(1);
40709
+ }
40710
+ const args = {};
40711
+ if (opts.id !== void 0)
40712
+ args.id = opts.id;
40713
+ await ctx.execute({
40714
+ method: "GET",
40715
+ path: "/v1/approvals/workflows/{id}",
40716
+ args,
40717
+ queryParamKeys: []
40718
+ });
40719
+ });
40720
+ }
40721
+
40594
40722
  // build/commands/generated/bank-accounts.js
40595
40723
  function registerBank_AccountsCommands(parent) {
40596
40724
  const resource = parent.command("bank-accounts").description("Manage bank accounts");
@@ -40660,6 +40788,84 @@ Examples:
40660
40788
  });
40661
40789
  }
40662
40790
 
40791
+ // build/commands/generated/catalog.js
40792
+ function registerCatalogCommands(parent) {
40793
+ const resource = parent.command("catalog").description("Manage catalog");
40794
+ 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", `
40795
+ Examples:
40796
+ hyperline catalog list-catalog-versions`).action(async (_opts) => {
40797
+ const ctx = resource.parent?.opts()._ctx;
40798
+ if (!ctx) {
40799
+ process.stderr.write("Error: Not authenticated\n");
40800
+ process.exit(1);
40801
+ }
40802
+ const args = {};
40803
+ await ctx.execute({
40804
+ method: "GET",
40805
+ path: "/v1/catalog/versions",
40806
+ args,
40807
+ queryParamKeys: []
40808
+ });
40809
+ });
40810
+ resource.command("get-catalog-draft").description(`Get the pending product catalog draft (null when there is none).`).addHelpText("after", `
40811
+ Examples:
40812
+ hyperline catalog get-catalog-draft`).action(async (_opts) => {
40813
+ const ctx = resource.parent?.opts()._ctx;
40814
+ if (!ctx) {
40815
+ process.stderr.write("Error: Not authenticated\n");
40816
+ process.exit(1);
40817
+ }
40818
+ const args = {};
40819
+ await ctx.execute({
40820
+ method: "GET",
40821
+ path: "/v1/catalog/versions/draft",
40822
+ args,
40823
+ queryParamKeys: []
40824
+ });
40825
+ });
40826
+ resource.command("publish-catalog-draft").description(`Publish the pending product catalog draft: its changes become the live catalog.`).addHelpText("after", `
40827
+ Examples:
40828
+ hyperline catalog publish-catalog-draft
40829
+ hyperline catalog publish-catalog-draft --output json`).action(async (_opts) => {
40830
+ const ctx = resource.parent?.opts()._ctx;
40831
+ if (!ctx) {
40832
+ process.stderr.write("Error: Not authenticated\n");
40833
+ process.exit(1);
40834
+ }
40835
+ const args = {};
40836
+ await ctx.execute({
40837
+ method: "POST",
40838
+ path: "/v1/catalog/versions/draft/publish",
40839
+ args,
40840
+ queryParamKeys: []
40841
+ });
40842
+ });
40843
+ resource.command("discard-catalog-draft").description(`Discard the pending product catalog draft without publishing it.`).option("--yes", "Skip confirmation").addHelpText("after", `
40844
+ Examples:
40845
+ hyperline catalog discard-catalog-draft
40846
+ hyperline catalog discard-catalog-draft --output json`).action(async (opts) => {
40847
+ const ctx = resource.parent?.opts()._ctx;
40848
+ if (!ctx) {
40849
+ process.stderr.write("Error: Not authenticated\n");
40850
+ process.exit(1);
40851
+ }
40852
+ const args = {};
40853
+ if (!opts.yes) {
40854
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
40855
+ if (!confirmed) {
40856
+ process.stdout.write("Aborted.\n");
40857
+ return;
40858
+ }
40859
+ }
40860
+ await ctx.execute({
40861
+ method: "DELETE",
40862
+ path: "/v1/catalog/versions/draft",
40863
+ args,
40864
+ queryParamKeys: []
40865
+ });
40866
+ });
40867
+ }
40868
+
40663
40869
  // build/commands/generated/companies.js
40664
40870
  function registerCompaniesCommands(parent) {
40665
40871
  const resource = parent.command("companies").description("Manage companies");
@@ -40702,13 +40908,13 @@ Examples:
40702
40908
  });
40703
40909
  }
40704
40910
 
40705
- // build/commands/generated/coupons.js
40706
- function registerCouponsCommands(parent) {
40707
- const resource = parent.command("coupons").description("Manage coupons");
40708
- 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", `
40911
+ // build/commands/generated/contracts-clauses.js
40912
+ function registerContracts_ClausesCommands(parent) {
40913
+ const resource = parent.command("contracts-clauses").description("Manage contracts > clauses");
40914
+ resource.command("list-contract-clauses").description(`List the contract clauses of the contract library, with their texts and translations. Use the returned IDs in \`contract_clause_ids\` when creating a quote. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
40709
40915
  Examples:
40710
- hyperline coupons list
40711
- hyperline coupons list --take <take>`).action(async (opts) => {
40916
+ hyperline contracts-clauses list-contract-clauses
40917
+ hyperline contracts-clauses list-contract-clauses --take <take>`).action(async (opts) => {
40712
40918
  const ctx = resource.parent?.opts()._ctx;
40713
40919
  if (!ctx) {
40714
40920
  process.stderr.write("Error: Not authenticated\n");
@@ -40721,16 +40927,16 @@ Examples:
40721
40927
  args.skip = Number(opts.skip);
40722
40928
  await ctx.execute({
40723
40929
  method: "GET",
40724
- path: "/v1/coupons",
40930
+ path: "/v1/contracts/clauses",
40725
40931
  args,
40726
40932
  queryParamKeys: ["take", "skip"]
40727
40933
  });
40728
40934
  });
40729
- 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", `
40935
+ resource.command("create-contract-clause").description(`Create a contract clause in the contract library, with a default text and optional translations keyed by language code.`).requiredOption("--name <value>", `Name of the contract clause, displayed in the contract library.`).requiredOption("--text <value>", `Default text of the clause, used when no translation exists for the customer language. Plain text, line breaks are preserved.`).option("--translations <json>", `Translations of the clause, keyed by language code. The translation matching the customer language is used instead of \`text\`.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the clause is available when building a quote.`).addHelpText("after", `
40730
40936
  Examples:
40731
- hyperline coupons create --name <name> --type <type>
40732
- hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
40733
- hyperline coupons create --name <name> --type <type> --output json`).action(async (opts) => {
40937
+ hyperline contracts-clauses create-contract-clause --name <name> --text <text>
40938
+ hyperline contracts-clauses create-contract-clause --name <name> --text <text> --translations <translations> --invoicing-entity-ids <invoicing_entity_ids>
40939
+ hyperline contracts-clauses create-contract-clause --name <name> --text <text> --output json`).action(async (opts) => {
40734
40940
  const ctx = resource.parent?.opts()._ctx;
40735
40941
  if (!ctx) {
40736
40942
  process.stderr.write("Error: Not authenticated\n");
@@ -40739,40 +40945,22 @@ Examples:
40739
40945
  const args = {};
40740
40946
  if (opts.name !== void 0)
40741
40947
  args.name = opts.name;
40742
- if (opts.description !== void 0)
40743
- args.description = opts.description;
40744
- if (opts.expirationDate !== void 0)
40745
- args.expiration_date = opts.expirationDate;
40746
- if (opts.productScope !== void 0)
40747
- args.product_scope = opts.productScope;
40748
- if (opts.repeat !== void 0)
40749
- args.repeat = opts.repeat;
40750
- if (opts.type !== void 0)
40751
- args.type = opts.type;
40752
- if (opts.currency !== void 0)
40753
- args.currency = opts.currency;
40754
- if (opts.redemptionLimit !== void 0)
40755
- args.redemption_limit = Number(opts.redemptionLimit);
40756
- if (opts.discountAmount !== void 0)
40757
- args.discount_amount = Number(opts.discountAmount);
40758
- if (opts.discountPercent !== void 0)
40759
- args.discount_percent = Number(opts.discountPercent);
40760
- if (opts.productIds !== void 0)
40761
- args.product_ids = JSON.parse(opts.productIds);
40762
- if (opts.duration !== void 0)
40763
- args.duration = JSON.parse(opts.duration);
40764
- if (opts.properties !== void 0)
40765
- args.properties = JSON.parse(opts.properties);
40948
+ if (opts.text !== void 0)
40949
+ args.text = opts.text;
40950
+ if (opts.translations !== void 0)
40951
+ args.translations = JSON.parse(opts.translations);
40952
+ if (opts.invoicingEntityIds !== void 0)
40953
+ args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
40766
40954
  await ctx.execute({
40767
40955
  method: "POST",
40768
- path: "/v1/coupons",
40956
+ path: "/v1/contracts/clauses",
40769
40957
  args,
40770
40958
  queryParamKeys: []
40771
40959
  });
40772
40960
  });
40773
- 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", `
40961
+ resource.command("get-contract-clause").description(`Retrieve a contract clause by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
40774
40962
  Examples:
40775
- hyperline coupons get --id <id>`).action(async (opts) => {
40963
+ hyperline contracts-clauses get-contract-clause --id <id>`).action(async (opts) => {
40776
40964
  const ctx = resource.parent?.opts()._ctx;
40777
40965
  if (!ctx) {
40778
40966
  process.stderr.write("Error: Not authenticated\n");
@@ -40783,16 +40971,16 @@ Examples:
40783
40971
  args.id = opts.id;
40784
40972
  await ctx.execute({
40785
40973
  method: "GET",
40786
- path: "/v1/coupons/{id}",
40974
+ path: "/v1/contracts/clauses/{id}",
40787
40975
  args,
40788
40976
  queryParamKeys: []
40789
40977
  });
40790
40978
  });
40791
- resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).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", `
40979
+ resource.command("update-contract-clause").description(`Update the name, text, translations or invoicing entities of a contract clause. Sending \`translations\` replaces all existing translations.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Name of the contract clause, displayed in the contract library.`).option("--text <value>", `Default text of the clause, used when no translation exists for the customer language. Plain text, line breaks are preserved.`).option("--translations <json>", `Translations of the clause, keyed by language code. Replaces all existing translations: omitted languages are removed.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the clause is available when building a quote.`).addHelpText("after", `
40792
40980
  Examples:
40793
- hyperline coupons update --id <id> --name <name> --type <type>
40794
- hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
40795
- hyperline coupons update --id <id> --name <name> --type <type> --output json`).action(async (opts) => {
40981
+ hyperline contracts-clauses update-contract-clause --id <id>
40982
+ hyperline contracts-clauses update-contract-clause --id <id> --name <name> --text <text>
40983
+ hyperline contracts-clauses update-contract-clause --id <id> --output json`).action(async (opts) => {
40796
40984
  const ctx = resource.parent?.opts()._ctx;
40797
40985
  if (!ctx) {
40798
40986
  process.stderr.write("Error: Not authenticated\n");
@@ -40803,41 +40991,23 @@ Examples:
40803
40991
  args.id = opts.id;
40804
40992
  if (opts.name !== void 0)
40805
40993
  args.name = opts.name;
40806
- if (opts.description !== void 0)
40807
- args.description = opts.description;
40808
- if (opts.expirationDate !== void 0)
40809
- args.expiration_date = opts.expirationDate;
40810
- if (opts.productScope !== void 0)
40811
- args.product_scope = opts.productScope;
40812
- if (opts.repeat !== void 0)
40813
- args.repeat = opts.repeat;
40814
- if (opts.type !== void 0)
40815
- args.type = opts.type;
40816
- if (opts.currency !== void 0)
40817
- args.currency = opts.currency;
40818
- if (opts.redemptionLimit !== void 0)
40819
- args.redemption_limit = Number(opts.redemptionLimit);
40820
- if (opts.discountAmount !== void 0)
40821
- args.discount_amount = Number(opts.discountAmount);
40822
- if (opts.discountPercent !== void 0)
40823
- args.discount_percent = Number(opts.discountPercent);
40824
- if (opts.productIds !== void 0)
40825
- args.product_ids = JSON.parse(opts.productIds);
40826
- if (opts.duration !== void 0)
40827
- args.duration = JSON.parse(opts.duration);
40828
- if (opts.properties !== void 0)
40829
- args.properties = JSON.parse(opts.properties);
40994
+ if (opts.text !== void 0)
40995
+ args.text = opts.text;
40996
+ if (opts.translations !== void 0)
40997
+ args.translations = JSON.parse(opts.translations);
40998
+ if (opts.invoicingEntityIds !== void 0)
40999
+ args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
40830
41000
  await ctx.execute({
40831
41001
  method: "PUT",
40832
- path: "/v1/coupons/{id}",
41002
+ path: "/v1/contracts/clauses/{id}",
40833
41003
  args,
40834
41004
  queryParamKeys: []
40835
41005
  });
40836
41006
  });
40837
- resource.command("delete").description(`Permanently delete a coupon by ID. This cannot be undone.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
41007
+ resource.command("delete-contract-clause").description(`Delete a contract clause from the contract library. Existing quotes keep their copy of the clause.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
40838
41008
  Examples:
40839
- hyperline coupons delete --id <id>
40840
- hyperline coupons delete --id <id> --output json`).action(async (opts) => {
41009
+ hyperline contracts-clauses delete-contract-clause --id <id>
41010
+ hyperline contracts-clauses delete-contract-clause --id <id> --output json`).action(async (opts) => {
40841
41011
  const ctx = resource.parent?.opts()._ctx;
40842
41012
  if (!ctx) {
40843
41013
  process.stderr.write("Error: Not authenticated\n");
@@ -40855,38 +41025,396 @@ Examples:
40855
41025
  }
40856
41026
  await ctx.execute({
40857
41027
  method: "DELETE",
40858
- path: "/v1/coupons/{id}",
41028
+ path: "/v1/contracts/clauses/{id}",
40859
41029
  args,
40860
41030
  queryParamKeys: []
40861
41031
  });
40862
41032
  });
40863
41033
  }
40864
41034
 
40865
- // build/commands/generated/coupons-promotion-codes.js
40866
- function registerCoupons_Promotion_CodesCommands(parent) {
40867
- const resource = parent.command("coupons-promotion-codes").description("Manage coupons > promotion codes");
40868
- 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", `
41035
+ // build/commands/generated/contracts-documents.js
41036
+ function registerContracts_DocumentsCommands(parent) {
41037
+ const resource = parent.command("contracts-documents").description("Manage contracts > documents");
41038
+ resource.command("list-contract-documents").description(`List the contract documents of the contract library (terms of service, DPA, SLA...), with their contents per language and countries and the files of each content. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
40869
41039
  Examples:
40870
- hyperline coupons-promotion-codes list-promotion-codes
40871
- hyperline coupons-promotion-codes list-promotion-codes --take <take> --coupon-id <coupon_id>`).action(async (opts) => {
41040
+ hyperline contracts-documents list-contract-documents
41041
+ hyperline contracts-documents list-contract-documents --take <take>`).action(async (opts) => {
40872
41042
  const ctx = resource.parent?.opts()._ctx;
40873
41043
  if (!ctx) {
40874
41044
  process.stderr.write("Error: Not authenticated\n");
40875
41045
  process.exit(1);
40876
41046
  }
40877
41047
  const args = {};
40878
- if (opts.couponId !== void 0)
40879
- args.coupon_id = opts.couponId;
40880
- if (opts["couponId.not"] !== void 0)
40881
- args.coupon_id__not = opts["couponId.not"];
40882
- if (opts["couponId.isNull"] !== void 0)
40883
- args.coupon_id__isNull = opts["couponId.isNull"];
40884
- if (opts["couponId.isNotNull"] !== void 0)
40885
- args.coupon_id__isNotNull = opts["couponId.isNotNull"];
40886
- if (opts["couponId.equals"] !== void 0)
40887
- args.coupon_id__equals = opts["couponId.equals"];
40888
- if (opts["couponId.contains"] !== void 0)
40889
- args.coupon_id__contains = opts["couponId.contains"];
41048
+ if (opts.take !== void 0)
41049
+ args.take = Number(opts.take);
41050
+ if (opts.skip !== void 0)
41051
+ args.skip = Number(opts.skip);
41052
+ await ctx.execute({
41053
+ method: "GET",
41054
+ path: "/v1/contracts/documents",
41055
+ args,
41056
+ queryParamKeys: ["take", "skip"]
41057
+ });
41058
+ });
41059
+ resource.command("create-contract-document").description(`Create a contract document in the contract library. Its files are added afterwards per language with \`create_contract_document_content\`.`).requiredOption("--name <value>", `Name of the contract document, displayed in the contract library.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the contract document is available when building a quote.`).addHelpText("after", `
41060
+ Examples:
41061
+ hyperline contracts-documents create-contract-document --name <name>
41062
+ hyperline contracts-documents create-contract-document --name <name> --invoicing-entity-ids <invoicing_entity_ids>
41063
+ hyperline contracts-documents create-contract-document --name <name> --output json`).action(async (opts) => {
41064
+ const ctx = resource.parent?.opts()._ctx;
41065
+ if (!ctx) {
41066
+ process.stderr.write("Error: Not authenticated\n");
41067
+ process.exit(1);
41068
+ }
41069
+ const args = {};
41070
+ if (opts.name !== void 0)
41071
+ args.name = opts.name;
41072
+ if (opts.invoicingEntityIds !== void 0)
41073
+ args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
41074
+ await ctx.execute({
41075
+ method: "POST",
41076
+ path: "/v1/contracts/documents",
41077
+ args,
41078
+ queryParamKeys: []
41079
+ });
41080
+ });
41081
+ resource.command("get-contract-document").description(`Retrieve a contract document by ID, with its contents and their files.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
41082
+ Examples:
41083
+ hyperline contracts-documents get-contract-document --id <id>`).action(async (opts) => {
41084
+ const ctx = resource.parent?.opts()._ctx;
41085
+ if (!ctx) {
41086
+ process.stderr.write("Error: Not authenticated\n");
41087
+ process.exit(1);
41088
+ }
41089
+ const args = {};
41090
+ if (opts.id !== void 0)
41091
+ args.id = opts.id;
41092
+ await ctx.execute({
41093
+ method: "GET",
41094
+ path: "/v1/contracts/documents/{id}",
41095
+ args,
41096
+ queryParamKeys: []
41097
+ });
41098
+ });
41099
+ resource.command("update-contract-document").description(`Update the name or invoicing entities of a contract document. Its files are updated per content with \`update_contract_document_content\`.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Name of the contract document, displayed in the contract library.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the contract document is available when building a quote.`).addHelpText("after", `
41100
+ Examples:
41101
+ hyperline contracts-documents update-contract-document --id <id>
41102
+ hyperline contracts-documents update-contract-document --id <id> --name <name> --invoicing-entity-ids <invoicing_entity_ids>
41103
+ hyperline contracts-documents update-contract-document --id <id> --output json`).action(async (opts) => {
41104
+ const ctx = resource.parent?.opts()._ctx;
41105
+ if (!ctx) {
41106
+ process.stderr.write("Error: Not authenticated\n");
41107
+ process.exit(1);
41108
+ }
41109
+ const args = {};
41110
+ if (opts.id !== void 0)
41111
+ args.id = opts.id;
41112
+ if (opts.name !== void 0)
41113
+ args.name = opts.name;
41114
+ if (opts.invoicingEntityIds !== void 0)
41115
+ args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
41116
+ await ctx.execute({
41117
+ method: "PUT",
41118
+ path: "/v1/contracts/documents/{id}",
41119
+ args,
41120
+ queryParamKeys: []
41121
+ });
41122
+ });
41123
+ resource.command("delete-contract-document").description(`Delete a contract document from the contract library. Existing quotes keep their copy of the files.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
41124
+ Examples:
41125
+ hyperline contracts-documents delete-contract-document --id <id>
41126
+ hyperline contracts-documents delete-contract-document --id <id> --output json`).action(async (opts) => {
41127
+ const ctx = resource.parent?.opts()._ctx;
41128
+ if (!ctx) {
41129
+ process.stderr.write("Error: Not authenticated\n");
41130
+ process.exit(1);
41131
+ }
41132
+ const args = {};
41133
+ if (opts.id !== void 0)
41134
+ args.id = opts.id;
41135
+ if (!opts.yes) {
41136
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
41137
+ if (!confirmed) {
41138
+ process.stdout.write("Aborted.\n");
41139
+ return;
41140
+ }
41141
+ }
41142
+ await ctx.execute({
41143
+ method: "DELETE",
41144
+ path: "/v1/contracts/documents/{id}",
41145
+ args,
41146
+ queryParamKeys: []
41147
+ });
41148
+ });
41149
+ resource.command("create-contract-document-content").description(`Add a content to a contract document: its files for one language (\`default\` as fallback) and optional countries, sent as a comma-separated list. At least one PDF or Word file is required.`).requiredOption("--id <value>", `id parameter`).requiredOption("--language <value>", `Language of the content. \`default\` is used when no content exists for the customer language.`).option("--countries <value>", `Countries the content applies to, as ISO 3166-1 alpha-2 codes. Empty means all countries. In a multipart request, send a comma-separated list.`).requiredOption("--files <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
41150
+ Examples:
41151
+ hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path>
41152
+ hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path> --countries <countries>
41153
+ hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path> --output json`).action(async (opts) => {
41154
+ const ctx = resource.parent?.opts()._ctx;
41155
+ if (!ctx) {
41156
+ process.stderr.write("Error: Not authenticated\n");
41157
+ process.exit(1);
41158
+ }
41159
+ const args = {};
41160
+ if (opts.id !== void 0)
41161
+ args.id = opts.id;
41162
+ if (opts.language !== void 0)
41163
+ args.language = opts.language;
41164
+ if (opts.countries !== void 0)
41165
+ args.countries = opts.countries;
41166
+ const files = {};
41167
+ if (opts.files !== void 0)
41168
+ files.files = [opts.files].flat();
41169
+ await ctx.execute({
41170
+ method: "POST",
41171
+ path: "/v1/contracts/documents/{id}/contents",
41172
+ args,
41173
+ queryParamKeys: [],
41174
+ files
41175
+ });
41176
+ });
41177
+ resource.command("update-contract-document-content").description(`Update a contract document content. Sent files replace all its existing files: use it to publish a new version of a document. Existing quotes keep their copy of the previous files.`).requiredOption("--id <value>", `id parameter`).requiredOption("--content-id <value>", `contentId parameter`).option("--language <value>", `Language of the content. \`default\` is used when no content exists for the customer language.`).option("--countries <value>", `Countries the content applies to, as ISO 3166-1 alpha-2 codes. Empty means all countries. In a multipart request, send a comma-separated list, or an empty value for all countries.`).option("--files <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
41178
+ Examples:
41179
+ hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId>
41180
+ hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId> --language <language> --countries <countries>
41181
+ hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId> --output json`).action(async (opts) => {
41182
+ const ctx = resource.parent?.opts()._ctx;
41183
+ if (!ctx) {
41184
+ process.stderr.write("Error: Not authenticated\n");
41185
+ process.exit(1);
41186
+ }
41187
+ const args = {};
41188
+ if (opts.id !== void 0)
41189
+ args.id = opts.id;
41190
+ if (opts.contentId !== void 0)
41191
+ args.contentId = opts.contentId;
41192
+ if (opts.language !== void 0)
41193
+ args.language = opts.language;
41194
+ if (opts.countries !== void 0)
41195
+ args.countries = opts.countries;
41196
+ const files = {};
41197
+ if (opts.files !== void 0)
41198
+ files.files = [opts.files].flat();
41199
+ await ctx.execute({
41200
+ method: "PUT",
41201
+ path: "/v1/contracts/documents/{id}/contents/{contentId}",
41202
+ args,
41203
+ queryParamKeys: [],
41204
+ files
41205
+ });
41206
+ });
41207
+ resource.command("delete-contract-document-content").description(`Delete a content (one language and countries version) of a contract document.`).requiredOption("--id <value>", `id parameter`).requiredOption("--content-id <value>", `contentId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
41208
+ Examples:
41209
+ hyperline contracts-documents delete-contract-document-content --id <id> --content-id <contentId>
41210
+ hyperline contracts-documents delete-contract-document-content --id <id> --content-id <contentId> --output json`).action(async (opts) => {
41211
+ const ctx = resource.parent?.opts()._ctx;
41212
+ if (!ctx) {
41213
+ process.stderr.write("Error: Not authenticated\n");
41214
+ process.exit(1);
41215
+ }
41216
+ const args = {};
41217
+ if (opts.id !== void 0)
41218
+ args.id = opts.id;
41219
+ if (opts.contentId !== void 0)
41220
+ args.contentId = opts.contentId;
41221
+ if (!opts.yes) {
41222
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
41223
+ if (!confirmed) {
41224
+ process.stdout.write("Aborted.\n");
41225
+ return;
41226
+ }
41227
+ }
41228
+ await ctx.execute({
41229
+ method: "DELETE",
41230
+ path: "/v1/contracts/documents/{id}/contents/{contentId}",
41231
+ args,
41232
+ queryParamKeys: []
41233
+ });
41234
+ });
41235
+ }
41236
+
41237
+ // build/commands/generated/coupons.js
41238
+ function registerCouponsCommands(parent) {
41239
+ const resource = parent.command("coupons").description("Manage coupons");
41240
+ 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", `
41241
+ Examples:
41242
+ hyperline coupons list
41243
+ hyperline coupons list --take <take>`).action(async (opts) => {
41244
+ const ctx = resource.parent?.opts()._ctx;
41245
+ if (!ctx) {
41246
+ process.stderr.write("Error: Not authenticated\n");
41247
+ process.exit(1);
41248
+ }
41249
+ const args = {};
41250
+ if (opts.take !== void 0)
41251
+ args.take = Number(opts.take);
41252
+ if (opts.skip !== void 0)
41253
+ args.skip = Number(opts.skip);
41254
+ await ctx.execute({
41255
+ method: "GET",
41256
+ path: "/v1/coupons",
41257
+ args,
41258
+ queryParamKeys: ["take", "skip"]
41259
+ });
41260
+ });
41261
+ 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", `
41262
+ Examples:
41263
+ hyperline coupons create --name <name> --type <type>
41264
+ hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
41265
+ hyperline coupons create --name <name> --type <type> --output json`).action(async (opts) => {
41266
+ const ctx = resource.parent?.opts()._ctx;
41267
+ if (!ctx) {
41268
+ process.stderr.write("Error: Not authenticated\n");
41269
+ process.exit(1);
41270
+ }
41271
+ const args = {};
41272
+ if (opts.name !== void 0)
41273
+ args.name = opts.name;
41274
+ if (opts.description !== void 0)
41275
+ args.description = opts.description;
41276
+ if (opts.expirationDate !== void 0)
41277
+ args.expiration_date = opts.expirationDate;
41278
+ if (opts.productScope !== void 0)
41279
+ args.product_scope = opts.productScope;
41280
+ if (opts.repeat !== void 0)
41281
+ args.repeat = opts.repeat;
41282
+ if (opts.type !== void 0)
41283
+ args.type = opts.type;
41284
+ if (opts.currency !== void 0)
41285
+ args.currency = opts.currency;
41286
+ if (opts.redemptionLimit !== void 0)
41287
+ args.redemption_limit = Number(opts.redemptionLimit);
41288
+ if (opts.discountAmount !== void 0)
41289
+ args.discount_amount = Number(opts.discountAmount);
41290
+ if (opts.discountPercent !== void 0)
41291
+ args.discount_percent = Number(opts.discountPercent);
41292
+ if (opts.productIds !== void 0)
41293
+ args.product_ids = JSON.parse(opts.productIds);
41294
+ if (opts.duration !== void 0)
41295
+ args.duration = JSON.parse(opts.duration);
41296
+ if (opts.properties !== void 0)
41297
+ args.properties = JSON.parse(opts.properties);
41298
+ await ctx.execute({
41299
+ method: "POST",
41300
+ path: "/v1/coupons",
41301
+ args,
41302
+ queryParamKeys: []
41303
+ });
41304
+ });
41305
+ 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", `
41306
+ Examples:
41307
+ hyperline coupons get --id <id>`).action(async (opts) => {
41308
+ const ctx = resource.parent?.opts()._ctx;
41309
+ if (!ctx) {
41310
+ process.stderr.write("Error: Not authenticated\n");
41311
+ process.exit(1);
41312
+ }
41313
+ const args = {};
41314
+ if (opts.id !== void 0)
41315
+ args.id = opts.id;
41316
+ await ctx.execute({
41317
+ method: "GET",
41318
+ path: "/v1/coupons/{id}",
41319
+ args,
41320
+ queryParamKeys: []
41321
+ });
41322
+ });
41323
+ resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).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", `
41324
+ Examples:
41325
+ hyperline coupons update --id <id> --name <name> --type <type>
41326
+ hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
41327
+ hyperline coupons update --id <id> --name <name> --type <type> --output json`).action(async (opts) => {
41328
+ const ctx = resource.parent?.opts()._ctx;
41329
+ if (!ctx) {
41330
+ process.stderr.write("Error: Not authenticated\n");
41331
+ process.exit(1);
41332
+ }
41333
+ const args = {};
41334
+ if (opts.id !== void 0)
41335
+ args.id = opts.id;
41336
+ if (opts.name !== void 0)
41337
+ args.name = opts.name;
41338
+ if (opts.description !== void 0)
41339
+ args.description = opts.description;
41340
+ if (opts.expirationDate !== void 0)
41341
+ args.expiration_date = opts.expirationDate;
41342
+ if (opts.productScope !== void 0)
41343
+ args.product_scope = opts.productScope;
41344
+ if (opts.repeat !== void 0)
41345
+ args.repeat = opts.repeat;
41346
+ if (opts.type !== void 0)
41347
+ args.type = opts.type;
41348
+ if (opts.currency !== void 0)
41349
+ args.currency = opts.currency;
41350
+ if (opts.redemptionLimit !== void 0)
41351
+ args.redemption_limit = Number(opts.redemptionLimit);
41352
+ if (opts.discountAmount !== void 0)
41353
+ args.discount_amount = Number(opts.discountAmount);
41354
+ if (opts.discountPercent !== void 0)
41355
+ args.discount_percent = Number(opts.discountPercent);
41356
+ if (opts.productIds !== void 0)
41357
+ args.product_ids = JSON.parse(opts.productIds);
41358
+ if (opts.duration !== void 0)
41359
+ args.duration = JSON.parse(opts.duration);
41360
+ if (opts.properties !== void 0)
41361
+ args.properties = JSON.parse(opts.properties);
41362
+ await ctx.execute({
41363
+ method: "PUT",
41364
+ path: "/v1/coupons/{id}",
41365
+ args,
41366
+ queryParamKeys: []
41367
+ });
41368
+ });
41369
+ resource.command("delete").description(`Permanently delete a coupon by ID. This cannot be undone.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
41370
+ Examples:
41371
+ hyperline coupons delete --id <id>
41372
+ hyperline coupons delete --id <id> --output json`).action(async (opts) => {
41373
+ const ctx = resource.parent?.opts()._ctx;
41374
+ if (!ctx) {
41375
+ process.stderr.write("Error: Not authenticated\n");
41376
+ process.exit(1);
41377
+ }
41378
+ const args = {};
41379
+ if (opts.id !== void 0)
41380
+ args.id = opts.id;
41381
+ if (!opts.yes) {
41382
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
41383
+ if (!confirmed) {
41384
+ process.stdout.write("Aborted.\n");
41385
+ return;
41386
+ }
41387
+ }
41388
+ await ctx.execute({
41389
+ method: "DELETE",
41390
+ path: "/v1/coupons/{id}",
41391
+ args,
41392
+ queryParamKeys: []
41393
+ });
41394
+ });
41395
+ }
41396
+
41397
+ // build/commands/generated/coupons-promotion-codes.js
41398
+ function registerCoupons_Promotion_CodesCommands(parent) {
41399
+ const resource = parent.command("coupons-promotion-codes").description("Manage coupons > promotion codes");
41400
+ 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", `
41401
+ Examples:
41402
+ hyperline coupons-promotion-codes list-promotion-codes
41403
+ hyperline coupons-promotion-codes list-promotion-codes --take <take> --coupon-id <coupon_id>`).action(async (opts) => {
41404
+ const ctx = resource.parent?.opts()._ctx;
41405
+ if (!ctx) {
41406
+ process.stderr.write("Error: Not authenticated\n");
41407
+ process.exit(1);
41408
+ }
41409
+ const args = {};
41410
+ if (opts.couponId !== void 0)
41411
+ args.coupon_id = opts.couponId;
41412
+ if (opts["couponId.not"] !== void 0)
41413
+ args.coupon_id__not = opts["couponId.not"];
41414
+ if (opts["couponId.equals"] !== void 0)
41415
+ args.coupon_id__equals = opts["couponId.equals"];
41416
+ if (opts["couponId.contains"] !== void 0)
41417
+ args.coupon_id__contains = opts["couponId.contains"];
40890
41418
  if (opts["couponId.startsWith"] !== void 0)
40891
41419
  args.coupon_id__startsWith = opts["couponId.startsWith"];
40892
41420
  if (opts["couponId.endWith"] !== void 0)
@@ -40904,8 +41432,6 @@ Examples:
40904
41432
  "skip",
40905
41433
  "coupon_id",
40906
41434
  "coupon_id__not",
40907
- "coupon_id__isNull",
40908
- "coupon_id__isNotNull",
40909
41435
  "coupon_id__equals",
40910
41436
  "coupon_id__contains",
40911
41437
  "coupon_id__startsWith",
@@ -41159,7 +41685,7 @@ Examples:
41159
41685
  // build/commands/generated/customers.js
41160
41686
  function registerCustomersCommands(parent) {
41161
41687
  const resource = parent.command("customers").description("Manage customers");
41162
- resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, tax_id_status, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--tax-id-status <value>", `
41688
+ resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, tax_id_status, subscription_status, invoicing_entity_id, segment_id, custom_properties (JSON object of slug to exact value, e.g. {"my_slug":"value"}; slugs matching no custom property are ignored), payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--tax-id-status <value>", `
41163
41689
  Verification status of the customer tax ID.
41164
41690
 
41165
41691
  - \`valid\`: Tax ID has been verified and is valid.
@@ -41167,7 +41693,7 @@ Verification status of the customer tax ID.
41167
41693
  - \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
41168
41694
  - \`unverified\`: Tax ID has not been verified yet.
41169
41695
  - \`unsupported\`: Tax ID verification for this type not supported yet.
41170
- `).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", `
41696
+ `).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--country <value>", `country`).option("--country.not <value>", `country__not`).option("--country.equals <value>", `country__equals`).option("--country.contains <value>", `country__contains`).option("--country.starts-with <value>", `country__startsWith`).option("--country.end-with <value>", `country__endWith`).option("--country.is-null <value>", `country__isNull`).option("--country.is-not-null <value>", `country__isNotNull`).option("--external-id <value>", `external_id`).option("--external-id.not <value>", `external_id__not`).option("--external-id.equals <value>", `external_id__equals`).option("--external-id.contains <value>", `external_id__contains`).option("--external-id.starts-with <value>", `external_id__startsWith`).option("--external-id.end-with <value>", `external_id__endWith`).option("--external-id.is-null <value>", `external_id__isNull`).option("--external-id.is-not-null <value>", `external_id__isNotNull`).option("--billing-email <value>", `billing_email`).option("--billing-email.not <value>", `billing_email__not`).option("--billing-email.equals <value>", `billing_email__equals`).option("--billing-email.contains <value>", `billing_email__contains`).option("--billing-email.starts-with <value>", `billing_email__startsWith`).option("--billing-email.end-with <value>", `billing_email__endWith`).option("--billing-email.is-null <value>", `billing_email__isNull`).option("--billing-email.is-not-null <value>", `billing_email__isNotNull`).option("--search <value>", `search`).option("--tax-id <value>", `tax_id`).option("--tax-id.not <value>", `tax_id__not`).option("--tax-id.equals <value>", `tax_id__equals`).option("--tax-id.contains <value>", `tax_id__contains`).option("--tax-id.starts-with <value>", `tax_id__startsWith`).option("--tax-id.end-with <value>", `tax_id__endWith`).option("--tax-id.is-null <value>", `tax_id__isNull`).option("--tax-id.is-not-null <value>", `tax_id__isNotNull`).option("--subscription-status <value>", `subscription_status`).option("--subscription-status.in <value>", `subscription_status__in`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--segment-id <value>", `segment_id`).option("--custom-properties <value>", `Filter by custom property values, as a JSON object mapping a custom property slug to the exact value to match. Suffix a slug with \`__contains\` for a case-sensitive substring match on text values. Several entries are combined with AND. Entries whose slug matches no custom property, or whose value is \`false\`, \`0\`, \`null\` or an empty string, are ignored.`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-type.in <value>", `payment_method_type__in`).option("--integration-entity-id <value>", `integration_entity_id`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
41171
41697
  Examples:
41172
41698
  hyperline customers list
41173
41699
  hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -41191,10 +41717,6 @@ Examples:
41191
41717
  args.name = opts.name;
41192
41718
  if (opts["name.not"] !== void 0)
41193
41719
  args.name__not = opts["name.not"];
41194
- if (opts["name.isNull"] !== void 0)
41195
- args.name__isNull = opts["name.isNull"];
41196
- if (opts["name.isNotNull"] !== void 0)
41197
- args.name__isNotNull = opts["name.isNotNull"];
41198
41720
  if (opts["name.equals"] !== void 0)
41199
41721
  args.name__equals = opts["name.equals"];
41200
41722
  if (opts["name.contains"] !== void 0)
@@ -41215,10 +41737,6 @@ Examples:
41215
41737
  args.currency = opts.currency;
41216
41738
  if (opts["currency.not"] !== void 0)
41217
41739
  args.currency__not = opts["currency.not"];
41218
- if (opts["currency.isNull"] !== void 0)
41219
- args.currency__isNull = opts["currency.isNull"];
41220
- if (opts["currency.isNotNull"] !== void 0)
41221
- args.currency__isNotNull = opts["currency.isNotNull"];
41222
41740
  if (opts["currency.equals"] !== void 0)
41223
41741
  args.currency__equals = opts["currency.equals"];
41224
41742
  if (opts["currency.contains"] !== void 0)
@@ -41227,14 +41745,14 @@ Examples:
41227
41745
  args.currency__startsWith = opts["currency.startsWith"];
41228
41746
  if (opts["currency.endWith"] !== void 0)
41229
41747
  args.currency__endWith = opts["currency.endWith"];
41748
+ if (opts["currency.isNull"] !== void 0)
41749
+ args.currency__isNull = opts["currency.isNull"];
41750
+ if (opts["currency.isNotNull"] !== void 0)
41751
+ args.currency__isNotNull = opts["currency.isNotNull"];
41230
41752
  if (opts.country !== void 0)
41231
41753
  args.country = opts.country;
41232
41754
  if (opts["country.not"] !== void 0)
41233
41755
  args.country__not = opts["country.not"];
41234
- if (opts["country.isNull"] !== void 0)
41235
- args.country__isNull = opts["country.isNull"];
41236
- if (opts["country.isNotNull"] !== void 0)
41237
- args.country__isNotNull = opts["country.isNotNull"];
41238
41756
  if (opts["country.equals"] !== void 0)
41239
41757
  args.country__equals = opts["country.equals"];
41240
41758
  if (opts["country.contains"] !== void 0)
@@ -41243,14 +41761,14 @@ Examples:
41243
41761
  args.country__startsWith = opts["country.startsWith"];
41244
41762
  if (opts["country.endWith"] !== void 0)
41245
41763
  args.country__endWith = opts["country.endWith"];
41764
+ if (opts["country.isNull"] !== void 0)
41765
+ args.country__isNull = opts["country.isNull"];
41766
+ if (opts["country.isNotNull"] !== void 0)
41767
+ args.country__isNotNull = opts["country.isNotNull"];
41246
41768
  if (opts.externalId !== void 0)
41247
41769
  args.external_id = opts.externalId;
41248
41770
  if (opts["externalId.not"] !== void 0)
41249
41771
  args.external_id__not = opts["externalId.not"];
41250
- if (opts["externalId.isNull"] !== void 0)
41251
- args.external_id__isNull = opts["externalId.isNull"];
41252
- if (opts["externalId.isNotNull"] !== void 0)
41253
- args.external_id__isNotNull = opts["externalId.isNotNull"];
41254
41772
  if (opts["externalId.equals"] !== void 0)
41255
41773
  args.external_id__equals = opts["externalId.equals"];
41256
41774
  if (opts["externalId.contains"] !== void 0)
@@ -41259,14 +41777,14 @@ Examples:
41259
41777
  args.external_id__startsWith = opts["externalId.startsWith"];
41260
41778
  if (opts["externalId.endWith"] !== void 0)
41261
41779
  args.external_id__endWith = opts["externalId.endWith"];
41780
+ if (opts["externalId.isNull"] !== void 0)
41781
+ args.external_id__isNull = opts["externalId.isNull"];
41782
+ if (opts["externalId.isNotNull"] !== void 0)
41783
+ args.external_id__isNotNull = opts["externalId.isNotNull"];
41262
41784
  if (opts.billingEmail !== void 0)
41263
41785
  args.billing_email = opts.billingEmail;
41264
41786
  if (opts["billingEmail.not"] !== void 0)
41265
41787
  args.billing_email__not = opts["billingEmail.not"];
41266
- if (opts["billingEmail.isNull"] !== void 0)
41267
- args.billing_email__isNull = opts["billingEmail.isNull"];
41268
- if (opts["billingEmail.isNotNull"] !== void 0)
41269
- args.billing_email__isNotNull = opts["billingEmail.isNotNull"];
41270
41788
  if (opts["billingEmail.equals"] !== void 0)
41271
41789
  args.billing_email__equals = opts["billingEmail.equals"];
41272
41790
  if (opts["billingEmail.contains"] !== void 0)
@@ -41275,16 +41793,16 @@ Examples:
41275
41793
  args.billing_email__startsWith = opts["billingEmail.startsWith"];
41276
41794
  if (opts["billingEmail.endWith"] !== void 0)
41277
41795
  args.billing_email__endWith = opts["billingEmail.endWith"];
41796
+ if (opts["billingEmail.isNull"] !== void 0)
41797
+ args.billing_email__isNull = opts["billingEmail.isNull"];
41798
+ if (opts["billingEmail.isNotNull"] !== void 0)
41799
+ args.billing_email__isNotNull = opts["billingEmail.isNotNull"];
41278
41800
  if (opts.search !== void 0)
41279
41801
  args.search = opts.search;
41280
41802
  if (opts.taxId !== void 0)
41281
41803
  args.tax_id = opts.taxId;
41282
41804
  if (opts["taxId.not"] !== void 0)
41283
41805
  args.tax_id__not = opts["taxId.not"];
41284
- if (opts["taxId.isNull"] !== void 0)
41285
- args.tax_id__isNull = opts["taxId.isNull"];
41286
- if (opts["taxId.isNotNull"] !== void 0)
41287
- args.tax_id__isNotNull = opts["taxId.isNotNull"];
41288
41806
  if (opts["taxId.equals"] !== void 0)
41289
41807
  args.tax_id__equals = opts["taxId.equals"];
41290
41808
  if (opts["taxId.contains"] !== void 0)
@@ -41293,6 +41811,10 @@ Examples:
41293
41811
  args.tax_id__startsWith = opts["taxId.startsWith"];
41294
41812
  if (opts["taxId.endWith"] !== void 0)
41295
41813
  args.tax_id__endWith = opts["taxId.endWith"];
41814
+ if (opts["taxId.isNull"] !== void 0)
41815
+ args.tax_id__isNull = opts["taxId.isNull"];
41816
+ if (opts["taxId.isNotNull"] !== void 0)
41817
+ args.tax_id__isNotNull = opts["taxId.isNotNull"];
41296
41818
  if (opts.subscriptionStatus !== void 0)
41297
41819
  args.subscription_status = opts.subscriptionStatus;
41298
41820
  if (opts["subscriptionStatus.in"] !== void 0)
@@ -41301,10 +41823,6 @@ Examples:
41301
41823
  args.invoicing_entity_id = opts.invoicingEntityId;
41302
41824
  if (opts["invoicingEntityId.not"] !== void 0)
41303
41825
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
41304
- if (opts["invoicingEntityId.isNull"] !== void 0)
41305
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
41306
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
41307
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
41308
41826
  if (opts["invoicingEntityId.equals"] !== void 0)
41309
41827
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
41310
41828
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -41327,10 +41845,6 @@ Examples:
41327
41845
  args.created_at = opts.createdAt;
41328
41846
  if (opts["createdAt.not"] !== void 0)
41329
41847
  args.created_at__not = opts["createdAt.not"];
41330
- if (opts["createdAt.isNull"] !== void 0)
41331
- args.created_at__isNull = opts["createdAt.isNull"];
41332
- if (opts["createdAt.isNotNull"] !== void 0)
41333
- args.created_at__isNotNull = opts["createdAt.isNotNull"];
41334
41848
  if (opts["createdAt.equals"] !== void 0)
41335
41849
  args.created_at__equals = opts["createdAt.equals"];
41336
41850
  if (opts["createdAt.lt"] !== void 0)
@@ -41345,10 +41859,6 @@ Examples:
41345
41859
  args.updated_at = opts.updatedAt;
41346
41860
  if (opts["updatedAt.not"] !== void 0)
41347
41861
  args.updated_at__not = opts["updatedAt.not"];
41348
- if (opts["updatedAt.isNull"] !== void 0)
41349
- args.updated_at__isNull = opts["updatedAt.isNull"];
41350
- if (opts["updatedAt.isNotNull"] !== void 0)
41351
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
41352
41862
  if (opts["updatedAt.equals"] !== void 0)
41353
41863
  args.updated_at__equals = opts["updatedAt.equals"];
41354
41864
  if (opts["updatedAt.lt"] !== void 0)
@@ -41374,8 +41884,6 @@ Examples:
41374
41884
  "tax_id_status",
41375
41885
  "name",
41376
41886
  "name__not",
41377
- "name__isNull",
41378
- "name__isNotNull",
41379
41887
  "name__equals",
41380
41888
  "name__contains",
41381
41889
  "name__startsWith",
@@ -41386,51 +41894,49 @@ Examples:
41386
41894
  "status__in",
41387
41895
  "currency",
41388
41896
  "currency__not",
41389
- "currency__isNull",
41390
- "currency__isNotNull",
41391
41897
  "currency__equals",
41392
41898
  "currency__contains",
41393
41899
  "currency__startsWith",
41394
41900
  "currency__endWith",
41901
+ "currency__isNull",
41902
+ "currency__isNotNull",
41395
41903
  "country",
41396
41904
  "country__not",
41397
- "country__isNull",
41398
- "country__isNotNull",
41399
41905
  "country__equals",
41400
41906
  "country__contains",
41401
41907
  "country__startsWith",
41402
41908
  "country__endWith",
41909
+ "country__isNull",
41910
+ "country__isNotNull",
41403
41911
  "external_id",
41404
41912
  "external_id__not",
41405
- "external_id__isNull",
41406
- "external_id__isNotNull",
41407
41913
  "external_id__equals",
41408
41914
  "external_id__contains",
41409
41915
  "external_id__startsWith",
41410
41916
  "external_id__endWith",
41917
+ "external_id__isNull",
41918
+ "external_id__isNotNull",
41411
41919
  "billing_email",
41412
41920
  "billing_email__not",
41413
- "billing_email__isNull",
41414
- "billing_email__isNotNull",
41415
41921
  "billing_email__equals",
41416
41922
  "billing_email__contains",
41417
41923
  "billing_email__startsWith",
41418
41924
  "billing_email__endWith",
41925
+ "billing_email__isNull",
41926
+ "billing_email__isNotNull",
41419
41927
  "search",
41420
41928
  "tax_id",
41421
41929
  "tax_id__not",
41422
- "tax_id__isNull",
41423
- "tax_id__isNotNull",
41424
41930
  "tax_id__equals",
41425
41931
  "tax_id__contains",
41426
41932
  "tax_id__startsWith",
41427
41933
  "tax_id__endWith",
41934
+ "tax_id__isNull",
41935
+ "tax_id__isNotNull",
41428
41936
  "subscription_status",
41429
41937
  "subscription_status__in",
41430
41938
  "invoicing_entity_id",
41431
41939
  "invoicing_entity_id__not",
41432
- "invoicing_entity_id__isNull",
41433
- "invoicing_entity_id__isNotNull",
41434
41940
  "invoicing_entity_id__equals",
41435
41941
  "invoicing_entity_id__contains",
41436
41942
  "invoicing_entity_id__startsWith",
@@ -41442,8 +41948,6 @@ Examples:
41442
41948
  "integration_entity_id",
41443
41949
  "created_at",
41444
41950
  "created_at__not",
41445
- "created_at__isNull",
41446
- "created_at__isNotNull",
41447
41951
  "created_at__equals",
41448
41952
  "created_at__lt",
41449
41953
  "created_at__lte",
@@ -41451,8 +41955,6 @@ Examples:
41451
41955
  "created_at__gte",
41452
41956
  "updated_at",
41453
41957
  "updated_at__not",
41454
- "updated_at__isNull",
41455
- "updated_at__isNotNull",
41456
41958
  "updated_at__equals",
41457
41959
  "updated_at__lt",
41458
41960
  "updated_at__lte",
@@ -41912,7 +42414,13 @@ Examples:
41912
42414
  queryParamKeys: []
41913
42415
  });
41914
42416
  });
41915
- 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", `
42417
+ resource.command("create-customer-address").description(`Create a shipping address with type shipping; billing creation is rejected because a customer can have at most one billing address, managed through the customer endpoint.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--type <value>", `Only shipping addresses can be created here. A customer has at most one active billing address, managed through the customer or by updating its address ID.`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
42418
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
42419
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
42420
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
42421
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
42422
+
42423
+ A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).option("--tax-id <value>", `Tax ID override for a shipping address. Null or blank inherits the customer's tax ID; omission on update preserves the override. Billing addresses cannot have an override.`).addHelpText("after", `
41916
42424
  Examples:
41917
42425
  hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
41918
42426
  hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
@@ -41950,7 +42458,13 @@ Examples:
41950
42458
  queryParamKeys: []
41951
42459
  });
41952
42460
  });
41953
- 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", `
42461
+ resource.command("update-customer-address").description(`Update a billing or shipping address by ID; billing changes also update the customer billing-address projection.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
42462
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
42463
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
42464
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
42465
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
42466
+
42467
+ A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).option("--tax-id <value>", `Tax ID override for a shipping address. Null or blank inherits the customer's tax ID; omission on update preserves the override. Billing addresses cannot have an override.`).addHelpText("after", `
41954
42468
  Examples:
41955
42469
  hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
41956
42470
  hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
@@ -42021,7 +42535,7 @@ Examples:
42021
42535
  // build/commands/generated/customers-credits.js
42022
42536
  function registerCustomers_CreditsCommands(parent) {
42023
42537
  const resource = parent.command("customers-credits").description("Manage customers > credits");
42024
- 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", `
42538
+ 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", `
42025
42539
  Examples:
42026
42540
  hyperline customers-credits list
42027
42541
  hyperline customers-credits list --take <take> --product-id <product_id>`).action(async (opts) => {
@@ -42035,10 +42549,6 @@ Examples:
42035
42549
  args.product_id = opts.productId;
42036
42550
  if (opts["productId.not"] !== void 0)
42037
42551
  args.product_id__not = opts["productId.not"];
42038
- if (opts["productId.isNull"] !== void 0)
42039
- args.product_id__isNull = opts["productId.isNull"];
42040
- if (opts["productId.isNotNull"] !== void 0)
42041
- args.product_id__isNotNull = opts["productId.isNotNull"];
42042
42552
  if (opts["productId.equals"] !== void 0)
42043
42553
  args.product_id__equals = opts["productId.equals"];
42044
42554
  if (opts["productId.contains"] !== void 0)
@@ -42051,10 +42561,6 @@ Examples:
42051
42561
  args.customer_id = opts.customerId;
42052
42562
  if (opts["customerId.not"] !== void 0)
42053
42563
  args.customer_id__not = opts["customerId.not"];
42054
- if (opts["customerId.isNull"] !== void 0)
42055
- args.customer_id__isNull = opts["customerId.isNull"];
42056
- if (opts["customerId.isNotNull"] !== void 0)
42057
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
42058
42564
  if (opts["customerId.equals"] !== void 0)
42059
42565
  args.customer_id__equals = opts["customerId.equals"];
42060
42566
  if (opts["customerId.contains"] !== void 0)
@@ -42067,10 +42573,6 @@ Examples:
42067
42573
  args.updated_at = opts.updatedAt;
42068
42574
  if (opts["updatedAt.not"] !== void 0)
42069
42575
  args.updated_at__not = opts["updatedAt.not"];
42070
- if (opts["updatedAt.isNull"] !== void 0)
42071
- args.updated_at__isNull = opts["updatedAt.isNull"];
42072
- if (opts["updatedAt.isNotNull"] !== void 0)
42073
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
42074
42576
  if (opts["updatedAt.equals"] !== void 0)
42075
42577
  args.updated_at__equals = opts["updatedAt.equals"];
42076
42578
  if (opts["updatedAt.lt"] !== void 0)
@@ -42094,24 +42596,18 @@ Examples:
42094
42596
  "skip",
42095
42597
  "product_id",
42096
42598
  "product_id__not",
42097
- "product_id__isNull",
42098
- "product_id__isNotNull",
42099
42599
  "product_id__equals",
42100
42600
  "product_id__contains",
42101
42601
  "product_id__startsWith",
42102
42602
  "product_id__endWith",
42103
42603
  "customer_id",
42104
42604
  "customer_id__not",
42105
- "customer_id__isNull",
42106
- "customer_id__isNotNull",
42107
42605
  "customer_id__equals",
42108
42606
  "customer_id__contains",
42109
42607
  "customer_id__startsWith",
42110
42608
  "customer_id__endWith",
42111
42609
  "updated_at",
42112
42610
  "updated_at__not",
42113
- "updated_at__isNull",
42114
- "updated_at__isNotNull",
42115
42611
  "updated_at__equals",
42116
42612
  "updated_at__lt",
42117
42613
  "updated_at__lte",
@@ -42384,6 +42880,88 @@ Examples:
42384
42880
  });
42385
42881
  }
42386
42882
 
42883
+ // build/commands/generated/customers-features.js
42884
+ function registerCustomers_FeaturesCommands(parent) {
42885
+ const resource = parent.command("customers-features").description("Manage customers > features");
42886
+ resource.command("resolve-customer-features").description(`Resolve feature values for a customer.`).requiredOption("--id <value>", `id parameter`).option("--at <value>", `Resolution date.`).addHelpText("after", `
42887
+ Examples:
42888
+ hyperline customers-features resolve-customer-features --id <id>
42889
+ hyperline customers-features resolve-customer-features --id <id> --at <at>`).action(async (opts) => {
42890
+ const ctx = resource.parent?.opts()._ctx;
42891
+ if (!ctx) {
42892
+ process.stderr.write("Error: Not authenticated\n");
42893
+ process.exit(1);
42894
+ }
42895
+ const args = {};
42896
+ if (opts.id !== void 0)
42897
+ args.id = opts.id;
42898
+ if (opts.at !== void 0)
42899
+ args.at = opts.at;
42900
+ await ctx.execute({
42901
+ method: "GET",
42902
+ path: "/v1/customers/{id}/features",
42903
+ args,
42904
+ queryParamKeys: ["at"]
42905
+ });
42906
+ });
42907
+ 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", `
42908
+ Examples:
42909
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value
42910
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value --reason <reason> --expires-at <expires_at>
42911
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value --output json`).action(async (opts) => {
42912
+ const ctx = resource.parent?.opts()._ctx;
42913
+ if (!ctx) {
42914
+ process.stderr.write("Error: Not authenticated\n");
42915
+ process.exit(1);
42916
+ }
42917
+ const args = {};
42918
+ if (opts.id !== void 0)
42919
+ args.id = opts.id;
42920
+ if (opts.code !== void 0)
42921
+ args.code = opts.code;
42922
+ if (opts.reason !== void 0)
42923
+ args.reason = opts.reason;
42924
+ if (opts.expiresAt !== void 0)
42925
+ args.expires_at = opts.expiresAt;
42926
+ if (opts.value !== void 0)
42927
+ args.value = true;
42928
+ await ctx.execute({
42929
+ method: "PUT",
42930
+ path: "/v1/customers/{id}/features/{code}",
42931
+ args,
42932
+ queryParamKeys: []
42933
+ });
42934
+ });
42935
+ 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", `
42936
+ Examples:
42937
+ hyperline customers-features delete-customer-feature --id <id> --code <code>
42938
+ hyperline customers-features delete-customer-feature --id <id> --code <code> --output json`).action(async (opts) => {
42939
+ const ctx = resource.parent?.opts()._ctx;
42940
+ if (!ctx) {
42941
+ process.stderr.write("Error: Not authenticated\n");
42942
+ process.exit(1);
42943
+ }
42944
+ const args = {};
42945
+ if (opts.id !== void 0)
42946
+ args.id = opts.id;
42947
+ if (opts.code !== void 0)
42948
+ args.code = opts.code;
42949
+ if (!opts.yes) {
42950
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
42951
+ if (!confirmed) {
42952
+ process.stdout.write("Aborted.\n");
42953
+ return;
42954
+ }
42955
+ }
42956
+ await ctx.execute({
42957
+ method: "DELETE",
42958
+ path: "/v1/customers/{id}/features/{code}",
42959
+ args,
42960
+ queryParamKeys: []
42961
+ });
42962
+ });
42963
+ }
42964
+
42387
42965
  // build/commands/generated/customers-payment-methods.js
42388
42966
  function registerCustomers_Payment_MethodsCommands(parent) {
42389
42967
  const resource = parent.command("customers-payment-methods").description("Manage customers > payment methods");
@@ -42755,78 +43333,294 @@ Export file type.
42755
43333
  - \`xlsx\`: The export will be generated in XLSX format.
42756
43334
  - \`json\`: The export will be generated in JSON format.`).addHelpText("after", `
42757
43335
  Examples:
42758
- hyperline exports create --name <name> --file-type <file_type>
42759
- hyperline exports create --name <name> --file-type <file_type> --output json`).action(async (opts) => {
43336
+ hyperline exports create --name <name> --file-type <file_type>
43337
+ hyperline exports create --name <name> --file-type <file_type> --output json`).action(async (opts) => {
43338
+ const ctx = resource.parent?.opts()._ctx;
43339
+ if (!ctx) {
43340
+ process.stderr.write("Error: Not authenticated\n");
43341
+ process.exit(1);
43342
+ }
43343
+ const args = {};
43344
+ if (opts.name !== void 0)
43345
+ args.name = opts.name;
43346
+ if (opts.fileType !== void 0)
43347
+ args.file_type = opts.fileType;
43348
+ await ctx.execute({
43349
+ method: "POST",
43350
+ path: "/v1/exports",
43351
+ args,
43352
+ queryParamKeys: []
43353
+ });
43354
+ });
43355
+ 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", `
43356
+ Examples:
43357
+ hyperline exports list
43358
+ hyperline exports list --take <take>`).action(async (opts) => {
43359
+ const ctx = resource.parent?.opts()._ctx;
43360
+ if (!ctx) {
43361
+ process.stderr.write("Error: Not authenticated\n");
43362
+ process.exit(1);
43363
+ }
43364
+ const args = {};
43365
+ if (opts.take !== void 0)
43366
+ args.take = Number(opts.take);
43367
+ if (opts.skip !== void 0)
43368
+ args.skip = Number(opts.skip);
43369
+ await ctx.execute({
43370
+ method: "GET",
43371
+ path: "/v1/exports",
43372
+ args,
43373
+ queryParamKeys: ["take", "skip"]
43374
+ });
43375
+ });
43376
+ 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", `
43377
+ Examples:
43378
+ hyperline exports get --export-id <exportId>`).action(async (opts) => {
43379
+ const ctx = resource.parent?.opts()._ctx;
43380
+ if (!ctx) {
43381
+ process.stderr.write("Error: Not authenticated\n");
43382
+ process.exit(1);
43383
+ }
43384
+ const args = {};
43385
+ if (opts.exportId !== void 0)
43386
+ args.exportId = opts.exportId;
43387
+ await ctx.execute({
43388
+ method: "GET",
43389
+ path: "/v1/exports/{exportId}",
43390
+ args,
43391
+ queryParamKeys: []
43392
+ });
43393
+ });
43394
+ 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", `
43395
+ Examples:
43396
+ hyperline exports download --export-id <exportId>`).action(async (opts) => {
43397
+ const ctx = resource.parent?.opts()._ctx;
43398
+ if (!ctx) {
43399
+ process.stderr.write("Error: Not authenticated\n");
43400
+ process.exit(1);
43401
+ }
43402
+ const args = {};
43403
+ if (opts.exportId !== void 0)
43404
+ args.exportId = opts.exportId;
43405
+ await ctx.execute({
43406
+ method: "GET",
43407
+ path: "/v2/exports/{exportId}/download",
43408
+ args,
43409
+ queryParamKeys: []
43410
+ });
43411
+ });
43412
+ }
43413
+
43414
+ // build/commands/generated/features.js
43415
+ function registerFeaturesCommands(parent) {
43416
+ const resource = parent.command("features").description("Manage features");
43417
+ 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", `
43418
+ Examples:
43419
+ hyperline features list
43420
+ hyperline features list --take <take> --code <code>`).action(async (opts) => {
43421
+ const ctx = resource.parent?.opts()._ctx;
43422
+ if (!ctx) {
43423
+ process.stderr.write("Error: Not authenticated\n");
43424
+ process.exit(1);
43425
+ }
43426
+ const args = {};
43427
+ if (opts.code !== void 0)
43428
+ args.code = opts.code;
43429
+ if (opts["code.not"] !== void 0)
43430
+ args.code__not = opts["code.not"];
43431
+ if (opts["code.equals"] !== void 0)
43432
+ args.code__equals = opts["code.equals"];
43433
+ if (opts["code.contains"] !== void 0)
43434
+ args.code__contains = opts["code.contains"];
43435
+ if (opts["code.startsWith"] !== void 0)
43436
+ args.code__startsWith = opts["code.startsWith"];
43437
+ if (opts["code.endWith"] !== void 0)
43438
+ args.code__endWith = opts["code.endWith"];
43439
+ if (opts.name !== void 0)
43440
+ args.name = opts.name;
43441
+ if (opts["name.not"] !== void 0)
43442
+ args.name__not = opts["name.not"];
43443
+ if (opts["name.equals"] !== void 0)
43444
+ args.name__equals = opts["name.equals"];
43445
+ if (opts["name.contains"] !== void 0)
43446
+ args.name__contains = opts["name.contains"];
43447
+ if (opts["name.startsWith"] !== void 0)
43448
+ args.name__startsWith = opts["name.startsWith"];
43449
+ if (opts["name.endWith"] !== void 0)
43450
+ args.name__endWith = opts["name.endWith"];
43451
+ if (opts.status !== void 0)
43452
+ args.status = opts.status;
43453
+ if (opts["status.in"] !== void 0)
43454
+ args.status__in = opts["status.in"];
43455
+ if (opts.search !== void 0)
43456
+ args.search = opts.search;
43457
+ if (opts.take !== void 0)
43458
+ args.take = Number(opts.take);
43459
+ if (opts.skip !== void 0)
43460
+ args.skip = Number(opts.skip);
43461
+ await ctx.execute({
43462
+ method: "GET",
43463
+ path: "/v1/features",
43464
+ args,
43465
+ queryParamKeys: [
43466
+ "take",
43467
+ "skip",
43468
+ "code",
43469
+ "code__not",
43470
+ "code__equals",
43471
+ "code__contains",
43472
+ "code__startsWith",
43473
+ "code__endWith",
43474
+ "name",
43475
+ "name__not",
43476
+ "name__equals",
43477
+ "name__contains",
43478
+ "name__startsWith",
43479
+ "name__endWith",
43480
+ "status",
43481
+ "status__in",
43482
+ "search"
43483
+ ]
43484
+ });
43485
+ });
43486
+ 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", `
43487
+ Examples:
43488
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value
43489
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value --description <description> --resolution-strategy <resolution_strategy>
43490
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value --output json`).action(async (opts) => {
43491
+ const ctx = resource.parent?.opts()._ctx;
43492
+ if (!ctx) {
43493
+ process.stderr.write("Error: Not authenticated\n");
43494
+ process.exit(1);
43495
+ }
43496
+ const args = {};
43497
+ if (opts.code !== void 0)
43498
+ args.code = opts.code;
43499
+ if (opts.name !== void 0)
43500
+ args.name = opts.name;
43501
+ if (opts.description !== void 0)
43502
+ args.description = opts.description;
43503
+ if (opts.valueType !== void 0)
43504
+ args.value_type = opts.valueType;
43505
+ if (opts.resolutionStrategy !== void 0)
43506
+ args.resolution_strategy = opts.resolutionStrategy;
43507
+ if (opts.defaultValue !== void 0)
43508
+ args.default_value = true;
43509
+ await ctx.execute({
43510
+ method: "POST",
43511
+ path: "/v1/features",
43512
+ args,
43513
+ queryParamKeys: []
43514
+ });
43515
+ });
43516
+ resource.command("get").description(`Retrieve a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
43517
+ Examples:
43518
+ hyperline features get --code <code>`).action(async (opts) => {
43519
+ const ctx = resource.parent?.opts()._ctx;
43520
+ if (!ctx) {
43521
+ process.stderr.write("Error: Not authenticated\n");
43522
+ process.exit(1);
43523
+ }
43524
+ const args = {};
43525
+ if (opts.code !== void 0)
43526
+ args.code = opts.code;
43527
+ await ctx.execute({
43528
+ method: "GET",
43529
+ path: "/v1/features/{code}",
43530
+ args,
43531
+ queryParamKeys: []
43532
+ });
43533
+ });
43534
+ 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", `
43535
+ Examples:
43536
+ hyperline features update --code <code>
43537
+ hyperline features update --code <code> --name <name> --description <description>
43538
+ hyperline features update --code <code> --output json`).action(async (opts) => {
42760
43539
  const ctx = resource.parent?.opts()._ctx;
42761
43540
  if (!ctx) {
42762
43541
  process.stderr.write("Error: Not authenticated\n");
42763
43542
  process.exit(1);
42764
43543
  }
42765
43544
  const args = {};
43545
+ if (opts.code !== void 0)
43546
+ args.code = opts.code;
42766
43547
  if (opts.name !== void 0)
42767
43548
  args.name = opts.name;
42768
- if (opts.fileType !== void 0)
42769
- args.file_type = opts.fileType;
43549
+ if (opts.description !== void 0)
43550
+ args.description = opts.description;
43551
+ if (opts.valueType !== void 0)
43552
+ args.value_type = opts.valueType;
43553
+ if (opts.resolutionStrategy !== void 0)
43554
+ args.resolution_strategy = opts.resolutionStrategy;
43555
+ if (opts.defaultValue !== void 0)
43556
+ args.default_value = true;
42770
43557
  await ctx.execute({
42771
- method: "POST",
42772
- path: "/v1/exports",
43558
+ method: "PUT",
43559
+ path: "/v1/features/{code}",
42773
43560
  args,
42774
43561
  queryParamKeys: []
42775
43562
  });
42776
43563
  });
42777
- 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", `
43564
+ resource.command("archive").description(`Archive a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
42778
43565
  Examples:
42779
- hyperline exports list
42780
- hyperline exports list --take <take>`).action(async (opts) => {
43566
+ hyperline features archive --code <code>
43567
+ hyperline features archive --code <code> --output json`).action(async (opts) => {
42781
43568
  const ctx = resource.parent?.opts()._ctx;
42782
43569
  if (!ctx) {
42783
43570
  process.stderr.write("Error: Not authenticated\n");
42784
43571
  process.exit(1);
42785
43572
  }
42786
43573
  const args = {};
42787
- if (opts.take !== void 0)
42788
- args.take = Number(opts.take);
42789
- if (opts.skip !== void 0)
42790
- args.skip = Number(opts.skip);
43574
+ if (opts.code !== void 0)
43575
+ args.code = opts.code;
42791
43576
  await ctx.execute({
42792
- method: "GET",
42793
- path: "/v1/exports",
43577
+ method: "PUT",
43578
+ path: "/v1/features/{code}/archive",
42794
43579
  args,
42795
- queryParamKeys: ["take", "skip"]
43580
+ queryParamKeys: []
42796
43581
  });
42797
43582
  });
42798
- 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", `
43583
+ 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", `
42799
43584
  Examples:
42800
- hyperline exports get --export-id <exportId>`).action(async (opts) => {
43585
+ hyperline features delete --code <code>
43586
+ hyperline features delete --code <code> --output json`).action(async (opts) => {
42801
43587
  const ctx = resource.parent?.opts()._ctx;
42802
43588
  if (!ctx) {
42803
43589
  process.stderr.write("Error: Not authenticated\n");
42804
43590
  process.exit(1);
42805
43591
  }
42806
43592
  const args = {};
42807
- if (opts.exportId !== void 0)
42808
- args.exportId = opts.exportId;
43593
+ if (opts.code !== void 0)
43594
+ args.code = opts.code;
43595
+ if (!opts.yes) {
43596
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
43597
+ if (!confirmed) {
43598
+ process.stdout.write("Aborted.\n");
43599
+ return;
43600
+ }
43601
+ }
42809
43602
  await ctx.execute({
42810
- method: "GET",
42811
- path: "/v1/exports/{exportId}",
43603
+ method: "DELETE",
43604
+ path: "/v1/features/{code}",
42812
43605
  args,
42813
43606
  queryParamKeys: []
42814
43607
  });
42815
43608
  });
42816
- 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", `
43609
+ resource.command("unarchive").description(`Unarchive a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
42817
43610
  Examples:
42818
- hyperline exports download --export-id <exportId>`).action(async (opts) => {
43611
+ hyperline features unarchive --code <code>
43612
+ hyperline features unarchive --code <code> --output json`).action(async (opts) => {
42819
43613
  const ctx = resource.parent?.opts()._ctx;
42820
43614
  if (!ctx) {
42821
43615
  process.stderr.write("Error: Not authenticated\n");
42822
43616
  process.exit(1);
42823
43617
  }
42824
43618
  const args = {};
42825
- if (opts.exportId !== void 0)
42826
- args.exportId = opts.exportId;
43619
+ if (opts.code !== void 0)
43620
+ args.code = opts.code;
42827
43621
  await ctx.execute({
42828
- method: "GET",
42829
- path: "/v2/exports/{exportId}/download",
43622
+ method: "PUT",
43623
+ path: "/v1/features/{code}/unarchive",
42830
43624
  args,
42831
43625
  queryParamKeys: []
42832
43626
  });
@@ -42854,7 +43648,7 @@ Examples:
42854
43648
  queryParamKeys: []
42855
43649
  });
42856
43650
  });
42857
- 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", `
43651
+ 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", `
42858
43652
  Examples:
42859
43653
  hyperline files list
42860
43654
  hyperline files list --take <take> --name <name>`).action(async (opts) => {
@@ -42868,10 +43662,6 @@ Examples:
42868
43662
  args.name = opts.name;
42869
43663
  if (opts["name.not"] !== void 0)
42870
43664
  args.name__not = opts["name.not"];
42871
- if (opts["name.isNull"] !== void 0)
42872
- args.name__isNull = opts["name.isNull"];
42873
- if (opts["name.isNotNull"] !== void 0)
42874
- args.name__isNotNull = opts["name.isNotNull"];
42875
43665
  if (opts["name.equals"] !== void 0)
42876
43666
  args.name__equals = opts["name.equals"];
42877
43667
  if (opts["name.contains"] !== void 0)
@@ -42884,10 +43674,6 @@ Examples:
42884
43674
  args.customer_id = opts.customerId;
42885
43675
  if (opts["customerId.not"] !== void 0)
42886
43676
  args.customer_id__not = opts["customerId.not"];
42887
- if (opts["customerId.isNull"] !== void 0)
42888
- args.customer_id__isNull = opts["customerId.isNull"];
42889
- if (opts["customerId.isNotNull"] !== void 0)
42890
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
42891
43677
  if (opts["customerId.equals"] !== void 0)
42892
43678
  args.customer_id__equals = opts["customerId.equals"];
42893
43679
  if (opts["customerId.contains"] !== void 0)
@@ -42896,6 +43682,10 @@ Examples:
42896
43682
  args.customer_id__startsWith = opts["customerId.startsWith"];
42897
43683
  if (opts["customerId.endWith"] !== void 0)
42898
43684
  args.customer_id__endWith = opts["customerId.endWith"];
43685
+ if (opts["customerId.isNull"] !== void 0)
43686
+ args.customer_id__isNull = opts["customerId.isNull"];
43687
+ if (opts["customerId.isNotNull"] !== void 0)
43688
+ args.customer_id__isNotNull = opts["customerId.isNotNull"];
42899
43689
  if (opts.take !== void 0)
42900
43690
  args.take = Number(opts.take);
42901
43691
  if (opts.skip !== void 0)
@@ -42909,27 +43699,25 @@ Examples:
42909
43699
  "skip",
42910
43700
  "name",
42911
43701
  "name__not",
42912
- "name__isNull",
42913
- "name__isNotNull",
42914
43702
  "name__equals",
42915
43703
  "name__contains",
42916
43704
  "name__startsWith",
42917
43705
  "name__endWith",
42918
43706
  "customer_id",
42919
43707
  "customer_id__not",
42920
- "customer_id__isNull",
42921
- "customer_id__isNotNull",
42922
43708
  "customer_id__equals",
42923
43709
  "customer_id__contains",
42924
43710
  "customer_id__startsWith",
42925
- "customer_id__endWith"
43711
+ "customer_id__endWith",
43712
+ "customer_id__isNull",
43713
+ "customer_id__isNotNull"
42926
43714
  ]
42927
43715
  });
42928
43716
  });
42929
- resource.command("create").description(`Upload a new file (max 10MB). Requires multipart form data with a file field and metadata (name and customer_id).`).requiredOption("--name <value>", `Name of the file to be uploaded.`).requiredOption("--customer-id <value>", `ID of the customer to link the file to.`).addHelpText("after", `
43717
+ resource.command("create").description(`Upload a new file (max 10MB). Requires multipart form data with a file field and metadata (name and customer_id).`).requiredOption("--name <value>", `Name of the file to be uploaded.`).requiredOption("--customer-id <value>", `ID of the customer to link the file to.`).requiredOption("--file <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
42930
43718
  Examples:
42931
- hyperline files create --name <name> --customer-id <customer_id>
42932
- hyperline files create --name <name> --customer-id <customer_id> --output json`).action(async (opts) => {
43719
+ hyperline files create --name <name> --customer-id <customer_id> --file <path>
43720
+ hyperline files create --name <name> --customer-id <customer_id> --file <path> --output json`).action(async (opts) => {
42933
43721
  const ctx = resource.parent?.opts()._ctx;
42934
43722
  if (!ctx) {
42935
43723
  process.stderr.write("Error: Not authenticated\n");
@@ -42940,11 +43728,15 @@ Examples:
42940
43728
  args.name = opts.name;
42941
43729
  if (opts.customerId !== void 0)
42942
43730
  args.customer_id = opts.customerId;
43731
+ const files = {};
43732
+ if (opts.file !== void 0)
43733
+ files.file = [opts.file].flat();
42943
43734
  await ctx.execute({
42944
43735
  method: "POST",
42945
43736
  path: "/v1/files",
42946
43737
  args,
42947
- queryParamKeys: []
43738
+ queryParamKeys: [],
43739
+ files
42948
43740
  });
42949
43741
  });
42950
43742
  resource.command("delete").description(`Permanently delete a file by ID.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
@@ -42978,7 +43770,7 @@ Examples:
42978
43770
  // build/commands/generated/invoices.js
42979
43771
  function registerInvoicesCommands(parent) {
42980
43772
  const resource = parent.command("invoices").description("Manage invoices");
42981
- 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", `
43773
+ 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.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", `
42982
43774
  Examples:
42983
43775
  hyperline invoices list
42984
43776
  hyperline invoices list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -43008,10 +43800,6 @@ Examples:
43008
43800
  args.customer_id = opts.customerId;
43009
43801
  if (opts["customerId.not"] !== void 0)
43010
43802
  args.customer_id__not = opts["customerId.not"];
43011
- if (opts["customerId.isNull"] !== void 0)
43012
- args.customer_id__isNull = opts["customerId.isNull"];
43013
- if (opts["customerId.isNotNull"] !== void 0)
43014
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
43015
43803
  if (opts["customerId.equals"] !== void 0)
43016
43804
  args.customer_id__equals = opts["customerId.equals"];
43017
43805
  if (opts["customerId.contains"] !== void 0)
@@ -43026,10 +43814,6 @@ Examples:
43026
43814
  args.subscription_id = opts.subscriptionId;
43027
43815
  if (opts["subscriptionId.not"] !== void 0)
43028
43816
  args.subscription_id__not = opts["subscriptionId.not"];
43029
- if (opts["subscriptionId.isNull"] !== void 0)
43030
- args.subscription_id__isNull = opts["subscriptionId.isNull"];
43031
- if (opts["subscriptionId.isNotNull"] !== void 0)
43032
- args.subscription_id__isNotNull = opts["subscriptionId.isNotNull"];
43033
43817
  if (opts["subscriptionId.equals"] !== void 0)
43034
43818
  args.subscription_id__equals = opts["subscriptionId.equals"];
43035
43819
  if (opts["subscriptionId.contains"] !== void 0)
@@ -43038,14 +43822,14 @@ Examples:
43038
43822
  args.subscription_id__startsWith = opts["subscriptionId.startsWith"];
43039
43823
  if (opts["subscriptionId.endWith"] !== void 0)
43040
43824
  args.subscription_id__endWith = opts["subscriptionId.endWith"];
43825
+ if (opts["subscriptionId.isNull"] !== void 0)
43826
+ args.subscription_id__isNull = opts["subscriptionId.isNull"];
43827
+ if (opts["subscriptionId.isNotNull"] !== void 0)
43828
+ args.subscription_id__isNotNull = opts["subscriptionId.isNotNull"];
43041
43829
  if (opts.invoicingEntityId !== void 0)
43042
43830
  args.invoicing_entity_id = opts.invoicingEntityId;
43043
43831
  if (opts["invoicingEntityId.not"] !== void 0)
43044
43832
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
43045
- if (opts["invoicingEntityId.isNull"] !== void 0)
43046
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
43047
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
43048
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
43049
43833
  if (opts["invoicingEntityId.equals"] !== void 0)
43050
43834
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
43051
43835
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -43058,10 +43842,6 @@ Examples:
43058
43842
  args.invoice_number = opts.invoiceNumber;
43059
43843
  if (opts["invoiceNumber.not"] !== void 0)
43060
43844
  args.invoice_number__not = opts["invoiceNumber.not"];
43061
- if (opts["invoiceNumber.isNull"] !== void 0)
43062
- args.invoice_number__isNull = opts["invoiceNumber.isNull"];
43063
- if (opts["invoiceNumber.isNotNull"] !== void 0)
43064
- args.invoice_number__isNotNull = opts["invoiceNumber.isNotNull"];
43065
43845
  if (opts["invoiceNumber.equals"] !== void 0)
43066
43846
  args.invoice_number__equals = opts["invoiceNumber.equals"];
43067
43847
  if (opts["invoiceNumber.contains"] !== void 0)
@@ -43074,10 +43854,6 @@ Examples:
43074
43854
  args.original_invoice_id = opts.originalInvoiceId;
43075
43855
  if (opts["originalInvoiceId.not"] !== void 0)
43076
43856
  args.original_invoice_id__not = opts["originalInvoiceId.not"];
43077
- if (opts["originalInvoiceId.isNull"] !== void 0)
43078
- args.original_invoice_id__isNull = opts["originalInvoiceId.isNull"];
43079
- if (opts["originalInvoiceId.isNotNull"] !== void 0)
43080
- args.original_invoice_id__isNotNull = opts["originalInvoiceId.isNotNull"];
43081
43857
  if (opts["originalInvoiceId.equals"] !== void 0)
43082
43858
  args.original_invoice_id__equals = opts["originalInvoiceId.equals"];
43083
43859
  if (opts["originalInvoiceId.contains"] !== void 0)
@@ -43086,14 +43862,14 @@ Examples:
43086
43862
  args.original_invoice_id__startsWith = opts["originalInvoiceId.startsWith"];
43087
43863
  if (opts["originalInvoiceId.endWith"] !== void 0)
43088
43864
  args.original_invoice_id__endWith = opts["originalInvoiceId.endWith"];
43865
+ if (opts["originalInvoiceId.isNull"] !== void 0)
43866
+ args.original_invoice_id__isNull = opts["originalInvoiceId.isNull"];
43867
+ if (opts["originalInvoiceId.isNotNull"] !== void 0)
43868
+ args.original_invoice_id__isNotNull = opts["originalInvoiceId.isNotNull"];
43089
43869
  if (opts.originalInvoiceNumber !== void 0)
43090
43870
  args.original_invoice_number = opts.originalInvoiceNumber;
43091
43871
  if (opts["originalInvoiceNumber.not"] !== void 0)
43092
43872
  args.original_invoice_number__not = opts["originalInvoiceNumber.not"];
43093
- if (opts["originalInvoiceNumber.isNull"] !== void 0)
43094
- args.original_invoice_number__isNull = opts["originalInvoiceNumber.isNull"];
43095
- if (opts["originalInvoiceNumber.isNotNull"] !== void 0)
43096
- args.original_invoice_number__isNotNull = opts["originalInvoiceNumber.isNotNull"];
43097
43873
  if (opts["originalInvoiceNumber.equals"] !== void 0)
43098
43874
  args.original_invoice_number__equals = opts["originalInvoiceNumber.equals"];
43099
43875
  if (opts["originalInvoiceNumber.contains"] !== void 0)
@@ -43102,16 +43878,16 @@ Examples:
43102
43878
  args.original_invoice_number__startsWith = opts["originalInvoiceNumber.startsWith"];
43103
43879
  if (opts["originalInvoiceNumber.endWith"] !== void 0)
43104
43880
  args.original_invoice_number__endWith = opts["originalInvoiceNumber.endWith"];
43881
+ if (opts["originalInvoiceNumber.isNull"] !== void 0)
43882
+ args.original_invoice_number__isNull = opts["originalInvoiceNumber.isNull"];
43883
+ if (opts["originalInvoiceNumber.isNotNull"] !== void 0)
43884
+ args.original_invoice_number__isNotNull = opts["originalInvoiceNumber.isNotNull"];
43105
43885
  if (opts.lineItemId !== void 0)
43106
43886
  args.line_item_id = opts.lineItemId;
43107
43887
  if (opts.periodStart !== void 0)
43108
43888
  args.period_start = opts.periodStart;
43109
43889
  if (opts["periodStart.not"] !== void 0)
43110
43890
  args.period_start__not = opts["periodStart.not"];
43111
- if (opts["periodStart.isNull"] !== void 0)
43112
- args.period_start__isNull = opts["periodStart.isNull"];
43113
- if (opts["periodStart.isNotNull"] !== void 0)
43114
- args.period_start__isNotNull = opts["periodStart.isNotNull"];
43115
43891
  if (opts["periodStart.equals"] !== void 0)
43116
43892
  args.period_start__equals = opts["periodStart.equals"];
43117
43893
  if (opts["periodStart.lt"] !== void 0)
@@ -43122,14 +43898,14 @@ Examples:
43122
43898
  args.period_start__gt = opts["periodStart.gt"];
43123
43899
  if (opts["periodStart.gte"] !== void 0)
43124
43900
  args.period_start__gte = opts["periodStart.gte"];
43901
+ if (opts["periodStart.isNull"] !== void 0)
43902
+ args.period_start__isNull = opts["periodStart.isNull"];
43903
+ if (opts["periodStart.isNotNull"] !== void 0)
43904
+ args.period_start__isNotNull = opts["periodStart.isNotNull"];
43125
43905
  if (opts.periodEnd !== void 0)
43126
43906
  args.period_end = opts.periodEnd;
43127
43907
  if (opts["periodEnd.not"] !== void 0)
43128
43908
  args.period_end__not = opts["periodEnd.not"];
43129
- if (opts["periodEnd.isNull"] !== void 0)
43130
- args.period_end__isNull = opts["periodEnd.isNull"];
43131
- if (opts["periodEnd.isNotNull"] !== void 0)
43132
- args.period_end__isNotNull = opts["periodEnd.isNotNull"];
43133
43909
  if (opts["periodEnd.equals"] !== void 0)
43134
43910
  args.period_end__equals = opts["periodEnd.equals"];
43135
43911
  if (opts["periodEnd.lt"] !== void 0)
@@ -43140,14 +43916,14 @@ Examples:
43140
43916
  args.period_end__gt = opts["periodEnd.gt"];
43141
43917
  if (opts["periodEnd.gte"] !== void 0)
43142
43918
  args.period_end__gte = opts["periodEnd.gte"];
43919
+ if (opts["periodEnd.isNull"] !== void 0)
43920
+ args.period_end__isNull = opts["periodEnd.isNull"];
43921
+ if (opts["periodEnd.isNotNull"] !== void 0)
43922
+ args.period_end__isNotNull = opts["periodEnd.isNotNull"];
43143
43923
  if (opts.issuedAt !== void 0)
43144
43924
  args.issued_at = opts.issuedAt;
43145
43925
  if (opts["issuedAt.not"] !== void 0)
43146
43926
  args.issued_at__not = opts["issuedAt.not"];
43147
- if (opts["issuedAt.isNull"] !== void 0)
43148
- args.issued_at__isNull = opts["issuedAt.isNull"];
43149
- if (opts["issuedAt.isNotNull"] !== void 0)
43150
- args.issued_at__isNotNull = opts["issuedAt.isNotNull"];
43151
43927
  if (opts["issuedAt.equals"] !== void 0)
43152
43928
  args.issued_at__equals = opts["issuedAt.equals"];
43153
43929
  if (opts["issuedAt.lt"] !== void 0)
@@ -43162,10 +43938,6 @@ Examples:
43162
43938
  args.due_at = opts.dueAt;
43163
43939
  if (opts["dueAt.not"] !== void 0)
43164
43940
  args.due_at__not = opts["dueAt.not"];
43165
- if (opts["dueAt.isNull"] !== void 0)
43166
- args.due_at__isNull = opts["dueAt.isNull"];
43167
- if (opts["dueAt.isNotNull"] !== void 0)
43168
- args.due_at__isNotNull = opts["dueAt.isNotNull"];
43169
43941
  if (opts["dueAt.equals"] !== void 0)
43170
43942
  args.due_at__equals = opts["dueAt.equals"];
43171
43943
  if (opts["dueAt.lt"] !== void 0)
@@ -43180,10 +43952,6 @@ Examples:
43180
43952
  args.updated_at = opts.updatedAt;
43181
43953
  if (opts["updatedAt.not"] !== void 0)
43182
43954
  args.updated_at__not = opts["updatedAt.not"];
43183
- if (opts["updatedAt.isNull"] !== void 0)
43184
- args.updated_at__isNull = opts["updatedAt.isNull"];
43185
- if (opts["updatedAt.isNotNull"] !== void 0)
43186
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
43187
43955
  if (opts["updatedAt.equals"] !== void 0)
43188
43956
  args.updated_at__equals = opts["updatedAt.equals"];
43189
43957
  if (opts["updatedAt.lt"] !== void 0)
@@ -43212,8 +43980,6 @@ Examples:
43212
43980
  "status__in",
43213
43981
  "customer_id",
43214
43982
  "customer_id__not",
43215
- "customer_id__isNull",
43216
- "customer_id__isNotNull",
43217
43983
  "customer_id__equals",
43218
43984
  "customer_id__contains",
43219
43985
  "customer_id__startsWith",
@@ -43221,67 +43987,61 @@ Examples:
43221
43987
  "customer_external_id",
43222
43988
  "subscription_id",
43223
43989
  "subscription_id__not",
43224
- "subscription_id__isNull",
43225
- "subscription_id__isNotNull",
43226
43990
  "subscription_id__equals",
43227
43991
  "subscription_id__contains",
43228
43992
  "subscription_id__startsWith",
43229
43993
  "subscription_id__endWith",
43994
+ "subscription_id__isNull",
43995
+ "subscription_id__isNotNull",
43230
43996
  "invoicing_entity_id",
43231
43997
  "invoicing_entity_id__not",
43232
- "invoicing_entity_id__isNull",
43233
- "invoicing_entity_id__isNotNull",
43234
43998
  "invoicing_entity_id__equals",
43235
43999
  "invoicing_entity_id__contains",
43236
44000
  "invoicing_entity_id__startsWith",
43237
44001
  "invoicing_entity_id__endWith",
43238
44002
  "invoice_number",
43239
44003
  "invoice_number__not",
43240
- "invoice_number__isNull",
43241
- "invoice_number__isNotNull",
43242
44004
  "invoice_number__equals",
43243
44005
  "invoice_number__contains",
43244
44006
  "invoice_number__startsWith",
43245
44007
  "invoice_number__endWith",
43246
44008
  "original_invoice_id",
43247
44009
  "original_invoice_id__not",
43248
- "original_invoice_id__isNull",
43249
- "original_invoice_id__isNotNull",
43250
44010
  "original_invoice_id__equals",
43251
44011
  "original_invoice_id__contains",
43252
44012
  "original_invoice_id__startsWith",
43253
44013
  "original_invoice_id__endWith",
44014
+ "original_invoice_id__isNull",
44015
+ "original_invoice_id__isNotNull",
43254
44016
  "original_invoice_number",
43255
44017
  "original_invoice_number__not",
43256
- "original_invoice_number__isNull",
43257
- "original_invoice_number__isNotNull",
43258
44018
  "original_invoice_number__equals",
43259
44019
  "original_invoice_number__contains",
43260
44020
  "original_invoice_number__startsWith",
43261
44021
  "original_invoice_number__endWith",
44022
+ "original_invoice_number__isNull",
44023
+ "original_invoice_number__isNotNull",
43262
44024
  "line_item_id",
43263
44025
  "period_start",
43264
44026
  "period_start__not",
43265
- "period_start__isNull",
43266
- "period_start__isNotNull",
43267
44027
  "period_start__equals",
43268
44028
  "period_start__lt",
43269
44029
  "period_start__lte",
43270
44030
  "period_start__gt",
43271
44031
  "period_start__gte",
44032
+ "period_start__isNull",
44033
+ "period_start__isNotNull",
43272
44034
  "period_end",
43273
44035
  "period_end__not",
43274
- "period_end__isNull",
43275
- "period_end__isNotNull",
43276
44036
  "period_end__equals",
43277
44037
  "period_end__lt",
43278
44038
  "period_end__lte",
43279
44039
  "period_end__gt",
43280
44040
  "period_end__gte",
44041
+ "period_end__isNull",
44042
+ "period_end__isNotNull",
43281
44043
  "issued_at",
43282
44044
  "issued_at__not",
43283
- "issued_at__isNull",
43284
- "issued_at__isNotNull",
43285
44045
  "issued_at__equals",
43286
44046
  "issued_at__lt",
43287
44047
  "issued_at__lte",
@@ -43289,8 +44049,6 @@ Examples:
43289
44049
  "issued_at__gte",
43290
44050
  "due_at",
43291
44051
  "due_at__not",
43292
- "due_at__isNull",
43293
- "due_at__isNotNull",
43294
44052
  "due_at__equals",
43295
44053
  "due_at__lt",
43296
44054
  "due_at__lte",
@@ -43298,8 +44056,6 @@ Examples:
43298
44056
  "due_at__gte",
43299
44057
  "updated_at",
43300
44058
  "updated_at__not",
43301
- "updated_at__isNull",
43302
- "updated_at__isNotNull",
43303
44059
  "updated_at__equals",
43304
44060
  "updated_at__lt",
43305
44061
  "updated_at__lte",
@@ -43533,6 +44289,36 @@ Examples:
43533
44289
  queryParamKeys: []
43534
44290
  });
43535
44291
  });
44292
+ 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\`.
44293
+
44294
+ - \`invoice_ready\`: The to-pay invoice email (for \`to_pay\`, \`partially_paid\`, \`late\` invoices).
44295
+ - \`invoice_settled\`: The paid-invoice email (for \`paid\` invoices).
44296
+ - \`invoice_errored\`: The failed-payment email (for \`error\` invoices with a payment method).
44297
+ - \`credit_note_ready\`: The issued-credit-note email (for \`to_pay\`, \`partially_paid\` refunds).
44298
+ - \`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", `
44299
+ Examples:
44300
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids>
44301
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids> --batch-id <batch_id>
44302
+ hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids> --output json`).action(async (opts) => {
44303
+ const ctx = resource.parent?.opts()._ctx;
44304
+ if (!ctx) {
44305
+ process.stderr.write("Error: Not authenticated\n");
44306
+ process.exit(1);
44307
+ }
44308
+ const args = {};
44309
+ if (opts.batchId !== void 0)
44310
+ args.batch_id = opts.batchId;
44311
+ if (opts.emailType !== void 0)
44312
+ args.email_type = opts.emailType;
44313
+ if (opts.ids !== void 0)
44314
+ args.ids = JSON.parse(opts.ids);
44315
+ await ctx.execute({
44316
+ method: "POST",
44317
+ path: "/v1/invoices/send-email",
44318
+ args,
44319
+ queryParamKeys: []
44320
+ });
44321
+ });
43536
44322
  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", `
43537
44323
  Examples:
43538
44324
  hyperline invoices mark-invoice-as-uncollectible --id <id>
@@ -43665,10 +44451,10 @@ Examples:
43665
44451
  queryParamKeys: []
43666
44452
  });
43667
44453
  });
43668
- resource.command("upload-pdf-to").description(`Upload a custom PDF file (max 5MB) to attach to an existing invoice, replacing the auto-generated PDF.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
44454
+ resource.command("upload-pdf-to").description(`Upload a custom PDF file (max 5MB) to attach to an existing invoice, replacing the auto-generated PDF.`).requiredOption("--id <value>", `id parameter`).requiredOption("--file <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
43669
44455
  Examples:
43670
- hyperline invoices upload-pdf-to --id <id>
43671
- hyperline invoices upload-pdf-to --id <id> --output json`).action(async (opts) => {
44456
+ hyperline invoices upload-pdf-to --id <id> --file <path>
44457
+ hyperline invoices upload-pdf-to --id <id> --file <path> --output json`).action(async (opts) => {
43672
44458
  const ctx = resource.parent?.opts()._ctx;
43673
44459
  if (!ctx) {
43674
44460
  process.stderr.write("Error: Not authenticated\n");
@@ -43677,11 +44463,15 @@ Examples:
43677
44463
  const args = {};
43678
44464
  if (opts.id !== void 0)
43679
44465
  args.id = opts.id;
44466
+ const files = {};
44467
+ if (opts.file !== void 0)
44468
+ files.file = [opts.file].flat();
43680
44469
  await ctx.execute({
43681
44470
  method: "POST",
43682
44471
  path: "/v1/invoices/{id}/upload",
43683
44472
  args,
43684
- queryParamKeys: []
44473
+ queryParamKeys: [],
44474
+ files
43685
44475
  });
43686
44476
  });
43687
44477
  resource.command("download").description(`Download the PDF of an invoice as a downloadable file. The HTTP client must follow redirects. Supports lang/locale params for localization.`).requiredOption("--id <value>", `id parameter`).option("--lang <value>", `lang`).option("--locale <value>", `Locale as a supported language code and an uppercase ISO 3166-1 alpha-2 country code, separated by a hyphen.`).addHelpText("after", `
@@ -43820,7 +44610,13 @@ Examples:
43820
44610
  queryParamKeys: []
43821
44611
  });
43822
44612
  });
43823
- 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", `
44613
+ resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
44614
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
44615
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
44616
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
44617
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
44618
+
44619
+ A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
43824
44620
  Examples:
43825
44621
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
43826
44622
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
@@ -43912,7 +44708,13 @@ Examples:
43912
44708
  queryParamKeys: []
43913
44709
  });
43914
44710
  });
43915
- 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", `
44711
+ resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
44712
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
44713
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
44714
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
44715
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
44716
+
44717
+ A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
43916
44718
  Examples:
43917
44719
  hyperline invoicing-entities update-invoicing-entity --id <id>
43918
44720
  hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
@@ -44027,7 +44829,7 @@ Examples:
44027
44829
  // build/commands/generated/organisations.js
44028
44830
  function registerOrganisationsCommands(parent) {
44029
44831
  const resource = parent.command("organisations").description("Manage organisations");
44030
- 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", `
44832
+ 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", `
44031
44833
  Examples:
44032
44834
  hyperline organisations list
44033
44835
  hyperline organisations list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -44049,10 +44851,6 @@ Examples:
44049
44851
  args.created_at = opts.createdAt;
44050
44852
  if (opts["createdAt.not"] !== void 0)
44051
44853
  args.created_at__not = opts["createdAt.not"];
44052
- if (opts["createdAt.isNull"] !== void 0)
44053
- args.created_at__isNull = opts["createdAt.isNull"];
44054
- if (opts["createdAt.isNotNull"] !== void 0)
44055
- args.created_at__isNotNull = opts["createdAt.isNotNull"];
44056
44854
  if (opts["createdAt.equals"] !== void 0)
44057
44855
  args.created_at__equals = opts["createdAt.equals"];
44058
44856
  if (opts["createdAt.lt"] !== void 0)
@@ -44067,10 +44865,6 @@ Examples:
44067
44865
  args.updated_at = opts.updatedAt;
44068
44866
  if (opts["updatedAt.not"] !== void 0)
44069
44867
  args.updated_at__not = opts["updatedAt.not"];
44070
- if (opts["updatedAt.isNull"] !== void 0)
44071
- args.updated_at__isNull = opts["updatedAt.isNull"];
44072
- if (opts["updatedAt.isNotNull"] !== void 0)
44073
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
44074
44868
  if (opts["updatedAt.equals"] !== void 0)
44075
44869
  args.updated_at__equals = opts["updatedAt.equals"];
44076
44870
  if (opts["updatedAt.lt"] !== void 0)
@@ -44095,8 +44889,6 @@ Examples:
44095
44889
  "sort",
44096
44890
  "created_at",
44097
44891
  "created_at__not",
44098
- "created_at__isNull",
44099
- "created_at__isNotNull",
44100
44892
  "created_at__equals",
44101
44893
  "created_at__lt",
44102
44894
  "created_at__lte",
@@ -44104,8 +44896,6 @@ Examples:
44104
44896
  "created_at__gte",
44105
44897
  "updated_at",
44106
44898
  "updated_at__not",
44107
- "updated_at__isNull",
44108
- "updated_at__isNotNull",
44109
44899
  "updated_at__equals",
44110
44900
  "updated_at__lt",
44111
44901
  "updated_at__lte",
@@ -44219,7 +45009,7 @@ Examples:
44219
45009
  // build/commands/generated/price-configurations.js
44220
45010
  function registerPrice_ConfigurationsCommands(parent) {
44221
45011
  const resource = parent.command("price-configurations").description("Manage price configurations");
44222
- 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", `
45012
+ 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", `
44223
45013
  Examples:
44224
45014
  hyperline price-configurations list
44225
45015
  hyperline price-configurations list --take <take> --product-id <product_id>`).action(async (opts) => {
@@ -44233,10 +45023,6 @@ Examples:
44233
45023
  args.product_id = opts.productId;
44234
45024
  if (opts["productId.not"] !== void 0)
44235
45025
  args.product_id__not = opts["productId.not"];
44236
- if (opts["productId.isNull"] !== void 0)
44237
- args.product_id__isNull = opts["productId.isNull"];
44238
- if (opts["productId.isNotNull"] !== void 0)
44239
- args.product_id__isNotNull = opts["productId.isNotNull"];
44240
45026
  if (opts["productId.equals"] !== void 0)
44241
45027
  args.product_id__equals = opts["productId.equals"];
44242
45028
  if (opts["productId.contains"] !== void 0)
@@ -44249,10 +45035,6 @@ Examples:
44249
45035
  args.price_book_id = opts.priceBookId;
44250
45036
  if (opts["priceBookId.not"] !== void 0)
44251
45037
  args.price_book_id__not = opts["priceBookId.not"];
44252
- if (opts["priceBookId.isNull"] !== void 0)
44253
- args.price_book_id__isNull = opts["priceBookId.isNull"];
44254
- if (opts["priceBookId.isNotNull"] !== void 0)
44255
- args.price_book_id__isNotNull = opts["priceBookId.isNotNull"];
44256
45038
  if (opts["priceBookId.equals"] !== void 0)
44257
45039
  args.price_book_id__equals = opts["priceBookId.equals"];
44258
45040
  if (opts["priceBookId.contains"] !== void 0)
@@ -44261,6 +45043,10 @@ Examples:
44261
45043
  args.price_book_id__startsWith = opts["priceBookId.startsWith"];
44262
45044
  if (opts["priceBookId.endWith"] !== void 0)
44263
45045
  args.price_book_id__endWith = opts["priceBookId.endWith"];
45046
+ if (opts["priceBookId.isNull"] !== void 0)
45047
+ args.price_book_id__isNull = opts["priceBookId.isNull"];
45048
+ if (opts["priceBookId.isNotNull"] !== void 0)
45049
+ args.price_book_id__isNotNull = opts["priceBookId.isNotNull"];
44264
45050
  if (opts.take !== void 0)
44265
45051
  args.take = Number(opts.take);
44266
45052
  if (opts.skip !== void 0)
@@ -44274,20 +45060,18 @@ Examples:
44274
45060
  "skip",
44275
45061
  "product_id",
44276
45062
  "product_id__not",
44277
- "product_id__isNull",
44278
- "product_id__isNotNull",
44279
45063
  "product_id__equals",
44280
45064
  "product_id__contains",
44281
45065
  "product_id__startsWith",
44282
45066
  "product_id__endWith",
44283
45067
  "price_book_id",
44284
45068
  "price_book_id__not",
44285
- "price_book_id__isNull",
44286
- "price_book_id__isNotNull",
44287
45069
  "price_book_id__equals",
44288
45070
  "price_book_id__contains",
44289
45071
  "price_book_id__startsWith",
44290
- "price_book_id__endWith"
45072
+ "price_book_id__endWith",
45073
+ "price_book_id__isNull",
45074
+ "price_book_id__isNotNull"
44291
45075
  ]
44292
45076
  });
44293
45077
  });
@@ -44413,7 +45197,7 @@ Examples:
44413
45197
  // build/commands/generated/products.js
44414
45198
  function registerProductsCommands(parent) {
44415
45199
  const resource = parent.command("products").description("Manage products");
44416
- 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", `
45200
+ 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.`).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", `
44417
45201
  Examples:
44418
45202
  hyperline products list
44419
45203
  hyperline products list --take <take> --id <id>`).action(async (opts) => {
@@ -44427,10 +45211,6 @@ Examples:
44427
45211
  args.id = opts.id;
44428
45212
  if (opts["id.not"] !== void 0)
44429
45213
  args.id__not = opts["id.not"];
44430
- if (opts["id.isNull"] !== void 0)
44431
- args.id__isNull = opts["id.isNull"];
44432
- if (opts["id.isNotNull"] !== void 0)
44433
- args.id__isNotNull = opts["id.isNotNull"];
44434
45214
  if (opts["id.equals"] !== void 0)
44435
45215
  args.id__equals = opts["id.equals"];
44436
45216
  if (opts["id.contains"] !== void 0)
@@ -44447,10 +45227,6 @@ Examples:
44447
45227
  args.name = opts.name;
44448
45228
  if (opts["name.not"] !== void 0)
44449
45229
  args.name__not = opts["name.not"];
44450
- if (opts["name.isNull"] !== void 0)
44451
- args.name__isNull = opts["name.isNull"];
44452
- if (opts["name.isNotNull"] !== void 0)
44453
- args.name__isNotNull = opts["name.isNotNull"];
44454
45230
  if (opts["name.equals"] !== void 0)
44455
45231
  args.name__equals = opts["name.equals"];
44456
45232
  if (opts["name.contains"] !== void 0)
@@ -44463,10 +45239,6 @@ Examples:
44463
45239
  args.description = opts.description;
44464
45240
  if (opts["description.not"] !== void 0)
44465
45241
  args.description__not = opts["description.not"];
44466
- if (opts["description.isNull"] !== void 0)
44467
- args.description__isNull = opts["description.isNull"];
44468
- if (opts["description.isNotNull"] !== void 0)
44469
- args.description__isNotNull = opts["description.isNotNull"];
44470
45242
  if (opts["description.equals"] !== void 0)
44471
45243
  args.description__equals = opts["description.equals"];
44472
45244
  if (opts["description.contains"] !== void 0)
@@ -44475,14 +45247,14 @@ Examples:
44475
45247
  args.description__startsWith = opts["description.startsWith"];
44476
45248
  if (opts["description.endWith"] !== void 0)
44477
45249
  args.description__endWith = opts["description.endWith"];
45250
+ if (opts["description.isNull"] !== void 0)
45251
+ args.description__isNull = opts["description.isNull"];
45252
+ if (opts["description.isNotNull"] !== void 0)
45253
+ args.description__isNotNull = opts["description.isNotNull"];
44478
45254
  if (opts.type !== void 0)
44479
45255
  args.type = opts.type;
44480
45256
  if (opts["type.not"] !== void 0)
44481
45257
  args.type__not = opts["type.not"];
44482
- if (opts["type.isNull"] !== void 0)
44483
- args.type__isNull = opts["type.isNull"];
44484
- if (opts["type.isNotNull"] !== void 0)
44485
- args.type__isNotNull = opts["type.isNotNull"];
44486
45258
  if (opts["type.equals"] !== void 0)
44487
45259
  args.type__equals = opts["type.equals"];
44488
45260
  if (opts["type.contains"] !== void 0)
@@ -44493,6 +45265,8 @@ Examples:
44493
45265
  args.type__endWith = opts["type.endWith"];
44494
45266
  if (opts.priceBookId !== void 0)
44495
45267
  args.price_book_id = opts.priceBookId;
45268
+ if (opts.customProperties !== void 0)
45269
+ args.custom_properties = opts.customProperties;
44496
45270
  if (opts.take !== void 0)
44497
45271
  args.take = Number(opts.take);
44498
45272
  if (opts.skip !== void 0)
@@ -44506,8 +45280,6 @@ Examples:
44506
45280
  "skip",
44507
45281
  "id",
44508
45282
  "id__not",
44509
- "id__isNull",
44510
- "id__isNotNull",
44511
45283
  "id__equals",
44512
45284
  "id__contains",
44513
45285
  "id__startsWith",
@@ -44516,33 +45288,30 @@ Examples:
44516
45288
  "status__in",
44517
45289
  "name",
44518
45290
  "name__not",
44519
- "name__isNull",
44520
- "name__isNotNull",
44521
45291
  "name__equals",
44522
45292
  "name__contains",
44523
45293
  "name__startsWith",
44524
45294
  "name__endWith",
44525
45295
  "description",
44526
45296
  "description__not",
44527
- "description__isNull",
44528
- "description__isNotNull",
44529
45297
  "description__equals",
44530
45298
  "description__contains",
44531
45299
  "description__startsWith",
44532
45300
  "description__endWith",
45301
+ "description__isNull",
45302
+ "description__isNotNull",
44533
45303
  "type",
44534
45304
  "type__not",
44535
- "type__isNull",
44536
- "type__isNotNull",
44537
45305
  "type__equals",
44538
45306
  "type__contains",
44539
45307
  "type__startsWith",
44540
45308
  "type__endWith",
44541
- "price_book_id"
45309
+ "price_book_id",
45310
+ "custom_properties"
44542
45311
  ]
44543
45312
  });
44544
45313
  });
44545
- 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>", `
45314
+ 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>", `
44546
45315
  How the periodic credit allowance is granted for partial billing periods.
44547
45316
 
44548
45317
  - \`prorated\` (default): the granted credits are prorated to the elapsed period.
@@ -44630,7 +45399,7 @@ Examples:
44630
45399
  queryParamKeys: ["price_book_id"]
44631
45400
  });
44632
45401
  });
44633
- 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", `
45402
+ 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", `
44634
45403
  Examples:
44635
45404
  hyperline products update --id <id> --name <name>
44636
45405
  hyperline products update --id <id> --name <name> --description <description> --public-description <public_description>
@@ -44663,15 +45432,83 @@ Examples:
44663
45432
  args.accounting = JSON.parse(opts.accounting);
44664
45433
  await ctx.execute({
44665
45434
  method: "PUT",
44666
- path: "/v1/products/{id}",
45435
+ path: "/v1/products/{id}",
45436
+ args,
45437
+ queryParamKeys: []
45438
+ });
45439
+ });
45440
+ resource.command("archive").description(`Archive a product by ID. Archived products cannot be added to new subscriptions but remain on existing ones.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45441
+ Examples:
45442
+ hyperline products archive --id <id>
45443
+ hyperline products archive --id <id> --output json`).action(async (opts) => {
45444
+ const ctx = resource.parent?.opts()._ctx;
45445
+ if (!ctx) {
45446
+ process.stderr.write("Error: Not authenticated\n");
45447
+ process.exit(1);
45448
+ }
45449
+ const args = {};
45450
+ if (opts.id !== void 0)
45451
+ args.id = opts.id;
45452
+ await ctx.execute({
45453
+ method: "PUT",
45454
+ path: "/v1/products/{id}/archive",
45455
+ args,
45456
+ queryParamKeys: []
45457
+ });
45458
+ });
45459
+ resource.command("delete").description(`Permanently delete an archived product by ID. Products attached to subscriptions, plans, or templates cannot be deleted.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
45460
+ Examples:
45461
+ hyperline products delete --id <id>
45462
+ hyperline products delete --id <id> --output json`).action(async (opts) => {
45463
+ const ctx = resource.parent?.opts()._ctx;
45464
+ if (!ctx) {
45465
+ process.stderr.write("Error: Not authenticated\n");
45466
+ process.exit(1);
45467
+ }
45468
+ const args = {};
45469
+ if (opts.id !== void 0)
45470
+ args.id = opts.id;
45471
+ if (!opts.yes) {
45472
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
45473
+ if (!confirmed) {
45474
+ process.stdout.write("Aborted.\n");
45475
+ return;
45476
+ }
45477
+ }
45478
+ await ctx.execute({
45479
+ method: "DELETE",
45480
+ path: "/v1/products/{id}",
45481
+ args,
45482
+ queryParamKeys: []
45483
+ });
45484
+ });
45485
+ resource.command("unarchive").description(`Restore a previously archived product, making it available for new subscriptions again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45486
+ Examples:
45487
+ hyperline products unarchive --id <id>
45488
+ hyperline products unarchive --id <id> --output json`).action(async (opts) => {
45489
+ const ctx = resource.parent?.opts()._ctx;
45490
+ if (!ctx) {
45491
+ process.stderr.write("Error: Not authenticated\n");
45492
+ process.exit(1);
45493
+ }
45494
+ const args = {};
45495
+ if (opts.id !== void 0)
45496
+ args.id = opts.id;
45497
+ await ctx.execute({
45498
+ method: "PUT",
45499
+ path: "/v1/products/{id}/unarchive",
44667
45500
  args,
44668
45501
  queryParamKeys: []
44669
45502
  });
44670
45503
  });
44671
- resource.command("archive").description(`Archive a product by ID. Archived products cannot be added to new subscriptions but remain on existing ones.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45504
+ }
45505
+
45506
+ // build/commands/generated/products-features.js
45507
+ function registerProducts_FeaturesCommands(parent) {
45508
+ const resource = parent.command("products-features").description("Manage products > features");
45509
+ resource.command("list-product-features").description(`List feature values assigned to a product.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
44672
45510
  Examples:
44673
- hyperline products archive --id <id>
44674
- hyperline products archive --id <id> --output json`).action(async (opts) => {
45511
+ hyperline products-features list-product-features --id <id>`).action(async (opts) => {
44675
45512
  const ctx = resource.parent?.opts()._ctx;
44676
45513
  if (!ctx) {
44677
45514
  process.stderr.write("Error: Not authenticated\n");
@@ -44681,16 +45518,16 @@ Examples:
44681
45518
  if (opts.id !== void 0)
44682
45519
  args.id = opts.id;
44683
45520
  await ctx.execute({
44684
- method: "PUT",
44685
- path: "/v1/products/{id}/archive",
45521
+ method: "GET",
45522
+ path: "/v1/products/{id}/features",
44686
45523
  args,
44687
45524
  queryParamKeys: []
44688
45525
  });
44689
45526
  });
44690
- resource.command("delete").description(`Permanently delete an archived product by ID. Products attached to subscriptions, plans, or templates cannot be deleted.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
45527
+ 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", `
44691
45528
  Examples:
44692
- hyperline products delete --id <id>
44693
- hyperline products delete --id <id> --output json`).action(async (opts) => {
45529
+ hyperline products-features set-product-feature --id <id> --code <code> --value
45530
+ hyperline products-features set-product-feature --id <id> --code <code> --value --output json`).action(async (opts) => {
44694
45531
  const ctx = resource.parent?.opts()._ctx;
44695
45532
  if (!ctx) {
44696
45533
  process.stderr.write("Error: Not authenticated\n");
@@ -44699,24 +45536,21 @@ Examples:
44699
45536
  const args = {};
44700
45537
  if (opts.id !== void 0)
44701
45538
  args.id = opts.id;
44702
- if (!opts.yes) {
44703
- const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
44704
- if (!confirmed) {
44705
- process.stdout.write("Aborted.\n");
44706
- return;
44707
- }
44708
- }
45539
+ if (opts.code !== void 0)
45540
+ args.code = opts.code;
45541
+ if (opts.value !== void 0)
45542
+ args.value = true;
44709
45543
  await ctx.execute({
44710
- method: "DELETE",
44711
- path: "/v1/products/{id}",
45544
+ method: "PUT",
45545
+ path: "/v1/products/{id}/features/{code}",
44712
45546
  args,
44713
45547
  queryParamKeys: []
44714
45548
  });
44715
45549
  });
44716
- resource.command("unarchive").description(`Restore a previously archived product, making it available for new subscriptions again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45550
+ 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", `
44717
45551
  Examples:
44718
- hyperline products unarchive --id <id>
44719
- hyperline products unarchive --id <id> --output json`).action(async (opts) => {
45552
+ hyperline products-features delete-product-feature --id <id> --code <code>
45553
+ hyperline products-features delete-product-feature --id <id> --code <code> --output json`).action(async (opts) => {
44720
45554
  const ctx = resource.parent?.opts()._ctx;
44721
45555
  if (!ctx) {
44722
45556
  process.stderr.write("Error: Not authenticated\n");
@@ -44725,9 +45559,18 @@ Examples:
44725
45559
  const args = {};
44726
45560
  if (opts.id !== void 0)
44727
45561
  args.id = opts.id;
45562
+ if (opts.code !== void 0)
45563
+ args.code = opts.code;
45564
+ if (!opts.yes) {
45565
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
45566
+ if (!confirmed) {
45567
+ process.stdout.write("Aborted.\n");
45568
+ return;
45569
+ }
45570
+ }
44728
45571
  await ctx.execute({
44729
- method: "PUT",
44730
- path: "/v1/products/{id}/unarchive",
45572
+ method: "DELETE",
45573
+ path: "/v1/products/{id}/features/{code}",
44731
45574
  args,
44732
45575
  queryParamKeys: []
44733
45576
  });
@@ -44743,12 +45586,12 @@ Quote status.
44743
45586
  - \`draft\`: The quote is a draft.
44744
45587
  - \`approved\`: The quote is approved and ready to be sent to the customer.
44745
45588
  - \`pending_signature\`: The quote is awaiting the customer's signature.
44746
- `).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.
45589
+ `).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.
44747
45590
 
44748
45591
  - \`all\`: Display all pricing tiers.
44749
45592
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
44750
45593
  - \`none\`: Hide all pricing tiers.
44751
- `).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
45594
+ `).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).option("--attachments <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
44752
45595
  Examples:
44753
45596
  hyperline quotes create --customer-id <customer_id>
44754
45597
  hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
@@ -44813,14 +45656,18 @@ Examples:
44813
45656
  args.subscription = JSON.parse(opts.subscription);
44814
45657
  if (opts.invoice !== void 0)
44815
45658
  args.invoice = JSON.parse(opts.invoice);
45659
+ const files = {};
45660
+ if (opts.attachments !== void 0)
45661
+ files.attachments = [opts.attachments].flat();
44816
45662
  await ctx.execute({
44817
45663
  method: "POST",
44818
45664
  path: "/v1/quotes",
44819
45665
  args,
44820
- queryParamKeys: []
45666
+ queryParamKeys: [],
45667
+ files
44821
45668
  });
44822
45669
  });
44823
- 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("--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("--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", `
45670
+ resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--type <value>", `type`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
44824
45671
  Examples:
44825
45672
  hyperline quotes list
44826
45673
  hyperline quotes list --take <take> --id <id>`).action(async (opts) => {
@@ -44834,10 +45681,6 @@ Examples:
44834
45681
  args.id = opts.id;
44835
45682
  if (opts["id.not"] !== void 0)
44836
45683
  args.id__not = opts["id.not"];
44837
- if (opts["id.isNull"] !== void 0)
44838
- args.id__isNull = opts["id.isNull"];
44839
- if (opts["id.isNotNull"] !== void 0)
44840
- args.id__isNotNull = opts["id.isNotNull"];
44841
45684
  if (opts["id.equals"] !== void 0)
44842
45685
  args.id__equals = opts["id.equals"];
44843
45686
  if (opts["id.contains"] !== void 0)
@@ -44850,10 +45693,6 @@ Examples:
44850
45693
  args.number = opts.number;
44851
45694
  if (opts["number.not"] !== void 0)
44852
45695
  args.number__not = opts["number.not"];
44853
- if (opts["number.isNull"] !== void 0)
44854
- args.number__isNull = opts["number.isNull"];
44855
- if (opts["number.isNotNull"] !== void 0)
44856
- args.number__isNotNull = opts["number.isNotNull"];
44857
45696
  if (opts["number.equals"] !== void 0)
44858
45697
  args.number__equals = opts["number.equals"];
44859
45698
  if (opts["number.contains"] !== void 0)
@@ -44870,10 +45709,6 @@ Examples:
44870
45709
  args.customer_id = opts.customerId;
44871
45710
  if (opts["customerId.not"] !== void 0)
44872
45711
  args.customer_id__not = opts["customerId.not"];
44873
- if (opts["customerId.isNull"] !== void 0)
44874
- args.customer_id__isNull = opts["customerId.isNull"];
44875
- if (opts["customerId.isNotNull"] !== void 0)
44876
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
44877
45712
  if (opts["customerId.equals"] !== void 0)
44878
45713
  args.customer_id__equals = opts["customerId.equals"];
44879
45714
  if (opts["customerId.contains"] !== void 0)
@@ -44886,10 +45721,6 @@ Examples:
44886
45721
  args.template_id = opts.templateId;
44887
45722
  if (opts["templateId.not"] !== void 0)
44888
45723
  args.template_id__not = opts["templateId.not"];
44889
- if (opts["templateId.isNull"] !== void 0)
44890
- args.template_id__isNull = opts["templateId.isNull"];
44891
- if (opts["templateId.isNotNull"] !== void 0)
44892
- args.template_id__isNotNull = opts["templateId.isNotNull"];
44893
45724
  if (opts["templateId.equals"] !== void 0)
44894
45725
  args.template_id__equals = opts["templateId.equals"];
44895
45726
  if (opts["templateId.contains"] !== void 0)
@@ -44898,14 +45729,14 @@ Examples:
44898
45729
  args.template_id__startsWith = opts["templateId.startsWith"];
44899
45730
  if (opts["templateId.endWith"] !== void 0)
44900
45731
  args.template_id__endWith = opts["templateId.endWith"];
45732
+ if (opts["templateId.isNull"] !== void 0)
45733
+ args.template_id__isNull = opts["templateId.isNull"];
45734
+ if (opts["templateId.isNotNull"] !== void 0)
45735
+ args.template_id__isNotNull = opts["templateId.isNotNull"];
44901
45736
  if (opts.crmOpportunityId !== void 0)
44902
45737
  args.crm_opportunity_id = opts.crmOpportunityId;
44903
45738
  if (opts["crmOpportunityId.not"] !== void 0)
44904
45739
  args.crm_opportunity_id__not = opts["crmOpportunityId.not"];
44905
- if (opts["crmOpportunityId.isNull"] !== void 0)
44906
- args.crm_opportunity_id__isNull = opts["crmOpportunityId.isNull"];
44907
- if (opts["crmOpportunityId.isNotNull"] !== void 0)
44908
- args.crm_opportunity_id__isNotNull = opts["crmOpportunityId.isNotNull"];
44909
45740
  if (opts["crmOpportunityId.equals"] !== void 0)
44910
45741
  args.crm_opportunity_id__equals = opts["crmOpportunityId.equals"];
44911
45742
  if (opts["crmOpportunityId.contains"] !== void 0)
@@ -44914,30 +45745,16 @@ Examples:
44914
45745
  args.crm_opportunity_id__startsWith = opts["crmOpportunityId.startsWith"];
44915
45746
  if (opts["crmOpportunityId.endWith"] !== void 0)
44916
45747
  args.crm_opportunity_id__endWith = opts["crmOpportunityId.endWith"];
45748
+ if (opts["crmOpportunityId.isNull"] !== void 0)
45749
+ args.crm_opportunity_id__isNull = opts["crmOpportunityId.isNull"];
45750
+ if (opts["crmOpportunityId.isNotNull"] !== void 0)
45751
+ args.crm_opportunity_id__isNotNull = opts["crmOpportunityId.isNotNull"];
44917
45752
  if (opts.type !== void 0)
44918
45753
  args.type = opts.type;
44919
- if (opts["type.not"] !== void 0)
44920
- args.type__not = opts["type.not"];
44921
- if (opts["type.isNull"] !== void 0)
44922
- args.type__isNull = opts["type.isNull"];
44923
- if (opts["type.isNotNull"] !== void 0)
44924
- args.type__isNotNull = opts["type.isNotNull"];
44925
- if (opts["type.equals"] !== void 0)
44926
- args.type__equals = opts["type.equals"];
44927
- if (opts["type.contains"] !== void 0)
44928
- args.type__contains = opts["type.contains"];
44929
- if (opts["type.startsWith"] !== void 0)
44930
- args.type__startsWith = opts["type.startsWith"];
44931
- if (opts["type.endWith"] !== void 0)
44932
- args.type__endWith = opts["type.endWith"];
44933
45754
  if (opts.updatedAt !== void 0)
44934
45755
  args.updated_at = opts.updatedAt;
44935
45756
  if (opts["updatedAt.not"] !== void 0)
44936
45757
  args.updated_at__not = opts["updatedAt.not"];
44937
- if (opts["updatedAt.isNull"] !== void 0)
44938
- args.updated_at__isNull = opts["updatedAt.isNull"];
44939
- if (opts["updatedAt.isNotNull"] !== void 0)
44940
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
44941
45758
  if (opts["updatedAt.equals"] !== void 0)
44942
45759
  args.updated_at__equals = opts["updatedAt.equals"];
44943
45760
  if (opts["updatedAt.lt"] !== void 0)
@@ -44961,16 +45778,12 @@ Examples:
44961
45778
  "skip",
44962
45779
  "id",
44963
45780
  "id__not",
44964
- "id__isNull",
44965
- "id__isNotNull",
44966
45781
  "id__equals",
44967
45782
  "id__contains",
44968
45783
  "id__startsWith",
44969
45784
  "id__endWith",
44970
45785
  "number",
44971
45786
  "number__not",
44972
- "number__isNull",
44973
- "number__isNotNull",
44974
45787
  "number__equals",
44975
45788
  "number__contains",
44976
45789
  "number__startsWith",
@@ -44979,40 +45792,29 @@ Examples:
44979
45792
  "status__in",
44980
45793
  "customer_id",
44981
45794
  "customer_id__not",
44982
- "customer_id__isNull",
44983
- "customer_id__isNotNull",
44984
45795
  "customer_id__equals",
44985
45796
  "customer_id__contains",
44986
45797
  "customer_id__startsWith",
44987
45798
  "customer_id__endWith",
44988
45799
  "template_id",
44989
45800
  "template_id__not",
44990
- "template_id__isNull",
44991
- "template_id__isNotNull",
44992
45801
  "template_id__equals",
44993
45802
  "template_id__contains",
44994
45803
  "template_id__startsWith",
44995
45804
  "template_id__endWith",
45805
+ "template_id__isNull",
45806
+ "template_id__isNotNull",
44996
45807
  "crm_opportunity_id",
44997
45808
  "crm_opportunity_id__not",
44998
- "crm_opportunity_id__isNull",
44999
- "crm_opportunity_id__isNotNull",
45000
45809
  "crm_opportunity_id__equals",
45001
45810
  "crm_opportunity_id__contains",
45002
45811
  "crm_opportunity_id__startsWith",
45003
45812
  "crm_opportunity_id__endWith",
45813
+ "crm_opportunity_id__isNull",
45814
+ "crm_opportunity_id__isNotNull",
45004
45815
  "type",
45005
- "type__not",
45006
- "type__isNull",
45007
- "type__isNotNull",
45008
- "type__equals",
45009
- "type__contains",
45010
- "type__startsWith",
45011
- "type__endWith",
45012
45816
  "updated_at",
45013
45817
  "updated_at__not",
45014
- "updated_at__isNull",
45015
- "updated_at__isNotNull",
45016
45818
  "updated_at__equals",
45017
45819
  "updated_at__lt",
45018
45820
  "updated_at__lte",
@@ -45039,12 +45841,12 @@ Examples:
45039
45841
  queryParamKeys: []
45040
45842
  });
45041
45843
  });
45042
- 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.
45844
+ 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.
45043
45845
 
45044
45846
  - \`all\`: Display all pricing tiers.
45045
45847
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
45046
45848
  - \`none\`: Hide all pricing tiers.
45047
- `).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
45849
+ `).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).option("--attachments <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
45048
45850
  Examples:
45049
45851
  hyperline quotes update --id <id>
45050
45852
  hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
@@ -45105,11 +45907,15 @@ Examples:
45105
45907
  args.subscription = JSON.parse(opts.subscription);
45106
45908
  if (opts.invoice !== void 0)
45107
45909
  args.invoice = JSON.parse(opts.invoice);
45910
+ const files = {};
45911
+ if (opts.attachments !== void 0)
45912
+ files.attachments = [opts.attachments].flat();
45108
45913
  await ctx.execute({
45109
45914
  method: "PATCH",
45110
45915
  path: "/v1/quotes/{id}",
45111
45916
  args,
45112
- queryParamKeys: []
45917
+ queryParamKeys: [],
45918
+ files
45113
45919
  });
45114
45920
  });
45115
45921
  resource.command("duplicate").description(`Create a draft duplicate of an existing quote, including its linked invoice or subscription configuration.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
@@ -45262,9 +46068,10 @@ Examples:
45262
46068
  queryParamKeys: []
45263
46069
  });
45264
46070
  });
45265
- resource.command("sign").description(`Manually mark a quote as signed externally. Optionally upload a signed PDF. Bypasses the built-in Hyperline signature flow.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
46071
+ resource.command("sign").description(`Manually mark a quote as signed externally. Optionally upload a signed PDF. Bypasses the built-in Hyperline signature flow.`).requiredOption("--id <value>", `id parameter`).option("--signed-quote <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
45266
46072
  Examples:
45267
46073
  hyperline quotes sign --id <id>
46074
+ hyperline quotes sign --id <id> --signed-quote <path>
45268
46075
  hyperline quotes sign --id <id> --output json`).action(async (opts) => {
45269
46076
  const ctx = resource.parent?.opts()._ctx;
45270
46077
  if (!ctx) {
@@ -45274,11 +46081,15 @@ Examples:
45274
46081
  const args = {};
45275
46082
  if (opts.id !== void 0)
45276
46083
  args.id = opts.id;
46084
+ const files = {};
46085
+ if (opts.signedQuote !== void 0)
46086
+ files.signed_quote = [opts.signedQuote].flat();
45277
46087
  await ctx.execute({
45278
46088
  method: "POST",
45279
46089
  path: "/v1/quotes/{id}/sign",
45280
46090
  args,
45281
- queryParamKeys: []
46091
+ queryParamKeys: [],
46092
+ files
45282
46093
  });
45283
46094
  });
45284
46095
  resource.command("void").description(`Void an existing quote, canceling it and preventing further actions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--reason <value>", `Quote voiding reason.`).addHelpText("after", `
@@ -45390,7 +46201,7 @@ Examples:
45390
46201
  // build/commands/generated/quotes-templates.js
45391
46202
  function registerQuotes_TemplatesCommands(parent) {
45392
46203
  const resource = parent.command("quotes-templates").description("Manage quotes > templates");
45393
- 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", `
46204
+ 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("--subscription-template-id.not <value>", `subscription_template_id__not`).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("--subscription-template-id.is-null <value>", `subscription_template_id__isNull`).option("--subscription-template-id.is-not-null <value>", `subscription_template_id__isNotNull`).option("--search <value>", `search`).addHelpText("after", `
45394
46205
  Examples:
45395
46206
  hyperline quotes-templates list-quote-templates
45396
46207
  hyperline quotes-templates list-quote-templates --take <take> --id <id>`).action(async (opts) => {
@@ -45404,10 +46215,6 @@ Examples:
45404
46215
  args.id = opts.id;
45405
46216
  if (opts["id.not"] !== void 0)
45406
46217
  args.id__not = opts["id.not"];
45407
- if (opts["id.isNull"] !== void 0)
45408
- args.id__isNull = opts["id.isNull"];
45409
- if (opts["id.isNotNull"] !== void 0)
45410
- args.id__isNotNull = opts["id.isNotNull"];
45411
46218
  if (opts["id.equals"] !== void 0)
45412
46219
  args.id__equals = opts["id.equals"];
45413
46220
  if (opts["id.contains"] !== void 0)
@@ -45420,10 +46227,6 @@ Examples:
45420
46227
  args.name = opts.name;
45421
46228
  if (opts["name.not"] !== void 0)
45422
46229
  args.name__not = opts["name.not"];
45423
- if (opts["name.isNull"] !== void 0)
45424
- args.name__isNull = opts["name.isNull"];
45425
- if (opts["name.isNotNull"] !== void 0)
45426
- args.name__isNotNull = opts["name.isNotNull"];
45427
46230
  if (opts["name.equals"] !== void 0)
45428
46231
  args.name__equals = opts["name.equals"];
45429
46232
  if (opts["name.contains"] !== void 0)
@@ -45436,10 +46239,6 @@ Examples:
45436
46239
  args.subscription_template_id = opts.subscriptionTemplateId;
45437
46240
  if (opts["subscriptionTemplateId.not"] !== void 0)
45438
46241
  args.subscription_template_id__not = opts["subscriptionTemplateId.not"];
45439
- if (opts["subscriptionTemplateId.isNull"] !== void 0)
45440
- args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
45441
- if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
45442
- args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
45443
46242
  if (opts["subscriptionTemplateId.equals"] !== void 0)
45444
46243
  args.subscription_template_id__equals = opts["subscriptionTemplateId.equals"];
45445
46244
  if (opts["subscriptionTemplateId.contains"] !== void 0)
@@ -45448,6 +46247,10 @@ Examples:
45448
46247
  args.subscription_template_id__startsWith = opts["subscriptionTemplateId.startsWith"];
45449
46248
  if (opts["subscriptionTemplateId.endWith"] !== void 0)
45450
46249
  args.subscription_template_id__endWith = opts["subscriptionTemplateId.endWith"];
46250
+ if (opts["subscriptionTemplateId.isNull"] !== void 0)
46251
+ args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
46252
+ if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
46253
+ args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
45451
46254
  if (opts.search !== void 0)
45452
46255
  args.search = opts.search;
45453
46256
  if (opts.take !== void 0)
@@ -45463,28 +46266,24 @@ Examples:
45463
46266
  "skip",
45464
46267
  "id",
45465
46268
  "id__not",
45466
- "id__isNull",
45467
- "id__isNotNull",
45468
46269
  "id__equals",
45469
46270
  "id__contains",
45470
46271
  "id__startsWith",
45471
46272
  "id__endWith",
45472
46273
  "name",
45473
46274
  "name__not",
45474
- "name__isNull",
45475
- "name__isNotNull",
45476
46275
  "name__equals",
45477
46276
  "name__contains",
45478
46277
  "name__startsWith",
45479
46278
  "name__endWith",
45480
46279
  "subscription_template_id",
45481
46280
  "subscription_template_id__not",
45482
- "subscription_template_id__isNull",
45483
- "subscription_template_id__isNotNull",
45484
46281
  "subscription_template_id__equals",
45485
46282
  "subscription_template_id__contains",
45486
46283
  "subscription_template_id__startsWith",
45487
46284
  "subscription_template_id__endWith",
46285
+ "subscription_template_id__isNull",
46286
+ "subscription_template_id__isNotNull",
45488
46287
  "search"
45489
46288
  ]
45490
46289
  });
@@ -45886,7 +46685,7 @@ Examples:
45886
46685
  queryParamKeys: []
45887
46686
  });
45888
46687
  });
45889
- 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, custom_properties. 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>", `
46688
+ 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>", `
45890
46689
  Subscription status filter.
45891
46690
 
45892
46691
  - \`active\`, \`pending\`, \`paused\`, \`errored\`, \`cancelled\`, \`draft\`, \`voided\`, \`archived\`: match that status.
@@ -45895,7 +46694,7 @@ Subscription status filter.
45895
46694
  - \`any\`: every status, no exclusion.
45896
46695
 
45897
46696
  Use \`status__in\` with comma-separated values to combine statuses. When the filter is omitted, \`draft\`, \`voided\`, \`cancelled\` and \`archived\` subscriptions are excluded.
45898
- `).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`).addHelpText("after", `
46697
+ `).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", `
45899
46698
  Examples:
45900
46699
  hyperline subscriptions list
45901
46700
  hyperline subscriptions list --take <take> --activation-strategy <activation_strategy>`).action(async (opts) => {
@@ -45917,10 +46716,6 @@ Examples:
45917
46716
  args.currency = opts.currency;
45918
46717
  if (opts["currency.not"] !== void 0)
45919
46718
  args.currency__not = opts["currency.not"];
45920
- if (opts["currency.isNull"] !== void 0)
45921
- args.currency__isNull = opts["currency.isNull"];
45922
- if (opts["currency.isNotNull"] !== void 0)
45923
- args.currency__isNotNull = opts["currency.isNotNull"];
45924
46719
  if (opts["currency.equals"] !== void 0)
45925
46720
  args.currency__equals = opts["currency.equals"];
45926
46721
  if (opts["currency.contains"] !== void 0)
@@ -45933,10 +46728,6 @@ Examples:
45933
46728
  args.plan_id = opts.planId;
45934
46729
  if (opts["planId.not"] !== void 0)
45935
46730
  args.plan_id__not = opts["planId.not"];
45936
- if (opts["planId.isNull"] !== void 0)
45937
- args.plan_id__isNull = opts["planId.isNull"];
45938
- if (opts["planId.isNotNull"] !== void 0)
45939
- args.plan_id__isNotNull = opts["planId.isNotNull"];
45940
46731
  if (opts["planId.equals"] !== void 0)
45941
46732
  args.plan_id__equals = opts["planId.equals"];
45942
46733
  if (opts["planId.contains"] !== void 0)
@@ -45945,14 +46736,14 @@ Examples:
45945
46736
  args.plan_id__startsWith = opts["planId.startsWith"];
45946
46737
  if (opts["planId.endWith"] !== void 0)
45947
46738
  args.plan_id__endWith = opts["planId.endWith"];
46739
+ if (opts["planId.isNull"] !== void 0)
46740
+ args.plan_id__isNull = opts["planId.isNull"];
46741
+ if (opts["planId.isNotNull"] !== void 0)
46742
+ args.plan_id__isNotNull = opts["planId.isNotNull"];
45948
46743
  if (opts.originalQuoteId !== void 0)
45949
46744
  args.original_quote_id = opts.originalQuoteId;
45950
46745
  if (opts["originalQuoteId.not"] !== void 0)
45951
46746
  args.original_quote_id__not = opts["originalQuoteId.not"];
45952
- if (opts["originalQuoteId.isNull"] !== void 0)
45953
- args.original_quote_id__isNull = opts["originalQuoteId.isNull"];
45954
- if (opts["originalQuoteId.isNotNull"] !== void 0)
45955
- args.original_quote_id__isNotNull = opts["originalQuoteId.isNotNull"];
45956
46747
  if (opts["originalQuoteId.equals"] !== void 0)
45957
46748
  args.original_quote_id__equals = opts["originalQuoteId.equals"];
45958
46749
  if (opts["originalQuoteId.contains"] !== void 0)
@@ -45961,14 +46752,14 @@ Examples:
45961
46752
  args.original_quote_id__startsWith = opts["originalQuoteId.startsWith"];
45962
46753
  if (opts["originalQuoteId.endWith"] !== void 0)
45963
46754
  args.original_quote_id__endWith = opts["originalQuoteId.endWith"];
46755
+ if (opts["originalQuoteId.isNull"] !== void 0)
46756
+ args.original_quote_id__isNull = opts["originalQuoteId.isNull"];
46757
+ if (opts["originalQuoteId.isNotNull"] !== void 0)
46758
+ args.original_quote_id__isNotNull = opts["originalQuoteId.isNotNull"];
45964
46759
  if (opts.customerId !== void 0)
45965
46760
  args.customer_id = opts.customerId;
45966
46761
  if (opts["customerId.not"] !== void 0)
45967
46762
  args.customer_id__not = opts["customerId.not"];
45968
- if (opts["customerId.isNull"] !== void 0)
45969
- args.customer_id__isNull = opts["customerId.isNull"];
45970
- if (opts["customerId.isNotNull"] !== void 0)
45971
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
45972
46763
  if (opts["customerId.equals"] !== void 0)
45973
46764
  args.customer_id__equals = opts["customerId.equals"];
45974
46765
  if (opts["customerId.contains"] !== void 0)
@@ -45977,16 +46768,16 @@ Examples:
45977
46768
  args.customer_id__startsWith = opts["customerId.startsWith"];
45978
46769
  if (opts["customerId.endWith"] !== void 0)
45979
46770
  args.customer_id__endWith = opts["customerId.endWith"];
46771
+ if (opts["customerId.isNull"] !== void 0)
46772
+ args.customer_id__isNull = opts["customerId.isNull"];
46773
+ if (opts["customerId.isNotNull"] !== void 0)
46774
+ args.customer_id__isNotNull = opts["customerId.isNotNull"];
45980
46775
  if (opts.invoicingEntityId !== void 0)
45981
46776
  args.invoicing_entity_id = opts.invoicingEntityId;
45982
46777
  if (opts.purchaseOrder !== void 0)
45983
46778
  args.purchase_order = opts.purchaseOrder;
45984
46779
  if (opts["purchaseOrder.not"] !== void 0)
45985
46780
  args.purchase_order__not = opts["purchaseOrder.not"];
45986
- if (opts["purchaseOrder.isNull"] !== void 0)
45987
- args.purchase_order__isNull = opts["purchaseOrder.isNull"];
45988
- if (opts["purchaseOrder.isNotNull"] !== void 0)
45989
- args.purchase_order__isNotNull = opts["purchaseOrder.isNotNull"];
45990
46781
  if (opts["purchaseOrder.equals"] !== void 0)
45991
46782
  args.purchase_order__equals = opts["purchaseOrder.equals"];
45992
46783
  if (opts["purchaseOrder.contains"] !== void 0)
@@ -45995,6 +46786,10 @@ Examples:
45995
46786
  args.purchase_order__startsWith = opts["purchaseOrder.startsWith"];
45996
46787
  if (opts["purchaseOrder.endWith"] !== void 0)
45997
46788
  args.purchase_order__endWith = opts["purchaseOrder.endWith"];
46789
+ if (opts["purchaseOrder.isNull"] !== void 0)
46790
+ args.purchase_order__isNull = opts["purchaseOrder.isNull"];
46791
+ if (opts["purchaseOrder.isNotNull"] !== void 0)
46792
+ args.purchase_order__isNotNull = opts["purchaseOrder.isNotNull"];
45998
46793
  if (opts.customProperties !== void 0)
45999
46794
  args.custom_properties = opts.customProperties;
46000
46795
  if (opts.invoiceDrafts !== void 0)
@@ -46005,10 +46800,6 @@ Examples:
46005
46800
  args.updated_at = opts.updatedAt;
46006
46801
  if (opts["updatedAt.not"] !== void 0)
46007
46802
  args.updated_at__not = opts["updatedAt.not"];
46008
- if (opts["updatedAt.isNull"] !== void 0)
46009
- args.updated_at__isNull = opts["updatedAt.isNull"];
46010
- if (opts["updatedAt.isNotNull"] !== void 0)
46011
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
46012
46803
  if (opts["updatedAt.equals"] !== void 0)
46013
46804
  args.updated_at__equals = opts["updatedAt.equals"];
46014
46805
  if (opts["updatedAt.lt"] !== void 0)
@@ -46019,6 +46810,34 @@ Examples:
46019
46810
  args.updated_at__gt = opts["updatedAt.gt"];
46020
46811
  if (opts["updatedAt.gte"] !== void 0)
46021
46812
  args.updated_at__gte = opts["updatedAt.gte"];
46813
+ if (opts.cancelAt !== void 0)
46814
+ args.cancel_at = opts.cancelAt;
46815
+ if (opts["cancelAt.not"] !== void 0)
46816
+ args.cancel_at__not = opts["cancelAt.not"];
46817
+ if (opts["cancelAt.equals"] !== void 0)
46818
+ args.cancel_at__equals = opts["cancelAt.equals"];
46819
+ if (opts["cancelAt.lt"] !== void 0)
46820
+ args.cancel_at__lt = opts["cancelAt.lt"];
46821
+ if (opts["cancelAt.lte"] !== void 0)
46822
+ args.cancel_at__lte = opts["cancelAt.lte"];
46823
+ if (opts["cancelAt.gt"] !== void 0)
46824
+ args.cancel_at__gt = opts["cancelAt.gt"];
46825
+ if (opts["cancelAt.gte"] !== void 0)
46826
+ args.cancel_at__gte = opts["cancelAt.gte"];
46827
+ if (opts["cancelAt.isNull"] !== void 0)
46828
+ args.cancel_at__isNull = opts["cancelAt.isNull"];
46829
+ if (opts["cancelAt.isNotNull"] !== void 0)
46830
+ args.cancel_at__isNotNull = opts["cancelAt.isNotNull"];
46831
+ if (opts["contractStart.gte"] !== void 0)
46832
+ args.contract_start__gte = opts["contractStart.gte"];
46833
+ if (opts["contractStart.lte"] !== void 0)
46834
+ args.contract_start__lte = opts["contractStart.lte"];
46835
+ if (opts["contractEnd.gte"] !== void 0)
46836
+ args.contract_end__gte = opts["contractEnd.gte"];
46837
+ if (opts["contractEnd.lte"] !== void 0)
46838
+ args.contract_end__lte = opts["contractEnd.lte"];
46839
+ if (opts.renewAutomatically !== void 0)
46840
+ args.renew_automatically = opts.renewAutomatically;
46022
46841
  if (opts.take !== void 0)
46023
46842
  args.take = Number(opts.take);
46024
46843
  if (opts.skip !== void 0)
@@ -46036,57 +46855,67 @@ Examples:
46036
46855
  "status__in",
46037
46856
  "currency",
46038
46857
  "currency__not",
46039
- "currency__isNull",
46040
- "currency__isNotNull",
46041
46858
  "currency__equals",
46042
46859
  "currency__contains",
46043
46860
  "currency__startsWith",
46044
46861
  "currency__endWith",
46045
46862
  "plan_id",
46046
46863
  "plan_id__not",
46047
- "plan_id__isNull",
46048
- "plan_id__isNotNull",
46049
46864
  "plan_id__equals",
46050
46865
  "plan_id__contains",
46051
46866
  "plan_id__startsWith",
46052
46867
  "plan_id__endWith",
46868
+ "plan_id__isNull",
46869
+ "plan_id__isNotNull",
46053
46870
  "original_quote_id",
46054
46871
  "original_quote_id__not",
46055
- "original_quote_id__isNull",
46056
- "original_quote_id__isNotNull",
46057
46872
  "original_quote_id__equals",
46058
46873
  "original_quote_id__contains",
46059
46874
  "original_quote_id__startsWith",
46060
46875
  "original_quote_id__endWith",
46876
+ "original_quote_id__isNull",
46877
+ "original_quote_id__isNotNull",
46061
46878
  "customer_id",
46062
46879
  "customer_id__not",
46063
- "customer_id__isNull",
46064
- "customer_id__isNotNull",
46065
46880
  "customer_id__equals",
46066
46881
  "customer_id__contains",
46067
46882
  "customer_id__startsWith",
46068
46883
  "customer_id__endWith",
46884
+ "customer_id__isNull",
46885
+ "customer_id__isNotNull",
46069
46886
  "invoicing_entity_id",
46070
46887
  "purchase_order",
46071
46888
  "purchase_order__not",
46072
- "purchase_order__isNull",
46073
- "purchase_order__isNotNull",
46074
46889
  "purchase_order__equals",
46075
46890
  "purchase_order__contains",
46076
46891
  "purchase_order__startsWith",
46077
46892
  "purchase_order__endWith",
46893
+ "purchase_order__isNull",
46894
+ "purchase_order__isNotNull",
46078
46895
  "custom_properties",
46079
46896
  "invoice_drafts",
46080
46897
  "integration_entity_id",
46081
46898
  "updated_at",
46082
46899
  "updated_at__not",
46083
- "updated_at__isNull",
46084
- "updated_at__isNotNull",
46085
46900
  "updated_at__equals",
46086
46901
  "updated_at__lt",
46087
46902
  "updated_at__lte",
46088
46903
  "updated_at__gt",
46089
- "updated_at__gte"
46904
+ "updated_at__gte",
46905
+ "cancel_at",
46906
+ "cancel_at__not",
46907
+ "cancel_at__equals",
46908
+ "cancel_at__lt",
46909
+ "cancel_at__lte",
46910
+ "cancel_at__gt",
46911
+ "cancel_at__gte",
46912
+ "cancel_at__isNull",
46913
+ "cancel_at__isNotNull",
46914
+ "contract_start__gte",
46915
+ "contract_start__lte",
46916
+ "contract_end__gte",
46917
+ "contract_end__lte",
46918
+ "renew_automatically"
46090
46919
  ]
46091
46920
  });
46092
46921
  });
@@ -46368,7 +47197,7 @@ Examples:
46368
47197
  // build/commands/generated/subscriptions-transitions.js
46369
47198
  function registerSubscriptions_TransitionsCommands(parent) {
46370
47199
  const resource = parent.command("subscriptions-transitions").description("Manage subscriptions > transitions");
46371
- 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", `
47200
+ 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", `
46372
47201
  Examples:
46373
47202
  hyperline subscriptions-transitions list-subscription-transitions
46374
47203
  hyperline subscriptions-transitions list-subscription-transitions --take <take> --status <status>`).action(async (opts) => {
@@ -46386,10 +47215,6 @@ Examples:
46386
47215
  args.source_subscription_id = opts.sourceSubscriptionId;
46387
47216
  if (opts["sourceSubscriptionId.not"] !== void 0)
46388
47217
  args.source_subscription_id__not = opts["sourceSubscriptionId.not"];
46389
- if (opts["sourceSubscriptionId.isNull"] !== void 0)
46390
- args.source_subscription_id__isNull = opts["sourceSubscriptionId.isNull"];
46391
- if (opts["sourceSubscriptionId.isNotNull"] !== void 0)
46392
- args.source_subscription_id__isNotNull = opts["sourceSubscriptionId.isNotNull"];
46393
47218
  if (opts["sourceSubscriptionId.equals"] !== void 0)
46394
47219
  args.source_subscription_id__equals = opts["sourceSubscriptionId.equals"];
46395
47220
  if (opts["sourceSubscriptionId.contains"] !== void 0)
@@ -46402,10 +47227,6 @@ Examples:
46402
47227
  args.base_subscription_id = opts.baseSubscriptionId;
46403
47228
  if (opts["baseSubscriptionId.not"] !== void 0)
46404
47229
  args.base_subscription_id__not = opts["baseSubscriptionId.not"];
46405
- if (opts["baseSubscriptionId.isNull"] !== void 0)
46406
- args.base_subscription_id__isNull = opts["baseSubscriptionId.isNull"];
46407
- if (opts["baseSubscriptionId.isNotNull"] !== void 0)
46408
- args.base_subscription_id__isNotNull = opts["baseSubscriptionId.isNotNull"];
46409
47230
  if (opts["baseSubscriptionId.equals"] !== void 0)
46410
47231
  args.base_subscription_id__equals = opts["baseSubscriptionId.equals"];
46411
47232
  if (opts["baseSubscriptionId.contains"] !== void 0)
@@ -46418,10 +47239,6 @@ Examples:
46418
47239
  args.target_subscription_id = opts.targetSubscriptionId;
46419
47240
  if (opts["targetSubscriptionId.not"] !== void 0)
46420
47241
  args.target_subscription_id__not = opts["targetSubscriptionId.not"];
46421
- if (opts["targetSubscriptionId.isNull"] !== void 0)
46422
- args.target_subscription_id__isNull = opts["targetSubscriptionId.isNull"];
46423
- if (opts["targetSubscriptionId.isNotNull"] !== void 0)
46424
- args.target_subscription_id__isNotNull = opts["targetSubscriptionId.isNotNull"];
46425
47242
  if (opts["targetSubscriptionId.equals"] !== void 0)
46426
47243
  args.target_subscription_id__equals = opts["targetSubscriptionId.equals"];
46427
47244
  if (opts["targetSubscriptionId.contains"] !== void 0)
@@ -46430,14 +47247,14 @@ Examples:
46430
47247
  args.target_subscription_id__startsWith = opts["targetSubscriptionId.startsWith"];
46431
47248
  if (opts["targetSubscriptionId.endWith"] !== void 0)
46432
47249
  args.target_subscription_id__endWith = opts["targetSubscriptionId.endWith"];
47250
+ if (opts["targetSubscriptionId.isNull"] !== void 0)
47251
+ args.target_subscription_id__isNull = opts["targetSubscriptionId.isNull"];
47252
+ if (opts["targetSubscriptionId.isNotNull"] !== void 0)
47253
+ args.target_subscription_id__isNotNull = opts["targetSubscriptionId.isNotNull"];
46433
47254
  if (opts.transitionDate !== void 0)
46434
47255
  args.transition_date = opts.transitionDate;
46435
47256
  if (opts["transitionDate.not"] !== void 0)
46436
47257
  args.transition_date__not = opts["transitionDate.not"];
46437
- if (opts["transitionDate.isNull"] !== void 0)
46438
- args.transition_date__isNull = opts["transitionDate.isNull"];
46439
- if (opts["transitionDate.isNotNull"] !== void 0)
46440
- args.transition_date__isNotNull = opts["transitionDate.isNotNull"];
46441
47258
  if (opts["transitionDate.equals"] !== void 0)
46442
47259
  args.transition_date__equals = opts["transitionDate.equals"];
46443
47260
  if (opts["transitionDate.lt"] !== void 0)
@@ -46448,14 +47265,14 @@ Examples:
46448
47265
  args.transition_date__gt = opts["transitionDate.gt"];
46449
47266
  if (opts["transitionDate.gte"] !== void 0)
46450
47267
  args.transition_date__gte = opts["transitionDate.gte"];
47268
+ if (opts["transitionDate.isNull"] !== void 0)
47269
+ args.transition_date__isNull = opts["transitionDate.isNull"];
47270
+ if (opts["transitionDate.isNotNull"] !== void 0)
47271
+ args.transition_date__isNotNull = opts["transitionDate.isNotNull"];
46451
47272
  if (opts.transitionedAt !== void 0)
46452
47273
  args.transitioned_at = opts.transitionedAt;
46453
47274
  if (opts["transitionedAt.not"] !== void 0)
46454
47275
  args.transitioned_at__not = opts["transitionedAt.not"];
46455
- if (opts["transitionedAt.isNull"] !== void 0)
46456
- args.transitioned_at__isNull = opts["transitionedAt.isNull"];
46457
- if (opts["transitionedAt.isNotNull"] !== void 0)
46458
- args.transitioned_at__isNotNull = opts["transitionedAt.isNotNull"];
46459
47276
  if (opts["transitionedAt.equals"] !== void 0)
46460
47277
  args.transitioned_at__equals = opts["transitionedAt.equals"];
46461
47278
  if (opts["transitionedAt.lt"] !== void 0)
@@ -46466,6 +47283,10 @@ Examples:
46466
47283
  args.transitioned_at__gt = opts["transitionedAt.gt"];
46467
47284
  if (opts["transitionedAt.gte"] !== void 0)
46468
47285
  args.transitioned_at__gte = opts["transitionedAt.gte"];
47286
+ if (opts["transitionedAt.isNull"] !== void 0)
47287
+ args.transitioned_at__isNull = opts["transitionedAt.isNull"];
47288
+ if (opts["transitionedAt.isNotNull"] !== void 0)
47289
+ args.transitioned_at__isNotNull = opts["transitionedAt.isNotNull"];
46469
47290
  if (opts.take !== void 0)
46470
47291
  args.take = Number(opts.take);
46471
47292
  if (opts.skip !== void 0)
@@ -46481,46 +47302,42 @@ Examples:
46481
47302
  "status__in",
46482
47303
  "source_subscription_id",
46483
47304
  "source_subscription_id__not",
46484
- "source_subscription_id__isNull",
46485
- "source_subscription_id__isNotNull",
46486
47305
  "source_subscription_id__equals",
46487
47306
  "source_subscription_id__contains",
46488
47307
  "source_subscription_id__startsWith",
46489
47308
  "source_subscription_id__endWith",
46490
47309
  "base_subscription_id",
46491
47310
  "base_subscription_id__not",
46492
- "base_subscription_id__isNull",
46493
- "base_subscription_id__isNotNull",
46494
47311
  "base_subscription_id__equals",
46495
47312
  "base_subscription_id__contains",
46496
47313
  "base_subscription_id__startsWith",
46497
47314
  "base_subscription_id__endWith",
46498
47315
  "target_subscription_id",
46499
47316
  "target_subscription_id__not",
46500
- "target_subscription_id__isNull",
46501
- "target_subscription_id__isNotNull",
46502
47317
  "target_subscription_id__equals",
46503
47318
  "target_subscription_id__contains",
46504
47319
  "target_subscription_id__startsWith",
46505
47320
  "target_subscription_id__endWith",
47321
+ "target_subscription_id__isNull",
47322
+ "target_subscription_id__isNotNull",
46506
47323
  "transition_date",
46507
47324
  "transition_date__not",
46508
- "transition_date__isNull",
46509
- "transition_date__isNotNull",
46510
47325
  "transition_date__equals",
46511
47326
  "transition_date__lt",
46512
47327
  "transition_date__lte",
46513
47328
  "transition_date__gt",
46514
47329
  "transition_date__gte",
47330
+ "transition_date__isNull",
47331
+ "transition_date__isNotNull",
46515
47332
  "transitioned_at",
46516
47333
  "transitioned_at__not",
46517
- "transitioned_at__isNull",
46518
- "transitioned_at__isNotNull",
46519
47334
  "transitioned_at__equals",
46520
47335
  "transitioned_at__lt",
46521
47336
  "transitioned_at__lte",
46522
47337
  "transitioned_at__gt",
46523
- "transitioned_at__gte"
47338
+ "transitioned_at__gte",
47339
+ "transitioned_at__isNull",
47340
+ "transitioned_at__isNotNull"
46524
47341
  ]
46525
47342
  });
46526
47343
  });
@@ -46598,7 +47415,7 @@ Examples:
46598
47415
  // build/commands/generated/taxes.js
46599
47416
  function registerTaxesCommands(parent) {
46600
47417
  const resource = parent.command("taxes").description("Manage taxes");
46601
- 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", `
47418
+ 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", `
46602
47419
  Examples:
46603
47420
  hyperline taxes list-tax-rates
46604
47421
  hyperline taxes list-tax-rates --take <take> --id <id>`).action(async (opts) => {
@@ -46612,10 +47429,6 @@ Examples:
46612
47429
  args.id = opts.id;
46613
47430
  if (opts["id.not"] !== void 0)
46614
47431
  args.id__not = opts["id.not"];
46615
- if (opts["id.isNull"] !== void 0)
46616
- args.id__isNull = opts["id.isNull"];
46617
- if (opts["id.isNotNull"] !== void 0)
46618
- args.id__isNotNull = opts["id.isNotNull"];
46619
47432
  if (opts["id.equals"] !== void 0)
46620
47433
  args.id__equals = opts["id.equals"];
46621
47434
  if (opts["id.contains"] !== void 0)
@@ -46628,10 +47441,6 @@ Examples:
46628
47441
  args.name = opts.name;
46629
47442
  if (opts["name.not"] !== void 0)
46630
47443
  args.name__not = opts["name.not"];
46631
- if (opts["name.isNull"] !== void 0)
46632
- args.name__isNull = opts["name.isNull"];
46633
- if (opts["name.isNotNull"] !== void 0)
46634
- args.name__isNotNull = opts["name.isNotNull"];
46635
47444
  if (opts["name.equals"] !== void 0)
46636
47445
  args.name__equals = opts["name.equals"];
46637
47446
  if (opts["name.contains"] !== void 0)
@@ -46640,14 +47449,14 @@ Examples:
46640
47449
  args.name__startsWith = opts["name.startsWith"];
46641
47450
  if (opts["name.endWith"] !== void 0)
46642
47451
  args.name__endWith = opts["name.endWith"];
47452
+ if (opts["name.isNull"] !== void 0)
47453
+ args.name__isNull = opts["name.isNull"];
47454
+ if (opts["name.isNotNull"] !== void 0)
47455
+ args.name__isNotNull = opts["name.isNotNull"];
46643
47456
  if (opts.description !== void 0)
46644
47457
  args.description = opts.description;
46645
47458
  if (opts["description.not"] !== void 0)
46646
47459
  args.description__not = opts["description.not"];
46647
- if (opts["description.isNull"] !== void 0)
46648
- args.description__isNull = opts["description.isNull"];
46649
- if (opts["description.isNotNull"] !== void 0)
46650
- args.description__isNotNull = opts["description.isNotNull"];
46651
47460
  if (opts["description.equals"] !== void 0)
46652
47461
  args.description__equals = opts["description.equals"];
46653
47462
  if (opts["description.contains"] !== void 0)
@@ -46656,14 +47465,14 @@ Examples:
46656
47465
  args.description__startsWith = opts["description.startsWith"];
46657
47466
  if (opts["description.endWith"] !== void 0)
46658
47467
  args.description__endWith = opts["description.endWith"];
47468
+ if (opts["description.isNull"] !== void 0)
47469
+ args.description__isNull = opts["description.isNull"];
47470
+ if (opts["description.isNotNull"] !== void 0)
47471
+ args.description__isNotNull = opts["description.isNotNull"];
46659
47472
  if (opts.invoicingEntityId !== void 0)
46660
47473
  args.invoicing_entity_id = opts.invoicingEntityId;
46661
47474
  if (opts["invoicingEntityId.not"] !== void 0)
46662
47475
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
46663
- if (opts["invoicingEntityId.isNull"] !== void 0)
46664
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
46665
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
46666
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
46667
47476
  if (opts["invoicingEntityId.equals"] !== void 0)
46668
47477
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
46669
47478
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -46685,32 +47494,28 @@ Examples:
46685
47494
  "skip",
46686
47495
  "id",
46687
47496
  "id__not",
46688
- "id__isNull",
46689
- "id__isNotNull",
46690
47497
  "id__equals",
46691
47498
  "id__contains",
46692
47499
  "id__startsWith",
46693
47500
  "id__endWith",
46694
47501
  "name",
46695
47502
  "name__not",
46696
- "name__isNull",
46697
- "name__isNotNull",
46698
47503
  "name__equals",
46699
47504
  "name__contains",
46700
47505
  "name__startsWith",
46701
47506
  "name__endWith",
47507
+ "name__isNull",
47508
+ "name__isNotNull",
46702
47509
  "description",
46703
47510
  "description__not",
46704
- "description__isNull",
46705
- "description__isNotNull",
46706
47511
  "description__equals",
46707
47512
  "description__contains",
46708
47513
  "description__startsWith",
46709
47514
  "description__endWith",
47515
+ "description__isNull",
47516
+ "description__isNotNull",
46710
47517
  "invoicing_entity_id",
46711
47518
  "invoicing_entity_id__not",
46712
- "invoicing_entity_id__isNull",
46713
- "invoicing_entity_id__isNotNull",
46714
47519
  "invoicing_entity_id__equals",
46715
47520
  "invoicing_entity_id__contains",
46716
47521
  "invoicing_entity_id__startsWith",
@@ -47289,11 +48094,16 @@ function registerAllCommands(program2) {
47289
48094
  registerAi_BillingCommands(program2);
47290
48095
  registerAi_CostsCommands(program2);
47291
48096
  registerAnalyticsCommands(program2);
48097
+ registerApproval_WorkflowsCommands(program2);
47292
48098
  registerBank_AccountsCommands(program2);
48099
+ registerCatalogCommands(program2);
47293
48100
  registerCompaniesCommands(program2);
48101
+ registerContracts_ClausesCommands(program2);
48102
+ registerContracts_DocumentsCommands(program2);
47294
48103
  registerCouponsCommands(program2);
47295
48104
  registerCoupons_Promotion_CodesCommands(program2);
47296
48105
  registerCustomers_CreditsCommands(program2);
48106
+ registerCustomers_FeaturesCommands(program2);
47297
48107
  registerCustomers_Payment_MethodsCommands(program2);
47298
48108
  registerCustomers_AddressCommands(program2);
47299
48109
  registerCustomers_ShippingCommands(program2);
@@ -47302,12 +48112,14 @@ function registerAllCommands(program2) {
47302
48112
  registerOrganisationsCommands(program2);
47303
48113
  registerCustomers_SegmentsCommands(program2);
47304
48114
  registerExportsCommands(program2);
48115
+ registerFeaturesCommands(program2);
47305
48116
  registerFilesCommands(program2);
47306
48117
  registerInvoicesCommands(program2);
47307
48118
  registerInvoices_TransactionsCommands(program2);
47308
48119
  registerInvoicing_EntitiesCommands(program2);
47309
48120
  registerAi_MonitoringCommands(program2);
47310
48121
  registerPaymentsCommands(program2);
48122
+ registerProducts_FeaturesCommands(program2);
47311
48123
  registerProductsCommands(program2);
47312
48124
  registerPrice_ConfigurationsCommands(program2);
47313
48125
  registerQuotesCommands(program2);
@@ -63368,7 +64180,25 @@ var de = {
63368
64180
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Diese Position wurde f\xFCr den anteiligen Zeitraum in Rechnung gestellt",
63369
64181
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Betrag von {{amount}} f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
63370
64182
  "subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren",
63371
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben"
64183
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben",
64184
+ "quotes.blockers.quote_not_draft": "Setzen Sie das Angebot auf Entwurf zur\xFCck, bevor Sie seine Konfigurationen \xE4ndern",
64185
+ "quotes.blockers.quote_expiration_date_missing": "Das Angebot muss ein Ablaufdatum haben, um zur Genehmigung gesendet zu werden",
64186
+ "quotes.blockers.quote_configuration_missing": "F\xFCgen Sie mindestens eine Konfiguration hinzu, bevor Sie das Angebot einreichen",
64187
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Abonnement\xE4nderungen m\xFCssen den Kunden des Angebots verwenden",
64188
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Aktivieren Sie mehrere Konfigurationen, bevor Sie einen untergeordneten Kunden zuweisen",
64189
+ "quotes.blockers.quote_configuration_customer_not_child": "W\xE4hlen Sie einen untergeordneten Kunden des Angebotskunden",
64190
+ "quotes.blockers.quote_configuration_type_mismatch": "Die verkn\xFCpfte Konfiguration entspricht nicht dem Konfigurationstyp",
64191
+ "quotes.blockers.quote_configuration_not_draft": "W\xE4hlen Sie eine Konfiguration im Entwurf",
64192
+ "quotes.blockers.quote_configuration_customer_mismatch": "Die Konfiguration muss zum Kunden der Konfiguration geh\xF6ren",
64193
+ "quotes.blockers.quote_configuration_currency_mismatch": "Die Konfiguration muss die W\xE4hrung des Angebots verwenden",
64194
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "Die Rechnung muss die Rechnungsstellungseinheit des Angebots verwenden",
64195
+ "quotes.blockers.quote_configuration_already_linked": "Die Konfiguration ist bereits mit einer Angebotskonfiguration verkn\xFCpft",
64196
+ "quotes.blockers.quote_configuration_not_subscription_update": "W\xE4hlen Sie eine Konfiguration f\xFCr eine Abonnement\xE4nderung",
64197
+ "quotes.blockers.quote_configuration_not_new_subscription": "W\xE4hlen Sie eine Konfiguration f\xFCr ein neues Abonnement",
64198
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Ein Abonnement kann in einem Angebot nur einmal ge\xE4ndert werden",
64199
+ "quotes.blockers.quote_draft_invoice_missing": "Das Angebot muss eine Rechnung im Entwurf haben, um abgeschlossen zu werden",
64200
+ "quotes.blockers.quote_draft_subscription_missing": "Das Angebot muss ein Abonnement im Entwurf haben, um abgeschlossen zu werden",
64201
+ "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"
63372
64202
  };
63373
64203
 
63374
64204
  // ../hyperline-i18n/build/locales/en.js
@@ -63418,7 +64248,25 @@ var en = {
63418
64248
  "accounting.revrec.closedPeriodFallbackNote": " (posted to next open period \u2014 target accounting period closed; original date {{originalDate}})",
63419
64249
  "einvoicing.paymentProcessed": "Payment processed",
63420
64250
  "einvoicing.paymentReceived": "Payment received",
63421
- "einvoicing.paymentFromWallet": "Payment from wallet"
64251
+ "einvoicing.paymentFromWallet": "Payment from wallet",
64252
+ "quotes.blockers.quote_not_draft": "Redraft the quote before changing its configurations",
64253
+ "quotes.blockers.quote_expiration_date_missing": "Quote must have an expiration date to be sent for approval",
64254
+ "quotes.blockers.quote_configuration_missing": "Add at least one configuration before submitting the quote",
64255
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Subscription updates must use the quote customer",
64256
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Enable multiple configurations before assigning a child customer",
64257
+ "quotes.blockers.quote_configuration_customer_not_child": "Select a child customer of the quote customer",
64258
+ "quotes.blockers.quote_configuration_type_mismatch": "The linked configuration does not match the configuration type",
64259
+ "quotes.blockers.quote_configuration_not_draft": "Select a draft configuration",
64260
+ "quotes.blockers.quote_configuration_customer_mismatch": "The configuration must belong to the configuration customer",
64261
+ "quotes.blockers.quote_configuration_currency_mismatch": "The configuration must use the quote currency",
64262
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "The invoice must use the quote invoicing entity",
64263
+ "quotes.blockers.quote_configuration_already_linked": "The configuration is already linked to a quote configuration",
64264
+ "quotes.blockers.quote_configuration_not_subscription_update": "Select a subscription update configuration",
64265
+ "quotes.blockers.quote_configuration_not_new_subscription": "Select a new subscription configuration",
64266
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "A subscription can only be updated once in a quote",
64267
+ "quotes.blockers.quote_draft_invoice_missing": "Quote must have a draft invoice to be finalized",
64268
+ "quotes.blockers.quote_draft_subscription_missing": "Quote must have a draft subscription to be finalized",
64269
+ "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"
63422
64270
  };
63423
64271
 
63424
64272
  // ../hyperline-i18n/build/locales/es.js
@@ -63468,7 +64316,25 @@ var es = {
63468
64316
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta l\xEDnea ha sido facturada para el per\xEDodo prorrateado",
63469
64317
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importe de {{amount}} no facturado para el per\xEDodo prorrateado",
63470
64318
  "subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}",
63471
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado"
64319
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado",
64320
+ "quotes.blockers.quote_not_draft": "Vuelve a poner el presupuesto en borrador antes de cambiar sus configuraciones",
64321
+ "quotes.blockers.quote_expiration_date_missing": "El presupuesto debe tener una fecha de vencimiento para enviarse a aprobaci\xF3n",
64322
+ "quotes.blockers.quote_configuration_missing": "A\xF1ade al menos una configuraci\xF3n antes de enviar el presupuesto",
64323
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Las actualizaciones de suscripci\xF3n deben usar el cliente del presupuesto",
64324
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Activa las configuraciones m\xFAltiples antes de asignar un cliente hijo",
64325
+ "quotes.blockers.quote_configuration_customer_not_child": "Selecciona un cliente hijo del cliente del presupuesto",
64326
+ "quotes.blockers.quote_configuration_type_mismatch": "La configuraci\xF3n vinculada no coincide con el tipo de configuraci\xF3n",
64327
+ "quotes.blockers.quote_configuration_not_draft": "Selecciona una configuraci\xF3n en borrador",
64328
+ "quotes.blockers.quote_configuration_customer_mismatch": "La configuraci\xF3n debe pertenecer al cliente de la configuraci\xF3n",
64329
+ "quotes.blockers.quote_configuration_currency_mismatch": "La configuraci\xF3n debe usar la moneda del presupuesto",
64330
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "La factura debe usar la entidad de facturaci\xF3n del presupuesto",
64331
+ "quotes.blockers.quote_configuration_already_linked": "La configuraci\xF3n ya est\xE1 vinculada a una configuraci\xF3n de presupuesto",
64332
+ "quotes.blockers.quote_configuration_not_subscription_update": "Selecciona una configuraci\xF3n de actualizaci\xF3n de suscripci\xF3n",
64333
+ "quotes.blockers.quote_configuration_not_new_subscription": "Selecciona una configuraci\xF3n de nueva suscripci\xF3n",
64334
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Una suscripci\xF3n solo puede actualizarse una vez en un presupuesto",
64335
+ "quotes.blockers.quote_draft_invoice_missing": "El presupuesto debe tener una factura en borrador para finalizarse",
64336
+ "quotes.blockers.quote_draft_subscription_missing": "El presupuesto debe tener una suscripci\xF3n en borrador para finalizarse",
64337
+ "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"
63472
64338
  };
63473
64339
 
63474
64340
  // ../hyperline-i18n/build/locales/fr.js
@@ -63518,7 +64384,25 @@ var fr = {
63518
64384
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Cette ligne a \xE9t\xE9 factur\xE9e pour la p\xE9riode proratis\xE9e",
63519
64385
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Montant de {{amount}} non factur\xE9 pour la p\xE9riode proratis\xE9e",
63520
64386
  "subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}",
63521
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9"
64387
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9",
64388
+ "quotes.blockers.quote_not_draft": "Repassez le devis en brouillon avant de modifier ses configurations",
64389
+ "quotes.blockers.quote_expiration_date_missing": "Le devis doit avoir une date d'expiration pour \xEAtre envoy\xE9 en validation",
64390
+ "quotes.blockers.quote_configuration_missing": "Ajoutez au moins une configuration avant de soumettre le devis",
64391
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Les mises \xE0 jour d'abonnement doivent utiliser le client du devis",
64392
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Activez les configurations multiples avant d'assigner un client enfant",
64393
+ "quotes.blockers.quote_configuration_customer_not_child": "S\xE9lectionnez un client enfant du client du devis",
64394
+ "quotes.blockers.quote_configuration_type_mismatch": "La configuration li\xE9e ne correspond pas au type de configuration",
64395
+ "quotes.blockers.quote_configuration_not_draft": "S\xE9lectionnez une configuration en brouillon",
64396
+ "quotes.blockers.quote_configuration_customer_mismatch": "La configuration doit appartenir au client de la configuration",
64397
+ "quotes.blockers.quote_configuration_currency_mismatch": "La configuration doit utiliser la devise du devis",
64398
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "La facture doit utiliser l'entit\xE9 de facturation du devis",
64399
+ "quotes.blockers.quote_configuration_already_linked": "La configuration est d\xE9j\xE0 li\xE9e \xE0 une configuration de devis",
64400
+ "quotes.blockers.quote_configuration_not_subscription_update": "S\xE9lectionnez une configuration de mise \xE0 jour d'abonnement",
64401
+ "quotes.blockers.quote_configuration_not_new_subscription": "S\xE9lectionnez une configuration de nouvel abonnement",
64402
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Un abonnement ne peut \xEAtre mis \xE0 jour qu'une seule fois dans un devis",
64403
+ "quotes.blockers.quote_draft_invoice_missing": "Le devis doit avoir une facture en brouillon pour \xEAtre finalis\xE9",
64404
+ "quotes.blockers.quote_draft_subscription_missing": "Le devis doit avoir un abonnement en brouillon pour \xEAtre finalis\xE9",
64405
+ "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"
63522
64406
  };
63523
64407
 
63524
64408
  // ../hyperline-i18n/build/locales/it.js
@@ -63568,7 +64452,25 @@ var it = {
63568
64452
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Questa voce \xE8 stata fatturata per il periodo proporzionato",
63569
64453
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importo di {{amount}} non fatturato per il periodo proporzionato",
63570
64454
  "subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}",
63571
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto"
64455
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto",
64456
+ "quotes.blockers.quote_not_draft": "Riporta il preventivo in bozza prima di modificarne le configurazioni",
64457
+ "quotes.blockers.quote_expiration_date_missing": "Il preventivo deve avere una data di scadenza per essere inviato per approvazione",
64458
+ "quotes.blockers.quote_configuration_missing": "Aggiungi almeno una configurazione prima di inviare il preventivo",
64459
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Gli aggiornamenti dell'abbonamento devono usare il cliente del preventivo",
64460
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Attiva le configurazioni multiple prima di assegnare un cliente figlio",
64461
+ "quotes.blockers.quote_configuration_customer_not_child": "Seleziona un cliente figlio del cliente del preventivo",
64462
+ "quotes.blockers.quote_configuration_type_mismatch": "La configurazione collegata non corrisponde al tipo di configurazione",
64463
+ "quotes.blockers.quote_configuration_not_draft": "Seleziona una configurazione in bozza",
64464
+ "quotes.blockers.quote_configuration_customer_mismatch": "La configurazione deve appartenere al cliente della configurazione",
64465
+ "quotes.blockers.quote_configuration_currency_mismatch": "La configurazione deve usare la valuta del preventivo",
64466
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "La fattura deve usare l'entit\xE0 di fatturazione del preventivo",
64467
+ "quotes.blockers.quote_configuration_already_linked": "La configurazione \xE8 gi\xE0 collegata a una configurazione del preventivo",
64468
+ "quotes.blockers.quote_configuration_not_subscription_update": "Seleziona una configurazione di aggiornamento dell'abbonamento",
64469
+ "quotes.blockers.quote_configuration_not_new_subscription": "Seleziona una configurazione di nuovo abbonamento",
64470
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Un abbonamento pu\xF2 essere aggiornato una sola volta in un preventivo",
64471
+ "quotes.blockers.quote_draft_invoice_missing": "Il preventivo deve avere una fattura in bozza per essere finalizzato",
64472
+ "quotes.blockers.quote_draft_subscription_missing": "Il preventivo deve avere un abbonamento in bozza per essere finalizzato",
64473
+ "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"
63572
64474
  };
63573
64475
 
63574
64476
  // ../hyperline-i18n/build/locales/lt.js
@@ -63618,7 +64520,25 @@ var lt = {
63618
64520
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
63619
64521
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
63620
64522
  "subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
63621
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis"
64523
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis",
64524
+ "quotes.blockers.quote_not_draft": "Prie\u0161 keisdami pasi\u016Blymo konfig\u016Bracijas, gr\u0105\u017Einkite j\u012F \u012F juodra\u0161t\u012F",
64525
+ "quotes.blockers.quote_expiration_date_missing": "Pasi\u016Blymas turi tur\u0117ti galiojimo pabaigos dat\u0105, kad b\u016Bt\u0173 i\u0161si\u0173stas tvirtinti",
64526
+ "quotes.blockers.quote_configuration_missing": "Prie\u0161 pateikdami pasi\u016Blym\u0105, prid\u0117kite bent vien\u0105 konfig\u016Bracij\u0105",
64527
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Prenumeratos atnaujinimai turi naudoti pasi\u016Blymo klient\u0105",
64528
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Prie\u0161 priskirdami antrin\u012F klient\u0105, \u012Fjunkite kelias konfig\u016Bracijas",
64529
+ "quotes.blockers.quote_configuration_customer_not_child": "Pasirinkite pasi\u016Blymo kliento antrin\u012F klient\u0105",
64530
+ "quotes.blockers.quote_configuration_type_mismatch": "Susieta konfig\u016Bracija neatitinka konfig\u016Bracijos tipo",
64531
+ "quotes.blockers.quote_configuration_not_draft": "Pasirinkite konfig\u016Bracijos juodra\u0161t\u012F",
64532
+ "quotes.blockers.quote_configuration_customer_mismatch": "Konfig\u016Bracija turi priklausyti konfig\u016Bracijos klientui",
64533
+ "quotes.blockers.quote_configuration_currency_mismatch": "Konfig\u016Bracija turi naudoti pasi\u016Blymo valiut\u0105",
64534
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "S\u0105skaita fakt\u016Bra turi naudoti pasi\u016Blymo s\u0105skait\u0173 i\u0161ra\u0161ymo subjekt\u0105",
64535
+ "quotes.blockers.quote_configuration_already_linked": "Konfig\u016Bracija jau susieta su pasi\u016Blymo konfig\u016Bracija",
64536
+ "quotes.blockers.quote_configuration_not_subscription_update": "Pasirinkite prenumeratos atnaujinimo konfig\u016Bracij\u0105",
64537
+ "quotes.blockers.quote_configuration_not_new_subscription": "Pasirinkite naujos prenumeratos konfig\u016Bracij\u0105",
64538
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Prenumerat\u0105 pasi\u016Blyme galima atnaujinti tik vien\u0105 kart\u0105",
64539
+ "quotes.blockers.quote_draft_invoice_missing": "Pasi\u016Blymas turi tur\u0117ti s\u0105skaitos fakt\u016Bros juodra\u0161t\u012F, kad b\u016Bt\u0173 u\u017Ebaigtas",
64540
+ "quotes.blockers.quote_draft_subscription_missing": "Pasi\u016Blymas turi tur\u0117ti prenumeratos juodra\u0161t\u012F, kad b\u016Bt\u0173 u\u017Ebaigtas",
64541
+ "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"
63622
64542
  };
63623
64543
 
63624
64544
  // ../hyperline-i18n/build/locales/nl.js
@@ -63668,7 +64588,25 @@ var nl = {
63668
64588
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Deze regel is gefactureerd voor de geproportioneerde periode",
63669
64589
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Bedrag van {{amount}} niet gefactureerd voor de geproportioneerde periode",
63670
64590
  "subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}",
63671
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo"
64591
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo",
64592
+ "quotes.blockers.quote_not_draft": "Zet de offerte terug naar concept voordat u de configuraties wijzigt",
64593
+ "quotes.blockers.quote_expiration_date_missing": "De offerte moet een vervaldatum hebben om ter goedkeuring te worden verzonden",
64594
+ "quotes.blockers.quote_configuration_missing": "Voeg ten minste \xE9\xE9n configuratie toe voordat u de offerte indient",
64595
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Abonnementswijzigingen moeten de klant van de offerte gebruiken",
64596
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Schakel meerdere configuraties in voordat u een onderliggende klant toewijst",
64597
+ "quotes.blockers.quote_configuration_customer_not_child": "Selecteer een onderliggende klant van de offerteklant",
64598
+ "quotes.blockers.quote_configuration_type_mismatch": "De gekoppelde configuratie komt niet overeen met het configuratietype",
64599
+ "quotes.blockers.quote_configuration_not_draft": "Selecteer een conceptconfiguratie",
64600
+ "quotes.blockers.quote_configuration_customer_mismatch": "De configuratie moet bij de klant van de configuratie horen",
64601
+ "quotes.blockers.quote_configuration_currency_mismatch": "De configuratie moet de valuta van de offerte gebruiken",
64602
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "De factuur moet de facturatie-entiteit van de offerte gebruiken",
64603
+ "quotes.blockers.quote_configuration_already_linked": "De configuratie is al gekoppeld aan een offerteconfiguratie",
64604
+ "quotes.blockers.quote_configuration_not_subscription_update": "Selecteer een configuratie voor een abonnementswijziging",
64605
+ "quotes.blockers.quote_configuration_not_new_subscription": "Selecteer een configuratie voor een nieuw abonnement",
64606
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Een abonnement kan maar \xE9\xE9n keer per offerte worden gewijzigd",
64607
+ "quotes.blockers.quote_draft_invoice_missing": "De offerte moet een conceptfactuur hebben om te worden afgerond",
64608
+ "quotes.blockers.quote_draft_subscription_missing": "De offerte moet een conceptabonnement hebben om te worden afgerond",
64609
+ "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"
63672
64610
  };
63673
64611
 
63674
64612
  // ../hyperline-i18n/build/locales/pl.js
@@ -63718,7 +64656,25 @@ var pl = {
63718
64656
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Ta pozycja zosta\u0142a zafakturowana za okres proporcjonalny",
63719
64657
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Kwota {{amount}} niefakturowana za okres proporcjonalny",
63720
64658
  "subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}",
63721
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo"
64659
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo",
64660
+ "quotes.blockers.quote_not_draft": "Przywr\xF3\u0107 ofert\u0119 do wersji roboczej przed zmian\u0105 jej konfiguracji",
64661
+ "quotes.blockers.quote_expiration_date_missing": "Oferta musi mie\u0107 dat\u0119 wyga\u015Bni\u0119cia, aby zosta\u0142a wys\u0142ana do zatwierdzenia",
64662
+ "quotes.blockers.quote_configuration_missing": "Dodaj co najmniej jedn\u0105 konfiguracj\u0119 przed przes\u0142aniem oferty",
64663
+ "quotes.blockers.quote_configuration_subscription_update_customer": "Aktualizacje subskrypcji musz\u0105 u\u017Cywa\u0107 klienta oferty",
64664
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "W\u0142\u0105cz wiele konfiguracji przed przypisaniem klienta podrz\u0119dnego",
64665
+ "quotes.blockers.quote_configuration_customer_not_child": "Wybierz klienta podrz\u0119dnego klienta oferty",
64666
+ "quotes.blockers.quote_configuration_type_mismatch": "Powi\u0105zana konfiguracja nie odpowiada typowi konfiguracji",
64667
+ "quotes.blockers.quote_configuration_not_draft": "Wybierz konfiguracj\u0119 w wersji roboczej",
64668
+ "quotes.blockers.quote_configuration_customer_mismatch": "Konfiguracja musi nale\u017Ce\u0107 do klienta konfiguracji",
64669
+ "quotes.blockers.quote_configuration_currency_mismatch": "Konfiguracja musi u\u017Cywa\u0107 waluty oferty",
64670
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "Faktura musi u\u017Cywa\u0107 podmiotu fakturuj\u0105cego oferty",
64671
+ "quotes.blockers.quote_configuration_already_linked": "Konfiguracja jest ju\u017C powi\u0105zana z konfiguracj\u0105 oferty",
64672
+ "quotes.blockers.quote_configuration_not_subscription_update": "Wybierz konfiguracj\u0119 aktualizacji subskrypcji",
64673
+ "quotes.blockers.quote_configuration_not_new_subscription": "Wybierz konfiguracj\u0119 nowej subskrypcji",
64674
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Subskrypcj\u0119 mo\u017Cna zaktualizowa\u0107 w ofercie tylko raz",
64675
+ "quotes.blockers.quote_draft_invoice_missing": "Oferta musi mie\u0107 faktur\u0119 w wersji roboczej, aby zosta\u0142a sfinalizowana",
64676
+ "quotes.blockers.quote_draft_subscription_missing": "Oferta musi mie\u0107 subskrypcj\u0119 w wersji roboczej, aby zosta\u0142a sfinalizowana",
64677
+ "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"
63722
64678
  };
63723
64679
 
63724
64680
  // ../hyperline-i18n/build/locales/pt.js
@@ -63768,7 +64724,25 @@ var pt = {
63768
64724
  "subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta linha foi faturada para o per\xEDodo proporcional",
63769
64725
  "subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Valor de {{amount}} n\xE3o faturado para o per\xEDodo proporcional",
63770
64726
  "subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}",
63771
- "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado"
64727
+ "wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado",
64728
+ "quotes.blockers.quote_not_draft": "Volte a colocar o or\xE7amento em rascunho antes de alterar as suas configura\xE7\xF5es",
64729
+ "quotes.blockers.quote_expiration_date_missing": "O or\xE7amento deve ter uma data de expira\xE7\xE3o para ser enviado para aprova\xE7\xE3o",
64730
+ "quotes.blockers.quote_configuration_missing": "Adicione pelo menos uma configura\xE7\xE3o antes de submeter o or\xE7amento",
64731
+ "quotes.blockers.quote_configuration_subscription_update_customer": "As atualiza\xE7\xF5es de subscri\xE7\xE3o devem usar o cliente do or\xE7amento",
64732
+ "quotes.blockers.quote_configuration_multiple_configurations_disabled": "Ative as configura\xE7\xF5es m\xFAltiplas antes de atribuir um cliente filho",
64733
+ "quotes.blockers.quote_configuration_customer_not_child": "Selecione um cliente filho do cliente do or\xE7amento",
64734
+ "quotes.blockers.quote_configuration_type_mismatch": "A configura\xE7\xE3o associada n\xE3o corresponde ao tipo de configura\xE7\xE3o",
64735
+ "quotes.blockers.quote_configuration_not_draft": "Selecione uma configura\xE7\xE3o em rascunho",
64736
+ "quotes.blockers.quote_configuration_customer_mismatch": "A configura\xE7\xE3o deve pertencer ao cliente da configura\xE7\xE3o",
64737
+ "quotes.blockers.quote_configuration_currency_mismatch": "A configura\xE7\xE3o deve usar a moeda do or\xE7amento",
64738
+ "quotes.blockers.quote_configuration_invoicing_entity_mismatch": "A fatura deve usar a entidade de fatura\xE7\xE3o do or\xE7amento",
64739
+ "quotes.blockers.quote_configuration_already_linked": "A configura\xE7\xE3o j\xE1 est\xE1 associada a uma configura\xE7\xE3o de or\xE7amento",
64740
+ "quotes.blockers.quote_configuration_not_subscription_update": "Selecione uma configura\xE7\xE3o de atualiza\xE7\xE3o de subscri\xE7\xE3o",
64741
+ "quotes.blockers.quote_configuration_not_new_subscription": "Selecione uma configura\xE7\xE3o de nova subscri\xE7\xE3o",
64742
+ "quotes.blockers.quote_configuration_duplicate_subscription_update": "Uma subscri\xE7\xE3o s\xF3 pode ser atualizada uma vez num or\xE7amento",
64743
+ "quotes.blockers.quote_draft_invoice_missing": "O or\xE7amento deve ter uma fatura em rascunho para ser finalizado",
64744
+ "quotes.blockers.quote_draft_subscription_missing": "O or\xE7amento deve ter uma subscri\xE7\xE3o em rascunho para ser finalizado",
64745
+ "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"
63772
64746
  };
63773
64747
 
63774
64748
  // ../hyperline-i18n/build/language.js
@@ -63949,16 +64923,19 @@ var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
63949
64923
  "credentials",
63950
64924
  "iban",
63951
64925
  "idtoken",
64926
+ "launchticket",
63952
64927
  "privatekey",
63953
64928
  "publictoken",
63954
64929
  "refreshtoken",
64930
+ // A workflow secret's value (core/workflows secrets).
64931
+ "secretvalue",
63955
64932
  "sessiontoken",
63956
64933
  "token",
63957
64934
  "tokenid",
63958
64935
  "verificationcode"
63959
64936
  ]);
63960
64937
  var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password|passphrase|apikey)$/;
63961
- var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
64938
+ var REDACTED_KEY_CANDIDATE_PATTERN = /token|ticket|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
63962
64939
  var URL_ONLY_REDACTED_KEYS = /* @__PURE__ */ new Set(["key"]);
63963
64940
  var OAUTH_CODE_KEY = "code";
63964
64941
  var OAUTH_CODE_CONTEXT_KEYS = ["state", "grant_type"];
@@ -66720,69 +67697,6 @@ var Decimal = P.constructor = clone2(DEFAULTS);
66720
67697
  LN10 = new Decimal(LN10);
66721
67698
  PI = new Decimal(PI);
66722
67699
 
66723
- // ../hyperline-lib/build/utils/config/usStates.js
66724
- var usStates = [
66725
- "AA",
66726
- "AE",
66727
- "AK",
66728
- "AL",
66729
- "AP",
66730
- "AR",
66731
- "AS",
66732
- "AZ",
66733
- "CA",
66734
- "CO",
66735
- "CT",
66736
- "DC",
66737
- "DE",
66738
- "FL",
66739
- "GA",
66740
- "GU",
66741
- "HI",
66742
- "IA",
66743
- "ID",
66744
- "IL",
66745
- "IN",
66746
- "KS",
66747
- "KY",
66748
- "LA",
66749
- "MA",
66750
- "MD",
66751
- "ME",
66752
- "MI",
66753
- "MN",
66754
- "MO",
66755
- "MP",
66756
- "MS",
66757
- "MT",
66758
- "NC",
66759
- "ND",
66760
- "NE",
66761
- "NH",
66762
- "NJ",
66763
- "NM",
66764
- "NV",
66765
- "NY",
66766
- "OH",
66767
- "OK",
66768
- "OR",
66769
- "PA",
66770
- "PR",
66771
- "RI",
66772
- "SC",
66773
- "SD",
66774
- "TN",
66775
- "TX",
66776
- "UT",
66777
- "VA",
66778
- "VI",
66779
- "VT",
66780
- "WA",
66781
- "WI",
66782
- "WV",
66783
- "WY"
66784
- ];
66785
-
66786
67700
  // ../hyperline-lib/build/utils/dates.js
66787
67701
  var import_shared2 = __toESM(require_shared(), 1);
66788
67702
  var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
@@ -66807,7 +67721,8 @@ var dateRealignmentModeSchema = external_exports.enum([
66807
67721
  "utc_midnight_import",
66808
67722
  "dst_hour_drift",
66809
67723
  "month_start_drift",
66810
- "manual_phase_end_midnight"
67724
+ "manual_phase_end_midnight",
67725
+ "customer_timezone_change"
66811
67726
  ]).default("utc_midnight_import");
66812
67727
  var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
66813
67728
  [23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
@@ -66816,8 +67731,16 @@ var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
66816
67731
  [MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
66817
67732
  ]);
66818
67733
 
67734
+ // ../hyperline-lib/build/utils/overviewPeriods.js
67735
+ var OverviewPeriodSchema = external_exports.enum([
67736
+ "this_month",
67737
+ "last_month",
67738
+ "last_3_months"
67739
+ ]);
67740
+
66819
67741
  // ../hyperline-lib/build/utils/api/filterBuilder.js
66820
- var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
67742
+ var nullAuthorizedOperators = ["isNull", "isNotNull"];
67743
+ var baseAuthorizedOperators = ["not", ...nullAuthorizedOperators];
66821
67744
  var booleanAuthorizedOperators = [
66822
67745
  ...baseAuthorizedOperators,
66823
67746
  "equals"
@@ -66846,10 +67769,17 @@ var authorizedOperators = [
66846
67769
  ...arrayAuthorizedOperators,
66847
67770
  ...mapAuthorizedOperators
66848
67771
  ];
67772
+ var NullFilterValueSchema = BooleanSchema.or(external_exports.literal("")).optional();
66849
67773
 
66850
67774
  // ../hyperline-lib/build/http/dto/state.js
66851
- var StateSchema = external_exports.enum(usStates).openapi({
66852
- 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).",
67775
+ var StateSchema = external_exports.string().openapi({
67776
+ description: `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
67777
+ - United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
67778
+ - Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
67779
+ - Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
67780
+ - Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
67781
+
67782
+ A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`,
66853
67783
  example: "CA"
66854
67784
  });
66855
67785
 
@@ -66963,9 +67893,10 @@ var toLogRequest = (config4) => {
66963
67893
  };
66964
67894
 
66965
67895
  // ../hyperline-lib/build/httpClient/publicUrlFetch.js
67896
+ import { lookup as lookupCallback } from "node:dns";
66966
67897
  import { lookup } from "node:dns/promises";
66967
67898
  import { isIP } from "node:net";
66968
- import { Agent } from "undici";
67899
+ import { Agent, fetch as fetch2 } from "undici";
66969
67900
  var PINNED_DISPATCHER_TTL_MS = 5 * 60 * 1e3;
66970
67901
  var DEFAULT_MAX_RESPONSE_BYTES = 2 * 1024 * 1024;
66971
67902
 
@@ -66977,14 +67908,23 @@ import multer2 from "multer";
66977
67908
  // ../hyperline-lib/build/httpRouter/file.js
66978
67909
  import helmet from "helmet";
66979
67910
 
66980
- // ../hyperline-lib/build/publicApi/auth/index.js
67911
+ // ../hyperline-lib/build/publicApi/auth/apiKey.js
66981
67912
  import { randomBytes as randomBytes2, scryptSync } from "node:crypto";
66982
67913
 
67914
+ // ../hyperline-lib/build/publicApi/auth/apiKeyHashCache.js
67915
+ import { createHash as createHash4 } from "node:crypto";
67916
+ var TTL_MS = 5 * 6e4;
67917
+
66983
67918
  // ../hyperline-mcp/build/requestBuilder.js
66984
- function buildRequestConfig(path2, args, method, queryParamKeys = []) {
67919
+ function buildRequestConfig({ path: path2, args, method, queryParamKeys = [], arrayBody = false }) {
66985
67920
  const { url: url2, usedKeys } = replacePathParams(path2, args);
66986
67921
  const remaining = removeUsedKeys(args, usedKeys);
66987
- const { params, data } = separateParamsAndBody(remaining, method, queryParamKeys);
67922
+ const { params, data } = separateParamsAndBody({
67923
+ args: remaining,
67924
+ method,
67925
+ queryParamKeys,
67926
+ arrayBody
67927
+ });
66988
67928
  return { url: url2, params, data };
66989
67929
  }
66990
67930
  function replacePathParams(path2, args) {
@@ -67015,7 +67955,7 @@ var PathParamError = class extends Error {
67015
67955
  function removeUsedKeys(args, usedKeys) {
67016
67956
  return Object.fromEntries(Object.entries(args).filter(([key]) => !usedKeys.has(key)));
67017
67957
  }
67018
- function separateParamsAndBody(args, method, queryParamKeys) {
67958
+ function separateParamsAndBody({ args, method, queryParamKeys, arrayBody }) {
67019
67959
  const isBodyMethod = ["POST", "PUT", "PATCH"].includes(method);
67020
67960
  if (!isBodyMethod) {
67021
67961
  return { params: args };
@@ -67023,8 +67963,7 @@ function separateParamsAndBody(args, method, queryParamKeys) {
67023
67963
  const queryKeySet = new Set(queryParamKeys);
67024
67964
  const params = Object.fromEntries(Object.entries(args).filter(([key]) => queryKeySet.has(key)));
67025
67965
  const data = Object.fromEntries(Object.entries(args).filter(([key]) => !queryKeySet.has(key)));
67026
- const dataKeys = Object.keys(data);
67027
- if (dataKeys.length === 1 && dataKeys[0] === "items" && Array.isArray(data.items)) {
67966
+ if (arrayBody && Array.isArray(data.items)) {
67028
67967
  return { params, data: data.items };
67029
67968
  }
67030
67969
  return { params, data };
@@ -67042,6 +67981,62 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
67042
67981
  // ../hyperline-mcp/build/server/server.js
67043
67982
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
67044
67983
 
67984
+ // build/multipart.js
67985
+ import { readFile as readFile2 } from "node:fs/promises";
67986
+ import { basename, extname } from "node:path";
67987
+ var MIMETYPES_BY_EXTENSION = {
67988
+ ".csv": "text/csv",
67989
+ ".doc": "application/msword",
67990
+ ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
67991
+ ".gif": "image/gif",
67992
+ ".jpeg": "image/jpeg",
67993
+ ".jpg": "image/jpeg",
67994
+ ".json": "application/json",
67995
+ ".pdf": "application/pdf",
67996
+ ".png": "image/png",
67997
+ ".svg": "image/svg+xml",
67998
+ ".txt": "text/plain",
67999
+ ".xls": "application/vnd.ms-excel",
68000
+ ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
68001
+ ".xml": "application/xml"
68002
+ };
68003
+ function getMimetypeFromPath(filePath) {
68004
+ return MIMETYPES_BY_EXTENSION[extname(filePath).toLowerCase()] ?? "application/octet-stream";
68005
+ }
68006
+ function appendFormValue({ formData, key, value }) {
68007
+ if (value === void 0) {
68008
+ return;
68009
+ }
68010
+ if (value === null) {
68011
+ formData.append(key, "");
68012
+ return;
68013
+ }
68014
+ if (Array.isArray(value)) {
68015
+ for (const [index, item] of value.entries()) {
68016
+ appendFormValue({ formData, key: `${key}[${index}]`, value: item });
68017
+ }
68018
+ return;
68019
+ }
68020
+ if (typeof value === "object") {
68021
+ throw new Error(`--${key} cannot be sent alongside files: a multipart request only carries scalar fields.`);
68022
+ }
68023
+ formData.append(key, String(value));
68024
+ }
68025
+ async function buildMultipartBody({ data, files }) {
68026
+ const formData = new FormData();
68027
+ for (const [key, value] of Object.entries(data)) {
68028
+ appendFormValue({ formData, key, value });
68029
+ }
68030
+ const fileUploads = Object.entries(files).flatMap(([fieldName, filePaths]) => filePaths.map((filePath) => ({ fieldName, filePath })));
68031
+ const fileContents = await Promise.all(fileUploads.map(({ filePath }) => readFile2(filePath)));
68032
+ for (const [index, { fieldName, filePath }] of fileUploads.entries()) {
68033
+ formData.append(fieldName, new Blob([new Uint8Array(fileContents[index])], {
68034
+ type: getMimetypeFromPath(filePath)
68035
+ }), basename(filePath));
68036
+ }
68037
+ return formData;
68038
+ }
68039
+
67045
68040
  // build/output.js
67046
68041
  function formatOutput({ data, format: format2 }) {
67047
68042
  if (format2 === "json") {
@@ -67101,16 +68096,25 @@ function createCLIContext({ apiKey, baseUrl, outputFormat, source, companyId })
67101
68096
  return {
67102
68097
  baseUrl,
67103
68098
  outputFormat,
67104
- async execute({ method, path: path2, args, queryParamKeys = [], body, baseUrlOverride }) {
67105
- const { url: url2, params, data } = buildRequestConfig(path2, args, method, queryParamKeys);
68099
+ async execute({ method, path: path2, args, queryParamKeys = [], body, files, baseUrlOverride }) {
68100
+ const { url: url2, params, data } = buildRequestConfig({
68101
+ path: path2,
68102
+ args,
68103
+ method,
68104
+ queryParamKeys
68105
+ });
67106
68106
  const requestData = body ?? data;
67107
68107
  const hasData = Array.isArray(requestData) ? requestData.length > 0 : requestData != null && Object.keys(requestData).length > 0;
68108
+ const hasFiles = Object.values(files ?? {}).some((filePaths) => filePaths.length > 0);
67108
68109
  try {
67109
68110
  const response = await httpClient.request({
67110
68111
  method,
67111
68112
  url: url2,
67112
68113
  params,
67113
- data: hasData ? requestData : void 0,
68114
+ data: hasFiles ? await buildMultipartBody({
68115
+ data: requestData ?? {},
68116
+ files: files ?? {}
68117
+ }) : hasData ? requestData : void 0,
67114
68118
  ...baseUrlOverride ? { baseURL: baseUrlOverride } : {},
67115
68119
  headers: {
67116
68120
  "Hyperline-Source": source,