@hyperline/cli 0.1.0-build.1.158bc74 → 0.1.0-build.1.1b6c658

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_zod17 = require_lib();
34897
+ var import_zod19 = require_lib();
34898
34898
  var countryIds2 = ["all", ...countries.map(({ id }) => id)];
34899
- var ZodId = import_zod17.z.enum(countryIds2);
34900
- var ZodTranslationsSchemaFn = (schema) => import_zod17.z.record(import_zod17.z.string(), schema.optional());
34899
+ var ZodId = import_zod19.z.enum(countryIds2);
34900
+ var ZodTranslationsSchemaFn = (schema) => import_zod19.z.record(import_zod19.z.string(), schema.optional());
34901
34901
  var UsStates = [
34902
34902
  { id: "AA", name: "Armed Forces Americas" },
34903
34903
  { id: "AE", name: "Armed Forces Europe" },
@@ -38020,7 +38020,7 @@ Examples:
38020
38020
  queryParamKeys: ["take", "skip"]
38021
38021
  });
38022
38022
  });
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", `
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.`).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
38024
  Examples:
38025
38025
  hyperline coupons create --name <name> --type <type>
38026
38026
  hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
@@ -38039,6 +38039,10 @@ Examples:
38039
38039
  args.expiration_date = opts.expirationDate;
38040
38040
  if (opts.productIds !== void 0)
38041
38041
  args.product_ids = opts.productIds;
38042
+ if (opts.repeat !== void 0)
38043
+ args.repeat = opts.repeat;
38044
+ if (opts.duration !== void 0)
38045
+ args.duration = opts.duration;
38042
38046
  if (opts.type !== void 0)
38043
38047
  args.type = opts.type;
38044
38048
  if (opts.currency !== void 0)
@@ -38074,7 +38078,7 @@ Examples:
38074
38078
  queryParamKeys: []
38075
38079
  });
38076
38080
  });
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", `
38081
+ 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
38082
  Examples:
38079
38083
  hyperline coupons update --id <id> --name <name> --type <type>
38080
38084
  hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
@@ -38095,6 +38099,10 @@ Examples:
38095
38099
  args.expiration_date = opts.expirationDate;
38096
38100
  if (opts.productIds !== void 0)
38097
38101
  args.product_ids = opts.productIds;
38102
+ if (opts.repeat !== void 0)
38103
+ args.repeat = opts.repeat;
38104
+ if (opts.duration !== void 0)
38105
+ args.duration = opts.duration;
38098
38106
  if (opts.type !== void 0)
38099
38107
  args.type = opts.type;
38100
38108
  if (opts.currency !== void 0)
@@ -38429,16 +38437,24 @@ Examples:
38429
38437
  // build/commands/generated/customers.js
38430
38438
  function registerCustomersCommands(parent) {
38431
38439
  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", `
38440
+ 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
38441
  Examples:
38434
38442
  hyperline customers list
38435
- hyperline customers list --take <take> --name <name>`).action(async (opts) => {
38443
+ hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
38436
38444
  const ctx = resource.parent?.opts()._ctx;
38437
38445
  if (!ctx) {
38438
38446
  process.stderr.write("Error: Not authenticated\n");
38439
38447
  process.exit(1);
38440
38448
  }
38441
38449
  const args = {};
38450
+ if (opts.cursor !== void 0)
38451
+ args.cursor = opts.cursor;
38452
+ if (opts.includeTotal !== void 0)
38453
+ args.include_total = opts.includeTotal;
38454
+ if (opts.order !== void 0)
38455
+ args.order = opts.order;
38456
+ if (opts.sort !== void 0)
38457
+ args.sort = opts.sort;
38442
38458
  if (opts.name !== void 0)
38443
38459
  args.name = opts.name;
38444
38460
  if (opts["name.not"] !== void 0)
@@ -38611,17 +38627,18 @@ Examples:
38611
38627
  args.updated_at__gt = opts["updatedAt.gt"];
38612
38628
  if (opts["updatedAt.gte"] !== void 0)
38613
38629
  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);
38630
+ if (opts.limit !== void 0)
38631
+ args.limit = Number(opts.limit);
38618
38632
  await ctx.execute({
38619
38633
  method: "GET",
38620
- path: "/v1/customers",
38634
+ path: "/v2/customers",
38621
38635
  args,
38622
38636
  queryParamKeys: [
38623
- "take",
38624
- "skip",
38637
+ "limit",
38638
+ "cursor",
38639
+ "include_total",
38640
+ "order",
38641
+ "sort",
38625
38642
  "name",
38626
38643
  "name__not",
38627
38644
  "name__isNull",
@@ -38711,19 +38728,41 @@ Examples:
38711
38728
  ]
38712
38729
  });
38713
38730
  });
38731
+ 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", `
38732
+ Examples:
38733
+ hyperline customers get --id <id>`).action(async (opts) => {
38734
+ const ctx = resource.parent?.opts()._ctx;
38735
+ if (!ctx) {
38736
+ process.stderr.write("Error: Not authenticated\n");
38737
+ process.exit(1);
38738
+ }
38739
+ const args = {};
38740
+ if (opts.id !== void 0)
38741
+ args.id = opts.id;
38742
+ await ctx.execute({
38743
+ method: "GET",
38744
+ path: "/v2/customers/{id}",
38745
+ args,
38746
+ queryParamKeys: []
38747
+ });
38748
+ });
38714
38749
  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
38750
  Customer type.
38716
38751
 
38717
38752
  - \`corporate\`: The customer is a business entity.
38718
38753
  - \`person\`: The customer is a natural person.
38719
38754
  - \`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>", `
38755
+ `).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.
38756
+
38757
+ - \`taxable\`: Taxes are automatically determined for the customer.
38758
+ - \`exempt\`: The customer is exempt from tax.
38759
+ `).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 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
38760
  How customer invoices are issued from the parent organisation.
38722
38761
 
38723
38762
  - \`none\`: Invoices will keep being issued from this customer.
38724
38763
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
38725
38764
  - \`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", `
