@hyperline/cli 0.1.0-build.1.b02fd71 → 0.1.0-build.1.b0b35f6

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_zod19 = require_lib();
34897
+ var import_zod20 = require_lib();
34898
34898
  var countryIds2 = ["all", ...countries.map(({ id }) => id)];
34899
- var ZodId = import_zod19.z.enum(countryIds2);
34900
- var ZodTranslationsSchemaFn = (schema) => import_zod19.z.record(import_zod19.z.string(), schema.optional());
34899
+ var ZodId = import_zod20.z.enum(countryIds2);
34900
+ var ZodTranslationsSchemaFn = (schema) => import_zod20.z.record(import_zod20.z.string(), schema.optional());
34901
34901
  var UsStates = [
34902
34902
  { id: "AA", name: "Armed Forces Americas" },
34903
34903
  { id: "AE", name: "Armed Forces Europe" },
@@ -37934,7 +37934,7 @@ Examples:
37934
37934
  queryParamKeys: ["take", "skip"]
37935
37935
  });
37936
37936
  });
37937
- resource.command("get").description(`Retrieve a specific bank account by its ID. Returns bank account details including IBAN, BIC, and currency.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
37937
+ resource.command("get").description(`Retrieve a specific bank account by its ID. Returns masked bank account details, account type, balance, and currency.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
37938
37938
  Examples:
37939
37939
  hyperline bank-accounts get --id <id>`).action(async (opts) => {
37940
37940
  const ctx = resource.parent?.opts()._ctx;
@@ -37952,6 +37952,31 @@ Examples:
37952
37952
  queryParamKeys: []
37953
37953
  });
37954
37954
  });
37955
+ resource.command("list-bank-account-transactions").description(`List open banking transactions for a specific bank account. Paginated with limit/cursor.`).requiredOption("--id <value>", `id parameter`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).addHelpText("after", `
37956
+ Examples:
37957
+ hyperline bank-accounts list-bank-account-transactions --id <id>
37958
+ hyperline bank-accounts list-bank-account-transactions --id <id> --limit <limit> --cursor <cursor>`).action(async (opts) => {
37959
+ const ctx = resource.parent?.opts()._ctx;
37960
+ if (!ctx) {
37961
+ process.stderr.write("Error: Not authenticated\n");
37962
+ process.exit(1);
37963
+ }
37964
+ const args = {};
37965
+ if (opts.id !== void 0)
37966
+ args.id = opts.id;
37967
+ if (opts.cursor !== void 0)
37968
+ args.cursor = opts.cursor;
37969
+ if (opts.includeTotal !== void 0)
37970
+ args.include_total = opts.includeTotal;
37971
+ if (opts.limit !== void 0)
37972
+ args.limit = Number(opts.limit);
37973
+ await ctx.execute({
37974
+ method: "GET",
37975
+ path: "/v1/bank-accounts/{id}/transactions",
37976
+ args,
37977
+ queryParamKeys: ["limit", "cursor", "include_total"]
37978
+ });
37979
+ });
37955
37980
  }
37956
37981
 
37957
37982
  // build/commands/generated/companies.js
@@ -38756,13 +38781,13 @@ Customer type.
38756
38781
 
38757
38782
  - \`taxable\`: Taxes are automatically determined for the customer.
38758
38783
  - \`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>", `
38784
+ `).option("--registration-number <value>", `Customer registration number.`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <value>", `Customer billing address.`).option("--shipping-address <value>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <value>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <value>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <value>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
38760
38785
  How customer invoices are issued from the parent organisation.
38761
38786
 
38762
38787
  - \`none\`: Invoices will keep being issued from this customer.
38763
38788
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
38764
38789
  - \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
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.`).addHelpText("after", `
38790
+ `).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <value>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
38766
38791
  Examples:
38767
38792
  hyperline customers create-customer
38768
38793
  hyperline customers create-customer --name <name> --type <type>
@@ -38787,6 +38812,8 @@ Examples:
38787
38812
  args.registration_number = opts.registrationNumber;
38788
38813
  if (opts.externalId !== void 0)
38789
38814
  args.external_id = opts.externalId;
38815
+ if (opts.domain !== void 0)
38816
+ args.domain = opts.domain;
38790
38817
  if (opts.invoicingEntityId !== void 0)
38791
38818
  args.invoicing_entity_id = opts.invoicingEntityId;
38792
38819
  if (opts.billingAddress !== void 0)
@@ -38819,6 +38846,10 @@ Examples:
38819
38846
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
38820
38847
  if (opts.priceBookId !== void 0)
38821
38848
  args.price_book_id = opts.priceBookId;
38849
+ if (opts.ownerId !== void 0)
38850
+ args.owner_id = opts.ownerId;
38851
+ if (opts.followerIds !== void 0)
38852
+ args.follower_ids = opts.followerIds;
38822
38853
  if (opts.taxRateCustom !== void 0)
38823
38854
  args.tax_rate_custom = Number(opts.taxRateCustom);
38824
38855
  if (opts.customPaymentDelay !== void 0)
