@hyperline/cli 0.1.0-build.1.b031632 → 0.1.0-build.1.b03f594

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_zod22 = require_lib();
34988
+ var import_zod24 = require_lib();
34989
34989
  var countryIds2 = ["all", ...countries.map(({ id }) => id)];
34990
- var ZodId = import_zod22.z.enum(countryIds2);
34991
- var ZodTranslationsSchemaFn = (schema) => import_zod22.z.record(import_zod22.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_zod23 = require_lib();
36291
- var ZodCurrencyId = import_zod23.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_zod23.z.string().or(import_zod23.z.number().transform((number4) => number4)).transform((number4) => number4);
36295
- var ZodNumberCurrencyPositiveValue = import_zod23.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
36296
- var ZodNumberCurrencyPositiveValueExcludingZero = import_zod23.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
36297
- var ZodCurrencyMap = import_zod23.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.",
@@ -37739,10 +37739,9 @@ Examples:
37739
37739
  baseUrlOverride: resolveIngestBaseUrl(ctx.baseUrl)
37740
37740
  });
37741
37741
  });
37742
- resource.command("send").description(`Send a single billable event.`).requiredOption("--customer-id <value>", `Customer ID or external ID`).requiredOption("--event-type <value>", `Event type`).requiredOption("--timestamp <value>", `ISO8601 timestamp`).requiredOption("--record <value>", `Event record as JSON (must include "id" key)`).option("--with-price-calculation", `Whether to calculate prices for the event`).addHelpText("after", `
37742
+ resource.command("send").description(`Send a single billable event.`).requiredOption("--customer-id <value>", `Customer ID or external ID`).requiredOption("--event-type <value>", `Event type`).requiredOption("--timestamp <value>", `ISO8601 timestamp`).requiredOption("--record <value>", `Event record as JSON (must include "id" key)`).addHelpText("after", `
37743
37743
  Examples:
37744
- hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1","duration":32}'
37745
- hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1"}' --with-price-calculation`).action(async (opts) => {
37744
+ hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1","duration":32}'`).action(async (opts) => {
37746
37745
  const ctx = resource.parent?.opts()._ctx;
37747
37746
  if (!ctx) {
37748
37747
  process.stderr.write("Error: Not authenticated\n");
@@ -37762,14 +37761,10 @@ Examples:
37762
37761
  timestamp: opts.timestamp,
37763
37762
  record: record2
37764
37763
  };
37765
- const args = {};
37766
- if (opts.withPriceCalculation !== void 0)
37767
- args.with_price_calculation = true;
37768
37764
  await ctx.execute({
37769
37765
  method: "POST",
37770
37766
  path: "/v1/events",
37771
- args,
37772
- queryParamKeys: ["with_price_calculation"],
37767
+ args: {},
37773
37768
  body,
37774
37769
  baseUrlOverride: resolveIngestBaseUrl(ctx.baseUrl)
37775
37770
  });
@@ -38285,7 +38280,7 @@ Examples:
38285
38280
  queryParamKeys: []
38286
38281
  });
38287
38282
  });
38288
- resource.command("preview-manual-journal-entry-recognition").description(`Preview revenue-recognition slices for a manual journal entry without writing data.`).requiredOption("--ledger-id <value>", `Ledger identifier.`).requiredOption("--amount <value>", `Deferred amount in minor ledger-currency units.`).requiredOption("--method <value>", `Recognition method to preview.`).option("--recognition-date <value>", `Recognition date for point-in-time recognition.`).option("--window <json>", `Service window for over-time recognition.`).option("--granularity <value>", `Slice granularity for over-time recognition.`).addHelpText("after", `
38283
+ resource.command("preview-manual-journal-entry-recognition").description(`Preview revenue-recognition slices for a manual journal entry without writing data.`).requiredOption("--ledger-id <value>", `Ledger identifier.`).requiredOption("--amount <number>", `Deferred amount in minor ledger-currency units.`).requiredOption("--method <value>", `Recognition method to preview.`).option("--recognition-date <value>", `Recognition date for point-in-time recognition.`).option("--window <json>", `Service window for over-time recognition.`).option("--granularity <value>", `Slice granularity for over-time recognition.`).addHelpText("after", `
38289
38284
  Examples:
38290
38285
  hyperline accounting-journal-entries preview-manual-journal-entry-recognition --ledger-id <ledger_id> --amount <amount> --method <method>
38291
38286
  hyperline accounting-journal-entries preview-manual-journal-entry-recognition --ledger-id <ledger_id> --amount <amount> --method <method> --recognition-date <recognition_date> --window <window>
@@ -38298,14 +38293,14 @@ Examples:
38298
38293
  const args = {};
38299
38294
  if (opts.ledgerId !== void 0)
38300
38295
  args.ledger_id = opts.ledgerId;
38301
- if (opts.amount !== void 0)
38302
- args.amount = opts.amount;
38303
38296
  if (opts.method !== void 0)
38304
38297
  args.method = opts.method;
38305
38298
  if (opts.recognitionDate !== void 0)
38306
38299
  args.recognition_date = opts.recognitionDate;
38307
38300
  if (opts.granularity !== void 0)
38308
38301
  args.granularity = opts.granularity;
38302
+ if (opts.amount !== void 0)
38303
+ args.amount = Number(opts.amount);
38309
38304
  if (opts.window !== void 0)
38310
38305
  args.window = JSON.parse(opts.window);
38311
38306
  await ctx.execute({
@@ -38414,9 +38409,10 @@ Examples:
38414
38409
  queryParamKeys: ["invoicing_entity_id"]
38415
38410
  });
38416
38411
  });
38417
- 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.`).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", `
38418
38413
  Examples:
38419
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>
38420
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) => {
38421
38417
  const ctx = resource.parent?.opts()._ctx;
38422
38418
  if (!ctx) {
@@ -38438,6 +38434,8 @@ Examples:
38438
38434
  args.currency = opts.currency;
38439
38435
  if (opts.entryNumberPattern !== void 0)
38440
38436
  args.entry_number_pattern = opts.entryNumberPattern;
38437
+ if (opts.fiscalYearEndMonth !== void 0)
38438
+ args.fiscal_year_end_month = Number(opts.fiscalYearEndMonth);
38441
38439
  if (opts.isPrimary !== void 0)
38442
38440
  args.is_primary = true;
38443
38441
  if (opts.isInactive !== void 0)
@@ -38449,7 +38447,7 @@ Examples:
38449
38447
  queryParamKeys: []
38450
38448
  });
38451
38449
  });
38452
- resource.command("update-ledger").description(`Update an existing accounting ledger.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Display name of the ledger.`).option("--code <value>", `Optional accounting code of the ledger.`).option("--description <value>", `Optional description of the ledger.`).option("--type <value>", `Type of ledger.`).option("--currency <value>", `ISO 4217 currency used by the ledger.`).option("--entry-number-pattern <value>", `Entry numbering pattern containing \`{number}\`.`).option("--next-entry-number <number>", `Next sequence number assigned to an entry.`).addHelpText("after", `
38450
+ resource.command("update-ledger").description(`Update an existing accounting ledger.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Display name of the ledger.`).option("--code <value>", `Optional accounting code of the ledger.`).option("--description <value>", `Optional description of the ledger.`).option("--type <value>", `Type of ledger.`).option("--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.`).option("--entry-number-pattern <value>", `Entry numbering pattern containing \`{number}\`.`).option("--next-entry-number <number>", `Next sequence number assigned to an entry.`).addHelpText("after", `
38453
38451
  Examples:
38454
38452
  hyperline accounting-ledgers update-ledger --id <id>
38455
38453
  hyperline accounting-ledgers update-ledger --id <id> --name <name> --code <code>
@@ -38474,6 +38472,8 @@ Examples:
38474
38472
  args.currency = opts.currency;
38475
38473
  if (opts.entryNumberPattern !== void 0)
38476
38474
  args.entry_number_pattern = opts.entryNumberPattern;
38475
+ if (opts.fiscalYearEndMonth !== void 0)
38476
+ args.fiscal_year_end_month = Number(opts.fiscalYearEndMonth);
38477
38477
  if (opts.nextEntryNumber !== void 0)
38478
38478
  args.next_entry_number = Number(opts.nextEntryNumber);
38479
38479
  await ctx.execute({
@@ -38794,7 +38794,7 @@ Examples:
38794
38794
  queryParamKeys: []
38795
38795
  });
38796
38796
  });
38797
- resource.command("reshape-rev-rec-schedule").description(`Recognize an amount now and optionally spread the remainder over a new window.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <value>", `Amount to recognize immediately in ledger currency.`).option("--window <json>", `Window over which to spread the remaining amount.`).requiredOption("--reason-code <value>", `Stable reason code for the adjustment.`).option("--reason-detail <value>", `Required explanation when reason_code is \`other\`.`).addHelpText("after", `
38797
+ resource.command("reshape-rev-rec-schedule").description(`Recognize an amount now and optionally spread the remainder over a new window.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <number>", `Amount to recognize immediately in ledger currency. Expressed in currency's smallest unit.`).option("--window <json>", `Window over which to spread the remaining amount.`).requiredOption("--reason-code <value>", `Stable reason code for the adjustment.`).option("--reason-detail <value>", `Required explanation when reason_code is \`other\`.`).addHelpText("after", `
38798
38798
  Examples:
38799
38799
  hyperline accounting-revenue-recognition reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --reason-code <reason_code>
38800
38800
  hyperline accounting-revenue-recognition reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --reason-code <reason_code> --window <window> --reason-detail <reason_detail>
@@ -38807,12 +38807,12 @@ Examples:
38807
38807
  const args = {};
38808
38808
  if (opts.scheduleId !== void 0)
38809
38809
  args.schedule_id = opts.scheduleId;
38810
- if (opts.recognizeNowAmount !== void 0)
38811
- args.recognize_now_amount = opts.recognizeNowAmount;
38812
38810
  if (opts.reasonCode !== void 0)
38813
38811
  args.reason_code = opts.reasonCode;
38814
38812
  if (opts.reasonDetail !== void 0)
38815
38813
  args.reason_detail = opts.reasonDetail;
38814
+ if (opts.recognizeNowAmount !== void 0)
38815
+ args.recognize_now_amount = Number(opts.recognizeNowAmount);
38816
38816
  if (opts.window !== void 0)
38817
38817
  args.window = JSON.parse(opts.window);
38818
38818
  await ctx.execute({
@@ -38822,7 +38822,7 @@ Examples:
38822
38822
  queryParamKeys: []
38823
38823
  });
38824
38824
  });
38825
- resource.command("preview-reshape-rev-rec-schedule").description(`Preview the exact reshape plan without writing data.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <value>", `Amount to recognize immediately in ledger currency.`).option("--window <json>", `Window over which to spread the remaining amount.`).addHelpText("after", `
38825
+ resource.command("preview-reshape-rev-rec-schedule").description(`Preview the exact reshape plan without writing data.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <number>", `Amount to recognize immediately in ledger currency. Expressed in currency's smallest unit.`).option("--window <json>", `Window over which to spread the remaining amount.`).addHelpText("after", `
38826
38826
  Examples:
38827
38827
  hyperline accounting-revenue-recognition preview-reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount>
38828
38828
  hyperline accounting-revenue-recognition preview-reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --window <window>
@@ -38836,7 +38836,7 @@ Examples:
38836
38836
  if (opts.scheduleId !== void 0)
38837
38837
  args.schedule_id = opts.scheduleId;
38838
38838
  if (opts.recognizeNowAmount !== void 0)
38839
- args.recognize_now_amount = opts.recognizeNowAmount;
38839
+ args.recognize_now_amount = Number(opts.recognizeNowAmount);
38840
38840
  if (opts.window !== void 0)
38841
38841
  args.window = JSON.parse(opts.window);
38842
38842
  await ctx.execute({
@@ -38869,7 +38869,7 @@ Examples:
38869
38869
  // build/commands/generated/accounting-rules.js
38870
38870
  function registerAccounting_RulesCommands(parent) {
38871
38871
  const resource = parent.command("accounting-rules").description("Manage accounting > rules");
38872
- 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", `
38872
+ 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", `
38873
38873
  Examples:
38874
38874
  hyperline accounting-rules list
38875
38875
  hyperline accounting-rules list --take <take> --ledger-id <ledger_id>`).action(async (opts) => {
@@ -38883,10 +38883,6 @@ Examples:
38883
38883
  args.ledger_id = opts.ledgerId;
38884
38884
  if (opts["ledgerId.not"] !== void 0)
38885
38885
  args.ledger_id__not = opts["ledgerId.not"];
38886
- if (opts["ledgerId.isNull"] !== void 0)
38887
- args.ledger_id__isNull = opts["ledgerId.isNull"];
38888
- if (opts["ledgerId.isNotNull"] !== void 0)
38889
- args.ledger_id__isNotNull = opts["ledgerId.isNotNull"];
38890
38886
  if (opts["ledgerId.equals"] !== void 0)
38891
38887
  args.ledger_id__equals = opts["ledgerId.equals"];
38892
38888
  if (opts["ledgerId.contains"] !== void 0)
@@ -38899,10 +38895,6 @@ Examples:
38899
38895
  args.category = opts.category;
38900
38896
  if (opts["category.not"] !== void 0)
38901
38897
  args.category__not = opts["category.not"];
38902
- if (opts["category.isNull"] !== void 0)
38903
- args.category__isNull = opts["category.isNull"];
38904
- if (opts["category.isNotNull"] !== void 0)
38905
- args.category__isNotNull = opts["category.isNotNull"];
38906
38898
  if (opts["category.equals"] !== void 0)
38907
38899
  args.category__equals = opts["category.equals"];
38908
38900
  if (opts["category.contains"] !== void 0)
@@ -38924,16 +38916,12 @@ Examples:
38924
38916
  "skip",
38925
38917
  "ledger_id",
38926
38918
  "ledger_id__not",
38927
- "ledger_id__isNull",
38928
- "ledger_id__isNotNull",
38929
38919
  "ledger_id__equals",
38930
38920
  "ledger_id__contains",
38931
38921
  "ledger_id__startsWith",
38932
38922
  "ledger_id__endWith",
38933
38923
  "category",
38934
38924
  "category__not",
38935
- "category__isNull",
38936
- "category__isNotNull",
38937
38925
  "category__equals",
38938
38926
  "category__contains",
38939
38927
  "category__startsWith",
@@ -39013,7 +39001,7 @@ Examples:
39013
39001
  queryParamKeys: []
39014
39002
  });
39015
39003
  });
39016
- resource.command("create").description(`Create a new accounting rule for account code routing or journal posting.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Use an asset account for doubtful-receivable reclassification or an expense account for direct write-off.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
39004
+ resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
39017
39005
  Examples:
39018
39006
  hyperline accounting-rules create --category <category> --priority <priority>
39019
39007
  hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
@@ -39052,8 +39040,24 @@ Examples:
39052
39040
  args.output_tax_ledger_account_id = opts.outputTaxLedgerAccountId;
39053
39041
  if (opts.uncollectibleDebitLedgerAccountId !== void 0)
39054
39042
  args.uncollectible_debit_ledger_account_id = opts.uncollectibleDebitLedgerAccountId;
39043
+ if (opts.allowanceForDoubtfulAccountsId !== void 0)
39044
+ args.allowance_for_doubtful_accounts_id = opts.allowanceForDoubtfulAccountsId;
39045
+ if (opts.providerFeesExpenseLedgerAccountId !== void 0)
39046
+ args.provider_fees_expense_ledger_account_id = opts.providerFeesExpenseLedgerAccountId;
39047
+ if (opts.paymentProcessingFeesExpenseLedgerAccountId !== void 0)
39048
+ args.payment_processing_fees_expense_ledger_account_id = opts.paymentProcessingFeesExpenseLedgerAccountId;
39049
+ if (opts.paymentProcessingFeesRevenueLedgerAccountId !== void 0)
39050
+ args.payment_processing_fees_revenue_ledger_account_id = opts.paymentProcessingFeesRevenueLedgerAccountId;
39055
39051
  if (opts.customerCreditsLedgerAccountId !== void 0)
39056
39052
  args.customer_credits_ledger_account_id = opts.customerCreditsLedgerAccountId;
39053
+ if (opts.revRecMethod !== void 0)
39054
+ args.rev_rec_method = opts.revRecMethod;
39055
+ if (opts.revRecGranularity !== void 0)
39056
+ args.rev_rec_granularity = opts.revRecGranularity;
39057
+ if (opts.revRecPointInTimeBasis !== void 0)
39058
+ args.rev_rec_point_in_time_basis = opts.revRecPointInTimeBasis;
39059
+ if (opts.discountRecognitionMethod !== void 0)
39060
+ args.discount_recognition_method = opts.discountRecognitionMethod;
39057
39061
  if (opts.journalId !== void 0)
39058
39062
  args.journal_id = opts.journalId;
39059
39063
  if (opts.entityType !== void 0)
@@ -39072,12 +39076,22 @@ Examples:
39072
39076
  args.currencies = JSON.parse(opts.currencies);
39073
39077
  if (opts.countries !== void 0)
39074
39078
  args.countries = JSON.parse(opts.countries);
39079
+ if (opts.taxSchemes !== void 0)
39080
+ args.tax_schemes = JSON.parse(opts.taxSchemes);
39081
+ if (opts.taxTerritories !== void 0)
39082
+ args.tax_territories = JSON.parse(opts.taxTerritories);
39083
+ if (opts.taxRateClasses !== void 0)
39084
+ args.tax_rate_classes = JSON.parse(opts.taxRateClasses);
39075
39085
  if (opts.couponIds !== void 0)
39076
39086
  args.coupon_ids = JSON.parse(opts.couponIds);
39077
39087
  if (opts.clientProviderIds !== void 0)
39078
39088
  args.client_provider_ids = JSON.parse(opts.clientProviderIds);
39079
39089
  if (opts.paymentMethodTypes !== void 0)
39080
39090
  args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
39091
+ if (opts.bankAccountIds !== void 0)
39092
+ args.bank_account_ids = JSON.parse(opts.bankAccountIds);
39093
+ if (opts.invoiceTypes !== void 0)
39094
+ args.invoice_types = JSON.parse(opts.invoiceTypes);
39081
39095
  if (opts.customPropertyFilters !== void 0)
39082
39096
  args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
39083
39097
  await ctx.execute({
@@ -39087,7 +39101,7 @@ Examples:
39087
39101
  queryParamKeys: []
39088
39102
  });
39089
39103
  });
39090
- resource.command("update").description(`Update an existing accounting rule.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Use an asset account for doubtful-receivable reclassification or an expense account for direct write-off.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
39104
+ resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
39091
39105
  Examples:
39092
39106
  hyperline accounting-rules update --id <id>
39093
39107
  hyperline accounting-rules update --id <id> --name <name> --category <category>
@@ -39126,8 +39140,24 @@ Examples:
39126
39140
  args.output_tax_ledger_account_id = opts.outputTaxLedgerAccountId;
39127
39141
  if (opts.uncollectibleDebitLedgerAccountId !== void 0)
39128
39142
  args.uncollectible_debit_ledger_account_id = opts.uncollectibleDebitLedgerAccountId;
39143
+ if (opts.allowanceForDoubtfulAccountsId !== void 0)
39144
+ args.allowance_for_doubtful_accounts_id = opts.allowanceForDoubtfulAccountsId;
39145
+ if (opts.providerFeesExpenseLedgerAccountId !== void 0)
39146
+ args.provider_fees_expense_ledger_account_id = opts.providerFeesExpenseLedgerAccountId;
39147
+ if (opts.paymentProcessingFeesExpenseLedgerAccountId !== void 0)
39148
+ args.payment_processing_fees_expense_ledger_account_id = opts.paymentProcessingFeesExpenseLedgerAccountId;
39149
+ if (opts.paymentProcessingFeesRevenueLedgerAccountId !== void 0)
39150
+ args.payment_processing_fees_revenue_ledger_account_id = opts.paymentProcessingFeesRevenueLedgerAccountId;
39129
39151
  if (opts.customerCreditsLedgerAccountId !== void 0)
39130
39152
  args.customer_credits_ledger_account_id = opts.customerCreditsLedgerAccountId;
39153
+ if (opts.revRecMethod !== void 0)
39154
+ args.rev_rec_method = opts.revRecMethod;
39155
+ if (opts.revRecGranularity !== void 0)
39156
+ args.rev_rec_granularity = opts.revRecGranularity;
39157
+ if (opts.revRecPointInTimeBasis !== void 0)
39158
+ args.rev_rec_point_in_time_basis = opts.revRecPointInTimeBasis;
39159
+ if (opts.discountRecognitionMethod !== void 0)
39160
+ args.discount_recognition_method = opts.discountRecognitionMethod;
39131
39161
  if (opts.journalId !== void 0)
39132
39162
  args.journal_id = opts.journalId;
39133
39163
  if (opts.entityType !== void 0)
@@ -39146,12 +39176,22 @@ Examples:
39146
39176
  args.currencies = JSON.parse(opts.currencies);
39147
39177
  if (opts.countries !== void 0)
39148
39178
  args.countries = JSON.parse(opts.countries);
39179
+ if (opts.taxSchemes !== void 0)
39180
+ args.tax_schemes = JSON.parse(opts.taxSchemes);
39181
+ if (opts.taxTerritories !== void 0)
39182
+ args.tax_territories = JSON.parse(opts.taxTerritories);
39183
+ if (opts.taxRateClasses !== void 0)
39184
+ args.tax_rate_classes = JSON.parse(opts.taxRateClasses);
39149
39185
  if (opts.couponIds !== void 0)
39150
39186
  args.coupon_ids = JSON.parse(opts.couponIds);
39151
39187
  if (opts.clientProviderIds !== void 0)
39152
39188
  args.client_provider_ids = JSON.parse(opts.clientProviderIds);
39153
39189
  if (opts.paymentMethodTypes !== void 0)
39154
39190
  args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
39191
+ if (opts.bankAccountIds !== void 0)
39192
+ args.bank_account_ids = JSON.parse(opts.bankAccountIds);
39193
+ if (opts.invoiceTypes !== void 0)
39194
+ args.invoice_types = JSON.parse(opts.invoiceTypes);
39155
39195
  if (opts.customPropertyFilters !== void 0)
39156
39196
  args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
39157
39197
  await ctx.execute({
@@ -39187,7 +39227,7 @@ Examples:
39187
39227
  queryParamKeys: []
39188
39228
  });
39189
39229
  });
39190
- resource.command("resolve").description(`Preview which account codes would be resolved for a given context.`).requiredOption("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).option("--product-id <value>", `Product ID to resolve against.`).option("--product-type <value>", `Product type to resolve against.`).option("--currency <value>", `Currency code to resolve against.`).option("--country <value>", `Country code to resolve against.`).option("--customer-id <value>", `Customer ID to resolve against.`).option("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-properties <json>", `Invoice custom property values to resolve against, keyed by custom property slug. Unknown slugs and null values are ignored. Rules with custom property filters never match without them.`).addHelpText("after", `
39230
+ resource.command("resolve").description(`Preview which account codes would be resolved for a given context.`).requiredOption("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).option("--product-id <value>", `Product ID to resolve against.`).option("--product-type <value>", `Product type to resolve against.`).option("--currency <value>", `Currency code to resolve against.`).option("--country <value>", `Country code to resolve against.`).option("--tax-scheme <value>", `Tax scheme to resolve against.`).option("--tax-territory <value>", `Tax territory country code to resolve against.`).option("--tax-rate-class <value>", `Tax rate class to resolve against.`).option("--customer-id <value>", `Customer ID to resolve against.`).option("--coupon-id <value>", `Coupon ID to resolve against.`).option("--client-provider-id <value>", `Client provider ID to resolve against.`).option("--payment-method-type <value>", `Payment method type to resolve against.`).option("--bank-account-id <value>", `Bank account ID to resolve against.`).option("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-properties <json>", `Invoice custom property values to resolve against, keyed by custom property slug. Unknown slugs and null values are ignored. Rules with custom property filters never match without them.`).addHelpText("after", `
39191
39231
  Examples:
39192
39232
  hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category>
39193
39233
  hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category> --product-id <product_id> --product-type <product_type>
@@ -39210,8 +39250,22 @@ Examples:
39210
39250
  args.currency = opts.currency;
39211
39251
  if (opts.country !== void 0)
39212
39252
  args.country = opts.country;
39253
+ if (opts.taxScheme !== void 0)
39254
+ args.tax_scheme = opts.taxScheme;
39255
+ if (opts.taxTerritory !== void 0)
39256
+ args.tax_territory = opts.taxTerritory;
39257
+ if (opts.taxRateClass !== void 0)
39258
+ args.tax_rate_class = opts.taxRateClass;
39213
39259
  if (opts.customerId !== void 0)
39214
39260
  args.customer_id = opts.customerId;
39261
+ if (opts.couponId !== void 0)
39262
+ args.coupon_id = opts.couponId;
39263
+ if (opts.clientProviderId !== void 0)
39264
+ args.client_provider_id = opts.clientProviderId;
39265
+ if (opts.paymentMethodType !== void 0)
39266
+ args.payment_method_type = opts.paymentMethodType;
39267
+ if (opts.bankAccountId !== void 0)
39268
+ args.bank_account_id = opts.bankAccountId;
39215
39269
  if (opts.invoiceType !== void 0)
39216
39270
  args.invoice_type = opts.invoiceType;
39217
39271
  if (opts.intervalPeriod !== void 0)
@@ -40444,6 +40498,71 @@ Examples:
40444
40498
  });
40445
40499
  }
40446
40500
 
40501
+ // build/commands/generated/ai-monitoring.js
40502
+ function registerAi_MonitoringCommands(parent) {
40503
+ const resource = parent.command("ai-monitoring").description("Manage ai > monitoring");
40504
+ 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", `
40505
+ Examples:
40506
+ hyperline ai-monitoring list-monitoring-analyses
40507
+ hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
40508
+ const ctx = resource.parent?.opts()._ctx;
40509
+ if (!ctx) {
40510
+ process.stderr.write("Error: Not authenticated\n");
40511
+ process.exit(1);
40512
+ }
40513
+ const args = {};
40514
+ if (opts.cursor !== void 0)
40515
+ args.cursor = opts.cursor;
40516
+ if (opts.includeTotal !== void 0)
40517
+ args.include_total = opts.includeTotal;
40518
+ if (opts.customerId !== void 0)
40519
+ args.customer_id = opts.customerId;
40520
+ if (opts["customerId.in"] !== void 0)
40521
+ args.customer_id__in = opts["customerId.in"];
40522
+ if (opts.status !== void 0)
40523
+ args.status = opts.status;
40524
+ if (opts["createdAt.gte"] !== void 0)
40525
+ args.created_at__gte = opts["createdAt.gte"];
40526
+ if (opts["createdAt.lte"] !== void 0)
40527
+ args.created_at__lte = opts["createdAt.lte"];
40528
+ if (opts.limit !== void 0)
40529
+ args.limit = Number(opts.limit);
40530
+ await ctx.execute({
40531
+ method: "GET",
40532
+ path: "/v1/agents/monitoring/analyses",
40533
+ args,
40534
+ queryParamKeys: [
40535
+ "limit",
40536
+ "cursor",
40537
+ "include_total",
40538
+ "customer_id",
40539
+ "customer_id__in",
40540
+ "status",
40541
+ "created_at__gte",
40542
+ "created_at__lte"
40543
+ ]
40544
+ });
40545
+ });
40546
+ resource.command("get-monitoring-analysis").description(`Get one customer health analysis by ID: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
40547
+ Examples:
40548
+ hyperline ai-monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
40549
+ const ctx = resource.parent?.opts()._ctx;
40550
+ if (!ctx) {
40551
+ process.stderr.write("Error: Not authenticated\n");
40552
+ process.exit(1);
40553
+ }
40554
+ const args = {};
40555
+ if (opts.id !== void 0)
40556
+ args.id = opts.id;
40557
+ await ctx.execute({
40558
+ method: "GET",
40559
+ path: "/v1/agents/monitoring/analyses/{id}",
40560
+ args,
40561
+ queryParamKeys: []
40562
+ });
40563
+ });
40564
+ }
40565
+
40447
40566
  // build/commands/generated/analytics.js
40448
40567
  function registerAnalyticsCommands(parent) {
40449
40568
  const resource = parent.command("analytics").description("Manage analytics");
@@ -40603,7 +40722,7 @@ Examples:
40603
40722
  queryParamKeys: ["take", "skip"]
40604
40723
  });
40605
40724
  });
40606
- 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>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).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", `
40725
+ 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", `
40607
40726
  Examples:
40608
40727
  hyperline coupons create --name <name> --type <type>
40609
40728
  hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
@@ -40620,6 +40739,8 @@ Examples:
40620
40739
  args.description = opts.description;
40621
40740
  if (opts.expirationDate !== void 0)
40622
40741
  args.expiration_date = opts.expirationDate;
40742
+ if (opts.productScope !== void 0)
40743
+ args.product_scope = opts.productScope;
40623
40744
  if (opts.repeat !== void 0)
40624
40745
  args.repeat = opts.repeat;
40625
40746
  if (opts.type !== void 0)
@@ -40663,7 +40784,7 @@ Examples:
40663
40784
  queryParamKeys: []
40664
40785
  });
