@hyperline/cli 0.1.0-build.1.0fbd9ac → 0.1.0-build.1.104bd82

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.
@@ -34894,10 +34894,10 @@ var require_shared = __commonJS({
34894
34894
  ZodId: () => ZodId,
34895
34895
  ZodTranslationsSchemaFn: () => ZodTranslationsSchemaFn
34896
34896
  });
34897
- var import_zod18 = require_lib();
34897
+ var import_zod20 = require_lib();
34898
34898
  var countryIds2 = ["all", ...countries.map(({ id }) => id)];
34899
- var ZodId = import_zod18.z.enum(countryIds2);
34900
- var ZodTranslationsSchemaFn = (schema) => import_zod18.z.record(import_zod18.z.string(), schema.optional());
34899
+ var ZodId = import_zod20.z.enum(countryIds2);
34900
+ var ZodTranslationsSchemaFn = (schema) => import_zod20.z.record(import_zod20.z.string(), schema.optional());
34901
34901
  var UsStates = [
34902
34902
  { id: "AA", name: "Armed Forces Americas" },
34903
34903
  { id: "AE", name: "Armed Forces Europe" },
@@ -37934,7 +37934,7 @@ Examples:
37934
37934
  queryParamKeys: ["take", "skip"]
37935
37935
  });
37936
37936
  });
37937
- resource.command("get").description(`Retrieve a specific bank account by its ID. Returns bank account details including IBAN, BIC, and currency.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
37937
+ resource.command("get").description(`Retrieve a specific bank account by its ID. Returns masked bank account details, account type, balance, and currency.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
37938
37938
  Examples:
37939
37939
  hyperline bank-accounts get --id <id>`).action(async (opts) => {
37940
37940
  const ctx = resource.parent?.opts()._ctx;
@@ -37952,6 +37952,31 @@ Examples:
37952
37952
  queryParamKeys: []
37953
37953
  });
37954
37954
  });
37955
+ resource.command("list-bank-account-transactions").description(`List open banking transactions for a specific bank account. Paginated with limit/cursor.`).requiredOption("--id <value>", `id parameter`).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.`).addHelpText("after", `
37956
+ Examples:
37957
+ hyperline bank-accounts list-bank-account-transactions --id <id>
37958
+ hyperline bank-accounts list-bank-account-transactions --id <id> --limit <limit> --cursor <cursor>`).action(async (opts) => {
37959
+ const ctx = resource.parent?.opts()._ctx;
37960
+ if (!ctx) {
37961
+ process.stderr.write("Error: Not authenticated\n");
37962
+ process.exit(1);
37963
+ }
37964
+ const args = {};
37965
+ if (opts.id !== void 0)
37966
+ args.id = opts.id;
37967
+ if (opts.cursor !== void 0)
37968
+ args.cursor = opts.cursor;
37969
+ if (opts.includeTotal !== void 0)
37970
+ args.include_total = opts.includeTotal;
37971
+ if (opts.limit !== void 0)
37972
+ args.limit = Number(opts.limit);
37973
+ await ctx.execute({
37974
+ method: "GET",
37975
+ path: "/v1/bank-accounts/{id}/transactions",
37976
+ args,
37977
+ queryParamKeys: ["limit", "cursor", "include_total"]
37978
+ });
37979
+ });
37955
37980
  }
37956
37981
 
37957
37982
  // build/commands/generated/companies.js
@@ -38020,7 +38045,7 @@ Examples:
38020
38045
  queryParamKeys: ["take", "skip"]
38021
38046
  });
38022
38047
  });
38023
- resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <value>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
38048
+ resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <value>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <value>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
38024
38049
  Examples:
38025
38050
  hyperline coupons create --name <name> --type <type>
38026
38051
  hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
@@ -38039,6 +38064,10 @@ Examples:
38039
38064
  args.expiration_date = opts.expirationDate;
38040
38065
  if (opts.productIds !== void 0)
38041
38066
  args.product_ids = opts.productIds;
38067
+ if (opts.repeat !== void 0)
38068
+ args.repeat = opts.repeat;
38069
+ if (opts.duration !== void 0)
38070
+ args.duration = opts.duration;
38042
38071
  if (opts.type !== void 0)
38043
38072
  args.type = opts.type;
38044
38073
  if (opts.currency !== void 0)
@@ -38074,7 +38103,7 @@ Examples:
38074
38103
  queryParamKeys: []
38075
38104
  });
38076
38105
  });
38077
- resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <value>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
38106
+ resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <value>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <value>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
38078
38107
  Examples:
38079
38108
  hyperline coupons update --id <id> --name <name> --type <type>
38080
38109
  hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
@@ -38095,6 +38124,10 @@ Examples:
38095
38124
  args.expiration_date = opts.expirationDate;
38096
38125
  if (opts.productIds !== void 0)
38097
38126
  args.product_ids = opts.productIds;
38127
+ if (opts.repeat !== void 0)
38128
+ args.repeat = opts.repeat;
38129
+ if (opts.duration !== void 0)
38130
+ args.duration = opts.duration;
38098
38131
  if (opts.type !== void 0)
38099
38132
  args.type = opts.type;
38100
38133
  if (opts.currency !== void 0)
@@ -38429,16 +38462,24 @@ Examples:
38429
38462
  // build/commands/generated/customers.js
38430
38463
  function registerCustomersCommands(parent) {
38431
38464
  const resource = parent.command("customers").description("Manage customers");
38432
- 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, created_at, updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--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", `
38465
+ 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", `
38433
38466
  Examples:
38434
38467
  hyperline customers list
38435
- hyperline customers list --take <take> --name <name>`).action(async (opts) => {
38468
+ hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
38436
38469
  const ctx = resource.parent?.opts()._ctx;
38437
38470
  if (!ctx) {
38438
38471
  process.stderr.write("Error: Not authenticated\n");
38439
38472
  process.exit(1);
38440
38473
  }
38441
38474
  const args = {};
38475
+ if (opts.cursor !== void 0)
38476
+ args.cursor = opts.cursor;
38477
+ if (opts.includeTotal !== void 0)
38478
+ args.include_total = opts.includeTotal;
38479
+ if (opts.order !== void 0)
38480
+ args.order = opts.order;
38481
+ if (opts.sort !== void 0)
38482
+ args.sort = opts.sort;
38442
38483
  if (opts.name !== void 0)
38443
38484
  args.name = opts.name;
38444
38485
  if (opts["name.not"] !== void 0)
@@ -38611,17 +38652,18 @@ Examples:
38611
38652
  args.updated_at__gt = opts["updatedAt.gt"];
38612
38653
  if (opts["updatedAt.gte"] !== void 0)
38613
38654
  args.updated_at__gte = opts["updatedAt.gte"];
38614
- if (opts.take !== void 0)
38615
- args.take = Number(opts.take);
38616
- if (opts.skip !== void 0)
38617
- args.skip = Number(opts.skip);
38655
+ if (opts.limit !== void 0)
38656
+ args.limit = Number(opts.limit);
38618
38657
  await ctx.execute({
38619
38658
  method: "GET",
38620
- path: "/v1/customers",
38659
+ path: "/v2/customers",
38621
38660
  args,
38622
38661
  queryParamKeys: [
38623
- "take",
38624
- "skip",
38662
+ "limit",
38663
+ "cursor",
38664
+ "include_total",
38665
+ "order",
38666
+ "sort",
38625
38667
  "name",
38626
38668
  "name__not",
38627
38669
  "name__isNull",
@@ -38711,19 +38753,41 @@ Examples:
38711
38753
  ]
38712
38754
  });
38713
38755
  });
38756
+ resource.command("get").description(`Retrieve full details of a customer by ID including billing info, address, subscriptions, custom properties, integrations, payment method, and bank account.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
38757
+ Examples:
38758
+ hyperline customers get --id <id>`).action(async (opts) => {
38759
+ const ctx = resource.parent?.opts()._ctx;
38760
+ if (!ctx) {
38761
+ process.stderr.write("Error: Not authenticated\n");
38762
+ process.exit(1);
38763
+ }
38764
+ const args = {};
38765
+ if (opts.id !== void 0)
38766
+ args.id = opts.id;
38767
+ await ctx.execute({
38768
+ method: "GET",
38769
+ path: "/v2/customers/{id}",
38770
+ args,
38771
+ queryParamKeys: []
38772
+ });
38773
+ });
38714
38774
  resource.command("create-customer").description(`Create a new customer with billing details, address, currency, and optional provider mappings. Returns the full customer object.`).option("--name <value>", `Customer name.`).option("--type <value>", `
38715
38775
  Customer type.
38716
38776
 
38717
38777
  - \`corporate\`: The customer is a business entity.
38718
38778
  - \`person\`: The customer is a natural person.
38719
38779
  - \`automatically_created\`: The customer was automatically imported (e.g. from a data loader). This value cannot be used when creating/editing.
38720
- `).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--tax-ids <value>", `Customer tax IDs.`).option("--tax-rate-custom <number>", `Customer custom tax rate. If not defined, the rate will be automatically determined based on the customer's country, your country, and applicable legal requirements.`).option("--registration-number <value>", `Customer registration number.`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <value>", `Customer billing address.`).option("--shipping-address <value>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <value>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <value>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <value>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment delay. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay for payment collection. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
38780
+ `).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--tax-ids <value>", `Customer tax IDs.`).option("--tax-rate-custom <number>", `Customer custom tax rate. If not defined, the rate will be automatically determined based on the customer's country, your country, and applicable legal requirements.`).option("--taxability <value>", `Customer taxability.
38781
+
38782
+ - \`taxable\`: Taxes are automatically determined for the customer.
38783
+ - \`exempt\`: The customer is exempt from tax.
38784
+ `).option("--registration-number <value>", `Customer registration number.`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <value>", `Customer billing address.`).option("--shipping-address <value>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <value>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <value>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <value>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
38721
38785
  How customer invoices are issued from the parent organisation.
38722
38786
 
38723
38787
  - \`none\`: Invoices will keep being issued from this customer.
38724
38788
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
38725
38789
  - \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
38726
- `).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).addHelpText("after", `
38790
+ `).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <value>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
38727
38791
  Examples:
38728
38792
  hyperline customers create-customer
38729
38793
  hyperline customers create-customer --name <name> --type <type>
@@ -38742,10 +38806,14 @@ Examples:
38742
38806
  args.currency = opts.currency;
38743
38807
  if (opts.taxIds !== void 0)
38744
38808
  args.tax_ids = opts.taxIds;
38809
+ if (opts.taxability !== void 0)
38810
+ args.taxability = opts.taxability;
38745
38811
  if (opts.registrationNumber !== void 0)
38746
38812
  args.registration_number = opts.registrationNumber;
38747
38813
  if (opts.externalId !== void 0)
38748
38814
  args.external_id = opts.externalId;