@@ -38881,13 +38912,13 @@ Customer type.
38881
38912
 
38882
38913
  - \`taxable\`: Taxes are automatically determined for the customer.
38883
38914
  - \`exempt\`: The customer is exempt from tax.
38884
- `).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>", `
38915
+ `).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <value>", `Customer billing address.`).option("--shipping-address <value>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <value>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <value>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <value>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
38885
38916
  How customer invoices are issued from the parent organisation.
38886
38917
 
38887
38918
  - \`none\`: Invoices will keep being issued from this customer.
38888
38919
  - \`every_invoice\`: Customer invoices will be issued from the organisation individually.
38889
38920
  - \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
38890
- `).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).addHelpText("after", `
38921
+ `).option("--properties <value>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <value>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
38891
38922
  Examples:
38892
38923
  hyperline customers update --id <id>
38893
38924
  hyperline customers update --id <id> --name <name> --type <type>
@@ -38914,6 +38945,8 @@ Examples:
38914
38945
  args.registration_number = opts.registrationNumber;
38915
38946
  if (opts.externalId !== void 0)
38916
38947
  args.external_id = opts.externalId;
38948
+ if (opts.domain !== void 0)
38949
+ args.domain = opts.domain;
38917
38950
  if (opts.invoicingEntityId !== void 0)
38918
38951
  args.invoicing_entity_id = opts.invoicingEntityId;
38919
38952
  if (opts.billingAddress !== void 0)
@@ -38948,6 +38981,10 @@ Examples:
38948
38981
  args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
38949
38982
  if (opts.priceBookId !== void 0)
38950
38983
  args.price_book_id = opts.priceBookId;
38984
+ if (opts.ownerId !== void 0)
38985
+ args.owner_id = opts.ownerId;
38986
+ if (opts.followerIds !== void 0)
38987
+ args.follower_ids = opts.followerIds;
38951
38988
  if (opts.taxRateCustom !== void 0)
38952
38989
  args.tax_rate_custom = Number(opts.taxRateCustom);
38953
38990
  if (opts.customPaymentDelay !== void 0)
@@ -39612,6 +39649,7 @@ Export name.
39612
39649
  - \`draft_invoices\`: Export all draft invoices, with customer and product information.
39613
39650
  - \`open_invoices\`: Export all open invoices, with customer and product information.
39614
39651
  - \`live_subscriptions\`: List of all active subscriptions line by line.
39652
+ - \`credit_balances\`: Monthly credit balance roll-forward per customer and credit type (opening, top-ups, consumption, expiry, closing).
39615
39653
  `).requiredOption("--file-type <value>", `
39616
39654
  Export file type.
39617
39655
 
@@ -40189,7 +40227,7 @@ Examples:
40189
40227
  - \`archived\`: A previous version of an invoice.
40190
40228
  - \`charged_on_parent\`: Invoice is charged on the parent customer.
40191
40229
  - \`pending_parent_concat\`: Invoice is pending invoices concatenation on the parent customer to be grouped.
40192
- - \`uncollectible\`: Invoice is uncollectible (bad debt).
40230
+ - \`uncollectible\`: Invoice is uncollectible (bad debt). Only metadata (properties, custom_note, custom_properties) can be updated in this status.
40193
40231
  `).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the invoice.`).option("--number <value>", `Invoice number. If specified, the invoice will be considered as imported from an external source and the number will not be generated by Hyperline. You are responsible for avoiding duplicates and ensuring it does not impact the numbering sequence in Hyperline.`).option("--type <value>", `Type of the invoice.
40194
40232
 
40195
40233
  - \`invoice\`: Legal invoice to be paid by your customer.
@@ -40431,7 +40469,7 @@ Examples:
40431
40469
  queryParamKeys: []
40432
40470
  });
40433
40471
  });
40434
- resource.command("update").description(`Update a draft or grace_period invoice. Allows modifying line items, dates, and metadata before finalization.`).requiredOption("--id <value>", `id parameter`).option("--type <value>", `Type of the invoice.
40472
+ resource.command("update").description(`Update an invoice. Draft/grace_period allow modifying line items, dates, and metadata before finalization. Finalized invoices are restricted to metadata (paid: custom_note/purchase_order; uncollectible: properties/custom_note/custom_properties).`).requiredOption("--id <value>", `id parameter`).option("--type <value>", `Type of the invoice.
40435
40473
 
40436
40474
  - \`invoice\`: Legal invoice to be paid by your customer.
40437
40475
  - \`credit_note\`: Legal credit note cancelling an invoice and refunding your customer.
@@ -40603,7 +40641,7 @@ Examples:
40603
40641
  queryParamKeys: []
40604
40642
  });
40605
40643
  });
40606
- resource.command("delete-invoice-transaction").description(`Delete a scheduled transaction from an invoice. Only applies to transactions that haven't been processed yet.`).requiredOption("--id <value>", `id parameter`).requiredOption("--transaction-id <value>", `transactionId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
40644
+ resource.command("delete-invoice-transaction").description(`Delete a scheduled transaction or wallet debit from an invoice.`).requiredOption("--id <value>", `id parameter`).requiredOption("--transaction-id <value>", `transactionId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
40607
40645
  Examples:
40608
40646
  hyperline invoices-transactions delete-invoice-transaction --id <id> --transaction-id <transactionId>
40609
40647
  hyperline invoices-transactions delete-invoice-transaction --id <id> --transaction-id <transactionId> --output json`).action(async (opts) => {
@@ -41244,7 +41282,12 @@ Examples:
41244
41282
  ]
41245
41283
  });