40665
40786
  });
40666
- 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>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).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", `
40787
+ 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", `
40667
40788
  Examples:
40668
40789
  hyperline coupons update --id <id> --name <name> --type <type>
40669
40790
  hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
@@ -40682,6 +40803,8 @@ Examples:
40682
40803
  args.description = opts.description;
40683
40804
  if (opts.expirationDate !== void 0)
40684
40805
  args.expiration_date = opts.expirationDate;
40806
+ if (opts.productScope !== void 0)
40807
+ args.product_scope = opts.productScope;
40685
40808
  if (opts.repeat !== void 0)
40686
40809
  args.repeat = opts.repeat;
40687
40810
  if (opts.type !== void 0)
@@ -40738,7 +40861,7 @@ Examples:
40738
40861
  // build/commands/generated/coupons-promotion-codes.js
40739
40862
  function registerCoupons_Promotion_CodesCommands(parent) {
40740
40863
  const resource = parent.command("coupons-promotion-codes").description("Manage coupons > promotion codes");
40741
- 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", `
40864
+ 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", `
40742
40865
  Examples:
40743
40866
  hyperline coupons-promotion-codes list-promotion-codes
40744
40867
  hyperline coupons-promotion-codes list-promotion-codes --take <take> --coupon-id <coupon_id>`).action(async (opts) => {
@@ -40752,10 +40875,6 @@ Examples:
40752
40875
  args.coupon_id = opts.couponId;
40753
40876
  if (opts["couponId.not"] !== void 0)
40754
40877
  args.coupon_id__not = opts["couponId.not"];
40755
- if (opts["couponId.isNull"] !== void 0)
40756
- args.coupon_id__isNull = opts["couponId.isNull"];
40757
- if (opts["couponId.isNotNull"] !== void 0)
40758
- args.coupon_id__isNotNull = opts["couponId.isNotNull"];
40759
40878
  if (opts["couponId.equals"] !== void 0)
40760
40879
  args.coupon_id__equals = opts["couponId.equals"];
40761
40880
  if (opts["couponId.contains"] !== void 0)
@@ -40777,8 +40896,6 @@ Examples:
40777
40896
  "skip",
40778
40897
  "coupon_id",
40779
40898
  "coupon_id__not",
40780
- "coupon_id__isNull",
40781
- "coupon_id__isNotNull",
40782
40899
  "coupon_id__equals",
40783
40900
  "coupon_id__contains",
40784
40901
  "coupon_id__startsWith",
@@ -41032,7 +41149,15 @@ Examples:
41032
41149
  // build/commands/generated/customers.js
41033
41150
  function registerCustomersCommands(parent) {
41034
41151
  const resource = parent.command("customers").description("Manage customers");
41035
- resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, 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("--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", `
41152
+ 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>", `
41153
+ Verification status of the customer tax ID.
41154
+
41155
+ - \`valid\`: Tax ID has been verified and is valid.
41156
+ - \`invalid\`: Tax ID has been verified and is invalid.
41157
+ - \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
41158
+ - \`unverified\`: Tax ID has not been verified yet.
41159
+ - \`unsupported\`: Tax ID verification for this type not supported yet.
41160
+ `).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--country <value>", `country`).option("--country.not <value>", `country__not`).option("--country.equals <value>", `country__equals`).option("--country.contains <value>", `country__contains`).option("--country.starts-with <value>", `country__startsWith`).option("--country.end-with <value>", `country__endWith`).option("--country.is-null <value>", `country__isNull`).option("--country.is-not-null <value>", `country__isNotNull`).option("--external-id <value>", `external_id`).option("--external-id.not <value>", `external_id__not`).option("--external-id.equals <value>", `external_id__equals`).option("--external-id.contains <value>", `external_id__contains`).option("--external-id.starts-with <value>", `external_id__startsWith`).option("--external-id.end-with <value>", `external_id__endWith`).option("--external-id.is-null <value>", `external_id__isNull`).option("--external-id.is-not-null <value>", `external_id__isNotNull`).option("--billing-email <value>", `billing_email`).option("--billing-email.not <value>", `billing_email__not`).option("--billing-email.equals <value>", `billing_email__equals`).option("--billing-email.contains <value>", `billing_email__contains`).option("--billing-email.starts-with <value>", `billing_email__startsWith`).option("--billing-email.end-with <value>", `billing_email__endWith`).option("--billing-email.is-null <value>", `billing_email__isNull`).option("--billing-email.is-not-null <value>", `billing_email__isNotNull`).option("--search <value>", `search`).option("--tax-id <value>", `tax_id`).option("--tax-id.not <value>", `tax_id__not`).option("--tax-id.equals <value>", `tax_id__equals`).option("--tax-id.contains <value>", `tax_id__contains`).option("--tax-id.starts-with <value>", `tax_id__startsWith`).option("--tax-id.end-with <value>", `tax_id__endWith`).option("--tax-id.is-null <value>", `tax_id__isNull`).option("--tax-id.is-not-null <value>", `tax_id__isNotNull`).option("--subscription-status <value>", `subscription_status`).option("--subscription-status.in <value>", `subscription_status__in`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--segment-id <value>", `segment_id`).option("--custom-properties <value>", `custom_properties`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-type.in <value>", `payment_method_type__in`).option("--integration-entity-id <value>", `integration_entity_id`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
41036
41161
  Examples:
41037
41162
  hyperline customers list
41038
41163
  hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -41050,14 +41175,12 @@ Examples:
41050
41175
  args.order = opts.order;
41051
41176
  if (opts.sort !== void 0)
41052
41177
  args.sort = opts.sort;
41178
+ if (opts.taxIdStatus !== void 0)
41179
+ args.tax_id_status = opts.taxIdStatus;
41053
41180
  if (opts.name !== void 0)
41054
41181
  args.name = opts.name;
41055
41182
  if (opts["name.not"] !== void 0)
41056
41183
  args.name__not = opts["name.not"];
41057
- if (opts["name.isNull"] !== void 0)
41058
- args.name__isNull = opts["name.isNull"];
41059
- if (opts["name.isNotNull"] !== void 0)
41060
- args.name__isNotNull = opts["name.isNotNull"];
41061
41184
  if (opts["name.equals"] !== void 0)
41062
41185
  args.name__equals = opts["name.equals"];
41063
41186
  if (opts["name.contains"] !== void 0)
@@ -41078,10 +41201,6 @@ Examples:
41078
41201
  args.currency = opts.currency;
41079
41202
  if (opts["currency.not"] !== void 0)
41080
41203
  args.currency__not = opts["currency.not"];
41081
- if (opts["currency.isNull"] !== void 0)
41082
- args.currency__isNull = opts["currency.isNull"];
41083
- if (opts["currency.isNotNull"] !== void 0)
41084
- args.currency__isNotNull = opts["currency.isNotNull"];
41085
41204
  if (opts["currency.equals"] !== void 0)
41086
41205
  args.currency__equals = opts["currency.equals"];
41087
41206
  if (opts["currency.contains"] !== void 0)
@@ -41090,14 +41209,14 @@ Examples:
41090
41209
  args.currency__startsWith = opts["currency.startsWith"];
41091
41210
  if (opts["currency.endWith"] !== void 0)
41092
41211
  args.currency__endWith = opts["currency.endWith"];
41212
+ if (opts["currency.isNull"] !== void 0)
41213
+ args.currency__isNull = opts["currency.isNull"];
41214
+ if (opts["currency.isNotNull"] !== void 0)
41215
+ args.currency__isNotNull = opts["currency.isNotNull"];
41093
41216
  if (opts.country !== void 0)
41094
41217
  args.country = opts.country;
41095
41218
  if (opts["country.not"] !== void 0)
41096
41219
  args.country__not = opts["country.not"];
41097
- if (opts["country.isNull"] !== void 0)
41098
- args.country__isNull = opts["country.isNull"];
41099
- if (opts["country.isNotNull"] !== void 0)
41100
- args.country__isNotNull = opts["country.isNotNull"];
41101
41220
  if (opts["country.equals"] !== void 0)
41102
41221
  args.country__equals = opts["country.equals"];
41103
41222
  if (opts["country.contains"] !== void 0)
@@ -41106,14 +41225,14 @@ Examples:
41106
41225
  args.country__startsWith = opts["country.startsWith"];
41107
41226
  if (opts["country.endWith"] !== void 0)
41108
41227
  args.country__endWith = opts["country.endWith"];
41228
+ if (opts["country.isNull"] !== void 0)
41229
+ args.country__isNull = opts["country.isNull"];
41230
+ if (opts["country.isNotNull"] !== void 0)
41231
+ args.country__isNotNull = opts["country.isNotNull"];
41109
41232
  if (opts.externalId !== void 0)
41110
41233
  args.external_id = opts.externalId;
41111
41234
  if (opts["externalId.not"] !== void 0)
41112
41235
  args.external_id__not = opts["externalId.not"];
41113
- if (opts["externalId.isNull"] !== void 0)
41114
- args.external_id__isNull = opts["externalId.isNull"];
41115
- if (opts["externalId.isNotNull"] !== void 0)
41116
- args.external_id__isNotNull = opts["externalId.isNotNull"];
41117
41236
  if (opts["externalId.equals"] !== void 0)
41118
41237
  args.external_id__equals = opts["externalId.equals"];
41119
41238
  if (opts["externalId.contains"] !== void 0)
@@ -41122,14 +41241,14 @@ Examples:
41122
41241
  args.external_id__startsWith = opts["externalId.startsWith"];
41123
41242
  if (opts["externalId.endWith"] !== void 0)
41124
41243
  args.external_id__endWith = opts["externalId.endWith"];
41244
+ if (opts["externalId.isNull"] !== void 0)
41245
+ args.external_id__isNull = opts["externalId.isNull"];
41246
+ if (opts["externalId.isNotNull"] !== void 0)
41247
+ args.external_id__isNotNull = opts["externalId.isNotNull"];
41125
41248
  if (opts.billingEmail !== void 0)
41126
41249
  args.billing_email = opts.billingEmail;
41127
41250
  if (opts["billingEmail.not"] !== void 0)
41128
41251
  args.billing_email__not = opts["billingEmail.not"];
41129
- if (opts["billingEmail.isNull"] !== void 0)
41130
- args.billing_email__isNull = opts["billingEmail.isNull"];
41131
- if (opts["billingEmail.isNotNull"] !== void 0)
41132
- args.billing_email__isNotNull = opts["billingEmail.isNotNull"];
41133
41252
  if (opts["billingEmail.equals"] !== void 0)
41134
41253
  args.billing_email__equals = opts["billingEmail.equals"];
41135
41254
  if (opts["billingEmail.contains"] !== void 0)
@@ -41138,16 +41257,16 @@ Examples:
41138
41257
  args.billing_email__startsWith = opts["billingEmail.startsWith"];
41139
41258
  if (opts["billingEmail.endWith"] !== void 0)
41140
41259
  args.billing_email__endWith = opts["billingEmail.endWith"];
41260
+ if (opts["billingEmail.isNull"] !== void 0)
41261
+ args.billing_email__isNull = opts["billingEmail.isNull"];
41262
+ if (opts["billingEmail.isNotNull"] !== void 0)
41263
+ args.billing_email__isNotNull = opts["billingEmail.isNotNull"];
41141
41264
  if (opts.search !== void 0)
41142
41265
  args.search = opts.search;
41143
41266
  if (opts.taxId !== void 0)
41144
41267
  args.tax_id = opts.taxId;
41145
41268
  if (opts["taxId.not"] !== void 0)
41146
41269
  args.tax_id__not = opts["taxId.not"];
41147
- if (opts["taxId.isNull"] !== void 0)
41148
- args.tax_id__isNull = opts["taxId.isNull"];
41149
- if (opts["taxId.isNotNull"] !== void 0)
41150
- args.tax_id__isNotNull = opts["taxId.isNotNull"];
41151
41270
  if (opts["taxId.equals"] !== void 0)
41152
41271
  args.tax_id__equals = opts["taxId.equals"];
41153
41272
  if (opts["taxId.contains"] !== void 0)
@@ -41156,6 +41275,10 @@ Examples:
41156
41275
  args.tax_id__startsWith = opts["taxId.startsWith"];
41157
41276
  if (opts["taxId.endWith"] !== void 0)
41158
41277
  args.tax_id__endWith = opts["taxId.endWith"];
41278
+ if (opts["taxId.isNull"] !== void 0)
41279
+ args.tax_id__isNull = opts["taxId.isNull"];
41280
+ if (opts["taxId.isNotNull"] !== void 0)
41281
+ args.tax_id__isNotNull = opts["taxId.isNotNull"];
41159
41282
  if (opts.subscriptionStatus !== void 0)
41160
41283
  args.subscription_status = opts.subscriptionStatus;
41161
41284
  if (opts["subscriptionStatus.in"] !== void 0)
@@ -41164,10 +41287,6 @@ Examples:
41164
41287
  args.invoicing_entity_id = opts.invoicingEntityId;
41165
41288
  if (opts["invoicingEntityId.not"] !== void 0)
41166
41289
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
41167
- if (opts["invoicingEntityId.isNull"] !== void 0)
41168
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
41169
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
41170
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
41171
41290
  if (opts["invoicingEntityId.equals"] !== void 0)
41172
41291
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
41173
41292
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -41190,10 +41309,6 @@ Examples:
41190
41309
  args.created_at = opts.createdAt;
41191
41310
  if (opts["createdAt.not"] !== void 0)
41192
41311
  args.created_at__not = opts["createdAt.not"];
41193
- if (opts["createdAt.isNull"] !== void 0)
41194
- args.created_at__isNull = opts["createdAt.isNull"];
41195
- if (opts["createdAt.isNotNull"] !== void 0)
41196
- args.created_at__isNotNull = opts["createdAt.isNotNull"];
41197
41312
  if (opts["createdAt.equals"] !== void 0)
41198
41313
  args.created_at__equals = opts["createdAt.equals"];
41199
41314
  if (opts["createdAt.lt"] !== void 0)
@@ -41208,10 +41323,6 @@ Examples:
41208
41323
  args.updated_at = opts.updatedAt;
41209
41324
  if (opts["updatedAt.not"] !== void 0)
41210
41325
  args.updated_at__not = opts["updatedAt.not"];
41211
- if (opts["updatedAt.isNull"] !== void 0)
41212
- args.updated_at__isNull = opts["updatedAt.isNull"];
41213
- if (opts["updatedAt.isNotNull"] !== void 0)
41214
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
41215
41326
  if (opts["updatedAt.equals"] !== void 0)
41216
41327
  args.updated_at__equals = opts["updatedAt.equals"];
41217
41328
  if (opts["updatedAt.lt"] !== void 0)
@@ -41234,10 +41345,9 @@ Examples:
41234
41345
  "include_total",
41235
41346
  "order",
41236
41347
  "sort",
41348
+ "tax_id_status",
41237
41349
  "name",
41238
41350
  "name__not",
41239
- "name__isNull",
41240
- "name__isNotNull",
41241
41351
  "name__equals",
41242
41352
  "name__contains",
41243
41353
  "name__startsWith",
@@ -41248,51 +41358,49 @@ Examples:
41248
41358
  "status__in",
41249
41359
  "currency",
41250
41360
  "currency__not",
41251
- "currency__isNull",
41252
- "currency__isNotNull",
41253
41361
  "currency__equals",
41254
41362
  "currency__contains",
41255
41363
  "currency__startsWith",
41256
41364
  "currency__endWith",
41365
+ "currency__isNull",
41366
+ "currency__isNotNull",
41257
41367
  "country",
41258
41368
  "country__not",
41259
- "country__isNull",
41260
- "country__isNotNull",
41261
41369
  "country__equals",
41262
41370
  "country__contains",
41263
41371
  "country__startsWith",
41264
41372
  "country__endWith",
41373
+ "country__isNull",
41374
+ "country__isNotNull",
41265
41375
  "external_id",
41266
41376
  "external_id__not",
41267
- "external_id__isNull",
41268
- "external_id__isNotNull",
41269
41377
  "external_id__equals",
41270
41378
  "external_id__contains",
41271
41379
  "external_id__startsWith",
41272
41380
  "external_id__endWith",
41381
+ "external_id__isNull",
41382
+ "external_id__isNotNull",
41273
41383
  "billing_email",
41274
41384
  "billing_email__not",
41275
- "billing_email__isNull",
41276
- "billing_email__isNotNull",
41277
41385
  "billing_email__equals",
41278
41386
  "billing_email__contains",
41279
41387
  "billing_email__startsWith",
41280
41388
  "billing_email__endWith",
41389
+ "billing_email__isNull",
41390
+ "billing_email__isNotNull",
41281
41391
  "search",
41282
41392
  "tax_id",
41283
41393
  "tax_id__not",
41284
- "tax_id__isNull",
41285
- "tax_id__isNotNull",
41286
41394
  "tax_id__equals",
41287
41395
  "tax_id__contains",
41288
41396
  "tax_id__startsWith",
41289
41397
  "tax_id__endWith",
41398
+ "tax_id__isNull",
41399
+ "tax_id__isNotNull",
41290
41400
  "subscription_status",
41291
41401
  "subscription_status__in",
41292
41402
  "invoicing_entity_id",
41293
41403
  "invoicing_entity_id__not",
41294
- "invoicing_entity_id__isNull",
41295
- "invoicing_entity_id__isNotNull",
41296
41404
  "invoicing_entity_id__equals",
41297
41405
  "invoicing_entity_id__contains",
41298
41406
  "invoicing_entity_id__startsWith",
@@ -41304,8 +41412,6 @@ Examples:
41304
41412
  "integration_entity_id",
41305
41413
  "created_at",
41306
41414
  "created_at__not",
41307
- "created_at__isNull",
41308
- "created_at__isNotNull",
41309
41415
  "created_at__equals",
41310
41416
  "created_at__lt",
41311
41417
  "created_at__lte",
@@ -41313,8 +41419,6 @@ Examples:
41313
41419
  "created_at__gte",
41314
41420
  "updated_at",
41315
41421
  "updated_at__not",
41316
- "updated_at__isNull",
41317
- "updated_at__isNotNull",
41318
41422
  "updated_at__equals",
41319
41423
  "updated_at__lt",
41320
41424
  "updated_at__lte",
@@ -41883,7 +41987,7 @@ Examples:
41883
41987
  // build/commands/generated/customers-credits.js
41884
41988
  function registerCustomers_CreditsCommands(parent) {
41885
41989
  const resource = parent.command("customers-credits").description("Manage customers > credits");
41886
- 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", `
41990
+ 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", `
41887
41991
  Examples:
41888
41992
  hyperline customers-credits list
41889
41993
  hyperline customers-credits list --take <take> --product-id <product_id>`).action(async (opts) => {
@@ -41897,10 +42001,6 @@ Examples:
41897
42001
  args.product_id = opts.productId;
41898
42002
  if (opts["productId.not"] !== void 0)
41899
42003
  args.product_id__not = opts["productId.not"];
41900
- if (opts["productId.isNull"] !== void 0)
41901
- args.product_id__isNull = opts["productId.isNull"];
41902
- if (opts["productId.isNotNull"] !== void 0)
41903
- args.product_id__isNotNull = opts["productId.isNotNull"];
41904
42004
  if (opts["productId.equals"] !== void 0)
41905
42005
  args.product_id__equals = opts["productId.equals"];
41906
42006
  if (opts["productId.contains"] !== void 0)
@@ -41913,10 +42013,6 @@ Examples:
41913
42013
  args.customer_id = opts.customerId;
41914
42014
  if (opts["customerId.not"] !== void 0)
41915
42015
  args.customer_id__not = opts["customerId.not"];
41916
- if (opts["customerId.isNull"] !== void 0)
41917
- args.customer_id__isNull = opts["customerId.isNull"];
41918
- if (opts["customerId.isNotNull"] !== void 0)
41919
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
41920
42016
  if (opts["customerId.equals"] !== void 0)
41921
42017
  args.customer_id__equals = opts["customerId.equals"];
41922
42018
  if (opts["customerId.contains"] !== void 0)
@@ -41929,10 +42025,6 @@ Examples:
41929
42025
  args.updated_at = opts.updatedAt;
41930
42026
  if (opts["updatedAt.not"] !== void 0)
41931
42027
  args.updated_at__not = opts["updatedAt.not"];
41932
- if (opts["updatedAt.isNull"] !== void 0)
41933
- args.updated_at__isNull = opts["updatedAt.isNull"];
41934
- if (opts["updatedAt.isNotNull"] !== void 0)
41935
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
41936
42028
  if (opts["updatedAt.equals"] !== void 0)
41937
42029
  args.updated_at__equals = opts["updatedAt.equals"];
41938
42030
  if (opts["updatedAt.lt"] !== void 0)
@@ -41956,24 +42048,18 @@ Examples:
41956
42048
  "skip",
41957
42049
  "product_id",
41958
42050
  "product_id__not",
41959
- "product_id__isNull",
41960
- "product_id__isNotNull",
41961
42051
  "product_id__equals",
41962
42052
  "product_id__contains",
41963
42053
  "product_id__startsWith",
41964
42054
  "product_id__endWith",
41965
42055
  "customer_id",
41966
42056
  "customer_id__not",
41967
- "customer_id__isNull",
41968
- "customer_id__isNotNull",
41969
42057
  "customer_id__equals",
41970
42058
  "customer_id__contains",
41971
42059
  "customer_id__startsWith",
41972
42060
  "customer_id__endWith",
41973
42061
  "updated_at",
41974
42062
  "updated_at__not",
41975
- "updated_at__isNull",
41976
- "updated_at__isNotNull",
41977
42063
  "updated_at__equals",
41978
42064
  "updated_at__lt",
41979
42065
  "updated_at__lte",
@@ -42114,7 +42200,7 @@ Examples:
42114
42200
  queryParamKeys: []
42115
42201
  });
42116
42202
  });
42117
- resource.command("purchase-customer-credits").description(`Purchase credits for a customer. This generates an invoice and charges the customer. Returns the invoice ID and new balance.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--credit-count <number>", `Value indicating a number of credits to add. If \`price_id\` is defined, this value must correspond to a full credit pack for the price.`).option("--amount-excluding-tax <number>", `Custom amount for the added credits. Either \`amount_excluding_tax\` or \`price_id\` must be defined. Expressed in currency's smallest unit.`).option("--price-id <value>", `Price ID used to add credits. The price must be of type \`bundle\`. Either \`amount_excluding_tax\` or \`price_id\` must be defined.`).option("--expires-at <value>", `Expiration date for credits linked to this transaction. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
42203
+ resource.command("purchase-customer-credits").description(`Purchase credits for a customer. This generates an invoice and charges the customer's card immediately, granting the credits only once paid. Requires a card payment method (otherwise fails with reason \`payment_method_not_supported\`). Returns the invoice ID and new balance.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--credit-count <number>", `Value indicating a number of credits to add. If \`price_id\` is defined, this value must correspond to a full credit pack for the price.`).option("--amount-excluding-tax <number>", `Custom amount for the added credits. Either \`amount_excluding_tax\` or \`price_id\` must be defined. Expressed in currency's smallest unit.`).option("--price-id <value>", `Price ID used to add credits. The price must be of type \`bundle\`. Either \`amount_excluding_tax\` or \`price_id\` must be defined.`).option("--expires-at <value>", `Expiration date for credits linked to this transaction. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
42118
42204
  Examples:
42119
42205
  hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count>
42120
42206
  hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count> --amount-excluding-tax <amount_excluding_tax> --price-id <price_id>
@@ -42216,7 +42302,7 @@ Examples:
42216
42302
  queryParamKeys: []
42217
42303
  });
42218
42304
  });
42219
- resource.command("update-customer-credit-portal-settings").description(`Enable or disable customer portal credit top-ups for a customer and credit product, with the price configuration (or a custom price) the customer pays. Enabling requires the customer's credit balance for the product: create it first (createCustomerCredit, a 0 balance is fine).`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--enabled", `Whether the customer can buy this credit product from the customer portal. Enabling requires a price: \`price_configuration_id\`, \`custom_price_configuration\`, or the price already set. Disabling clears the price and removes the customer's own price.`).option("--price-configuration-id <value>", `ID of one of the credit product's price configurations, in the customer's price book and currency, of type \`bundle\`, \`volume\` or \`bulk\`. Mutually exclusive with \`custom_price_configuration\`.`).option("--custom-price-configuration <json>", `A price of the customer's own, in the customer's currency, replacing any previous one. Same shape as a credit product price configuration. Mutually exclusive with \`price_configuration_id\`.`).addHelpText("after", `
42305
+ resource.command("update-customer-credit-portal-settings").description(`Enable or disable customer portal credit top-ups for a customer and credit product, with the price configuration (or a custom price) the customer pays. Enabling requires the customer's credit balance for the product: create it first (createCustomerCredit, a 0 balance is fine).`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--enabled", `Whether the customer can buy this credit product from the customer portal. Enabling requires a price: \`price_configuration_id\`, \`custom_price_configuration\`, or the price already set. Disabling clears the price and removes the customer's own price.`).option("--price-configuration-id <value>", `ID of one of the credit product's price configurations, in the customer's price book and currency, of type \`bundle\`, \`volume\` or \`bulk\`. Mutually exclusive with \`custom_price_configuration\`.`).option("--custom-price-configuration <json>", `A price of the customer's own, in the customer's currency, replacing any previous one. Same shape as a credit product price configuration. Mutually exclusive with \`price_configuration_id\`. It needs at least one price; \`unit_count\` is a whole number of at least 1; \`amount\` is never negative, a \`bundle\` pack is never free, and the price is not free altogether; volume tiers start at 0 and each starts where the previous one ends; bulk tiers are in increasing \`to\` order; only the last tier has \`to: null\`. Otherwise the request fails with reason \`invalid_custom_price\`.`).addHelpText("after", `
42220
42306
  Examples:
42221
42307
  hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
42222
42308
  hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --price-configuration-id <price_configuration_id> --custom-price-configuration <custom_price_configuration>
@@ -42246,6 +42332,88 @@ Examples:
42246
42332
  });
42247
42333
  }
42248
42334
 
42335
+ // build/commands/generated/customers-features.js
42336
+ function registerCustomers_FeaturesCommands(parent) {
42337
+ const resource = parent.command("customers-features").description("Manage customers > features");
42338
+ resource.command("resolve-customer-features").description(`Resolve feature values for a customer.`).requiredOption("--id <value>", `id parameter`).option("--at <value>", `Resolution date.`).addHelpText("after", `
42339
+ Examples:
42340
+ hyperline customers-features resolve-customer-features --id <id>
42341
+ hyperline customers-features resolve-customer-features --id <id> --at <at>`).action(async (opts) => {
42342
+ const ctx = resource.parent?.opts()._ctx;
42343
+ if (!ctx) {
42344
+ process.stderr.write("Error: Not authenticated\n");
42345
+ process.exit(1);
42346
+ }
42347
+ const args = {};
42348
+ if (opts.id !== void 0)
42349
+ args.id = opts.id;
42350
+ if (opts.at !== void 0)
42351
+ args.at = opts.at;
42352
+ await ctx.execute({
42353
+ method: "GET",
42354
+ path: "/v1/customers/{id}/features",
42355
+ args,
42356
+ queryParamKeys: ["at"]
42357
+ });
42358
+ });
42359
+ 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", `
42360
+ Examples:
42361
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value
42362
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value --reason <reason> --expires-at <expires_at>
42363
+ hyperline customers-features set-customer-feature --id <id> --code <code> --value --output json`).action(async (opts) => {
42364
+ const ctx = resource.parent?.opts()._ctx;
42365
+ if (!ctx) {
42366
+ process.stderr.write("Error: Not authenticated\n");
42367
+ process.exit(1);
42368
+ }
42369
+ const args = {};
42370
+ if (opts.id !== void 0)
42371
+ args.id = opts.id;
42372
+ if (opts.code !== void 0)
42373
+ args.code = opts.code;
42374
+ if (opts.reason !== void 0)
42375
+ args.reason = opts.reason;
42376
+ if (opts.expiresAt !== void 0)
42377
+ args.expires_at = opts.expiresAt;
42378
+ if (opts.value !== void 0)
42379
+ args.value = true;
42380
+ await ctx.execute({
42381
+ method: "PUT",
42382
+ path: "/v1/customers/{id}/features/{code}",
42383
+ args,
42384
+ queryParamKeys: []
42385
+ });
42386
+ });
42387
+ 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", `
42388
+ Examples:
42389
+ hyperline customers-features delete-customer-feature --id <id> --code <code>
42390
+ hyperline customers-features delete-customer-feature --id <id> --code <code> --output json`).action(async (opts) => {
42391
+ const ctx = resource.parent?.opts()._ctx;
42392
+ if (!ctx) {
42393
+ process.stderr.write("Error: Not authenticated\n");
42394
+ process.exit(1);
42395
+ }
42396
+ const args = {};
42397
+ if (opts.id !== void 0)
42398
+ args.id = opts.id;
42399
+ if (opts.code !== void 0)
42400
+ args.code = opts.code;
42401
+ if (!opts.yes) {
42402
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
42403
+ if (!confirmed) {
42404
+ process.stdout.write("Aborted.\n");
42405
+ return;
42406
+ }
42407
+ }
42408
+ await ctx.execute({
42409
+ method: "DELETE",
42410
+ path: "/v1/customers/{id}/features/{code}",
42411
+ args,
42412
+ queryParamKeys: []
42413
+ });
42414
+ });
42415
+ }
42416
+
42249
42417
  // build/commands/generated/customers-payment-methods.js
42250
42418
  function registerCustomers_Payment_MethodsCommands(parent) {
42251
42419
  const resource = parent.command("customers-payment-methods").description("Manage customers > payment methods");
@@ -42695,45 +42863,35 @@ Examples:
42695
42863
  });
42696
42864
  }
42697
42865
 
42698
- // build/commands/generated/files.js
42699
- function registerFilesCommands(parent) {
42700
- const resource = parent.command("files").description("Manage files");
42701
- resource.command("download").description(`Download the raw content of a file by ID. Returns the file binary with appropriate content type.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
42702
- Examples:
42703
- hyperline files download --id <id>`).action(async (opts) => {
42704
- const ctx = resource.parent?.opts()._ctx;
42705
- if (!ctx) {
42706
- process.stderr.write("Error: Not authenticated\n");
42707
- process.exit(1);
42708
- }
42709
- const args = {};
42710
- if (opts.id !== void 0)
42711
- args.id = opts.id;
42712
- await ctx.execute({
42713
- method: "GET",
42714
- path: "/v1/files/{id}/download",
42715
- args,
42716
- queryParamKeys: []
42717
- });
42718
- });
42719
- 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", `
42866
+ // build/commands/generated/features.js
42867
+ function registerFeaturesCommands(parent) {
42868
+ const resource = parent.command("features").description("Manage features");
42869
+ 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", `
42720
42870
  Examples:
42721
- hyperline files list
42722
- hyperline files list --take <take> --name <name>`).action(async (opts) => {
42871
+ hyperline features list
42872
+ hyperline features list --take <take> --code <code>`).action(async (opts) => {
42723
42873
  const ctx = resource.parent?.opts()._ctx;
42724
42874
  if (!ctx) {
42725
42875
  process.stderr.write("Error: Not authenticated\n");
42726
42876
  process.exit(1);
42727
42877
  }
42728
42878
  const args = {};
42879
+ if (opts.code !== void 0)
42880
+ args.code = opts.code;
42881
+ if (opts["code.not"] !== void 0)
42882
+ args.code__not = opts["code.not"];
42883
+ if (opts["code.equals"] !== void 0)
42884
+ args.code__equals = opts["code.equals"];
42885
+ if (opts["code.contains"] !== void 0)
42886
+ args.code__contains = opts["code.contains"];
42887
+ if (opts["code.startsWith"] !== void 0)
42888
+ args.code__startsWith = opts["code.startsWith"];
42889
+ if (opts["code.endWith"] !== void 0)
42890
+ args.code__endWith = opts["code.endWith"];
42729
42891
  if (opts.name !== void 0)
42730
42892
  args.name = opts.name;
42731
42893
  if (opts["name.not"] !== void 0)
42732
42894
  args.name__not = opts["name.not"];
42733
- if (opts["name.isNull"] !== void 0)
42734
- args.name__isNull = opts["name.isNull"];
42735
- if (opts["name.isNotNull"] !== void 0)
42736
- args.name__isNotNull = opts["name.isNotNull"];
42737
42895
  if (opts["name.equals"] !== void 0)
42738
42896
  args.name__equals = opts["name.equals"];
42739
42897
  if (opts["name.contains"] !== void 0)
@@ -42742,24 +42900,246 @@ Examples:
42742
42900
  args.name__startsWith = opts["name.startsWith"];
42743
42901
  if (opts["name.endWith"] !== void 0)
42744
42902
  args.name__endWith = opts["name.endWith"];
42745
- if (opts.customerId !== void 0)
42746
- args.customer_id = opts.customerId;
42747
- if (opts["customerId.not"] !== void 0)
42748
- args.customer_id__not = opts["customerId.not"];
42749
- if (opts["customerId.isNull"] !== void 0)
42750
- args.customer_id__isNull = opts["customerId.isNull"];
42751
- if (opts["customerId.isNotNull"] !== void 0)
42752
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
42753
- if (opts["customerId.equals"] !== void 0)
42754
- args.customer_id__equals = opts["customerId.equals"];
42755
- if (opts["customerId.contains"] !== void 0)
42756
- args.customer_id__contains = opts["customerId.contains"];
42757
- if (opts["customerId.startsWith"] !== void 0)
42758
- args.customer_id__startsWith = opts["customerId.startsWith"];
42759
- if (opts["customerId.endWith"] !== void 0)
42760
- args.customer_id__endWith = opts["customerId.endWith"];
42761
- if (opts.take !== void 0)
42762
- args.take = Number(opts.take);
42903
+ if (opts.status !== void 0)
42904
+ args.status = opts.status;
42905
+ if (opts["status.in"] !== void 0)
42906
+ args.status__in = opts["status.in"];
42907
+ if (opts.search !== void 0)
42908
+ args.search = opts.search;
42909
+ if (opts.take !== void 0)
42910
+ args.take = Number(opts.take);
42911
+ if (opts.skip !== void 0)
42912
+ args.skip = Number(opts.skip);
42913
+ await ctx.execute({
42914
+ method: "GET",
42915
+ path: "/v1/features",
42916
+ args,
42917
+ queryParamKeys: [
42918
+ "take",
42919
+ "skip",
42920
+ "code",
42921
+ "code__not",
42922
+ "code__equals",
42923
+ "code__contains",
42924
+ "code__startsWith",
42925
+ "code__endWith",
42926
+ "name",
42927
+ "name__not",
42928
+ "name__equals",
42929
+ "name__contains",
42930
+ "name__startsWith",
42931
+ "name__endWith",
42932
+ "status",
42933
+ "status__in",
42934
+ "search"
42935
+ ]
42936
+ });
42937
+ });
42938
+ 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", `
42939
+ Examples:
42940
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value
42941
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value --description <description> --resolution-strategy <resolution_strategy>
42942
+ hyperline features create --code <code> --name <name> --value-type <value_type> --default-value --output json`).action(async (opts) => {
42943
+ const ctx = resource.parent?.opts()._ctx;
42944
+ if (!ctx) {
42945
+ process.stderr.write("Error: Not authenticated\n");
42946
+ process.exit(1);
42947
+ }
42948
+ const args = {};
42949
+ if (opts.code !== void 0)
42950
+ args.code = opts.code;
42951
+ if (opts.name !== void 0)
42952
+ args.name = opts.name;
42953
+ if (opts.description !== void 0)
42954
+ args.description = opts.description;
42955
+ if (opts.valueType !== void 0)
42956
+ args.value_type = opts.valueType;
42957
+ if (opts.resolutionStrategy !== void 0)
42958
+ args.resolution_strategy = opts.resolutionStrategy;
42959
+ if (opts.defaultValue !== void 0)
42960
+ args.default_value = true;
42961
+ await ctx.execute({
42962
+ method: "POST",
42963
+ path: "/v1/features",
42964
+ args,
42965
+ queryParamKeys: []
42966
+ });
42967
+ });
42968
+ resource.command("get").description(`Retrieve a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
42969
+ Examples:
42970
+ hyperline features get --code <code>`).action(async (opts) => {
42971
+ const ctx = resource.parent?.opts()._ctx;
42972
+ if (!ctx) {
42973
+ process.stderr.write("Error: Not authenticated\n");
42974
+ process.exit(1);
42975
+ }
42976
+ const args = {};
42977
+ if (opts.code !== void 0)
42978
+ args.code = opts.code;
42979
+ await ctx.execute({
42980
+ method: "GET",
42981
+ path: "/v1/features/{code}",
42982
+ args,
42983
+ queryParamKeys: []
42984
+ });
42985
+ });
42986
+ 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", `
42987
+ Examples:
42988
+ hyperline features update --code <code>
42989
+ hyperline features update --code <code> --name <name> --description <description>
42990
+ hyperline features update --code <code> --output json`).action(async (opts) => {
42991
+ const ctx = resource.parent?.opts()._ctx;
42992
+ if (!ctx) {
42993
+ process.stderr.write("Error: Not authenticated\n");
42994
+ process.exit(1);
42995
+ }
42996
+ const args = {};
42997
+ if (opts.code !== void 0)
42998
+ args.code = opts.code;
42999
+ if (opts.name !== void 0)
43000
+ args.name = opts.name;
43001
+ if (opts.description !== void 0)
43002
+ args.description = opts.description;
43003
+ if (opts.valueType !== void 0)
43004
+ args.value_type = opts.valueType;
43005
+ if (opts.resolutionStrategy !== void 0)
43006
+ args.resolution_strategy = opts.resolutionStrategy;
43007
+ if (opts.defaultValue !== void 0)
43008
+ args.default_value = true;
43009
+ await ctx.execute({
43010
+ method: "PUT",
43011
+ path: "/v1/features/{code}",
43012
+ args,
43013
+ queryParamKeys: []
43014
+ });
43015
+ });
43016
+ resource.command("archive").description(`Archive a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
43017
+ Examples:
43018
+ hyperline features archive --code <code>
43019
+ hyperline features archive --code <code> --output json`).action(async (opts) => {
43020
+ const ctx = resource.parent?.opts()._ctx;
43021
+ if (!ctx) {
43022
+ process.stderr.write("Error: Not authenticated\n");
43023
+ process.exit(1);
43024
+ }
43025
+ const args = {};
43026
+ if (opts.code !== void 0)
43027
+ args.code = opts.code;
43028
+ await ctx.execute({
43029
+ method: "PUT",
43030
+ path: "/v1/features/{code}/archive",
43031
+ args,
43032
+ queryParamKeys: []
43033
+ });
43034
+ });
43035
+ 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", `
43036
+ Examples:
43037
+ hyperline features delete --code <code>
43038
+ hyperline features delete --code <code> --output json`).action(async (opts) => {
43039
+ const ctx = resource.parent?.opts()._ctx;
43040
+ if (!ctx) {
43041
+ process.stderr.write("Error: Not authenticated\n");
43042
+ process.exit(1);
43043
+ }
43044
+ const args = {};
43045
+ if (opts.code !== void 0)
43046
+ args.code = opts.code;
43047
+ if (!opts.yes) {
43048
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
43049
+ if (!confirmed) {
43050
+ process.stdout.write("Aborted.\n");
43051
+ return;
43052
+ }
43053
+ }
43054
+ await ctx.execute({
43055
+ method: "DELETE",
43056
+ path: "/v1/features/{code}",
43057
+ args,
43058
+ queryParamKeys: []
43059
+ });
43060
+ });
43061
+ resource.command("unarchive").description(`Unarchive a feature definition.`).requiredOption("--code <value>", `code parameter`).addHelpText("after", `
43062
+ Examples:
43063
+ hyperline features unarchive --code <code>
43064
+ hyperline features unarchive --code <code> --output json`).action(async (opts) => {
43065
+ const ctx = resource.parent?.opts()._ctx;
43066
+ if (!ctx) {
43067
+ process.stderr.write("Error: Not authenticated\n");
43068
+ process.exit(1);
43069
+ }
43070
+ const args = {};
43071
+ if (opts.code !== void 0)
43072
+ args.code = opts.code;
43073
+ await ctx.execute({
43074
+ method: "PUT",
43075
+ path: "/v1/features/{code}/unarchive",
43076
+ args,
43077
+ queryParamKeys: []
43078
+ });
43079
+ });
43080
+ }
43081
+
43082
+ // build/commands/generated/files.js
43083
+ function registerFilesCommands(parent) {
43084
+ const resource = parent.command("files").description("Manage files");
43085
+ resource.command("download").description(`Download the raw content of a file by ID. Returns the file binary with appropriate content type.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
43086
+ Examples:
43087
+ hyperline files download --id <id>`).action(async (opts) => {
43088
+ const ctx = resource.parent?.opts()._ctx;
43089
+ if (!ctx) {
43090
+ process.stderr.write("Error: Not authenticated\n");
43091
+ process.exit(1);
43092
+ }
43093
+ const args = {};
43094
+ if (opts.id !== void 0)
43095
+ args.id = opts.id;
43096
+ await ctx.execute({
43097
+ method: "GET",
43098
+ path: "/v1/files/{id}/download",
43099
+ args,
43100
+ queryParamKeys: []
43101
+ });
43102
+ });
43103
+ 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", `
43104
+ Examples:
43105
+ hyperline files list
43106
+ hyperline files list --take <take> --name <name>`).action(async (opts) => {
43107
+ const ctx = resource.parent?.opts()._ctx;
43108
+ if (!ctx) {
43109
+ process.stderr.write("Error: Not authenticated\n");
43110
+ process.exit(1);
43111
+ }
43112
+ const args = {};
43113
+ if (opts.name !== void 0)
43114
+ args.name = opts.name;
43115
+ if (opts["name.not"] !== void 0)
43116
+ args.name__not = opts["name.not"];
43117
+ if (opts["name.equals"] !== void 0)
43118
+ args.name__equals = opts["name.equals"];
43119
+ if (opts["name.contains"] !== void 0)
43120
+ args.name__contains = opts["name.contains"];
43121
+ if (opts["name.startsWith"] !== void 0)
43122
+ args.name__startsWith = opts["name.startsWith"];
43123
+ if (opts["name.endWith"] !== void 0)
43124
+ args.name__endWith = opts["name.endWith"];
43125
+ if (opts.customerId !== void 0)
43126
+ args.customer_id = opts.customerId;
43127
+ if (opts["customerId.not"] !== void 0)
43128
+ args.customer_id__not = opts["customerId.not"];
43129
+ if (opts["customerId.equals"] !== void 0)
43130
+ args.customer_id__equals = opts["customerId.equals"];
43131
+ if (opts["customerId.contains"] !== void 0)
43132
+ args.customer_id__contains = opts["customerId.contains"];
43133
+ if (opts["customerId.startsWith"] !== void 0)
43134
+ args.customer_id__startsWith = opts["customerId.startsWith"];
43135
+ if (opts["customerId.endWith"] !== void 0)
43136
+ args.customer_id__endWith = opts["customerId.endWith"];
43137
+ if (opts["customerId.isNull"] !== void 0)
43138
+ args.customer_id__isNull = opts["customerId.isNull"];
43139
+ if (opts["customerId.isNotNull"] !== void 0)
43140
+ args.customer_id__isNotNull = opts["customerId.isNotNull"];
43141
+ if (opts.take !== void 0)
43142
+ args.take = Number(opts.take);
42763
43143
  if (opts.skip !== void 0)
42764
43144
  args.skip = Number(opts.skip);
42765
43145
  await ctx.execute({
@@ -42771,20 +43151,18 @@ Examples:
42771
43151
  "skip",
42772
43152
  "name",
42773
43153
  "name__not",
42774
- "name__isNull",
42775
- "name__isNotNull",
42776
43154
  "name__equals",
42777
43155
  "name__contains",
42778
43156
  "name__startsWith",
42779
43157
  "name__endWith",
42780
43158
  "customer_id",
42781
43159
  "customer_id__not",
42782
- "customer_id__isNull",
42783
- "customer_id__isNotNull",
42784
43160
  "customer_id__equals",
42785
43161
  "customer_id__contains",
42786
43162
  "customer_id__startsWith",
42787
- "customer_id__endWith"
43163
+ "customer_id__endWith",
43164
+ "customer_id__isNull",
43165
+ "customer_id__isNotNull"
42788
43166
  ]
42789
43167
  });
42790
43168
  });
@@ -42840,7 +43218,7 @@ Examples:
42840
43218
  // build/commands/generated/invoices.js
42841
43219
  function registerInvoicesCommands(parent) {
42842
43220
  const resource = parent.command("invoices").description("Manage invoices");
42843
- 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", `
43221
+ 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", `
42844
43222
  Examples:
42845
43223
  hyperline invoices list
42846
43224
  hyperline invoices list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -42870,10 +43248,6 @@ Examples:
42870
43248
  args.customer_id = opts.customerId;
42871
43249
  if (opts["customerId.not"] !== void 0)
42872
43250
  args.customer_id__not = opts["customerId.not"];
42873
- if (opts["customerId.isNull"] !== void 0)
42874
- args.customer_id__isNull = opts["customerId.isNull"];
42875
- if (opts["customerId.isNotNull"] !== void 0)
42876
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
42877
43251
  if (opts["customerId.equals"] !== void 0)
42878
43252
  args.customer_id__equals = opts["customerId.equals"];
42879
43253
  if (opts["customerId.contains"] !== void 0)
@@ -42888,10 +43262,6 @@ Examples:
42888
43262
  args.subscription_id = opts.subscriptionId;
42889
43263
  if (opts["subscriptionId.not"] !== void 0)
42890
43264
  args.subscription_id__not = opts["subscriptionId.not"];
42891
- if (opts["subscriptionId.isNull"] !== void 0)
42892
- args.subscription_id__isNull = opts["subscriptionId.isNull"];
42893
- if (opts["subscriptionId.isNotNull"] !== void 0)
42894
- args.subscription_id__isNotNull = opts["subscriptionId.isNotNull"];
42895
43265
  if (opts["subscriptionId.equals"] !== void 0)
42896
43266
  args.subscription_id__equals = opts["subscriptionId.equals"];
42897
43267
  if (opts["subscriptionId.contains"] !== void 0)
@@ -42900,14 +43270,14 @@ Examples:
42900
43270
  args.subscription_id__startsWith = opts["subscriptionId.startsWith"];
42901
43271
  if (opts["subscriptionId.endWith"] !== void 0)
42902
43272
  args.subscription_id__endWith = opts["subscriptionId.endWith"];
43273
+ if (opts["subscriptionId.isNull"] !== void 0)
43274
+ args.subscription_id__isNull = opts["subscriptionId.isNull"];
43275
+ if (opts["subscriptionId.isNotNull"] !== void 0)
43276
+ args.subscription_id__isNotNull = opts["subscriptionId.isNotNull"];
42903
43277
  if (opts.invoicingEntityId !== void 0)
42904
43278
  args.invoicing_entity_id = opts.invoicingEntityId;
42905
43279
  if (opts["invoicingEntityId.not"] !== void 0)
42906
43280
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
42907
- if (opts["invoicingEntityId.isNull"] !== void 0)
42908
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
42909
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
42910
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
42911
43281
  if (opts["invoicingEntityId.equals"] !== void 0)
42912
43282
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
42913
43283
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -42920,10 +43290,6 @@ Examples:
42920
43290
  args.invoice_number = opts.invoiceNumber;
42921
43291
  if (opts["invoiceNumber.not"] !== void 0)
42922
43292
  args.invoice_number__not = opts["invoiceNumber.not"];
42923
- if (opts["invoiceNumber.isNull"] !== void 0)
42924
- args.invoice_number__isNull = opts["invoiceNumber.isNull"];
42925
- if (opts["invoiceNumber.isNotNull"] !== void 0)
42926
- args.invoice_number__isNotNull = opts["invoiceNumber.isNotNull"];
42927
43293
  if (opts["invoiceNumber.equals"] !== void 0)
42928
43294
  args.invoice_number__equals = opts["invoiceNumber.equals"];
42929
43295
  if (opts["invoiceNumber.contains"] !== void 0)
@@ -42936,10 +43302,6 @@ Examples:
42936
43302
  args.original_invoice_id = opts.originalInvoiceId;
42937
43303
  if (opts["originalInvoiceId.not"] !== void 0)
42938
43304
  args.original_invoice_id__not = opts["originalInvoiceId.not"];
42939
- if (opts["originalInvoiceId.isNull"] !== void 0)
42940
- args.original_invoice_id__isNull = opts["originalInvoiceId.isNull"];
42941
- if (opts["originalInvoiceId.isNotNull"] !== void 0)
42942
- args.original_invoice_id__isNotNull = opts["originalInvoiceId.isNotNull"];
42943
43305
  if (opts["originalInvoiceId.equals"] !== void 0)
42944
43306
  args.original_invoice_id__equals = opts["originalInvoiceId.equals"];
42945
43307
  if (opts["originalInvoiceId.contains"] !== void 0)
@@ -42948,14 +43310,14 @@ Examples:
42948
43310
  args.original_invoice_id__startsWith = opts["originalInvoiceId.startsWith"];
42949
43311
  if (opts["originalInvoiceId.endWith"] !== void 0)
42950
43312
  args.original_invoice_id__endWith = opts["originalInvoiceId.endWith"];
43313
+ if (opts["originalInvoiceId.isNull"] !== void 0)
43314
+ args.original_invoice_id__isNull = opts["originalInvoiceId.isNull"];
43315
+ if (opts["originalInvoiceId.isNotNull"] !== void 0)
43316
+ args.original_invoice_id__isNotNull = opts["originalInvoiceId.isNotNull"];
42951
43317
  if (opts.originalInvoiceNumber !== void 0)
42952
43318
  args.original_invoice_number = opts.originalInvoiceNumber;
42953
43319
  if (opts["originalInvoiceNumber.not"] !== void 0)
42954
43320
  args.original_invoice_number__not = opts["originalInvoiceNumber.not"];
42955
- if (opts["originalInvoiceNumber.isNull"] !== void 0)
42956
- args.original_invoice_number__isNull = opts["originalInvoiceNumber.isNull"];
42957
- if (opts["originalInvoiceNumber.isNotNull"] !== void 0)
42958
- args.original_invoice_number__isNotNull = opts["originalInvoiceNumber.isNotNull"];
42959
43321
  if (opts["originalInvoiceNumber.equals"] !== void 0)
42960
43322
  args.original_invoice_number__equals = opts["originalInvoiceNumber.equals"];
42961
43323
  if (opts["originalInvoiceNumber.contains"] !== void 0)
@@ -42964,16 +43326,16 @@ Examples:
42964
43326
  args.original_invoice_number__startsWith = opts["originalInvoiceNumber.startsWith"];
42965
43327
  if (opts["originalInvoiceNumber.endWith"] !== void 0)
42966
43328
  args.original_invoice_number__endWith = opts["originalInvoiceNumber.endWith"];
43329
+ if (opts["originalInvoiceNumber.isNull"] !== void 0)
43330
+ args.original_invoice_number__isNull = opts["originalInvoiceNumber.isNull"];
43331
+ if (opts["originalInvoiceNumber.isNotNull"] !== void 0)
43332
+ args.original_invoice_number__isNotNull = opts["originalInvoiceNumber.isNotNull"];
42967
43333
  if (opts.lineItemId !== void 0)
42968
43334
  args.line_item_id = opts.lineItemId;
42969
43335
  if (opts.periodStart !== void 0)
42970
43336
  args.period_start = opts.periodStart;
42971
43337
  if (opts["periodStart.not"] !== void 0)
42972
43338
  args.period_start__not = opts["periodStart.not"];
42973
- if (opts["periodStart.isNull"] !== void 0)
42974
- args.period_start__isNull = opts["periodStart.isNull"];
42975
- if (opts["periodStart.isNotNull"] !== void 0)
42976
- args.period_start__isNotNull = opts["periodStart.isNotNull"];
42977
43339
  if (opts["periodStart.equals"] !== void 0)
42978
43340
  args.period_start__equals = opts["periodStart.equals"];
42979
43341
  if (opts["periodStart.lt"] !== void 0)
@@ -42984,14 +43346,14 @@ Examples:
42984
43346
  args.period_start__gt = opts["periodStart.gt"];
42985
43347
  if (opts["periodStart.gte"] !== void 0)
42986
43348
  args.period_start__gte = opts["periodStart.gte"];
43349
+ if (opts["periodStart.isNull"] !== void 0)
43350
+ args.period_start__isNull = opts["periodStart.isNull"];
43351
+ if (opts["periodStart.isNotNull"] !== void 0)
43352
+ args.period_start__isNotNull = opts["periodStart.isNotNull"];
42987
43353
  if (opts.periodEnd !== void 0)
42988
43354
  args.period_end = opts.periodEnd;
42989
43355
  if (opts["periodEnd.not"] !== void 0)
42990
43356
  args.period_end__not = opts["periodEnd.not"];
42991
- if (opts["periodEnd.isNull"] !== void 0)
42992
- args.period_end__isNull = opts["periodEnd.isNull"];
42993
- if (opts["periodEnd.isNotNull"] !== void 0)
42994
- args.period_end__isNotNull = opts["periodEnd.isNotNull"];
42995
43357
  if (opts["periodEnd.equals"] !== void 0)
42996
43358
  args.period_end__equals = opts["periodEnd.equals"];
42997
43359
  if (opts["periodEnd.lt"] !== void 0)
@@ -43002,14 +43364,14 @@ Examples:
43002
43364
  args.period_end__gt = opts["periodEnd.gt"];
43003
43365
  if (opts["periodEnd.gte"] !== void 0)
43004
43366
  args.period_end__gte = opts["periodEnd.gte"];
43367
+ if (opts["periodEnd.isNull"] !== void 0)
43368
+ args.period_end__isNull = opts["periodEnd.isNull"];
43369
+ if (opts["periodEnd.isNotNull"] !== void 0)
43370
+ args.period_end__isNotNull = opts["periodEnd.isNotNull"];
43005
43371
  if (opts.issuedAt !== void 0)
43006
43372
  args.issued_at = opts.issuedAt;
43007
43373
  if (opts["issuedAt.not"] !== void 0)
43008
43374
  args.issued_at__not = opts["issuedAt.not"];
43009
- if (opts["issuedAt.isNull"] !== void 0)
43010
- args.issued_at__isNull = opts["issuedAt.isNull"];
43011
- if (opts["issuedAt.isNotNull"] !== void 0)
43012
- args.issued_at__isNotNull = opts["issuedAt.isNotNull"];
43013
43375
  if (opts["issuedAt.equals"] !== void 0)
43014
43376
  args.issued_at__equals = opts["issuedAt.equals"];
43015
43377
  if (opts["issuedAt.lt"] !== void 0)
@@ -43024,10 +43386,6 @@ Examples:
43024
43386
  args.due_at = opts.dueAt;
43025
43387
  if (opts["dueAt.not"] !== void 0)
43026
43388
  args.due_at__not = opts["dueAt.not"];
43027
- if (opts["dueAt.isNull"] !== void 0)
43028
- args.due_at__isNull = opts["dueAt.isNull"];
43029
- if (opts["dueAt.isNotNull"] !== void 0)
43030
- args.due_at__isNotNull = opts["dueAt.isNotNull"];
43031
43389
  if (opts["dueAt.equals"] !== void 0)
43032
43390
  args.due_at__equals = opts["dueAt.equals"];
43033
43391
  if (opts["dueAt.lt"] !== void 0)
@@ -43042,10 +43400,6 @@ Examples:
43042
43400
  args.updated_at = opts.updatedAt;
43043
43401
  if (opts["updatedAt.not"] !== void 0)
43044
43402
  args.updated_at__not = opts["updatedAt.not"];
43045
- if (opts["updatedAt.isNull"] !== void 0)
43046
- args.updated_at__isNull = opts["updatedAt.isNull"];
43047
- if (opts["updatedAt.isNotNull"] !== void 0)
43048
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
43049
43403
  if (opts["updatedAt.equals"] !== void 0)
43050
43404
  args.updated_at__equals = opts["updatedAt.equals"];
43051
43405
  if (opts["updatedAt.lt"] !== void 0)
@@ -43074,8 +43428,6 @@ Examples:
43074
43428
  "status__in",
43075
43429
  "customer_id",
43076
43430
  "customer_id__not",
43077
- "customer_id__isNull",
43078
- "customer_id__isNotNull",
43079
43431
  "customer_id__equals",
43080
43432
  "customer_id__contains",
43081
43433
  "customer_id__startsWith",
@@ -43083,67 +43435,61 @@ Examples:
43083
43435
  "customer_external_id",
43084
43436
  "subscription_id",
43085
43437
  "subscription_id__not",
43086
- "subscription_id__isNull",
43087
- "subscription_id__isNotNull",
43088
43438
  "subscription_id__equals",
43089
43439
  "subscription_id__contains",
43090
43440
  "subscription_id__startsWith",
43091
43441
  "subscription_id__endWith",
43442
+ "subscription_id__isNull",
43443
+ "subscription_id__isNotNull",
43092
43444
  "invoicing_entity_id",
43093
43445
  "invoicing_entity_id__not",
43094
- "invoicing_entity_id__isNull",
43095
- "invoicing_entity_id__isNotNull",
43096
43446
  "invoicing_entity_id__equals",
43097
43447
  "invoicing_entity_id__contains",
43098
43448
  "invoicing_entity_id__startsWith",
43099
43449
  "invoicing_entity_id__endWith",
43100
43450
  "invoice_number",
43101
43451
  "invoice_number__not",
43102
- "invoice_number__isNull",
43103
- "invoice_number__isNotNull",
43104
43452
  "invoice_number__equals",
43105
43453
  "invoice_number__contains",
43106
43454
  "invoice_number__startsWith",
43107
43455
  "invoice_number__endWith",
43108
43456
  "original_invoice_id",
43109
43457
  "original_invoice_id__not",
43110
- "original_invoice_id__isNull",
43111
- "original_invoice_id__isNotNull",
43112
43458
  "original_invoice_id__equals",
43113
43459
  "original_invoice_id__contains",
43114
43460
  "original_invoice_id__startsWith",
43115
43461
  "original_invoice_id__endWith",
43462
+ "original_invoice_id__isNull",
43463
+ "original_invoice_id__isNotNull",
43116
43464
  "original_invoice_number",
43117
43465
  "original_invoice_number__not",
43118
- "original_invoice_number__isNull",
43119
- "original_invoice_number__isNotNull",
43120
43466
  "original_invoice_number__equals",
43121
43467
  "original_invoice_number__contains",
43122
43468
  "original_invoice_number__startsWith",
43123
43469
  "original_invoice_number__endWith",
43470
+ "original_invoice_number__isNull",
43471
+ "original_invoice_number__isNotNull",
43124
43472
  "line_item_id",
43125
43473
  "period_start",
43126
43474
  "period_start__not",
43127
- "period_start__isNull",
43128
- "period_start__isNotNull",
43129
43475
  "period_start__equals",
43130
43476
  "period_start__lt",
43131
43477
  "period_start__lte",
43132
43478
  "period_start__gt",
43133
43479
  "period_start__gte",
43480
+ "period_start__isNull",
43481
+ "period_start__isNotNull",
43134
43482
  "period_end",
43135
43483
  "period_end__not",
43136
- "period_end__isNull",
43137
- "period_end__isNotNull",
43138
43484
  "period_end__equals",
43139
43485
  "period_end__lt",
43140
43486
  "period_end__lte",
43141
43487
  "period_end__gt",
43142
43488
  "period_end__gte",
43489
+ "period_end__isNull",
43490
+ "period_end__isNotNull",
43143
43491
  "issued_at",
43144
43492
  "issued_at__not",
43145
- "issued_at__isNull",
43146
- "issued_at__isNotNull",
43147
43493
  "issued_at__equals",
43148
43494
  "issued_at__lt",
43149
43495
  "issued_at__lte",
@@ -43151,8 +43497,6 @@ Examples:
43151
43497
  "issued_at__gte",
43152
43498
  "due_at",
43153
43499
  "due_at__not",
43154
- "due_at__isNull",
43155
- "due_at__isNotNull",
43156
43500
  "due_at__equals",
43157
43501
  "due_at__lt",
43158
43502
  "due_at__lte",
@@ -43160,8 +43504,6 @@ Examples:
43160
43504
  "due_at__gte",
43161
43505
  "updated_at",
43162
43506
  "updated_at__not",
43163
- "updated_at__isNull",
43164
- "updated_at__isNotNull",
43165
43507
  "updated_at__equals",
43166
43508
  "updated_at__lt",
43167
43509
  "updated_at__lte",
@@ -43373,7 +43715,7 @@ Examples:
43373
43715
  queryParamKeys: []
43374
43716
  });
43375
43717
  });