38765
+ `).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
38766
  Examples:
38728
38767
  hyperline customers create-customer
38729
38768
  hyperline customers create-customer --name <name> --type <type>
@@ -38742,6 +38781,8 @@ Examples:
38742
38781
  args.currency = opts.currency;
38743
38782
  if (opts.taxIds !== void 0)
38744
38783
  args.tax_ids = opts.taxIds;
38784
+ if (opts.taxability !== void 0)
38785
+ args.taxability = opts.taxability;
38745
38786
  if (opts.registrationNumber !== void 0)
38746
38787
  args.registration_number = opts.registrationNumber;
38747
38788
  if (opts.externalId !== void 0)
@@ -38778,6 +38819,10 @@ Examples:
38778
38819
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
38779
38820
  if (opts.priceBookId !== void 0)
38780
38821
  args.price_book_id = opts.priceBookId;
38822
+ if (opts.ownerId !== void 0)
38823
+ args.owner_id = opts.ownerId;
38824
+ if (opts.followerIds !== void 0)
38825
+ args.follower_ids = opts.followerIds;
38781
38826
  if (opts.taxRateCustom !== void 0)
38782
38827
  args.tax_rate_custom = Number(opts.taxRateCustom);
38783
38828
  if (opts.customPaymentDelay !== void 0)
@@ -38812,24 +38857,6 @@ Examples:
38812
38857
  queryParamKeys: []
38813
38858
  });
38814
38859
  });
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
38860
  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
38861
  Examples:
38835
38862
  hyperline customers get-customer-portal-url --id <id>`).action(async (opts) => {
@@ -38854,13 +38881,17 @@ Customer type.
38854
38881
  - \`corporate\`: The customer is a business entity.
38855
38882
  - \`person\`: The customer is a natural person.
38856
38883
  - \`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>", `
38884
+ `).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.
38885
+
38886
+ - \`taxable\`: Taxes are automatically determined for the customer.
38887
+ - \`exempt\`: The customer is exempt from tax.
38888
+ `).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 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
38889
  How customer invoices are issued from the parent organisation.
38859
38890
 
38860
38891
  - \`none\`: Invoices will keep being issued from this customer.
38861
38892
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
38862
38893
  - \`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", `
38894
+ `).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
38895
  Examples:
38865
38896
  hyperline customers update --id <id>
38866
38897
  hyperline customers update --id <id> --name <name> --type <type>
@@ -38881,6 +38912,8 @@ Examples:
38881
38912
  args.currency = opts.currency;
38882
38913
  if (opts.taxIds !== void 0)
38883
38914
  args.tax_ids = opts.taxIds;
38915
+ if (opts.taxability !== void 0)
38916
+ args.taxability = opts.taxability;
38884
38917
  if (opts.registrationNumber !== void 0)
38885
38918
  args.registration_number = opts.registrationNumber;
38886
38919
  if (opts.externalId !== void 0)
@@ -38919,6 +38952,10 @@ Examples:
38919
38952
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
38920
38953
  if (opts.priceBookId !== void 0)
38921
38954
  args.price_book_id = opts.priceBookId;
38955
+ if (opts.ownerId !== void 0)
38956
+ args.owner_id = opts.ownerId;
38957
+ if (opts.followerIds !== void 0)
38958
+ args.follower_ids = opts.followerIds;
38922
38959
  if (opts.taxRateCustom !== void 0)
38923
38960
  args.tax_rate_custom = Number(opts.taxRateCustom);
38924
38961
  if (opts.customPaymentDelay !== void 0)
@@ -39816,16 +39853,20 @@ Examples:
39816
39853
  // build/commands/generated/invoices.js
39817
39854
  function registerInvoicesCommands(parent) {
39818
39855
  const resource = parent.command("invoices").description("Manage invoices");
39819
- resource.command("list").description(`List invoices with filters for type, status, customer_id, customer_external_id, subscription_id, invoicing_entity_id, invoice_number, period dates, emission_date, due_date, and updated_at. Sortable by created_at or emitted_at. By default, open invoices are excluded. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--customer-external-id <value>", `customer_external_id`).option("--subscription-id <value>", `subscription_id`).option("--subscription-id.not <value>", `subscription_id__not`).option("--subscription-id.is-null <value>", `subscription_id__isNull`).option("--subscription-id.is-not-null <value>", `subscription_id__isNotNull`).option("--subscription-id.equals <value>", `subscription_id__equals`).option("--subscription-id.contains <value>", `subscription_id__contains`).option("--subscription-id.starts-with <value>", `subscription_id__startsWith`).option("--subscription-id.end-with <value>", `subscription_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.is-null <value>", `invoicing_entity_id__isNull`).option("--invoicing-entity-id.is-not-null <value>", `invoicing_entity_id__isNotNull`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--invoice-number <value>", `invoice_number`).option("--invoice-number.not <value>", `invoice_number__not`).option("--invoice-number.is-null <value>", `invoice_number__isNull`).option("--invoice-number.is-not-null <value>", `invoice_number__isNotNull`).option("--invoice-number.equals <value>", `invoice_number__equals`).option("--invoice-number.contains <value>", `invoice_number__contains`).option("--invoice-number.starts-with <value>", `invoice_number__startsWith`).option("--invoice-number.end-with <value>", `invoice_number__endWith`).option("--original-invoice-id <value>", `original_invoice_id`).option("--original-invoice-id.not <value>", `original_invoice_id__not`).option("--original-invoice-id.is-null <value>", `original_invoice_id__isNull`).option("--original-invoice-id.is-not-null <value>", `original_invoice_id__isNotNull`).option("--original-invoice-id.equals <value>", `original_invoice_id__equals`).option("--original-invoice-id.contains <value>", `original_invoice_id__contains`).option("--original-invoice-id.starts-with <value>", `original_invoice_id__startsWith`).option("--original-invoice-id.end-with <value>", `original_invoice_id__endWith`).option("--original-invoice-number <value>", `original_invoice_number`).option("--original-invoice-number.not <value>", `original_invoice_number__not`).option("--original-invoice-number.is-null <value>", `original_invoice_number__isNull`).option("--original-invoice-number.is-not-null <value>", `original_invoice_number__isNotNull`).option("--original-invoice-number.equals <value>", `original_invoice_number__equals`).option("--original-invoice-number.contains <value>", `original_invoice_number__contains`).option("--original-invoice-number.starts-with <value>", `original_invoice_number__startsWith`).option("--original-invoice-number.end-with <value>", `original_invoice_number__endWith`).option("--line-item-id <value>", `line_item_id`).option("--period-start <value>", `period_start`).option("--period-start.not <value>", `period_start__not`).option("--period-start.is-null <value>", `period_start__isNull`).option("--period-start.is-not-null <value>", `period_start__isNotNull`).option("--period-start.equals <value>", `period_start__equals`).option("--period-start.lt <value>", `period_start__lt`).option("--period-start.lte <value>", `period_start__lte`).option("--period-start.gt <value>", `period_start__gt`).option("--period-start.gte <value>", `period_start__gte`).option("--period-end <value>", `period_end`).option("--period-end.not <value>", `period_end__not`).option("--period-end.is-null <value>", `period_end__isNull`).option("--period-end.is-not-null <value>", `period_end__isNotNull`).option("--period-end.equals <value>", `period_end__equals`).option("--period-end.lt <value>", `period_end__lt`).option("--period-end.lte <value>", `period_end__lte`).option("--period-end.gt <value>", `period_end__gt`).option("--period-end.gte <value>", `period_end__gte`).option("--emission-date <value>", `emission_date`).option("--emission-date.not <value>", `emission_date__not`).option("--emission-date.is-null <value>", `emission_date__isNull`).option("--emission-date.is-not-null <value>", `emission_date__isNotNull`).option("--emission-date.equals <value>", `emission_date__equals`).option("--emission-date.lt <value>", `emission_date__lt`).option("--emission-date.lte <value>", `emission_date__lte`).option("--emission-date.gt <value>", `emission_date__gt`).option("--emission-date.gte <value>", `emission_date__gte`).option("--due-date <value>", `due_date`).option("--due-date.not <value>", `due_date__not`).option("--due-date.is-null <value>", `due_date__isNull`).option("--due-date.is-not-null <value>", `due_date__isNotNull`).option("--due-date.equals <value>", `due_date__equals`).option("--due-date.lt <value>", `due_date__lt`).option("--due-date.lte <value>", `due_date__lte`).option("--due-date.gt <value>", `due_date__gt`).option("--due-date.gte <value>", `due_date__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", `
39856
+ resource.command("list").description(`List invoices with filters for type, status, customer_id, customer_external_id, subscription_id, invoicing_entity_id, invoice_number, period dates, emission_date, due_date, and updated_at. Sortable by created_at or emitted_at. By default, open invoices are excluded. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--customer-external-id <value>", `customer_external_id`).option("--subscription-id <value>", `subscription_id`).option("--subscription-id.not <value>", `subscription_id__not`).option("--subscription-id.is-null <value>", `subscription_id__isNull`).option("--subscription-id.is-not-null <value>", `subscription_id__isNotNull`).option("--subscription-id.equals <value>", `subscription_id__equals`).option("--subscription-id.contains <value>", `subscription_id__contains`).option("--subscription-id.starts-with <value>", `subscription_id__startsWith`).option("--subscription-id.end-with <value>", `subscription_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.is-null <value>", `invoicing_entity_id__isNull`).option("--invoicing-entity-id.is-not-null <value>", `invoicing_entity_id__isNotNull`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--invoice-number <value>", `invoice_number`).option("--invoice-number.not <value>", `invoice_number__not`).option("--invoice-number.is-null <value>", `invoice_number__isNull`).option("--invoice-number.is-not-null <value>", `invoice_number__isNotNull`).option("--invoice-number.equals <value>", `invoice_number__equals`).option("--invoice-number.contains <value>", `invoice_number__contains`).option("--invoice-number.starts-with <value>", `invoice_number__startsWith`).option("--invoice-number.end-with <value>", `invoice_number__endWith`).option("--original-invoice-id <value>", `original_invoice_id`).option("--original-invoice-id.not <value>", `original_invoice_id__not`).option("--original-invoice-id.is-null <value>", `original_invoice_id__isNull`).option("--original-invoice-id.is-not-null <value>", `original_invoice_id__isNotNull`).option("--original-invoice-id.equals <value>", `original_invoice_id__equals`).option("--original-invoice-id.contains <value>", `original_invoice_id__contains`).option("--original-invoice-id.starts-with <value>", `original_invoice_id__startsWith`).option("--original-invoice-id.end-with <value>", `original_invoice_id__endWith`).option("--original-invoice-number <value>", `original_invoice_number`).option("--original-invoice-number.not <value>", `original_invoice_number__not`).option("--original-invoice-number.is-null <value>", `original_invoice_number__isNull`).option("--original-invoice-number.is-not-null <value>", `original_invoice_number__isNotNull`).option("--original-invoice-number.equals <value>", `original_invoice_number__equals`).option("--original-invoice-number.contains <value>", `original_invoice_number__contains`).option("--original-invoice-number.starts-with <value>", `original_invoice_number__startsWith`).option("--original-invoice-number.end-with <value>", `original_invoice_number__endWith`).option("--line-item-id <value>", `line_item_id`).option("--period-start <value>", `period_start`).option("--period-start.not <value>", `period_start__not`).option("--period-start.is-null <value>", `period_start__isNull`).option("--period-start.is-not-null <value>", `period_start__isNotNull`).option("--period-start.equals <value>", `period_start__equals`).option("--period-start.lt <value>", `period_start__lt`).option("--period-start.lte <value>", `period_start__lte`).option("--period-start.gt <value>", `period_start__gt`).option("--period-start.gte <value>", `period_start__gte`).option("--period-end <value>", `period_end`).option("--period-end.not <value>", `period_end__not`).option("--period-end.is-null <value>", `period_end__isNull`).option("--period-end.is-not-null <value>", `period_end__isNotNull`).option("--period-end.equals <value>", `period_end__equals`).option("--period-end.lt <value>", `period_end__lt`).option("--period-end.lte <value>", `period_end__lte`).option("--period-end.gt <value>", `period_end__gt`).option("--period-end.gte <value>", `period_end__gte`).option("--issued-at <value>", `issued_at`).option("--issued-at.not <value>", `issued_at__not`).option("--issued-at.is-null <value>", `issued_at__isNull`).option("--issued-at.is-not-null <value>", `issued_at__isNotNull`).option("--issued-at.equals <value>", `issued_at__equals`).option("--issued-at.lt <value>", `issued_at__lt`).option("--issued-at.lte <value>", `issued_at__lte`).option("--issued-at.gt <value>", `issued_at__gt`).option("--issued-at.gte <value>", `issued_at__gte`).option("--due-at <value>", `due_at`).option("--due-at.not <value>", `due_at__not`).option("--due-at.is-null <value>", `due_at__isNull`).option("--due-at.is-not-null <value>", `due_at__isNotNull`).option("--due-at.equals <value>", `due_at__equals`).option("--due-at.lt <value>", `due_at__lt`).option("--due-at.lte <value>", `due_at__lte`).option("--due-at.gt <value>", `due_at__gt`).option("--due-at.gte <value>", `due_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
39820
39857
  Examples:
39821
39858
  hyperline invoices list
39822
- hyperline invoices list --take <take> --order <order>`).action(async (opts) => {
39859
+ hyperline invoices list --limit <limit> --cursor <cursor>`).action(async (opts) => {
39823
39860
  const ctx = resource.parent?.opts()._ctx;
39824
39861
  if (!ctx) {
39825
39862
  process.stderr.write("Error: Not authenticated\n");
39826
39863
  process.exit(1);
39827
39864
  }
39828
39865
  const args = {};
39866
+ if (opts.cursor !== void 0)
39867
+ args.cursor = opts.cursor;
39868
+ if (opts.includeTotal !== void 0)
39869
+ args.include_total = opts.includeTotal;
39829
39870
  if (opts.order !== void 0)
39830
39871
  args.order = opts.order;
39831
39872
  if (opts.sort !== void 0)
@@ -39974,42 +40015,42 @@ Examples:
39974
40015
  args.period_end__gt = opts["periodEnd.gt"];
39975
40016
  if (opts["periodEnd.gte"] !== void 0)
39976
40017
  args.period_end__gte = opts["periodEnd.gte"];
39977
- if (opts.emissionDate !== void 0)
39978
- args.emission_date = opts.emissionDate;
39979
- if (opts["emissionDate.not"] !== void 0)
39980
- args.emission_date__not = opts["emissionDate.not"];
39981
- if (opts["emissionDate.isNull"] !== void 0)
39982
- args.emission_date__isNull = opts["emissionDate.isNull"];
39983
- if (opts["emissionDate.isNotNull"] !== void 0)
39984
- args.emission_date__isNotNull = opts["emissionDate.isNotNull"];
39985
- if (opts["emissionDate.equals"] !== void 0)
39986
- args.emission_date__equals = opts["emissionDate.equals"];
39987
- if (opts["emissionDate.lt"] !== void 0)
39988
- args.emission_date__lt = opts["emissionDate.lt"];
39989
- if (opts["emissionDate.lte"] !== void 0)
39990
- args.emission_date__lte = opts["emissionDate.lte"];
39991
- if (opts["emissionDate.gt"] !== void 0)
39992
- args.emission_date__gt = opts["emissionDate.gt"];
39993
- if (opts["emissionDate.gte"] !== void 0)
39994
- args.emission_date__gte = opts["emissionDate.gte"];
39995
- if (opts.dueDate !== void 0)
39996
- args.due_date = opts.dueDate;
39997
- if (opts["dueDate.not"] !== void 0)
39998
- args.due_date__not = opts["dueDate.not"];
39999
- if (opts["dueDate.isNull"] !== void 0)
40000
- args.due_date__isNull = opts["dueDate.isNull"];
40001
- if (opts["dueDate.isNotNull"] !== void 0)
40002
- args.due_date__isNotNull = opts["dueDate.isNotNull"];
40003
- if (opts["dueDate.equals"] !== void 0)
40004
- args.due_date__equals = opts["dueDate.equals"];
40005
- if (opts["dueDate.lt"] !== void 0)
40006
- args.due_date__lt = opts["dueDate.lt"];
40007
- if (opts["dueDate.lte"] !== void 0)
40008
- args.due_date__lte = opts["dueDate.lte"];
40009
- if (opts["dueDate.gt"] !== void 0)
40010
- args.due_date__gt = opts["dueDate.gt"];
40011
- if (opts["dueDate.gte"] !== void 0)
40012
- args.due_date__gte = opts["dueDate.gte"];
40018
+ if (opts.issuedAt !== void 0)
40019
+ args.issued_at = opts.issuedAt;
40020
+ if (opts["issuedAt.not"] !== void 0)
40021
+ args.issued_at__not = opts["issuedAt.not"];
40022
+ if (opts["issuedAt.isNull"] !== void 0)
40023
+ args.issued_at__isNull = opts["issuedAt.isNull"];
40024
+ if (opts["issuedAt.isNotNull"] !== void 0)
40025
+ args.issued_at__isNotNull = opts["issuedAt.isNotNull"];
40026
+ if (opts["issuedAt.equals"] !== void 0)
40027
+ args.issued_at__equals = opts["issuedAt.equals"];
40028
+ if (opts["issuedAt.lt"] !== void 0)
40029
+ args.issued_at__lt = opts["issuedAt.lt"];
40030
+ if (opts["issuedAt.lte"] !== void 0)
40031
+ args.issued_at__lte = opts["issuedAt.lte"];
40032
+ if (opts["issuedAt.gt"] !== void 0)
40033
+ args.issued_at__gt = opts["issuedAt.gt"];
40034
+ if (opts["issuedAt.gte"] !== void 0)
40035
+ args.issued_at__gte = opts["issuedAt.gte"];
40036
+ if (opts.dueAt !== void 0)
40037
+ args.due_at = opts.dueAt;
40038
+ if (opts["dueAt.not"] !== void 0)
40039
+ args.due_at__not = opts["dueAt.not"];
40040
+ if (opts["dueAt.isNull"] !== void 0)
40041
+ args.due_at__isNull = opts["dueAt.isNull"];
40042
+ if (opts["dueAt.isNotNull"] !== void 0)
40043
+ args.due_at__isNotNull = opts["dueAt.isNotNull"];
40044
+ if (opts["dueAt.equals"] !== void 0)
40045
+ args.due_at__equals = opts["dueAt.equals"];
40046
+ if (opts["dueAt.lt"] !== void 0)
40047
+ args.due_at__lt = opts["dueAt.lt"];
40048
+ if (opts["dueAt.lte"] !== void 0)
40049
+ args.due_at__lte = opts["dueAt.lte"];
40050
+ if (opts["dueAt.gt"] !== void 0)
40051
+ args.due_at__gt = opts["dueAt.gt"];
40052
+ if (opts["dueAt.gte"] !== void 0)
40053
+ args.due_at__gte = opts["dueAt.gte"];
40013
40054
  if (opts.updatedAt !== void 0)
40014
40055
  args.updated_at = opts.updatedAt;
40015
40056
  if (opts["updatedAt.not"] !== void 0)
@@ -40028,17 +40069,16 @@ Examples:
40028
40069
  args.updated_at__gt = opts["updatedAt.gt"];
40029
40070
  if (opts["updatedAt.gte"] !== void 0)
40030
40071
  args.updated_at__gte = opts["updatedAt.gte"];
40031
- if (opts.take !== void 0)
40032
- args.take = Number(opts.take);
40033
- if (opts.skip !== void 0)
40034
- args.skip = Number(opts.skip);
40072
+ if (opts.limit !== void 0)
40073
+ args.limit = Number(opts.limit);
40035
40074
  await ctx.execute({
40036
40075
  method: "GET",
40037
- path: "/v1/invoices",
40076
+ path: "/v2/invoices",
40038
40077
  args,
40039
40078
  queryParamKeys: [
40040
- "take",
40041
- "skip",
40079
+ "limit",
40080
+ "cursor",
40081
+ "include_total",
40042
40082
  "order",
40043
40083
  "sort",
40044
40084
  "type",
@@ -40113,24 +40153,24 @@ Examples:
40113
40153
  "period_end__lte",
40114
40154
  "period_end__gt",
40115
40155
  "period_end__gte",
40116
- "emission_date",
40117
- "emission_date__not",
40118
- "emission_date__isNull",
40119
- "emission_date__isNotNull",
40120
- "emission_date__equals",
40121
- "emission_date__lt",
40122
- "emission_date__lte",
40123
- "emission_date__gt",
40124
- "emission_date__gte",
40125
- "due_date",
40126
- "due_date__not",
40127
- "due_date__isNull",
40128
- "due_date__isNotNull",
40129
- "due_date__equals",
40130
- "due_date__lt",
40131
- "due_date__lte",
40132
- "due_date__gt",
40133
- "due_date__gte",
40156
+ "issued_at",
40157
+ "issued_at__not",
40158
+ "issued_at__isNull",
40159
+ "issued_at__isNotNull",
40160
+ "issued_at__equals",
40161
+ "issued_at__lt",
40162
+ "issued_at__lte",
40163
+ "issued_at__gt",
40164
+ "issued_at__gte",
40165
+ "due_at",
40166
+ "due_at__not",
40167
+ "due_at__isNull",
40168
+ "due_at__isNotNull",
40169
+ "due_at__equals",
40170
+ "due_at__lt",
40171
+ "due_at__lte",
40172
+ "due_at__gt",
40173
+ "due_at__gte",
40134
40174
  "updated_at",
40135
40175
  "updated_at__not",
40136
40176
  "updated_at__isNull",
@@ -40172,7 +40212,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
40172
40212
 
40173
40213
  - \`current\`: Use the current default payment method of the customer.
40174
40214
  - \`external\`: Manage the payment of the invoice outside of Hyperline.
40175
- `).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", `
40215
+ `).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", `
40176
40216
  Examples:
40177
40217
  hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
40178
40218
  hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
@@ -40225,6 +40265,8 @@ Examples:
40225
40265
  args.settled_at = opts.settledAt;
40226
40266
  if (opts.properties !== void 0)
40227
40267
  args.properties = opts.properties;
40268
+ if (opts.customProperties !== void 0)
40269
+ args.custom_properties = opts.customProperties;
40228
40270
  if (opts.lineItems !== void 0)
40229
40271
  args.line_items = opts.lineItems;
40230
40272
  if (opts.transactions !== void 0)
@@ -40238,10 +40280,15 @@ Examples:
40238
40280
  queryParamKeys: []
40239
40281
  });
40240
40282
  });