41246
41284
  });
41247
- resource.command("create").description(`Create a new product with name, type (flat_fee, per_unit, usage, seat, etc.), and pricing configuration.`).requiredOption("--name <value>", `Product name.`).option("--description <value>", `Product description.`).option("--description-display-interval-dates", `Indicates if the dates of the interval should be automatically added in the product description on the invoices.`).option("--public-description <value>", `Public description of the product.`).option("--translations <value>", `Product name and description translations.`).option("--is-available-on-demand", `is_available_on_demand`).option("--is-available-on-subscription", `is_available_on_subscription`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--accounting <value>", `Mapping invoicing entity ID/accounting settings.`).requiredOption("--type <value>", `Product type for fixed fee products.`).requiredOption("--price-configurations <value>", `Price configurations for the product.`).option("--aggregator <value>", `Aggregator configuration to automatically count seats from billable events. Only count aggregators are supported for seat products.`).option("--aggregator-id <value>", `ID of an existing aggregator to link to this product.`).option("--unit-name <value>", `Name of the unit (e.g., 'user', 'seat').`).option("--is-connected-seat-item", `When true, the seat count is automatically synced from an external source (e.g., CRM users).`).option("--credit-aggregators <value>", `Multiple aggregators with weights for multi-aggregator credit consumption. Cannot be used together with aggregator or aggregator_id.`).option("--low-credits-threshold <number>", `Threshold indicating a low level of credits.`).option("--display-mode <value>", `How bundle items are displayed on invoices.`).option("--exclusive-items-enabled", `When true, only one item in the bundle can be active at a time.`).option("--bundle-items <value>", `Products included in this bundle. Percentages must sum to 100.`).addHelpText("after", `
41285
+ resource.command("create").description(`Create a new product with name, type (flat_fee, per_unit, usage, seat, etc.), and pricing configuration.`).requiredOption("--name <value>", `Product name.`).option("--description <value>", `Product description.`).option("--description-display-interval-dates", `Indicates if the dates of the interval should be automatically added in the product description on the invoices.`).option("--public-description <value>", `Public description of the product.`).option("--translations <value>", `Product name and description translations.`).option("--is-available-on-demand", `is_available_on_demand`).option("--is-available-on-subscription", `is_available_on_subscription`).option("--custom-properties <value>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--accounting <value>", `Mapping invoicing entity ID/accounting settings.`).requiredOption("--type <value>", `Product type for fixed fee products.`).requiredOption("--price-configurations <value>", `Price configurations for the product.`).option("--aggregator <value>", `Aggregator configuration to automatically count seats from billable events. Only count aggregators are supported for seat products.`).option("--aggregator-id <value>", `ID of an existing aggregator to link to this product.`).option("--unit-name <value>", `Name of the unit (e.g., 'user', 'seat').`).option("--is-connected-seat-item", `When true, the seat count is automatically synced from an external source (e.g., CRM users).`).option("--credit-aggregators <value>", `Multiple aggregators with weights for multi-aggregator credit consumption. Cannot be used together with aggregator or aggregator_id.`).option("--low-credits-threshold <number>", `Threshold indicating a low level of credits.`).option("--credits-grant-mode <value>", `
41286
+ How the periodic credit allowance is granted for partial billing periods.
41287
+
41288
+ - \`prorated\` (default): the granted credits are prorated to the elapsed period.
41289
+ - \`full_allowance\`: the full allowance is always granted (the invoice remains prorated).
41290
+ `).option("--display-mode <value>", `How bundle items are displayed on invoices.`).option("--exclusive-items-enabled", `When true, only one item in the bundle can be active at a time.`).option("--bundle-items <value>", `Products included in this bundle. Percentages must sum to 100.`).addHelpText("after", `
41248
41291
  Examples:
41249
41292
  hyperline products create --name <name> --type <type> --price-configurations <price_configurations>
41250
41293
  hyperline products create --name <name> --type <type> --price-configurations <price_configurations> --description <description> --description-display-interval-dates
@@ -41279,6 +41322,8 @@ Examples:
41279
41322
  args.unit_name = opts.unitName;
41280
41323
  if (opts.creditAggregators !== void 0)
41281
41324
  args.credit_aggregators = opts.creditAggregators;
41325
+ if (opts.creditsGrantMode !== void 0)
41326
+ args.credits_grant_mode = opts.creditsGrantMode;
41282
41327
  if (opts.displayMode !== void 0)
41283
41328
  args.display_mode = opts.displayMode;
41284
41329
  if (opts.bundleItems !== void 0)
@@ -41380,6 +41425,32 @@ Examples:
41380
41425
  queryParamKeys: []
41381
41426
  });
41382
41427
  });
41428
+ resource.command("delete").description(`Permanently delete an archived product by ID. Products attached to subscriptions, plans, or templates cannot be deleted.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
41429
+ Examples:
41430
+ hyperline products delete --id <id>
41431
+ hyperline products delete --id <id> --output json`).action(async (opts) => {
41432
+ const ctx = resource.parent?.opts()._ctx;
41433
+ if (!ctx) {
41434
+ process.stderr.write("Error: Not authenticated\n");
41435
+ process.exit(1);
41436
+ }
41437
+ const args = {};
41438
+ if (opts.id !== void 0)
41439
+ args.id = opts.id;
41440
+ if (!opts.yes) {
41441
+ const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
41442
+ if (!confirmed) {
41443
+ process.stdout.write("Aborted.\n");
41444
+ return;
41445
+ }
41446
+ }
41447
+ await ctx.execute({
41448
+ method: "DELETE",
41449
+ path: "/v1/products/{id}",
41450
+ args,
41451
+ queryParamKeys: []
41452
+ });
41453
+ });
41383
41454
  resource.command("unarchive").description(`Restore a previously archived product, making it available for new subscriptions again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
41384
41455
  Examples:
41385
41456
  hyperline products unarchive --id <id>
@@ -41404,13 +41475,13 @@ Examples:
41404
41475
  // build/commands/generated/quotes.js
41405
41476
  function registerQuotesCommands(parent) {
41406
41477
  const resource = parent.command("quotes").description("Manage quotes");
41407
- 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.`).option("--status <value>", `
41478
+ 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>", `
41408
41479
  Quote status.
41409
41480
 
41410
41481
  - \`draft\`: The quote is a draft.
41411
41482
  - \`approved\`: The quote is approved and ready to be sent to the customer.
41412
41483
  - \`pending_signature\`: The quote is awaiting the customer's signature.
41413
- `).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("--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.
41484
+ `).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.
41414
41485
 
41415
41486
  - \`all\`: Display all pricing tiers.
41416
41487
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
@@ -41442,6 +41513,8 @@ Examples:
41442
41513
  args.collect_payment_details = opts.collectPaymentDetails;
41443
41514
  if (opts.collectCustomPropertyIds !== void 0)
41444
41515
  args.collect_custom_property_ids = opts.collectCustomPropertyIds;
41516
+ if (opts.contractClauseIds !== void 0)
41517
+ args.contract_clause_ids = opts.contractClauseIds;
41445
41518
  if (opts.requireTaxId !== void 0)
41446
41519
  args.require_tax_id = opts.requireTaxId;
41447
41520
  if (opts.displayQuoteValue !== void 0)
@@ -41698,12 +41771,12 @@ Examples:
41698
41771
  queryParamKeys: []
41699
41772
  });
41700
41773
  });
41701
- 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.`).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("--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.
41774
+ 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.
41702
41775
 
41703
41776
  - \`all\`: Display all pricing tiers.
41704
41777
  - \`matching\`: Only display the tiers used to compute the price based on quantity.
41705
41778
  - \`none\`: Hide all pricing tiers.
41706
- `).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", `
41779
+ `).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--display-subscription-on-update <value>", `Display subscription details on subscription update quotes.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <value>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <value>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
41707
41780
  Examples:
41708
41781
  hyperline quotes update --id <id>
41709
41782
  hyperline quotes update --id <id> --owner-email <owner_email> --comments <comments>
@@ -41726,6 +41799,8 @@ Examples:
41726
41799
  args.collect_payment_details = opts.collectPaymentDetails;
41727
41800
  if (opts.collectCustomPropertyIds !== void 0)
41728
41801
  args.collect_custom_property_ids = opts.collectCustomPropertyIds;
41802
+ if (opts.contractClauseIds !== void 0)
41803
+ args.contract_clause_ids = opts.contractClauseIds;
41729
41804
  if (opts.requireTaxId !== void 0)
41730
41805
  args.require_tax_id = opts.requireTaxId;
41731
41806
  if (opts.displayQuoteValue !== void 0)
@@ -41746,6 +41821,8 @@ Examples:
41746
41821
  args.display_subscription_on_update = opts.displaySubscriptionOnUpdate;
41747
41822
  if (opts.generateDraftInvoices !== void 0)
41748
41823
  args.generate_draft_invoices = opts.generateDraftInvoices;
41824
+ if (opts.crmOpportunityId !== void 0)
41825
+ args.crm_opportunity_id = opts.crmOpportunityId;
41749
41826
  if (opts.expiresAt !== void 0)
41750
41827
  args.expires_at = opts.expiresAt;
41751
41828
  if (opts.subscription !== void 0)
@@ -41801,6 +41878,25 @@ Examples:
41801
41878
  queryParamKeys: []
41802
41879
  });