38815
+ if (opts.domain !== void 0)
38816
+ args.domain = opts.domain;
38749
38817
  if (opts.invoicingEntityId !== void 0)
38750
38818
  args.invoicing_entity_id = opts.invoicingEntityId;
38751
38819
  if (opts.billingAddress !== void 0)
@@ -38778,6 +38846,10 @@ Examples:
38778
38846
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
38779
38847
  if (opts.priceBookId !== void 0)
38780
38848
  args.price_book_id = opts.priceBookId;
38849
+ if (opts.ownerId !== void 0)
38850
+ args.owner_id = opts.ownerId;
38851
+ if (opts.followerIds !== void 0)
38852
+ args.follower_ids = opts.followerIds;
38781
38853
  if (opts.taxRateCustom !== void 0)
38782
38854
  args.tax_rate_custom = Number(opts.taxRateCustom);
38783
38855
  if (opts.customPaymentDelay !== void 0)
@@ -38812,24 +38884,6 @@ Examples:
38812
38884
  queryParamKeys: []
38813
38885
  });
38814
38886
  });
38815
- resource.command("get").description(`Retrieve full details of a customer by ID including billing info, address, subscriptions, custom properties, and provider mappings.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
38816
- Examples:
38817
- hyperline customers get --id <id>`).action(async (opts) => {
38818
- const ctx = resource.parent?.opts()._ctx;
38819
- if (!ctx) {
38820
- process.stderr.write("Error: Not authenticated\n");
38821
- process.exit(1);
38822
- }
38823
- const args = {};
38824
- if (opts.id !== void 0)
38825
- args.id = opts.id;
38826
- await ctx.execute({
38827
- method: "GET",
38828
- path: "/v1/customers/{id}",
38829
- args,
38830
- queryParamKeys: []
38831
- });
38832
- });
38833
38887
  resource.command("get-customer-portal-url").description(`Get a portal URL for a customer. The portal allows the customer to view invoices, update payment methods, and manage their account.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
38834
38888
  Examples:
38835
38889
  hyperline customers get-customer-portal-url --id <id>`).action(async (opts) => {
@@ -38854,13 +38908,17 @@ Customer type.
38854
38908
  - \`corporate\`: The customer is a business entity.
38855
38909
  - \`person\`: The customer is a natural person.
38856
38910
  - \`automatically_created\`: The customer was automatically imported (e.g. from a data loader). This value cannot be used when creating/editing.
38857
- `).option("--currency <value>", `Customer currency. Can only be changed if the customer doesn't have existing invoices, a wallet or a payment method saved.`).option("--tax-ids <value>", `Customer tax IDs.`).option("--tax-rate-custom <number>", `Customer custom tax rate. If not defined, the rate will be automatically determined based on the customer's country, your country, and applicable legal requirements.`).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <value>", `Customer billing address.`).option("--shipping-address <value>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <value>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <value>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <value>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment delay. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay for payment collection. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
38911
+ `).option("--currency <value>", `Customer currency. Can only be changed if the customer doesn't have existing invoices, a wallet or a payment method saved.`).option("--tax-ids <value>", `Customer tax IDs.`).option("--tax-rate-custom <number>", `Customer custom tax rate. If not defined, the rate will be automatically determined based on the customer's country, your country, and applicable legal requirements.`).option("--taxability <value>", `Customer taxability.
38912
+
38913
+ - \`taxable\`: Taxes are automatically determined for the customer.
38914
+ - \`exempt\`: The customer is exempt from tax.
38915
+ `).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <value>", `Customer billing address.`).option("--shipping-address <value>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <value>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <value>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <value>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
38858
38916
  How customer invoices are issued from the parent organisation.
38859
38917
 
38860
38918
  - \`none\`: Invoices will keep being issued from this customer.
38861
38919
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
38862
38920
  - \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
38863
- `).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).addHelpText("after", `
38921
+ `).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <value>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
38864
38922
  Examples:
38865
38923
  hyperline customers update --id <id>
38866
38924
  hyperline customers update --id <id> --name <name> --type <type>
@@ -38881,10 +38939,14 @@ Examples:
38881
38939
  args.currency = opts.currency;
38882
38940
  if (opts.taxIds !== void 0)
38883
38941
  args.tax_ids = opts.taxIds;
38942
+ if (opts.taxability !== void 0)
38943
+ args.taxability = opts.taxability;
38884
38944
  if (opts.registrationNumber !== void 0)
38885
38945
  args.registration_number = opts.registrationNumber;
38886
38946
  if (opts.externalId !== void 0)
38887
38947
  args.external_id = opts.externalId;
38948
+ if (opts.domain !== void 0)
38949
+ args.domain = opts.domain;
38888
38950
  if (opts.invoicingEntityId !== void 0)
38889
38951
  args.invoicing_entity_id = opts.invoicingEntityId;
38890
38952
  if (opts.billingAddress !== void 0)
@@ -38919,6 +38981,10 @@ Examples:
38919
38981
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
38920
38982
  if (opts.priceBookId !== void 0)
38921
38983
  args.price_book_id = opts.priceBookId;
38984
+ if (opts.ownerId !== void 0)
38985
+ args.owner_id = opts.ownerId;
38986
+ if (opts.followerIds !== void 0)
38987
+ args.follower_ids = opts.followerIds;
38922
38988
  if (opts.taxRateCustom !== void 0)
38923
38989
  args.tax_rate_custom = Number(opts.taxRateCustom);
38924
38990
  if (opts.customPaymentDelay !== void 0)
@@ -39583,6 +39649,7 @@ Export name.
39583
39649
  - \`draft_invoices\`: Export all draft invoices, with customer and product information.
39584
39650
  - \`open_invoices\`: Export all open invoices, with customer and product information.
39585
39651
  - \`live_subscriptions\`: List of all active subscriptions line by line.
39652
+ - \`credit_balances\`: Monthly credit balance roll-forward per customer and credit type (opening, top-ups, consumption, expiry, closing).
39586
39653
  `).requiredOption("--file-type <value>", `
39587
39654
  Export file type.
39588
39655
 
@@ -40160,7 +40227,7 @@ Examples:
40160
40227
  - \`archived\`: A previous version of an invoice.
40161
40228
  - \`charged_on_parent\`: Invoice is charged on the parent customer.
40162
40229
  - \`pending_parent_concat\`: Invoice is pending invoices concatenation on the parent customer to be grouped.
40163
- - \`uncollectible\`: Invoice is uncollectible (bad debt).
40230
+ - \`uncollectible\`: Invoice is uncollectible (bad debt). Only metadata (properties, custom_note, custom_properties) can be updated in this status.
40164
40231
  `).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the invoice.`).option("--number <value>", `Invoice number. If specified, the invoice will be considered as imported from an external source and the number will not be generated by Hyperline. You are responsible for avoiding duplicates and ensuring it does not impact the numbering sequence in Hyperline.`).option("--type <value>", `Type of the invoice.
40165
40232
 
40166
40233
  - \`invoice\`: Legal invoice to be paid by your customer.
@@ -40175,7 +40242,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
40175
40242
 
40176
40243
  - \`current\`: Use the current default payment method of the customer.
40177
40244
  - \`external\`: Manage the payment of the invoice outside of Hyperline.
40178
- `).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--emitted-at <value>", `Issue date of the invoice.`).option("--due-at <value>", `Due date of the invoice. Computed from the issue date and the payment delay configured in your settings.`).option("--settled-at <value>", `Date the invoice was fully paid.`).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--line-items <value>", `line_items`).option("--transactions <value>", `transactions`).option("--coupons <value>", `coupons`).addHelpText("after", `
40245
+ `).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--emitted-at <value>", `Issue date of the invoice.`).option("--due-at <value>", `Due date of the invoice. Computed from the issue date and the payment delay configured in your settings.`).option("--settled-at <value>", `Date the invoice was fully paid.`).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).requiredOption("--line-items <value>", `line_items`).option("--transactions <value>", `transactions`).option("--coupons <value>", `coupons`).addHelpText("after", `
40179
40246
  Examples:
40180
40247
  hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
40181
40248
  hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
@@ -40228,6 +40295,8 @@ Examples:
40228
40295
  args.settled_at = opts.settledAt;
40229
40296
  if (opts.properties !== void 0)
40230
40297
  args.properties = opts.properties;
40298
+ if (opts.customProperties !== void 0)
40299
+ args.custom_properties = opts.customProperties;
40231
40300
  if (opts.lineItems !== void 0)
40232
40301
  args.line_items = opts.lineItems;
40233
40302
  if (opts.transactions !== void 0)
@@ -40400,7 +40469,7 @@ Examples:
40400
40469
  queryParamKeys: []
40401
40470
  });
40402
40471
  });
40403
- resource.command("update").description(`Update a draft or grace_period invoice. Allows modifying line items, dates, and metadata before finalization.`).requiredOption("--id <value>", `id parameter`).option("--type <value>", `Type of the invoice.
40472
+ resource.command("update").description(`Update an invoice. Draft/grace_period allow modifying line items, dates, and metadata before finalization. Finalized invoices are restricted to metadata (paid: custom_note; uncollectible: properties/custom_note/custom_properties).`).requiredOption("--id <value>", `id parameter`).option("--type <value>", `Type of the invoice.
40404
40473
 
40405
40474
  - \`invoice\`: Legal invoice to be paid by your customer.
40406
40475
  - \`credit_note\`: Legal credit note cancelling an invoice and refunding your customer.
@@ -40409,7 +40478,7 @@ Examples:
40409
40478
 
40410
40479
  - \`auto\`: Tax is automatically computed and applied.
40411
40480
  - \`not_eligible\`: Tax collection is disabled for the invoice.
40412
- `).option("--line-items <value>", `line_items`).option("--coupons <value>", `coupons`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--customer <value>", `Override customer details on the invoice. Only allowed for draft or grace period invoices.`).addHelpText("after", `
40481
+ `).option("--line-items <value>", `line_items`).option("--coupons <value>", `coupons`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--customer <value>", `Override customer details on the invoice. Only allowed for draft or grace period invoices.`).addHelpText("after", `
40413
40482
  Examples:
40414
40483
  hyperline invoices update --id <id>
40415
40484
  hyperline invoices update --id <id> --type <type> --document-name <document_name>
@@ -40450,6 +40519,8 @@ Examples:
40450
40519
  args.bank_account_id = opts.bankAccountId;
40451
40520
  if (opts.properties !== void 0)
40452
40521
  args.properties = opts.properties;
40522
+ if (opts.customProperties !== void 0)
40523
+ args.custom_properties = opts.customProperties;
40453
40524
  if (opts.customer !== void 0)
40454
40525
  args.customer = opts.customer;
40455
40526
  await ctx.execute({
@@ -40570,7 +40641,7 @@ Examples:
40570
40641
  queryParamKeys: []
40571
40642
  });
40572
40643
  });