43376
- resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
43718
+ resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. A zero-priced paid invoice can also be voided, without a credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
43377
43719
  Examples:
43378
43720
  hyperline invoices void --id <id>
43379
43721
  hyperline invoices void --id <id> --send-email
@@ -43886,72 +44228,10 @@ Examples:
43886
44228
  });
43887
44229
  }
43888
44230
 
43889
- // build/commands/generated/monitoring.js
43890
- function registerMonitoringCommands(parent) {
43891
- const resource = parent.command("monitoring").description("Manage monitoring");
43892
- 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", `
43893
- Examples:
43894
- hyperline monitoring list-monitoring-analyses
43895
- hyperline monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
43896
- const ctx = resource.parent?.opts()._ctx;
43897
- if (!ctx) {
43898
- process.stderr.write("Error: Not authenticated\n");
43899
- process.exit(1);
43900
- }
43901
- const args = {};
43902
- if (opts.cursor !== void 0)
43903
- args.cursor = opts.cursor;
43904
- if (opts.includeTotal !== void 0)
43905
- args.include_total = opts.includeTotal;
43906
- if (opts.customerId !== void 0)
43907
- args.customer_id = opts.customerId;
43908
- if (opts.status !== void 0)
43909
- args.status = opts.status;
43910
- if (opts["createdAt.gte"] !== void 0)
43911
- args.created_at__gte = opts["createdAt.gte"];
43912
- if (opts["createdAt.lte"] !== void 0)
43913
- args.created_at__lte = opts["createdAt.lte"];
43914
- if (opts.limit !== void 0)
43915
- args.limit = Number(opts.limit);
43916
- await ctx.execute({
43917
- method: "GET",
43918
- path: "/v1/agents/monitoring/analyses",
43919
- args,
43920
- queryParamKeys: [
43921
- "limit",
43922
- "cursor",
43923
- "include_total",
43924
- "customer_id",
43925
- "status",
43926
- "created_at__gte",
43927
- "created_at__lte"
43928
- ]
43929
- });
43930
- });
43931
- resource.command("get-monitoring-analysis").description(`Get one customer health analysis by ID: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
43932
- Examples:
43933
- hyperline monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
43934
- const ctx = resource.parent?.opts()._ctx;
43935
- if (!ctx) {
43936
- process.stderr.write("Error: Not authenticated\n");
43937
- process.exit(1);
43938
- }
43939
- const args = {};
43940
- if (opts.id !== void 0)
43941
- args.id = opts.id;
43942
- await ctx.execute({
43943
- method: "GET",
43944
- path: "/v1/agents/monitoring/analyses/{id}",
43945
- args,
43946
- queryParamKeys: []
43947
- });
43948
- });
43949
- }
43950
-
43951
44231
  // build/commands/generated/organisations.js
43952
44232
  function registerOrganisationsCommands(parent) {
43953
44233
  const resource = parent.command("organisations").description("Manage organisations");
43954
- 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", `
44234
+ 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", `
43955
44235
  Examples:
43956
44236
  hyperline organisations list
43957
44237
  hyperline organisations list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -43973,10 +44253,6 @@ Examples:
43973
44253
  args.created_at = opts.createdAt;
43974
44254
  if (opts["createdAt.not"] !== void 0)
43975
44255
  args.created_at__not = opts["createdAt.not"];
43976
- if (opts["createdAt.isNull"] !== void 0)
43977
- args.created_at__isNull = opts["createdAt.isNull"];
43978
- if (opts["createdAt.isNotNull"] !== void 0)
43979
- args.created_at__isNotNull = opts["createdAt.isNotNull"];
43980
44256
  if (opts["createdAt.equals"] !== void 0)
43981
44257
  args.created_at__equals = opts["createdAt.equals"];
43982
44258
  if (opts["createdAt.lt"] !== void 0)
@@ -43991,10 +44267,6 @@ Examples:
43991
44267
  args.updated_at = opts.updatedAt;
43992
44268
  if (opts["updatedAt.not"] !== void 0)
43993
44269
  args.updated_at__not = opts["updatedAt.not"];
43994
- if (opts["updatedAt.isNull"] !== void 0)
43995
- args.updated_at__isNull = opts["updatedAt.isNull"];
43996
- if (opts["updatedAt.isNotNull"] !== void 0)
43997
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
43998
44270
  if (opts["updatedAt.equals"] !== void 0)
43999
44271
  args.updated_at__equals = opts["updatedAt.equals"];
44000
44272
  if (opts["updatedAt.lt"] !== void 0)
@@ -44019,8 +44291,6 @@ Examples:
44019
44291
  "sort",
44020
44292
  "created_at",
44021
44293
  "created_at__not",
44022
- "created_at__isNull",
44023
- "created_at__isNotNull",
44024
44294
  "created_at__equals",
44025
44295
  "created_at__lt",
44026
44296
  "created_at__lte",
@@ -44028,8 +44298,6 @@ Examples:
44028
44298
  "created_at__gte",
44029
44299
  "updated_at",
44030
44300
  "updated_at__not",
44031
- "updated_at__isNull",
44032
- "updated_at__isNotNull",
44033
44301
  "updated_at__equals",
44034
44302
  "updated_at__lt",
44035
44303
  "updated_at__lte",
@@ -44143,7 +44411,7 @@ Examples:
44143
44411
  // build/commands/generated/price-configurations.js
44144
44412
  function registerPrice_ConfigurationsCommands(parent) {
44145
44413
  const resource = parent.command("price-configurations").description("Manage price configurations");
44146
- 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", `
44414
+ 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", `
44147
44415
  Examples:
44148
44416
  hyperline price-configurations list
44149
44417
  hyperline price-configurations list --take <take> --product-id <product_id>`).action(async (opts) => {
@@ -44157,10 +44425,6 @@ Examples:
44157
44425
  args.product_id = opts.productId;
44158
44426
  if (opts["productId.not"] !== void 0)
44159
44427
  args.product_id__not = opts["productId.not"];
44160
- if (opts["productId.isNull"] !== void 0)
44161
- args.product_id__isNull = opts["productId.isNull"];
44162
- if (opts["productId.isNotNull"] !== void 0)
44163
- args.product_id__isNotNull = opts["productId.isNotNull"];
44164
44428
  if (opts["productId.equals"] !== void 0)
44165
44429
  args.product_id__equals = opts["productId.equals"];
44166
44430
  if (opts["productId.contains"] !== void 0)
@@ -44173,10 +44437,6 @@ Examples:
44173
44437
  args.price_book_id = opts.priceBookId;
44174
44438
  if (opts["priceBookId.not"] !== void 0)
44175
44439
  args.price_book_id__not = opts["priceBookId.not"];
44176
- if (opts["priceBookId.isNull"] !== void 0)
44177
- args.price_book_id__isNull = opts["priceBookId.isNull"];
44178
- if (opts["priceBookId.isNotNull"] !== void 0)
44179
- args.price_book_id__isNotNull = opts["priceBookId.isNotNull"];
44180
44440
  if (opts["priceBookId.equals"] !== void 0)
44181
44441
  args.price_book_id__equals = opts["priceBookId.equals"];
44182
44442
  if (opts["priceBookId.contains"] !== void 0)
@@ -44185,6 +44445,10 @@ Examples:
44185
44445
  args.price_book_id__startsWith = opts["priceBookId.startsWith"];
44186
44446
  if (opts["priceBookId.endWith"] !== void 0)
44187
44447
  args.price_book_id__endWith = opts["priceBookId.endWith"];
44448
+ if (opts["priceBookId.isNull"] !== void 0)
44449
+ args.price_book_id__isNull = opts["priceBookId.isNull"];
44450
+ if (opts["priceBookId.isNotNull"] !== void 0)
44451
+ args.price_book_id__isNotNull = opts["priceBookId.isNotNull"];
44188
44452
  if (opts.take !== void 0)
44189
44453
  args.take = Number(opts.take);
44190
44454
  if (opts.skip !== void 0)
@@ -44198,20 +44462,18 @@ Examples:
44198
44462
  "skip",
44199
44463
  "product_id",
44200
44464
  "product_id__not",
44201
- "product_id__isNull",
44202
- "product_id__isNotNull",
44203
44465
  "product_id__equals",
44204
44466
  "product_id__contains",
44205
44467
  "product_id__startsWith",
44206
44468
  "product_id__endWith",
44207
44469
  "price_book_id",
44208
44470
  "price_book_id__not",
44209
- "price_book_id__isNull",
44210
- "price_book_id__isNotNull",
44211
44471
  "price_book_id__equals",
44212
44472
  "price_book_id__contains",
44213
44473
  "price_book_id__startsWith",
44214
- "price_book_id__endWith"
44474
+ "price_book_id__endWith",
44475
+ "price_book_id__isNull",
44476
+ "price_book_id__isNotNull"
44215
44477
  ]
44216
44478
  });
44217
44479
  });
@@ -44233,7 +44495,7 @@ Examples:
44233
44495
  queryParamKeys: []
44234
44496
  });
44235
44497
  });
44236
- resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
44498
+ resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--aggregator-filter-id <value>", `ID of an existing metering filter of the product's aggregator to attach to this price configuration, instead of creating a new one with \`metering_filter\`.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
44237
44499
  Examples:
44238
44500
  hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
44239
44501
  hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --countries <countries> --price-book-id <price_book_id>
@@ -44252,6 +44514,8 @@ Examples:
44252
44514
  args.type = opts.type;
44253
44515
  if (opts.productId !== void 0)
44254
44516
  args.product_id = opts.productId;
44517
+ if (opts.aggregatorFilterId !== void 0)
44518
+ args.aggregator_filter_id = opts.aggregatorFilterId;
44255
44519
  if (opts.allowOnPortal !== void 0)
44256
44520
  args.allow_on_portal = true;
44257
44521
  if (opts.countries !== void 0)
@@ -44335,7 +44599,7 @@ Examples:
44335
44599
  // build/commands/generated/products.js
44336
44600
  function registerProductsCommands(parent) {
44337
44601
  const resource = parent.command("products").description("Manage products");
44338
- 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", `
44602
+ resource.command("list").description(`List products with optional filters for id, status, name, description, type, and price_book_id. Products define what is being sold (flat fee, per-unit, usage-based, etc.). Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--description <value>", `description`).option("--description.not <value>", `description__not`).option("--description.equals <value>", `description__equals`).option("--description.contains <value>", `description__contains`).option("--description.starts-with <value>", `description__startsWith`).option("--description.end-with <value>", `description__endWith`).option("--description.is-null <value>", `description__isNull`).option("--description.is-not-null <value>", `description__isNotNull`).option("--type <value>", `type`).option("--type.not <value>", `type__not`).option("--type.equals <value>", `type__equals`).option("--type.contains <value>", `type__contains`).option("--type.starts-with <value>", `type__startsWith`).option("--type.end-with <value>", `type__endWith`).option("--price-book-id <value>", `price_book_id`).addHelpText("after", `
44339
44603
  Examples:
44340
44604
  hyperline products list
44341
44605
  hyperline products list --take <take> --id <id>`).action(async (opts) => {
@@ -44349,10 +44613,6 @@ Examples:
44349
44613
  args.id = opts.id;
44350
44614
  if (opts["id.not"] !== void 0)
44351
44615
  args.id__not = opts["id.not"];
44352
- if (opts["id.isNull"] !== void 0)
44353
- args.id__isNull = opts["id.isNull"];
44354
- if (opts["id.isNotNull"] !== void 0)
44355
- args.id__isNotNull = opts["id.isNotNull"];
44356
44616
  if (opts["id.equals"] !== void 0)
44357
44617
  args.id__equals = opts["id.equals"];
44358
44618
  if (opts["id.contains"] !== void 0)
@@ -44369,10 +44629,6 @@ Examples:
44369
44629
  args.name = opts.name;
44370
44630
  if (opts["name.not"] !== void 0)
44371
44631
  args.name__not = opts["name.not"];
44372
- if (opts["name.isNull"] !== void 0)
44373
- args.name__isNull = opts["name.isNull"];
44374
- if (opts["name.isNotNull"] !== void 0)
44375
- args.name__isNotNull = opts["name.isNotNull"];
44376
44632
  if (opts["name.equals"] !== void 0)
44377
44633
  args.name__equals = opts["name.equals"];
44378
44634
  if (opts["name.contains"] !== void 0)
@@ -44385,10 +44641,6 @@ Examples:
44385
44641
  args.description = opts.description;
44386
44642
  if (opts["description.not"] !== void 0)
44387
44643
  args.description__not = opts["description.not"];
44388
- if (opts["description.isNull"] !== void 0)
44389
- args.description__isNull = opts["description.isNull"];
44390
- if (opts["description.isNotNull"] !== void 0)
44391
- args.description__isNotNull = opts["description.isNotNull"];
44392
44644
  if (opts["description.equals"] !== void 0)
44393
44645
  args.description__equals = opts["description.equals"];
44394
44646
  if (opts["description.contains"] !== void 0)
@@ -44397,14 +44649,14 @@ Examples:
44397
44649
  args.description__startsWith = opts["description.startsWith"];
44398
44650
  if (opts["description.endWith"] !== void 0)
44399
44651
  args.description__endWith = opts["description.endWith"];
44652
+ if (opts["description.isNull"] !== void 0)
44653
+ args.description__isNull = opts["description.isNull"];
44654
+ if (opts["description.isNotNull"] !== void 0)
44655
+ args.description__isNotNull = opts["description.isNotNull"];
44400
44656
  if (opts.type !== void 0)
44401
44657
  args.type = opts.type;
44402
44658
  if (opts["type.not"] !== void 0)
44403
44659
  args.type__not = opts["type.not"];
44404
- if (opts["type.isNull"] !== void 0)
44405
- args.type__isNull = opts["type.isNull"];
44406
- if (opts["type.isNotNull"] !== void 0)
44407
- args.type__isNotNull = opts["type.isNotNull"];
44408
44660
  if (opts["type.equals"] !== void 0)
44409
44661
  args.type__equals = opts["type.equals"];
44410
44662
  if (opts["type.contains"] !== void 0)
@@ -44428,8 +44680,6 @@ Examples:
44428
44680
  "skip",
44429
44681
  "id",
44430
44682
  "id__not",
44431
- "id__isNull",
44432
- "id__isNotNull",
44433
44683
  "id__equals",
44434
44684
  "id__contains",
44435
44685
  "id__startsWith",
@@ -44438,24 +44688,20 @@ Examples:
44438
44688
  "status__in",
44439
44689
  "name",
44440
44690
  "name__not",
44441
- "name__isNull",
44442
- "name__isNotNull",
44443
44691
  "name__equals",
44444
44692
  "name__contains",
44445
44693
  "name__startsWith",
44446
44694
  "name__endWith",
44447
44695
  "description",
44448
44696
  "description__not",
44449
- "description__isNull",
44450
- "description__isNotNull",
44451
44697
  "description__equals",
44452
44698
  "description__contains",
44453
44699
  "description__startsWith",
44454
44700
  "description__endWith",
44701
+ "description__isNull",
44702
+ "description__isNotNull",
44455
44703
  "type",
44456
44704
  "type__not",
44457
- "type__isNull",
44458
- "type__isNotNull",
44459
44705
  "type__equals",
44460
44706
  "type__contains",
44461
44707
  "type__startsWith",
@@ -44656,6 +44902,80 @@ Examples:
44656
44902
  });
44657
44903
  }
44658
44904
 
44905
+ // build/commands/generated/products-features.js
44906
+ function registerProducts_FeaturesCommands(parent) {
44907
+ const resource = parent.command("products-features").description("Manage products > features");
44908
+ resource.command("list-product-features").description(`List feature values assigned to a product.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
44909
+ Examples:
44910
+ hyperline products-features list-product-features --id <id>`).action(async (opts) => {
44911
+ const ctx = resource.parent?.opts()._ctx;
44912
+ if (!ctx) {
44913
+ process.stderr.write("Error: Not authenticated\n");
44914
+ process.exit(1);
44915
+ }
44916
+ const args = {};
44917
+ if (opts.id !== void 0)
44918
+ args.id = opts.id;
44919
+ await ctx.execute({
44920
+ method: "GET",
44921
+ path: "/v1/products/{id}/features",
44922
+ args,
44923
+ queryParamKeys: []
44924
+ });
44925
+ });
44926
+ 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", `
44927
+ Examples:
44928
+ hyperline products-features set-product-feature --id <id> --code <code> --value
44929
+ hyperline products-features set-product-feature --id <id> --code <code> --value --output json`).action(async (opts) => {
44930
+ const ctx = resource.parent?.opts()._ctx;
44931
+ if (!ctx) {
44932
+ process.stderr.write("Error: Not authenticated\n");
44933
+ process.exit(1);
44934
+ }
44935
+ const args = {};
44936
+ if (opts.id !== void 0)
44937
+ args.id = opts.id;
44938
+ if (opts.code !== void 0)
44939
+ args.code = opts.code;
44940
+ if (opts.value !== void 0)
44941
+ args.value = true;
44942
+ await ctx.execute({
44943
+ method: "PUT",
44944
+ path: "/v1/products/{id}/features/{code}",
44945
+ args,
44946
+ queryParamKeys: []
44947
+ });
44948
+ });
44949
+ 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", `
44950
+ Examples:
44951
+ hyperline products-features delete-product-feature --id <id> --code <code>
44952
+ hyperline products-features delete-product-feature --id <id> --code <code> --output json`).action(async (opts) => {
44953
+ const ctx = resource.parent?.opts()._ctx;
44954
+ if (!ctx) {
44955
+ process.stderr.write("Error: Not authenticated\n");
44956
+ process.exit(1);
44957
+ }
44958
+ const args = {};
44959
+ if (opts.id !== void 0)
44960
+ args.id = opts.id;
44961
+ if (opts.code !== void 0)
44962
+ args.code = opts.code;
44963
+ if (!opts.yes) {
44964
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
44965
+ if (!confirmed) {
44966
+ process.stdout.write("Aborted.\n");
44967
+ return;
44968
+ }
44969
+ }
44970
+ await ctx.execute({
44971
+ method: "DELETE",
44972
+ path: "/v1/products/{id}/features/{code}",
44973
+ args,
44974
+ queryParamKeys: []
44975
+ });
44976
+ });
44977
+ }
44978
+
44659
44979
  // build/commands/generated/quotes.js
44660
44980
  function registerQuotesCommands(parent) {
44661
44981
  const resource = parent.command("quotes").description("Manage quotes");
@@ -44665,12 +44985,12 @@ Quote status.
44665
44985
  - \`draft\`: The quote is a draft.
44666
44986
  - \`approved\`: The quote is approved and ready to be sent to the customer.
44667
44987
  - \`pending_signature\`: The quote is awaiting the customer's signature.
44668
- `).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("--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.
44988
+ `).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. 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.
44669
44989
 
44670
44990
  - \`all\`: Display all pricing tiers.
44671
44991
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
44672
44992
  - \`none\`: Hide all pricing tiers.
44673
- `).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).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", `
44993
+ `).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", `
44674
44994
  Examples:
44675
44995
  hyperline quotes create --customer-id <customer_id>
44676
44996
  hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
@@ -44709,6 +45029,8 @@ Examples:
44709
45029
  args.display_price_tiers = opts.displayPriceTiers;
44710
45030
  if (opts.displayPhaseValue !== void 0)
44711
45031
  args.display_phase_value = opts.displayPhaseValue;
45032
+ if (opts.displayDiscountsOnTotal !== void 0)
45033
+ args.display_discounts_on_total = opts.displayDiscountsOnTotal;
44712
45034
  if (opts.displayFirstInvoiceAmount !== void 0)
44713
45035
  args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
44714
45036
  if (opts.displayDocumentsInPreview !== void 0)
@@ -44723,6 +45045,8 @@ Examples:
44723
45045
  args.expires_at = opts.expiresAt;
44724
45046
  if (opts.amount !== void 0)
44725
45047
  args.amount = Number(opts.amount);
45048
+ if (opts.contractValue !== void 0)
45049
+ args.contract_value = Number(opts.contractValue);
44726
45050
  if (opts.collectCustomPropertyIds !== void 0)
44727
45051
  args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
44728
45052
  if (opts.contractClauseIds !== void 0)
@@ -44738,7 +45062,7 @@ Examples:
44738
45062
  queryParamKeys: []
44739
45063
  });