41803
41880
  });
41881
+ 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", `
41882
+ Examples:
41883
+ hyperline quotes finalize --id <id>
41884
+ hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
41885
+ const ctx = resource.parent?.opts()._ctx;
41886
+ if (!ctx) {
41887
+ process.stderr.write("Error: Not authenticated\n");
41888
+ process.exit(1);
41889
+ }
41890
+ const args = {};
41891
+ if (opts.id !== void 0)
41892
+ args.id = opts.id;
41893
+ await ctx.execute({
41894
+ method: "POST",
41895
+ path: "/v1/quotes/{id}/finalize",
41896
+ args,
41897
+ queryParamKeys: []
41898
+ });
41899
+ });
41804
41900
  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", `
41805
41901
  Examples:
41806
41902
  hyperline quotes send --id <id> --email <email>
@@ -41908,10 +42004,132 @@ Examples:
41908
42004
  });
41909
42005
  }
41910
42006
 
42007
+ // build/commands/generated/quotes-templates.js
42008
+ function registerQuotes_TemplatesCommands(parent) {
42009
+ const resource = parent.command("quotes-templates").description("Manage quotes > templates");
42010
+ 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", `
42011
+ Examples:
42012
+ hyperline quotes-templates list-quote-templates
42013
+ hyperline quotes-templates list-quote-templates --take <take> --id <id>`).action(async (opts) => {
42014
+ const ctx = resource.parent?.opts()._ctx;
42015
+ if (!ctx) {
42016
+ process.stderr.write("Error: Not authenticated\n");
42017
+ process.exit(1);
42018
+ }
42019
+ const args = {};
42020
+ if (opts.id !== void 0)
42021
+ args.id = opts.id;
42022
+ if (opts["id.not"] !== void 0)
42023
+ args.id__not = opts["id.not"];
42024
+ if (opts["id.isNull"] !== void 0)
42025
+ args.id__isNull = opts["id.isNull"];
42026
+ if (opts["id.isNotNull"] !== void 0)
42027
+ args.id__isNotNull = opts["id.isNotNull"];
42028
+ if (opts["id.equals"] !== void 0)
42029
+ args.id__equals = opts["id.equals"];
42030
+ if (opts["id.contains"] !== void 0)
42031
+ args.id__contains = opts["id.contains"];
42032
+ if (opts["id.startsWith"] !== void 0)
42033
+ args.id__startsWith = opts["id.startsWith"];
42034
+ if (opts["id.endWith"] !== void 0)
42035
+ args.id__endWith = opts["id.endWith"];
42036
+ if (opts.name !== void 0)
42037
+ args.name = opts.name;
42038
+ if (opts["name.not"] !== void 0)
42039
+ args.name__not = opts["name.not"];
42040
+ if (opts["name.isNull"] !== void 0)
42041
+ args.name__isNull = opts["name.isNull"];
42042
+ if (opts["name.isNotNull"] !== void 0)
42043
+ args.name__isNotNull = opts["name.isNotNull"];
42044
+ if (opts["name.equals"] !== void 0)
42045
+ args.name__equals = opts["name.equals"];
42046
+ if (opts["name.contains"] !== void 0)
42047
+ args.name__contains = opts["name.contains"];
42048
+ if (opts["name.startsWith"] !== void 0)
42049
+ args.name__startsWith = opts["name.startsWith"];
42050
+ if (opts["name.endWith"] !== void 0)
42051
+ args.name__endWith = opts["name.endWith"];
42052
+ if (opts.subscriptionTemplateId !== void 0)
42053
+ args.subscription_template_id = opts.subscriptionTemplateId;
42054
+ if (opts["subscriptionTemplateId.not"] !== void 0)
42055
+ args.subscription_template_id__not = opts["subscriptionTemplateId.not"];
42056
+ if (opts["subscriptionTemplateId.isNull"] !== void 0)
42057
+ args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
42058
+ if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
42059
+ args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
42060
+ if (opts["subscriptionTemplateId.equals"] !== void 0)
42061
+ args.subscription_template_id__equals = opts["subscriptionTemplateId.equals"];
42062
+ if (opts["subscriptionTemplateId.contains"] !== void 0)
42063
+ args.subscription_template_id__contains = opts["subscriptionTemplateId.contains"];
42064
+ if (opts["subscriptionTemplateId.startsWith"] !== void 0)
42065
+ args.subscription_template_id__startsWith = opts["subscriptionTemplateId.startsWith"];
42066
+ if (opts["subscriptionTemplateId.endWith"] !== void 0)
42067
+ args.subscription_template_id__endWith = opts["subscriptionTemplateId.endWith"];
42068
+ if (opts.search !== void 0)
42069
+ args.search = opts.search;
42070
+ if (opts.take !== void 0)
42071
+ args.take = Number(opts.take);
42072
+ if (opts.skip !== void 0)
42073
+ args.skip = Number(opts.skip);
42074
+ await ctx.execute({
42075
+ method: "GET",
42076
+ path: "/v1/quotes/templates",
42077
+ args,
42078
+ queryParamKeys: [
42079
+ "take",
42080
+ "skip",
42081
+ "id",
42082
+ "id__not",
42083
+ "id__isNull",
42084
+ "id__isNotNull",
42085
+ "id__equals",
42086
+ "id__contains",
42087
+ "id__startsWith",
42088
+ "id__endWith",
42089
+ "name",
42090
+ "name__not",
42091
+ "name__isNull",
42092
+ "name__isNotNull",
42093
+ "name__equals",
42094
+ "name__contains",
42095
+ "name__startsWith",
42096
+ "name__endWith",
42097
+ "subscription_template_id",
42098
+ "subscription_template_id__not",
42099
+ "subscription_template_id__isNull",
42100
+ "subscription_template_id__isNotNull",
42101
+ "subscription_template_id__equals",
42102
+ "subscription_template_id__contains",
42103
+ "subscription_template_id__startsWith",
42104
+ "subscription_template_id__endWith",
42105
+ "search"
42106
+ ]
42107
+ });
42108
+ });
42109
+ 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", `
42110
+ Examples:
42111
+ hyperline quotes-templates get-quote-template --id <id>`).action(async (opts) => {
42112
+ const ctx = resource.parent?.opts()._ctx;
42113
+ if (!ctx) {
42114
+ process.stderr.write("Error: Not authenticated\n");
42115
+ process.exit(1);
42116
+ }
42117
+ const args = {};
42118
+ if (opts.id !== void 0)
42119
+ args.id = opts.id;
42120
+ await ctx.execute({
42121
+ method: "GET",
42122
+ path: "/v1/quotes/templates/{id}",
42123
+ args,
42124
+ queryParamKeys: []
42125
+ });
42126
+ });
42127
+ }
42128
+
41911
42129
  // build/commands/generated/subscriptions.js
41912
42130
  function registerSubscriptionsCommands(parent) {
41913
42131
  const resource = parent.command("subscriptions").description("Manage subscriptions");
41914
- 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("--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", `
42132
+ 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", `
41915
42133
  Examples:
41916
42134
  hyperline subscriptions create-subscription-update --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --type <type> --payload <payload>
41917
42135
  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>
@@ -41934,6 +42152,8 @@ Examples:
41934
42152
  args.charge_at = opts.chargeAt;
41935
42153
  if (opts.calculationMethod !== void 0)
41936
42154
  args.calculation_method = opts.calculationMethod;
42155
+ if (opts.precision !== void 0)
42156
+ args.precision = opts.precision;
41937
42157
  if (opts.refundMethod !== void 0)
41938
42158
  args.refund_method = opts.refundMethod;
41939
42159
  if (opts.type !== void 0)
@@ -41947,7 +42167,7 @@ Examples:
41947
42167
  queryParamKeys: []
41948
42168
  });