40241
- resource.command("create-credit-note").description(`Create a credit note for an existing invoice by ID. Credit notes partially or fully reverse an invoice amount.`).requiredOption("--id <value>", `id parameter`).option("--amount-including-tax <number>", `Amount of the credit note. If not specified, the amount will be computed from the original invoice.`).option("--status <value>", `Status of the credit note.
40283
+ resource.command("create-credit-note").description(`Create a credit note for an existing invoice by ID. Credit notes partially or fully reverse an invoice amount. Optionally trigger a refund via wallet, original payment method, or external settlement.`).requiredOption("--id <value>", `id parameter`).option("--amount-including-tax <number>", `Amount of the credit note. If not specified, the amount will be computed from the original invoice.`).option("--status <value>", `Status of the credit note.
40242
40284
 
40243
40285
  - \`to_pay\`: Credit note is awaiting payment.
40244
40286
  - \`draft\`: Credit note is in draft mode (not finalized yet).
40287
+ `).option("--trigger-refund", `Whether to trigger a refund for the credit note amount. Defaults to \`false\`. When \`true\`, the refund is issued using \`refund_method\`.`).option("--refund-method <value>", `How the refund should be settled. Only used when \`trigger_refund\` is \`true\`. Defaults to \`original_payment_method\`.
40288
+
40289
+ - \`wallet\`: Credit the customer's wallet with the refunded amount.
40290
+ - \`original_payment_method\`: Refund to the payment method used on the original invoice.
40291
+ - \`external\`: Mark the refund as settled externally (no automatic transfer).
40245
40292
  `).addHelpText("after", `
40246
40293
  Examples:
40247
40294
  hyperline invoices create-credit-note --id <id>
@@ -40257,8 +40304,12 @@ Examples:
40257
40304
  args.id = opts.id;
40258
40305
  if (opts.status !== void 0)
40259
40306
  args.status = opts.status;
40307
+ if (opts.refundMethod !== void 0)
40308
+ args.refund_method = opts.refundMethod;
40260
40309
  if (opts.amountIncludingTax !== void 0)
40261
40310
  args.amount_including_tax = Number(opts.amountIncludingTax);
40311
+ if (opts.triggerRefund !== void 0)
40312
+ args.trigger_refund = true;
40262
40313
  await ctx.execute({
40263
40314
  method: "POST",
40264
40315
  path: "/v1/invoices/{id}/credit-notes",
@@ -40370,7 +40421,7 @@ Examples:
40370
40421
  queryParamKeys: []
40371
40422
  });
40372
40423
  });
40373
- resource.command("get").description(`Retrieve full details of an invoice by ID including line items, transactions, customer info, and billing metadata.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
40424
+ resource.command("get").description(`Retrieve the details of an invoice by ID including line items, transactions, customer info, and billing metadata.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
40374
40425
  Examples:
40375
40426
  hyperline invoices get --id <id>`).action(async (opts) => {
40376
40427
  const ctx = resource.parent?.opts()._ctx;
@@ -40383,7 +40434,7 @@ Examples:
40383
40434
  args.id = opts.id;
40384
40435
  await ctx.execute({
40385
40436
  method: "GET",
40386
- path: "/v1/invoices/{id}",
40437
+ path: "/v2/invoices/{id}",
40387
40438
  args,
40388
40439
  queryParamKeys: []
40389
40440
  });
@@ -40397,7 +40448,7 @@ Examples:
40397
40448
 
40398
40449
  - \`auto\`: Tax is automatically computed and applied.
40399
40450
  - \`not_eligible\`: Tax collection is disabled for the invoice.
40400
- `).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", `
40451
+ `).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", `
40401
40452
  Examples:
40402
40453
  hyperline invoices update --id <id>
40403
40454
  hyperline invoices update --id <id> --type <type> --document-name <document_name>
@@ -40438,6 +40489,8 @@ Examples:
40438
40489
  args.bank_account_id = opts.bankAccountId;
40439
40490
  if (opts.properties !== void 0)
40440
40491
  args.properties = opts.properties;
40492
+ if (opts.customProperties !== void 0)
40493
+ args.custom_properties = opts.customProperties;
40441
40494
  if (opts.customer !== void 0)
40442
40495
  args.customer = opts.customer;
40443
40496
  await ctx.execute({
@@ -40558,7 +40611,7 @@ Examples:
40558
40611
  queryParamKeys: []
40559
40612
  });
40560
40613
  });
