@hyperline/cli 0.1.0-build.1.ac83c71 → 0.1.0-build.1.ad15067

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_zod23 = 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_zod23.z.enum(countryIds2);
34991
+ var ZodTranslationsSchemaFn = (schema) => import_zod23.z.record(import_zod23.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_zod24 = require_lib();
36291
+ var ZodCurrencyId = import_zod24.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_zod24.z.string().or(import_zod24.z.number().transform((number4) => number4)).transform((number4) => number4);
36295
+ var ZodNumberCurrencyPositiveValue = import_zod24.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
36296
+ var ZodNumberCurrencyPositiveValueExcludingZero = import_zod24.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
36297
+ var ZodCurrencyMap = import_zod24.z.record(ZodNumberCurrency).refine(
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({
@@ -38583,7 +38578,7 @@ Examples:
38583
38578
  // build/commands/generated/accounting-revenue-recognition.js
38584
38579
  function registerAccounting_Revenue_RecognitionCommands(parent) {
38585
38580
  const resource = parent.command("accounting-revenue-recognition").description("Manage accounting > revenue recognition");
38586
- resource.command("get-rev-rec-waterfall").description(`Aggregate revenue-recognition schedules into a booked-by-recognition month matrix.`).option("--ledger-id <value>", `Ledger identifier.`).option("--year <number>", `Booked calendar year.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search customer, product, invoice, or schedule data.`).addHelpText("after", `
38581
+ resource.command("get-rev-rec-waterfall").description(`Aggregate revenue-recognition schedules into a booked-by-recognition month matrix.`).option("--ledger-id <value>", `Ledger identifier.`).option("--year <number>", `Booked calendar year.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search by invoice ID or number, customer name or ID, or subscription ID.`).addHelpText("after", `
38587
38582
  Examples:
38588
38583
  hyperline accounting-revenue-recognition get-rev-rec-waterfall
38589
38584
  hyperline accounting-revenue-recognition get-rev-rec-waterfall --ledger-id <ledger_id> --year <year>`).action(async (opts) => {
@@ -38616,7 +38611,7 @@ Examples:
38616
38611
  ]
38617
38612
  });
38618
38613
  });
38619
- resource.command("get-rev-rec-waterfall-cell").description(`List the schedules and slices contributing to a waterfall cell.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--ledger-id <value>", `Ledger identifier.`).option("--booked-month <value>", `Booked month formatted YYYY-MM; required if year is absent.`).option("--year <number>", `Booked year; required if booked_month is absent.`).option("--recognition-month <value>", `Recognition month formatted YYYY-MM.`).option("--cell-type <value>", `Waterfall cell category.`).option("--status <value>", `Recognition status filter.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search customer, product, invoice, or schedule data.`).addHelpText("after", `
38614
+ resource.command("get-rev-rec-waterfall-cell").description(`List the schedules and slices contributing to a waterfall cell.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--ledger-id <value>", `Ledger identifier.`).option("--booked-month <value>", `Booked month formatted YYYY-MM; required if year is absent.`).option("--year <number>", `Booked year; required if booked_month is absent.`).option("--recognition-month <value>", `Recognition month formatted YYYY-MM.`).option("--cell-type <value>", `Waterfall cell category.`).option("--status <value>", `Recognition status filter.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search by invoice ID or number, customer name or ID, or subscription ID.`).addHelpText("after", `
38620
38615
  Examples:
38621
38616
  hyperline accounting-revenue-recognition get-rev-rec-waterfall-cell
38622
38617
  hyperline accounting-revenue-recognition get-rev-rec-waterfall-cell --take <take> --ledger-id <ledger_id>`).action(async (opts) => {
@@ -38794,7 +38789,7 @@ Examples:
38794
38789
  queryParamKeys: []
38795
38790
  });
38796
38791
  });
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", `
38792
+ 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
38793
  Examples:
38799
38794
  hyperline accounting-revenue-recognition reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --reason-code <reason_code>
38800
38795
  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 +38802,12 @@ Examples:
38807
38802
  const args = {};
38808
38803
  if (opts.scheduleId !== void 0)
38809
38804
  args.schedule_id = opts.scheduleId;
38810
- if (opts.recognizeNowAmount !== void 0)
38811
- args.recognize_now_amount = opts.recognizeNowAmount;
38812
38805
  if (opts.reasonCode !== void 0)
38813
38806
  args.reason_code = opts.reasonCode;
38814
38807
  if (opts.reasonDetail !== void 0)
38815
38808
  args.reason_detail = opts.reasonDetail;
38809
+ if (opts.recognizeNowAmount !== void 0)
38810
+ args.recognize_now_amount = Number(opts.recognizeNowAmount);
38816
38811
  if (opts.window !== void 0)
38817
38812
  args.window = JSON.parse(opts.window);
38818
38813
  await ctx.execute({
@@ -38822,7 +38817,7 @@ Examples:
38822
38817
  queryParamKeys: []
38823
38818
  });
38824
38819
  });
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", `
38820
+ 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
38821
  Examples:
38827
38822
  hyperline accounting-revenue-recognition preview-reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount>
38828
38823
  hyperline accounting-revenue-recognition preview-reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --window <window>
@@ -38836,7 +38831,7 @@ Examples:
38836
38831
  if (opts.scheduleId !== void 0)
38837
38832
  args.schedule_id = opts.scheduleId;
38838
38833
  if (opts.recognizeNowAmount !== void 0)
38839
- args.recognize_now_amount = opts.recognizeNowAmount;
38834
+ args.recognize_now_amount = Number(opts.recognizeNowAmount);
38840
38835
  if (opts.window !== void 0)
38841
38836
  args.window = JSON.parse(opts.window);
38842
38837
  await ctx.execute({
@@ -39013,7 +39008,7 @@ Examples:
39013
39008
  queryParamKeys: []
39014
39009
  });
39015
39010
  });
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", `
39011
+ resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
39017
39012
  Examples:
39018
39013
  hyperline accounting-rules create --category <category> --priority <priority>
39019
39014
  hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
@@ -39052,8 +39047,24 @@ Examples:
39052
39047
  args.output_tax_ledger_account_id = opts.outputTaxLedgerAccountId;
39053
39048
  if (opts.uncollectibleDebitLedgerAccountId !== void 0)
39054
39049
  args.uncollectible_debit_ledger_account_id = opts.uncollectibleDebitLedgerAccountId;
39050
+ if (opts.allowanceForDoubtfulAccountsId !== void 0)
39051
+ args.allowance_for_doubtful_accounts_id = opts.allowanceForDoubtfulAccountsId;
39052
+ if (opts.providerFeesExpenseLedgerAccountId !== void 0)
39053
+ args.provider_fees_expense_ledger_account_id = opts.providerFeesExpenseLedgerAccountId;
39054
+ if (opts.paymentProcessingFeesExpenseLedgerAccountId !== void 0)
39055
+ args.payment_processing_fees_expense_ledger_account_id = opts.paymentProcessingFeesExpenseLedgerAccountId;
39056
+ if (opts.paymentProcessingFeesRevenueLedgerAccountId !== void 0)
39057
+ args.payment_processing_fees_revenue_ledger_account_id = opts.paymentProcessingFeesRevenueLedgerAccountId;
39055
39058
  if (opts.customerCreditsLedgerAccountId !== void 0)
39056
39059
  args.customer_credits_ledger_account_id = opts.customerCreditsLedgerAccountId;
39060
+ if (opts.revRecMethod !== void 0)
39061
+ args.rev_rec_method = opts.revRecMethod;
39062
+ if (opts.revRecGranularity !== void 0)
39063
+ args.rev_rec_granularity = opts.revRecGranularity;
39064
+ if (opts.revRecPointInTimeBasis !== void 0)
39065
+ args.rev_rec_point_in_time_basis = opts.revRecPointInTimeBasis;
39066
+ if (opts.discountRecognitionMethod !== void 0)
39067
+ args.discount_recognition_method = opts.discountRecognitionMethod;
39057
39068
  if (opts.journalId !== void 0)
39058
39069
  args.journal_id = opts.journalId;
39059
39070
  if (opts.entityType !== void 0)
@@ -39072,12 +39083,22 @@ Examples:
39072
39083
  args.currencies = JSON.parse(opts.currencies);
39073
39084
  if (opts.countries !== void 0)
39074
39085
  args.countries = JSON.parse(opts.countries);
39086
+ if (opts.taxSchemes !== void 0)
39087
+ args.tax_schemes = JSON.parse(opts.taxSchemes);
39088
+ if (opts.taxTerritories !== void 0)
39089
+ args.tax_territories = JSON.parse(opts.taxTerritories);
39090
+ if (opts.taxRateClasses !== void 0)
39091
+ args.tax_rate_classes = JSON.parse(opts.taxRateClasses);
39075
39092
  if (opts.couponIds !== void 0)
39076
39093
  args.coupon_ids = JSON.parse(opts.couponIds);
39077
39094
  if (opts.clientProviderIds !== void 0)
39078
39095
  args.client_provider_ids = JSON.parse(opts.clientProviderIds);
39079
39096
  if (opts.paymentMethodTypes !== void 0)
39080
39097
  args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
39098
+ if (opts.bankAccountIds !== void 0)
39099
+ args.bank_account_ids = JSON.parse(opts.bankAccountIds);
39100
+ if (opts.invoiceTypes !== void 0)
39101
+ args.invoice_types = JSON.parse(opts.invoiceTypes);
39081
39102
  if (opts.customPropertyFilters !== void 0)
39082
39103
  args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
39083
39104
  await ctx.execute({
@@ -39087,7 +39108,7 @@ Examples:
39087
39108
  queryParamKeys: []
39088
39109
  });
39089
39110
  });
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", `
39111
+ resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
39091
39112
  Examples:
39092
39113
  hyperline accounting-rules update --id <id>
39093
39114
  hyperline accounting-rules update --id <id> --name <name> --category <category>
@@ -39126,8 +39147,24 @@ Examples:
39126
39147
  args.output_tax_ledger_account_id = opts.outputTaxLedgerAccountId;
39127
39148
  if (opts.uncollectibleDebitLedgerAccountId !== void 0)
39128
39149
  args.uncollectible_debit_ledger_account_id = opts.uncollectibleDebitLedgerAccountId;
39150
+ if (opts.allowanceForDoubtfulAccountsId !== void 0)
39151
+ args.allowance_for_doubtful_accounts_id = opts.allowanceForDoubtfulAccountsId;
39152
+ if (opts.providerFeesExpenseLedgerAccountId !== void 0)
39153
+ args.provider_fees_expense_ledger_account_id = opts.providerFeesExpenseLedgerAccountId;
39154
+ if (opts.paymentProcessingFeesExpenseLedgerAccountId !== void 0)
39155
+ args.payment_processing_fees_expense_ledger_account_id = opts.paymentProcessingFeesExpenseLedgerAccountId;
39156
+ if (opts.paymentProcessingFeesRevenueLedgerAccountId !== void 0)
39157
+ args.payment_processing_fees_revenue_ledger_account_id = opts.paymentProcessingFeesRevenueLedgerAccountId;
39129
39158
  if (opts.customerCreditsLedgerAccountId !== void 0)
39130
39159
  args.customer_credits_ledger_account_id = opts.customerCreditsLedgerAccountId;
39160
+ if (opts.revRecMethod !== void 0)
39161
+ args.rev_rec_method = opts.revRecMethod;
39162
+ if (opts.revRecGranularity !== void 0)
39163
+ args.rev_rec_granularity = opts.revRecGranularity;
39164
+ if (opts.revRecPointInTimeBasis !== void 0)
39165
+ args.rev_rec_point_in_time_basis = opts.revRecPointInTimeBasis;
39166
+ if (opts.discountRecognitionMethod !== void 0)
39167
+ args.discount_recognition_method = opts.discountRecognitionMethod;
39131
39168
  if (opts.journalId !== void 0)
39132
39169
  args.journal_id = opts.journalId;
39133
39170
  if (opts.entityType !== void 0)
@@ -39146,12 +39183,22 @@ Examples:
39146
39183
  args.currencies = JSON.parse(opts.currencies);
39147
39184
  if (opts.countries !== void 0)
39148
39185
  args.countries = JSON.parse(opts.countries);
39186
+ if (opts.taxSchemes !== void 0)
39187
+ args.tax_schemes = JSON.parse(opts.taxSchemes);
39188
+ if (opts.taxTerritories !== void 0)
39189
+ args.tax_territories = JSON.parse(opts.taxTerritories);
39190
+ if (opts.taxRateClasses !== void 0)
39191
+ args.tax_rate_classes = JSON.parse(opts.taxRateClasses);
39149
39192
  if (opts.couponIds !== void 0)
39150
39193
  args.coupon_ids = JSON.parse(opts.couponIds);
39151
39194
  if (opts.clientProviderIds !== void 0)
39152
39195
  args.client_provider_ids = JSON.parse(opts.clientProviderIds);
39153
39196
  if (opts.paymentMethodTypes !== void 0)
39154
39197
  args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
39198
+ if (opts.bankAccountIds !== void 0)
39199
+ args.bank_account_ids = JSON.parse(opts.bankAccountIds);
39200
+ if (opts.invoiceTypes !== void 0)
39201
+ args.invoice_types = JSON.parse(opts.invoiceTypes);
39155
39202
  if (opts.customPropertyFilters !== void 0)
39156
39203
  args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
39157
39204
  await ctx.execute({
@@ -39187,7 +39234,7 @@ Examples:
39187
39234
  queryParamKeys: []
39188
39235
  });
39189
39236
  });
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", `
39237
+ 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
39238
  Examples:
39192
39239
  hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category>
39193
39240
  hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category> --product-id <product_id> --product-type <product_type>
@@ -39210,8 +39257,22 @@ Examples:
39210
39257
  args.currency = opts.currency;
39211
39258
  if (opts.country !== void 0)
39212
39259
  args.country = opts.country;
39260
+ if (opts.taxScheme !== void 0)
39261
+ args.tax_scheme = opts.taxScheme;
39262
+ if (opts.taxTerritory !== void 0)
39263
+ args.tax_territory = opts.taxTerritory;
39264
+ if (opts.taxRateClass !== void 0)
39265
+ args.tax_rate_class = opts.taxRateClass;
39213
39266
  if (opts.customerId !== void 0)
39214
39267
  args.customer_id = opts.customerId;
39268
+ if (opts.couponId !== void 0)
39269
+ args.coupon_id = opts.couponId;
39270
+ if (opts.clientProviderId !== void 0)
39271
+ args.client_provider_id = opts.clientProviderId;
39272
+ if (opts.paymentMethodType !== void 0)
39273
+ args.payment_method_type = opts.paymentMethodType;
39274
+ if (opts.bankAccountId !== void 0)
39275
+ args.bank_account_id = opts.bankAccountId;
39215
39276
  if (opts.invoiceType !== void 0)