41949
42169
  });
41950
- 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("--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", `
42170
+ 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", `
41951
42171
  Examples:
41952
42172
  hyperline subscriptions create-subscription-updates --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --updates <updates>
41953
42173
  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>
@@ -41970,6 +42190,8 @@ Examples:
41970
42190
  args.charge_at = opts.chargeAt;
41971
42191
  if (opts.calculationMethod !== void 0)
41972
42192
  args.calculation_method = opts.calculationMethod;
42193
+ if (opts.precision !== void 0)
42194
+ args.precision = opts.precision;
41973
42195
  if (opts.refundMethod !== void 0)
41974
42196
  args.refund_method = opts.refundMethod;
41975
42197
  if (opts.updates !== void 0)
@@ -42028,7 +42250,7 @@ Examples:
42028
42250
  queryParamKeys: []
42029
42251
  });
42030
42252
  });
42031
- resource.command("pause").description(`Pause a subscription. Billing stops while paused. Optionally specify a reactivate_at date for automatic resumption.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date when the subscription will be automatically reactivated. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
42253
+ resource.command("pause").description(`Pause a subscription. Billing stops while paused. Optionally specify a reactivate_at date for automatic resumption. If the subscription is already paused, updates (or clears) its reactivation date.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date when the subscription will be automatically reactivated. Must be a future date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
42032
42254
  Examples:
42033
42255
  hyperline subscriptions pause --id <id>
42034
42256
  hyperline subscriptions pause --id <id> --reactivate-at <reactivate_at>
@@ -42109,7 +42331,7 @@ Examples:
42109
42331
  queryParamKeys: []
42110
42332
  });