44740
45064
  });
44741
- 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", `
45065
+ 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", `
44742
45066
  Examples:
44743
45067
  hyperline quotes list
44744
45068
  hyperline quotes list --take <take> --id <id>`).action(async (opts) => {
@@ -44752,10 +45076,6 @@ Examples:
44752
45076
  args.id = opts.id;
44753
45077
  if (opts["id.not"] !== void 0)
44754
45078
  args.id__not = opts["id.not"];
44755
- if (opts["id.isNull"] !== void 0)
44756
- args.id__isNull = opts["id.isNull"];
44757
- if (opts["id.isNotNull"] !== void 0)
44758
- args.id__isNotNull = opts["id.isNotNull"];
44759
45079
  if (opts["id.equals"] !== void 0)
44760
45080
  args.id__equals = opts["id.equals"];
44761
45081
  if (opts["id.contains"] !== void 0)
@@ -44768,10 +45088,6 @@ Examples:
44768
45088
  args.number = opts.number;
44769
45089
  if (opts["number.not"] !== void 0)
44770
45090
  args.number__not = opts["number.not"];
44771
- if (opts["number.isNull"] !== void 0)
44772
- args.number__isNull = opts["number.isNull"];
44773
- if (opts["number.isNotNull"] !== void 0)
44774
- args.number__isNotNull = opts["number.isNotNull"];
44775
45091
  if (opts["number.equals"] !== void 0)
44776
45092
  args.number__equals = opts["number.equals"];
44777
45093
  if (opts["number.contains"] !== void 0)
@@ -44788,10 +45104,6 @@ Examples:
44788
45104
  args.customer_id = opts.customerId;
44789
45105
  if (opts["customerId.not"] !== void 0)
44790
45106
  args.customer_id__not = opts["customerId.not"];
44791
- if (opts["customerId.isNull"] !== void 0)
44792
- args.customer_id__isNull = opts["customerId.isNull"];
44793
- if (opts["customerId.isNotNull"] !== void 0)
44794
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
44795
45107
  if (opts["customerId.equals"] !== void 0)
44796
45108
  args.customer_id__equals = opts["customerId.equals"];
44797
45109
  if (opts["customerId.contains"] !== void 0)
@@ -44804,10 +45116,6 @@ Examples:
44804
45116
  args.template_id = opts.templateId;
44805
45117
  if (opts["templateId.not"] !== void 0)
44806
45118
  args.template_id__not = opts["templateId.not"];
44807
- if (opts["templateId.isNull"] !== void 0)
44808
- args.template_id__isNull = opts["templateId.isNull"];
44809
- if (opts["templateId.isNotNull"] !== void 0)
44810
- args.template_id__isNotNull = opts["templateId.isNotNull"];
44811
45119
  if (opts["templateId.equals"] !== void 0)
44812
45120
  args.template_id__equals = opts["templateId.equals"];
44813
45121
  if (opts["templateId.contains"] !== void 0)
@@ -44816,14 +45124,14 @@ Examples:
44816
45124
  args.template_id__startsWith = opts["templateId.startsWith"];
44817
45125
  if (opts["templateId.endWith"] !== void 0)
44818
45126
  args.template_id__endWith = opts["templateId.endWith"];
45127
+ if (opts["templateId.isNull"] !== void 0)
45128
+ args.template_id__isNull = opts["templateId.isNull"];
45129
+ if (opts["templateId.isNotNull"] !== void 0)
45130
+ args.template_id__isNotNull = opts["templateId.isNotNull"];
44819
45131
  if (opts.crmOpportunityId !== void 0)
44820
45132
  args.crm_opportunity_id = opts.crmOpportunityId;
44821
45133
  if (opts["crmOpportunityId.not"] !== void 0)
44822
45134
  args.crm_opportunity_id__not = opts["crmOpportunityId.not"];
44823
- if (opts["crmOpportunityId.isNull"] !== void 0)
44824
- args.crm_opportunity_id__isNull = opts["crmOpportunityId.isNull"];
44825
- if (opts["crmOpportunityId.isNotNull"] !== void 0)
44826
- args.crm_opportunity_id__isNotNull = opts["crmOpportunityId.isNotNull"];
44827
45135
  if (opts["crmOpportunityId.equals"] !== void 0)
44828
45136
  args.crm_opportunity_id__equals = opts["crmOpportunityId.equals"];
44829
45137
  if (opts["crmOpportunityId.contains"] !== void 0)
@@ -44832,30 +45140,16 @@ Examples:
44832
45140
  args.crm_opportunity_id__startsWith = opts["crmOpportunityId.startsWith"];
44833
45141
  if (opts["crmOpportunityId.endWith"] !== void 0)
44834
45142
  args.crm_opportunity_id__endWith = opts["crmOpportunityId.endWith"];
45143
+ if (opts["crmOpportunityId.isNull"] !== void 0)
45144
+ args.crm_opportunity_id__isNull = opts["crmOpportunityId.isNull"];
45145
+ if (opts["crmOpportunityId.isNotNull"] !== void 0)
45146
+ args.crm_opportunity_id__isNotNull = opts["crmOpportunityId.isNotNull"];
44835
45147
  if (opts.type !== void 0)
44836
45148
  args.type = opts.type;
44837
- if (opts["type.not"] !== void 0)
44838
- args.type__not = opts["type.not"];
44839
- if (opts["type.isNull"] !== void 0)
44840
- args.type__isNull = opts["type.isNull"];
44841
- if (opts["type.isNotNull"] !== void 0)
44842
- args.type__isNotNull = opts["type.isNotNull"];
44843
- if (opts["type.equals"] !== void 0)
44844
- args.type__equals = opts["type.equals"];
44845
- if (opts["type.contains"] !== void 0)
44846
- args.type__contains = opts["type.contains"];
44847
- if (opts["type.startsWith"] !== void 0)
44848
- args.type__startsWith = opts["type.startsWith"];
44849
- if (opts["type.endWith"] !== void 0)
44850
- args.type__endWith = opts["type.endWith"];
44851
45149
  if (opts.updatedAt !== void 0)
44852
45150
  args.updated_at = opts.updatedAt;
44853
45151
  if (opts["updatedAt.not"] !== void 0)
44854
45152
  args.updated_at__not = opts["updatedAt.not"];
44855
- if (opts["updatedAt.isNull"] !== void 0)
44856
- args.updated_at__isNull = opts["updatedAt.isNull"];
44857
- if (opts["updatedAt.isNotNull"] !== void 0)
44858
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
44859
45153
  if (opts["updatedAt.equals"] !== void 0)
44860
45154
  args.updated_at__equals = opts["updatedAt.equals"];
44861
45155
  if (opts["updatedAt.lt"] !== void 0)
@@ -44879,16 +45173,12 @@ Examples:
44879
45173
  "skip",
44880
45174
  "id",
44881
45175
  "id__not",
44882
- "id__isNull",
44883
- "id__isNotNull",
44884
45176
  "id__equals",
44885
45177
  "id__contains",
44886
45178
  "id__startsWith",
44887
45179
  "id__endWith",
44888
45180
  "number",
44889
45181
  "number__not",
44890
- "number__isNull",
44891
- "number__isNotNull",
44892
45182
  "number__equals",
44893
45183
  "number__contains",
44894
45184
  "number__startsWith",
@@ -44897,40 +45187,29 @@ Examples:
44897
45187
  "status__in",
44898
45188
  "customer_id",
44899
45189
  "customer_id__not",
44900
- "customer_id__isNull",
44901
- "customer_id__isNotNull",
44902
45190
  "customer_id__equals",
44903
45191
  "customer_id__contains",
44904
45192
  "customer_id__startsWith",
44905
45193
  "customer_id__endWith",
44906
45194
  "template_id",
44907
45195
  "template_id__not",
44908
- "template_id__isNull",
44909
- "template_id__isNotNull",
44910
45196
  "template_id__equals",
44911
45197
  "template_id__contains",
44912
45198
  "template_id__startsWith",
44913
45199
  "template_id__endWith",
45200
+ "template_id__isNull",
45201
+ "template_id__isNotNull",
44914
45202
  "crm_opportunity_id",
44915
45203
  "crm_opportunity_id__not",
44916
- "crm_opportunity_id__isNull",
44917
- "crm_opportunity_id__isNotNull",
44918
45204
  "crm_opportunity_id__equals",
44919
45205
  "crm_opportunity_id__contains",
44920
45206
  "crm_opportunity_id__startsWith",
44921
45207
  "crm_opportunity_id__endWith",
45208
+ "crm_opportunity_id__isNull",
45209
+ "crm_opportunity_id__isNotNull",
44922
45210
  "type",
44923
- "type__not",
44924
- "type__isNull",
44925
- "type__isNotNull",
44926
- "type__equals",
44927
- "type__contains",
44928
- "type__startsWith",
44929
- "type__endWith",
44930
45211
  "updated_at",
44931
45212
  "updated_at__not",
44932
- "updated_at__isNull",
44933
- "updated_at__isNotNull",
44934
45213
  "updated_at__equals",
44935
45214
  "updated_at__lt",
44936
45215
  "updated_at__lte",
@@ -44957,12 +45236,12 @@ Examples:
44957
45236
  queryParamKeys: []
44958
45237
  });
44959
45238
  });
44960
- 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("--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.
45239
+ 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. 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.
44961
45240
 
44962
45241
  - \`all\`: Display all pricing tiers.
44963
45242
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
44964
45243
  - \`none\`: Hide all pricing tiers.
44965
- `).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).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", `
45244
+ `).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", `
44966
45245
  Examples:
44967
45246
  hyperline quotes update --id <id>
44968
45247
  hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
@@ -44997,6 +45276,8 @@ Examples:
44997
45276
  args.display_price_tiers = opts.displayPriceTiers;
44998
45277
  if (opts.displayPhaseValue !== void 0)
44999
45278
  args.display_phase_value = opts.displayPhaseValue;
45279
+ if (opts.displayDiscountsOnTotal !== void 0)
45280
+ args.display_discounts_on_total = opts.displayDiscountsOnTotal;
45000
45281
  if (opts.displayFirstInvoiceAmount !== void 0)
45001
45282
  args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
45002
45283
  if (opts.displayDocumentsInPreview !== void 0)
@@ -45011,6 +45292,8 @@ Examples:
45011
45292
  args.expires_at = opts.expiresAt;
45012
45293
  if (opts.amount !== void 0)
45013
45294
  args.amount = Number(opts.amount);
45295
+ if (opts.contractValue !== void 0)
45296
+ args.contract_value = Number(opts.contractValue);
45014
45297
  if (opts.collectCustomPropertyIds !== void 0)
45015
45298
  args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
45016
45299
  if (opts.contractClauseIds !== void 0)
@@ -45066,10 +45349,11 @@ Examples:
45066
45349
  queryParamKeys: ["locale"]
45067
45350
  });
45068
45351
  });