39216
39277
  args.invoice_type = opts.invoiceType;
39217
39278
  if (opts.intervalPeriod !== void 0)
@@ -40444,6 +40505,68 @@ Examples:
40444
40505
  });
40445
40506
  }
40446
40507
 
40508
+ // build/commands/generated/ai-monitoring.js
40509
+ function registerAi_MonitoringCommands(parent) {
40510
+ const resource = parent.command("ai-monitoring").description("Manage ai > monitoring");
40511
+ resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score. Only completed analyses unless status is set.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
40512
+ Examples:
40513
+ hyperline ai-monitoring list-monitoring-analyses
40514
+ hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
40515
+ const ctx = resource.parent?.opts()._ctx;
40516
+ if (!ctx) {
40517
+ process.stderr.write("Error: Not authenticated\n");
40518
+ process.exit(1);
40519
+ }
40520
+ const args = {};
40521
+ if (opts.cursor !== void 0)
40522
+ args.cursor = opts.cursor;
40523
+ if (opts.includeTotal !== void 0)
40524
+ args.include_total = opts.includeTotal;
40525
+ if (opts.customerId !== void 0)
40526
+ args.customer_id = opts.customerId;
40527
+ if (opts.status !== void 0)
40528
+ args.status = opts.status;
40529
+ if (opts["createdAt.gte"] !== void 0)
40530
+ args.created_at__gte = opts["createdAt.gte"];
40531
+ if (opts["createdAt.lte"] !== void 0)
40532
+ args.created_at__lte = opts["createdAt.lte"];
40533
+ if (opts.limit !== void 0)
40534
+ args.limit = Number(opts.limit);
40535
+ await ctx.execute({
40536
+ method: "GET",
40537
+ path: "/v1/agents/monitoring/analyses",
40538
+ args,
40539
+ queryParamKeys: [
40540
+ "limit",
40541
+ "cursor",
40542
+ "include_total",
40543
+ "customer_id",
40544
+ "status",
40545
+ "created_at__gte",
40546
+ "created_at__lte"
40547
+ ]
40548
+ });
40549
+ });
40550
+ 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", `
40551
+ Examples:
40552
+ hyperline ai-monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
40553
+ const ctx = resource.parent?.opts()._ctx;
40554
+ if (!ctx) {
40555
+ process.stderr.write("Error: Not authenticated\n");
40556
+ process.exit(1);
40557
+ }
40558
+ const args = {};
40559
+ if (opts.id !== void 0)
40560
+ args.id = opts.id;
40561
+ await ctx.execute({
40562
+ method: "GET",
40563
+ path: "/v1/agents/monitoring/analyses/{id}",
40564
+ args,
40565
+ queryParamKeys: []
40566
+ });
40567
+ });
40568
+ }
40569
+
40447
40570
  // build/commands/generated/analytics.js