42111
42333
  });
42112
- 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("--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", `
42334
+ 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", `
42113
42335
  Examples:
42114
42336
  hyperline subscriptions simulate-subscription-updates --id <id> --application-schedule <application_schedule> --payment-schedule <payment_schedule> --calculation-method <calculation_method> --updates <updates>
42115
42337
  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>
@@ -42132,6 +42354,8 @@ Examples:
42132
42354
  args.charge_at = opts.chargeAt;
42133
42355
  if (opts.calculationMethod !== void 0)
42134
42356
  args.calculation_method = opts.calculationMethod;
42357
+ if (opts.precision !== void 0)
42358
+ args.precision = opts.precision;
42135
42359
  if (opts.refundMethod !== void 0)
42136
42360
  args.refund_method = opts.refundMethod;
42137
42361
  if (opts.updates !== void 0)
@@ -43509,6 +43733,7 @@ function registerAllCommands(program2) {
43509
43733
  registerProductsCommands(program2);
43510
43734
  registerPrice_ConfigurationsCommands(program2);
43511
43735
  registerQuotesCommands(program2);
43736
+ registerQuotes_TemplatesCommands(program2);
43512
43737
  registerSubscriptions_TemplatesCommands(program2);
43513
43738
  registerSubscriptionsCommands(program2);
43514
43739
  registerSubscriptions_TransitionsCommands(program2);
@@ -61644,6 +61869,7 @@ import * as winston from "winston";
61644
61869
 
61645
61870
  // ../hyperline-monitoring/build/logger/formatting/format.js
61646
61871
  import prune from "json-prune";
61872
+ var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
61647
61873
  function jsonFormat(info) {
61648
61874
  const prunedInfo = JSON.parse(prune(info));
61649
61875
  for (const [key, value] of Object.entries(prunedInfo)) {
@@ -61726,17 +61952,26 @@ function formatAxiosError(error48) {
61726
61952
  url: request?.url,
61727
61953
  baseURL: request?.baseURL,
61728
61954
  params: request?.params,
61729
- headers: request?.headers,
61955
+ headers: redactHeaders({ headers: request?.headers }),
61730
61956
  "axios-retry": request?.["axios-retry"]
61731
61957
  },
61732
61958
  response: {
61733
61959
  status: response?.status,
61734
61960
  statusText: response?.statusText,
61735
- headers: response?.headers,
61961
+ headers: redactHeaders({ headers: response?.headers }),
61736
61962
  data: response?.data
61737
61963
  }
61738
61964
  };
61739
61965
  }
61966
+ function redactHeaders({ headers }) {
61967
+ if (!isRecord(headers)) {
61968
+ return headers;
61969
+ }
61970
+ return Object.fromEntries(Object.entries(headers).map(([headerKey, headerValue]) => [
61971
+ headerKey,
61972
+ REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
61973
+ ]));
61974
+ }
61740
61975
  function isRecord(value) {
61741
61976
  return typeof value === "object" && value !== null && !Array.isArray(value);
61742
61977
  }
@@ -61760,13 +61995,16 @@ function logHttpRequest(logger2, request, extra) {
61760
61995
  });
61761
61996
  }