40561
- 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", `
40614
+ 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", `
40562
40615
  Examples:
40563
40616
  hyperline invoices-transactions delete-invoice-transaction --id <id> --transaction-id <transactionId>
40564
40617
  hyperline invoices-transactions delete-invoice-transaction --id <id> --transaction-id <transactionId> --output json`).action(async (opts) => {
@@ -40630,7 +40683,7 @@ Examples:
40630
40683
  queryParamKeys: []
40631
40684
  });
40632
40685
  });
40633
- 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", `
40686
+ 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", `
40634
40687
  Examples:
40635
40688
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
40636
40689
  hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
@@ -40709,6 +40762,8 @@ Examples:
40709
40762
  args.document_payment_initiation_delay = Number(opts.documentPaymentInitiationDelay);
40710
40763
  if (opts.isDefault !== void 0)
40711
40764
  args.is_default = true;
40765
+ if (opts.creditNoteWalletRefundEnabled !== void 0)
40766
+ args.credit_note_wallet_refund_enabled = true;
40712
40767
  await ctx.execute({
40713
40768
  method: "POST",
40714
40769
  path: "/v1/invoicing-entities",
@@ -40716,7 +40771,7 @@ Examples:
40716
40771
  queryParamKeys: []
40717
40772
  });
40718
40773
  });
40719
- 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", `
40774
+ 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", `
40720
40775
  Examples:
40721
40776
  hyperline invoicing-entities update-invoicing-entity --id <id>
40722
40777
  hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
@@ -40787,6 +40842,8 @@ Examples:
40787
40842
  args.document_payment_initiation_delay = Number(opts.documentPaymentInitiationDelay);
40788
40843
  if (opts.isDefault !== void 0)
40789
40844
  args.is_default = true;
40845
+ if (opts.creditNoteWalletRefundEnabled !== void 0)
40846
+ args.credit_note_wallet_refund_enabled = true;
40790
40847
  await ctx.execute({
40791
40848
  method: "PUT",
40792
40849
  path: "/v1/invoicing-entities/{id}",
@@ -41355,18 +41412,18 @@ Examples:
41355
41412
  // build/commands/generated/quotes.js
41356
41413
  function registerQuotesCommands(parent) {
41357
41414
  const resource = parent.command("quotes").description("Manage quotes");
41358
- 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>", `
41415
+ 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>", `
41359
41416
  Quote status.
41360
41417
 
41361
41418
  - \`draft\`: The quote is a draft.
41362
41419
  - \`approved\`: The quote is approved and ready to be sent to the customer.
41363
41420
  - \`pending_signature\`: The quote is awaiting the customer's signature.
41364
- `).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.
41421
+ `).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.
41365
41422
 
41366
41423
  - \`all\`: Display all pricing tiers.
41367
41424
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
41368
41425
  - \`none\`: Hide all pricing tiers.
41369
- `).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", `
41426
+ `).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", `
41370
41427
  Examples:
41371
41428
  hyperline quotes create --customer-id <customer_id>
41372
41429
  hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
@@ -41393,6 +41450,8 @@ Examples:
41393
41450
  args.collect_payment_details = opts.collectPaymentDetails;
41394
41451
  if (opts.collectCustomPropertyIds !== void 0)
41395
41452
  args.collect_custom_property_ids = opts.collectCustomPropertyIds;
41453
+ if (opts.contractClauseIds !== void 0)
41454
+ args.contract_clause_ids = opts.contractClauseIds;
41396
41455
  if (opts.requireTaxId !== void 0)
41397
41456
  args.require_tax_id = opts.requireTaxId;
41398
41457
  if (opts.displayQuoteValue !== void 0)
@@ -41411,12 +41470,16 @@ Examples:
41411
41470
  args.display_documents_in_preview = opts.displayDocumentsInPreview;
41412
41471
  if (opts.displaySubscriptionOnUpdate !== void 0)
41413
41472
  args.display_subscription_on_update = opts.displaySubscriptionOnUpdate;
41473
+ if (opts.generateDraftInvoices !== void 0)
41474
+ args.generate_draft_invoices = opts.generateDraftInvoices;
41414
41475
  if (opts.templateId !== void 0)
41415
41476
  args.template_id = opts.templateId;
41416
41477
  if (opts.expiresAt !== void 0)
41417
41478
  args.expires_at = opts.expiresAt;
41418
41479
  if (opts.subscription !== void 0)
41419
41480
  args.subscription = opts.subscription;
41481
+ if (opts.invoice !== void 0)
41482
+ args.invoice = opts.invoice;
41420
41483
  if (opts.amount !== void 0)
41421
41484
  args.amount = Number(opts.amount);
41422
41485
  await ctx.execute({
@@ -41645,6 +41708,71 @@ Examples:
41645
41708
  queryParamKeys: []
41646
41709
  });
41647
41710
  });