40448
40571
  function registerAnalyticsCommands(parent) {
40449
40572
  const resource = parent.command("analytics").description("Manage analytics");
@@ -41032,7 +41155,15 @@ Examples:
41032
41155
  // build/commands/generated/customers.js
41033
41156
  function registerCustomersCommands(parent) {
41034
41157
  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", `
41158
+ 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>", `
41159
+ Verification status of the customer tax ID.
41160
+
41161
+ - \`valid\`: Tax ID has been verified and is valid.
41162
+ - \`invalid\`: Tax ID has been verified and is invalid.
41163
+ - \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
41164
+ - \`unverified\`: Tax ID has not been verified yet.
41165
+ - \`unsupported\`: Tax ID verification for this type not supported yet.
41166
+ `).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", `
41036
41167
  Examples:
41037
41168
  hyperline customers list
41038
41169
  hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
@@ -41050,6 +41181,8 @@ Examples:
41050
41181
  args.order = opts.order;
41051
41182
  if (opts.sort !== void 0)
41052
41183
  args.sort = opts.sort;
41184
+ if (opts.taxIdStatus !== void 0)
41185
+ args.tax_id_status = opts.taxIdStatus;
41053
41186
  if (opts.name !== void 0)
41054
41187
  args.name = opts.name;
41055
41188
  if (opts["name.not"] !== void 0)
@@ -41234,6 +41367,7 @@ Examples:
41234
41367
  "include_total",
41235
41368
  "order",
41236
41369
  "sort",
41370
+ "tax_id_status",
41237
41371
  "name",
41238
41372
  "name__not",
41239
41373
  "name__isNull",
@@ -42114,7 +42248,7 @@ Examples:
42114
42248
  queryParamKeys: []
42115
42249
  });
42116
42250
  });
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", `
42251
+ 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
42252
  Examples:
42119
42253
  hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count>
42120
42254
  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 +42350,7 @@ Examples:
42216
42350
  queryParamKeys: []
42217
42351
  });
42218
42352
  });
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", `
42353
+ 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
42354
  Examples:
42221
42355
  hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
42222
42356
  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>
@@ -43373,7 +43507,7 @@ Examples:
43373
43507
  queryParamKeys: []