40573
- resource.command("delete-invoice-transaction").description(`Delete a scheduled transaction from an invoice. Only applies to transactions that haven't been processed yet.`).requiredOption("--id <value>", `id parameter`).requiredOption("--transaction-id <value>", `transactionId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
40644
+ resource.command("delete-invoice-transaction").description(`Delete a scheduled transaction or wallet debit from an invoice.`).requiredOption("--id <value>", `id parameter`).requiredOption("--transaction-id <value>", `transactionId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
40574
40645
  Examples:
40575
40646
  hyperline invoices-transactions delete-invoice-transaction --id <id> --transaction-id <transactionId>
40576
40647
  hyperline invoices-transactions delete-invoice-transaction --id <id> --transaction-id <transactionId> --output json`).action(async (opts) => {
@@ -40642,7 +40713,7 @@ Examples:
40642
40713
  queryParamKeys: []
40643
40714
  });
40644
40715
  });
40645
- resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).addHelpText("after", `
40716
+ resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled, credit note refunds default to the customer's wallet for invoices under this invoicing entity. The default applies only when \`refund_method\` is omitted on \`POST /v1/invoices/{id}/credit-notes\`; an explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).addHelpText("after", `
40646
40717
  Examples:
40647
40718
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
40648
40719
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
@@ -40721,6 +40792,8 @@ Examples:
40721
40792
  args.document_payment_initiation_delay = Number(opts.documentPaymentInitiationDelay);
40722
40793
  if (opts.isDefault !== void 0)
40723
40794
  args.is_default = true;
40795
+ if (opts.creditNoteWalletRefundEnabled !== void 0)
40796
+ args.credit_note_wallet_refund_enabled = true;
40724
40797
  await ctx.execute({
40725
40798
  method: "POST",
40726
40799
  path: "/v1/invoicing-entities",
@@ -40728,7 +40801,7 @@ Examples:
40728
40801
  queryParamKeys: []
40729
40802
  });
40730
40803
  });
40731
- resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).addHelpText("after", `
40804
+ resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled, credit note refunds default to the customer's wallet for invoices under this invoicing entity. The default applies only when \`refund_method\` is omitted on \`POST /v1/invoices/{id}/credit-notes\`; an explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).addHelpText("after", `
40732
40805
  Examples:
40733
40806
  hyperline invoicing-entities update-invoicing-entity --id <id>
40734
40807
  hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
@@ -40799,6 +40872,8 @@ Examples:
40799
40872
  args.document_payment_initiation_delay = Number(opts.documentPaymentInitiationDelay);
40800
40873
  if (opts.isDefault !== void 0)
40801
40874
  args.is_default = true;
40875
+ if (opts.creditNoteWalletRefundEnabled !== void 0)
40876
+ args.credit_note_wallet_refund_enabled = true;
40802
40877
  await ctx.execute({
40803
40878
  method: "PUT",
40804
40879
  path: "/v1/invoicing-entities/{id}",
@@ -41207,7 +41282,12 @@ Examples:
41207
41282
  ]
41208
41283
  });
41209
41284
  });
41210
- resource.command("create").description(`Create a new product with name, type (flat_fee, per_unit, usage, seat, etc.), and pricing configuration.`).requiredOption("--name <value>", `Product name.`).option("--description <value>", `Product description.`).option("--description-display-interval-dates", `Indicates if the dates of the interval should be automatically added in the product description on the invoices.`).option("--public-description <value>", `Public description of the product.`).option("--translations <value>", `Product name and description translations.`).option("--is-available-on-demand", `is_available_on_demand`).option("--is-available-on-subscription", `is_available_on_subscription`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--accounting <value>", `Mapping invoicing entity ID/accounting settings.`).requiredOption("--type <value>", `Product type for fixed fee products.`).requiredOption("--price-configurations <value>", `Price configurations for the product.`).option("--aggregator <value>", `Aggregator configuration to automatically count seats from billable events. Only count aggregators are supported for seat products.`).option("--aggregator-id <value>", `ID of an existing aggregator to link to this product.`).option("--unit-name <value>", `Name of the unit (e.g., 'user', 'seat').`).option("--is-connected-seat-item", `When true, the seat count is automatically synced from an external source (e.g., CRM users).`).option("--credit-aggregators <value>", `Multiple aggregators with weights for multi-aggregator credit consumption. Cannot be used together with aggregator or aggregator_id.`).option("--low-credits-threshold <number>", `Threshold indicating a low level of credits.`).option("--display-mode <value>", `How bundle items are displayed on invoices.`).option("--exclusive-items-enabled", `When true, only one item in the bundle can be active at a time.`).option("--bundle-items <value>", `Products included in this bundle. Percentages must sum to 100.`).addHelpText("after", `
41285
+ resource.command("create").description(`Create a new product with name, type (flat_fee, per_unit, usage, seat, etc.), and pricing configuration.`).requiredOption("--name <value>", `Product name.`).option("--description <value>", `Product description.`).option("--description-display-interval-dates", `Indicates if the dates of the interval should be automatically added in the product description on the invoices.`).option("--public-description <value>", `Public description of the product.`).option("--translations <value>", `Product name and description translations.`).option("--is-available-on-demand", `is_available_on_demand`).option("--is-available-on-subscription", `is_available_on_subscription`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--accounting <value>", `Mapping invoicing entity ID/accounting settings.`).requiredOption("--type <value>", `Product type for fixed fee products.`).requiredOption("--price-configurations <value>", `Price configurations for the product.`).option("--aggregator <value>", `Aggregator configuration to automatically count seats from billable events. Only count aggregators are supported for seat products.`).option("--aggregator-id <value>", `ID of an existing aggregator to link to this product.`).option("--unit-name <value>", `Name of the unit (e.g., 'user', 'seat').`).option("--is-connected-seat-item", `When true, the seat count is automatically synced from an external source (e.g., CRM users).`).option("--credit-aggregators <value>", `Multiple aggregators with weights for multi-aggregator credit consumption. Cannot be used together with aggregator or aggregator_id.`).option("--low-credits-threshold <number>", `Threshold indicating a low level of credits.`).option("--credits-grant-mode <value>", `
41286
+ How the periodic credit allowance is granted for partial billing periods.
41287
+
41288
+ - \`prorated\` (default): the granted credits are prorated to the elapsed period.
41289
+ - \`full_allowance\`: the full allowance is always granted (the invoice remains prorated).
41290
+ `).option("--display-mode <value>", `How bundle items are displayed on invoices.`).option("--exclusive-items-enabled", `When true, only one item in the bundle can be active at a time.`).option("--bundle-items <value>", `Products included in this bundle. Percentages must sum to 100.`).addHelpText("after", `
41211
41291
  Examples:
41212
41292
  hyperline products create --name <name> --type <type> --price-configurations <price_configurations>
41213
41293
  hyperline products create --name <name> --type <type> --price-configurations <price_configurations> --description <description> --description-display-interval-dates
@@ -41242,6 +41322,8 @@ Examples:
41242
41322
  args.unit_name = opts.unitName;
41243
41323
  if (opts.creditAggregators !== void 0)
41244
41324
  args.credit_aggregators = opts.creditAggregators;
41325
+ if (opts.creditsGrantMode !== void 0)
41326
+ args.credits_grant_mode = opts.creditsGrantMode;
41245
41327
  if (opts.displayMode !== void 0)
41246
41328
  args.display_mode = opts.displayMode;
41247
41329
  if (opts.bundleItems !== void 0)
@@ -41367,18 +41449,18 @@ Examples:
41367
41449
  // build/commands/generated/quotes.js
41368
41450
  function registerQuotesCommands(parent) {
41369
41451
  const resource = parent.command("quotes").description("Manage quotes");
41370
- resource.command("create").description(`Create a new quote for a customer with line items, products, and optional file attachments. Quotes can be sent for signature and converted to subscriptions.`).option("--status <value>", `
41452
+ resource.command("create").description(`Create a new quote for a customer. Use \`subscription\` (or \`template_id\`) for subscription quotes; use \`invoice\` for one-off quotes backed by a draft invoice with line items. Quotes can be sent for signature and converted to subscriptions or one-off invoices. When creating from a quote template, do not combine \`template_id\` with subscription overrides for dates, contract terms, products, phases, coupons, discounts, prices, or seats in this call: first create the quote from \`template_id\` so template terms and contract documents are copied, then call \`update_quote\` with the subscription payload.`).option("--status <value>", `
41371
41453
  Quote status.
41372
41454
 
41373
41455
  - \`draft\`: The quote is a draft.
41374
41456
  - \`approved\`: The quote is approved and ready to be sent to the customer.
41375
41457
  - \`pending_signature\`: The quote is awaiting the customer's signature.
41376
- `).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. 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("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. If not specified, automatically computed from the subscription configuration.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <value>", `IDs of the customer custom properties required to be filled during the signature flow.`).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.
41458
+ `).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. 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("--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 <value>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <value>", `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.
41377
41459
 
41378
41460
  - \`all\`: Display all pricing tiers.
41379
41461
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
41380
41462
  - \`none\`: Hide all pricing tiers.
41381
- `).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("--display-subscription-on-update <value>", `Display subscription details on subscription update quotes.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration 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 <value>", `Subscription configuration constituting the quote.`).addHelpText("after", `
41463
+ `).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("--display-subscription-on-update <value>", `Display subscription details on subscription update quotes.`).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 <value>", `Subscription configuration constituting the quote.`).option("--invoice <value>", `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", `
41382
41464
  Examples:
41383
41465
  hyperline quotes create --customer-id <customer_id>
41384
41466
  hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
@@ -41405,6 +41487,8 @@ Examples:
41405
41487
  args.collect_payment_details = opts.collectPaymentDetails;
41406
41488
  if (opts.collectCustomPropertyIds !== void 0)
41407
41489
  args.collect_custom_property_ids = opts.collectCustomPropertyIds;
41490
+ if (opts.contractClauseIds !== void 0)
41491
+ args.contract_clause_ids = opts.contractClauseIds;
41408
41492
  if (opts.requireTaxId !== void 0)
41409
41493
  args.require_tax_id = opts.requireTaxId;
41410
41494
  if (opts.displayQuoteValue !== void 0)
@@ -41423,12 +41507,16 @@ Examples:
41423
41507
  args.display_documents_in_preview = opts.displayDocumentsInPreview;
41424
41508
  if (opts.displaySubscriptionOnUpdate !== void 0)
41425
41509
  args.display_subscription_on_update = opts.displaySubscriptionOnUpdate;
41510
+ if (opts.generateDraftInvoices !== void 0)
41511
+ args.generate_draft_invoices = opts.generateDraftInvoices;
41426
41512
  if (opts.templateId !== void 0)
41427
41513
  args.template_id = opts.templateId;
41428
41514
  if (opts.expiresAt !== void 0)
41429
41515
  args.expires_at = opts.expiresAt;
41430
41516
  if (opts.subscription !== void 0)
41431
41517
  args.subscription = opts.subscription;
41518
+ if (opts.invoice !== void 0)
41519
+ args.invoice = opts.invoice;
41432
41520
  if (opts.amount !== void 0)
41433
41521
  args.amount = Number(opts.amount);
41434
41522
  await ctx.execute({
@@ -41657,6 +41745,73 @@ Examples:
41657
41745
  queryParamKeys: []
41658
41746
  });
41659
41747
  });