41711
+ 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.
41712
+
41713
+ - \`all\`: Display all pricing tiers.
41714
+ - \`matching\`: Only display the tiers used to compute the price based on quantity.
41715
+ - \`none\`: Hide all pricing tiers.
41716
+ `).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("--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", `
41717
+ Examples:
41718
+ hyperline quotes update --id <id>
41719
+ hyperline quotes update --id <id> --owner-email <owner_email> --comments <comments>
41720
+ hyperline quotes update --id <id> --output json`).action(async (opts) => {
41721
+ const ctx = resource.parent?.opts()._ctx;
41722
+ if (!ctx) {
41723
+ process.stderr.write("Error: Not authenticated\n");
41724
+ process.exit(1);
41725
+ }
41726
+ const args = {};
41727
+ if (opts.id !== void 0)
41728
+ args.id = opts.id;
41729
+ if (opts.ownerEmail !== void 0)
41730
+ args.owner_email = opts.ownerEmail;
41731
+ if (opts.comments !== void 0)
41732
+ args.comments = opts.comments;
41733
+ if (opts.terms !== void 0)
41734
+ args.terms = opts.terms;
41735
+ if (opts.collectPaymentDetails !== void 0)
41736
+ args.collect_payment_details = opts.collectPaymentDetails;
41737
+ if (opts.collectCustomPropertyIds !== void 0)
41738
+ args.collect_custom_property_ids = opts.collectCustomPropertyIds;
41739
+ if (opts.contractClauseIds !== void 0)
41740
+ args.contract_clause_ids = opts.contractClauseIds;
41741
+ if (opts.requireTaxId !== void 0)
41742
+ args.require_tax_id = opts.requireTaxId;
41743
+ if (opts.displayQuoteValue !== void 0)
41744
+ args.display_quote_value = opts.displayQuoteValue;
41745
+ if (opts.displayQuoteValueWithTax !== void 0)
41746
+ args.display_quote_value_with_tax = opts.displayQuoteValueWithTax;
41747
+ if (opts.displayTaxes !== void 0)
41748
+ args.display_taxes = opts.displayTaxes;
41749
+ if (opts.displayPriceTiers !== void 0)
41750
+ args.display_price_tiers = opts.displayPriceTiers;
41751
+ if (opts.displayPhaseValue !== void 0)
41752
+ args.display_phase_value = opts.displayPhaseValue;
41753
+ if (opts.displayFirstInvoiceAmount !== void 0)
41754
+ args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
41755
+ if (opts.displayDocumentsInPreview !== void 0)
41756
+ args.display_documents_in_preview = opts.displayDocumentsInPreview;
41757
+ if (opts.displaySubscriptionOnUpdate !== void 0)
41758
+ args.display_subscription_on_update = opts.displaySubscriptionOnUpdate;
41759
+ if (opts.generateDraftInvoices !== void 0)
41760
+ args.generate_draft_invoices = opts.generateDraftInvoices;
41761
+ if (opts.expiresAt !== void 0)
41762
+ args.expires_at = opts.expiresAt;
41763
+ if (opts.subscription !== void 0)
41764
+ args.subscription = opts.subscription;
41765
+ if (opts.invoice !== void 0)
41766
+ args.invoice = opts.invoice;
41767
+ if (opts.amount !== void 0)
41768
+ args.amount = Number(opts.amount);
41769
+ await ctx.execute({
41770
+ method: "PATCH",
41771
+ path: "/v1/quotes/{id}",
41772
+ args,
41773
+ queryParamKeys: []
41774
+ });
41775
+ });
41648
41776
  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", `
41649
41777
  Examples:
41650
41778
  hyperline quotes download --id <id>
@@ -41685,6 +41813,25 @@ Examples:
41685
41813
  queryParamKeys: []
41686
41814
  });
41687
41815
  });
41816
+ 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", `
41817
+ Examples:
41818
+ hyperline quotes finalize --id <id>
41819
+ hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
41820
+ const ctx = resource.parent?.opts()._ctx;
41821
+ if (!ctx) {
41822
+ process.stderr.write("Error: Not authenticated\n");
41823
+ process.exit(1);
41824
+ }
41825
+ const args = {};
41826
+ if (opts.id !== void 0)
41827
+ args.id = opts.id;
41828
+ await ctx.execute({
41829
+ method: "POST",
41830
+ path: "/v1/quotes/{id}/finalize",
41831
+ args,
41832
+ queryParamKeys: []
41833
+ });
41834
+ });
41688
41835
  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", `
41689
41836
  Examples:
41690
41837
  hyperline quotes send --id <id> --email <email>
@@ -41792,10 +41939,132 @@ Examples:
41792
41939
  });
41793
41940
  }
41794
41941
 
41942
+ // build/commands/generated/quotes-templates.js
41943
+ function registerQuotes_TemplatesCommands(parent) {
41944
+ const resource = parent.command("quotes-templates").description("Manage quotes > templates");
41945
+ 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", `
41946
+ Examples:
41947
+ hyperline quotes-templates list-quote-templates
41948
+ hyperline quotes-templates list-quote-templates --take <take> --id <id>`).action(async (opts) => {
41949
+ const ctx = resource.parent?.opts()._ctx;
41950
+ if (!ctx) {
41951
+ process.stderr.write("Error: Not authenticated\n");
41952
+ process.exit(1);
41953
+ }
41954
+ const args = {};
41955
+ if (opts.id !== void 0)
41956
+ args.id = opts.id;
41957
+ if (opts["id.not"] !== void 0)
41958
+ args.id__not = opts["id.not"];
41959
+ if (opts["id.isNull"] !== void 0)
41960
+ args.id__isNull = opts["id.isNull"];
41961
+ if (opts["id.isNotNull"] !== void 0)
41962
+ args.id__isNotNull = opts["id.isNotNull"];
41963
+ if (opts["id.equals"] !== void 0)
41964
+ args.id__equals = opts["id.equals"];
41965
+ if (opts["id.contains"] !== void 0)
41966
+ args.id__contains = opts["id.contains"];
41967
+ if (opts["id.startsWith"] !== void 0)
41968
+ args.id__startsWith = opts["id.startsWith"];
41969
+ if (opts["id.endWith"] !== void 0)
41970
+ args.id__endWith = opts["id.endWith"];
41971
+ if (opts.name !== void 0)
41972
+ args.name = opts.name;
41973
+ if (opts["name.not"] !== void 0)
41974
+ args.name__not = opts["name.not"];
41975
+ if (opts["name.isNull"] !== void 0)
41976
+ args.name__isNull = opts["name.isNull"];
41977
+ if (opts["name.isNotNull"] !== void 0)
41978
+ args.name__isNotNull = opts["name.isNotNull"];
41979
+ if (opts["name.equals"] !== void 0)
41980
+ args.name__equals = opts["name.equals"];
41981
+ if (opts["name.contains"] !== void 0)
41982
+ args.name__contains = opts["name.contains"];
41983
+ if (opts["name.startsWith"] !== void 0)
41984
+ args.name__startsWith = opts["name.startsWith"];
41985
+ if (opts["name.endWith"] !== void 0)
41986
+ args.name__endWith = opts["name.endWith"];
41987
+ if (opts.subscriptionTemplateId !== void 0)
41988
+ args.subscription_template_id = opts.subscriptionTemplateId;
41989
+ if (opts["subscriptionTemplateId.not"] !== void 0)
41990
+ args.subscription_template_id__not = opts["subscriptionTemplateId.not"];
41991
+ if (opts["subscriptionTemplateId.isNull"] !== void 0)
41992
+ args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
41993
+ if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
41994
+ args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
41995
+ if (opts["subscriptionTemplateId.equals"] !== void 0)
41996
+ args.subscription_template_id__equals = opts["subscriptionTemplateId.equals"];
41997
+ if (opts["subscriptionTemplateId.contains"] !== void 0)
41998
+ args.subscription_template_id__contains = opts["subscriptionTemplateId.contains"];
41999
+ if (opts["subscriptionTemplateId.startsWith"] !== void 0)
42000
+ args.subscription_template_id__startsWith = opts["subscriptionTemplateId.startsWith"];
42001
+ if (opts["subscriptionTemplateId.endWith"] !== void 0)
42002
+ args.subscription_template_id__endWith = opts["subscriptionTemplateId.endWith"];
42003
+ if (opts.search !== void 0)
42004
+ args.search = opts.search;
42005
+ if (opts.take !== void 0)
42006
+ args.take = Number(opts.take);
42007
+ if (opts.skip !== void 0)
42008
+ args.skip = Number(opts.skip);
42009
+ await ctx.execute({
42010
+ method: "GET",
42011
+ path: "/v1/quotes/templates",
42012
+ args,
42013
+ queryParamKeys: [
42014
+ "take",
42015
+ "skip",
42016
+ "id",
42017
+ "id__not",
42018
+ "id__isNull",
42019
+ "id__isNotNull",
42020
+ "id__equals",
42021
+ "id__contains",
42022
+ "id__startsWith",
42023
+ "id__endWith",
42024
+ "name",
42025
+ "name__not",
42026
+ "name__isNull",
42027
+ "name__isNotNull",
42028
+ "name__equals",
42029
+ "name__contains",
42030
+ "name__startsWith",
42031
+ "name__endWith",
42032
+ "subscription_template_id",
42033
+ "subscription_template_id__not",
42034
+ "subscription_template_id__isNull",
42035
+ "subscription_template_id__isNotNull",
42036
+ "subscription_template_id__equals",
42037
+ "subscription_template_id__contains",
42038
+ "subscription_template_id__startsWith",
42039
+ "subscription_template_id__endWith",
42040
+ "search"
42041
+ ]
42042
+ });
42043
+ });
42044
+ 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", `
42045
+ Examples:
42046
+ hyperline quotes-templates get-quote-template --id <id>`).action(async (opts) => {
42047
+ const ctx = resource.parent?.opts()._ctx;
42048
+ if (!ctx) {
42049
+ process.stderr.write("Error: Not authenticated\n");
42050
+ process.exit(1);
42051
+ }
42052
+ const args = {};
42053
+ if (opts.id !== void 0)
42054
+ args.id = opts.id;
42055
+ await ctx.execute({
42056
+ method: "GET",
42057
+ path: "/v1/quotes/templates/{id}",
42058
+ args,
42059
+ queryParamKeys: []
42060
+ });
42061
+ });
42062
+ }
42063
+
41795
42064
  // build/commands/generated/subscriptions.js
41796
42065
  function registerSubscriptionsCommands(parent) {
41797
42066
  const resource = parent.command("subscriptions").description("Manage subscriptions");
41798
- 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", `
42067
+ 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", `
41799
42068
  Examples:
41800
42069
  hyperline subscriptions create-subscription-update --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --type <type> --payload <payload>
41801
42070
  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>
@@ -41818,6 +42087,10 @@ Examples:
41818
42087
  args.charge_at = opts.chargeAt;
41819
42088
  if (opts.calculationMethod !== void 0)
41820
42089
  args.calculation_method = opts.calculationMethod;
42090
+ if (opts.precision !== void 0)
42091
+ args.precision = opts.precision;
42092
+ if (opts.refundMethod !== void 0)
42093
+ args.refund_method = opts.refundMethod;
41821
42094
  if (opts.type !== void 0)
41822
42095
  args.type = opts.type;
41823
42096
  if (opts.payload !== void 0)
@@ -41829,7 +42102,7 @@ Examples:
41829
42102
  queryParamKeys: []
41830
42103
  });
