@hyperline/cli 0.1.0-build.1.ece1439 → 0.1.0-build.1.ece8f12
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.
- package/dist/bin/hyperline-main.js +484 -206
- package/package.json +1 -1
|
@@ -34985,10 +34985,10 @@ var require_shared = __commonJS({
|
|
|
34985
34985
|
ZodId: () => ZodId,
|
|
34986
34986
|
ZodTranslationsSchemaFn: () => ZodTranslationsSchemaFn
|
|
34987
34987
|
});
|
|
34988
|
-
var
|
|
34988
|
+
var import_zod23 = require_lib();
|
|
34989
34989
|
var countryIds2 = ["all", ...countries.map(({ id }) => id)];
|
|
34990
|
-
var ZodId =
|
|
34991
|
-
var ZodTranslationsSchemaFn = (schema) =>
|
|
34990
|
+
var ZodId = import_zod23.z.enum(countryIds2);
|
|
34991
|
+
var ZodTranslationsSchemaFn = (schema) => import_zod23.z.record(import_zod23.z.string(), schema.optional());
|
|
34992
34992
|
var UsStates = [
|
|
34993
34993
|
{ id: "AA", name: "Armed Forces Americas" },
|
|
34994
34994
|
{ id: "AE", name: "Armed Forces Europe" },
|
|
@@ -36287,14 +36287,14 @@ var require_shared = __commonJS({
|
|
|
36287
36287
|
ZodNumberCurrencyPositiveValue: () => ZodNumberCurrencyPositiveValue,
|
|
36288
36288
|
ZodNumberCurrencyPositiveValueExcludingZero: () => ZodNumberCurrencyPositiveValueExcludingZero
|
|
36289
36289
|
});
|
|
36290
|
-
var
|
|
36291
|
-
var ZodCurrencyId =
|
|
36290
|
+
var import_zod24 = require_lib();
|
|
36291
|
+
var ZodCurrencyId = import_zod24.z.enum(
|
|
36292
36292
|
all_default.map(({ id }) => id)
|
|
36293
36293
|
);
|
|
36294
|
-
var ZodNumberCurrency =
|
|
36295
|
-
var ZodNumberCurrencyPositiveValue =
|
|
36296
|
-
var ZodNumberCurrencyPositiveValueExcludingZero =
|
|
36297
|
-
var ZodCurrencyMap =
|
|
36294
|
+
var ZodNumberCurrency = import_zod24.z.string().or(import_zod24.z.number().transform((number4) => number4)).transform((number4) => number4);
|
|
36295
|
+
var ZodNumberCurrencyPositiveValue = import_zod24.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
|
|
36296
|
+
var ZodNumberCurrencyPositiveValueExcludingZero = import_zod24.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
|
|
36297
|
+
var ZodCurrencyMap = import_zod24.z.record(ZodNumberCurrency).refine(
|
|
36298
36298
|
(data) => Object.keys(data).every((key) => ZodCurrencyId.safeParse(key).success),
|
|
36299
36299
|
{
|
|
36300
36300
|
message: "Invalid currency key.",
|
|
@@ -39008,7 +39008,7 @@ Examples:
|
|
|
39008
39008
|
queryParamKeys: []
|
|
39009
39009
|
});
|
|
39010
39010
|
});
|
|
39011
|
-
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible.
|
|
39011
|
+
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39012
39012
|
Examples:
|
|
39013
39013
|
hyperline accounting-rules create --category <category> --priority <priority>
|
|
39014
39014
|
hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
|
|
@@ -39108,7 +39108,7 @@ Examples:
|
|
|
39108
39108
|
queryParamKeys: []
|
|
39109
39109
|
});
|
|
39110
39110
|
});
|
|
39111
|
-
resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible.
|
|
39111
|
+
resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39112
39112
|
Examples:
|
|
39113
39113
|
hyperline accounting-rules update --id <id>
|
|
39114
39114
|
hyperline accounting-rules update --id <id> --name <name> --category <category>
|
|
@@ -40508,7 +40508,7 @@ Examples:
|
|
|
40508
40508
|
// build/commands/generated/ai-monitoring.js
|
|
40509
40509
|
function registerAi_MonitoringCommands(parent) {
|
|
40510
40510
|
const resource = parent.command("ai-monitoring").description("Manage ai > monitoring");
|
|
40511
|
-
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score. Only completed analyses unless status is set.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
|
|
40511
|
+
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score, or by customer_id__in (up to 100 Hyperline IDs) for several customers; the first analysis per customer is its latest. Only completed analyses unless status is set.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--customer-id.in <value>", `Comma-separated list of up to 100 Hyperline customer IDs. Return only analyses of these customers. Cannot be combined with \`customer_id\`.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
|
|
40512
40512
|
Examples:
|
|
40513
40513
|
hyperline ai-monitoring list-monitoring-analyses
|
|
40514
40514
|
hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
@@ -40524,6 +40524,8 @@ Examples:
|
|
|
40524
40524
|
args.include_total = opts.includeTotal;
|
|
40525
40525
|
if (opts.customerId !== void 0)
|
|
40526
40526
|
args.customer_id = opts.customerId;
|
|
40527
|
+
if (opts["customerId.in"] !== void 0)
|
|
40528
|
+
args.customer_id__in = opts["customerId.in"];
|
|
40527
40529
|
if (opts.status !== void 0)
|
|
40528
40530
|
args.status = opts.status;
|
|
40529
40531
|
if (opts["createdAt.gte"] !== void 0)
|
|
@@ -40541,6 +40543,7 @@ Examples:
|
|
|
40541
40543
|
"cursor",
|
|
40542
40544
|
"include_total",
|
|
40543
40545
|
"customer_id",
|
|
40546
|
+
"customer_id__in",
|
|
40544
40547
|
"status",
|
|
40545
40548
|
"created_at__gte",
|
|
40546
40549
|
"created_at__lte"
|
|
@@ -40726,7 +40729,7 @@ Examples:
|
|
|
40726
40729
|
queryParamKeys: ["take", "skip"]
|
|
40727
40730
|
});
|
|
40728
40731
|
});
|
|
40729
|
-
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `
|
|
40732
|
+
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40730
40733
|
Examples:
|
|
40731
40734
|
hyperline coupons create --name <name> --type <type>
|
|
40732
40735
|
hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40743,6 +40746,8 @@ Examples:
|
|
|
40743
40746
|
args.description = opts.description;
|
|
40744
40747
|
if (opts.expirationDate !== void 0)
|
|
40745
40748
|
args.expiration_date = opts.expirationDate;
|
|
40749
|
+
if (opts.productScope !== void 0)
|
|
40750
|
+
args.product_scope = opts.productScope;
|
|
40746
40751
|
if (opts.repeat !== void 0)
|
|
40747
40752
|
args.repeat = opts.repeat;
|
|
40748
40753
|
if (opts.type !== void 0)
|
|
@@ -40786,7 +40791,7 @@ Examples:
|
|
|
40786
40791
|
queryParamKeys: []
|
|
40787
40792
|
});
|
|
40788
40793
|
});
|
|
40789
|
-
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `
|
|
40794
|
+
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40790
40795
|
Examples:
|
|
40791
40796
|
hyperline coupons update --id <id> --name <name> --type <type>
|
|
40792
40797
|
hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40805,6 +40810,8 @@ Examples:
|
|
|
40805
40810
|
args.description = opts.description;
|
|
40806
40811
|
if (opts.expirationDate !== void 0)
|
|
40807
40812
|
args.expiration_date = opts.expirationDate;
|
|
40813
|
+
if (opts.productScope !== void 0)
|
|
40814
|
+
args.product_scope = opts.productScope;
|
|
40808
40815
|
if (opts.repeat !== void 0)
|
|
40809
40816
|
args.repeat = opts.repeat;
|
|
40810
40817
|
if (opts.type !== void 0)
|
|
@@ -41155,7 +41162,15 @@ Examples:
|
|
|
41155
41162
|
// build/commands/generated/customers.js
|
|
41156
41163
|
function registerCustomersCommands(parent) {
|
|
41157
41164
|
const resource = parent.command("customers").description("Manage customers");
|
|
41158
|
-
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("--
|
|
41165
|
+
resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, tax_id_status, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--tax-id-status <value>", `
|
|
41166
|
+
Verification status of the customer tax ID.
|
|
41167
|
+
|
|
41168
|
+
- \`valid\`: Tax ID has been verified and is valid.
|
|
41169
|
+
- \`invalid\`: Tax ID has been verified and is invalid.
|
|
41170
|
+
- \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
|
|
41171
|
+
- \`unverified\`: Tax ID has not been verified yet.
|
|
41172
|
+
- \`unsupported\`: Tax ID verification for this type not supported yet.
|
|
41173
|
+
`).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", `
|
|
41159
41174
|
Examples:
|
|
41160
41175
|
hyperline customers list
|
|
41161
41176
|
hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
@@ -41173,6 +41188,8 @@ Examples:
|
|
|
41173
41188
|
args.order = opts.order;
|
|
41174
41189
|
if (opts.sort !== void 0)
|
|
41175
41190
|
args.sort = opts.sort;
|
|
41191
|
+
if (opts.taxIdStatus !== void 0)
|
|
41192
|
+
args.tax_id_status = opts.taxIdStatus;
|
|
41176
41193
|
if (opts.name !== void 0)
|
|
41177
41194
|
args.name = opts.name;
|
|
41178
41195
|
if (opts["name.not"] !== void 0)
|
|
@@ -41357,6 +41374,7 @@ Examples:
|
|
|
41357
41374
|
"include_total",
|
|
41358
41375
|
"order",
|
|
41359
41376
|
"sort",
|
|
41377
|
+
"tax_id_status",
|
|
41360
41378
|
"name",
|
|
41361
41379
|
"name__not",
|
|
41362
41380
|
"name__isNull",
|
|
@@ -44294,7 +44312,7 @@ Examples:
|
|
|
44294
44312
|
queryParamKeys: []
|
|
44295
44313
|
});
|
|
44296
44314
|
});
|
|
44297
|
-
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44315
|
+
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--aggregator-filter-id <value>", `ID of an existing metering filter of the product's aggregator to attach to this price configuration, instead of creating a new one with \`metering_filter\`.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44298
44316
|
Examples:
|
|
44299
44317
|
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
|
|
44300
44318
|
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --countries <countries> --price-book-id <price_book_id>
|
|
@@ -44313,6 +44331,8 @@ Examples:
|
|
|
44313
44331
|
args.type = opts.type;
|
|
44314
44332
|
if (opts.productId !== void 0)
|
|
44315
44333
|
args.product_id = opts.productId;
|
|
44334
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
44335
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
44316
44336
|
if (opts.allowOnPortal !== void 0)
|
|
44317
44337
|
args.allow_on_portal = true;
|
|
44318
44338
|
if (opts.countries !== void 0)
|
|
@@ -44726,12 +44746,12 @@ Quote status.
|
|
|
44726
44746
|
- \`draft\`: The quote is a draft.
|
|
44727
44747
|
- \`approved\`: The quote is approved and ready to be sent to the customer.
|
|
44728
44748
|
- \`pending_signature\`: The quote is awaiting the customer's signature.
|
|
44729
|
-
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44749
|
+
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44730
44750
|
|
|
44731
44751
|
- \`all\`: Display all pricing tiers.
|
|
44732
44752
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
44733
44753
|
- \`none\`: Hide all pricing tiers.
|
|
44734
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
44754
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
44735
44755
|
Examples:
|
|
44736
44756
|
hyperline quotes create --customer-id <customer_id>
|
|
44737
44757
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -44770,6 +44790,8 @@ Examples:
|
|
|
44770
44790
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
44771
44791
|
if (opts.displayPhaseValue !== void 0)
|
|
44772
44792
|
args.display_phase_value = opts.displayPhaseValue;
|
|
44793
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
44794
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
44773
44795
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
44774
44796
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
44775
44797
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
@@ -44784,6 +44806,8 @@ Examples:
|
|
|
44784
44806
|
args.expires_at = opts.expiresAt;
|
|
44785
44807
|
if (opts.amount !== void 0)
|
|
44786
44808
|
args.amount = Number(opts.amount);
|
|
44809
|
+
if (opts.contractValue !== void 0)
|
|
44810
|
+
args.contract_value = Number(opts.contractValue);
|
|
44787
44811
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
44788
44812
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
44789
44813
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -44799,7 +44823,7 @@ Examples:
|
|
|
44799
44823
|
queryParamKeys: []
|
|
44800
44824
|
});
|
|
44801
44825
|
});
|
|
44802
|
-
resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.is-null <value>", `number__isNull`).option("--number.is-not-null <value>", `number__isNotNull`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--type <value>", `type`).option("--
|
|
44826
|
+
resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.is-null <value>", `number__isNull`).option("--number.is-not-null <value>", `number__isNotNull`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--type <value>", `type`).option("--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", `
|
|
44803
44827
|
Examples:
|
|
44804
44828
|
hyperline quotes list
|
|
44805
44829
|
hyperline quotes list --take <take> --id <id>`).action(async (opts) => {
|
|
@@ -44895,20 +44919,6 @@ Examples:
|
|
|
44895
44919
|
args.crm_opportunity_id__endWith = opts["crmOpportunityId.endWith"];
|
|
44896
44920
|
if (opts.type !== void 0)
|
|
44897
44921
|
args.type = opts.type;
|
|
44898
|
-
if (opts["type.not"] !== void 0)
|
|
44899
|
-
args.type__not = opts["type.not"];
|
|
44900
|
-
if (opts["type.isNull"] !== void 0)
|
|
44901
|
-
args.type__isNull = opts["type.isNull"];
|
|
44902
|
-
if (opts["type.isNotNull"] !== void 0)
|
|
44903
|
-
args.type__isNotNull = opts["type.isNotNull"];
|
|
44904
|
-
if (opts["type.equals"] !== void 0)
|
|
44905
|
-
args.type__equals = opts["type.equals"];
|
|
44906
|
-
if (opts["type.contains"] !== void 0)
|
|
44907
|
-
args.type__contains = opts["type.contains"];
|
|
44908
|
-
if (opts["type.startsWith"] !== void 0)
|
|
44909
|
-
args.type__startsWith = opts["type.startsWith"];
|
|
44910
|
-
if (opts["type.endWith"] !== void 0)
|
|
44911
|
-
args.type__endWith = opts["type.endWith"];
|
|
44912
44922
|
if (opts.updatedAt !== void 0)
|
|
44913
44923
|
args.updated_at = opts.updatedAt;
|
|
44914
44924
|
if (opts["updatedAt.not"] !== void 0)
|
|
@@ -44981,13 +44991,6 @@ Examples:
|
|
|
44981
44991
|
"crm_opportunity_id__startsWith",
|
|
44982
44992
|
"crm_opportunity_id__endWith",
|
|
44983
44993
|
"type",
|
|
44984
|
-
"type__not",
|
|
44985
|
-
"type__isNull",
|
|
44986
|
-
"type__isNotNull",
|
|
44987
|
-
"type__equals",
|
|
44988
|
-
"type__contains",
|
|
44989
|
-
"type__startsWith",
|
|
44990
|
-
"type__endWith",
|
|
44991
44994
|
"updated_at",
|
|
44992
44995
|
"updated_at__not",
|
|
44993
44996
|
"updated_at__isNull",
|
|
@@ -45018,12 +45021,12 @@ Examples:
|
|
|
45018
45021
|
queryParamKeys: []
|
|
45019
45022
|
});
|
|
45020
45023
|
});
|
|
45021
|
-
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
45024
|
+
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value. Set to \`null\` to go back to the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
45022
45025
|
|
|
45023
45026
|
- \`all\`: Display all pricing tiers.
|
|
45024
45027
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
45025
45028
|
- \`none\`: Hide all pricing tiers.
|
|
45026
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
45029
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
45027
45030
|
Examples:
|
|
45028
45031
|
hyperline quotes update --id <id>
|
|
45029
45032
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -45058,6 +45061,8 @@ Examples:
|
|
|
45058
45061
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
45059
45062
|
if (opts.displayPhaseValue !== void 0)
|
|
45060
45063
|
args.display_phase_value = opts.displayPhaseValue;
|
|
45064
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
45065
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
45061
45066
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
45062
45067
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
45063
45068
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
@@ -45072,6 +45077,8 @@ Examples:
|
|
|
45072
45077
|
args.expires_at = opts.expiresAt;
|
|
45073
45078
|
if (opts.amount !== void 0)
|
|
45074
45079
|
args.amount = Number(opts.amount);
|
|
45080
|
+
if (opts.contractValue !== void 0)
|
|
45081
|
+
args.contract_value = Number(opts.contractValue);
|
|
45075
45082
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
45076
45083
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
45077
45084
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -45149,6 +45156,25 @@ Examples:
|
|
|
45149
45156
|
queryParamKeys: []
|
|
45150
45157
|
});
|
|
45151
45158
|
});
|
|
45159
|
+
resource.command("redraft").description(`Switch a quote back to draft so its subscription or invoice configuration can be updated. Works on quotes pending approval, with changes requested, approved, or awaiting signature. Cancels pending approval requests and the signature request; the quote must then be finalized again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45160
|
+
Examples:
|
|
45161
|
+
hyperline quotes redraft --id <id>
|
|
45162
|
+
hyperline quotes redraft --id <id> --output json`).action(async (opts) => {
|
|
45163
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45164
|
+
if (!ctx) {
|
|
45165
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45166
|
+
process.exit(1);
|
|
45167
|
+
}
|
|
45168
|
+
const args = {};
|
|
45169
|
+
if (opts.id !== void 0)
|
|
45170
|
+
args.id = opts.id;
|
|
45171
|
+
await ctx.execute({
|
|
45172
|
+
method: "POST",
|
|
45173
|
+
path: "/v1/quotes/{id}/redraft",
|
|
45174
|
+
args,
|
|
45175
|
+
queryParamKeys: []
|
|
45176
|
+
});
|
|
45177
|
+
});
|
|
45152
45178
|
resource.command("send").description(`Send a quote by email for customer signature. Requires the quote to be approved first.`).requiredOption("--id <value>", `id parameter`).option("--email <value>", `Email address to which the quote will be sent for signature. Required unless the quote has signers, in which case the email goes to the signers of the current step and this field is ignored.`).option("--message <value>", `Custom message used in the email content.`).addHelpText("after", `
|
|
45153
45179
|
Examples:
|
|
45154
45180
|
hyperline quotes send --id <id>
|
|
@@ -45842,7 +45868,7 @@ Examples:
|
|
|
45842
45868
|
queryParamKeys: []
|
|
45843
45869
|
});
|
|
45844
45870
|
});
|
|
45845
|
-
resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, custom_properties. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
|
|
45871
|
+
resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, cancel_at, custom_properties, and the active contract: contract_start__gte/__lte, contract_end__gte/__lte, renew_automatically. For upcoming renewals, combine contract_end__gte/__lte with renew_automatically, plus cancel_at for scheduled cancellations. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
|
|
45846
45872
|
Subscription status filter.
|
|
45847
45873
|
|
|
45848
45874
|
- \`active\`, \`pending\`, \`paused\`, \`errored\`, \`cancelled\`, \`draft\`, \`voided\`, \`archived\`: match that status.
|
|
@@ -45851,7 +45877,7 @@ Subscription status filter.
|
|
|
45851
45877
|
- \`any\`: every status, no exclusion.
|
|
45852
45878
|
|
|
45853
45879
|
Use \`status__in\` with comma-separated values to combine statuses. When the filter is omitted, \`draft\`, \`voided\`, \`cancelled\` and \`archived\` subscriptions are excluded.
|
|
45854
|
-
`).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--custom-properties <value>", `custom_properties`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
45880
|
+
`).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--custom-properties <value>", `custom_properties`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).option("--cancel-at <value>", `cancel_at`).option("--cancel-at.not <value>", `cancel_at__not`).option("--cancel-at.is-null <value>", `cancel_at__isNull`).option("--cancel-at.is-not-null <value>", `cancel_at__isNotNull`).option("--cancel-at.equals <value>", `cancel_at__equals`).option("--cancel-at.lt <value>", `cancel_at__lt`).option("--cancel-at.lte <value>", `cancel_at__lte`).option("--cancel-at.gt <value>", `cancel_at__gt`).option("--cancel-at.gte <value>", `cancel_at__gte`).option("--contract-start.gte <value>", `Return only subscriptions whose active contract starts on or after this date.`).option("--contract-start.lte <value>", `Return only subscriptions whose active contract starts on or before this date.`).option("--contract-end.gte <value>", `Return only subscriptions whose active contract ends on or after this date.`).option("--contract-end.lte <value>", `Return only subscriptions whose active contract ends on or before this date.`).option("--renew-automatically <value>", `Return only subscriptions whose active contract renews automatically (\`true\`) or not (\`false\`).`).addHelpText("after", `
|
|
45855
45881
|
Examples:
|
|
45856
45882
|
hyperline subscriptions list
|
|
45857
45883
|
hyperline subscriptions list --take <take> --activation-strategy <activation_strategy>`).action(async (opts) => {
|
|
@@ -45975,6 +46001,34 @@ Examples:
|
|
|
45975
46001
|
args.updated_at__gt = opts["updatedAt.gt"];
|
|
45976
46002
|
if (opts["updatedAt.gte"] !== void 0)
|
|
45977
46003
|
args.updated_at__gte = opts["updatedAt.gte"];
|
|
46004
|
+
if (opts.cancelAt !== void 0)
|
|
46005
|
+
args.cancel_at = opts.cancelAt;
|
|
46006
|
+
if (opts["cancelAt.not"] !== void 0)
|
|
46007
|
+
args.cancel_at__not = opts["cancelAt.not"];
|
|
46008
|
+
if (opts["cancelAt.isNull"] !== void 0)
|
|
46009
|
+
args.cancel_at__isNull = opts["cancelAt.isNull"];
|
|
46010
|
+
if (opts["cancelAt.isNotNull"] !== void 0)
|
|
46011
|
+
args.cancel_at__isNotNull = opts["cancelAt.isNotNull"];
|
|
46012
|
+
if (opts["cancelAt.equals"] !== void 0)
|
|
46013
|
+
args.cancel_at__equals = opts["cancelAt.equals"];
|
|
46014
|
+
if (opts["cancelAt.lt"] !== void 0)
|
|
46015
|
+
args.cancel_at__lt = opts["cancelAt.lt"];
|
|
46016
|
+
if (opts["cancelAt.lte"] !== void 0)
|
|
46017
|
+
args.cancel_at__lte = opts["cancelAt.lte"];
|
|
46018
|
+
if (opts["cancelAt.gt"] !== void 0)
|
|
46019
|
+
args.cancel_at__gt = opts["cancelAt.gt"];
|
|
46020
|
+
if (opts["cancelAt.gte"] !== void 0)
|
|
46021
|
+
args.cancel_at__gte = opts["cancelAt.gte"];
|
|
46022
|
+
if (opts["contractStart.gte"] !== void 0)
|
|
46023
|
+
args.contract_start__gte = opts["contractStart.gte"];
|
|
46024
|
+
if (opts["contractStart.lte"] !== void 0)
|
|
46025
|
+
args.contract_start__lte = opts["contractStart.lte"];
|
|
46026
|
+
if (opts["contractEnd.gte"] !== void 0)
|
|
46027
|
+
args.contract_end__gte = opts["contractEnd.gte"];
|
|
46028
|
+
if (opts["contractEnd.lte"] !== void 0)
|
|
46029
|
+
args.contract_end__lte = opts["contractEnd.lte"];
|
|
46030
|
+
if (opts.renewAutomatically !== void 0)
|
|
46031
|
+
args.renew_automatically = opts.renewAutomatically;
|
|
45978
46032
|
if (opts.take !== void 0)
|
|
45979
46033
|
args.take = Number(opts.take);
|
|
45980
46034
|
if (opts.skip !== void 0)
|
|
@@ -46042,7 +46096,21 @@ Examples:
|
|
|
46042
46096
|
"updated_at__lt",
|
|
46043
46097
|
"updated_at__lte",
|
|
46044
46098
|
"updated_at__gt",
|
|
46045
|
-
"updated_at__gte"
|
|
46099
|
+
"updated_at__gte",
|
|
46100
|
+
"cancel_at",
|
|
46101
|
+
"cancel_at__not",
|
|
46102
|
+
"cancel_at__isNull",
|
|
46103
|
+
"cancel_at__isNotNull",
|
|
46104
|
+
"cancel_at__equals",
|
|
46105
|
+
"cancel_at__lt",
|
|
46106
|
+
"cancel_at__lte",
|
|
46107
|
+
"cancel_at__gt",
|
|
46108
|
+
"cancel_at__gte",
|
|
46109
|
+
"contract_start__gte",
|
|
46110
|
+
"contract_start__lte",
|
|
46111
|
+
"contract_end__gte",
|
|
46112
|
+
"contract_end__lte",
|
|
46113
|
+
"renew_automatically"
|
|
46046
46114
|
]
|
|
46047
46115
|
});
|
|
46048
46116
|
});
|
|
@@ -63297,6 +63365,8 @@ var de = {
|
|
|
63297
63365
|
"einvoicing.paymentFromWallet": "Zahlung aus Guthaben",
|
|
63298
63366
|
"einvoicing.paymentProcessed": "Zahlung verarbeitet",
|
|
63299
63367
|
"einvoicing.paymentReceived": "Zahlung erhalten",
|
|
63368
|
+
"invoices.minimumFee.adjustmentName": "Anpassung der Mindestgeb\xFChr",
|
|
63369
|
+
"invoices.minimumFee.name": "Mindestgeb\xFChr",
|
|
63300
63370
|
"invoices.outstandingProduct.description": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{date}}",
|
|
63301
63371
|
"invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
|
|
63302
63372
|
"invoices.outstandingProduct.name": "Offener Saldo",
|
|
@@ -63330,6 +63400,8 @@ var en = {
|
|
|
63330
63400
|
"creditNotes.refundChargeName": "Refund for invoice",
|
|
63331
63401
|
"credits.bundleOf": "{{productName}} - Pack of {{creditCount}} credits",
|
|
63332
63402
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
63403
|
+
"invoices.minimumFee.adjustmentName": "Minimum fee adjustment",
|
|
63404
|
+
"invoices.minimumFee.name": "Minimum fee",
|
|
63333
63405
|
"invoices.outstandingProduct.description": "Unpaid amount from the invoice{{invoiceNumber}} emitted on {{date}}",
|
|
63334
63406
|
"invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
|
|
63335
63407
|
"invoices.outstandingProduct.name": "Outstanding balance",
|
|
@@ -63393,6 +63465,8 @@ var es = {
|
|
|
63393
63465
|
"einvoicing.paymentFromWallet": "Pago desde el monedero",
|
|
63394
63466
|
"einvoicing.paymentProcessed": "Pago procesado",
|
|
63395
63467
|
"einvoicing.paymentReceived": "Pago recibido",
|
|
63468
|
+
"invoices.minimumFee.adjustmentName": "Ajuste del cargo m\xEDnimo",
|
|
63469
|
+
"invoices.minimumFee.name": "Cargo m\xEDnimo",
|
|
63396
63470
|
"invoices.outstandingProduct.description": "Monto pendiente de la factura{{invoiceNumber}} emitida el {{date}}",
|
|
63397
63471
|
"invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
|
|
63398
63472
|
"invoices.outstandingProduct.name": "Saldo pendiente",
|
|
@@ -63441,6 +63515,8 @@ var fr = {
|
|
|
63441
63515
|
"einvoicing.paymentFromWallet": "Paiement depuis le portefeuille",
|
|
63442
63516
|
"einvoicing.paymentProcessed": "Paiement effectu\xE9",
|
|
63443
63517
|
"einvoicing.paymentReceived": "Paiement re\xE7u",
|
|
63518
|
+
"invoices.minimumFee.adjustmentName": "Ajustement des frais minimums",
|
|
63519
|
+
"invoices.minimumFee.name": "Frais minimums",
|
|
63444
63520
|
"invoices.outstandingProduct.description": "Montant impay\xE9 de la facture{{invoiceNumber}} \xE9mise le {{date}}",
|
|
63445
63521
|
"invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
|
|
63446
63522
|
"invoices.outstandingProduct.name": "Solde impay\xE9",
|
|
@@ -63489,6 +63565,8 @@ var it = {
|
|
|
63489
63565
|
"einvoicing.paymentFromWallet": "Pagamento dal portafoglio",
|
|
63490
63566
|
"einvoicing.paymentProcessed": "Pagamento elaborato",
|
|
63491
63567
|
"einvoicing.paymentReceived": "Pagamento ricevuto",
|
|
63568
|
+
"invoices.minimumFee.adjustmentName": "Adeguamento all\u2019importo minimo",
|
|
63569
|
+
"invoices.minimumFee.name": "Importo minimo",
|
|
63492
63570
|
"invoices.outstandingProduct.description": "Importo insoluto della fattura{{invoiceNumber}} emessa il {{date}}",
|
|
63493
63571
|
"invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
|
|
63494
63572
|
"invoices.outstandingProduct.name": "Saldo insoluto",
|
|
@@ -63537,6 +63615,8 @@ var lt = {
|
|
|
63537
63615
|
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
|
|
63538
63616
|
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63539
63617
|
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63618
|
+
"invoices.minimumFee.adjustmentName": "Minimalaus mokes\u010Dio koregavimas",
|
|
63619
|
+
"invoices.minimumFee.name": "Minimalus mokestis",
|
|
63540
63620
|
"invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
|
|
63541
63621
|
"invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
|
|
63542
63622
|
"invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
|
|
@@ -63585,6 +63665,8 @@ var nl = {
|
|
|
63585
63665
|
"einvoicing.paymentFromWallet": "Betaling uit tegoed",
|
|
63586
63666
|
"einvoicing.paymentProcessed": "Betaling verwerkt",
|
|
63587
63667
|
"einvoicing.paymentReceived": "Betaling ontvangen",
|
|
63668
|
+
"invoices.minimumFee.adjustmentName": "Aanpassing minimumbedrag",
|
|
63669
|
+
"invoices.minimumFee.name": "Minimumbedrag",
|
|
63588
63670
|
"invoices.outstandingProduct.description": "Onbetaald bedrag van de factuur{{invoiceNumber}} uitgegeven op {{date}}",
|
|
63589
63671
|
"invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
|
|
63590
63672
|
"invoices.outstandingProduct.name": "Openstaand saldo",
|
|
@@ -63633,6 +63715,8 @@ var pl = {
|
|
|
63633
63715
|
"einvoicing.paymentFromWallet": "P\u0142atno\u015B\u0107 z portfela",
|
|
63634
63716
|
"einvoicing.paymentProcessed": "P\u0142atno\u015B\u0107 przetworzona",
|
|
63635
63717
|
"einvoicing.paymentReceived": "P\u0142atno\u015B\u0107 otrzymana",
|
|
63718
|
+
"invoices.minimumFee.adjustmentName": "Wyr\xF3wnanie do op\u0142aty minimalnej",
|
|
63719
|
+
"invoices.minimumFee.name": "Op\u0142ata minimalna",
|
|
63636
63720
|
"invoices.outstandingProduct.description": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} wystawionej {{date}}",
|
|
63637
63721
|
"invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
|
|
63638
63722
|
"invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
|
|
@@ -63681,6 +63765,8 @@ var pt = {
|
|
|
63681
63765
|
"einvoicing.paymentFromWallet": "Pagamento da carteira",
|
|
63682
63766
|
"einvoicing.paymentProcessed": "Pagamento processado",
|
|
63683
63767
|
"einvoicing.paymentReceived": "Pagamento recebido",
|
|
63768
|
+
"invoices.minimumFee.adjustmentName": "Ajuste do valor m\xEDnimo",
|
|
63769
|
+
"invoices.minimumFee.name": "Valor m\xEDnimo",
|
|
63684
63770
|
"invoices.outstandingProduct.description": "Valor em aberto da fatura{{invoiceNumber}} emitida em {{date}}",
|
|
63685
63771
|
"invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
|
|
63686
63772
|
"invoices.outstandingProduct.name": "Saldo em aberto",
|
|
@@ -63869,6 +63955,223 @@ import * as winston from "winston";
|
|
|
63869
63955
|
|
|
63870
63956
|
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
63871
63957
|
import prune from "json-prune";
|
|
63958
|
+
|
|
63959
|
+
// ../hyperline-monitoring/build/logger/formatting/logRedaction.js
|
|
63960
|
+
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
63961
|
+
"accesstoken",
|
|
63962
|
+
"apitoken",
|
|
63963
|
+
"assertion",
|
|
63964
|
+
"authorization",
|
|
63965
|
+
"authtoken",
|
|
63966
|
+
"cardnumber",
|
|
63967
|
+
"clientassertion",
|
|
63968
|
+
"codeverifier",
|
|
63969
|
+
"connectionurl",
|
|
63970
|
+
"consumerkey",
|
|
63971
|
+
"cookie",
|
|
63972
|
+
"credential",
|
|
63973
|
+
"credentials",
|
|
63974
|
+
"iban",
|
|
63975
|
+
"idtoken",
|
|
63976
|
+
"privatekey",
|
|
63977
|
+
"publictoken",
|
|
63978
|
+
"refreshtoken",
|
|
63979
|
+
"sessiontoken",
|
|
63980
|
+
"token",
|
|
63981
|
+
"tokenid",
|
|
63982
|
+
"verificationcode"
|
|
63983
|
+
]);
|
|
63984
|
+
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password|passphrase|apikey)$/;
|
|
63985
|
+
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
|
|
63986
|
+
var URL_ONLY_REDACTED_KEYS = /* @__PURE__ */ new Set(["key"]);
|
|
63987
|
+
var OAUTH_CODE_KEY = "code";
|
|
63988
|
+
var OAUTH_CODE_CONTEXT_KEYS = ["state", "grant_type"];
|
|
63989
|
+
var REDACTED_VALUE = "<redacted>";
|
|
63990
|
+
var TRUNCATED_VALUE = "[TRUNCATED: not redacted]";
|
|
63991
|
+
var TRUNCATED_KEY = "[TRUNCATED]";
|
|
63992
|
+
var MAX_REDACTION_DEPTH = 6;
|
|
63993
|
+
var MAX_ARRAY_ENTRIES = 50;
|
|
63994
|
+
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
63995
|
+
var MAX_VISITED_NODES = 5e3;
|
|
63996
|
+
var MAX_CONTAINER_ENTRIES = 1e3;
|
|
63997
|
+
var MAX_STRING_CHARACTERS = 256e3;
|
|
63998
|
+
function redactLogBody({ body }) {
|
|
63999
|
+
return redactValue({
|
|
64000
|
+
value: body,
|
|
64001
|
+
depth: MAX_REDACTION_DEPTH,
|
|
64002
|
+
budget: {
|
|
64003
|
+
remainingNodes: MAX_VISITED_NODES,
|
|
64004
|
+
remainingChars: MAX_STRING_CHARACTERS
|
|
64005
|
+
}
|
|
64006
|
+
});
|
|
64007
|
+
}
|
|
64008
|
+
function redactLogUrl({ url: url2 }) {
|
|
64009
|
+
const queryIndex = url2.indexOf("?");
|
|
64010
|
+
if (queryIndex === -1) {
|
|
64011
|
+
return url2;
|
|
64012
|
+
}
|
|
64013
|
+
if (url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
64014
|
+
return `${url2.slice(0, queryIndex)}?${TRUNCATED_VALUE}`;
|
|
64015
|
+
}
|
|
64016
|
+
const redactedQuery = redactFormEncoded({
|
|
64017
|
+
text: url2.slice(queryIndex + 1),
|
|
64018
|
+
extraRedactedKeys: URL_ONLY_REDACTED_KEYS
|
|
64019
|
+
});
|
|
64020
|
+
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
64021
|
+
}
|
|
64022
|
+
function redactValue({ value, depth, budget }) {
|
|
64023
|
+
if (isOpaqueObject({ value })) {
|
|
64024
|
+
return replaceOpaqueObject({ value });
|
|
64025
|
+
}
|
|
64026
|
+
if (typeof value === "string") {
|
|
64027
|
+
if (value.length > budget.remainingChars) {
|
|
64028
|
+
return TRUNCATED_VALUE;
|
|
64029
|
+
}
|
|
64030
|
+
budget.remainingChars -= value.length;
|
|
64031
|
+
}
|
|
64032
|
+
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
64033
|
+
return isInspectable({ value }) ? TRUNCATED_VALUE : value;
|
|
64034
|
+
}
|
|
64035
|
+
budget.remainingNodes -= 1;
|
|
64036
|
+
if (typeof value === "string") {
|
|
64037
|
+
return redactString({ text: value, budget });
|
|
64038
|
+
}
|
|
64039
|
+
if (value instanceof URLSearchParams) {
|
|
64040
|
+
return redactValue({ value: value.toString(), depth, budget });
|
|
64041
|
+
}
|
|
64042
|
+
if (Array.isArray(value)) {
|
|
64043
|
+
return redactArray({ items: value, depth, budget });
|
|
64044
|
+
}
|
|
64045
|
+
if (isPlainObject2(value)) {
|
|
64046
|
+
return redactObject({ record: value, depth, budget });
|
|
64047
|
+
}
|
|
64048
|
+
return value;
|
|
64049
|
+
}
|
|
64050
|
+
function isOpaqueObject({ value }) {
|
|
64051
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && !isPlainObject2(value) && !(value instanceof URLSearchParams);
|
|
64052
|
+
}
|
|
64053
|
+
function replaceOpaqueObject({ value }) {
|
|
64054
|
+
if (typeof value !== "object" || value === null || value instanceof Date) {
|
|
64055
|
+
return value;
|
|
64056
|
+
}
|
|
64057
|
+
if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
64058
|
+
return `[BINARY ${value.byteLength} bytes]`;
|
|
64059
|
+
}
|
|
64060
|
+
if (value instanceof Blob) {
|
|
64061
|
+
return `[BINARY ${value.size} bytes]`;
|
|
64062
|
+
}
|
|
64063
|
+
if (value instanceof FormData || typeof Reflect.get(value, "pipe") === "function") {
|
|
64064
|
+
return "[BINARY stream]";
|
|
64065
|
+
}
|
|
64066
|
+
return TRUNCATED_VALUE;
|
|
64067
|
+
}
|
|
64068
|
+
function redactArray({ items, depth, budget }) {
|
|
64069
|
+
const isTruncated = items.length > MAX_ARRAY_ENTRIES;
|
|
64070
|
+
const keptItems = isTruncated ? items.slice(0, MAX_ARRAY_ENTRIES) : items;
|
|
64071
|
+
let redactedItems;
|
|
64072
|
+
for (const [index, item] of keptItems.entries()) {
|
|
64073
|
+
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
64074
|
+
if (redactedItem !== item) {
|
|
64075
|
+
redactedItems ??= [...keptItems];
|
|
64076
|
+
redactedItems[index] = redactedItem;
|
|
64077
|
+
}
|
|
64078
|
+
}
|
|
64079
|
+
const result = redactedItems ?? keptItems;
|
|
64080
|
+
return isTruncated ? [...result, TRUNCATED_VALUE] : result;
|
|
64081
|
+
}
|
|
64082
|
+
function redactObject({ record: record2, depth, budget }) {
|
|
64083
|
+
const redactedEntries = /* @__PURE__ */ new Map();
|
|
64084
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => Object.hasOwn(record2, contextKey));
|
|
64085
|
+
const keptKeys = [];
|
|
64086
|
+
let isTruncated = false;
|
|
64087
|
+
for (const key in record2) {
|
|
64088
|
+
if (!Object.hasOwn(record2, key)) {
|
|
64089
|
+
continue;
|
|
64090
|
+
}
|
|
64091
|
+
if (keptKeys.length >= MAX_CONTAINER_ENTRIES || key.length > budget.remainingChars) {
|
|
64092
|
+
isTruncated = true;
|
|
64093
|
+
break;
|
|
64094
|
+
}
|
|
64095
|
+
budget.remainingChars -= key.length;
|
|
64096
|
+
keptKeys.push(key);
|
|
64097
|
+
const nestedValue = record2[key];
|
|
64098
|
+
const isSensitiveKey = isRedactedKey({ key }) || carriesOAuthCode && key === OAUTH_CODE_KEY;
|
|
64099
|
+
const shouldRedact = isSensitiveKey && nestedValue != null && typeof nestedValue !== "boolean";
|
|
64100
|
+
if (shouldRedact) {
|
|
64101
|
+
budget.remainingNodes -= 1;
|
|
64102
|
+
}
|
|
64103
|
+
const redactedNestedValue = shouldRedact ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
64104
|
+
if (redactedNestedValue !== nestedValue) {
|
|
64105
|
+
redactedEntries.set(key, redactedNestedValue);
|
|
64106
|
+
}
|
|
64107
|
+
}
|
|
64108
|
+
if (isTruncated) {
|
|
64109
|
+
const keptRecord = {};
|
|
64110
|
+
for (const key of keptKeys) {
|
|
64111
|
+
keptRecord[key] = redactedEntries.has(key) ? redactedEntries.get(key) : record2[key];
|
|
64112
|
+
}
|
|
64113
|
+
keptRecord[TRUNCATED_KEY] = TRUNCATED_VALUE;
|
|
64114
|
+
return keptRecord;
|
|
64115
|
+
}
|
|
64116
|
+
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
64117
|
+
}
|
|
64118
|
+
function redactString({ text, budget }) {
|
|
64119
|
+
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
64120
|
+
return TRUNCATED_VALUE;
|
|
64121
|
+
}
|
|
64122
|
+
if (!isInspectable({ value: text })) {
|
|
64123
|
+
return text;
|
|
64124
|
+
}
|
|
64125
|
+
const trimmedText = text.trim();
|
|
64126
|
+
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
64127
|
+
try {
|
|
64128
|
+
const parsedValue = JSON.parse(trimmedText);
|
|
64129
|
+
const redactedValue = redactValue({
|
|
64130
|
+
value: parsedValue,
|
|
64131
|
+
depth: MAX_REDACTION_DEPTH,
|
|
64132
|
+
budget
|
|
64133
|
+
});
|
|
64134
|
+
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
64135
|
+
} catch {
|
|
64136
|
+
return REDACTED_KEY_CANDIDATE_PATTERN.test(text) ? TRUNCATED_VALUE : redactFormEncoded({ text }) ?? text;
|
|
64137
|
+
}
|
|
64138
|
+
}
|
|
64139
|
+
return redactFormEncoded({ text }) ?? text;
|
|
64140
|
+
}
|
|
64141
|
+
function redactFormEncoded({ text, extraRedactedKeys }) {
|
|
64142
|
+
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
64143
|
+
return void 0;
|
|
64144
|
+
}
|
|
64145
|
+
const params = new URLSearchParams(text);
|
|
64146
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => params.has(contextKey));
|
|
64147
|
+
let hasRedactedParam = false;
|
|
64148
|
+
for (const key of new Set(params.keys())) {
|
|
64149
|
+
if (isRedactedKey({ key }) || extraRedactedKeys?.has(key.toLowerCase()) || carriesOAuthCode && key === OAUTH_CODE_KEY) {
|
|
64150
|
+
params.set(key, REDACTED_VALUE);
|
|
64151
|
+
hasRedactedParam = true;
|
|
64152
|
+
}
|
|
64153
|
+
}
|
|
64154
|
+
return hasRedactedParam ? params.toString() : void 0;
|
|
64155
|
+
}
|
|
64156
|
+
function isRedactedKey({ key }) {
|
|
64157
|
+
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
64158
|
+
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
64159
|
+
}
|
|
64160
|
+
function isInspectable({ value }) {
|
|
64161
|
+
if (typeof value === "string") {
|
|
64162
|
+
return value.length > MAX_PARSED_STRING_LENGTH || /^\s*[{[]/.test(value) || value.includes("=") && REDACTED_KEY_CANDIDATE_PATTERN.test(value);
|
|
64163
|
+
}
|
|
64164
|
+
return value instanceof URLSearchParams || Array.isArray(value) || isPlainObject2(value);
|
|
64165
|
+
}
|
|
64166
|
+
function isPlainObject2(value) {
|
|
64167
|
+
if (typeof value !== "object" || value === null) {
|
|
64168
|
+
return false;
|
|
64169
|
+
}
|
|
64170
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64171
|
+
return prototype === Object.prototype || prototype === null;
|
|
64172
|
+
}
|
|
64173
|
+
|
|
64174
|
+
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
63872
64175
|
var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
|
|
63873
64176
|
function jsonFormat(info) {
|
|
63874
64177
|
const prunedInfo = JSON.parse(prune(info));
|
|
@@ -63929,14 +64232,106 @@ function transformPrune(info) {
|
|
|
63929
64232
|
});
|
|
63930
64233
|
return info;
|
|
63931
64234
|
}
|
|
64235
|
+
var MAX_AXIOS_ERROR_DEPTH = 5;
|
|
64236
|
+
var MAX_AXIOS_ERROR_CONTAINER_ENTRIES = 1e3;
|
|
64237
|
+
var MAX_AXIOS_ERROR_VISITED_NODES = 5e3;
|
|
64238
|
+
var REDACTED_BODY_KEYS = /* @__PURE__ */ new Set(["requestBody", "responseBody"]);
|
|
63932
64239
|
function transformAxiosError(info) {
|
|
63933
|
-
|
|
63934
|
-
|
|
63935
|
-
|
|
64240
|
+
let walk;
|
|
64241
|
+
for (const [key, value] of Object.entries(info)) {
|
|
64242
|
+
if (typeof value !== "object" || value === null || REDACTED_BODY_KEYS.has(key)) {
|
|
64243
|
+
continue;
|
|
63936
64244
|
}
|
|
63937
|
-
|
|
64245
|
+
walk ??= {
|
|
64246
|
+
formatted: /* @__PURE__ */ new Map(),
|
|
64247
|
+
remainingNodes: MAX_AXIOS_ERROR_VISITED_NODES
|
|
64248
|
+
};
|
|
64249
|
+
const formattedValue = formatNestedAxiosErrors({
|
|
64250
|
+
value,
|
|
64251
|
+
depth: MAX_AXIOS_ERROR_DEPTH,
|
|
64252
|
+
walk
|
|
64253
|
+
});
|
|
64254
|
+
if (formattedValue !== value) {
|
|
64255
|
+
info[key] = formattedValue;
|
|
64256
|
+
}
|
|
64257
|
+
}
|
|
63938
64258
|
return info;
|
|
63939
64259
|
}
|
|
64260
|
+
function formatNestedAxiosErrors({ value, depth, walk }) {
|
|
64261
|
+
if (typeof value !== "object" || value === null) {
|
|
64262
|
+
return value;
|
|
64263
|
+
}
|
|
64264
|
+
if (walk.formatted.has(value)) {
|
|
64265
|
+
return walk.formatted.get(value);
|
|
64266
|
+
}
|
|
64267
|
+
if (Reflect.get(value, "name") === "AxiosError") {
|
|
64268
|
+
const formattedError = walk.remainingNodes > 0 ? formatAxiosError(value) : summarizeAxiosError({ error: value });
|
|
64269
|
+
walk.remainingNodes -= 1;
|
|
64270
|
+
walk.formatted.set(value, formattedError);
|
|
64271
|
+
return formattedError;
|
|
64272
|
+
}
|
|
64273
|
+
const isWalkable = Array.isArray(value) || value instanceof Error || isPlainRecord(value);
|
|
64274
|
+
if (!isWalkable || depth <= 0 || walk.remainingNodes <= 0) {
|
|
64275
|
+
return value;
|
|
64276
|
+
}
|
|
64277
|
+
walk.formatted.set(value, "[Circular]");
|
|
64278
|
+
walk.remainingNodes -= 1;
|
|
64279
|
+
const formattedValue = formatWalkableValue({ value, depth, walk });
|
|
64280
|
+
walk.formatted.set(value, formattedValue);
|
|
64281
|
+
return formattedValue;
|
|
64282
|
+
}
|
|
64283
|
+
function summarizeAxiosError({ error: error48 }) {
|
|
64284
|
+
return {
|
|
64285
|
+
name: Reflect.get(error48, "name"),
|
|
64286
|
+
message: Reflect.get(error48, "message"),
|
|
64287
|
+
code: Reflect.get(error48, "code")
|
|
64288
|
+
};
|
|
64289
|
+
}
|
|
64290
|
+
function formatWalkableValue({ value, depth, walk }) {
|
|
64291
|
+
if (Array.isArray(value)) {
|
|
64292
|
+
if (value.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64293
|
+
return value;
|
|
64294
|
+
}
|
|
64295
|
+
let formattedItems;
|
|
64296
|
+
for (const [index, item] of value.entries()) {
|
|
64297
|
+
const formattedItem = formatNestedAxiosErrors({
|
|
64298
|
+
value: item,
|
|
64299
|
+
depth: depth - 1,
|
|
64300
|
+
walk
|
|
64301
|
+
});
|
|
64302
|
+
if (formattedItem !== item) {
|
|
64303
|
+
formattedItems ??= [...value];
|
|
64304
|
+
formattedItems[index] = formattedItem;
|
|
64305
|
+
}
|
|
64306
|
+
}
|
|
64307
|
+
return formattedItems ?? value;
|
|
64308
|
+
}
|
|
64309
|
+
const keys = Object.keys(value);
|
|
64310
|
+
if (keys.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64311
|
+
return value;
|
|
64312
|
+
}
|
|
64313
|
+
const formattedEntries = /* @__PURE__ */ new Map();
|
|
64314
|
+
for (const key of keys) {
|
|
64315
|
+
const nestedValue = Reflect.get(value, key);
|
|
64316
|
+
const formattedNestedValue = formatNestedAxiosErrors({
|
|
64317
|
+
value: nestedValue,
|
|
64318
|
+
depth: depth - 1,
|
|
64319
|
+
walk
|
|
64320
|
+
});
|
|
64321
|
+
if (formattedNestedValue !== nestedValue) {
|
|
64322
|
+
formattedEntries.set(key, formattedNestedValue);
|
|
64323
|
+
}
|
|
64324
|
+
}
|
|
64325
|
+
if (formattedEntries.size === 0) {
|
|
64326
|
+
return value;
|
|
64327
|
+
}
|
|
64328
|
+
return {
|
|
64329
|
+
...value,
|
|
64330
|
+
// Error properties are not enumerable, so the spread would drop them.
|
|
64331
|
+
...value instanceof Error ? { name: value.name, message: value.message, stack: value.stack } : {},
|
|
64332
|
+
...Object.fromEntries(formattedEntries)
|
|
64333
|
+
};
|
|
64334
|
+
}
|
|
63940
64335
|
function formatAxiosError(error48) {
|
|
63941
64336
|
if (!isRecord(error48) || error48.name !== "AxiosError") {
|
|
63942
64337
|
return error48;
|
|
@@ -63949,9 +64344,9 @@ function formatAxiosError(error48) {
|
|
|
63949
64344
|
code: error48.code,
|
|
63950
64345
|
request: {
|
|
63951
64346
|
method: request?.method,
|
|
63952
|
-
url: request?.url,
|
|
64347
|
+
url: typeof request?.url === "string" ? redactLogUrl({ url: request.url }) : request?.url,
|
|
63953
64348
|
baseURL: request?.baseURL,
|
|
63954
|
-
params: request?.params,
|
|
64349
|
+
params: redactLogBody({ body: request?.params }),
|
|
63955
64350
|
headers: redactHeaders({ headers: request?.headers }),
|
|
63956
64351
|
"axios-retry": request?.["axios-retry"]
|
|
63957
64352
|
},
|
|
@@ -63959,7 +64354,7 @@ function formatAxiosError(error48) {
|
|
|
63959
64354
|
status: response?.status,
|
|
63960
64355
|
statusText: response?.statusText,
|
|
63961
64356
|
headers: redactHeaders({ headers: response?.headers }),
|
|
63962
|
-
data: response?.data
|
|
64357
|
+
data: redactLogBody({ body: response?.data })
|
|
63963
64358
|
}
|
|
63964
64359
|
};
|
|
63965
64360
|
}
|
|
@@ -63972,6 +64367,10 @@ function redactHeaders({ headers }) {
|
|
|
63972
64367
|
REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
|
|
63973
64368
|
]));
|
|
63974
64369
|
}
|
|
64370
|
+
function isPlainRecord(value) {
|
|
64371
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64372
|
+
return prototype === Object.prototype || prototype === null;
|
|
64373
|
+
}
|
|
63975
64374
|
function isRecord(value) {
|
|
63976
64375
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
63977
64376
|
}
|
|
@@ -64001,7 +64400,7 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
64001
64400
|
const responseMetadata = {
|
|
64002
64401
|
statusCode,
|
|
64003
64402
|
responseTime,
|
|
64004
|
-
responseBody,
|
|
64403
|
+
responseBody: redactLogBody({ body: responseBody }),
|
|
64005
64404
|
// Redacted so secrets (authorization/cookie/token/…) never reach the logs
|
|
64006
64405
|
// while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
|
|
64007
64406
|
responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
|
|
@@ -64014,14 +64413,15 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
64014
64413
|
}
|
|
64015
64414
|
function transform2(request) {
|
|
64016
64415
|
const method = request.method.toUpperCase();
|
|
64017
|
-
const
|
|
64416
|
+
const originalUrl = redactLogUrl({ url: request.originalUrl });
|
|
64417
|
+
const message = `${method} ${originalUrl}`;
|
|
64018
64418
|
const metadata = {};
|
|
64019
64419
|
metadata.method = method;
|
|
64020
|
-
metadata.url = request.url;
|
|
64021
|
-
metadata.path = request.path;
|
|
64420
|
+
metadata.url = redactLogUrl({ url: request.url });
|
|
64421
|
+
metadata.path = redactLogUrl({ url: request.path });
|
|
64022
64422
|
metadata.hostname = request.hostname;
|
|
64023
|
-
metadata.originalUrl =
|
|
64024
|
-
metadata.requestBody =
|
|
64423
|
+
metadata.originalUrl = originalUrl;
|
|
64424
|
+
metadata.requestBody = redactLogBody({ body: request.body });
|
|
64025
64425
|
metadata.routePath = transformUrlIntoRoutePath(request);
|
|
64026
64426
|
metadata.apiKeyEnd = request.headers["authorization"]?.slice(-6);
|
|
64027
64427
|
return { message, metadata };
|
|
@@ -64068,7 +64468,16 @@ function buildLoggerFactory({ config: config4, context }) {
|
|
|
64068
64468
|
const internalLogger = winston.createLogger({
|
|
64069
64469
|
transports: transports2,
|
|
64070
64470
|
defaultMeta,
|
|
64071
|
-
format: winston.format.combine(
|
|
64471
|
+
format: winston.format.combine(
|
|
64472
|
+
winston.format.splat(),
|
|
64473
|
+
winston.format(addMetadata({ getCorrelationId, getExecutionContext }))(),
|
|
64474
|
+
// Before pruning: json-prune would otherwise serialize a binary
|
|
64475
|
+
// `response.data` byte by byte before it is summarised (#6006).
|
|
64476
|
+
winston.format(transformAxiosError)(),
|
|
64477
|
+
winston.format(transformErrorEnrich)({ depth: 5 }),
|
|
64478
|
+
winston.format(transformPrune)(),
|
|
64479
|
+
winston.format.timestamp()
|
|
64480
|
+
),
|
|
64072
64481
|
exitOnError: false
|
|
64073
64482
|
});
|
|
64074
64483
|
function createLogger3({ serviceName }) {
|
|
@@ -66415,8 +66824,21 @@ import { deepEqual } from "fast-equals";
|
|
|
66415
66824
|
|
|
66416
66825
|
// ../hyperline-lib/build/utils/realignDatesToTimezone.js
|
|
66417
66826
|
var import_shared4 = __toESM(require_shared(), 1);
|
|
66418
|
-
var
|
|
66827
|
+
var MILLISECONDS_PER_HOUR = 60 * 60 * 1e3;
|
|
66828
|
+
var MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;
|
|
66419
66829
|
var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
|
|
66830
|
+
var dateRealignmentModeSchema = external_exports.enum([
|
|
66831
|
+
"utc_midnight_import",
|
|
66832
|
+
"dst_hour_drift",
|
|
66833
|
+
"month_start_drift",
|
|
66834
|
+
"manual_phase_end_midnight"
|
|
66835
|
+
]).default("utc_midnight_import");
|
|
66836
|
+
var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
|
|
66837
|
+
[23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66838
|
+
[LAST_MILLISECOND_OF_DAY - MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66839
|
+
[MILLISECONDS_PER_HOUR, -MILLISECONDS_PER_HOUR],
|
|
66840
|
+
[MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
|
|
66841
|
+
]);
|
|
66420
66842
|
|
|
66421
66843
|
// ../hyperline-lib/build/utils/api/filterBuilder.js
|
|
66422
66844
|
var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
|
|
@@ -66485,150 +66907,6 @@ var isAxiosError = axios.isAxiosError;
|
|
|
66485
66907
|
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
66486
66908
|
import axios2 from "axios";
|
|
66487
66909
|
import axiosRetry, { isNetworkOrIdempotentRequestError, retryAfter } from "axios-retry";
|
|
66488
|
-
|
|
66489
|
-
// ../hyperline-lib/build/httpClient/logRedaction.js
|
|
66490
|
-
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
66491
|
-
"accesstoken",
|
|
66492
|
-
"apikey",
|
|
66493
|
-
"apitoken",
|
|
66494
|
-
"assertion",
|
|
66495
|
-
"authtoken",
|
|
66496
|
-
"clientassertion",
|
|
66497
|
-
"codeverifier",
|
|
66498
|
-
"credentials",
|
|
66499
|
-
"idtoken",
|
|
66500
|
-
"privatekey",
|
|
66501
|
-
"refreshtoken",
|
|
66502
|
-
"sessiontoken",
|
|
66503
|
-
"token"
|
|
66504
|
-
]);
|
|
66505
|
-
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password)$/;
|
|
66506
|
-
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|password|assertion|verifier|credentials/i;
|
|
66507
|
-
var REDACTED_VALUE = "<redacted>";
|
|
66508
|
-
var MAX_REDACTION_DEPTH = 10;
|
|
66509
|
-
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
66510
|
-
var MAX_VISITED_NODES = 1e3;
|
|
66511
|
-
var MAX_CONTAINER_ENTRIES = MAX_VISITED_NODES;
|
|
66512
|
-
function redactLogBody({ body }) {
|
|
66513
|
-
return redactValue({
|
|
66514
|
-
value: body,
|
|
66515
|
-
depth: MAX_REDACTION_DEPTH,
|
|
66516
|
-
budget: { remainingNodes: MAX_VISITED_NODES }
|
|
66517
|
-
});
|
|
66518
|
-
}
|
|
66519
|
-
function redactLogUrl({ url: url2 }) {
|
|
66520
|
-
const queryIndex = url2.indexOf("?");
|
|
66521
|
-
if (queryIndex === -1 || url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
66522
|
-
return url2;
|
|
66523
|
-
}
|
|
66524
|
-
const redactedQuery = redactFormEncoded({ text: url2.slice(queryIndex + 1) });
|
|
66525
|
-
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
66526
|
-
}
|
|
66527
|
-
function redactValue({ value, depth, budget }) {
|
|
66528
|
-
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
66529
|
-
return value;
|
|
66530
|
-
}
|
|
66531
|
-
budget.remainingNodes -= 1;
|
|
66532
|
-
if (typeof value === "string") {
|
|
66533
|
-
return redactString({ text: value, budget });
|
|
66534
|
-
}
|
|
66535
|
-
if (value instanceof URLSearchParams) {
|
|
66536
|
-
return redactFormEncoded({ text: value.toString() }) ?? value;
|
|
66537
|
-
}
|
|
66538
|
-
if (Array.isArray(value)) {
|
|
66539
|
-
return redactArray({ items: value, depth, budget });
|
|
66540
|
-
}
|
|
66541
|
-
if (isPlainObject2(value)) {
|
|
66542
|
-
return redactObject({ record: value, depth, budget });
|
|
66543
|
-
}
|
|
66544
|
-
return value;
|
|
66545
|
-
}
|
|
66546
|
-
function redactArray({ items, depth, budget }) {
|
|
66547
|
-
if (items.length > MAX_CONTAINER_ENTRIES) {
|
|
66548
|
-
return items;
|
|
66549
|
-
}
|
|
66550
|
-
let redactedItems;
|
|
66551
|
-
for (const [index, item] of items.entries()) {
|
|
66552
|
-
if (budget.remainingNodes <= 0) {
|
|
66553
|
-
break;
|
|
66554
|
-
}
|
|
66555
|
-
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
66556
|
-
if (redactedItem !== item) {
|
|
66557
|
-
redactedItems ??= [...items];
|
|
66558
|
-
redactedItems[index] = redactedItem;
|
|
66559
|
-
}
|
|
66560
|
-
}
|
|
66561
|
-
return redactedItems ?? items;
|
|
66562
|
-
}
|
|
66563
|
-
function redactObject({ record: record2, depth, budget }) {
|
|
66564
|
-
const redactedEntries = /* @__PURE__ */ new Map();
|
|
66565
|
-
let entryCount = 0;
|
|
66566
|
-
for (const key in record2) {
|
|
66567
|
-
if (!Object.hasOwn(record2, key)) {
|
|
66568
|
-
continue;
|
|
66569
|
-
}
|
|
66570
|
-
entryCount += 1;
|
|
66571
|
-
if (entryCount > MAX_CONTAINER_ENTRIES) {
|
|
66572
|
-
return record2;
|
|
66573
|
-
}
|
|
66574
|
-
if (budget.remainingNodes <= 0) {
|
|
66575
|
-
break;
|
|
66576
|
-
}
|
|
66577
|
-
const nestedValue = record2[key];
|
|
66578
|
-
const redactedNestedValue = isRedactedKey({ key }) && nestedValue != null ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
66579
|
-
if (redactedNestedValue !== nestedValue) {
|
|
66580
|
-
redactedEntries.set(key, redactedNestedValue);
|
|
66581
|
-
}
|
|
66582
|
-
}
|
|
66583
|
-
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
66584
|
-
}
|
|
66585
|
-
function redactString({ text, budget }) {
|
|
66586
|
-
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
66587
|
-
return text;
|
|
66588
|
-
}
|
|
66589
|
-
const trimmedText = text.trim();
|
|
66590
|
-
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
66591
|
-
try {
|
|
66592
|
-
const parsedValue = JSON.parse(trimmedText);
|
|
66593
|
-
const redactedValue = redactValue({
|
|
66594
|
-
value: parsedValue,
|
|
66595
|
-
depth: MAX_REDACTION_DEPTH,
|
|
66596
|
-
budget
|
|
66597
|
-
});
|
|
66598
|
-
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
66599
|
-
} catch {
|
|
66600
|
-
return text;
|
|
66601
|
-
}
|
|
66602
|
-
}
|
|
66603
|
-
return redactFormEncoded({ text }) ?? text;
|
|
66604
|
-
}
|
|
66605
|
-
function redactFormEncoded({ text }) {
|
|
66606
|
-
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
66607
|
-
return void 0;
|
|
66608
|
-
}
|
|
66609
|
-
const params = new URLSearchParams(text);
|
|
66610
|
-
let hasRedactedParam = false;
|
|
66611
|
-
for (const key of new Set(params.keys())) {
|
|
66612
|
-
if (isRedactedKey({ key })) {
|
|
66613
|
-
params.set(key, REDACTED_VALUE);
|
|
66614
|
-
hasRedactedParam = true;
|
|
66615
|
-
}
|
|
66616
|
-
}
|
|
66617
|
-
return hasRedactedParam ? params.toString() : void 0;
|
|
66618
|
-
}
|
|
66619
|
-
function isRedactedKey({ key }) {
|
|
66620
|
-
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
66621
|
-
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
66622
|
-
}
|
|
66623
|
-
function isPlainObject2(value) {
|
|
66624
|
-
if (typeof value !== "object" || value === null) {
|
|
66625
|
-
return false;
|
|
66626
|
-
}
|
|
66627
|
-
const prototype = Object.getPrototypeOf(value);
|
|
66628
|
-
return prototype === Object.prototype || prototype === null;
|
|
66629
|
-
}
|
|
66630
|
-
|
|
66631
|
-
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
66632
66910
|
import { AxiosError } from "axios";
|
|
66633
66911
|
var recommendedRetryConfig = {
|
|
66634
66912
|
retries: 3,
|
|
@@ -66696,14 +66974,14 @@ function isTooManyRequestsError(error48) {
|
|
|
66696
66974
|
return error48.response?.status === 429;
|
|
66697
66975
|
}
|
|
66698
66976
|
var toLogRequest = (config4) => {
|
|
66699
|
-
const url2 =
|
|
66977
|
+
const url2 = config4.url ?? "";
|
|
66700
66978
|
return {
|
|
66701
66979
|
method: config4.method ?? "",
|
|
66702
66980
|
url: url2,
|
|
66703
66981
|
path: url2,
|
|
66704
66982
|
hostname: config4.baseURL ?? "",
|
|
66705
66983
|
originalUrl: `${config4.baseURL ?? ""}${url2}`,
|
|
66706
|
-
body:
|
|
66984
|
+
body: config4.data,
|
|
66707
66985
|
headers: {}
|
|
66708
66986
|
};
|
|
66709
66987
|
};
|