61762
61997
  function logHttpResponse(logger2, response, responseTime, extra) {
61763
- const { request, statusCode, responseBody } = response;
61998
+ const { request, statusCode, responseBody, responseHeaders } = response;
61764
61999
  const { message, metadata } = transform2(request);
61765
62000
  const readableResponseTime = responseTime ? getReadableTime(responseTime) : void 0;
61766
62001
  const responseMetadata = {
61767
62002
  statusCode,
61768
62003
  responseTime,
61769
- responseBody
62004
+ responseBody,
62005
+ // Redacted so secrets (authorization/cookie/token/…) never reach the logs
62006
+ // while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
62007
+ responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
61770
62008
  };
61771
62009
  logger2.info(`HTTP RES - ${message} ${statusCode} ${readableResponseTime || ""} ${extra?.postfix || ""}`, {
61772
62010
  ...metadata,
@@ -62047,6 +62285,12 @@ var DateTimeSchema = external_exports.iso.datetime({
62047
62285
  example: "2024-12-20T16:04:11Z"
62048
62286
  });
62049
62287
 
62288
+ // ../hyperline-lib/build/http/dto/domain.js
62289
+ var DomainSchema = external_exports.string().trim().toLowerCase().regex(/^(?!:\/\/)(?=.{1,253}$)(?!-)([a-z0-9-]{1,63}\.)+[a-z]{2,63}$/, "Invalid domain").openapi({
62290
+ description: "Domain name.",
62291
+ example: "acme.com"
62292
+ });
62293
+
62050
62294
  // ../hyperline-lib/build/http/dto/error.js
62051
62295
  var ErrorSchema = external_exports.object({
62052
62296
  message: external_exports.string()
@@ -62103,9 +62347,11 @@ var de = {
62103
62347
  "accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
62104
62348
  "accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
62105
62349
  "accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
62350
+ "accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
62106
62351
  "accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
62107
62352
  "accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
62108
62353
  "accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
62354
+ "accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
62109
62355
  "accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
62110
62356
  "accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
62111
62357
  "creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
@@ -62173,11 +62419,13 @@ var en = {
62173
62419
  "accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
62174
62420
  "accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
62175
62421
  "accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
62422
+ "accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
62176
62423
  "accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
62177
62424
  "accounting.revrec.debitLineDescription": "Decrease deferred revenue \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62178
62425
  "accounting.revrec.creditLineDescription": "Recognize revenue \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62179
62426
  "accounting.revrec.discountDebitLineDescription": "Decrease deferred discount \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62180
62427
  "accounting.revrec.discountCreditLineDescription": "Recognize contra-revenue (discount) \u2013 schedule {{scheduleId}}, period {{periodDate}}",
62428
+ "accounting.revrec.closedPeriodFallbackNote": " (posted to next open period \u2014 target accounting period closed; original date {{originalDate}})",
62181
62429
  "einvoicing.paymentProcessed": "Payment processed",
62182
62430
  "einvoicing.paymentReceived": "Payment received",
62183
62431
  "einvoicing.paymentFromWallet": "Payment from wallet"
@@ -62189,9 +62437,11 @@ var es = {
62189
62437
  "accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
62190
62438
  "accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
62191
62439
  "accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
62440
+ "accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
62192
62441
  "accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62193
62442
  "accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62194
62443
  "accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62444
+ "accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
62195
62445
  "accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62196
62446
  "accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
62197
62447
  "creditNotes.refundChargeName": "Reembolso por factura",
@@ -62231,11 +62481,13 @@ var fr = {
62231
62481
  "accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62232
62482
  "accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62233
62483
  "accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62484
+ "accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
62234
62485
  "accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
62235
62486
  "accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
62236
62487
  "accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
62237
62488
  "accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
62238
62489
  "accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
62490
+ "accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
62239
62491
  "accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
62240
62492
  "creditNotes.refundChargeName": "Remboursement pour facture",
62241
62493
  "credits.bundleOf": "{{productName}} - Pack de {{creditCount}} cr\xE9dits",
@@ -62275,9 +62527,11 @@ var it = {
62275
62527
  "accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
62276
62528
  "accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
62277
62529
  "accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
62530
+ "accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
62278
62531
  "accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62279
62532
  "accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62280
62533
  "accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62534
+ "accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
62281
62535
  "accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
62282
62536
  "accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
62283
62537
  "creditNotes.refundChargeName": "Rimborso per fattura",
@@ -62318,9 +62572,11 @@ var nl = {
62318
62572
  "accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
62319
62573
  "accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
62320
62574
  "accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
62575
+ "accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
62321
62576
  "accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62322
62577
  "accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62323
62578
  "accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62579
+ "accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
62324
62580
  "accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
62325
62581
  "accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
62326
62582
  "creditNotes.refundChargeName": "Terugbetaling voor factuur",
@@ -62361,9 +62617,11 @@ var pl = {
62361
62617
  "accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
62362
62618
  "accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
62363
62619
  "accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
62620
+ "accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
62364
62621
  "accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62365
62622
  "accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62366
62623
  "accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62624
+ "accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
62367
62625
  "accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
62368
62626
  "accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
62369
62627
  "creditNotes.refundChargeName": "Zwrot za faktur\u0119",
@@ -62404,9 +62662,11 @@ var pt = {
62404
62662
  "accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
62405
62663
  "accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
62406
62664
  "accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
62665
+ "accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
62407
62666
  "accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62408
62667
  "accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62409
62668
  "accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62669
+ "accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
62410
62670
  "accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
62411
62671
  "accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
62412
62672
  "creditNotes.refundChargeName": "Reembolso pela fatura",
@@ -62543,10 +62803,16 @@ function buildHttpClient(dependencies) {
62543
62803
  return response;
62544
62804
  }, (error48) => {
62545
62805
  if (error48.response) {
62546
- const { config: responseConfig, status } = error48.response;
62806
+ const { config: responseConfig, status, headers } = error48.response;
62547
62807
  const timeStart = responseConfig.metadata.timeStart;
62548
62808
  const responseTime = timeStart ? Date.now() - timeStart : void 0;
62549
- logHttpResponse(logger2, { request: toLogRequest(responseConfig), statusCode: status }, responseTime, { metadata: { error: error48.message } });
62809
+ logHttpResponse(logger2, {
62810
+ request: toLogRequest(responseConfig),
62811
+ statusCode: status,
62812
+ // Surfaces upstream response headers on error responses (e.g. the
62813
+ // rate-limit headers on a 429); redacted in logHttpResponse.
62814
+ responseHeaders: headers
62815
+ }, responseTime, { metadata: { error: error48.message } });
62550
62816
  }
62551
62817
  return Promise.reject(error48);
62552
62818
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperline/cli",
3
- "version": "0.1.0-build.1.b02fd71",
3
+ "version": "0.1.0-build.1.b0b35f6",
4
4
  "description": "Agent-first CLI for Hyperline API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -48,7 +48,7 @@
48
48
  "@hyperline/vitest-config": "workspace:*",
49
49
  "@types/node": "24.10.1",
50
50
  "esbuild": "0.28.0",
51
- "typescript": "6.0.3",
51
+ "typescript": "7.0.2",
52
52
  "vitest": "4.1.5"
53
53
  },
54
54
  "publishConfig": {