41831
42104
  });
41832
- 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", `
42105
+ 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", `
41833
42106
  Examples:
41834
42107
  hyperline subscriptions create-subscription-updates --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --updates <updates>
41835
42108
  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>
@@ -41852,6 +42125,10 @@ Examples:
41852
42125
  args.charge_at = opts.chargeAt;
41853
42126
  if (opts.calculationMethod !== void 0)
41854
42127
  args.calculation_method = opts.calculationMethod;
42128
+ if (opts.precision !== void 0)
42129
+ args.precision = opts.precision;
42130
+ if (opts.refundMethod !== void 0)
42131
+ args.refund_method = opts.refundMethod;
41855
42132
  if (opts.updates !== void 0)
41856
42133
  args.updates = opts.updates;
41857
42134
  await ctx.execute({
@@ -41861,7 +42138,7 @@ Examples:
41861
42138
  queryParamKeys: []
41862
42139
  });
41863
42140
  });
41864
- 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", `
42141
+ 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", `
41865
42142
  Examples:
41866
42143
  hyperline subscriptions cancel --id <id>
41867
42144
  hyperline subscriptions cancel --id <id> --cancel-at <cancel_at> --reason <reason>
@@ -41878,6 +42155,8 @@ Examples:
41878
42155
  args.cancel_at = opts.cancelAt;
41879
42156
  if (opts.reason !== void 0)
41880
42157
  args.reason = opts.reason;
42158
+ if (opts.refundMethod !== void 0)
42159
+ args.refund_method = opts.refundMethod;
41881
42160
  if (opts.proRata !== void 0)
41882
42161
  args.pro_rata = true;
41883
42162
  await ctx.execute({
@@ -41987,7 +42266,7 @@ Examples:
41987
42266
  queryParamKeys: []
41988
42267
  });
41989
42268
  });
41990
- 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", `
42269
+ 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", `
41991
42270
  Examples:
41992
42271
  hyperline subscriptions simulate-subscription-updates --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --updates <updates>
41993
42272
  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>
@@ -42010,6 +42289,10 @@ Examples:
42010
42289
  args.charge_at = opts.chargeAt;
42011
42290
  if (opts.calculationMethod !== void 0)
42012
42291
  args.calculation_method = opts.calculationMethod;
42292
+ if (opts.precision !== void 0)
42293
+ args.precision = opts.precision;
42294
+ if (opts.refundMethod !== void 0)
42295
+ args.refund_method = opts.refundMethod;
42013
42296
  if (opts.updates !== void 0)
42014
42297
  args.updates = opts.updates;
42015
42298
  await ctx.execute({
@@ -42035,7 +42318,7 @@ Strategy used to cancel the subscription. If not specified \`do_nothing\` is use
42035
42318
  - \`refund_custom\`: Will refund to the customer a custom amount.
42036
42319
  - \`end_of_period\`: Will cancel the subscription at the end date of the current billing period.
42037
42320
  - \`do_nothing\`: Will only cease the subscription without any additional actions.
42038
- `).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>", `
42321
+ `).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>", `
42039
42322
  Defines when invoices are generated relative to the billing period.
42040
42323
 
42041
42324
  - \`period_start\`: Invoices are generated at the start of the billing period.
@@ -42090,6 +42373,8 @@ Examples:
42090
42373
  args.cancel_at = opts.cancelAt;
42091
42374
  if (opts.cancellationStrategy !== void 0)
42092
42375
  args.cancellation_strategy = opts.cancellationStrategy;
42376
+ if (opts.cancellationRefundMethod !== void 0)
42377
+ args.cancellation_refund_method = opts.cancellationRefundMethod;
42093
42378
  if (opts.properties !== void 0)
42094
42379
  args.properties = opts.properties;
42095
42380
  if (opts.customProperties !== void 0)
@@ -42372,7 +42657,7 @@ Examples:
42372
42657
  queryParamKeys: []
42373
42658
  });
42374
42659
  });
42375
- 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>", `
42660
+ 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>", `
42376
42661
  Defines when invoices are generated relative to the billing period.
42377
42662
 
42378
42663
  - \`period_start\`: Invoices are generated at the start of the billing period.
@@ -42732,7 +43017,7 @@ Examples:
42732
43017
  ]
42733
43018
  });
42734
43019
  });
42735
- 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", `
43020
+ 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", `
42736
43021
  Examples:
42737
43022
  hyperline subscriptions-transitions create-subscription-transition --source-subscription-id <source_subscription_id> --application-schedule <application_schedule> --target-subscription <target_subscription>
42738
43023
  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>
@@ -42946,6 +43231,30 @@ Examples:
42946
43231
  });
42947
43232
  }
42948
43233
 