43374
43508
  });
43375
43509
  });
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", `
43510
+ 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
43511
  Examples:
43378
43512
  hyperline invoices void --id <id>
43379
43513
  hyperline invoices void --id <id> --send-email
@@ -43886,68 +44020,6 @@ Examples:
43886
44020
  });
43887
44021
  }
43888
44022
 
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
44023
  // build/commands/generated/organisations.js
43952
44024
  function registerOrganisationsCommands(parent) {
43953
44025
  const resource = parent.command("organisations").description("Manage organisations");
@@ -44665,12 +44737,12 @@ Quote status.
44665
44737
  - \`draft\`: The quote is a draft.
44666
44738
  - \`approved\`: The quote is approved and ready to be sent to the customer.
44667
44739
  - \`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.
44740
+ `).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
44669
44741
 
44670
44742
  - \`all\`: Display all pricing tiers.
44671
44743
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
44672
44744
  - \`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", `
44745
+ `).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
44746
  Examples:
44675
44747
  hyperline quotes create --customer-id <customer_id>
44676
44748
  hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
@@ -44709,6 +44781,8 @@ Examples:
44709
44781
  args.display_price_tiers = opts.displayPriceTiers;
44710
44782
  if (opts.displayPhaseValue !== void 0)
44711
44783
  args.display_phase_value = opts.displayPhaseValue;
44784
+ if (opts.displayDiscountsOnTotal !== void 0)
44785
+ args.display_discounts_on_total = opts.displayDiscountsOnTotal;
44712
44786
  if (opts.displayFirstInvoiceAmount !== void 0)
44713
44787
  args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
44714
44788
  if (opts.displayDocumentsInPreview !== void 0)
@@ -44723,6 +44797,8 @@ Examples:
44723
44797
  args.expires_at = opts.expiresAt;
44724
44798
  if (opts.amount !== void 0)
44725
44799
  args.amount = Number(opts.amount);
44800
+ if (opts.contractValue !== void 0)
44801
+ args.contract_value = Number(opts.contractValue);
44726
44802
  if (opts.collectCustomPropertyIds !== void 0)
44727
44803
  args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
44728
44804
  if (opts.contractClauseIds !== void 0)
@@ -44957,12 +45033,12 @@ Examples:
44957
45033
  queryParamKeys: []
44958
45034
  });
44959
45035
  });
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.
45036
+ resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value. Set to \`null\` to go back to the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
44961
45037
 
44962
45038
  - \`all\`: Display all pricing tiers.
44963
45039
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
44964
45040
  - \`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", `
45041
+ `).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
45042
  Examples:
44967
45043
  hyperline quotes update --id <id>
44968
45044
  hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
@@ -44997,6 +45073,8 @@ Examples:
44997
45073
  args.display_price_tiers = opts.displayPriceTiers;
44998
45074
  if (opts.displayPhaseValue !== void 0)
44999
45075
  args.display_phase_value = opts.displayPhaseValue;
45076
+ if (opts.displayDiscountsOnTotal !== void 0)
45077
+ args.display_discounts_on_total = opts.displayDiscountsOnTotal;
45000
45078
  if (opts.displayFirstInvoiceAmount !== void 0)
45001
45079
  args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
45002
45080
  if (opts.displayDocumentsInPreview !== void 0)
@@ -45011,6 +45089,8 @@ Examples:
45011
45089
  args.expires_at = opts.expiresAt;
45012
45090
  if (opts.amount !== void 0)
45013
45091
  args.amount = Number(opts.amount);
45092
+ if (opts.contractValue !== void 0)
45093
+ args.contract_value = Number(opts.contractValue);
45014
45094
  if (opts.collectCustomPropertyIds !== void 0)
45015
45095
  args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
45016
45096
  if (opts.contractClauseIds !== void 0)
@@ -45066,10 +45146,11 @@ Examples:
45066
45146
  queryParamKeys: ["locale"]
45067
45147
  });
45068
45148
  });
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", `
45149
+ 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
45150
  Examples:
45071
- hyperline quotes approve --id <id>
45072
- hyperline quotes approve --id <id> --output json`).action(async (opts) => {
45151
+ hyperline quotes finalize --id <id>
45152
+ hyperline quotes finalize --id <id> --requester-comment <requester_comment>
45153
+ hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
45073
45154
  const ctx = resource.parent?.opts()._ctx;
45074
45155
  if (!ctx) {
45075
45156
  process.stderr.write("Error: Not authenticated\n");
@@ -45078,35 +45159,19 @@ Examples:
45078
45159
  const args = {};
45079
45160
  if (opts.id !== void 0)
45080
45161
  args.id = opts.id;
45162
+ if (opts.requesterComment !== void 0)
45163
+ args.requester_comment = opts.requesterComment;
45081
45164
  await ctx.execute({
45082
45165
  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",
45166
+ path: "/v1/quotes/{id}/finalize",
45102
45167
  args,
45103
45168
  queryParamKeys: []
45104
45169
  });
45105
45170
  });
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", `
45171
+ 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
45172
  Examples:
45108
- hyperline quotes finalize --id <id>
45109
- hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
45173
+ hyperline quotes redraft --id <id>
45174
+ hyperline quotes redraft --id <id> --output json`).action(async (opts) => {
45110
45175
  const ctx = resource.parent?.opts()._ctx;
45111
45176
  if (!ctx) {
45112
45177
  process.stderr.write("Error: Not authenticated\n");
@@ -45117,7 +45182,7 @@ Examples:
45117
45182
  args.id = opts.id;
45118
45183
  await ctx.execute({
45119
45184
  method: "POST",
45120
- path: "/v1/quotes/{id}/finalize",
45185
+ path: "/v1/quotes/{id}/redraft",
45121
45186
  args,
45122
45187
  queryParamKeys: []
45123
45188
  });
@@ -45274,6 +45339,48 @@ Examples:
45274
45339
  });
45275
45340
  }
45276
45341
 
45342
+ // build/commands/generated/quotes-approvals.js
45343
+ function registerQuotes_ApprovalsCommands(parent) {
45344
+ const resource = parent.command("quotes-approvals").description("Manage quotes > approvals");
45345
+ 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", `
45346
+ Examples:
45347
+ hyperline quotes-approvals approve-quote --id <id>
45348
+ hyperline quotes-approvals approve-quote --id <id> --output json`).action(async (opts) => {
45349
+ const ctx = resource.parent?.opts()._ctx;
45350
+ if (!ctx) {
45351
+ process.stderr.write("Error: Not authenticated\n");
45352
+ process.exit(1);
45353
+ }
45354
+ const args = {};
45355
+ if (opts.id !== void 0)
45356
+ args.id = opts.id;
45357
+ await ctx.execute({
45358
+ method: "POST",
45359
+ path: "/v1/quotes/{id}/approve",
45360
+ args,
45361
+ queryParamKeys: []
45362
+ });
45363
+ });
45364
+ 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", `
45365
+ Examples:
45366
+ hyperline quotes-approvals get-quote-approvals --id <id>`).action(async (opts) => {
45367
+ const ctx = resource.parent?.opts()._ctx;
45368
+ if (!ctx) {
45369
+ process.stderr.write("Error: Not authenticated\n");
45370
+ process.exit(1);
45371
+ }
45372
+ const args = {};
45373
+ if (opts.id !== void 0)
45374
+ args.id = opts.id;
45375
+ await ctx.execute({
45376
+ method: "GET",
45377
+ path: "/v1/quotes/{id}/approvals",
45378
+ args,
45379
+ queryParamKeys: []
45380
+ });
45381
+ });
45382
+ }
45383
+
45277
45384
  // build/commands/generated/quotes-templates.js
45278
45385
  function registerQuotes_TemplatesCommands(parent) {
45279
45386
  const resource = parent.command("quotes-templates").description("Manage quotes > templates");
@@ -47193,12 +47300,13 @@ function registerAllCommands(program2) {
47193
47300
  registerInvoicesCommands(program2);
47194
47301
  registerInvoices_TransactionsCommands(program2);
47195
47302
  registerInvoicing_EntitiesCommands(program2);
47196
- registerMonitoringCommands(program2);
47303
+ registerAi_MonitoringCommands(program2);
47197
47304
  registerPaymentsCommands(program2);
47198
47305
  registerProductsCommands(program2);
47199
47306
  registerPrice_ConfigurationsCommands(program2);
47200
47307
  registerQuotesCommands(program2);
47201
47308
  registerQuotes_TemplatesCommands(program2);
47309
+ registerQuotes_ApprovalsCommands(program2);
47202
47310
  registerSubscriptions_TemplatesCommands(program2);
47203
47311
  registerSubscriptionsCommands(program2);
47204
47312
  registerSubscriptions_TransitionsCommands(program2);
@@ -63218,6 +63326,7 @@ var de = {
63218
63326
  "accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
63219
63327
  "accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
63220
63328
  "accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
63329
+ "accounting.transactionChargedBack.entryDescription": "R\xFCckbuchung f\xFCr Rechnung {{invoiceId}}",
63221
63330
  "accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
63222
63331
  "accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
63223
63332
  "creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
@@ -63226,6 +63335,8 @@ var de = {
63226
63335
  "einvoicing.paymentFromWallet": "Zahlung aus Guthaben",
63227
63336
  "einvoicing.paymentProcessed": "Zahlung verarbeitet",
63228
63337
  "einvoicing.paymentReceived": "Zahlung erhalten",
63338
+ "invoices.minimumFee.adjustmentName": "Anpassung der Mindestgeb\xFChr",
63339
+ "invoices.minimumFee.name": "Mindestgeb\xFChr",
63229
63340
  "invoices.outstandingProduct.description": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{date}}",
63230
63341
  "invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
63231
63342
  "invoices.outstandingProduct.name": "Offener Saldo",
@@ -63259,6 +63370,8 @@ var en = {
63259
63370
  "creditNotes.refundChargeName": "Refund for invoice",
63260
63371
  "credits.bundleOf": "{{productName}} - Pack of {{creditCount}} credits",
63261
63372
  "credits.unitsOf": "{{productName}} - {{creditCount}} credits",
63373
+ "invoices.minimumFee.adjustmentName": "Minimum fee adjustment",
63374
+ "invoices.minimumFee.name": "Minimum fee",
63262
63375
  "invoices.outstandingProduct.description": "Unpaid amount from the invoice{{invoiceNumber}} emitted on {{date}}",
63263
63376
  "invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
63264
63377
  "invoices.outstandingProduct.name": "Outstanding balance",
@@ -63288,6 +63401,7 @@ var en = {
63288
63401
  "accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
63289
63402
  "accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
63290
63403
  "accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
63404
+ "accounting.transactionChargedBack.entryDescription": "Chargeback for Invoice {{invoiceId}}",
63291
63405
  "accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
63292
63406
  "accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
63293
63407
  "accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
@@ -63312,6 +63426,7 @@ var es = {
63312
63426
  "accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
63313
63427
  "accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
63314
63428
  "accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
63429
+ "accounting.transactionChargedBack.entryDescription": "Contracargo de la factura {{invoiceId}}",
63315
63430
  "accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
63316
63431
  "accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
63317
63432
  "creditNotes.refundChargeName": "Reembolso por factura",
@@ -63320,6 +63435,8 @@ var es = {
63320
63435
  "einvoicing.paymentFromWallet": "Pago desde el monedero",
63321
63436
  "einvoicing.paymentProcessed": "Pago procesado",
63322
63437
  "einvoicing.paymentReceived": "Pago recibido",
63438
+ "invoices.minimumFee.adjustmentName": "Ajuste del cargo m\xEDnimo",
63439
+ "invoices.minimumFee.name": "Cargo m\xEDnimo",
63323
63440
  "invoices.outstandingProduct.description": "Monto pendiente de la factura{{invoiceNumber}} emitida el {{date}}",
63324
63441
  "invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
63325
63442
  "invoices.outstandingProduct.name": "Saldo pendiente",
@@ -63359,6 +63476,7 @@ var fr = {
63359
63476
  "accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
63360
63477
  "accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
63361
63478
  "accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
63479
+ "accounting.transactionChargedBack.entryDescription": "R\xE9trofacturation de la facture {{invoiceId}}",
63362
63480
  "accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
63363
63481
  "accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
63364
63482
  "creditNotes.refundChargeName": "Remboursement pour facture",
@@ -63367,6 +63485,8 @@ var fr = {
63367
63485
  "einvoicing.paymentFromWallet": "Paiement depuis le portefeuille",
63368
63486
  "einvoicing.paymentProcessed": "Paiement effectu\xE9",
63369
63487
  "einvoicing.paymentReceived": "Paiement re\xE7u",
63488
+ "invoices.minimumFee.adjustmentName": "Ajustement des frais minimums",
63489
+ "invoices.minimumFee.name": "Frais minimums",
63370
63490
  "invoices.outstandingProduct.description": "Montant impay\xE9 de la facture{{invoiceNumber}} \xE9mise le {{date}}",
63371
63491
  "invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
63372
63492
  "invoices.outstandingProduct.name": "Solde impay\xE9",
@@ -63406,6 +63526,7 @@ var it = {
63406
63526
  "accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
63407
63527
  "accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
63408
63528
  "accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
63529
+ "accounting.transactionChargedBack.entryDescription": "Riaddebito per la fattura {{invoiceId}}",
63409
63530
  "accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
63410
63531
  "accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
63411
63532
  "creditNotes.refundChargeName": "Rimborso per fattura",
@@ -63414,6 +63535,8 @@ var it = {
63414
63535
  "einvoicing.paymentFromWallet": "Pagamento dal portafoglio",
63415
63536
  "einvoicing.paymentProcessed": "Pagamento elaborato",
63416
63537
  "einvoicing.paymentReceived": "Pagamento ricevuto",
63538
+ "invoices.minimumFee.adjustmentName": "Adeguamento all\u2019importo minimo",
63539
+ "invoices.minimumFee.name": "Importo minimo",
63417
63540
  "invoices.outstandingProduct.description": "Importo insoluto della fattura{{invoiceNumber}} emessa il {{date}}",
63418
63541
  "invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
63419
63542
  "invoices.outstandingProduct.name": "Saldo insoluto",
@@ -63453,6 +63576,7 @@ var lt = {
63453
63576
  "accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
63454
63577
  "accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
63455
63578
  "accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
63579
+ "accounting.transactionChargedBack.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} u\u017Egin\u010Dyto mok\u0117jimo gr\u0105\u017Einimas",
63456
63580
  "accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
63457
63581
  "accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
63458
63582
  "creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
@@ -63461,6 +63585,8 @@ var lt = {
63461
63585
  "einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
63462
63586
  "einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
63463
63587
  "einvoicing.paymentReceived": "Mok\u0117jimas gautas",
63588
+ "invoices.minimumFee.adjustmentName": "Minimalaus mokes\u010Dio koregavimas",
63589
+ "invoices.minimumFee.name": "Minimalus mokestis",
63464
63590
  "invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
63465
63591
  "invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
63466
63592
  "invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
@@ -63500,6 +63626,7 @@ var nl = {
63500
63626
  "accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
63501
63627
  "accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
63502
63628
  "accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
63629
+ "accounting.transactionChargedBack.entryDescription": "Terugboeking voor factuur {{invoiceId}}",
63503
63630
  "accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
63504
63631
  "accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
63505
63632
  "creditNotes.refundChargeName": "Terugbetaling voor factuur",
@@ -63508,6 +63635,8 @@ var nl = {
63508
63635
  "einvoicing.paymentFromWallet": "Betaling uit tegoed",
63509
63636
  "einvoicing.paymentProcessed": "Betaling verwerkt",
63510
63637
  "einvoicing.paymentReceived": "Betaling ontvangen",
63638
+ "invoices.minimumFee.adjustmentName": "Aanpassing minimumbedrag",
63639
+ "invoices.minimumFee.name": "Minimumbedrag",
63511
63640
  "invoices.outstandingProduct.description": "Onbetaald bedrag van de factuur{{invoiceNumber}} uitgegeven op {{date}}",
63512
63641
  "invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
63513
63642
  "invoices.outstandingProduct.name": "Openstaand saldo",
@@ -63547,6 +63676,7 @@ var pl = {
63547
63676
  "accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
63548
63677
  "accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
63549
63678
  "accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
63679
+ "accounting.transactionChargedBack.entryDescription": "Obci\u0105\u017Cenie zwrotne za faktur\u0119 {{invoiceId}}",
63550
63680
  "accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
63551
63681
  "accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
63552
63682
  "creditNotes.refundChargeName": "Zwrot za faktur\u0119",
@@ -63555,6 +63685,8 @@ var pl = {
63555
63685
  "einvoicing.paymentFromWallet": "P\u0142atno\u015B\u0107 z portfela",
63556
63686
  "einvoicing.paymentProcessed": "P\u0142atno\u015B\u0107 przetworzona",
63557
63687
  "einvoicing.paymentReceived": "P\u0142atno\u015B\u0107 otrzymana",
63688
+ "invoices.minimumFee.adjustmentName": "Wyr\xF3wnanie do op\u0142aty minimalnej",
63689
+ "invoices.minimumFee.name": "Op\u0142ata minimalna",
63558
63690
  "invoices.outstandingProduct.description": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} wystawionej {{date}}",
63559
63691
  "invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
63560
63692
  "invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
@@ -63594,6 +63726,7 @@ var pt = {
63594
63726
  "accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
63595
63727
  "accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
63596
63728
  "accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
63729
+ "accounting.transactionChargedBack.entryDescription": "Estorno da fatura {{invoiceId}}",
63597
63730
  "accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
63598
63731
  "accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
63599
63732
  "creditNotes.refundChargeName": "Reembolso pela fatura",
@@ -63602,6 +63735,8 @@ var pt = {
63602
63735
  "einvoicing.paymentFromWallet": "Pagamento da carteira",
63603
63736
  "einvoicing.paymentProcessed": "Pagamento processado",
63604
63737
  "einvoicing.paymentReceived": "Pagamento recebido",
63738
+ "invoices.minimumFee.adjustmentName": "Ajuste do valor m\xEDnimo",
63739
+ "invoices.minimumFee.name": "Valor m\xEDnimo",
63605
63740
  "invoices.outstandingProduct.description": "Valor em aberto da fatura{{invoiceNumber}} emitida em {{date}}",
63606
63741
  "invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
63607
63742
  "invoices.outstandingProduct.name": "Saldo em aberto",
@@ -66336,8 +66471,16 @@ import { deepEqual } from "fast-equals";
66336
66471
 
66337
66472
  // ../hyperline-lib/build/utils/realignDatesToTimezone.js
66338
66473
  var import_shared4 = __toESM(require_shared(), 1);
66339
- var MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1e3;
66474
+ var MILLISECONDS_PER_HOUR = 60 * 60 * 1e3;
66475
+ var MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;
66340
66476
  var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
66477
+ var dateRealignmentModeSchema = external_exports.enum(["utc_midnight_import", "dst_hour_drift", "month_start_drift"]).default("utc_midnight_import");
66478
+ var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
66479
+ [23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
66480
+ [LAST_MILLISECOND_OF_DAY - MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
66481
+ [MILLISECONDS_PER_HOUR, -MILLISECONDS_PER_HOUR],
66482
+ [MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
66483
+ ]);
66341
66484
 
66342
66485
  // ../hyperline-lib/build/utils/api/filterBuilder.js
66343
66486
  var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperline/cli",
3
- "version": "0.1.0-build.1.ac83c71",
3
+ "version": "0.1.0-build.1.ad15067",
4
4
  "description": "Agent-first CLI for Hyperline API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",