41748
+ resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` 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.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner.`).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 <value>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <value>", `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.
41749
+
41750
+ - \`all\`: Display all pricing tiers.
41751
+ - \`matching\`: Only display the tiers used to compute the price based on quantity.
41752
+ - \`none\`: Hide all pricing tiers.
41753
+ `).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("--display-subscription-on-update <value>", `Display subscription details on subscription update quotes.`).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 <value>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <value>", `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", `
41754
+ Examples:
41755
+ hyperline quotes update --id <id>
41756
+ hyperline quotes update --id <id> --owner-email <owner_email> --comments <comments>
41757
+ hyperline quotes update --id <id> --output json`).action(async (opts) => {
41758
+ const ctx = resource.parent?.opts()._ctx;
41759
+ if (!ctx) {
41760
+ process.stderr.write("Error: Not authenticated\n");
41761
+ process.exit(1);
41762
+ }
41763
+ const args = {};
41764
+ if (opts.id !== void 0)
41765
+ args.id = opts.id;
41766
+ if (opts.ownerEmail !== void 0)
41767
+ args.owner_email = opts.ownerEmail;
41768
+ if (opts.comments !== void 0)
41769
+ args.comments = opts.comments;
41770
+ if (opts.terms !== void 0)
41771
+ args.terms = opts.terms;
41772
+ if (opts.collectPaymentDetails !== void 0)
41773
+ args.collect_payment_details = opts.collectPaymentDetails;
41774
+ if (opts.collectCustomPropertyIds !== void 0)
41775
+ args.collect_custom_property_ids = opts.collectCustomPropertyIds;
41776
+ if (opts.contractClauseIds !== void 0)
41777
+ args.contract_clause_ids = opts.contractClauseIds;
41778
+ if (opts.requireTaxId !== void 0)
41779
+ args.require_tax_id = opts.requireTaxId;
41780
+ if (opts.displayQuoteValue !== void 0)
41781
+ args.display_quote_value = opts.displayQuoteValue;
41782
+ if (opts.displayQuoteValueWithTax !== void 0)
41783
+ args.display_quote_value_with_tax = opts.displayQuoteValueWithTax;
41784
+ if (opts.displayTaxes !== void 0)
41785
+ args.display_taxes = opts.displayTaxes;
41786
+ if (opts.displayPriceTiers !== void 0)
41787
+ args.display_price_tiers = opts.displayPriceTiers;
41788
+ if (opts.displayPhaseValue !== void 0)
41789
+ args.display_phase_value = opts.displayPhaseValue;
41790
+ if (opts.displayFirstInvoiceAmount !== void 0)
41791
+ args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
41792
+ if (opts.displayDocumentsInPreview !== void 0)
41793
+ args.display_documents_in_preview = opts.displayDocumentsInPreview;
41794
+ if (opts.displaySubscriptionOnUpdate !== void 0)
41795
+ args.display_subscription_on_update = opts.displaySubscriptionOnUpdate;
41796
+ if (opts.generateDraftInvoices !== void 0)
41797
+ args.generate_draft_invoices = opts.generateDraftInvoices;
41798
+ if (opts.crmOpportunityId !== void 0)
41799
+ args.crm_opportunity_id = opts.crmOpportunityId;
41800
+ if (opts.expiresAt !== void 0)
41801
+ args.expires_at = opts.expiresAt;
41802
+ if (opts.subscription !== void 0)
41803
+ args.subscription = opts.subscription;
41804
+ if (opts.invoice !== void 0)
41805
+ args.invoice = opts.invoice;
41806
+ if (opts.amount !== void 0)
41807
+ args.amount = Number(opts.amount);
41808
+ await ctx.execute({
41809
+ method: "PATCH",
41810
+ path: "/v1/quotes/{id}",
41811
+ args,
41812
+ queryParamKeys: []
41813
+ });
41814
+ });
41660
41815
  resource.command("download").description(`Download the PDF of a quote. Supports locale parameter for localization.`).requiredOption("--id <value>", `id parameter`).option("--locale <value>", `locale`).addHelpText("after", `
41661
41816
  Examples:
41662
41817
  hyperline quotes download --id <id>
@@ -41697,6 +41852,25 @@ Examples:
41697
41852
  queryParamKeys: []
41698
41853
  });
41699
41854
  });
41855
+ 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", `
41856
+ Examples:
41857
+ hyperline quotes finalize --id <id>
41858
+ hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
41859
+ const ctx = resource.parent?.opts()._ctx;
41860
+ if (!ctx) {
41861
+ process.stderr.write("Error: Not authenticated\n");
41862
+ process.exit(1);
41863
+ }
41864
+ const args = {};
41865
+ if (opts.id !== void 0)
41866
+ args.id = opts.id;
41867
+ await ctx.execute({
41868
+ method: "POST",
41869
+ path: "/v1/quotes/{id}/finalize",
41870
+ args,
41871
+ queryParamKeys: []
41872
+ });
41873
+ });
41700
41874
  resource.command("send").description(`Send a quote by email for customer signature. Requires the quote to be approved first.`).requiredOption("--id <value>", `id parameter`).requiredOption("--email <value>", `Email address to which the quote will be sent for signature.`).option("--message <value>", `Custom message used in the email content.`).addHelpText("after", `
41701
41875
  Examples:
41702
41876
  hyperline quotes send --id <id> --email <email>
@@ -41804,10 +41978,132 @@ Examples:
41804
41978
  });
41805
41979
  }
41806
41980
 
41981
+ // build/commands/generated/quotes-templates.js
41982
+ function registerQuotes_TemplatesCommands(parent) {
41983
+ const resource = parent.command("quotes-templates").description("Manage quotes > templates");
41984
+ resource.command("list-quote-templates").description(`List quote templates with pagination and optional filters for id, name, subscription_template_id, and search. Use template IDs to create quotes from reusable quote defaults.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--subscription-template-id <value>", `subscription_template_id`).option("--subscription-template-id.not <value>", `subscription_template_id__not`).option("--subscription-template-id.is-null <value>", `subscription_template_id__isNull`).option("--subscription-template-id.is-not-null <value>", `subscription_template_id__isNotNull`).option("--subscription-template-id.equals <value>", `subscription_template_id__equals`).option("--subscription-template-id.contains <value>", `subscription_template_id__contains`).option("--subscription-template-id.starts-with <value>", `subscription_template_id__startsWith`).option("--subscription-template-id.end-with <value>", `subscription_template_id__endWith`).option("--search <value>", `search`).addHelpText("after", `
41985
+ Examples:
41986
+ hyperline quotes-templates list-quote-templates
41987
+ hyperline quotes-templates list-quote-templates --take <take> --id <id>`).action(async (opts) => {
41988
+ const ctx = resource.parent?.opts()._ctx;
41989
+ if (!ctx) {
41990
+ process.stderr.write("Error: Not authenticated\n");
41991
+ process.exit(1);
41992
+ }
41993
+ const args = {};
41994
+ if (opts.id !== void 0)
41995
+ args.id = opts.id;
41996
+ if (opts["id.not"] !== void 0)
41997
+ args.id__not = opts["id.not"];
41998
+ if (opts["id.isNull"] !== void 0)
41999
+ args.id__isNull = opts["id.isNull"];
42000
+ if (opts["id.isNotNull"] !== void 0)
42001
+ args.id__isNotNull = opts["id.isNotNull"];
42002
+ if (opts["id.equals"] !== void 0)
42003
+ args.id__equals = opts["id.equals"];
42004
+ if (opts["id.contains"] !== void 0)
42005
+ args.id__contains = opts["id.contains"];
42006
+ if (opts["id.startsWith"] !== void 0)
42007
+ args.id__startsWith = opts["id.startsWith"];
42008
+ if (opts["id.endWith"] !== void 0)
42009
+ args.id__endWith = opts["id.endWith"];
42010
+ if (opts.name !== void 0)
42011
+ args.name = opts.name;
42012
+ if (opts["name.not"] !== void 0)
42013
+ args.name__not = opts["name.not"];
42014
+ if (opts["name.isNull"] !== void 0)
42015
+ args.name__isNull = opts["name.isNull"];
42016
+ if (opts["name.isNotNull"] !== void 0)
42017
+ args.name__isNotNull = opts["name.isNotNull"];
42018
+ if (opts["name.equals"] !== void 0)
42019
+ args.name__equals = opts["name.equals"];
42020
+ if (opts["name.contains"] !== void 0)
42021
+ args.name__contains = opts["name.contains"];
42022
+ if (opts["name.startsWith"] !== void 0)
42023
+ args.name__startsWith = opts["name.startsWith"];
42024
+ if (opts["name.endWith"] !== void 0)
42025
+ args.name__endWith = opts["name.endWith"];
42026
+ if (opts.subscriptionTemplateId !== void 0)
42027
+ args.subscription_template_id = opts.subscriptionTemplateId;
42028
+ if (opts["subscriptionTemplateId.not"] !== void 0)
42029
+ args.subscription_template_id__not = opts["subscriptionTemplateId.not"];
42030
+ if (opts["subscriptionTemplateId.isNull"] !== void 0)
42031
+ args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
42032
+ if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
42033
+ args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
42034
+ if (opts["subscriptionTemplateId.equals"] !== void 0)
42035
+ args.subscription_template_id__equals = opts["subscriptionTemplateId.equals"];
42036
+ if (opts["subscriptionTemplateId.contains"] !== void 0)
42037
+ args.subscription_template_id__contains = opts["subscriptionTemplateId.contains"];
42038
+ if (opts["subscriptionTemplateId.startsWith"] !== void 0)
42039
+ args.subscription_template_id__startsWith = opts["subscriptionTemplateId.startsWith"];
42040
+ if (opts["subscriptionTemplateId.endWith"] !== void 0)
42041
+ args.subscription_template_id__endWith = opts["subscriptionTemplateId.endWith"];
42042
+ if (opts.search !== void 0)
42043
+ args.search = opts.search;
42044
+ if (opts.take !== void 0)
42045
+ args.take = Number(opts.take);
42046
+ if (opts.skip !== void 0)
42047
+ args.skip = Number(opts.skip);
42048
+ await ctx.execute({
42049
+ method: "GET",
42050
+ path: "/v1/quotes/templates",
42051
+ args,
42052
+ queryParamKeys: [
42053
+ "take",
42054
+ "skip",
42055
+ "id",
42056
+ "id__not",
42057
+ "id__isNull",
42058
+ "id__isNotNull",
42059
+ "id__equals",
42060
+ "id__contains",
42061
+ "id__startsWith",
42062
+ "id__endWith",
42063
+ "name",
42064
+ "name__not",
42065
+ "name__isNull",
42066
+ "name__isNotNull",
42067
+ "name__equals",
42068
+ "name__contains",
42069
+ "name__startsWith",
42070
+ "name__endWith",
42071
+ "subscription_template_id",
42072
+ "subscription_template_id__not",
42073
+ "subscription_template_id__isNull",
42074
+ "subscription_template_id__isNotNull",
42075
+ "subscription_template_id__equals",
42076
+ "subscription_template_id__contains",
42077
+ "subscription_template_id__startsWith",
42078
+ "subscription_template_id__endWith",
42079
+ "search"
42080
+ ]
42081
+ });
42082
+ });
42083
+ resource.command("get-quote-template").description(`Retrieve a quote template by ID with quote defaults, display options, attachments, and linked contract template/clause IDs.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
42084
+ Examples:
42085
+ hyperline quotes-templates get-quote-template --id <id>`).action(async (opts) => {
42086
+ const ctx = resource.parent?.opts()._ctx;
42087
+ if (!ctx) {
42088
+ process.stderr.write("Error: Not authenticated\n");
42089
+ process.exit(1);
42090
+ }
42091
+ const args = {};
42092
+ if (opts.id !== void 0)
42093
+ args.id = opts.id;
42094
+ await ctx.execute({
42095
+ method: "GET",
42096
+ path: "/v1/quotes/templates/{id}",
42097
+ args,
42098
+ queryParamKeys: []
42099
+ });
42100
+ });
42101
+ }
42102
+
41807
42103
  // build/commands/generated/subscriptions.js
41808
42104
  function registerSubscriptionsCommands(parent) {
41809
42105
  const resource = parent.command("subscriptions").description("Manage subscriptions");
41810
- resource.command("create-subscription-update").description(`Apply a single update to an existing subscription (e.g. change quantity, add/remove product, modify price).`).requiredOption("--id <value>", `id parameter`).requiredOption("--application-schedule <value>", `application_schedule`).option("--apply-at <value>", `The date when the update should be applied. Required when application_schedule is 'scheduled'.`).requiredOption("--payment-schedule <value>", `payment_schedule`).option("--charge-at <value>", `The date when the resulting subscription update should be charged. Required when payment_schedule is 'custom'. Must be in the future.`).requiredOption("--calculation-method <value>", `calculation_method`).requiredOption("--type <value>", `type`).requiredOption("--payload <value>", `payload`).addHelpText("after", `
42106
+ resource.command("create-subscription-update").description(`Apply a single update to an existing subscription (e.g. change quantity, add/remove product, modify price).`).requiredOption("--id <value>", `id parameter`).requiredOption("--application-schedule <value>", `application_schedule`).option("--apply-at <value>", `The date when the update should be applied. Required when application_schedule is 'scheduled'.`).requiredOption("--payment-schedule <value>", `payment_schedule`).option("--charge-at <value>", `The date when the resulting subscription update should be charged. Required when payment_schedule is 'custom'. Must be in the future.`).requiredOption("--calculation-method <value>", `calculation_method`).option("--precision <value>", `Granularity used to prorate the update amount. Defaults to 'calendar_days' when omitted, prorating on whole calendar days; 'milliseconds' prorates on the exact elapsed time, charging the precise partial period.`).option("--refund-method <value>", `Override the refund destination when the update generates a refund credit note (e.g. seat reduction). When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).requiredOption("--type <value>", `type`).requiredOption("--payload <value>", `payload`).addHelpText("after", `
41811
42107
  Examples:
41812
42108
  hyperline subscriptions create-subscription-update --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --type <type> --payload <payload>
41813
42109
  hyperline subscriptions create-subscription-update --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --type <type> --payload <payload> --apply-at <apply_at> --charge-at <charge_at>
@@ -41830,6 +42126,10 @@ Examples:
41830
42126
  args.charge_at = opts.chargeAt;
41831
42127
  if (opts.calculationMethod !== void 0)
41832
42128
  args.calculation_method = opts.calculationMethod;
42129
+ if (opts.precision !== void 0)
42130
+ args.precision = opts.precision;
42131
+ if (opts.refundMethod !== void 0)
42132
+ args.refund_method = opts.refundMethod;
41833
42133
  if (opts.type !== void 0)
41834
42134
  args.type = opts.type;
41835
42135
  if (opts.payload !== void 0)
@@ -41841,7 +42141,7 @@ Examples:
41841
42141
  queryParamKeys: []
41842
42142
  });