43234
+ // build/commands/generated/transactions.js
43235
+ function registerTransactionsCommands(parent) {
43236
+ const resource = parent.command("transactions").description("Manage transactions");
43237
+ 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", `
43238
+ Examples:
43239
+ hyperline transactions refund --id <id>
43240
+ hyperline transactions refund --id <id> --output json`).action(async (opts) => {
43241
+ const ctx = resource.parent?.opts()._ctx;
43242
+ if (!ctx) {
43243
+ process.stderr.write("Error: Not authenticated\n");
43244
+ process.exit(1);
43245
+ }
43246
+ const args = {};
43247
+ if (opts.id !== void 0)
43248
+ args.id = opts.id;
43249
+ await ctx.execute({
43250
+ method: "POST",
43251
+ path: "/v1/transactions/{id}/refund",
43252
+ args,
43253
+ queryParamKeys: []
43254
+ });
43255
+ });
43256
+ }
43257
+
42949
43258
  // build/commands/generated/wallets.js
42950
43259
  function registerWalletsCommands(parent) {
42951
43260
  const resource = parent.command("wallets").description("Manage wallets");
@@ -43106,10 +43415,10 @@ Examples:
43106
43415
  queryParamKeys: []
43107
43416
  });
43108
43417
  });
43109
- 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", `
43418
+ 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", `
43110
43419
  Examples:
43111
43420
  hyperline wallets load --id <id>
43112
- hyperline wallets load --id <id> --amount <amount> --amount-free <amount_free>
43421
+ hyperline wallets load --id <id> --type <type> --amount <amount>
43113
43422
  hyperline wallets load --id <id> --output json`).action(async (opts) => {
43114
43423
  const ctx = resource.parent?.opts()._ctx;
43115
43424
  if (!ctx) {
@@ -43119,12 +43428,18 @@ Examples:
43119
43428
  const args = {};
43120
43429
  if (opts.id !== void 0)
43121
43430
  args.id = opts.id;
43431
+ if (opts.type !== void 0)
43432
+ args.type = opts.type;
43433
+ if (opts.comment !== void 0)
43434
+ args.comment = opts.comment;
43122
43435
  if (opts.documentStatus !== void 0)
43123
43436
  args.document_status = opts.documentStatus;
43437
+ if (opts.bankAccountId !== void 0)
43438
+ args.bank_account_id = opts.bankAccountId;
43439
+ if (opts.reference !== void 0)
43440
+ args.reference = opts.reference;
43124
43441
  if (opts.amount !== void 0)
43125
43442
  args.amount = Number(opts.amount);
43126
- if (opts.amountFree !== void 0)
43127
- args.amount_free = Number(opts.amountFree);
43128
43443
  await ctx.execute({
43129
43444
  method: "POST",
43130
43445
  path: "/v1/wallets/{id}/load",
@@ -43353,11 +43668,13 @@ function registerAllCommands(program2) {
43353
43668
  registerProductsCommands(program2);
43354
43669
  registerPrice_ConfigurationsCommands(program2);
43355
43670
  registerQuotesCommands(program2);
43671
+ registerQuotes_TemplatesCommands(program2);
43356
43672
  registerSubscriptions_TemplatesCommands(program2);
43357
43673
  registerSubscriptionsCommands(program2);
43358
43674
  registerSubscriptions_TransitionsCommands(program2);
43359
43675
  registerSubscriptions_PhasesCommands(program2);
43360
43676
  registerTaxesCommands(program2);
43677
+ registerTransactionsCommands(program2);
43361
43678
  registerWalletsCommands(program2);
43362
43679
  registerWebhooksCommands(program2);
43363
43680
  }
@@ -57148,6 +57465,7 @@ var BooleanSchema = external_exports.boolean().or(external_exports.enum(["true",
57148
57465
  });
57149
57466
  var StringSchemaForMultipartForm = external_exports.string().transform((value) => value === "" ? null : value);
57150
57467
  var StringArraySchemaForMultipartForm = external_exports.string().array().or(external_exports.string().length(0)).transform((value) => typeof value === "string" ? [] : value);
57468
+ var CommaSeparatedArraySchema = external_exports.string().optional().transform((raw) => raw ? raw.split(",").filter(Boolean) : void 0);
57151
57469
  var urlRegex = /^(?:(?:https?):\/\/)?(?:www\.)?(?:[\w-]+\.)+[a-z]{2,7}(?:\/\S*)?$/i;
57152
57470
  var ZodFlexibleUrl = external_exports.string({ message: "Invalid URL" }).regex(urlRegex).transform((url2) => {
57153
57471
  if (!url2)
@@ -61460,6 +61778,7 @@ function getConfig(schema, testValues) {
61460
61778
  var config3 = getConfig({
61461
61779
  // config
61462
61780
  APP_VERSION: types.string().optional(),
61781
+ DD_SERVICE: types.string().optional(),
61463
61782
  LOGGER_CONSOLE_ENABLED: types.boolean().optional(),
61464
61783
  LOGGER_STDOUT_ENABLED: types.boolean().optional(),
61465
61784
  NODE_ENV: types.enum(["local", "test", "staging", "sandbox", "production"]),
@@ -61469,6 +61788,7 @@ var config3 = getConfig({
61469
61788
  // secrets
61470
61789
  }, {
61471
61790
  APP_VERSION: void 0,
61791
+ DD_SERVICE: void 0,
61472
61792
  LOGGER_CONSOLE_ENABLED: false,
61473
61793
  LOGGER_STDOUT_ENABLED: false,
61474
61794
  EVENT_LOOP_MONITORING_ENABLED: false,
@@ -61484,6 +61804,7 @@ import * as winston from "winston";
61484
61804
 
61485
61805
  // ../hyperline-monitoring/build/logger/formatting/format.js
61486
61806
  import prune from "json-prune";
61807
+ var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
61487
61808
  function jsonFormat(info) {
61488
61809
  const prunedInfo = JSON.parse(prune(info));
61489
61810
  for (const [key, value] of Object.entries(prunedInfo)) {
@@ -61566,17 +61887,26 @@ function formatAxiosError(error48) {
61566
61887
  url: request?.url,
61567
61888
  baseURL: request?.baseURL,
61568
61889
  params: request?.params,
61569
- headers: request?.headers,
61890
+ headers: redactHeaders({ headers: request?.headers }),
61570
61891
  "axios-retry": request?.["axios-retry"]
61571
61892
  },
61572
61893
  response: {
61573
61894
  status: response?.status,
61574
61895
  statusText: response?.statusText,
61575
- headers: response?.headers,
61896
+ headers: redactHeaders({ headers: response?.headers }),
61576
61897
  data: response?.data
61577
61898
  }
61578
61899
  };
61579
61900
  }
61901
+ function redactHeaders({ headers }) {
61902
+ if (!isRecord(headers)) {
61903
+ return headers;
61904
+ }
61905
+ return Object.fromEntries(Object.entries(headers).map(([headerKey, headerValue]) => [
61906
+ headerKey,
61907
+ REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
61908
+ ]));
61909
+ }
61580
61910
  function isRecord(value) {
61581
61911
  return typeof value === "object" && value !== null && !Array.isArray(value);
61582
61912
  }
@@ -61600,13 +61930,16 @@ function logHttpRequest(logger2, request, extra) {
61600
61930
  });
61601
61931
  }
61602
61932
  function logHttpResponse(logger2, response, responseTime, extra) {
61603
- const { request, statusCode, responseBody } = response;
61933
+ const { request, statusCode, responseBody, responseHeaders } = response;
61604
61934
  const { message, metadata } = transform2(request);
61605
61935
  const readableResponseTime = responseTime ? getReadableTime(responseTime) : void 0;
61606
61936
  const responseMetadata = {
61607
61937
  statusCode,
61608
61938
  responseTime,
61609
- responseBody
61939
+ responseBody,
61940
+ // Redacted so secrets (authorization/cookie/token/…) never reach the logs
61941
+ // while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
61942
+ responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
61610
61943
  };
61611
61944
  logger2.info(`HTTP RES - ${message} ${statusCode} ${readableResponseTime || ""} ${extra?.postfix || ""}`, {
61612
61945
  ...metadata,
@@ -61747,13 +62080,16 @@ var loggerFactory = buildLoggerFactory({
61747
62080
  },
61748
62081
  context: {
61749
62082
  env: config3.NODE_ENV,
61750
- service: "api",
62083
+ service: config3.DD_SERVICE ?? "api",
61751
62084
  version: config3.APP_VERSION
61752
62085
  }
61753
62086
  });
61754
62087
  var createLogger2 = loggerFactory.createLogger;
61755
62088
  var logger = loggerFactory.createLogger({ serviceName: "default" });
61756
62089
 
62090
+ // ../hyperline-monitoring/build/tracing/tracing.js
62091
+ import tracer from "dd-trace";
62092
+
61757
62093
  // ../hyperline-lib/build/utils/config/usStates.js
61758
62094
  var usStates = [
61759
62095
  "AA",
@@ -61895,6 +62231,20 @@ var PublicPaginationParams = {
61895
62231
  skip: zod_default.coerce.number().nonnegative().optional().default(0)
61896
62232
  };
61897
62233
  var PublicPaginationSchema = zod_default.object(PublicPaginationParams);
62234
+ var PublicCursorPaginationParams = {
62235
+ limit: zod_default.coerce.number().positive().max(100).optional().default(50).openapi({
62236
+ description: "Maximum number of items to return (1-100).",
62237
+ example: 50
62238
+ }),
62239
+ cursor: zod_default.string().optional().openapi({
62240
+ description: "Opaque cursor returned in the previous response's `next_cursor`. Omit to fetch the first page."
62241
+ }),
62242
+ include_total: BooleanSchema.optional().default(false).openapi({
62243
+ description: "Set to `true` to include `total` in the response.",
62244
+ example: false
62245
+ })
62246
+ };
62247
+ var PublicCursorPaginationSchema = zod_default.object(PublicCursorPaginationParams);
61898
62248
 
61899
62249
  // ../hyperline-lib/build/http/dto/state.js
61900
62250
  var StateSchema = external_exports.enum(usStates).openapi({
@@ -61924,10 +62274,12 @@ var languages = [
61924
62274
  var de = {
61925
62275
  "accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
61926
62276
  "accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
62277
+ "accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
61927
62278
  "accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
61928
62279
  "accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
61929
62280
  "accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
61930
62281
  "accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
62282
+ "accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
61931
62283
  "accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
61932
62284
  "accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
61933
62285
  "creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
@@ -61940,7 +62292,9 @@ var de = {
61940
62292
  "invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
61941
62293
  "invoices.outstandingProduct.name": "Offener Saldo",
61942
62294
  "invoices.prorata.paymentForItem": "Anteilig berechneter Betrag f\xFCr",
62295
+ "invoices.prorata.paymentForItemFullPeriod": "Zahlung f\xFCr",
61943
62296
  "invoices.prorata.refundForItem": "Anteilig erstatteter Betrag f\xFCr",
62297
+ "invoices.prorata.refundForItemFullPeriod": "Erstattung f\xFCr",
61944
62298
  "subscriptions.closingChargeName": "Abschlussgeb\xFChr f\xFCr das Abonnement",
61945
62299
  "subscriptions.correction": "Vorperiodische Anpassung",
61946
62300
  "subscriptions.updates.addCoupon": "Gutschein hinzuf\xFCgen {{couponName}}",
@@ -61969,7 +62323,9 @@ var en = {
61969
62323
  "invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
61970
62324
  "invoices.outstandingProduct.name": "Outstanding balance",
61971
62325
  "invoices.prorata.paymentForItem": "Prorated payment for",
62326
+ "invoices.prorata.paymentForItemFullPeriod": "Payment for",
61972
62327
  "invoices.prorata.refundForItem": "Prorated refund for",
62328
+ "invoices.prorata.refundForItemFullPeriod": "Refund for",
61973
62329
  "subscriptions.closingChargeName": "Closing fee for subscription",
61974
62330
  "subscriptions.correction": "Adjustment previous period",
61975
62331
  "subscriptions.updates.addCoupon": "Add coupon {{couponName}}",
@@ -61989,12 +62345,14 @@ var en = {
61989
62345
  "subscriptions.updates.updateCount.description.full.not_committed.not_invoiced": "Amount of {{amount}} not invoiced for the full period",
61990
62346
  "accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
61991
62347
  "accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
62348
+ "accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
61992
62349
  "accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
61993
62350
  "accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
61994
62351
  "accounting.revrec.debitLineDescription": "Decrease deferred revenue \u2013 schedule {{scheduleId}}, period {{periodDate}}",
61995
62352
  "accounting.revrec.creditLineDescription": "Recognize revenue \u2013 schedule {{scheduleId}}, period {{periodDate}}",
61996
62353
  "accounting.revrec.discountDebitLineDescription": "Decrease deferred discount \u2013 schedule {{scheduleId}}, period {{periodDate}}",
61997
62354
  "accounting.revrec.discountCreditLineDescription": "Recognize contra-revenue (discount) \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62355
+ "accounting.revrec.closedPeriodFallbackNote": " (posted to next open period \u2014 target accounting period closed; original date {{originalDate}})",
61998
62356
  "einvoicing.paymentProcessed": "Payment processed",
61999
62357
  "einvoicing.paymentReceived": "Payment received",
62000
62358
  "einvoicing.paymentFromWallet": "Payment from wallet"
@@ -62004,10 +62362,12 @@ var en = {
62004
62362
  var es = {
62005
62363
  "accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
62006
62364
  "accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
62365
+ "accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
62007
62366
  "accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
62008
62367
  "accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62009
62368
  "accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62010
62369
  "accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62370
+ "accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
62011
62371
  "accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62012
62372
  "accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
62013
62373
  "creditNotes.refundChargeName": "Reembolso por factura",
@@ -62020,7 +62380,9 @@ var es = {
62020
62380
  "invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
62021
62381
  "invoices.outstandingProduct.name": "Saldo pendiente",
62022
62382
  "invoices.prorata.paymentForItem": "Pago prorrateado por",
62383
+ "invoices.prorata.paymentForItemFullPeriod": "Pago por",
62023
62384
  "invoices.prorata.refundForItem": "Reembolso prorrateado por",
62385
+ "invoices.prorata.refundForItemFullPeriod": "Reembolso por",
62024
62386
  "subscriptions.closingChargeName": "Cargo por cierre de suscripci\xF3n",
62025
62387
  "subscriptions.correction": "Ajuste del periodo anterior",
62026
62388
  "subscriptions.updates.addCoupon": "A\xF1adir cup\xF3n {{couponName}}",
@@ -62045,9 +62407,11 @@ var fr = {
62045
62407
  "accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62046
62408
  "accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62047
62409
  "accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62410
+ "accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
62048
62411
  "accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62049
62412
  "accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
62050
62413
  "accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
62414
+ "accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
62051
62415
  "accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
62052
62416
  "accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
62053
62417
  "creditNotes.refundChargeName": "Remboursement pour facture",
@@ -62060,7 +62424,9 @@ var fr = {
62060
62424
  "invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
62061
62425
  "invoices.outstandingProduct.name": "Solde impay\xE9",
62062
62426
  "invoices.prorata.paymentForItem": "Paiement au prorata pour",
62427
+ "invoices.prorata.paymentForItemFullPeriod": "Paiement pour",
62063
62428
  "invoices.prorata.refundForItem": "Remboursement au prorata pour",
62429
+ "invoices.prorata.refundForItemFullPeriod": "Remboursement pour",
62064
62430
  "subscriptions.closingChargeName": "Frais de cl\xF4ture pour abonnement",
62065
62431
  "subscriptions.correction": "Ajustement p\xE9riode pr\xE9c\xE9dente",
62066
62432
  "subscriptions.updates.addCoupon": "Ajout du coupon {{couponName}}",
@@ -62084,10 +62450,12 @@ var fr = {
62084
62450
  var it = {
62085
62451
  "accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
62086
62452
  "accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
62453
+ "accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
62087
62454
  "accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
62088
62455
  "accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62089
62456
  "accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62090
62457
  "accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62458
+ "accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
62091
62459
  "accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62092
62460
  "accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
62093
62461
  "creditNotes.refundChargeName": "Rimborso per fattura",
@@ -62100,7 +62468,9 @@ var it = {
62100
62468
  "invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
62101
62469
  "invoices.outstandingProduct.name": "Saldo insoluto",
62102
62470
  "invoices.prorata.paymentForItem": "Pagamento proporzionale per",
62471
+ "invoices.prorata.paymentForItemFullPeriod": "Pagamento per",
62103
62472
  "invoices.prorata.refundForItem": "Rimborso proporzionale per",
62473
+ "invoices.prorata.refundForItemFullPeriod": "Rimborso per",
62104
62474
  "subscriptions.closingChargeName": "Costo di chiusura per abbonamento",
62105
62475
  "subscriptions.correction": "Correzione periodo precedente",
62106
62476
  "subscriptions.updates.addCoupon": "Aggiungi coupon {{couponName}}",
@@ -62124,10 +62494,12 @@ var it = {
62124
62494
  var nl = {
62125
62495
  "accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
62126
62496
  "accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
62497
+ "accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
62127
62498
  "accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
62128
62499
  "accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62129
62500
  "accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62130
62501
  "accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62502
+ "accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
62131
62503
  "accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62132
62504
  "accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
62133
62505
  "creditNotes.refundChargeName": "Terugbetaling voor factuur",
@@ -62140,7 +62512,9 @@ var nl = {
62140
62512
  "invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
62141
62513
  "invoices.outstandingProduct.name": "Openstaand saldo",
62142
62514
  "invoices.prorata.paymentForItem": "Gedeeltelijke betaling voor",
62515
+ "invoices.prorata.paymentForItemFullPeriod": "Betaling voor",
62143
62516
  "invoices.prorata.refundForItem": "Gedeeltelijke terugbetaling voor",
62517
+ "invoices.prorata.refundForItemFullPeriod": "Terugbetaling voor",
62144
62518
  "subscriptions.closingChargeName": "Afsluitkosten voor abonnement",
62145
62519
  "subscriptions.correction": "Aanpassing vorige periode",
62146
62520
  "subscriptions.updates.addCoupon": "Coupon toevoegen {{couponName}}",
@@ -62164,10 +62538,12 @@ var nl = {
62164
62538
  var pl = {
62165
62539
  "accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
62166
62540
  "accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
62541
+ "accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
62167
62542
  "accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
62168
62543
  "accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62169
62544
  "accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62170
62545
  "accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62546
+ "accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
62171
62547
  "accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62172
62548
  "accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
62173
62549
  "creditNotes.refundChargeName": "Zwrot za faktur\u0119",
@@ -62180,7 +62556,9 @@ var pl = {
62180
62556
  "invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
62181
62557
  "invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
62182
62558
  "invoices.prorata.paymentForItem": "P\u0142atno\u015B\u0107 proporcjonalna za",
62559
+ "invoices.prorata.paymentForItemFullPeriod": "P\u0142atno\u015B\u0107 za",
62183
62560
  "invoices.prorata.refundForItem": "Zwrot proporcjonalny za",
62561
+ "invoices.prorata.refundForItemFullPeriod": "Zwrot za",
62184
62562
  "subscriptions.closingChargeName": "Op\u0142ata za zamkni\u0119cie subskrypcji",
62185
62563
  "subscriptions.correction": "Korekta poprzedniego okresu",
62186
62564
  "subscriptions.updates.addCoupon": "Dodaj kupon {{couponName}}",
@@ -62204,10 +62582,12 @@ var pl = {
62204
62582
  var pt = {
62205
62583
  "accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
62206
62584
  "accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
62585
+ "accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
62207
62586
  "accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
62208
62587
  "accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62209
62588
  "accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62210
62589
  "accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62590
+ "accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
62211
62591
  "accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62212
62592
  "accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
62213
62593
  "creditNotes.refundChargeName": "Reembolso pela fatura",
@@ -62220,7 +62600,9 @@ var pt = {
62220
62600
  "invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
62221
62601
  "invoices.outstandingProduct.name": "Saldo em aberto",
62222
62602
  "invoices.prorata.paymentForItem": "Pagamento proporcional por",
62603
+ "invoices.prorata.paymentForItemFullPeriod": "Pagamento por",
62223
62604
  "invoices.prorata.refundForItem": "Reembolso proporcional por",
62605
+ "invoices.prorata.refundForItemFullPeriod": "Reembolso por",
62224
62606
  "subscriptions.closingChargeName": "Taxa de encerramento da assinatura",
62225
62607
  "subscriptions.correction": "Ajuste do per\xEDodo anterior",
62226
62608
  "subscriptions.updates.addCoupon": "Adicionar cupom {{couponName}}",
@@ -62342,10 +62724,16 @@ function buildHttpClient(dependencies) {
62342
62724
  return response;
62343
62725
  }, (error48) => {
62344
62726
  if (error48.response) {
62345
- const { config: responseConfig, status } = error48.response;
62727
+ const { config: responseConfig, status, headers } = error48.response;
62346
62728
  const timeStart = responseConfig.metadata.timeStart;
62347
62729
  const responseTime = timeStart ? Date.now() - timeStart : void 0;
62348
- logHttpResponse(logger2, { request: toLogRequest(responseConfig), statusCode: status }, responseTime, { metadata: { error: error48.message } });
62730
+ logHttpResponse(logger2, {
62731
+ request: toLogRequest(responseConfig),
62732
+ statusCode: status,
62733
+ // Surfaces upstream response headers on error responses (e.g. the
62734
+ // rate-limit headers on a 429); redacted in logHttpResponse.
62735
+ responseHeaders: headers
62736
+ }, responseTime, { metadata: { error: error48.message } });
62349
62737
  }
62350
62738
  return Promise.reject(error48);
62351
62739
  });
@@ -62438,6 +62826,9 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
62438
62826
 
62439
62827
  // ../hyperline-mcp/build/server/server.js
62440
62828
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
62829
+ var defaultToolOutputSchema = {
62830
+ result: external_exports.unknown()
62831
+ };
62441
62832
 
62442
62833
  // ../hyperline-mcp/build/session/sessionKey.js
62443
62834
  import { createHmac } from "node:crypto";