45069
- resource.command("approve").description(`Approve a quote as the account owner. This is a prerequisite before sending the quote for customer signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45352
+ resource.command("finalize").description(`Finalize a draft quote. The quote is submitted for approval when approval is required, otherwise it becomes approved and ready to be sent for signature.`).requiredOption("--id <value>", `id parameter`).option("--requester-comment <value>", `Internal comment supplied by the requester for approvers; not displayed on the customer-facing quote.`).addHelpText("after", `
45070
45353
  Examples:
45071
- hyperline quotes approve --id <id>
45072
- hyperline quotes approve --id <id> --output json`).action(async (opts) => {
45354
+ hyperline quotes finalize --id <id>
45355
+ hyperline quotes finalize --id <id> --requester-comment <requester_comment>
45356
+ hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
45073
45357
  const ctx = resource.parent?.opts()._ctx;
45074
45358
  if (!ctx) {
45075
45359
  process.stderr.write("Error: Not authenticated\n");
@@ -45078,35 +45362,19 @@ Examples:
45078
45362
  const args = {};
45079
45363
  if (opts.id !== void 0)
45080
45364
  args.id = opts.id;
45365
+ if (opts.requesterComment !== void 0)
45366
+ args.requester_comment = opts.requesterComment;
45081
45367
  await ctx.execute({
45082
45368
  method: "POST",
45083
- path: "/v1/quotes/{id}/approve",
45084
- args,
45085
- queryParamKeys: []
45086
- });
45087
- });
45088
- resource.command("get-quote-approvals").description(`Read quote approvals without submitting the quote. Returns a newest-first array, currently containing one element. Draft and changes-requested quotes return current approval routing in preview mode; other statuses return the recorded request, ordered steps and decisions in execution mode. A null request means no workflow execution was recorded, including automatic and legacy approval.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45089
- Examples:
45090
- hyperline quotes get-quote-approvals --id <id>`).action(async (opts) => {
45091
- const ctx = resource.parent?.opts()._ctx;
45092
- if (!ctx) {
45093
- process.stderr.write("Error: Not authenticated\n");
45094
- process.exit(1);
45095
- }
45096
- const args = {};
45097
- if (opts.id !== void 0)
45098
- args.id = opts.id;
45099
- await ctx.execute({
45100
- method: "GET",
45101
- path: "/v1/quotes/{id}/approvals",
45369
+ path: "/v1/quotes/{id}/finalize",
45102
45370
  args,
45103
45371
  queryParamKeys: []
45104
45372
  });
45105
45373
  });
45106
- resource.command("finalize").description(`Finalize a draft quote. The quote is submitted for approval when approval is required, otherwise it becomes approved and ready to be sent for signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45374
+ resource.command("redraft").description(`Switch a quote back to draft so its subscription or invoice configuration can be updated. Works on quotes pending approval, with changes requested, approved, or awaiting signature. Cancels pending approval requests and the signature request; the quote must then be finalized again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45107
45375
  Examples:
45108
- hyperline quotes finalize --id <id>
45109
- hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
45376
+ hyperline quotes redraft --id <id>
45377
+ hyperline quotes redraft --id <id> --output json`).action(async (opts) => {
45110
45378
  const ctx = resource.parent?.opts()._ctx;
45111
45379
  if (!ctx) {
45112
45380
  process.stderr.write("Error: Not authenticated\n");
@@ -45117,7 +45385,7 @@ Examples:
45117
45385
  args.id = opts.id;
45118
45386
  await ctx.execute({
45119
45387
  method: "POST",
45120
- path: "/v1/quotes/{id}/finalize",
45388
+ path: "/v1/quotes/{id}/redraft",
45121
45389
  args,
45122
45390
  queryParamKeys: []
45123
45391
  });
@@ -45274,10 +45542,52 @@ Examples:
45274
45542
  });
45275
45543
  }
45276
45544
 
45545
+ // build/commands/generated/quotes-approvals.js
45546
+ function registerQuotes_ApprovalsCommands(parent) {
45547
+ const resource = parent.command("quotes-approvals").description("Manage quotes > approvals");
45548
+ resource.command("approve-quote").description(`Approve a quote as the account owner. This is a prerequisite before sending the quote for customer signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45549
+ Examples:
45550
+ hyperline quotes-approvals approve-quote --id <id>
45551
+ hyperline quotes-approvals approve-quote --id <id> --output json`).action(async (opts) => {
45552
+ const ctx = resource.parent?.opts()._ctx;
45553
+ if (!ctx) {
45554
+ process.stderr.write("Error: Not authenticated\n");
45555
+ process.exit(1);
45556
+ }
45557
+ const args = {};
45558
+ if (opts.id !== void 0)
45559
+ args.id = opts.id;
45560
+ await ctx.execute({
45561
+ method: "POST",
45562
+ path: "/v1/quotes/{id}/approve",
45563
+ args,
45564
+ queryParamKeys: []
45565
+ });
45566
+ });
45567
+ resource.command("get-quote-approvals").description(`Read quote approvals without submitting the quote. Returns a newest-first array, currently containing one element. Draft and changes-requested quotes return current approval routing in preview mode; other statuses return the recorded request, ordered steps and decisions in execution mode. A null request means no workflow execution was recorded, including automatic and legacy approval.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
45568
+ Examples:
45569
+ hyperline quotes-approvals get-quote-approvals --id <id>`).action(async (opts) => {
45570
+ const ctx = resource.parent?.opts()._ctx;
45571
+ if (!ctx) {
45572
+ process.stderr.write("Error: Not authenticated\n");
45573
+ process.exit(1);
45574
+ }
45575
+ const args = {};
45576
+ if (opts.id !== void 0)
45577
+ args.id = opts.id;
45578
+ await ctx.execute({
45579
+ method: "GET",
45580
+ path: "/v1/quotes/{id}/approvals",
45581
+ args,
45582
+ queryParamKeys: []
45583
+ });
45584
+ });
45585
+ }
45586
+
45277
45587
  // build/commands/generated/quotes-templates.js
45278
45588
  function registerQuotes_TemplatesCommands(parent) {
45279
45589
  const resource = parent.command("quotes-templates").description("Manage quotes > templates");
45280
- 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", `
45590
+ 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", `
45281
45591
  Examples:
45282
45592
  hyperline quotes-templates list-quote-templates
45283
45593
  hyperline quotes-templates list-quote-templates --take <take> --id <id>`).action(async (opts) => {
@@ -45291,10 +45601,6 @@ Examples:
45291
45601
  args.id = opts.id;
45292
45602
  if (opts["id.not"] !== void 0)
45293
45603
  args.id__not = opts["id.not"];
45294
- if (opts["id.isNull"] !== void 0)
45295
- args.id__isNull = opts["id.isNull"];
45296
- if (opts["id.isNotNull"] !== void 0)
45297
- args.id__isNotNull = opts["id.isNotNull"];
45298
45604
  if (opts["id.equals"] !== void 0)
45299
45605
  args.id__equals = opts["id.equals"];
45300
45606
  if (opts["id.contains"] !== void 0)
@@ -45307,10 +45613,6 @@ Examples:
45307
45613
  args.name = opts.name;
45308
45614
  if (opts["name.not"] !== void 0)
45309
45615
  args.name__not = opts["name.not"];
45310
- if (opts["name.isNull"] !== void 0)
45311
- args.name__isNull = opts["name.isNull"];
45312
- if (opts["name.isNotNull"] !== void 0)
45313
- args.name__isNotNull = opts["name.isNotNull"];
45314
45616
  if (opts["name.equals"] !== void 0)
45315
45617
  args.name__equals = opts["name.equals"];
45316
45618
  if (opts["name.contains"] !== void 0)
@@ -45323,10 +45625,6 @@ Examples:
45323
45625
  args.subscription_template_id = opts.subscriptionTemplateId;
45324
45626
  if (opts["subscriptionTemplateId.not"] !== void 0)
45325
45627
  args.subscription_template_id__not = opts["subscriptionTemplateId.not"];
45326
- if (opts["subscriptionTemplateId.isNull"] !== void 0)
45327
- args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
45328
- if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
45329
- args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
45330
45628
  if (opts["subscriptionTemplateId.equals"] !== void 0)
45331
45629
  args.subscription_template_id__equals = opts["subscriptionTemplateId.equals"];
45332
45630
  if (opts["subscriptionTemplateId.contains"] !== void 0)
@@ -45335,6 +45633,10 @@ Examples:
45335
45633
  args.subscription_template_id__startsWith = opts["subscriptionTemplateId.startsWith"];
45336
45634
  if (opts["subscriptionTemplateId.endWith"] !== void 0)
45337
45635
  args.subscription_template_id__endWith = opts["subscriptionTemplateId.endWith"];
45636
+ if (opts["subscriptionTemplateId.isNull"] !== void 0)
45637
+ args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
45638
+ if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
45639
+ args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
45338
45640
  if (opts.search !== void 0)
45339
45641
  args.search = opts.search;
45340
45642
  if (opts.take !== void 0)
@@ -45350,28 +45652,24 @@ Examples:
45350
45652
  "skip",
45351
45653
  "id",
45352
45654
  "id__not",
45353
- "id__isNull",
45354
- "id__isNotNull",
45355
45655
  "id__equals",
45356
45656
  "id__contains",
45357
45657
  "id__startsWith",
45358
45658
  "id__endWith",
45359
45659
  "name",
45360
45660
  "name__not",
45361
- "name__isNull",
45362
- "name__isNotNull",
45363
45661
  "name__equals",
45364
45662
  "name__contains",
45365
45663
  "name__startsWith",
45366
45664
  "name__endWith",
45367
45665
  "subscription_template_id",
45368
45666
  "subscription_template_id__not",
45369
- "subscription_template_id__isNull",
45370
- "subscription_template_id__isNotNull",
45371
45667
  "subscription_template_id__equals",
45372
45668
  "subscription_template_id__contains",
45373
45669
  "subscription_template_id__startsWith",
45374
45670
  "subscription_template_id__endWith",
45671
+ "subscription_template_id__isNull",
45672
+ "subscription_template_id__isNotNull",
45375
45673
  "search"
45376
45674
  ]
45377
45675
  });
@@ -45773,7 +46071,7 @@ Examples:
45773
46071
  queryParamKeys: []
45774
46072
  });
45775
46073
  });
45776
- 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>", `
46074
+ resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, cancel_at, custom_properties, and the active contract: contract_start__gte/__lte, contract_end__gte/__lte, renew_automatically. For upcoming renewals, combine contract_end__gte/__lte with renew_automatically, plus cancel_at for scheduled cancellations. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
45777
46075
  Subscription status filter.
45778
46076
 
45779
46077
  - \`active\`, \`pending\`, \`paused\`, \`errored\`, \`cancelled\`, \`draft\`, \`voided\`, \`archived\`: match that status.
@@ -45782,7 +46080,7 @@ Subscription status filter.
45782
46080
  - \`any\`: every status, no exclusion.
45783
46081
 
45784
46082
  Use \`status__in\` with comma-separated values to combine statuses. When the filter is omitted, \`draft\`, \`voided\`, \`cancelled\` and \`archived\` subscriptions are excluded.
45785
- `).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", `
46083
+ `).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--custom-properties <value>", `custom_properties`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).option("--cancel-at <value>", `cancel_at`).option("--cancel-at.not <value>", `cancel_at__not`).option("--cancel-at.equals <value>", `cancel_at__equals`).option("--cancel-at.lt <value>", `cancel_at__lt`).option("--cancel-at.lte <value>", `cancel_at__lte`).option("--cancel-at.gt <value>", `cancel_at__gt`).option("--cancel-at.gte <value>", `cancel_at__gte`).option("--cancel-at.is-null <value>", `cancel_at__isNull`).option("--cancel-at.is-not-null <value>", `cancel_at__isNotNull`).option("--contract-start.gte <value>", `Return only subscriptions whose active contract starts on or after this date.`).option("--contract-start.lte <value>", `Return only subscriptions whose active contract starts on or before this date.`).option("--contract-end.gte <value>", `Return only subscriptions whose active contract ends on or after this date.`).option("--contract-end.lte <value>", `Return only subscriptions whose active contract ends on or before this date.`).option("--renew-automatically <value>", `Return only subscriptions whose active contract renews automatically (\`true\`) or not (\`false\`).`).addHelpText("after", `
45786
46084
  Examples:
45787
46085
  hyperline subscriptions list
45788
46086
  hyperline subscriptions list --take <take> --activation-strategy <activation_strategy>`).action(async (opts) => {
@@ -45804,10 +46102,6 @@ Examples:
45804
46102
  args.currency = opts.currency;
45805
46103
  if (opts["currency.not"] !== void 0)
45806
46104
  args.currency__not = opts["currency.not"];
45807
- if (opts["currency.isNull"] !== void 0)
45808
- args.currency__isNull = opts["currency.isNull"];
45809
- if (opts["currency.isNotNull"] !== void 0)
45810
- args.currency__isNotNull = opts["currency.isNotNull"];
45811
46105
  if (opts["currency.equals"] !== void 0)
45812
46106
  args.currency__equals = opts["currency.equals"];
45813
46107
  if (opts["currency.contains"] !== void 0)
@@ -45820,10 +46114,6 @@ Examples:
45820
46114
  args.plan_id = opts.planId;
45821
46115
  if (opts["planId.not"] !== void 0)
45822
46116
  args.plan_id__not = opts["planId.not"];
45823
- if (opts["planId.isNull"] !== void 0)
45824
- args.plan_id__isNull = opts["planId.isNull"];
45825
- if (opts["planId.isNotNull"] !== void 0)
45826
- args.plan_id__isNotNull = opts["planId.isNotNull"];
45827
46117
  if (opts["planId.equals"] !== void 0)
45828
46118
  args.plan_id__equals = opts["planId.equals"];
45829
46119
  if (opts["planId.contains"] !== void 0)
@@ -45832,14 +46122,14 @@ Examples:
45832
46122
  args.plan_id__startsWith = opts["planId.startsWith"];
45833
46123
  if (opts["planId.endWith"] !== void 0)
45834
46124
  args.plan_id__endWith = opts["planId.endWith"];
46125
+ if (opts["planId.isNull"] !== void 0)
46126
+ args.plan_id__isNull = opts["planId.isNull"];
46127
+ if (opts["planId.isNotNull"] !== void 0)
46128
+ args.plan_id__isNotNull = opts["planId.isNotNull"];
45835
46129
  if (opts.originalQuoteId !== void 0)
45836
46130
  args.original_quote_id = opts.originalQuoteId;
45837
46131
  if (opts["originalQuoteId.not"] !== void 0)
45838
46132
  args.original_quote_id__not = opts["originalQuoteId.not"];
45839
- if (opts["originalQuoteId.isNull"] !== void 0)
45840
- args.original_quote_id__isNull = opts["originalQuoteId.isNull"];
45841
- if (opts["originalQuoteId.isNotNull"] !== void 0)
45842
- args.original_quote_id__isNotNull = opts["originalQuoteId.isNotNull"];
45843
46133
  if (opts["originalQuoteId.equals"] !== void 0)
45844
46134
  args.original_quote_id__equals = opts["originalQuoteId.equals"];
45845
46135
  if (opts["originalQuoteId.contains"] !== void 0)
@@ -45848,14 +46138,14 @@ Examples:
45848
46138
  args.original_quote_id__startsWith = opts["originalQuoteId.startsWith"];
45849
46139
  if (opts["originalQuoteId.endWith"] !== void 0)
45850
46140
  args.original_quote_id__endWith = opts["originalQuoteId.endWith"];
46141
+ if (opts["originalQuoteId.isNull"] !== void 0)
46142
+ args.original_quote_id__isNull = opts["originalQuoteId.isNull"];
46143
+ if (opts["originalQuoteId.isNotNull"] !== void 0)
46144
+ args.original_quote_id__isNotNull = opts["originalQuoteId.isNotNull"];
45851
46145
  if (opts.customerId !== void 0)
45852
46146
  args.customer_id = opts.customerId;
45853
46147
  if (opts["customerId.not"] !== void 0)
45854
46148
  args.customer_id__not = opts["customerId.not"];
45855
- if (opts["customerId.isNull"] !== void 0)
45856
- args.customer_id__isNull = opts["customerId.isNull"];
45857
- if (opts["customerId.isNotNull"] !== void 0)
45858
- args.customer_id__isNotNull = opts["customerId.isNotNull"];
45859
46149
  if (opts["customerId.equals"] !== void 0)
45860
46150
  args.customer_id__equals = opts["customerId.equals"];
45861
46151
  if (opts["customerId.contains"] !== void 0)
@@ -45864,16 +46154,16 @@ Examples:
45864
46154
  args.customer_id__startsWith = opts["customerId.startsWith"];
45865
46155
  if (opts["customerId.endWith"] !== void 0)
45866
46156
  args.customer_id__endWith = opts["customerId.endWith"];
46157
+ if (opts["customerId.isNull"] !== void 0)
46158
+ args.customer_id__isNull = opts["customerId.isNull"];
46159
+ if (opts["customerId.isNotNull"] !== void 0)
46160
+ args.customer_id__isNotNull = opts["customerId.isNotNull"];
45867
46161
  if (opts.invoicingEntityId !== void 0)
45868
46162
  args.invoicing_entity_id = opts.invoicingEntityId;
45869
46163
  if (opts.purchaseOrder !== void 0)
45870
46164
  args.purchase_order = opts.purchaseOrder;
45871
46165
  if (opts["purchaseOrder.not"] !== void 0)
45872
46166
  args.purchase_order__not = opts["purchaseOrder.not"];
45873
- if (opts["purchaseOrder.isNull"] !== void 0)
45874
- args.purchase_order__isNull = opts["purchaseOrder.isNull"];
45875
- if (opts["purchaseOrder.isNotNull"] !== void 0)
45876
- args.purchase_order__isNotNull = opts["purchaseOrder.isNotNull"];
45877
46167
  if (opts["purchaseOrder.equals"] !== void 0)
45878
46168
  args.purchase_order__equals = opts["purchaseOrder.equals"];
45879
46169
  if (opts["purchaseOrder.contains"] !== void 0)
@@ -45882,6 +46172,10 @@ Examples:
45882
46172
  args.purchase_order__startsWith = opts["purchaseOrder.startsWith"];
45883
46173
  if (opts["purchaseOrder.endWith"] !== void 0)
45884
46174
  args.purchase_order__endWith = opts["purchaseOrder.endWith"];
46175
+ if (opts["purchaseOrder.isNull"] !== void 0)
46176
+ args.purchase_order__isNull = opts["purchaseOrder.isNull"];
46177
+ if (opts["purchaseOrder.isNotNull"] !== void 0)
46178
+ args.purchase_order__isNotNull = opts["purchaseOrder.isNotNull"];
45885
46179
  if (opts.customProperties !== void 0)
45886
46180
  args.custom_properties = opts.customProperties;
45887
46181
  if (opts.invoiceDrafts !== void 0)
@@ -45892,10 +46186,6 @@ Examples:
45892
46186
  args.updated_at = opts.updatedAt;
45893
46187
  if (opts["updatedAt.not"] !== void 0)
45894
46188
  args.updated_at__not = opts["updatedAt.not"];
45895
- if (opts["updatedAt.isNull"] !== void 0)
45896
- args.updated_at__isNull = opts["updatedAt.isNull"];
45897
- if (opts["updatedAt.isNotNull"] !== void 0)
45898
- args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
45899
46189
  if (opts["updatedAt.equals"] !== void 0)
45900
46190
  args.updated_at__equals = opts["updatedAt.equals"];
45901
46191
  if (opts["updatedAt.lt"] !== void 0)
@@ -45906,6 +46196,34 @@ Examples:
45906
46196
  args.updated_at__gt = opts["updatedAt.gt"];
45907
46197
  if (opts["updatedAt.gte"] !== void 0)
45908
46198
  args.updated_at__gte = opts["updatedAt.gte"];
46199
+ if (opts.cancelAt !== void 0)
46200
+ args.cancel_at = opts.cancelAt;
46201
+ if (opts["cancelAt.not"] !== void 0)
46202
+ args.cancel_at__not = opts["cancelAt.not"];
46203
+ if (opts["cancelAt.equals"] !== void 0)
46204
+ args.cancel_at__equals = opts["cancelAt.equals"];
46205
+ if (opts["cancelAt.lt"] !== void 0)
46206
+ args.cancel_at__lt = opts["cancelAt.lt"];
46207
+ if (opts["cancelAt.lte"] !== void 0)
46208
+ args.cancel_at__lte = opts["cancelAt.lte"];
46209
+ if (opts["cancelAt.gt"] !== void 0)
46210
+ args.cancel_at__gt = opts["cancelAt.gt"];
46211
+ if (opts["cancelAt.gte"] !== void 0)
46212
+ args.cancel_at__gte = opts["cancelAt.gte"];
46213
+ if (opts["cancelAt.isNull"] !== void 0)
46214
+ args.cancel_at__isNull = opts["cancelAt.isNull"];
46215
+ if (opts["cancelAt.isNotNull"] !== void 0)
46216
+ args.cancel_at__isNotNull = opts["cancelAt.isNotNull"];
46217
+ if (opts["contractStart.gte"] !== void 0)
46218
+ args.contract_start__gte = opts["contractStart.gte"];
46219
+ if (opts["contractStart.lte"] !== void 0)
46220
+ args.contract_start__lte = opts["contractStart.lte"];
46221
+ if (opts["contractEnd.gte"] !== void 0)
46222
+ args.contract_end__gte = opts["contractEnd.gte"];
46223
+ if (opts["contractEnd.lte"] !== void 0)
46224
+ args.contract_end__lte = opts["contractEnd.lte"];
46225
+ if (opts.renewAutomatically !== void 0)
46226
+ args.renew_automatically = opts.renewAutomatically;
45909
46227
  if (opts.take !== void 0)
45910
46228
  args.take = Number(opts.take);
45911
46229
  if (opts.skip !== void 0)
@@ -45923,57 +46241,67 @@ Examples:
45923
46241
  "status__in",
45924
46242
  "currency",
45925
46243
  "currency__not",
45926
- "currency__isNull",
45927
- "currency__isNotNull",
45928
46244
  "currency__equals",
45929
46245
  "currency__contains",
45930
46246
  "currency__startsWith",
45931
46247
  "currency__endWith",
45932
46248
  "plan_id",
45933
46249
  "plan_id__not",
45934
- "plan_id__isNull",
45935
- "plan_id__isNotNull",
45936
46250
  "plan_id__equals",
45937
46251
  "plan_id__contains",
45938
46252
  "plan_id__startsWith",
45939
46253
  "plan_id__endWith",
46254
+ "plan_id__isNull",
46255
+ "plan_id__isNotNull",
45940
46256
  "original_quote_id",
45941
46257
  "original_quote_id__not",
45942
- "original_quote_id__isNull",
45943
- "original_quote_id__isNotNull",
45944
46258
  "original_quote_id__equals",
45945
46259
  "original_quote_id__contains",
45946
46260
  "original_quote_id__startsWith",
45947
46261
  "original_quote_id__endWith",
46262
+ "original_quote_id__isNull",
46263
+ "original_quote_id__isNotNull",
45948
46264
  "customer_id",
45949
46265
  "customer_id__not",
45950
- "customer_id__isNull",
45951
- "customer_id__isNotNull",
45952
46266
  "customer_id__equals",
45953
46267
  "customer_id__contains",
45954
46268
  "customer_id__startsWith",
45955
46269
  "customer_id__endWith",
46270
+ "customer_id__isNull",
46271
+ "customer_id__isNotNull",
45956
46272
  "invoicing_entity_id",
45957
46273
  "purchase_order",
45958
46274
  "purchase_order__not",
45959
- "purchase_order__isNull",
45960
- "purchase_order__isNotNull",
45961
46275
  "purchase_order__equals",
45962
46276
  "purchase_order__contains",
45963
46277
  "purchase_order__startsWith",
45964
46278
  "purchase_order__endWith",
46279
+ "purchase_order__isNull",
46280
+ "purchase_order__isNotNull",
45965
46281
  "custom_properties",
45966
46282
  "invoice_drafts",
45967
46283
  "integration_entity_id",
45968
46284
  "updated_at",
45969
46285
  "updated_at__not",
45970
- "updated_at__isNull",
45971
- "updated_at__isNotNull",
45972
46286
  "updated_at__equals",
45973
46287
  "updated_at__lt",
45974
46288
  "updated_at__lte",
45975
46289
  "updated_at__gt",
45976
- "updated_at__gte"
46290
+ "updated_at__gte",
46291
+ "cancel_at",
46292
+ "cancel_at__not",
46293
+ "cancel_at__equals",
46294
+ "cancel_at__lt",
46295
+ "cancel_at__lte",
46296
+ "cancel_at__gt",
46297
+ "cancel_at__gte",
46298
+ "cancel_at__isNull",
46299
+ "cancel_at__isNotNull",
46300
+ "contract_start__gte",
46301
+ "contract_start__lte",
46302
+ "contract_end__gte",
46303
+ "contract_end__lte",
46304
+ "renew_automatically"
45977
46305
  ]
45978
46306
  });
45979
46307
  });
@@ -46255,7 +46583,7 @@ Examples:
46255
46583
  // build/commands/generated/subscriptions-transitions.js