41843
42143
  });
41844
- resource.command("create-subscription-updates").description(`Apply multiple updates at once to an existing subscription in a single atomic operation.`).requiredOption("--id <value>", `id parameter`).requiredOption("--application-schedule <value>", `application_schedule`).option("--apply-at <value>", `The date when the update should be applied. Required when application_schedule is 'scheduled'.`).requiredOption("--payment-schedule <value>", `payment_schedule`).option("--charge-at <value>", `The date when the resulting subscription update should be charged. Required when payment_schedule is 'custom'. Must be in the future.`).requiredOption("--calculation-method <value>", `calculation_method`).requiredOption("--updates <value>", `updates`).addHelpText("after", `
42144
+ resource.command("create-subscription-updates").description(`Apply multiple updates at once to an existing subscription in a single atomic operation.`).requiredOption("--id <value>", `id parameter`).requiredOption("--application-schedule <value>", `application_schedule`).option("--apply-at <value>", `The date when the update should be applied. Required when application_schedule is 'scheduled'.`).requiredOption("--payment-schedule <value>", `payment_schedule`).option("--charge-at <value>", `The date when the resulting subscription update should be charged. Required when payment_schedule is 'custom'. Must be in the future.`).requiredOption("--calculation-method <value>", `calculation_method`).option("--precision <value>", `Granularity used to prorate the update amount. Defaults to 'calendar_days' when omitted, prorating on whole calendar days; 'milliseconds' prorates on the exact elapsed time, charging the precise partial period.`).option("--refund-method <value>", `Override the refund destination when the update generates a refund credit note (e.g. seat reduction). When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).requiredOption("--updates <value>", `updates`).addHelpText("after", `
41845
42145
  Examples:
41846
42146
  hyperline subscriptions create-subscription-updates --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --updates <updates>
41847
42147
  hyperline subscriptions create-subscription-updates --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --updates <updates> --apply-at <apply_at> --charge-at <charge_at>
@@ -41864,6 +42164,10 @@ Examples:
41864
42164
  args.charge_at = opts.chargeAt;
41865
42165
  if (opts.calculationMethod !== void 0)
41866
42166
  args.calculation_method = opts.calculationMethod;
42167
+ if (opts.precision !== void 0)
42168
+ args.precision = opts.precision;
42169
+ if (opts.refundMethod !== void 0)
42170
+ args.refund_method = opts.refundMethod;
41867
42171
  if (opts.updates !== void 0)
41868
42172
  args.updates = opts.updates;
41869
42173
  await ctx.execute({
@@ -41873,7 +42177,7 @@ Examples:
41873
42177
  queryParamKeys: []
41874
42178
  });
41875
42179
  });
41876
- resource.command("cancel").description(`Cancel a subscription. Supports immediate or end-of-period cancellation. Optionally specify a cancellation reason.`).requiredOption("--id <value>", `id parameter`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--reason <value>", `Reason for the cancellation.`).option("--pro-rata", `Indicates if the cancel should refund the customer using a pro rata strategy.`).addHelpText("after", `
42180
+ resource.command("cancel").description(`Cancel a subscription. Supports immediate or end-of-period cancellation. Optionally specify a cancellation reason.`).requiredOption("--id <value>", `id parameter`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--reason <value>", `Reason for the cancellation.`).option("--pro-rata", `Indicates if the cancel should refund the customer using a pro rata strategy.`).option("--refund-method <value>", `Override the refund destination for the resulting credit note. When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).addHelpText("after", `
41877
42181
  Examples:
41878
42182
  hyperline subscriptions cancel --id <id>
41879
42183
  hyperline subscriptions cancel --id <id> --cancel-at <cancel_at> --reason <reason>
@@ -41890,6 +42194,8 @@ Examples:
41890
42194
  args.cancel_at = opts.cancelAt;
41891
42195
  if (opts.reason !== void 0)
41892
42196
  args.reason = opts.reason;
42197
+ if (opts.refundMethod !== void 0)
42198
+ args.refund_method = opts.refundMethod;
41893
42199
  if (opts.proRata !== void 0)
41894
42200
  args.pro_rata = true;
41895
42201
  await ctx.execute({
@@ -41918,7 +42224,7 @@ Examples:
41918
42224
  queryParamKeys: []
41919
42225
  });
41920
42226
  });
41921
- resource.command("pause").description(`Pause a subscription. Billing stops while paused. Optionally specify a reactivate_at date for automatic resumption.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date when the subscription will be automatically reactivated. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
42227
+ resource.command("pause").description(`Pause a subscription. Billing stops while paused. Optionally specify a reactivate_at date for automatic resumption. If the subscription is already paused, updates (or clears) its reactivation date.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date when the subscription will be automatically reactivated. Must be a future date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
41922
42228
  Examples:
41923
42229
  hyperline subscriptions pause --id <id>
41924
42230
  hyperline subscriptions pause --id <id> --reactivate-at <reactivate_at>
@@ -41999,7 +42305,7 @@ Examples:
41999
42305
  queryParamKeys: []
42000
42306
  });
42001
42307
  });