46256
46584
  function registerSubscriptions_TransitionsCommands(parent) {
46257
46585
  const resource = parent.command("subscriptions-transitions").description("Manage subscriptions > transitions");
46258
- 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", `
46586
+ 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", `
46259
46587
  Examples:
46260
46588
  hyperline subscriptions-transitions list-subscription-transitions
46261
46589
  hyperline subscriptions-transitions list-subscription-transitions --take <take> --status <status>`).action(async (opts) => {
@@ -46273,10 +46601,6 @@ Examples:
46273
46601
  args.source_subscription_id = opts.sourceSubscriptionId;
46274
46602
  if (opts["sourceSubscriptionId.not"] !== void 0)
46275
46603
  args.source_subscription_id__not = opts["sourceSubscriptionId.not"];
46276
- if (opts["sourceSubscriptionId.isNull"] !== void 0)
46277
- args.source_subscription_id__isNull = opts["sourceSubscriptionId.isNull"];
46278
- if (opts["sourceSubscriptionId.isNotNull"] !== void 0)
46279
- args.source_subscription_id__isNotNull = opts["sourceSubscriptionId.isNotNull"];
46280
46604
  if (opts["sourceSubscriptionId.equals"] !== void 0)
46281
46605
  args.source_subscription_id__equals = opts["sourceSubscriptionId.equals"];
46282
46606
  if (opts["sourceSubscriptionId.contains"] !== void 0)
@@ -46289,10 +46613,6 @@ Examples:
46289
46613
  args.base_subscription_id = opts.baseSubscriptionId;
46290
46614
  if (opts["baseSubscriptionId.not"] !== void 0)
46291
46615
  args.base_subscription_id__not = opts["baseSubscriptionId.not"];
46292
- if (opts["baseSubscriptionId.isNull"] !== void 0)
46293
- args.base_subscription_id__isNull = opts["baseSubscriptionId.isNull"];
46294
- if (opts["baseSubscriptionId.isNotNull"] !== void 0)
46295
- args.base_subscription_id__isNotNull = opts["baseSubscriptionId.isNotNull"];
46296
46616
  if (opts["baseSubscriptionId.equals"] !== void 0)
46297
46617
  args.base_subscription_id__equals = opts["baseSubscriptionId.equals"];
46298
46618
  if (opts["baseSubscriptionId.contains"] !== void 0)
@@ -46305,10 +46625,6 @@ Examples:
46305
46625
  args.target_subscription_id = opts.targetSubscriptionId;
46306
46626
  if (opts["targetSubscriptionId.not"] !== void 0)
46307
46627
  args.target_subscription_id__not = opts["targetSubscriptionId.not"];
46308
- if (opts["targetSubscriptionId.isNull"] !== void 0)
46309
- args.target_subscription_id__isNull = opts["targetSubscriptionId.isNull"];
46310
- if (opts["targetSubscriptionId.isNotNull"] !== void 0)
46311
- args.target_subscription_id__isNotNull = opts["targetSubscriptionId.isNotNull"];
46312
46628
  if (opts["targetSubscriptionId.equals"] !== void 0)
46313
46629
  args.target_subscription_id__equals = opts["targetSubscriptionId.equals"];
46314
46630
  if (opts["targetSubscriptionId.contains"] !== void 0)
@@ -46317,14 +46633,14 @@ Examples:
46317
46633
  args.target_subscription_id__startsWith = opts["targetSubscriptionId.startsWith"];
46318
46634
  if (opts["targetSubscriptionId.endWith"] !== void 0)
46319
46635
  args.target_subscription_id__endWith = opts["targetSubscriptionId.endWith"];
46636
+ if (opts["targetSubscriptionId.isNull"] !== void 0)
46637
+ args.target_subscription_id__isNull = opts["targetSubscriptionId.isNull"];
46638
+ if (opts["targetSubscriptionId.isNotNull"] !== void 0)
46639
+ args.target_subscription_id__isNotNull = opts["targetSubscriptionId.isNotNull"];
46320
46640
  if (opts.transitionDate !== void 0)
46321
- args.transition_date = opts.transitionDate;
46322
- if (opts["transitionDate.not"] !== void 0)
46323
- args.transition_date__not = opts["transitionDate.not"];
46324
- if (opts["transitionDate.isNull"] !== void 0)
46325
- args.transition_date__isNull = opts["transitionDate.isNull"];
46326
- if (opts["transitionDate.isNotNull"] !== void 0)
46327
- args.transition_date__isNotNull = opts["transitionDate.isNotNull"];
46641
+ args.transition_date = opts.transitionDate;
46642
+ if (opts["transitionDate.not"] !== void 0)
46643
+ args.transition_date__not = opts["transitionDate.not"];
46328
46644
  if (opts["transitionDate.equals"] !== void 0)
46329
46645
  args.transition_date__equals = opts["transitionDate.equals"];
46330
46646
  if (opts["transitionDate.lt"] !== void 0)
@@ -46335,14 +46651,14 @@ Examples:
46335
46651
  args.transition_date__gt = opts["transitionDate.gt"];
46336
46652
  if (opts["transitionDate.gte"] !== void 0)
46337
46653
  args.transition_date__gte = opts["transitionDate.gte"];
46654
+ if (opts["transitionDate.isNull"] !== void 0)
46655
+ args.transition_date__isNull = opts["transitionDate.isNull"];
46656
+ if (opts["transitionDate.isNotNull"] !== void 0)
46657
+ args.transition_date__isNotNull = opts["transitionDate.isNotNull"];
46338
46658
  if (opts.transitionedAt !== void 0)
46339
46659
  args.transitioned_at = opts.transitionedAt;
46340
46660
  if (opts["transitionedAt.not"] !== void 0)
46341
46661
  args.transitioned_at__not = opts["transitionedAt.not"];
46342
- if (opts["transitionedAt.isNull"] !== void 0)
46343
- args.transitioned_at__isNull = opts["transitionedAt.isNull"];
46344
- if (opts["transitionedAt.isNotNull"] !== void 0)
46345
- args.transitioned_at__isNotNull = opts["transitionedAt.isNotNull"];
46346
46662
  if (opts["transitionedAt.equals"] !== void 0)
46347
46663
  args.transitioned_at__equals = opts["transitionedAt.equals"];
46348
46664
  if (opts["transitionedAt.lt"] !== void 0)
@@ -46353,6 +46669,10 @@ Examples:
46353
46669
  args.transitioned_at__gt = opts["transitionedAt.gt"];
46354
46670
  if (opts["transitionedAt.gte"] !== void 0)
46355
46671
  args.transitioned_at__gte = opts["transitionedAt.gte"];
46672
+ if (opts["transitionedAt.isNull"] !== void 0)
46673
+ args.transitioned_at__isNull = opts["transitionedAt.isNull"];
46674
+ if (opts["transitionedAt.isNotNull"] !== void 0)
46675
+ args.transitioned_at__isNotNull = opts["transitionedAt.isNotNull"];
46356
46676
  if (opts.take !== void 0)
46357
46677
  args.take = Number(opts.take);
46358
46678
  if (opts.skip !== void 0)
@@ -46368,46 +46688,42 @@ Examples:
46368
46688
  "status__in",
46369
46689
  "source_subscription_id",
46370
46690
  "source_subscription_id__not",
46371
- "source_subscription_id__isNull",
46372
- "source_subscription_id__isNotNull",
46373
46691
  "source_subscription_id__equals",
46374
46692
  "source_subscription_id__contains",
46375
46693
  "source_subscription_id__startsWith",
46376
46694
  "source_subscription_id__endWith",
46377
46695
  "base_subscription_id",
46378
46696
  "base_subscription_id__not",
46379
- "base_subscription_id__isNull",
46380
- "base_subscription_id__isNotNull",
46381
46697
  "base_subscription_id__equals",
46382
46698
  "base_subscription_id__contains",
46383
46699
  "base_subscription_id__startsWith",
46384
46700
  "base_subscription_id__endWith",
46385
46701
  "target_subscription_id",
46386
46702
  "target_subscription_id__not",
46387
- "target_subscription_id__isNull",
46388
- "target_subscription_id__isNotNull",
46389
46703
  "target_subscription_id__equals",
46390
46704
  "target_subscription_id__contains",
46391
46705
  "target_subscription_id__startsWith",
46392
46706
  "target_subscription_id__endWith",
46707
+ "target_subscription_id__isNull",
46708
+ "target_subscription_id__isNotNull",
46393
46709
  "transition_date",
46394
46710
  "transition_date__not",
46395
- "transition_date__isNull",
46396
- "transition_date__isNotNull",
46397
46711
  "transition_date__equals",
46398
46712
  "transition_date__lt",
46399
46713
  "transition_date__lte",
46400
46714
  "transition_date__gt",
46401
46715
  "transition_date__gte",
46716
+ "transition_date__isNull",
46717
+ "transition_date__isNotNull",
46402
46718
  "transitioned_at",
46403
46719
  "transitioned_at__not",
46404
- "transitioned_at__isNull",
46405
- "transitioned_at__isNotNull",
46406
46720
  "transitioned_at__equals",
46407
46721
  "transitioned_at__lt",
46408
46722
  "transitioned_at__lte",
46409
46723
  "transitioned_at__gt",
46410
- "transitioned_at__gte"
46724
+ "transitioned_at__gte",
46725
+ "transitioned_at__isNull",
46726
+ "transitioned_at__isNotNull"
46411
46727
  ]
46412
46728
  });
46413
46729
  });
@@ -46485,7 +46801,7 @@ Examples:
46485
46801
  // build/commands/generated/taxes.js
46486
46802
  function registerTaxesCommands(parent) {
46487
46803
  const resource = parent.command("taxes").description("Manage taxes");
46488
- 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", `
46804
+ 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", `
46489
46805
  Examples:
46490
46806
  hyperline taxes list-tax-rates
46491
46807
  hyperline taxes list-tax-rates --take <take> --id <id>`).action(async (opts) => {
@@ -46499,10 +46815,6 @@ Examples:
46499
46815
  args.id = opts.id;
46500
46816
  if (opts["id.not"] !== void 0)
46501
46817
  args.id__not = opts["id.not"];
46502
- if (opts["id.isNull"] !== void 0)
46503
- args.id__isNull = opts["id.isNull"];
46504
- if (opts["id.isNotNull"] !== void 0)
46505
- args.id__isNotNull = opts["id.isNotNull"];
46506
46818
  if (opts["id.equals"] !== void 0)
46507
46819
  args.id__equals = opts["id.equals"];
46508
46820
  if (opts["id.contains"] !== void 0)
@@ -46515,10 +46827,6 @@ Examples:
46515
46827
  args.name = opts.name;
46516
46828
  if (opts["name.not"] !== void 0)
46517
46829
  args.name__not = opts["name.not"];
46518
- if (opts["name.isNull"] !== void 0)
46519
- args.name__isNull = opts["name.isNull"];
46520
- if (opts["name.isNotNull"] !== void 0)
46521
- args.name__isNotNull = opts["name.isNotNull"];
46522
46830
  if (opts["name.equals"] !== void 0)
46523
46831
  args.name__equals = opts["name.equals"];
46524
46832
  if (opts["name.contains"] !== void 0)
@@ -46527,14 +46835,14 @@ Examples:
46527
46835
  args.name__startsWith = opts["name.startsWith"];
46528
46836
  if (opts["name.endWith"] !== void 0)
46529
46837
  args.name__endWith = opts["name.endWith"];
46838
+ if (opts["name.isNull"] !== void 0)
46839
+ args.name__isNull = opts["name.isNull"];
46840
+ if (opts["name.isNotNull"] !== void 0)
46841
+ args.name__isNotNull = opts["name.isNotNull"];
46530
46842
  if (opts.description !== void 0)
46531
46843
  args.description = opts.description;
46532
46844
  if (opts["description.not"] !== void 0)
46533
46845
  args.description__not = opts["description.not"];
46534
- if (opts["description.isNull"] !== void 0)
46535
- args.description__isNull = opts["description.isNull"];
46536
- if (opts["description.isNotNull"] !== void 0)
46537
- args.description__isNotNull = opts["description.isNotNull"];
46538
46846
  if (opts["description.equals"] !== void 0)
46539
46847
  args.description__equals = opts["description.equals"];
46540
46848
  if (opts["description.contains"] !== void 0)
@@ -46543,14 +46851,14 @@ Examples:
46543
46851
  args.description__startsWith = opts["description.startsWith"];
46544
46852
  if (opts["description.endWith"] !== void 0)
46545
46853
  args.description__endWith = opts["description.endWith"];
46854
+ if (opts["description.isNull"] !== void 0)
46855
+ args.description__isNull = opts["description.isNull"];
46856
+ if (opts["description.isNotNull"] !== void 0)
46857
+ args.description__isNotNull = opts["description.isNotNull"];
46546
46858
  if (opts.invoicingEntityId !== void 0)
46547
46859
  args.invoicing_entity_id = opts.invoicingEntityId;
46548
46860
  if (opts["invoicingEntityId.not"] !== void 0)
46549
46861
  args.invoicing_entity_id__not = opts["invoicingEntityId.not"];
46550
- if (opts["invoicingEntityId.isNull"] !== void 0)
46551
- args.invoicing_entity_id__isNull = opts["invoicingEntityId.isNull"];
46552
- if (opts["invoicingEntityId.isNotNull"] !== void 0)
46553
- args.invoicing_entity_id__isNotNull = opts["invoicingEntityId.isNotNull"];
46554
46862
  if (opts["invoicingEntityId.equals"] !== void 0)
46555
46863
  args.invoicing_entity_id__equals = opts["invoicingEntityId.equals"];
46556
46864
  if (opts["invoicingEntityId.contains"] !== void 0)
@@ -46572,32 +46880,28 @@ Examples:
46572
46880
  "skip",
46573
46881
  "id",
46574
46882
  "id__not",
46575
- "id__isNull",
46576
- "id__isNotNull",
46577
46883
  "id__equals",
46578
46884
  "id__contains",
46579
46885
  "id__startsWith",
46580
46886
  "id__endWith",
46581
46887
  "name",
46582
46888
  "name__not",
46583
- "name__isNull",
46584
- "name__isNotNull",
46585
46889
  "name__equals",
46586
46890
  "name__contains",
46587
46891
  "name__startsWith",
46588
46892
  "name__endWith",
46893
+ "name__isNull",
46894
+ "name__isNotNull",
46589
46895
  "description",
46590
46896
  "description__not",
46591
- "description__isNull",
46592
- "description__isNotNull",
46593
46897
  "description__equals",
46594
46898
  "description__contains",
46595
46899
  "description__startsWith",
46596
46900
  "description__endWith",
46901
+ "description__isNull",
46902
+ "description__isNotNull",
46597
46903
  "invoicing_entity_id",
46598
46904
  "invoicing_entity_id__not",
46599
- "invoicing_entity_id__isNull",
46600
- "invoicing_entity_id__isNotNull",
46601
46905
  "invoicing_entity_id__equals",
46602
46906
  "invoicing_entity_id__contains",
46603
46907
  "invoicing_entity_id__startsWith",
@@ -47181,6 +47485,7 @@ function registerAllCommands(program2) {
47181
47485
  registerCouponsCommands(program2);
47182
47486
  registerCoupons_Promotion_CodesCommands(program2);
47183
47487
  registerCustomers_CreditsCommands(program2);
47488
+ registerCustomers_FeaturesCommands(program2);
47184
47489
  registerCustomers_Payment_MethodsCommands(program2);
47185
47490
  registerCustomers_AddressCommands(program2);
47186
47491
  registerCustomers_ShippingCommands(program2);
@@ -47189,16 +47494,19 @@ function registerAllCommands(program2) {
47189
47494
  registerOrganisationsCommands(program2);
47190
47495
  registerCustomers_SegmentsCommands(program2);
47191
47496
  registerExportsCommands(program2);
47497
+ registerFeaturesCommands(program2);
47192
47498
  registerFilesCommands(program2);
47193
47499
  registerInvoicesCommands(program2);
47194
47500
  registerInvoices_TransactionsCommands(program2);
47195
47501
  registerInvoicing_EntitiesCommands(program2);
47196
- registerMonitoringCommands(program2);
47502
+ registerAi_MonitoringCommands(program2);
47197
47503
  registerPaymentsCommands(program2);
47504
+ registerProducts_FeaturesCommands(program2);
47198
47505
  registerProductsCommands(program2);
47199
47506
  registerPrice_ConfigurationsCommands(program2);
47200
47507
  registerQuotesCommands(program2);
47201
47508
  registerQuotes_TemplatesCommands(program2);
47509
+ registerQuotes_ApprovalsCommands(program2);
47202
47510
  registerSubscriptions_TemplatesCommands(program2);
47203
47511
  registerSubscriptionsCommands(program2);
47204
47512
  registerSubscriptions_TransitionsCommands(program2);
@@ -63218,6 +63526,7 @@ var de = {
63218
63526
  "accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
63219
63527
  "accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
63220
63528
  "accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
63529
+ "accounting.transactionChargedBack.entryDescription": "R\xFCckbuchung f\xFCr Rechnung {{invoiceId}}",
63221
63530
  "accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
63222
63531
  "accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
63223
63532
  "creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
@@ -63226,6 +63535,8 @@ var de = {
63226
63535
  "einvoicing.paymentFromWallet": "Zahlung aus Guthaben",
63227
63536
  "einvoicing.paymentProcessed": "Zahlung verarbeitet",
63228
63537
  "einvoicing.paymentReceived": "Zahlung erhalten",
63538
+ "invoices.minimumFee.adjustmentName": "Anpassung der Mindestgeb\xFChr",
63539
+ "invoices.minimumFee.name": "Mindestgeb\xFChr",
63229
63540
  "invoices.outstandingProduct.description": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{date}}",
63230
63541
  "invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
63231
63542
  "invoices.outstandingProduct.name": "Offener Saldo",
@@ -63259,6 +63570,8 @@ var en = {
63259
63570
  "creditNotes.refundChargeName": "Refund for invoice",
63260
63571
  "credits.bundleOf": "{{productName}} - Pack of {{creditCount}} credits",
63261
63572
  "credits.unitsOf": "{{productName}} - {{creditCount}} credits",
63573
+ "invoices.minimumFee.adjustmentName": "Minimum fee adjustment",
63574
+ "invoices.minimumFee.name": "Minimum fee",
63262
63575
  "invoices.outstandingProduct.description": "Unpaid amount from the invoice{{invoiceNumber}} emitted on {{date}}",
63263
63576
  "invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
63264
63577
  "invoices.outstandingProduct.name": "Outstanding balance",
@@ -63288,6 +63601,7 @@ var en = {
63288
63601
  "accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
63289
63602
  "accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
63290
63603
  "accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
63604
+ "accounting.transactionChargedBack.entryDescription": "Chargeback for Invoice {{invoiceId}}",
63291
63605
  "accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
63292
63606
  "accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
63293
63607
  "accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
@@ -63312,6 +63626,7 @@ var es = {
63312
63626
  "accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
63313
63627
  "accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
63314
63628
  "accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
63629
+ "accounting.transactionChargedBack.entryDescription": "Contracargo de la factura {{invoiceId}}",
63315
63630
  "accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
63316
63631
  "accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
63317
63632
  "creditNotes.refundChargeName": "Reembolso por factura",
@@ -63320,6 +63635,8 @@ var es = {
63320
63635
  "einvoicing.paymentFromWallet": "Pago desde el monedero",
63321
63636
  "einvoicing.paymentProcessed": "Pago procesado",
63322
63637
  "einvoicing.paymentReceived": "Pago recibido",
63638
+ "invoices.minimumFee.adjustmentName": "Ajuste del cargo m\xEDnimo",
63639
+ "invoices.minimumFee.name": "Cargo m\xEDnimo",
63323
63640
  "invoices.outstandingProduct.description": "Monto pendiente de la factura{{invoiceNumber}} emitida el {{date}}",
63324
63641
  "invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
63325
63642
  "invoices.outstandingProduct.name": "Saldo pendiente",
@@ -63359,6 +63676,7 @@ var fr = {
63359
63676
  "accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
63360
63677
  "accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
63361
63678
  "accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
63679
+ "accounting.transactionChargedBack.entryDescription": "R\xE9trofacturation de la facture {{invoiceId}}",
63362
63680
  "accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
63363
63681
  "accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
63364
63682
  "creditNotes.refundChargeName": "Remboursement pour facture",
@@ -63367,6 +63685,8 @@ var fr = {
63367
63685
  "einvoicing.paymentFromWallet": "Paiement depuis le portefeuille",
63368
63686
  "einvoicing.paymentProcessed": "Paiement effectu\xE9",
63369
63687
  "einvoicing.paymentReceived": "Paiement re\xE7u",
63688
+ "invoices.minimumFee.adjustmentName": "Ajustement des frais minimums",
63689
+ "invoices.minimumFee.name": "Frais minimums",
63370
63690
  "invoices.outstandingProduct.description": "Montant impay\xE9 de la facture{{invoiceNumber}} \xE9mise le {{date}}",
63371
63691
  "invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
63372
63692
  "invoices.outstandingProduct.name": "Solde impay\xE9",
@@ -63406,6 +63726,7 @@ var it = {
63406
63726
  "accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
63407
63727
  "accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
63408
63728
  "accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
63729
+ "accounting.transactionChargedBack.entryDescription": "Riaddebito per la fattura {{invoiceId}}",
63409
63730
  "accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
63410
63731
  "accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
63411
63732
  "creditNotes.refundChargeName": "Rimborso per fattura",
@@ -63414,6 +63735,8 @@ var it = {
63414
63735
  "einvoicing.paymentFromWallet": "Pagamento dal portafoglio",
63415
63736
  "einvoicing.paymentProcessed": "Pagamento elaborato",
63416
63737
  "einvoicing.paymentReceived": "Pagamento ricevuto",
63738
+ "invoices.minimumFee.adjustmentName": "Adeguamento all\u2019importo minimo",
63739
+ "invoices.minimumFee.name": "Importo minimo",
63417
63740
  "invoices.outstandingProduct.description": "Importo insoluto della fattura{{invoiceNumber}} emessa il {{date}}",
63418
63741
  "invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
63419
63742
  "invoices.outstandingProduct.name": "Saldo insoluto",
@@ -63453,6 +63776,7 @@ var lt = {
63453
63776
  "accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
63454
63777
  "accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
63455
63778
  "accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
63779
+ "accounting.transactionChargedBack.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} u\u017Egin\u010Dyto mok\u0117jimo gr\u0105\u017Einimas",
63456
63780
  "accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
63457
63781
  "accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
63458
63782
  "creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
@@ -63461,6 +63785,8 @@ var lt = {
63461
63785
  "einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
63462
63786
  "einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
63463
63787
  "einvoicing.paymentReceived": "Mok\u0117jimas gautas",
63788
+ "invoices.minimumFee.adjustmentName": "Minimalaus mokes\u010Dio koregavimas",
63789
+ "invoices.minimumFee.name": "Minimalus mokestis",
63464
63790
  "invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
63465
63791
  "invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
63466
63792
  "invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
@@ -63500,6 +63826,7 @@ var nl = {
63500
63826
  "accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
63501
63827
  "accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
63502
63828
  "accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
63829
+ "accounting.transactionChargedBack.entryDescription": "Terugboeking voor factuur {{invoiceId}}",
63503
63830
  "accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
63504
63831
  "accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
63505
63832
  "creditNotes.refundChargeName": "Terugbetaling voor factuur",
@@ -63508,6 +63835,8 @@ var nl = {
63508
63835
  "einvoicing.paymentFromWallet": "Betaling uit tegoed",
63509
63836
  "einvoicing.paymentProcessed": "Betaling verwerkt",
63510
63837
  "einvoicing.paymentReceived": "Betaling ontvangen",
63838
+ "invoices.minimumFee.adjustmentName": "Aanpassing minimumbedrag",
63839
+ "invoices.minimumFee.name": "Minimumbedrag",
63511
63840
  "invoices.outstandingProduct.description": "Onbetaald bedrag van de factuur{{invoiceNumber}} uitgegeven op {{date}}",
63512
63841
  "invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
63513
63842
  "invoices.outstandingProduct.name": "Openstaand saldo",
@@ -63547,6 +63876,7 @@ var pl = {
63547
63876
  "accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
63548
63877
  "accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
63549
63878
  "accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
63879
+ "accounting.transactionChargedBack.entryDescription": "Obci\u0105\u017Cenie zwrotne za faktur\u0119 {{invoiceId}}",
63550
63880
  "accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
63551
63881
  "accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
63552
63882
  "creditNotes.refundChargeName": "Zwrot za faktur\u0119",
@@ -63555,6 +63885,8 @@ var pl = {
63555
63885
  "einvoicing.paymentFromWallet": "P\u0142atno\u015B\u0107 z portfela",
63556
63886
  "einvoicing.paymentProcessed": "P\u0142atno\u015B\u0107 przetworzona",
63557
63887
  "einvoicing.paymentReceived": "P\u0142atno\u015B\u0107 otrzymana",
63888
+ "invoices.minimumFee.adjustmentName": "Wyr\xF3wnanie do op\u0142aty minimalnej",
63889
+ "invoices.minimumFee.name": "Op\u0142ata minimalna",
63558
63890
  "invoices.outstandingProduct.description": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} wystawionej {{date}}",
63559
63891
  "invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
63560
63892
  "invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
@@ -63594,6 +63926,7 @@ var pt = {
63594
63926
  "accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
63595
63927
  "accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
63596
63928
  "accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
63929
+ "accounting.transactionChargedBack.entryDescription": "Estorno da fatura {{invoiceId}}",
63597
63930
  "accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
63598
63931
  "accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
63599
63932
  "creditNotes.refundChargeName": "Reembolso pela fatura",
@@ -63602,6 +63935,8 @@ var pt = {
63602
63935
  "einvoicing.paymentFromWallet": "Pagamento da carteira",
63603
63936
  "einvoicing.paymentProcessed": "Pagamento processado",
63604
63937
  "einvoicing.paymentReceived": "Pagamento recebido",
63938
+ "invoices.minimumFee.adjustmentName": "Ajuste do valor m\xEDnimo",
63939
+ "invoices.minimumFee.name": "Valor m\xEDnimo",
63605
63940
  "invoices.outstandingProduct.description": "Valor em aberto da fatura{{invoiceNumber}} emitida em {{date}}",
63606
63941
  "invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
63607
63942
  "invoices.outstandingProduct.name": "Saldo em aberto",
@@ -63699,97 +64034,314 @@ var executionContextStorage = new AsyncLocalStorage();
63699
64034
  function getExecutionContext() {
63700
64035
  return executionContextStorage.getStore();
63701
64036
  }
63702
-
63703
- // ../hyperline-monitoring/build/context/correlationId.js
63704
- import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
63705
- var correlationIdStorage = new AsyncLocalStorage2();
63706
- function getCorrelationId() {
63707
- return correlationIdStorage.getStore();
64037
+
64038
+ // ../hyperline-monitoring/build/context/correlationId.js
64039
+ import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
64040
+ var correlationIdStorage = new AsyncLocalStorage2();
64041
+ function getCorrelationId() {
64042
+ return correlationIdStorage.getStore();
64043
+ }
64044
+
64045
+ // ../hyperline-config/build/index.js
64046
+ import "dotenv/config";
64047
+ import * as stackTraceParser from "stacktrace-parser";
64048
+ function coerceBoolean() {
64049
+ return external_exports.any().refine((value) => ["true", "false"].includes(value), {
64050
+ message: "Expected boolean"
64051
+ }).transform((value) => (
64052
+ // biome-ignore lint/complexity/noUselessTernary: ignore
64053
+ value === "true" ? true : false
64054
+ ));
64055
+ }
64056
+ var types = {
64057
+ string: external_exports.coerce.string,
64058
+ number: external_exports.coerce.number,
64059
+ boolean: coerceBoolean,
64060
+ enum: external_exports.enum
64061
+ };
64062
+ function getConfig(schema, testValues) {
64063
+ const validator = external_exports.object(Object.fromEntries(Object.entries(schema).map(([key, zodType]) => {
64064
+ if (zodType instanceof ZodOptional) {
64065
+ return [key, external_exports.string().optional()];
64066
+ }
64067
+ return [key, external_exports.string()];
64068
+ })));
64069
+ const processEnv = process.env;
64070
+ const isTestMode = processEnv.NODE_ENV === "test";
64071
+ const envVariables = {
64072
+ ...processEnv,
64073
+ ...isTestMode && testValues ? Object.fromEntries(Object.entries(testValues).map(([key, value]) => [key, String(value)])) : {}
64074
+ };
64075
+ const packageName = envVariables.npm_package_name;
64076
+ const parseProcessEnvResult = validator.safeParse(envVariables);
64077
+ if (!parseProcessEnvResult.success) {
64078
+ const parsedStackTrace = stackTraceParser.parse(parseProcessEnvResult.error.stack ?? "");
64079
+ const getConfigCallLine = parsedStackTrace.find((line) => {
64080
+ return !line.file?.includes("hyperline-config") && (line.file?.includes("apps/") || line.file?.includes("core/") || line.file?.includes("packages/"));
64081
+ });
64082
+ const callerFile = getConfigCallLine?.file;
64083
+ console.error(`Invalid environment variables for service \`${packageName}\`: \`${callerFile}\``);
64084
+ console.error(parseProcessEnvResult.error.format());
64085
+ process.exit(1);
64086
+ }
64087
+ const coercion = external_exports.object(schema);
64088
+ return coercion.parse(parseProcessEnvResult.data);
64089
+ }
64090
+
64091
+ // ../hyperline-monitoring/build/config.js
64092
+ var config2 = getConfig({
64093
+ // config
64094
+ APP_VERSION: types.string().optional(),
64095
+ // Deployment environment for log tagging, when it cannot be read off
64096
+ // NODE_ENV. Set only by the PDF render worker pools, which must run with
64097
+ // NODE_ENV="production" to get the production React build regardless of which
64098
+ // environment the pod is actually in (see core/invoicing/services/pdf/index.ts).
64099
+ // Unset everywhere else, so the NODE_ENV fallback keeps current behaviour.
64100
+ APP_ENV: types.string().optional(),
64101
+ DD_SERVICE: types.string().optional(),
64102
+ LOGGER_CONSOLE_ENABLED: types.boolean().optional(),
64103
+ LOGGER_STDOUT_ENABLED: types.boolean().optional(),
64104
+ NODE_ENV: types.enum(["local", "test", "staging", "sandbox", "production"]),
64105
+ EVENT_LOOP_MONITORING_ENABLED: types.boolean().optional(),
64106
+ MEMORY_MONITORING_ENABLED: types.boolean().optional(),
64107
+ MEMORY_MONITORING_INTERVAL_MS: types.number().optional()
64108
+ // secrets
64109
+ }, {
64110
+ APP_VERSION: void 0,
64111
+ APP_ENV: void 0,
64112
+ DD_SERVICE: void 0,
64113
+ LOGGER_CONSOLE_ENABLED: false,
64114
+ LOGGER_STDOUT_ENABLED: false,
64115
+ EVENT_LOOP_MONITORING_ENABLED: false,
64116
+ MEMORY_MONITORING_ENABLED: false,
64117
+ MEMORY_MONITORING_INTERVAL_MS: 3e4,
64118
+ NODE_ENV: "test"
64119
+ });
64120
+
64121
+ // ../hyperline-monitoring/build/logger/logger.js
64122
+ import * as util from "node:util";
64123
+ import prune2 from "json-prune";
64124
+ import * as winston from "winston";
64125
+
64126
+ // ../hyperline-monitoring/build/logger/formatting/format.js
64127
+ import prune from "json-prune";
64128
+
64129
+ // ../hyperline-monitoring/build/logger/formatting/logRedaction.js
64130
+ var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
64131
+ "accesstoken",
64132
+ "apitoken",
64133
+ "assertion",
64134
+ "authorization",
64135
+ "authtoken",
64136
+ "cardnumber",
64137
+ "clientassertion",
64138
+ "codeverifier",
64139
+ "connectionurl",
64140
+ "consumerkey",
64141
+ "cookie",
64142
+ "credential",
64143
+ "credentials",
64144
+ "iban",
64145
+ "idtoken",
64146
+ "privatekey",
64147
+ "publictoken",
64148
+ "refreshtoken",
64149
+ "sessiontoken",
64150
+ "token",
64151
+ "tokenid",
64152
+ "verificationcode"
64153
+ ]);
64154
+ var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password|passphrase|apikey)$/;
64155
+ var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
64156
+ var URL_ONLY_REDACTED_KEYS = /* @__PURE__ */ new Set(["key"]);
64157
+ var OAUTH_CODE_KEY = "code";
64158
+ var OAUTH_CODE_CONTEXT_KEYS = ["state", "grant_type"];
64159
+ var REDACTED_VALUE = "<redacted>";
64160
+ var TRUNCATED_VALUE = "[TRUNCATED: not redacted]";
64161
+ var TRUNCATED_KEY = "[TRUNCATED]";
64162
+ var MAX_REDACTION_DEPTH = 6;
64163
+ var MAX_ARRAY_ENTRIES = 50;
64164
+ var MAX_PARSED_STRING_LENGTH = 16384;
64165
+ var MAX_VISITED_NODES = 5e3;
64166
+ var MAX_CONTAINER_ENTRIES = 1e3;
64167
+ var MAX_STRING_CHARACTERS = 256e3;
64168
+ function redactLogBody({ body }) {
64169
+ return redactValue({
64170
+ value: body,
64171
+ depth: MAX_REDACTION_DEPTH,
64172
+ budget: {
64173
+ remainingNodes: MAX_VISITED_NODES,
64174
+ remainingChars: MAX_STRING_CHARACTERS
64175
+ }
64176
+ });
64177
+ }
64178
+ function redactLogUrl({ url: url2 }) {
64179
+ const queryIndex = url2.indexOf("?");
64180
+ if (queryIndex === -1) {
64181
+ return url2;
64182
+ }
64183
+ if (url2.length > MAX_PARSED_STRING_LENGTH) {
64184
+ return `${url2.slice(0, queryIndex)}?${TRUNCATED_VALUE}`;
64185
+ }
64186
+ const redactedQuery = redactFormEncoded({
64187
+ text: url2.slice(queryIndex + 1),
64188
+ extraRedactedKeys: URL_ONLY_REDACTED_KEYS
64189
+ });
64190
+ return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
64191
+ }
64192
+ function redactValue({ value, depth, budget }) {
64193
+ if (isOpaqueObject({ value })) {
64194
+ return replaceOpaqueObject({ value });
64195
+ }
64196
+ if (typeof value === "string") {
64197
+ if (value.length > budget.remainingChars) {
64198
+ return TRUNCATED_VALUE;
64199
+ }
64200
+ budget.remainingChars -= value.length;
64201
+ }
64202
+ if (depth <= 0 || budget.remainingNodes <= 0) {
64203
+ return isInspectable({ value }) ? TRUNCATED_VALUE : value;
64204
+ }
64205
+ budget.remainingNodes -= 1;
64206
+ if (typeof value === "string") {
64207
+ return redactString({ text: value, budget });
64208
+ }
64209
+ if (value instanceof URLSearchParams) {
64210
+ return redactValue({ value: value.toString(), depth, budget });
64211
+ }
64212
+ if (Array.isArray(value)) {
64213
+ return redactArray({ items: value, depth, budget });
64214
+ }
64215
+ if (isPlainObject2(value)) {
64216
+ return redactObject({ record: value, depth, budget });
64217
+ }
64218
+ return value;
64219
+ }
64220
+ function isOpaqueObject({ value }) {
64221
+ return typeof value === "object" && value !== null && !Array.isArray(value) && !isPlainObject2(value) && !(value instanceof URLSearchParams);
64222
+ }
64223
+ function replaceOpaqueObject({ value }) {
64224
+ if (typeof value !== "object" || value === null || value instanceof Date) {
64225
+ return value;
64226
+ }
64227
+ if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
64228
+ return `[BINARY ${value.byteLength} bytes]`;
64229
+ }
64230
+ if (value instanceof Blob) {
64231
+ return `[BINARY ${value.size} bytes]`;
64232
+ }
64233
+ if (value instanceof FormData || typeof Reflect.get(value, "pipe") === "function") {
64234
+ return "[BINARY stream]";
64235
+ }
64236
+ return TRUNCATED_VALUE;
64237
+ }
64238
+ function redactArray({ items, depth, budget }) {
64239
+ const isTruncated = items.length > MAX_ARRAY_ENTRIES;
64240
+ const keptItems = isTruncated ? items.slice(0, MAX_ARRAY_ENTRIES) : items;
64241
+ let redactedItems;
64242
+ for (const [index, item] of keptItems.entries()) {
64243
+ const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
64244
+ if (redactedItem !== item) {
64245
+ redactedItems ??= [...keptItems];
64246
+ redactedItems[index] = redactedItem;
64247
+ }
64248
+ }
64249
+ const result = redactedItems ?? keptItems;
64250
+ return isTruncated ? [...result, TRUNCATED_VALUE] : result;
64251
+ }
64252
+ function redactObject({ record: record2, depth, budget }) {
64253
+ const redactedEntries = /* @__PURE__ */ new Map();
64254
+ const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => Object.hasOwn(record2, contextKey));
64255
+ const keptKeys = [];
64256
+ let isTruncated = false;
64257
+ for (const key in record2) {
64258
+ if (!Object.hasOwn(record2, key)) {
64259
+ continue;
64260
+ }
64261
+ if (keptKeys.length >= MAX_CONTAINER_ENTRIES || key.length > budget.remainingChars) {
64262
+ isTruncated = true;
64263
+ break;
64264
+ }
64265
+ budget.remainingChars -= key.length;
64266
+ keptKeys.push(key);
64267
+ const nestedValue = record2[key];
64268
+ const isSensitiveKey = isRedactedKey({ key }) || carriesOAuthCode && key === OAUTH_CODE_KEY;
64269
+ const shouldRedact = isSensitiveKey && nestedValue != null && typeof nestedValue !== "boolean";
64270
+ if (shouldRedact) {
64271
+ budget.remainingNodes -= 1;
64272
+ }
64273
+ const redactedNestedValue = shouldRedact ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
64274
+ if (redactedNestedValue !== nestedValue) {
64275
+ redactedEntries.set(key, redactedNestedValue);
64276
+ }
64277
+ }
64278
+ if (isTruncated) {
64279
+ const keptRecord = {};
64280
+ for (const key of keptKeys) {
64281
+ keptRecord[key] = redactedEntries.has(key) ? redactedEntries.get(key) : record2[key];
64282
+ }
64283
+ keptRecord[TRUNCATED_KEY] = TRUNCATED_VALUE;
64284
+ return keptRecord;
64285
+ }
64286
+ return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
64287
+ }
64288
+ function redactString({ text, budget }) {
64289
+ if (text.length > MAX_PARSED_STRING_LENGTH) {
64290
+ return TRUNCATED_VALUE;
64291
+ }
64292
+ if (!isInspectable({ value: text })) {
64293
+ return text;
64294
+ }
64295
+ const trimmedText = text.trim();
64296
+ if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
64297
+ try {
64298
+ const parsedValue = JSON.parse(trimmedText);
64299
+ const redactedValue = redactValue({
64300
+ value: parsedValue,
64301
+ depth: MAX_REDACTION_DEPTH,
64302
+ budget
64303
+ });
64304
+ return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
64305
+ } catch {
64306
+ return REDACTED_KEY_CANDIDATE_PATTERN.test(text) ? TRUNCATED_VALUE : redactFormEncoded({ text }) ?? text;
64307
+ }
64308
+ }
64309
+ return redactFormEncoded({ text }) ?? text;
64310
+ }
64311
+ function redactFormEncoded({ text, extraRedactedKeys }) {
64312
+ if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
64313
+ return void 0;
64314
+ }
64315
+ const params = new URLSearchParams(text);
64316
+ const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => params.has(contextKey));
64317
+ let hasRedactedParam = false;
64318
+ for (const key of new Set(params.keys())) {
64319
+ if (isRedactedKey({ key }) || extraRedactedKeys?.has(key.toLowerCase()) || carriesOAuthCode && key === OAUTH_CODE_KEY) {
64320
+ params.set(key, REDACTED_VALUE);
64321
+ hasRedactedParam = true;
64322
+ }
64323
+ }
64324
+ return hasRedactedParam ? params.toString() : void 0;
64325
+ }
64326
+ function isRedactedKey({ key }) {
64327
+ const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
64328
+ return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
63708
64329
  }
63709
-
63710
- // ../hyperline-config/build/index.js
63711
- import "dotenv/config";
63712
- import * as stackTraceParser from "stacktrace-parser";
63713
- function coerceBoolean() {
63714
- return external_exports.any().refine((value) => ["true", "false"].includes(value), {
63715
- message: "Expected boolean"
63716
- }).transform((value) => (
63717
- // biome-ignore lint/complexity/noUselessTernary: ignore
63718
- value === "true" ? true : false
63719
- ));
64330
+ function isInspectable({ value }) {
64331
+ if (typeof value === "string") {
64332
+ return value.length > MAX_PARSED_STRING_LENGTH || /^\s*[{[]/.test(value) || value.includes("=") && REDACTED_KEY_CANDIDATE_PATTERN.test(value);
64333
+ }
64334
+ return value instanceof URLSearchParams || Array.isArray(value) || isPlainObject2(value);
63720
64335
  }
63721
- var types = {
63722
- string: external_exports.coerce.string,
63723
- number: external_exports.coerce.number,
63724
- boolean: coerceBoolean,
63725
- enum: external_exports.enum
63726
- };
63727
- function getConfig(schema, testValues) {
63728
- const validator = external_exports.object(Object.fromEntries(Object.entries(schema).map(([key, zodType]) => {
63729
- if (zodType instanceof ZodOptional) {
63730
- return [key, external_exports.string().optional()];
63731
- }
63732
- return [key, external_exports.string()];
63733
- })));
63734
- const processEnv = process.env;
63735
- const isTestMode = processEnv.NODE_ENV === "test";
63736
- const envVariables = {
63737
- ...processEnv,
63738
- ...isTestMode && testValues ? Object.fromEntries(Object.entries(testValues).map(([key, value]) => [key, String(value)])) : {}
63739
- };
63740
- const packageName = envVariables.npm_package_name;
63741
- const parseProcessEnvResult = validator.safeParse(envVariables);
63742
- if (!parseProcessEnvResult.success) {
63743
- const parsedStackTrace = stackTraceParser.parse(parseProcessEnvResult.error.stack ?? "");
63744
- const getConfigCallLine = parsedStackTrace.find((line) => {
63745
- return !line.file?.includes("hyperline-config") && (line.file?.includes("apps/") || line.file?.includes("core/") || line.file?.includes("packages/"));
63746
- });
63747
- const callerFile = getConfigCallLine?.file;
63748
- console.error(`Invalid environment variables for service \`${packageName}\`: \`${callerFile}\``);
63749
- console.error(parseProcessEnvResult.error.format());
63750
- process.exit(1);
64336
+ function isPlainObject2(value) {
64337
+ if (typeof value !== "object" || value === null) {
64338
+ return false;
63751
64339
  }
63752
- const coercion = external_exports.object(schema);
63753
- return coercion.parse(parseProcessEnvResult.data);
64340
+ const prototype = Object.getPrototypeOf(value);
64341
+ return prototype === Object.prototype || prototype === null;
63754
64342
  }
63755
64343
 
63756
- // ../hyperline-monitoring/build/config.js
63757
- var config2 = getConfig({
63758
- // config
63759
- APP_VERSION: types.string().optional(),
63760
- // Deployment environment for log tagging, when it cannot be read off
63761
- // NODE_ENV. Set only by the PDF render worker pools, which must run with
63762
- // NODE_ENV="production" to get the production React build regardless of which
63763
- // environment the pod is actually in (see core/invoicing/services/pdf/index.ts).
63764
- // Unset everywhere else, so the NODE_ENV fallback keeps current behaviour.
63765
- APP_ENV: types.string().optional(),
63766
- DD_SERVICE: types.string().optional(),
63767
- LOGGER_CONSOLE_ENABLED: types.boolean().optional(),
63768
- LOGGER_STDOUT_ENABLED: types.boolean().optional(),
63769
- NODE_ENV: types.enum(["local", "test", "staging", "sandbox", "production"]),
63770
- EVENT_LOOP_MONITORING_ENABLED: types.boolean().optional(),
63771
- MEMORY_MONITORING_ENABLED: types.boolean().optional(),
63772
- MEMORY_MONITORING_INTERVAL_MS: types.number().optional()
63773
- // secrets
63774
- }, {
63775
- APP_VERSION: void 0,
63776
- APP_ENV: void 0,
63777
- DD_SERVICE: void 0,
63778
- LOGGER_CONSOLE_ENABLED: false,
63779
- LOGGER_STDOUT_ENABLED: false,
63780
- EVENT_LOOP_MONITORING_ENABLED: false,
63781
- MEMORY_MONITORING_ENABLED: false,
63782
- MEMORY_MONITORING_INTERVAL_MS: 3e4,
63783
- NODE_ENV: "test"
63784
- });
63785
-
63786
- // ../hyperline-monitoring/build/logger/logger.js
63787
- import * as util from "node:util";
63788
- import prune2 from "json-prune";
63789
- import * as winston from "winston";
63790
-
63791
64344
  // ../hyperline-monitoring/build/logger/formatting/format.js
63792
- import prune from "json-prune";
63793
64345
  var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
63794
64346
  function jsonFormat(info) {
63795
64347
  const prunedInfo = JSON.parse(prune(info));
@@ -63850,14 +64402,106 @@ function transformPrune(info) {
63850
64402
  });
63851
64403
  return info;
63852
64404
  }
64405
+ var MAX_AXIOS_ERROR_DEPTH = 5;
64406
+ var MAX_AXIOS_ERROR_CONTAINER_ENTRIES = 1e3;
64407
+ var MAX_AXIOS_ERROR_VISITED_NODES = 5e3;
64408
+ var REDACTED_BODY_KEYS = /* @__PURE__ */ new Set(["requestBody", "responseBody"]);
63853
64409
  function transformAxiosError(info) {
63854
- Object.entries(info).forEach(([key, value]) => {
63855
- if (typeof value === "object" && value?.name === "AxiosError") {
63856
- info[key] = formatAxiosError(value);
64410
+ let walk;
64411
+ for (const [key, value] of Object.entries(info)) {
64412
+ if (typeof value !== "object" || value === null || REDACTED_BODY_KEYS.has(key)) {
64413
+ continue;
63857
64414
  }
63858
- });
64415
+ walk ??= {
64416
+ formatted: /* @__PURE__ */ new Map(),
64417
+ remainingNodes: MAX_AXIOS_ERROR_VISITED_NODES
64418
+ };
64419
+ const formattedValue = formatNestedAxiosErrors({
64420
+ value,
64421
+ depth: MAX_AXIOS_ERROR_DEPTH,
64422
+ walk
64423
+ });
64424
+ if (formattedValue !== value) {
64425
+ info[key] = formattedValue;
64426
+ }
64427
+ }
63859
64428
  return info;
63860
64429
  }
64430
+ function formatNestedAxiosErrors({ value, depth, walk }) {
64431
+ if (typeof value !== "object" || value === null) {
64432
+ return value;
64433
+ }
64434
+ if (walk.formatted.has(value)) {
64435
+ return walk.formatted.get(value);
64436
+ }
64437
+ if (Reflect.get(value, "name") === "AxiosError") {
64438
+ const formattedError = walk.remainingNodes > 0 ? formatAxiosError(value) : summarizeAxiosError({ error: value });
64439
+ walk.remainingNodes -= 1;
64440
+ walk.formatted.set(value, formattedError);
64441
+ return formattedError;
64442
+ }
64443
+ const isWalkable = Array.isArray(value) || value instanceof Error || isPlainRecord(value);
64444
+ if (!isWalkable || depth <= 0 || walk.remainingNodes <= 0) {
64445
+ return value;
64446
+ }
64447
+ walk.formatted.set(value, "[Circular]");
64448
+ walk.remainingNodes -= 1;
64449
+ const formattedValue = formatWalkableValue({ value, depth, walk });
64450
+ walk.formatted.set(value, formattedValue);
64451
+ return formattedValue;
64452
+ }
64453
+ function summarizeAxiosError({ error: error48 }) {
64454
+ return {
64455
+ name: Reflect.get(error48, "name"),
64456
+ message: Reflect.get(error48, "message"),
64457
+ code: Reflect.get(error48, "code")
64458
+ };
64459
+ }
64460
+ function formatWalkableValue({ value, depth, walk }) {
64461
+ if (Array.isArray(value)) {
64462
+ if (value.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
64463
+ return value;
64464
+ }
64465
+ let formattedItems;
64466
+ for (const [index, item] of value.entries()) {
64467
+ const formattedItem = formatNestedAxiosErrors({
64468
+ value: item,
64469
+ depth: depth - 1,
64470
+ walk
64471
+ });
64472
+ if (formattedItem !== item) {
64473
+ formattedItems ??= [...value];
64474
+ formattedItems[index] = formattedItem;
64475
+ }
64476
+ }
64477
+ return formattedItems ?? value;
64478
+ }
64479
+ const keys = Object.keys(value);
64480
+ if (keys.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
64481
+ return value;
64482
+ }
64483
+ const formattedEntries = /* @__PURE__ */ new Map();
64484
+ for (const key of keys) {
64485
+ const nestedValue = Reflect.get(value, key);
64486
+ const formattedNestedValue = formatNestedAxiosErrors({
64487
+ value: nestedValue,
64488
+ depth: depth - 1,
64489
+ walk
64490
+ });
64491
+ if (formattedNestedValue !== nestedValue) {
64492
+ formattedEntries.set(key, formattedNestedValue);
64493
+ }
64494
+ }
64495
+ if (formattedEntries.size === 0) {
64496
+ return value;
64497
+ }
64498
+ return {
64499
+ ...value,
64500
+ // Error properties are not enumerable, so the spread would drop them.
64501
+ ...value instanceof Error ? { name: value.name, message: value.message, stack: value.stack } : {},
64502
+ ...Object.fromEntries(formattedEntries)
64503
+ };
64504
+ }
63861
64505
  function formatAxiosError(error48) {
63862
64506
  if (!isRecord(error48) || error48.name !== "AxiosError") {
63863
64507
  return error48;
@@ -63870,9 +64514,9 @@ function formatAxiosError(error48) {
63870
64514
  code: error48.code,
63871
64515
  request: {
63872
64516
  method: request?.method,
63873
- url: request?.url,
64517
+ url: typeof request?.url === "string" ? redactLogUrl({ url: request.url }) : request?.url,
63874
64518
  baseURL: request?.baseURL,
63875
- params: request?.params,
64519
+ params: redactLogBody({ body: request?.params }),
63876
64520
  headers: redactHeaders({ headers: request?.headers }),
63877
64521
  "axios-retry": request?.["axios-retry"]
63878
64522
  },
@@ -63880,7 +64524,7 @@ function formatAxiosError(error48) {
63880
64524
  status: response?.status,
63881
64525
  statusText: response?.statusText,
63882
64526
  headers: redactHeaders({ headers: response?.headers }),
63883
- data: response?.data
64527
+ data: redactLogBody({ body: response?.data })
63884
64528
  }
63885
64529
  };
63886
64530
  }
@@ -63893,6 +64537,10 @@ function redactHeaders({ headers }) {
63893
64537
  REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
63894
64538
  ]));
63895
64539
  }
64540
+ function isPlainRecord(value) {
64541
+ const prototype = Object.getPrototypeOf(value);
64542
+ return prototype === Object.prototype || prototype === null;
64543
+ }
63896
64544
  function isRecord(value) {
63897
64545
  return typeof value === "object" && value !== null && !Array.isArray(value);
63898
64546
  }
@@ -63922,7 +64570,7 @@ function logHttpResponse(logger2, response, responseTime, extra) {
63922
64570
  const responseMetadata = {
63923
64571
  statusCode,
63924
64572
  responseTime,
63925
- responseBody,
64573
+ responseBody: redactLogBody({ body: responseBody }),
63926
64574
  // Redacted so secrets (authorization/cookie/token/…) never reach the logs
63927
64575
  // while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
63928
64576
  responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
@@ -63935,14 +64583,15 @@ function logHttpResponse(logger2, response, responseTime, extra) {
63935
64583
  }
63936
64584
  function transform2(request) {
63937
64585
  const method = request.method.toUpperCase();
63938
- const message = `${method} ${request.originalUrl}`;
64586
+ const originalUrl = redactLogUrl({ url: request.originalUrl });
64587
+ const message = `${method} ${originalUrl}`;
63939
64588
  const metadata = {};
63940
64589
  metadata.method = method;
63941
- metadata.url = request.url;
63942
- metadata.path = request.path;
64590
+ metadata.url = redactLogUrl({ url: request.url });
64591
+ metadata.path = redactLogUrl({ url: request.path });
63943
64592
  metadata.hostname = request.hostname;
63944
- metadata.originalUrl = request.originalUrl;
63945
- metadata.requestBody = request.body && typeof request.body === "object" && "apiKey" in request.body ? { ...request.body, apiKey: "<redacted>" } : request.body;
64593
+ metadata.originalUrl = originalUrl;
64594
+ metadata.requestBody = redactLogBody({ body: request.body });
63946
64595
  metadata.routePath = transformUrlIntoRoutePath(request);
63947
64596
  metadata.apiKeyEnd = request.headers["authorization"]?.slice(-6);
63948
64597
  return { message, metadata };
@@ -63989,7 +64638,16 @@ function buildLoggerFactory({ config: config4, context }) {
63989
64638
  const internalLogger = winston.createLogger({
63990
64639
  transports: transports2,
63991
64640
  defaultMeta,
63992
- format: winston.format.combine(winston.format.splat(), winston.format(addMetadata({ getCorrelationId, getExecutionContext }))(), winston.format(transformErrorEnrich)({ depth: 5 }), winston.format(transformPrune)(), winston.format(transformAxiosError)(), winston.format.timestamp()),
64641
+ format: winston.format.combine(
64642
+ winston.format.splat(),
64643
+ winston.format(addMetadata({ getCorrelationId, getExecutionContext }))(),
64644
+ // Before pruning: json-prune would otherwise serialize a binary
64645
+ // `response.data` byte by byte before it is summarised (#6006).
64646
+ winston.format(transformAxiosError)(),
64647
+ winston.format(transformErrorEnrich)({ depth: 5 }),
64648
+ winston.format(transformPrune)(),
64649
+ winston.format.timestamp()
64650
+ ),
63993
64651
  exitOnError: false
63994
64652
  });
63995
64653
  function createLogger3({ serviceName }) {
@@ -66336,11 +66994,32 @@ import { deepEqual } from "fast-equals";
66336
66994
 
66337
66995
  // ../hyperline-lib/build/utils/realignDatesToTimezone.js
66338
66996
  var import_shared4 = __toESM(require_shared(), 1);
66339
- var MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1e3;
66997
+ var MILLISECONDS_PER_HOUR = 60 * 60 * 1e3;
66998
+ var MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;
66340
66999
  var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
67000
+ var dateRealignmentModeSchema = external_exports.enum([
67001
+ "utc_midnight_import",
67002
+ "dst_hour_drift",
67003
+ "month_start_drift",
67004
+ "manual_phase_end_midnight"
67005
+ ]).default("utc_midnight_import");
67006
+ var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
67007
+ [23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
67008
+ [LAST_MILLISECOND_OF_DAY - MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
67009
+ [MILLISECONDS_PER_HOUR, -MILLISECONDS_PER_HOUR],
67010
+ [MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
67011
+ ]);
67012
+
67013
+ // ../hyperline-lib/build/utils/overviewPeriods.js
67014
+ var OverviewPeriodSchema = external_exports.enum([
67015
+ "this_month",
67016
+ "last_month",
67017
+ "last_3_months"
67018
+ ]);
66341
67019
 
66342
67020
  // ../hyperline-lib/build/utils/api/filterBuilder.js
66343
- var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
67021
+ var nullAuthorizedOperators = ["isNull", "isNotNull"];
67022
+ var baseAuthorizedOperators = ["not", ...nullAuthorizedOperators];
66344
67023
  var booleanAuthorizedOperators = [
66345
67024
  ...baseAuthorizedOperators,
66346
67025
  "equals"
@@ -66369,6 +67048,7 @@ var authorizedOperators = [
66369
67048
  ...arrayAuthorizedOperators,
66370
67049
  ...mapAuthorizedOperators
66371
67050
  ];
67051
+ var NullFilterValueSchema = BooleanSchema.or(external_exports.literal("")).optional();
66372
67052
 
66373
67053
  // ../hyperline-lib/build/http/dto/state.js
66374
67054
  var StateSchema = external_exports.enum(usStates).openapi({
@@ -66406,150 +67086,6 @@ var isAxiosError = axios.isAxiosError;
66406
67086
  // ../hyperline-lib/build/httpClient/httpClient.js
66407
67087
  import axios2 from "axios";
66408
67088
  import axiosRetry, { isNetworkOrIdempotentRequestError, retryAfter } from "axios-retry";
66409
-
66410
- // ../hyperline-lib/build/httpClient/logRedaction.js
66411
- var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
66412
- "accesstoken",
66413
- "apikey",
66414
- "apitoken",
66415
- "assertion",
66416
- "authtoken",
66417
- "clientassertion",
66418
- "codeverifier",
66419
- "credentials",
66420
- "idtoken",
66421
- "privatekey",
66422
- "refreshtoken",
66423
- "sessiontoken",
66424
- "token"
66425
- ]);
66426
- var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password)$/;
66427
- var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|password|assertion|verifier|credentials/i;
66428
- var REDACTED_VALUE = "<redacted>";
66429
- var MAX_REDACTION_DEPTH = 10;
66430
- var MAX_PARSED_STRING_LENGTH = 16384;
66431
- var MAX_VISITED_NODES = 1e3;
66432
- var MAX_CONTAINER_ENTRIES = MAX_VISITED_NODES;
66433
- function redactLogBody({ body }) {
66434
- return redactValue({
66435
- value: body,
66436
- depth: MAX_REDACTION_DEPTH,
66437
- budget: { remainingNodes: MAX_VISITED_NODES }
66438
- });
66439
- }
66440
- function redactLogUrl({ url: url2 }) {
66441
- const queryIndex = url2.indexOf("?");
66442
- if (queryIndex === -1 || url2.length > MAX_PARSED_STRING_LENGTH) {
66443
- return url2;
66444
- }
66445
- const redactedQuery = redactFormEncoded({ text: url2.slice(queryIndex + 1) });
66446
- return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
66447
- }
66448
- function redactValue({ value, depth, budget }) {
66449
- if (depth <= 0 || budget.remainingNodes <= 0) {
66450
- return value;
66451
- }
66452
- budget.remainingNodes -= 1;
66453
- if (typeof value === "string") {
66454
- return redactString({ text: value, budget });
66455
- }
66456
- if (value instanceof URLSearchParams) {
66457
- return redactFormEncoded({ text: value.toString() }) ?? value;
66458
- }
66459
- if (Array.isArray(value)) {
66460
- return redactArray({ items: value, depth, budget });
66461
- }
66462
- if (isPlainObject2(value)) {
66463
- return redactObject({ record: value, depth, budget });
66464
- }
66465
- return value;
66466
- }
66467
- function redactArray({ items, depth, budget }) {
66468
- if (items.length > MAX_CONTAINER_ENTRIES) {
66469
- return items;
66470
- }
66471
- let redactedItems;
66472
- for (const [index, item] of items.entries()) {
66473
- if (budget.remainingNodes <= 0) {
66474
- break;
66475
- }
66476
- const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
66477
- if (redactedItem !== item) {
66478
- redactedItems ??= [...items];
66479
- redactedItems[index] = redactedItem;
66480
- }
66481
- }
66482
- return redactedItems ?? items;
66483
- }
66484
- function redactObject({ record: record2, depth, budget }) {
66485
- const redactedEntries = /* @__PURE__ */ new Map();
66486
- let entryCount = 0;
66487
- for (const key in record2) {
66488
- if (!Object.hasOwn(record2, key)) {
66489
- continue;
66490
- }
66491
- entryCount += 1;
66492
- if (entryCount > MAX_CONTAINER_ENTRIES) {
66493
- return record2;
66494
- }
66495
- if (budget.remainingNodes <= 0) {
66496
- break;
66497
- }
66498
- const nestedValue = record2[key];
66499
- const redactedNestedValue = isRedactedKey({ key }) && nestedValue != null ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
66500
- if (redactedNestedValue !== nestedValue) {
66501
- redactedEntries.set(key, redactedNestedValue);
66502
- }
66503
- }
66504
- return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
66505
- }
66506
- function redactString({ text, budget }) {
66507
- if (text.length > MAX_PARSED_STRING_LENGTH) {
66508
- return text;
66509
- }
66510
- const trimmedText = text.trim();
66511
- if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
66512
- try {
66513
- const parsedValue = JSON.parse(trimmedText);
66514
- const redactedValue = redactValue({
66515
- value: parsedValue,
66516
- depth: MAX_REDACTION_DEPTH,
66517
- budget
66518
- });
66519
- return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
66520
- } catch {
66521
- return text;
66522
- }
66523
- }
66524
- return redactFormEncoded({ text }) ?? text;
66525
- }
66526
- function redactFormEncoded({ text }) {
66527
- if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
66528
- return void 0;
66529
- }
66530
- const params = new URLSearchParams(text);
66531
- let hasRedactedParam = false;
66532
- for (const key of new Set(params.keys())) {
66533
- if (isRedactedKey({ key })) {
66534
- params.set(key, REDACTED_VALUE);
66535
- hasRedactedParam = true;
66536
- }
66537
- }
66538
- return hasRedactedParam ? params.toString() : void 0;
66539
- }
66540
- function isRedactedKey({ key }) {
66541
- const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
66542
- return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
66543
- }
66544
- function isPlainObject2(value) {
66545
- if (typeof value !== "object" || value === null) {
66546
- return false;
66547
- }
66548
- const prototype = Object.getPrototypeOf(value);
66549
- return prototype === Object.prototype || prototype === null;
66550
- }
66551
-
66552
- // ../hyperline-lib/build/httpClient/httpClient.js
66553
67089
  import { AxiosError } from "axios";
66554
67090
  var recommendedRetryConfig = {
66555
67091
  retries: 3,
@@ -66617,14 +67153,14 @@ function isTooManyRequestsError(error48) {
66617
67153
  return error48.response?.status === 429;
66618
67154
  }
66619
67155
  var toLogRequest = (config4) => {
66620
- const url2 = redactLogUrl({ url: config4.url ?? "" });
67156
+ const url2 = config4.url ?? "";
66621
67157
  return {
66622
67158
  method: config4.method ?? "",
66623
67159
  url: url2,
66624
67160
  path: url2,
66625
67161
  hostname: config4.baseURL ?? "",
66626
67162
  originalUrl: `${config4.baseURL ?? ""}${url2}`,
66627
- body: redactLogBody({ body: config4.data }),
67163
+ body: config4.data,
66628
67164
  headers: {}
66629
67165
  };
66630
67166
  };
@@ -66644,9 +67180,13 @@ import multer2 from "multer";
66644
67180
  // ../hyperline-lib/build/httpRouter/file.js
66645
67181
  import helmet from "helmet";
66646
67182
 
66647
- // ../hyperline-lib/build/publicApi/auth/index.js
67183
+ // ../hyperline-lib/build/publicApi/auth/apiKey.js
66648
67184
  import { randomBytes as randomBytes2, scryptSync } from "node:crypto";
66649
67185
 
67186
+ // ../hyperline-lib/build/publicApi/auth/apiKeyHashCache.js
67187
+ import { createHash as createHash4 } from "node:crypto";
67188
+ var TTL_MS = 5 * 6e4;
67189
+
66650
67190
  // ../hyperline-mcp/build/requestBuilder.js
66651
67191
  function buildRequestConfig(path2, args, method, queryParamKeys = []) {
66652
67192
  const { url: url2, usedKeys } = replacePathParams(path2, args);