42002
- resource.command("simulate-subscription-updates").description(`Preview the effect of updates on a subscription without applying them. Returns simulated invoice and billing impact.`).requiredOption("--id <value>", `id parameter`).requiredOption("--application-schedule <value>", `application_schedule`).option("--apply-at <value>", `The date when the update should be applied. Required when application_schedule is 'scheduled'.`).requiredOption("--payment-schedule <value>", `payment_schedule`).option("--charge-at <value>", `The date when the resulting subscription update should be charged. Required when payment_schedule is 'custom'. Must be in the future.`).requiredOption("--calculation-method <value>", `calculation_method`).requiredOption("--updates <value>", `updates`).addHelpText("after", `
42308
+ resource.command("simulate-subscription-updates").description(`Preview the effect of updates on a subscription without applying them. Returns simulated invoice and billing impact.`).requiredOption("--id <value>", `id parameter`).requiredOption("--application-schedule <value>", `application_schedule`).option("--apply-at <value>", `The date when the update should be applied. Required when application_schedule is 'scheduled'.`).requiredOption("--payment-schedule <value>", `payment_schedule`).option("--charge-at <value>", `The date when the resulting subscription update should be charged. Required when payment_schedule is 'custom'. Must be in the future.`).requiredOption("--calculation-method <value>", `calculation_method`).option("--precision <value>", `Granularity used to prorate the update amount. Defaults to 'calendar_days' when omitted, prorating on whole calendar days; 'milliseconds' prorates on the exact elapsed time, charging the precise partial period.`).option("--refund-method <value>", `Override the refund destination when the update generates a refund credit note (e.g. seat reduction). When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).requiredOption("--updates <value>", `updates`).addHelpText("after", `
42003
42309
  Examples:
42004
42310
  hyperline subscriptions simulate-subscription-updates --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --updates <updates>
42005
42311
  hyperline subscriptions simulate-subscription-updates --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --updates <updates> --apply-at <apply_at> --charge-at <charge_at>
@@ -42022,6 +42328,10 @@ Examples:
42022
42328
  args.charge_at = opts.chargeAt;
42023
42329
  if (opts.calculationMethod !== void 0)
42024
42330
  args.calculation_method = opts.calculationMethod;
42331
+ if (opts.precision !== void 0)
42332
+ args.precision = opts.precision;
42333
+ if (opts.refundMethod !== void 0)
42334
+ args.refund_method = opts.refundMethod;
42025
42335
  if (opts.updates !== void 0)
42026
42336
  args.updates = opts.updates;
42027
42337
  await ctx.execute({
@@ -42047,7 +42357,7 @@ Strategy used to cancel the subscription. If not specified \`do_nothing\` is use
42047
42357
  - \`refund_custom\`: Will refund to the customer a custom amount.
42048
42358
  - \`end_of_period\`: Will cancel the subscription at the end date of the current billing period.
42049
42359
  - \`do_nothing\`: Will only cease the subscription without any additional actions.
42050
- `).option("--cancellation-amount <number>", `Custom amount used when cancelling the subscription. Only applies to the \`charge_custom\` or the \`refund_custom\` cancellation strategy.`).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--tax-only <value>", `Only tax will be charged on this subscription.`).option("--generate-draft-invoices <value>", `Generate draft invoices for the subscription. Each invoice will need to be reviewed and validated manually before being sent`).option("--generate-document <value>", `Generate non-legal documents instead of invoices.`).option("--document-name <value>", `If \`generate_document\` is turned on, allows you to give a name to your document.`).option("--add-tax-to-document <value>", `If \`generate_document\` is turned on, will add taxes to document.`).option("--do-not-charge-subscription <value>", `Subscription will be invoiced but not charged (invoices/documents will be settled directly).`).option("--invoice-custom-note <value>", `Default custom note added to invoices generated by the subscription.`).option("--invoice-schedule <value>", `
42360
+ `).option("--cancellation-amount <number>", `Custom amount used when cancelling the subscription. Only applies to the \`charge_custom\` or the \`refund_custom\` cancellation strategy.`).option("--cancellation-refund-method <value>", `Override the refund destination for credit notes generated by \`refund_prorata\` / \`refund_custom\` cancellation strategies. When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--tax-only <value>", `Only tax will be charged on this subscription.`).option("--generate-draft-invoices <value>", `Generate draft invoices for the subscription. Each invoice will need to be reviewed and validated manually before being sent`).option("--generate-document <value>", `Generate non-legal documents instead of invoices.`).option("--document-name <value>", `If \`generate_document\` is turned on, allows you to give a name to your document.`).option("--add-tax-to-document <value>", `If \`generate_document\` is turned on, will add taxes to document.`).option("--do-not-charge-subscription <value>", `Subscription will be invoiced but not charged (invoices/documents will be settled directly).`).option("--invoice-custom-note <value>", `Default custom note added to invoices generated by the subscription.`).option("--invoice-schedule <value>", `
42051
42361
  Defines when invoices are generated relative to the billing period.
42052
42362
 
42053
42363
  - \`period_start\`: Invoices are generated at the start of the billing period.
@@ -42102,6 +42412,8 @@ Examples:
42102
42412
  args.cancel_at = opts.cancelAt;
42103
42413
  if (opts.cancellationStrategy !== void 0)
42104
42414
  args.cancellation_strategy = opts.cancellationStrategy;
42415
+ if (opts.cancellationRefundMethod !== void 0)
42416
+ args.cancellation_refund_method = opts.cancellationRefundMethod;
42105
42417
  if (opts.properties !== void 0)
42106
42418
  args.properties = opts.properties;
42107
42419
  if (opts.customProperties !== void 0)
@@ -42384,7 +42696,7 @@ Examples:
42384
42696
  queryParamKeys: []
42385
42697
  });
42386
42698
  });
42387
- resource.command("update").description(`Comprehensive subscription update: modify fields, manage phases (add/update/delete pending phases), update products within phases, and manage coupons. Payload mirrors GET response structure.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Subscription custom name.`).option("--purchase-order <value>", `Reference to the purchase order.`).option("--minimum-invoice-fee <number>", `Minimum fee applied to each invoice outside of one time payments.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--tax-only <value>", `Only tax will be charged on this subscription.`).option("--generate-draft-invoices <value>", `Generate draft invoices for the subscription. Each invoice will need to be reviewed and validated manually before being sent`).option("--generate-document <value>", `Generate non-legal documents instead of invoices.`).option("--document-name <value>", `If \`generate_document\` is turned on, allows you to give a name to your document.`).option("--add-tax-to-document <value>", `If \`generate_document\` is turned on, will add taxes to document.`).option("--do-not-charge-subscription <value>", `Subscription will be invoiced but not charged (invoices/documents will be settled directly).`).option("--invoice-custom-note <value>", `Default custom note added to invoices generated by the subscription.`).option("--invoice-schedule <value>", `
42699
+ resource.command("update").description(`Comprehensive subscription update: modify fields, manage phases (add/update/delete pending phases), update products within phases, and manage coupons. Draft quote subscription configuration must be updated through PATCH /v1/quotes/{id}.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Subscription custom name.`).option("--purchase-order <value>", `Reference to the purchase order.`).option("--minimum-invoice-fee <number>", `Minimum fee applied to each invoice outside of one time payments.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--tax-only <value>", `Only tax will be charged on this subscription.`).option("--generate-draft-invoices <value>", `Generate draft invoices for the subscription. Each invoice will need to be reviewed and validated manually before being sent`).option("--generate-document <value>", `Generate non-legal documents instead of invoices.`).option("--document-name <value>", `If \`generate_document\` is turned on, allows you to give a name to your document.`).option("--add-tax-to-document <value>", `If \`generate_document\` is turned on, will add taxes to document.`).option("--do-not-charge-subscription <value>", `Subscription will be invoiced but not charged (invoices/documents will be settled directly).`).option("--invoice-custom-note <value>", `Default custom note added to invoices generated by the subscription.`).option("--invoice-schedule <value>", `
42388
42700
  Defines when invoices are generated relative to the billing period.
42389
42701
 
42390
42702
  - \`period_start\`: Invoices are generated at the start of the billing period.
@@ -42744,7 +43056,7 @@ Examples:
42744
43056
  ]
42745
43057
  });
42746
43058
  });
42747
- resource.command("create-subscription-transition").description(`Create a transition from one subscription to another, configured from a subscription, plan, or template. Can be applied immediately or scheduled.`).requiredOption("--source-subscription-id <value>", `The ID of the subscription to transition from`).option("--name <value>", `An optional name for the transition`).option("--calculation-method <value>", `The calculation method to use for the transition. 'do_not_charge' will not generate any transition invoice. 'pro_rata' will generate a prorated invoice for the remaining period.`).option("--billing-cycle-transition-method <value>", `The billing cycle transition method to use. 'keep_current_billing_cycle' will keep the current billing cycle dates if possible. 'align_to_new_billing_cycle' will align the billing cycle to the transition date.`).requiredOption("--application-schedule <value>", `Whether the transition should be applied 'immediately' or 'scheduled' for a specific date. Past dates within the current billing period are supported and will be applied immediately.`).option("--transition-date <value>", `The date at which the transition should occur. Only applicable if the application schedule is 'scheduled'. Can be a past date within the current billing period. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).requiredOption("--target-subscription <value>", `The configuration of the subscription to transition to`).addHelpText("after", `
43059
+ resource.command("create-subscription-transition").description(`Create a transition from one subscription to another, configured from a subscription, plan, or template. Can be applied immediately or scheduled.`).requiredOption("--source-subscription-id <value>", `The ID of the subscription to transition from`).option("--name <value>", `An optional name for the transition`).option("--calculation-method <value>", `The calculation method to use for the transition. 'do_not_charge' will not generate any transition invoice. 'pro_rata' will generate a prorated invoice for the remaining period. 'refund_and_reinvoice' (only available with application_schedule 'last_renewal') issues a credit note for what was invoiced for the current period and a separate invoice for the new configuration.`).option("--billing-cycle-transition-method <value>", `The billing cycle transition method to use. 'keep_current_billing_cycle' will keep the current billing cycle dates if possible. 'align_to_new_billing_cycle' will align the billing cycle to the transition date.`).requiredOption("--application-schedule <value>", `When the transition should be applied: 'immediately', 'scheduled' for a specific date, or 'last_renewal' to apply it retroactively to the start of the current billing period (refunding what was already invoiced for that period and re-charging the new configuration). Past dates within the current billing period are supported and will be applied immediately.`).option("--transition-date <value>", `The date at which the transition should occur. Only applicable if the application schedule is 'scheduled'. Can be a past date within the current billing period. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).requiredOption("--target-subscription <value>", `The configuration of the subscription to transition to`).addHelpText("after", `
42748
43060
  Examples:
42749
43061
  hyperline subscriptions-transitions create-subscription-transition --source-subscription-id <source_subscription_id> --application-schedule <application_schedule> --target-subscription <target_subscription>
42750
43062
  hyperline subscriptions-transitions create-subscription-transition --source-subscription-id <source_subscription_id> --application-schedule <application_schedule> --target-subscription <target_subscription> --name <name> --calculation-method <calculation_method>
@@ -42958,6 +43270,30 @@ Examples:
42958
43270
  });
42959
43271
  }
42960
43272
 
43273
+ // build/commands/generated/transactions.js
43274
+ function registerTransactionsCommands(parent) {
43275
+ const resource = parent.command("transactions").description("Manage transactions");
43276
+ resource.command("refund").description(`Refund a settled banking transaction for its full amount. The related invoice will switch back to to pay status. Use the create credit note endpoint if you want to cancel (and optionally refund) the initial invoice.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
43277
+ Examples:
43278
+ hyperline transactions refund --id <id>
43279
+ hyperline transactions refund --id <id> --output json`).action(async (opts) => {
43280
+ const ctx = resource.parent?.opts()._ctx;
43281
+ if (!ctx) {
43282
+ process.stderr.write("Error: Not authenticated\n");
43283
+ process.exit(1);
43284
+ }
43285
+ const args = {};
43286
+ if (opts.id !== void 0)
43287
+ args.id = opts.id;
43288
+ await ctx.execute({
43289
+ method: "POST",
43290
+ path: "/v1/transactions/{id}/refund",
43291
+ args,
43292
+ queryParamKeys: []
43293
+ });
43294
+ });
43295
+ }
43296
+
42961
43297
  // build/commands/generated/wallets.js
42962
43298
  function registerWalletsCommands(parent) {
42963
43299
  const resource = parent.command("wallets").description("Manage wallets");
@@ -43118,10 +43454,10 @@ Examples:
43118
43454
  queryParamKeys: []
43119
43455
  });
43120
43456
  });
43121
- resource.command("load").description(`Add credits to a wallet by charging the customer's payment method. The customer must have an active payment method.`).requiredOption("--id <value>", `id parameter`).option("--amount <number>", `Amount to be loaded onto the wallet. A corresponding invoice to pay will be generated. Expressed in currency's smallest unit.`).option("--amount-free <number>", `Amount free/offered to be loaded onto the wallet. No invoice is generated. Expressed in currency's smallest unit.`).option("--document-status <value>", `Indicates the status of the document (credit note in case of free top-up or invoice)`).addHelpText("after", `
43457
+ resource.command("load").description(`Add paid credits by charging the customer's payment method, or add free credits by issuing a credit note.`).requiredOption("--id <value>", `id parameter`).option("--type <value>", `Wallet load type. Use \`paid\` to collect payment from the customer's payment method, or \`free\` to grant credits without collecting payment.`).option("--amount <number>", `Amount to be loaded onto the wallet as free credits. A corresponding credit note will be generated and no payment is collected. Expressed in currency's smallest unit.`).option("--comment <value>", `Internal comment stored on the wallet transaction for context.`).option("--document-status <value>", `Indicates the status of the generated credit note for free top-ups.`).option("--bank-account-id <value>", `Bank account ID to use when recording a paid wallet load by bank transfer.`).option("--reference <value>", `Reference stored on the generated payment document for a paid wallet load.`).addHelpText("after", `
43122
43458
  Examples:
43123
43459
  hyperline wallets load --id <id>
43124
- hyperline wallets load --id <id> --amount <amount> --amount-free <amount_free>
43460
+ hyperline wallets load --id <id> --type <type> --amount <amount>
43125
43461
  hyperline wallets load --id <id> --output json`).action(async (opts) => {
43126
43462
  const ctx = resource.parent?.opts()._ctx;
43127
43463
  if (!ctx) {
@@ -43131,12 +43467,18 @@ Examples:
43131
43467
  const args = {};
43132
43468
  if (opts.id !== void 0)
43133
43469
  args.id = opts.id;
43470
+ if (opts.type !== void 0)
43471
+ args.type = opts.type;
43472
+ if (opts.comment !== void 0)
43473
+ args.comment = opts.comment;
43134
43474
  if (opts.documentStatus !== void 0)
43135
43475
  args.document_status = opts.documentStatus;
43476
+ if (opts.bankAccountId !== void 0)
43477
+ args.bank_account_id = opts.bankAccountId;
43478
+ if (opts.reference !== void 0)
43479
+ args.reference = opts.reference;
43136
43480
  if (opts.amount !== void 0)
43137
43481
  args.amount = Number(opts.amount);
43138
- if (opts.amountFree !== void 0)
43139
- args.amount_free = Number(opts.amountFree);
43140
43482
  await ctx.execute({
43141
43483
  method: "POST",
43142
43484
  path: "/v1/wallets/{id}/load",
@@ -43365,11 +43707,13 @@ function registerAllCommands(program2) {
43365
43707
  registerProductsCommands(program2);
43366
43708
  registerPrice_ConfigurationsCommands(program2);
43367
43709
  registerQuotesCommands(program2);
43710
+ registerQuotes_TemplatesCommands(program2);
43368
43711
  registerSubscriptions_TemplatesCommands(program2);
43369
43712
  registerSubscriptionsCommands(program2);
43370
43713
  registerSubscriptions_TransitionsCommands(program2);
43371
43714
  registerSubscriptions_PhasesCommands(program2);
43372
43715
  registerTaxesCommands(program2);
43716
+ registerTransactionsCommands(program2);
43373
43717
  registerWalletsCommands(program2);
43374
43718
  registerWebhooksCommands(program2);
43375
43719
  }
@@ -57160,6 +57504,7 @@ var BooleanSchema = external_exports.boolean().or(external_exports.enum(["true",
57160
57504
  });
57161
57505
  var StringSchemaForMultipartForm = external_exports.string().transform((value) => value === "" ? null : value);
57162
57506
  var StringArraySchemaForMultipartForm = external_exports.string().array().or(external_exports.string().length(0)).transform((value) => typeof value === "string" ? [] : value);
57507
+ var CommaSeparatedArraySchema = external_exports.string().optional().transform((raw) => raw ? raw.split(",").filter(Boolean) : void 0);
57163
57508
  var urlRegex = /^(?:(?:https?):\/\/)?(?:www\.)?(?:[\w-]+\.)+[a-z]{2,7}(?:\/\S*)?$/i;
57164
57509
  var ZodFlexibleUrl = external_exports.string({ message: "Invalid URL" }).regex(urlRegex).transform((url2) => {
57165
57510
  if (!url2)
@@ -61498,6 +61843,7 @@ import * as winston from "winston";
61498
61843
 
61499
61844
  // ../hyperline-monitoring/build/logger/formatting/format.js
61500
61845
  import prune from "json-prune";
61846
+ var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
61501
61847
  function jsonFormat(info) {
61502
61848
  const prunedInfo = JSON.parse(prune(info));
61503
61849
  for (const [key, value] of Object.entries(prunedInfo)) {
@@ -61580,17 +61926,26 @@ function formatAxiosError(error48) {
61580
61926
  url: request?.url,
61581
61927
  baseURL: request?.baseURL,
61582
61928
  params: request?.params,
61583
- headers: request?.headers,
61929
+ headers: redactHeaders({ headers: request?.headers }),
61584
61930
  "axios-retry": request?.["axios-retry"]
61585
61931
  },
61586
61932
  response: {
61587
61933
  status: response?.status,
61588
61934
  statusText: response?.statusText,
61589
- headers: response?.headers,
61935
+ headers: redactHeaders({ headers: response?.headers }),
61590
61936
  data: response?.data
61591
61937
  }
61592
61938
  };
61593
61939
  }
61940
+ function redactHeaders({ headers }) {
61941
+ if (!isRecord(headers)) {
61942
+ return headers;
61943
+ }
61944
+ return Object.fromEntries(Object.entries(headers).map(([headerKey, headerValue]) => [
61945
+ headerKey,
61946
+ REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
61947
+ ]));
61948
+ }
61594
61949
  function isRecord(value) {
61595
61950
  return typeof value === "object" && value !== null && !Array.isArray(value);
61596
61951
  }
@@ -61614,13 +61969,16 @@ function logHttpRequest(logger2, request, extra) {
61614
61969
  });
61615
61970
  }
61616
61971
  function logHttpResponse(logger2, response, responseTime, extra) {
61617
- const { request, statusCode, responseBody } = response;
61972
+ const { request, statusCode, responseBody, responseHeaders } = response;
61618
61973
  const { message, metadata } = transform2(request);
61619
61974
  const readableResponseTime = responseTime ? getReadableTime(responseTime) : void 0;
61620
61975
  const responseMetadata = {
61621
61976
  statusCode,
61622
61977
  responseTime,
61623
- responseBody
61978
+ responseBody,
61979
+ // Redacted so secrets (authorization/cookie/token/…) never reach the logs
61980
+ // while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
61981
+ responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
61624
61982
  };
61625
61983
  logger2.info(`HTTP RES - ${message} ${statusCode} ${readableResponseTime || ""} ${extra?.postfix || ""}`, {
61626
61984
  ...metadata,
@@ -61901,6 +62259,12 @@ var DateTimeSchema = external_exports.iso.datetime({
61901
62259
  example: "2024-12-20T16:04:11Z"
61902
62260
  });
61903
62261
 
62262
+ // ../hyperline-lib/build/http/dto/domain.js
62263
+ var DomainSchema = external_exports.string().trim().toLowerCase().regex(/^(?!:\/\/)(?=.{1,253}$)(?!-)([a-z0-9-]{1,63}\.)+[a-z]{2,63}$/, "Invalid domain").openapi({
62264
+ description: "Domain name.",
62265
+ example: "acme.com"
62266
+ });
62267
+
61904
62268
  // ../hyperline-lib/build/http/dto/error.js
61905
62269
  var ErrorSchema = external_exports.object({
61906
62270
  message: external_exports.string()
@@ -61955,10 +62319,13 @@ var languages = [
61955
62319
  var de = {
61956
62320
  "accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
61957
62321
  "accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
62322
+ "accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
61958
62323
  "accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
62324
+ "accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
61959
62325
  "accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
61960
62326
  "accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
61961
62327
  "accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
62328
+ "accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
61962
62329
  "accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
61963
62330
  "accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
61964
62331
  "creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
@@ -61971,7 +62338,9 @@ var de = {
61971
62338
  "invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
61972
62339
  "invoices.outstandingProduct.name": "Offener Saldo",
61973
62340
  "invoices.prorata.paymentForItem": "Anteilig berechneter Betrag f\xFCr",
62341
+ "invoices.prorata.paymentForItemFullPeriod": "Zahlung f\xFCr",
61974
62342
  "invoices.prorata.refundForItem": "Anteilig erstatteter Betrag f\xFCr",
62343
+ "invoices.prorata.refundForItemFullPeriod": "Erstattung f\xFCr",
61975
62344
  "subscriptions.closingChargeName": "Abschlussgeb\xFChr f\xFCr das Abonnement",
61976
62345
  "subscriptions.correction": "Vorperiodische Anpassung",
61977
62346
  "subscriptions.updates.addCoupon": "Gutschein hinzuf\xFCgen {{couponName}}",
@@ -62000,7 +62369,9 @@ var en = {
62000
62369
  "invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
62001
62370
  "invoices.outstandingProduct.name": "Outstanding balance",
62002
62371
  "invoices.prorata.paymentForItem": "Prorated payment for",
62372
+ "invoices.prorata.paymentForItemFullPeriod": "Payment for",
62003
62373
  "invoices.prorata.refundForItem": "Prorated refund for",
62374
+ "invoices.prorata.refundForItemFullPeriod": "Refund for",
62004
62375
  "subscriptions.closingChargeName": "Closing fee for subscription",
62005
62376
  "subscriptions.correction": "Adjustment previous period",
62006
62377
  "subscriptions.updates.addCoupon": "Add coupon {{couponName}}",
@@ -62020,12 +62391,15 @@ var en = {
62020
62391
  "subscriptions.updates.updateCount.description.full.not_committed.not_invoiced": "Amount of {{amount}} not invoiced for the full period",
62021
62392
  "accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
62022
62393
  "accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
62394
+ "accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
62023
62395
  "accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
62396
+ "accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
62024
62397
  "accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
62025
62398
  "accounting.revrec.debitLineDescription": "Decrease deferred revenue \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62026
62399
  "accounting.revrec.creditLineDescription": "Recognize revenue \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62027
62400
  "accounting.revrec.discountDebitLineDescription": "Decrease deferred discount \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62028
62401
  "accounting.revrec.discountCreditLineDescription": "Recognize contra-revenue (discount) \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62402
+ "accounting.revrec.closedPeriodFallbackNote": " (posted to next open period \u2014 target accounting period closed; original date {{originalDate}})",
62029
62403
  "einvoicing.paymentProcessed": "Payment processed",
62030
62404
  "einvoicing.paymentReceived": "Payment received",
62031
62405
  "einvoicing.paymentFromWallet": "Payment from wallet"
@@ -62035,10 +62409,13 @@ var en = {
62035
62409
  var es = {
62036
62410
  "accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
62037
62411
  "accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
62412
+ "accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
62038
62413
  "accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
62414
+ "accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
62039
62415
  "accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62040
62416
  "accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62041
62417
  "accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62418
+ "accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
62042
62419
  "accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62043
62420
  "accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
62044
62421
  "creditNotes.refundChargeName": "Reembolso por factura",
@@ -62051,7 +62428,9 @@ var es = {
62051
62428
  "invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
62052
62429
  "invoices.outstandingProduct.name": "Saldo pendiente",
62053
62430
  "invoices.prorata.paymentForItem": "Pago prorrateado por",
62431
+ "invoices.prorata.paymentForItemFullPeriod": "Pago por",
62054
62432
  "invoices.prorata.refundForItem": "Reembolso prorrateado por",
62433
+ "invoices.prorata.refundForItemFullPeriod": "Reembolso por",
62055
62434
  "subscriptions.closingChargeName": "Cargo por cierre de suscripci\xF3n",
62056
62435
  "subscriptions.correction": "Ajuste del periodo anterior",
62057
62436
  "subscriptions.updates.addCoupon": "A\xF1adir cup\xF3n {{couponName}}",
@@ -62076,10 +62455,13 @@ var fr = {
62076
62455
  "accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62077
62456
  "accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62078
62457
  "accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62458
+ "accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
62079
62459
  "accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62080
62460
  "accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
62081
62461
  "accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
62462
+ "accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
62082
62463
  "accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
62464
+ "accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
62083
62465
  "accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
62084
62466
  "creditNotes.refundChargeName": "Remboursement pour facture",
62085
62467
  "credits.bundleOf": "{{productName}} - Pack de {{creditCount}} cr\xE9dits",
@@ -62091,7 +62473,9 @@ var fr = {
62091
62473
  "invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
62092
62474
  "invoices.outstandingProduct.name": "Solde impay\xE9",
62093
62475
  "invoices.prorata.paymentForItem": "Paiement au prorata pour",
62476
+ "invoices.prorata.paymentForItemFullPeriod": "Paiement pour",
62094
62477
  "invoices.prorata.refundForItem": "Remboursement au prorata pour",
62478
+ "invoices.prorata.refundForItemFullPeriod": "Remboursement pour",
62095
62479
  "subscriptions.closingChargeName": "Frais de cl\xF4ture pour abonnement",
62096
62480
  "subscriptions.correction": "Ajustement p\xE9riode pr\xE9c\xE9dente",
62097
62481
  "subscriptions.updates.addCoupon": "Ajout du coupon {{couponName}}",
@@ -62115,10 +62499,13 @@ var fr = {
62115
62499
  var it = {
62116
62500
  "accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
62117
62501
  "accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
62502
+ "accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
62118
62503
  "accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
62504
+ "accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
62119
62505
  "accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62120
62506
  "accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62121
62507
  "accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62508
+ "accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
62122
62509
  "accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62123
62510
  "accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
62124
62511
  "creditNotes.refundChargeName": "Rimborso per fattura",
@@ -62131,7 +62518,9 @@ var it = {
62131
62518
  "invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
62132
62519
  "invoices.outstandingProduct.name": "Saldo insoluto",
62133
62520
  "invoices.prorata.paymentForItem": "Pagamento proporzionale per",
62521
+ "invoices.prorata.paymentForItemFullPeriod": "Pagamento per",
62134
62522
  "invoices.prorata.refundForItem": "Rimborso proporzionale per",
62523
+ "invoices.prorata.refundForItemFullPeriod": "Rimborso per",
62135
62524
  "subscriptions.closingChargeName": "Costo di chiusura per abbonamento",
62136
62525
  "subscriptions.correction": "Correzione periodo precedente",
62137
62526
  "subscriptions.updates.addCoupon": "Aggiungi coupon {{couponName}}",
@@ -62155,10 +62544,13 @@ var it = {
62155
62544
  var nl = {
62156
62545
  "accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
62157
62546
  "accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
62547
+ "accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
62158
62548
  "accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
62549
+ "accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
62159
62550
  "accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62160
62551
  "accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62161
62552
  "accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62553
+ "accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
62162
62554
  "accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62163
62555
  "accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
62164
62556
  "creditNotes.refundChargeName": "Terugbetaling voor factuur",
@@ -62171,7 +62563,9 @@ var nl = {
62171
62563
  "invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
62172
62564
  "invoices.outstandingProduct.name": "Openstaand saldo",
62173
62565
  "invoices.prorata.paymentForItem": "Gedeeltelijke betaling voor",
62566
+ "invoices.prorata.paymentForItemFullPeriod": "Betaling voor",
62174
62567
  "invoices.prorata.refundForItem": "Gedeeltelijke terugbetaling voor",
62568
+ "invoices.prorata.refundForItemFullPeriod": "Terugbetaling voor",
62175
62569
  "subscriptions.closingChargeName": "Afsluitkosten voor abonnement",
62176
62570
  "subscriptions.correction": "Aanpassing vorige periode",
62177
62571
  "subscriptions.updates.addCoupon": "Coupon toevoegen {{couponName}}",
@@ -62195,10 +62589,13 @@ var nl = {
62195
62589
  var pl = {
62196
62590
  "accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
62197
62591
  "accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
62592
+ "accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
62198
62593
  "accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
62594
+ "accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
62199
62595
  "accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62200
62596
  "accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62201
62597
  "accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62598
+ "accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
62202
62599
  "accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62203
62600
  "accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
62204
62601
  "creditNotes.refundChargeName": "Zwrot za faktur\u0119",
@@ -62211,7 +62608,9 @@ var pl = {
62211
62608
  "invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
62212
62609
  "invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
62213
62610
  "invoices.prorata.paymentForItem": "P\u0142atno\u015B\u0107 proporcjonalna za",
62611
+ "invoices.prorata.paymentForItemFullPeriod": "P\u0142atno\u015B\u0107 za",
62214
62612
  "invoices.prorata.refundForItem": "Zwrot proporcjonalny za",
62613
+ "invoices.prorata.refundForItemFullPeriod": "Zwrot za",
62215
62614
  "subscriptions.closingChargeName": "Op\u0142ata za zamkni\u0119cie subskrypcji",
62216
62615
  "subscriptions.correction": "Korekta poprzedniego okresu",
62217
62616
  "subscriptions.updates.addCoupon": "Dodaj kupon {{couponName}}",
@@ -62235,10 +62634,13 @@ var pl = {
62235
62634
  var pt = {
62236
62635
  "accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
62237
62636
  "accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
62637
+ "accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
62238
62638
  "accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
62639
+ "accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
62239
62640
  "accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62240
62641
  "accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62241
62642
  "accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62643
+ "accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
62242
62644
  "accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62243
62645
  "accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
62244
62646
  "creditNotes.refundChargeName": "Reembolso pela fatura",
@@ -62251,7 +62653,9 @@ var pt = {
62251
62653
  "invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
62252
62654
  "invoices.outstandingProduct.name": "Saldo em aberto",
62253
62655
  "invoices.prorata.paymentForItem": "Pagamento proporcional por",
62656
+ "invoices.prorata.paymentForItemFullPeriod": "Pagamento por",
62254
62657
  "invoices.prorata.refundForItem": "Reembolso proporcional por",
62658
+ "invoices.prorata.refundForItemFullPeriod": "Reembolso por",
62255
62659
  "subscriptions.closingChargeName": "Taxa de encerramento da assinatura",
62256
62660
  "subscriptions.correction": "Ajuste do per\xEDodo anterior",
62257
62661
  "subscriptions.updates.addCoupon": "Adicionar cupom {{couponName}}",
@@ -62373,10 +62777,16 @@ function buildHttpClient(dependencies) {
62373
62777
  return response;
62374
62778
  }, (error48) => {
62375
62779
  if (error48.response) {
62376
- const { config: responseConfig, status } = error48.response;
62780
+ const { config: responseConfig, status, headers } = error48.response;
62377
62781
  const timeStart = responseConfig.metadata.timeStart;
62378
62782
  const responseTime = timeStart ? Date.now() - timeStart : void 0;
62379
- logHttpResponse(logger2, { request: toLogRequest(responseConfig), statusCode: status }, responseTime, { metadata: { error: error48.message } });
62783
+ logHttpResponse(logger2, {
62784
+ request: toLogRequest(responseConfig),
62785
+ statusCode: status,
62786
+ // Surfaces upstream response headers on error responses (e.g. the
62787
+ // rate-limit headers on a 429); redacted in logHttpResponse.
62788
+ responseHeaders: headers
62789
+ }, responseTime, { metadata: { error: error48.message } });
62380
62790
  }
62381
62791
  return Promise.reject(error48);
62382
62792
  });
@@ -62469,6 +62879,9 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
62469
62879
 
62470
62880
  // ../hyperline-mcp/build/server/server.js
62471
62881
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
62882
+ var defaultToolOutputSchema = {
62883
+ result: external_exports.unknown()
62884
+ };
62472
62885
 
62473
62886
  // ../hyperline-mcp/build/session/sessionKey.js
62474
62887
  import { createHmac } from "node:crypto";