@hyperline/cli 0.1.0-build.1.d6bc3c8 → 0.1.0-build.1.d788525
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 +1551 -665
- 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.",
|
|
@@ -37739,10 +37739,9 @@ Examples:
|
|
|
37739
37739
|
baseUrlOverride: resolveIngestBaseUrl(ctx.baseUrl)
|
|
37740
37740
|
});
|
|
37741
37741
|
});
|
|
37742
|
-
resource.command("send").description(`Send a single billable event.`).requiredOption("--customer-id <value>", `Customer ID or external ID`).requiredOption("--event-type <value>", `Event type`).requiredOption("--timestamp <value>", `ISO8601 timestamp`).requiredOption("--record <value>", `Event record as JSON (must include "id" key)`).
|
|
37742
|
+
resource.command("send").description(`Send a single billable event.`).requiredOption("--customer-id <value>", `Customer ID or external ID`).requiredOption("--event-type <value>", `Event type`).requiredOption("--timestamp <value>", `ISO8601 timestamp`).requiredOption("--record <value>", `Event record as JSON (must include "id" key)`).addHelpText("after", `
|
|
37743
37743
|
Examples:
|
|
37744
|
-
hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1","duration":32}'
|
|
37745
|
-
hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1"}' --with-price-calculation`).action(async (opts) => {
|
|
37744
|
+
hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1","duration":32}'`).action(async (opts) => {
|
|
37746
37745
|
const ctx = resource.parent?.opts()._ctx;
|
|
37747
37746
|
if (!ctx) {
|
|
37748
37747
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -37762,14 +37761,10 @@ Examples:
|
|
|
37762
37761
|
timestamp: opts.timestamp,
|
|
37763
37762
|
record: record2
|
|
37764
37763
|
};
|
|
37765
|
-
const args = {};
|
|
37766
|
-
if (opts.withPriceCalculation !== void 0)
|
|
37767
|
-
args.with_price_calculation = true;
|
|
37768
37764
|
await ctx.execute({
|
|
37769
37765
|
method: "POST",
|
|
37770
37766
|
path: "/v1/events",
|
|
37771
|
-
args,
|
|
37772
|
-
queryParamKeys: ["with_price_calculation"],
|
|
37767
|
+
args: {},
|
|
37773
37768
|
body,
|
|
37774
37769
|
baseUrlOverride: resolveIngestBaseUrl(ctx.baseUrl)
|
|
37775
37770
|
});
|
|
@@ -38285,7 +38280,7 @@ Examples:
|
|
|
38285
38280
|
queryParamKeys: []
|
|
38286
38281
|
});
|
|
38287
38282
|
});
|
|
38288
|
-
resource.command("preview-manual-journal-entry-recognition").description(`Preview revenue-recognition slices for a manual journal entry without writing data.`).requiredOption("--ledger-id <value>", `Ledger identifier.`).requiredOption("--amount <
|
|
38283
|
+
resource.command("preview-manual-journal-entry-recognition").description(`Preview revenue-recognition slices for a manual journal entry without writing data.`).requiredOption("--ledger-id <value>", `Ledger identifier.`).requiredOption("--amount <number>", `Deferred amount in minor ledger-currency units.`).requiredOption("--method <value>", `Recognition method to preview.`).option("--recognition-date <value>", `Recognition date for point-in-time recognition.`).option("--window <json>", `Service window for over-time recognition.`).option("--granularity <value>", `Slice granularity for over-time recognition.`).addHelpText("after", `
|
|
38289
38284
|
Examples:
|
|
38290
38285
|
hyperline accounting-journal-entries preview-manual-journal-entry-recognition --ledger-id <ledger_id> --amount <amount> --method <method>
|
|
38291
38286
|
hyperline accounting-journal-entries preview-manual-journal-entry-recognition --ledger-id <ledger_id> --amount <amount> --method <method> --recognition-date <recognition_date> --window <window>
|
|
@@ -38298,14 +38293,14 @@ Examples:
|
|
|
38298
38293
|
const args = {};
|
|
38299
38294
|
if (opts.ledgerId !== void 0)
|
|
38300
38295
|
args.ledger_id = opts.ledgerId;
|
|
38301
|
-
if (opts.amount !== void 0)
|
|
38302
|
-
args.amount = opts.amount;
|
|
38303
38296
|
if (opts.method !== void 0)
|
|
38304
38297
|
args.method = opts.method;
|
|
38305
38298
|
if (opts.recognitionDate !== void 0)
|
|
38306
38299
|
args.recognition_date = opts.recognitionDate;
|
|
38307
38300
|
if (opts.granularity !== void 0)
|
|
38308
38301
|
args.granularity = opts.granularity;
|
|
38302
|
+
if (opts.amount !== void 0)
|
|
38303
|
+
args.amount = Number(opts.amount);
|
|
38309
38304
|
if (opts.window !== void 0)
|
|
38310
38305
|
args.window = JSON.parse(opts.window);
|
|
38311
38306
|
await ctx.execute({
|
|
@@ -38483,7 +38478,7 @@ Examples:
|
|
|
38483
38478
|
queryParamKeys: []
|
|
38484
38479
|
});
|
|
38485
38480
|
});
|
|
38486
|
-
resource.command("delete-ledger").description(`
|
|
38481
|
+
resource.command("delete-ledger").description(`Permanently delete a ledger with its accounts, rules, journal entries and revenue recognition schedules, and unlink the suppliers, supplier contracts and accounting settings that reference it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
38487
38482
|
Examples:
|
|
38488
38483
|
hyperline accounting-ledgers delete-ledger --id <id>
|
|
38489
38484
|
hyperline accounting-ledgers delete-ledger --id <id> --output json`).action(async (opts) => {
|
|
@@ -38583,7 +38578,7 @@ Examples:
|
|
|
38583
38578
|
// build/commands/generated/accounting-revenue-recognition.js
|
|
38584
38579
|
function registerAccounting_Revenue_RecognitionCommands(parent) {
|
|
38585
38580
|
const resource = parent.command("accounting-revenue-recognition").description("Manage accounting > revenue recognition");
|
|
38586
|
-
resource.command("get-rev-rec-waterfall").description(`Aggregate revenue-recognition schedules into a booked-by-recognition month matrix.`).option("--ledger-id <value>", `Ledger identifier.`).option("--year <number>", `Booked calendar year.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search
|
|
38581
|
+
resource.command("get-rev-rec-waterfall").description(`Aggregate revenue-recognition schedules into a booked-by-recognition month matrix.`).option("--ledger-id <value>", `Ledger identifier.`).option("--year <number>", `Booked calendar year.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search by invoice ID or number, customer name or ID, or subscription ID.`).addHelpText("after", `
|
|
38587
38582
|
Examples:
|
|
38588
38583
|
hyperline accounting-revenue-recognition get-rev-rec-waterfall
|
|
38589
38584
|
hyperline accounting-revenue-recognition get-rev-rec-waterfall --ledger-id <ledger_id> --year <year>`).action(async (opts) => {
|
|
@@ -38616,7 +38611,7 @@ Examples:
|
|
|
38616
38611
|
]
|
|
38617
38612
|
});
|
|
38618
38613
|
});
|
|
38619
|
-
resource.command("get-rev-rec-waterfall-cell").description(`List the schedules and slices contributing to a waterfall cell.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--ledger-id <value>", `Ledger identifier.`).option("--booked-month <value>", `Booked month formatted YYYY-MM; required if year is absent.`).option("--year <number>", `Booked year; required if booked_month is absent.`).option("--recognition-month <value>", `Recognition month formatted YYYY-MM.`).option("--cell-type <value>", `Waterfall cell category.`).option("--status <value>", `Recognition status filter.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search
|
|
38614
|
+
resource.command("get-rev-rec-waterfall-cell").description(`List the schedules and slices contributing to a waterfall cell.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--ledger-id <value>", `Ledger identifier.`).option("--booked-month <value>", `Booked month formatted YYYY-MM; required if year is absent.`).option("--year <number>", `Booked year; required if booked_month is absent.`).option("--recognition-month <value>", `Recognition month formatted YYYY-MM.`).option("--cell-type <value>", `Waterfall cell category.`).option("--status <value>", `Recognition status filter.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search by invoice ID or number, customer name or ID, or subscription ID.`).addHelpText("after", `
|
|
38620
38615
|
Examples:
|
|
38621
38616
|
hyperline accounting-revenue-recognition get-rev-rec-waterfall-cell
|
|
38622
38617
|
hyperline accounting-revenue-recognition get-rev-rec-waterfall-cell --take <take> --ledger-id <ledger_id>`).action(async (opts) => {
|
|
@@ -38794,7 +38789,7 @@ Examples:
|
|
|
38794
38789
|
queryParamKeys: []
|
|
38795
38790
|
});
|
|
38796
38791
|
});
|
|
38797
|
-
resource.command("reshape-rev-rec-schedule").description(`Recognize an amount now and optionally spread the remainder over a new window.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <
|
|
38792
|
+
resource.command("reshape-rev-rec-schedule").description(`Recognize an amount now and optionally spread the remainder over a new window.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <number>", `Amount to recognize immediately in ledger currency. Expressed in currency's smallest unit.`).option("--window <json>", `Window over which to spread the remaining amount.`).requiredOption("--reason-code <value>", `Stable reason code for the adjustment.`).option("--reason-detail <value>", `Required explanation when reason_code is \`other\`.`).addHelpText("after", `
|
|
38798
38793
|
Examples:
|
|
38799
38794
|
hyperline accounting-revenue-recognition reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --reason-code <reason_code>
|
|
38800
38795
|
hyperline accounting-revenue-recognition reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --reason-code <reason_code> --window <window> --reason-detail <reason_detail>
|
|
@@ -38807,12 +38802,12 @@ Examples:
|
|
|
38807
38802
|
const args = {};
|
|
38808
38803
|
if (opts.scheduleId !== void 0)
|
|
38809
38804
|
args.schedule_id = opts.scheduleId;
|
|
38810
|
-
if (opts.recognizeNowAmount !== void 0)
|
|
38811
|
-
args.recognize_now_amount = opts.recognizeNowAmount;
|
|
38812
38805
|
if (opts.reasonCode !== void 0)
|
|
38813
38806
|
args.reason_code = opts.reasonCode;
|
|
38814
38807
|
if (opts.reasonDetail !== void 0)
|
|
38815
38808
|
args.reason_detail = opts.reasonDetail;
|
|
38809
|
+
if (opts.recognizeNowAmount !== void 0)
|
|
38810
|
+
args.recognize_now_amount = Number(opts.recognizeNowAmount);
|
|
38816
38811
|
if (opts.window !== void 0)
|
|
38817
38812
|
args.window = JSON.parse(opts.window);
|
|
38818
38813
|
await ctx.execute({
|
|
@@ -38822,7 +38817,7 @@ Examples:
|
|
|
38822
38817
|
queryParamKeys: []
|
|
38823
38818
|
});
|
|
38824
38819
|
});
|
|
38825
|
-
resource.command("preview-reshape-rev-rec-schedule").description(`Preview the exact reshape plan without writing data.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <
|
|
38820
|
+
resource.command("preview-reshape-rev-rec-schedule").description(`Preview the exact reshape plan without writing data.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <number>", `Amount to recognize immediately in ledger currency. Expressed in currency's smallest unit.`).option("--window <json>", `Window over which to spread the remaining amount.`).addHelpText("after", `
|
|
38826
38821
|
Examples:
|
|
38827
38822
|
hyperline accounting-revenue-recognition preview-reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount>
|
|
38828
38823
|
hyperline accounting-revenue-recognition preview-reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --window <window>
|
|
@@ -38836,7 +38831,7 @@ Examples:
|
|
|
38836
38831
|
if (opts.scheduleId !== void 0)
|
|
38837
38832
|
args.schedule_id = opts.scheduleId;
|
|
38838
38833
|
if (opts.recognizeNowAmount !== void 0)
|
|
38839
|
-
args.recognize_now_amount = opts.recognizeNowAmount;
|
|
38834
|
+
args.recognize_now_amount = Number(opts.recognizeNowAmount);
|
|
38840
38835
|
if (opts.window !== void 0)
|
|
38841
38836
|
args.window = JSON.parse(opts.window);
|
|
38842
38837
|
await ctx.execute({
|
|
@@ -39013,7 +39008,7 @@ Examples:
|
|
|
39013
39008
|
queryParamKeys: []
|
|
39014
39009
|
});
|
|
39015
39010
|
});
|
|
39016
|
-
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (
|
|
39011
|
+
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39017
39012
|
Examples:
|
|
39018
39013
|
hyperline accounting-rules create --category <category> --priority <priority>
|
|
39019
39014
|
hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
|
|
@@ -39052,8 +39047,24 @@ Examples:
|
|
|
39052
39047
|
args.output_tax_ledger_account_id = opts.outputTaxLedgerAccountId;
|
|
39053
39048
|
if (opts.uncollectibleDebitLedgerAccountId !== void 0)
|
|
39054
39049
|
args.uncollectible_debit_ledger_account_id = opts.uncollectibleDebitLedgerAccountId;
|
|
39050
|
+
if (opts.allowanceForDoubtfulAccountsId !== void 0)
|
|
39051
|
+
args.allowance_for_doubtful_accounts_id = opts.allowanceForDoubtfulAccountsId;
|
|
39052
|
+
if (opts.providerFeesExpenseLedgerAccountId !== void 0)
|
|
39053
|
+
args.provider_fees_expense_ledger_account_id = opts.providerFeesExpenseLedgerAccountId;
|
|
39054
|
+
if (opts.paymentProcessingFeesExpenseLedgerAccountId !== void 0)
|
|
39055
|
+
args.payment_processing_fees_expense_ledger_account_id = opts.paymentProcessingFeesExpenseLedgerAccountId;
|
|
39056
|
+
if (opts.paymentProcessingFeesRevenueLedgerAccountId !== void 0)
|
|
39057
|
+
args.payment_processing_fees_revenue_ledger_account_id = opts.paymentProcessingFeesRevenueLedgerAccountId;
|
|
39055
39058
|
if (opts.customerCreditsLedgerAccountId !== void 0)
|
|
39056
39059
|
args.customer_credits_ledger_account_id = opts.customerCreditsLedgerAccountId;
|
|
39060
|
+
if (opts.revRecMethod !== void 0)
|
|
39061
|
+
args.rev_rec_method = opts.revRecMethod;
|
|
39062
|
+
if (opts.revRecGranularity !== void 0)
|
|
39063
|
+
args.rev_rec_granularity = opts.revRecGranularity;
|
|
39064
|
+
if (opts.revRecPointInTimeBasis !== void 0)
|
|
39065
|
+
args.rev_rec_point_in_time_basis = opts.revRecPointInTimeBasis;
|
|
39066
|
+
if (opts.discountRecognitionMethod !== void 0)
|
|
39067
|
+
args.discount_recognition_method = opts.discountRecognitionMethod;
|
|
39057
39068
|
if (opts.journalId !== void 0)
|
|
39058
39069
|
args.journal_id = opts.journalId;
|
|
39059
39070
|
if (opts.entityType !== void 0)
|
|
@@ -39072,12 +39083,22 @@ Examples:
|
|
|
39072
39083
|
args.currencies = JSON.parse(opts.currencies);
|
|
39073
39084
|
if (opts.countries !== void 0)
|
|
39074
39085
|
args.countries = JSON.parse(opts.countries);
|
|
39086
|
+
if (opts.taxSchemes !== void 0)
|
|
39087
|
+
args.tax_schemes = JSON.parse(opts.taxSchemes);
|
|
39088
|
+
if (opts.taxTerritories !== void 0)
|
|
39089
|
+
args.tax_territories = JSON.parse(opts.taxTerritories);
|
|
39090
|
+
if (opts.taxRateClasses !== void 0)
|
|
39091
|
+
args.tax_rate_classes = JSON.parse(opts.taxRateClasses);
|
|
39075
39092
|
if (opts.couponIds !== void 0)
|
|
39076
39093
|
args.coupon_ids = JSON.parse(opts.couponIds);
|
|
39077
39094
|
if (opts.clientProviderIds !== void 0)
|
|
39078
39095
|
args.client_provider_ids = JSON.parse(opts.clientProviderIds);
|
|
39079
39096
|
if (opts.paymentMethodTypes !== void 0)
|
|
39080
39097
|
args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
|
|
39098
|
+
if (opts.bankAccountIds !== void 0)
|
|
39099
|
+
args.bank_account_ids = JSON.parse(opts.bankAccountIds);
|
|
39100
|
+
if (opts.invoiceTypes !== void 0)
|
|
39101
|
+
args.invoice_types = JSON.parse(opts.invoiceTypes);
|
|
39081
39102
|
if (opts.customPropertyFilters !== void 0)
|
|
39082
39103
|
args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
|
|
39083
39104
|
await ctx.execute({
|
|
@@ -39087,7 +39108,7 @@ Examples:
|
|
|
39087
39108
|
queryParamKeys: []
|
|
39088
39109
|
});
|
|
39089
39110
|
});
|
|
39090
|
-
resource.command("update").description(`Update an existing accounting rule.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (
|
|
39111
|
+
resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39091
39112
|
Examples:
|
|
39092
39113
|
hyperline accounting-rules update --id <id>
|
|
39093
39114
|
hyperline accounting-rules update --id <id> --name <name> --category <category>
|
|
@@ -39126,8 +39147,24 @@ Examples:
|
|
|
39126
39147
|
args.output_tax_ledger_account_id = opts.outputTaxLedgerAccountId;
|
|
39127
39148
|
if (opts.uncollectibleDebitLedgerAccountId !== void 0)
|
|
39128
39149
|
args.uncollectible_debit_ledger_account_id = opts.uncollectibleDebitLedgerAccountId;
|
|
39150
|
+
if (opts.allowanceForDoubtfulAccountsId !== void 0)
|
|
39151
|
+
args.allowance_for_doubtful_accounts_id = opts.allowanceForDoubtfulAccountsId;
|
|
39152
|
+
if (opts.providerFeesExpenseLedgerAccountId !== void 0)
|
|
39153
|
+
args.provider_fees_expense_ledger_account_id = opts.providerFeesExpenseLedgerAccountId;
|
|
39154
|
+
if (opts.paymentProcessingFeesExpenseLedgerAccountId !== void 0)
|
|
39155
|
+
args.payment_processing_fees_expense_ledger_account_id = opts.paymentProcessingFeesExpenseLedgerAccountId;
|
|
39156
|
+
if (opts.paymentProcessingFeesRevenueLedgerAccountId !== void 0)
|
|
39157
|
+
args.payment_processing_fees_revenue_ledger_account_id = opts.paymentProcessingFeesRevenueLedgerAccountId;
|
|
39129
39158
|
if (opts.customerCreditsLedgerAccountId !== void 0)
|
|
39130
39159
|
args.customer_credits_ledger_account_id = opts.customerCreditsLedgerAccountId;
|
|
39160
|
+
if (opts.revRecMethod !== void 0)
|
|
39161
|
+
args.rev_rec_method = opts.revRecMethod;
|
|
39162
|
+
if (opts.revRecGranularity !== void 0)
|
|
39163
|
+
args.rev_rec_granularity = opts.revRecGranularity;
|
|
39164
|
+
if (opts.revRecPointInTimeBasis !== void 0)
|
|
39165
|
+
args.rev_rec_point_in_time_basis = opts.revRecPointInTimeBasis;
|
|
39166
|
+
if (opts.discountRecognitionMethod !== void 0)
|
|
39167
|
+
args.discount_recognition_method = opts.discountRecognitionMethod;
|
|
39131
39168
|
if (opts.journalId !== void 0)
|
|
39132
39169
|
args.journal_id = opts.journalId;
|
|
39133
39170
|
if (opts.entityType !== void 0)
|
|
@@ -39146,12 +39183,22 @@ Examples:
|
|
|
39146
39183
|
args.currencies = JSON.parse(opts.currencies);
|
|
39147
39184
|
if (opts.countries !== void 0)
|
|
39148
39185
|
args.countries = JSON.parse(opts.countries);
|
|
39186
|
+
if (opts.taxSchemes !== void 0)
|
|
39187
|
+
args.tax_schemes = JSON.parse(opts.taxSchemes);
|
|
39188
|
+
if (opts.taxTerritories !== void 0)
|
|
39189
|
+
args.tax_territories = JSON.parse(opts.taxTerritories);
|
|
39190
|
+
if (opts.taxRateClasses !== void 0)
|
|
39191
|
+
args.tax_rate_classes = JSON.parse(opts.taxRateClasses);
|
|
39149
39192
|
if (opts.couponIds !== void 0)
|
|
39150
39193
|
args.coupon_ids = JSON.parse(opts.couponIds);
|
|
39151
39194
|
if (opts.clientProviderIds !== void 0)
|
|
39152
39195
|
args.client_provider_ids = JSON.parse(opts.clientProviderIds);
|
|
39153
39196
|
if (opts.paymentMethodTypes !== void 0)
|
|
39154
39197
|
args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
|
|
39198
|
+
if (opts.bankAccountIds !== void 0)
|
|
39199
|
+
args.bank_account_ids = JSON.parse(opts.bankAccountIds);
|
|
39200
|
+
if (opts.invoiceTypes !== void 0)
|
|
39201
|
+
args.invoice_types = JSON.parse(opts.invoiceTypes);
|
|
39155
39202
|
if (opts.customPropertyFilters !== void 0)
|
|
39156
39203
|
args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
|
|
39157
39204
|
await ctx.execute({
|
|
@@ -39187,7 +39234,7 @@ Examples:
|
|
|
39187
39234
|
queryParamKeys: []
|
|
39188
39235
|
});
|
|
39189
39236
|
});
|
|
39190
|
-
resource.command("resolve").description(`Preview which account codes would be resolved for a given context.`).requiredOption("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).option("--product-id <value>", `Product ID to resolve against.`).option("--product-type <value>", `Product type to resolve against.`).option("--currency <value>", `Currency code to resolve against.`).option("--country <value>", `Country code to resolve against.`).option("--customer-id <value>", `Customer ID to resolve against.`).option("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (
|
|
39237
|
+
resource.command("resolve").description(`Preview which account codes would be resolved for a given context.`).requiredOption("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).option("--product-id <value>", `Product ID to resolve against.`).option("--product-type <value>", `Product type to resolve against.`).option("--currency <value>", `Currency code to resolve against.`).option("--country <value>", `Country code to resolve against.`).option("--tax-scheme <value>", `Tax scheme to resolve against.`).option("--tax-territory <value>", `Tax territory country code to resolve against.`).option("--tax-rate-class <value>", `Tax rate class to resolve against.`).option("--customer-id <value>", `Customer ID to resolve against.`).option("--coupon-id <value>", `Coupon ID to resolve against.`).option("--client-provider-id <value>", `Client provider ID to resolve against.`).option("--payment-method-type <value>", `Payment method type to resolve against.`).option("--bank-account-id <value>", `Bank account ID to resolve against.`).option("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-properties <json>", `Invoice custom property values to resolve against, keyed by custom property slug. Unknown slugs and null values are ignored. Rules with custom property filters never match without them.`).addHelpText("after", `
|
|
39191
39238
|
Examples:
|
|
39192
39239
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category>
|
|
39193
39240
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category> --product-id <product_id> --product-type <product_type>
|
|
@@ -39210,8 +39257,22 @@ Examples:
|
|
|
39210
39257
|
args.currency = opts.currency;
|
|
39211
39258
|
if (opts.country !== void 0)
|
|
39212
39259
|
args.country = opts.country;
|
|
39260
|
+
if (opts.taxScheme !== void 0)
|
|
39261
|
+
args.tax_scheme = opts.taxScheme;
|
|
39262
|
+
if (opts.taxTerritory !== void 0)
|
|
39263
|
+
args.tax_territory = opts.taxTerritory;
|
|
39264
|
+
if (opts.taxRateClass !== void 0)
|
|
39265
|
+
args.tax_rate_class = opts.taxRateClass;
|
|
39213
39266
|
if (opts.customerId !== void 0)
|
|
39214
39267
|
args.customer_id = opts.customerId;
|
|
39268
|
+
if (opts.couponId !== void 0)
|
|
39269
|
+
args.coupon_id = opts.couponId;
|
|
39270
|
+
if (opts.clientProviderId !== void 0)
|
|
39271
|
+
args.client_provider_id = opts.clientProviderId;
|
|
39272
|
+
if (opts.paymentMethodType !== void 0)
|
|
39273
|
+
args.payment_method_type = opts.paymentMethodType;
|
|
39274
|
+
if (opts.bankAccountId !== void 0)
|
|
39275
|
+
args.bank_account_id = opts.bankAccountId;
|
|
39215
39276
|
if (opts.invoiceType !== void 0)
|
|
39216
39277
|
args.invoice_type = opts.invoiceType;
|
|
39217
39278
|
if (opts.intervalPeriod !== void 0)
|
|
@@ -39229,164 +39290,158 @@ Examples:
|
|
|
39229
39290
|
});
|
|
39230
39291
|
}
|
|
39231
39292
|
|
|
39232
|
-
// build/commands/generated/
|
|
39233
|
-
function
|
|
39234
|
-
const resource = parent.command("
|
|
39235
|
-
resource.command("list
|
|
39236
|
-
|
|
39237
|
-
- wallet: Charges a monetary wallet.
|
|
39238
|
-
- credits: Consumes a credit balance.
|
|
39239
|
-
- windows: Meters weighted units against rolling allowances.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39293
|
+
// build/commands/generated/aggregators.js
|
|
39294
|
+
function registerAggregatorsCommands(parent) {
|
|
39295
|
+
const resource = parent.command("aggregators").description("Manage aggregators");
|
|
39296
|
+
resource.command("list").description(`List all aggregators with pagination. Aggregators define how billable events are counted or summed to compute usage.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39240
39297
|
Examples:
|
|
39241
|
-
hyperline
|
|
39242
|
-
hyperline
|
|
39298
|
+
hyperline aggregators list
|
|
39299
|
+
hyperline aggregators list --take <take>`).action(async (opts) => {
|
|
39243
39300
|
const ctx = resource.parent?.opts()._ctx;
|
|
39244
39301
|
if (!ctx) {
|
|
39245
39302
|
process.stderr.write("Error: Not authenticated\n");
|
|
39246
39303
|
process.exit(1);
|
|
39247
39304
|
}
|
|
39248
39305
|
const args = {};
|
|
39249
|
-
if (opts.mode !== void 0)
|
|
39250
|
-
args.mode = opts.mode;
|
|
39251
39306
|
if (opts.take !== void 0)
|
|
39252
39307
|
args.take = Number(opts.take);
|
|
39253
39308
|
if (opts.skip !== void 0)
|
|
39254
39309
|
args.skip = Number(opts.skip);
|
|
39255
39310
|
await ctx.execute({
|
|
39256
39311
|
method: "GET",
|
|
39257
|
-
path: "/v1/
|
|
39312
|
+
path: "/v1/aggregators",
|
|
39258
39313
|
args,
|
|
39259
|
-
queryParamKeys: ["
|
|
39314
|
+
queryParamKeys: ["take", "skip"]
|
|
39260
39315
|
});
|
|
39261
39316
|
});
|
|
39262
|
-
resource.command("create
|
|
39263
|
-
|
|
39264
|
-
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39265
|
-
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39266
|
-
|
|
39267
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).requiredOption("--mode <value>", `Billing mode.
|
|
39268
|
-
|
|
39269
|
-
- wallet: Charges a monetary wallet.
|
|
39270
|
-
- credits: Consumes a credit balance.
|
|
39271
|
-
- windows: Meters weighted units against rolling allowances.`).addHelpText("after", `
|
|
39317
|
+
resource.command("create").description(`Create a new aggregator that counts or sums billable events. Aggregators can then be linked to products via aggregator_id.`).requiredOption("--entity <value>", `The billable event entity to aggregate.`).option("--type <value>", `The type of aggregator.`).option("--where <json>", `Filter conditions for the aggregation.`).option("--name <value>", `Name of the aggregator.`).option("--description <value>", `Description of the aggregator.`).option("--allow-negative-values", `Whether the aggregator can produce negative values.`).option("--aggregate-on-customers-enabled", `Whether the aggregator should aggregate on customers.`).option("--custom-event-name <value>", `Custom event name for the aggregator.`).option("--exposed-event-keys <json>", `Event keys exposed by the aggregator.`).option("--unit-name <value>", `Display name of the unit being measured (e.g. 'user', 'request'). Used as fallback for products attached to this aggregator.`).option("--default-interval-count <number>", `Default interval count for usage periods.`).option("--default-interval-period <value>", `Default interval period for usage periods.`).option("--thresholds <json>", `Thresholds for the aggregator.`).requiredOption("--operation <value>", `The aggregation operation to perform.`).option("--property <value>", `The property to sum.`).addHelpText("after", `
|
|
39272
39318
|
Examples:
|
|
39273
|
-
hyperline
|
|
39274
|
-
hyperline
|
|
39275
|
-
hyperline
|
|
39319
|
+
hyperline aggregators create --entity <entity> --operation <operation>
|
|
39320
|
+
hyperline aggregators create --entity <entity> --operation <operation> --type <type> --where <where>
|
|
39321
|
+
hyperline aggregators create --entity <entity> --operation <operation> --output json`).action(async (opts) => {
|
|
39276
39322
|
const ctx = resource.parent?.opts()._ctx;
|
|
39277
39323
|
if (!ctx) {
|
|
39278
39324
|
process.stderr.write("Error: Not authenticated\n");
|
|
39279
39325
|
process.exit(1);
|
|
39280
39326
|
}
|
|
39281
39327
|
const args = {};
|
|
39328
|
+
if (opts.entity !== void 0)
|
|
39329
|
+
args.entity = opts.entity;
|
|
39330
|
+
if (opts.type !== void 0)
|
|
39331
|
+
args.type = opts.type;
|
|
39282
39332
|
if (opts.name !== void 0)
|
|
39283
39333
|
args.name = opts.name;
|
|
39284
|
-
if (opts.
|
|
39285
|
-
args.
|
|
39286
|
-
if (opts.
|
|
39287
|
-
args.
|
|
39288
|
-
if (opts.
|
|
39289
|
-
args.
|
|
39290
|
-
if (opts.
|
|
39291
|
-
args.
|
|
39292
|
-
if (opts.
|
|
39293
|
-
args.
|
|
39294
|
-
if (opts.
|
|
39295
|
-
args.
|
|
39296
|
-
if (opts.
|
|
39297
|
-
args.
|
|
39298
|
-
if (opts.
|
|
39299
|
-
args.
|
|
39300
|
-
if (opts.
|
|
39301
|
-
args.
|
|
39302
|
-
if (opts.
|
|
39303
|
-
args.
|
|
39304
|
-
if (opts.
|
|
39305
|
-
args.
|
|
39334
|
+
if (opts.description !== void 0)
|
|
39335
|
+
args.description = opts.description;
|
|
39336
|
+
if (opts.customEventName !== void 0)
|
|
39337
|
+
args.custom_event_name = opts.customEventName;
|
|
39338
|
+
if (opts.unitName !== void 0)
|
|
39339
|
+
args.unit_name = opts.unitName;
|
|
39340
|
+
if (opts.defaultIntervalPeriod !== void 0)
|
|
39341
|
+
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
39342
|
+
if (opts.operation !== void 0)
|
|
39343
|
+
args.operation = opts.operation;
|
|
39344
|
+
if (opts.property !== void 0)
|
|
39345
|
+
args.property = opts.property;
|
|
39346
|
+
if (opts.defaultIntervalCount !== void 0)
|
|
39347
|
+
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
39348
|
+
if (opts.allowNegativeValues !== void 0)
|
|
39349
|
+
args.allow_negative_values = true;
|
|
39350
|
+
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
39351
|
+
args.aggregate_on_customers_enabled = true;
|
|
39352
|
+
if (opts.where !== void 0)
|
|
39353
|
+
args.where = JSON.parse(opts.where);
|
|
39354
|
+
if (opts.exposedEventKeys !== void 0)
|
|
39355
|
+
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
39356
|
+
if (opts.thresholds !== void 0)
|
|
39357
|
+
args.thresholds = JSON.parse(opts.thresholds);
|
|
39306
39358
|
await ctx.execute({
|
|
39307
39359
|
method: "POST",
|
|
39308
|
-
path: "/v1/
|
|
39360
|
+
path: "/v1/aggregators",
|
|
39309
39361
|
args,
|
|
39310
39362
|
queryParamKeys: []
|
|
39311
39363
|
});
|
|
39312
39364
|
});
|
|
39313
|
-
resource.command("get
|
|
39365
|
+
resource.command("get").description(`Retrieve a specific aggregator by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39314
39366
|
Examples:
|
|
39315
|
-
hyperline
|
|
39367
|
+
hyperline aggregators get --id <id>`).action(async (opts) => {
|
|
39316
39368
|
const ctx = resource.parent?.opts()._ctx;
|
|
39317
39369
|
if (!ctx) {
|
|
39318
39370
|
process.stderr.write("Error: Not authenticated\n");
|
|
39319
39371
|
process.exit(1);
|
|
39320
39372
|
}
|
|
39321
39373
|
const args = {};
|
|
39322
|
-
if (opts.
|
|
39323
|
-
args.
|
|
39374
|
+
if (opts.id !== void 0)
|
|
39375
|
+
args.id = opts.id;
|
|
39324
39376
|
await ctx.execute({
|
|
39325
39377
|
method: "GET",
|
|
39326
|
-
path: "/v1/
|
|
39378
|
+
path: "/v1/aggregators/{id}",
|
|
39327
39379
|
args,
|
|
39328
39380
|
queryParamKeys: []
|
|
39329
39381
|
});
|
|
39330
39382
|
});
|
|
39331
|
-
resource.command("
|
|
39332
|
-
|
|
39333
|
-
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39334
|
-
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39335
|
-
|
|
39336
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39383
|
+
resource.command("update").description(`Update an existing aggregator's configuration.`).requiredOption("--id <value>", `id parameter`).option("--entity <value>", `The billable event entity to aggregate.`).option("--type <value>", `The type of aggregator.`).option("--where <json>", `Filter conditions for the aggregation.`).option("--name <value>", `Name of the aggregator.`).option("--description <value>", `Description of the aggregator.`).option("--allow-negative-values", `Whether the aggregator can produce negative values.`).option("--aggregate-on-customers-enabled", `Whether the aggregator should aggregate on customers.`).option("--custom-event-name <value>", `Custom event name for the aggregator.`).option("--exposed-event-keys <json>", `Event keys exposed by the aggregator.`).option("--unit-name <value>", `Display name of the unit being measured (e.g. 'user', 'request'). Used as fallback for products attached to this aggregator.`).option("--default-interval-count <number>", `Default interval count for usage periods.`).option("--default-interval-period <value>", `Default interval period for usage periods.`).option("--thresholds <json>", `Thresholds for the aggregator. Replaces existing thresholds.`).option("--operation <value>", `The aggregation operation to perform.`).option("--property <value>", `The property to sum. Required when operation is 'sum'.`).addHelpText("after", `
|
|
39337
39384
|
Examples:
|
|
39338
|
-
hyperline
|
|
39339
|
-
hyperline
|
|
39340
|
-
hyperline
|
|
39385
|
+
hyperline aggregators update --id <id>
|
|
39386
|
+
hyperline aggregators update --id <id> --entity <entity> --type <type>
|
|
39387
|
+
hyperline aggregators update --id <id> --output json`).action(async (opts) => {
|
|
39341
39388
|
const ctx = resource.parent?.opts()._ctx;
|
|
39342
39389
|
if (!ctx) {
|
|
39343
39390
|
process.stderr.write("Error: Not authenticated\n");
|
|
39344
39391
|
process.exit(1);
|
|
39345
39392
|
}
|
|
39346
39393
|
const args = {};
|
|
39347
|
-
if (opts.
|
|
39348
|
-
args.
|
|
39394
|
+
if (opts.id !== void 0)
|
|
39395
|
+
args.id = opts.id;
|
|
39396
|
+
if (opts.entity !== void 0)
|
|
39397
|
+
args.entity = opts.entity;
|
|
39398
|
+
if (opts.type !== void 0)
|
|
39399
|
+
args.type = opts.type;
|
|
39349
39400
|
if (opts.name !== void 0)
|
|
39350
39401
|
args.name = opts.name;
|
|
39351
|
-
if (opts.
|
|
39352
|
-
args.
|
|
39353
|
-
if (opts.
|
|
39354
|
-
args.
|
|
39355
|
-
if (opts.
|
|
39356
|
-
args.
|
|
39357
|
-
if (opts.
|
|
39358
|
-
args.
|
|
39359
|
-
if (opts.
|
|
39360
|
-
args.
|
|
39361
|
-
if (opts.
|
|
39362
|
-
args.
|
|
39363
|
-
if (opts.
|
|
39364
|
-
args.
|
|
39365
|
-
if (opts.
|
|
39366
|
-
args.
|
|
39367
|
-
if (opts.
|
|
39368
|
-
args.
|
|
39369
|
-
if (opts.
|
|
39370
|
-
args.
|
|
39402
|
+
if (opts.description !== void 0)
|
|
39403
|
+
args.description = opts.description;
|
|
39404
|
+
if (opts.customEventName !== void 0)
|
|
39405
|
+
args.custom_event_name = opts.customEventName;
|
|
39406
|
+
if (opts.unitName !== void 0)
|
|
39407
|
+
args.unit_name = opts.unitName;
|
|
39408
|
+
if (opts.defaultIntervalPeriod !== void 0)
|
|
39409
|
+
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
39410
|
+
if (opts.operation !== void 0)
|
|
39411
|
+
args.operation = opts.operation;
|
|
39412
|
+
if (opts.property !== void 0)
|
|
39413
|
+
args.property = opts.property;
|
|
39414
|
+
if (opts.defaultIntervalCount !== void 0)
|
|
39415
|
+
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
39416
|
+
if (opts.allowNegativeValues !== void 0)
|
|
39417
|
+
args.allow_negative_values = true;
|
|
39418
|
+
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
39419
|
+
args.aggregate_on_customers_enabled = true;
|
|
39420
|
+
if (opts.where !== void 0)
|
|
39421
|
+
args.where = JSON.parse(opts.where);
|
|
39422
|
+
if (opts.exposedEventKeys !== void 0)
|
|
39423
|
+
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
39424
|
+
if (opts.thresholds !== void 0)
|
|
39425
|
+
args.thresholds = JSON.parse(opts.thresholds);
|
|
39371
39426
|
await ctx.execute({
|
|
39372
39427
|
method: "PUT",
|
|
39373
|
-
path: "/v1/
|
|
39428
|
+
path: "/v1/aggregators/{id}",
|
|
39374
39429
|
args,
|
|
39375
39430
|
queryParamKeys: []
|
|
39376
39431
|
});
|
|
39377
39432
|
});
|
|
39378
|
-
resource.command("delete
|
|
39433
|
+
resource.command("delete").description(`Delete an aggregator by ID. Will fail if the aggregator is linked to a product.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39379
39434
|
Examples:
|
|
39380
|
-
hyperline
|
|
39381
|
-
hyperline
|
|
39435
|
+
hyperline aggregators delete --id <id>
|
|
39436
|
+
hyperline aggregators delete --id <id> --output json`).action(async (opts) => {
|
|
39382
39437
|
const ctx = resource.parent?.opts()._ctx;
|
|
39383
39438
|
if (!ctx) {
|
|
39384
39439
|
process.stderr.write("Error: Not authenticated\n");
|
|
39385
39440
|
process.exit(1);
|
|
39386
39441
|
}
|
|
39387
39442
|
const args = {};
|
|
39388
|
-
if (opts.
|
|
39389
|
-
args.
|
|
39443
|
+
if (opts.id !== void 0)
|
|
39444
|
+
args.id = opts.id;
|
|
39390
39445
|
if (!opts.yes) {
|
|
39391
39446
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39392
39447
|
if (!confirmed) {
|
|
@@ -39396,113 +39451,182 @@ Examples:
|
|
|
39396
39451
|
}
|
|
39397
39452
|
await ctx.execute({
|
|
39398
39453
|
method: "DELETE",
|
|
39399
|
-
path: "/v1/
|
|
39454
|
+
path: "/v1/aggregators/{id}",
|
|
39400
39455
|
args,
|
|
39401
39456
|
queryParamKeys: []
|
|
39402
39457
|
});
|
|
39403
39458
|
});
|
|
39404
|
-
|
|
39459
|
+
}
|
|
39460
|
+
|
|
39461
|
+
// build/commands/generated/aggregators-usage.js
|
|
39462
|
+
function registerAggregators_UsageCommands(parent) {
|
|
39463
|
+
const resource = parent.command("aggregators-usage").description("Manage aggregators > usage");
|
|
39464
|
+
resource.command("get-aggregator-usage").description(`Retrieve a usage row for an aggregator. Use the timeseries, group-by-customer or events endpoints to query metering data.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39405
39465
|
Examples:
|
|
39406
|
-
hyperline
|
|
39466
|
+
hyperline aggregators-usage get-aggregator-usage --id <id>`).action(async (opts) => {
|
|
39407
39467
|
const ctx = resource.parent?.opts()._ctx;
|
|
39408
39468
|
if (!ctx) {
|
|
39409
39469
|
process.stderr.write("Error: Not authenticated\n");
|
|
39410
39470
|
process.exit(1);
|
|
39411
39471
|
}
|
|
39412
39472
|
const args = {};
|
|
39473
|
+
if (opts.id !== void 0)
|
|
39474
|
+
args.id = opts.id;
|
|
39413
39475
|
await ctx.execute({
|
|
39414
39476
|
method: "GET",
|
|
39415
|
-
path: "/v1/
|
|
39477
|
+
path: "/v1/aggregators/{id}/usage",
|
|
39416
39478
|
args,
|
|
39417
39479
|
queryParamKeys: []
|
|
39418
39480
|
});
|
|
39419
39481
|
});
|
|
39420
|
-
resource.command("
|
|
39482
|
+
resource.command("get-aggregator-usage-timeseries").description(`Get client-wide usage for an aggregator bucketed by month/day/hour over a period.`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).option("--aggregator-filter-id <value>", `Optional aggregator filter ID. When set, restricts the result to events matching that filter's config. Must belong to the aggregator in the path.`).option("--group-by <value>", `Bucket size for the timeseries.`).addHelpText("after", `
|
|
39421
39483
|
Examples:
|
|
39422
|
-
hyperline
|
|
39423
|
-
hyperline
|
|
39424
|
-
hyperline agents set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39484
|
+
hyperline aggregators-usage get-aggregator-usage-timeseries --id <id>
|
|
39485
|
+
hyperline aggregators-usage get-aggregator-usage-timeseries --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39425
39486
|
const ctx = resource.parent?.opts()._ctx;
|
|
39426
39487
|
if (!ctx) {
|
|
39427
39488
|
process.stderr.write("Error: Not authenticated\n");
|
|
39428
39489
|
process.exit(1);
|
|
39429
39490
|
}
|
|
39430
39491
|
const args = {};
|
|
39431
|
-
if (opts.
|
|
39432
|
-
args.
|
|
39433
|
-
if (opts.
|
|
39434
|
-
args.
|
|
39492
|
+
if (opts.id !== void 0)
|
|
39493
|
+
args.id = opts.id;
|
|
39494
|
+
if (opts.startDate !== void 0)
|
|
39495
|
+
args.start_date = opts.startDate;
|
|
39496
|
+
if (opts.endDate !== void 0)
|
|
39497
|
+
args.end_date = opts.endDate;
|
|
39498
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39499
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39500
|
+
if (opts.groupBy !== void 0)
|
|
39501
|
+
args.group_by = opts.groupBy;
|
|
39435
39502
|
await ctx.execute({
|
|
39436
|
-
method: "
|
|
39437
|
-
path: "/v1/
|
|
39503
|
+
method: "GET",
|
|
39504
|
+
path: "/v1/aggregators/{id}/usage/timeseries",
|
|
39438
39505
|
args,
|
|
39439
|
-
queryParamKeys: [
|
|
39506
|
+
queryParamKeys: [
|
|
39507
|
+
"start_date",
|
|
39508
|
+
"end_date",
|
|
39509
|
+
"aggregator_filter_id",
|
|
39510
|
+
"group_by"
|
|
39511
|
+
]
|
|
39440
39512
|
});
|
|
39441
39513
|
});
|
|
39442
|
-
resource.command("
|
|
39514
|
+
resource.command("get-aggregator-usage-group-by-customer").description(`Per-customer total usage for an aggregator over a period, ranked by total. Paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).option("--aggregator-filter-id <value>", `Optional aggregator filter ID. When set, restricts the result to events matching that filter's config. Must belong to the aggregator in the path.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39443
39515
|
Examples:
|
|
39444
|
-
hyperline
|
|
39445
|
-
hyperline
|
|
39516
|
+
hyperline aggregators-usage get-aggregator-usage-group-by-customer --id <id>
|
|
39517
|
+
hyperline aggregators-usage get-aggregator-usage-group-by-customer --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39446
39518
|
const ctx = resource.parent?.opts()._ctx;
|
|
39447
39519
|
if (!ctx) {
|
|
39448
39520
|
process.stderr.write("Error: Not authenticated\n");
|
|
39449
39521
|
process.exit(1);
|
|
39450
39522
|
}
|
|
39451
39523
|
const args = {};
|
|
39452
|
-
if (
|
|
39453
|
-
|
|
39454
|
-
|
|
39455
|
-
|
|
39456
|
-
|
|
39457
|
-
|
|
39458
|
-
|
|
39524
|
+
if (opts.id !== void 0)
|
|
39525
|
+
args.id = opts.id;
|
|
39526
|
+
if (opts.startDate !== void 0)
|
|
39527
|
+
args.start_date = opts.startDate;
|
|
39528
|
+
if (opts.endDate !== void 0)
|
|
39529
|
+
args.end_date = opts.endDate;
|
|
39530
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39531
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39532
|
+
if (opts.take !== void 0)
|
|
39533
|
+
args.take = Number(opts.take);
|
|
39534
|
+
if (opts.skip !== void 0)
|
|
39535
|
+
args.skip = Number(opts.skip);
|
|
39459
39536
|
await ctx.execute({
|
|
39460
|
-
method: "
|
|
39461
|
-
path: "/v1/
|
|
39537
|
+
method: "GET",
|
|
39538
|
+
path: "/v1/aggregators/{id}/usage/group-by-customer",
|
|
39462
39539
|
args,
|
|
39463
|
-
queryParamKeys: [
|
|
39540
|
+
queryParamKeys: [
|
|
39541
|
+
"start_date",
|
|
39542
|
+
"end_date",
|
|
39543
|
+
"aggregator_filter_id",
|
|
39544
|
+
"take",
|
|
39545
|
+
"skip"
|
|
39546
|
+
]
|
|
39464
39547
|
});
|
|
39465
39548
|
});
|
|
39466
|
-
resource.command("
|
|
39467
|
-
|
|
39468
|
-
- credits: Credit counts.
|
|
39469
|
-
- units: Weighted rolling-allowance units.
|
|
39470
|
-
- currency: Major units of the specified currency.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--search <value>", `search`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39549
|
+
resource.command("get-aggregator-usage-events").description(`List raw billable events for an aggregator across every customer of the client. Paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).option("--aggregator-filter-id <value>", `Optional aggregator filter ID. When set, restricts the result to events matching that filter's config. Must belong to the aggregator in the path.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39471
39550
|
Examples:
|
|
39472
|
-
hyperline
|
|
39473
|
-
hyperline
|
|
39551
|
+
hyperline aggregators-usage get-aggregator-usage-events --id <id>
|
|
39552
|
+
hyperline aggregators-usage get-aggregator-usage-events --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39474
39553
|
const ctx = resource.parent?.opts()._ctx;
|
|
39475
39554
|
if (!ctx) {
|
|
39476
39555
|
process.stderr.write("Error: Not authenticated\n");
|
|
39477
39556
|
process.exit(1);
|
|
39478
39557
|
}
|
|
39479
39558
|
const args = {};
|
|
39480
|
-
if (opts.
|
|
39481
|
-
args.
|
|
39482
|
-
if (opts.
|
|
39483
|
-
args.
|
|
39484
|
-
if (opts.
|
|
39485
|
-
args.
|
|
39559
|
+
if (opts.id !== void 0)
|
|
39560
|
+
args.id = opts.id;
|
|
39561
|
+
if (opts.startDate !== void 0)
|
|
39562
|
+
args.start_date = opts.startDate;
|
|
39563
|
+
if (opts.endDate !== void 0)
|
|
39564
|
+
args.end_date = opts.endDate;
|
|
39565
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39566
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39486
39567
|
if (opts.take !== void 0)
|
|
39487
39568
|
args.take = Number(opts.take);
|
|
39488
39569
|
if (opts.skip !== void 0)
|
|
39489
39570
|
args.skip = Number(opts.skip);
|
|
39490
39571
|
await ctx.execute({
|
|
39491
39572
|
method: "GET",
|
|
39492
|
-
path: "/v1/
|
|
39573
|
+
path: "/v1/aggregators/{id}/usage/events",
|
|
39493
39574
|
args,
|
|
39494
|
-
queryParamKeys: [
|
|
39575
|
+
queryParamKeys: [
|
|
39576
|
+
"start_date",
|
|
39577
|
+
"end_date",
|
|
39578
|
+
"aggregator_filter_id",
|
|
39579
|
+
"take",
|
|
39580
|
+
"skip"
|
|
39581
|
+
]
|
|
39495
39582
|
});
|
|
39496
39583
|
});
|
|
39497
|
-
|
|
39584
|
+
}
|
|
39498
39585
|
|
|
39499
|
-
-
|
|
39500
|
-
|
|
39501
|
-
|
|
39586
|
+
// build/commands/generated/ai-billing.js
|
|
39587
|
+
function registerAi_BillingCommands(parent) {
|
|
39588
|
+
const resource = parent.command("ai-billing").description("Manage ai > billing");
|
|
39589
|
+
resource.command("list-agent-plans").description(`List AI agent billing plans: workspace-level offers carrying a billing mode (wallet/credits/windows), rate card, allowance windows, markups and per-seat credit grants. Filter by mode; paginated with take/skip.`).option("--mode <value>", `Billing mode.
|
|
39590
|
+
|
|
39591
|
+
- wallet: Charges a monetary wallet.
|
|
39592
|
+
- credits: Consumes a credit balance.
|
|
39593
|
+
- windows: Meters weighted units against rolling allowances.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39502
39594
|
Examples:
|
|
39503
|
-
hyperline
|
|
39504
|
-
hyperline
|
|
39505
|
-
|
|
39595
|
+
hyperline ai-billing list-agent-plans
|
|
39596
|
+
hyperline ai-billing list-agent-plans --mode <mode> --take <take>`).action(async (opts) => {
|
|
39597
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39598
|
+
if (!ctx) {
|
|
39599
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39600
|
+
process.exit(1);
|
|
39601
|
+
}
|
|
39602
|
+
const args = {};
|
|
39603
|
+
if (opts.mode !== void 0)
|
|
39604
|
+
args.mode = opts.mode;
|
|
39605
|
+
if (opts.take !== void 0)
|
|
39606
|
+
args.take = Number(opts.take);
|
|
39607
|
+
if (opts.skip !== void 0)
|
|
39608
|
+
args.skip = Number(opts.skip);
|
|
39609
|
+
await ctx.execute({
|
|
39610
|
+
method: "GET",
|
|
39611
|
+
path: "/v1/ai/billing/plans",
|
|
39612
|
+
args,
|
|
39613
|
+
queryParamKeys: ["mode", "take", "skip"]
|
|
39614
|
+
});
|
|
39615
|
+
});
|
|
39616
|
+
resource.command("create-agent-plan").description(`Create an AI agent billing plan: name, billing mode (wallet/credits/windows), rate card reference, allowance windows, markups, per-seat credit grants and overage stance. Past-limit usage is priced EITHER by overage_markup_percent over the base rates OR by overage_rate_card_id, a currency rate card whose own rates are the overage price \u2014 never both. Metered overage mints the plan's invoice container.`).requiredOption("--name <value>", `Human-readable resource name.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39617
|
+
|
|
39618
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39619
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39620
|
+
|
|
39621
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).requiredOption("--mode <value>", `Billing mode.
|
|
39622
|
+
|
|
39623
|
+
- wallet: Charges a monetary wallet.
|
|
39624
|
+
- credits: Consumes a credit balance.
|
|
39625
|
+
- windows: Meters weighted units against rolling allowances.`).addHelpText("after", `
|
|
39626
|
+
Examples:
|
|
39627
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode>
|
|
39628
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39629
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --output json`).action(async (opts) => {
|
|
39506
39630
|
const ctx = resource.parent?.opts()._ctx;
|
|
39507
39631
|
if (!ctx) {
|
|
39508
39632
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39511,77 +39635,174 @@ Examples:
|
|
|
39511
39635
|
const args = {};
|
|
39512
39636
|
if (opts.name !== void 0)
|
|
39513
39637
|
args.name = opts.name;
|
|
39514
|
-
if (opts.
|
|
39515
|
-
args.
|
|
39516
|
-
if (opts.
|
|
39517
|
-
args.
|
|
39518
|
-
if (opts.
|
|
39519
|
-
args.
|
|
39520
|
-
if (opts.
|
|
39521
|
-
args.
|
|
39638
|
+
if (opts.rateCardId !== void 0)
|
|
39639
|
+
args.rate_card_id = opts.rateCardId;
|
|
39640
|
+
if (opts.overageMode !== void 0)
|
|
39641
|
+
args.overage_mode = opts.overageMode;
|
|
39642
|
+
if (opts.markupPercent !== void 0)
|
|
39643
|
+
args.markup_percent = opts.markupPercent;
|
|
39644
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39645
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39646
|
+
if (opts.overageRateCardId !== void 0)
|
|
39647
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39648
|
+
if (opts.perSeatCredits !== void 0)
|
|
39649
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39650
|
+
if (opts.settlementSchedule !== void 0)
|
|
39651
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39652
|
+
if (opts.mode !== void 0)
|
|
39653
|
+
args.mode = opts.mode;
|
|
39654
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39655
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39656
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39657
|
+
args.grant_rollover_enabled = true;
|
|
39658
|
+
if (opts.windows !== void 0)
|
|
39659
|
+
args.windows = JSON.parse(opts.windows);
|
|
39522
39660
|
await ctx.execute({
|
|
39523
39661
|
method: "POST",
|
|
39524
|
-
path: "/v1/
|
|
39662
|
+
path: "/v1/ai/billing/plans",
|
|
39525
39663
|
args,
|
|
39526
39664
|
queryParamKeys: []
|
|
39527
39665
|
});
|
|
39528
39666
|
});
|
|
39529
|
-
resource.command("get-agent-
|
|
39667
|
+
resource.command("get-agent-default-plan").description(`Get the workspace's default AI agent billing plan marker (plan id and auto_apply flag). 404 when none is set.`).addHelpText("after", `
|
|
39530
39668
|
Examples:
|
|
39531
|
-
hyperline
|
|
39669
|
+
hyperline ai-billing get-agent-default-plan`).action(async (_opts) => {
|
|
39532
39670
|
const ctx = resource.parent?.opts()._ctx;
|
|
39533
39671
|
if (!ctx) {
|
|
39534
39672
|
process.stderr.write("Error: Not authenticated\n");
|
|
39535
39673
|
process.exit(1);
|
|
39536
39674
|
}
|
|
39537
39675
|
const args = {};
|
|
39538
|
-
if (opts.rateCardId !== void 0)
|
|
39539
|
-
args.rate_card_id = opts.rateCardId;
|
|
39540
39676
|
await ctx.execute({
|
|
39541
39677
|
method: "GET",
|
|
39542
|
-
path: "/v1/
|
|
39678
|
+
path: "/v1/ai/billing/plans/default",
|
|
39543
39679
|
args,
|
|
39544
39680
|
queryParamKeys: []
|
|
39545
39681
|
});
|
|
39546
39682
|
});
|
|
39547
|
-
resource.command("
|
|
39683
|
+
resource.command("set-agent-default-plan").description(`Mark one plan as the workspace's default AI agent billing plan (body: plan_id, optional auto_apply). Replaces the previous marker; 404 when the plan is not this workspace's.`).requiredOption("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).option("--auto-apply", `Whether eligible newly ingested customers receive the default plan automatically.`).addHelpText("after", `
|
|
39548
39684
|
Examples:
|
|
39549
|
-
hyperline
|
|
39550
|
-
hyperline
|
|
39551
|
-
hyperline
|
|
39685
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id>
|
|
39686
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --auto-apply
|
|
39687
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39552
39688
|
const ctx = resource.parent?.opts()._ctx;
|
|
39553
39689
|
if (!ctx) {
|
|
39554
39690
|
process.stderr.write("Error: Not authenticated\n");
|
|
39555
39691
|
process.exit(1);
|
|
39556
39692
|
}
|
|
39557
39693
|
const args = {};
|
|
39558
|
-
if (opts.
|
|
39559
|
-
args.
|
|
39560
|
-
if (opts.
|
|
39561
|
-
args.
|
|
39562
|
-
if (opts.fallbackPerUsd !== void 0)
|
|
39563
|
-
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39564
|
-
if (opts.rows !== void 0)
|
|
39565
|
-
args.rows = JSON.parse(opts.rows);
|
|
39694
|
+
if (opts.planId !== void 0)
|
|
39695
|
+
args.plan_id = opts.planId;
|
|
39696
|
+
if (opts.autoApply !== void 0)
|
|
39697
|
+
args.auto_apply = true;
|
|
39566
39698
|
await ctx.execute({
|
|
39567
39699
|
method: "PUT",
|
|
39568
|
-
path: "/v1/
|
|
39700
|
+
path: "/v1/ai/billing/plans/default",
|
|
39701
|
+
args,
|
|
39702
|
+
queryParamKeys: []
|
|
39703
|
+
});
|
|
39704
|
+
});
|
|
39705
|
+
resource.command("clear-agent-default-plan").description(`Clear the workspace's default AI agent billing plan marker. The plan itself is untouched. 404 when none is set.`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39706
|
+
Examples:
|
|
39707
|
+
hyperline ai-billing clear-agent-default-plan
|
|
39708
|
+
hyperline ai-billing clear-agent-default-plan --output json`).action(async (opts) => {
|
|
39709
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39710
|
+
if (!ctx) {
|
|
39711
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39712
|
+
process.exit(1);
|
|
39713
|
+
}
|
|
39714
|
+
const args = {};
|
|
39715
|
+
if (!opts.yes) {
|
|
39716
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39717
|
+
if (!confirmed) {
|
|
39718
|
+
process.stdout.write("Aborted.\n");
|
|
39719
|
+
return;
|
|
39720
|
+
}
|
|
39721
|
+
}
|
|
39722
|
+
await ctx.execute({
|
|
39723
|
+
method: "DELETE",
|
|
39724
|
+
path: "/v1/ai/billing/plans/default",
|
|
39569
39725
|
args,
|
|
39570
39726
|
queryParamKeys: []
|
|
39571
39727
|
});
|
|
39572
39728
|
});
|
|
39573
|
-
resource.command("
|
|
39729
|
+
resource.command("get-agent-plan").description(`Get one AI agent billing plan by id, with its embedded rate card, window definitions, markups, per-seat grants and minted catalog object ids.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39574
39730
|
Examples:
|
|
39575
|
-
hyperline
|
|
39576
|
-
hyperline agents delete-agent-rate-card --rate-card-id <rate_card_id> --output json`).action(async (opts) => {
|
|
39731
|
+
hyperline ai-billing get-agent-plan --id <id>`).action(async (opts) => {
|
|
39577
39732
|
const ctx = resource.parent?.opts()._ctx;
|
|
39578
39733
|
if (!ctx) {
|
|
39579
39734
|
process.stderr.write("Error: Not authenticated\n");
|
|
39580
39735
|
process.exit(1);
|
|
39581
39736
|
}
|
|
39582
39737
|
const args = {};
|
|
39738
|
+
if (opts.id !== void 0)
|
|
39739
|
+
args.id = opts.id;
|
|
39740
|
+
await ctx.execute({
|
|
39741
|
+
method: "GET",
|
|
39742
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39743
|
+
args,
|
|
39744
|
+
queryParamKeys: []
|
|
39745
|
+
});
|
|
39746
|
+
});
|
|
39747
|
+
resource.command("replace-agent-plan").description(`Replace an AI agent billing plan (whole-row semantics). Changes take effect on the next call for every customer on the plan; mode is immutable. Overage is priced by overage_markup_percent or by overage_rate_card_id, never both.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Human-readable resource name.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39748
|
+
|
|
39749
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39750
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39751
|
+
|
|
39752
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39753
|
+
Examples:
|
|
39754
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name>
|
|
39755
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39756
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --output json`).action(async (opts) => {
|
|
39757
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39758
|
+
if (!ctx) {
|
|
39759
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39760
|
+
process.exit(1);
|
|
39761
|
+
}
|
|
39762
|
+
const args = {};
|
|
39763
|
+
if (opts.id !== void 0)
|
|
39764
|
+
args.id = opts.id;
|
|
39765
|
+
if (opts.name !== void 0)
|
|
39766
|
+
args.name = opts.name;
|
|
39583
39767
|
if (opts.rateCardId !== void 0)
|
|
39584
39768
|
args.rate_card_id = opts.rateCardId;
|
|
39769
|
+
if (opts.overageMode !== void 0)
|
|
39770
|
+
args.overage_mode = opts.overageMode;
|
|
39771
|
+
if (opts.markupPercent !== void 0)
|
|
39772
|
+
args.markup_percent = opts.markupPercent;
|
|
39773
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39774
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39775
|
+
if (opts.overageRateCardId !== void 0)
|
|
39776
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39777
|
+
if (opts.perSeatCredits !== void 0)
|
|
39778
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39779
|
+
if (opts.settlementSchedule !== void 0)
|
|
39780
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39781
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39782
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39783
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39784
|
+
args.grant_rollover_enabled = true;
|
|
39785
|
+
if (opts.windows !== void 0)
|
|
39786
|
+
args.windows = JSON.parse(opts.windows);
|
|
39787
|
+
await ctx.execute({
|
|
39788
|
+
method: "PUT",
|
|
39789
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39790
|
+
args,
|
|
39791
|
+
queryParamKeys: []
|
|
39792
|
+
});
|
|
39793
|
+
});
|
|
39794
|
+
resource.command("delete-agent-plan").description(`Delete an AI agent billing plan. Refused (409, plan_in_use) while any customer is still attached to it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39795
|
+
Examples:
|
|
39796
|
+
hyperline ai-billing delete-agent-plan --id <id>
|
|
39797
|
+
hyperline ai-billing delete-agent-plan --id <id> --output json`).action(async (opts) => {
|
|
39798
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39799
|
+
if (!ctx) {
|
|
39800
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39801
|
+
process.exit(1);
|
|
39802
|
+
}
|
|
39803
|
+
const args = {};
|
|
39804
|
+
if (opts.id !== void 0)
|
|
39805
|
+
args.id = opts.id;
|
|
39585
39806
|
if (!opts.yes) {
|
|
39586
39807
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39587
39808
|
if (!confirmed) {
|
|
@@ -39591,81 +39812,130 @@ Examples:
|
|
|
39591
39812
|
}
|
|
39592
39813
|
await ctx.execute({
|
|
39593
39814
|
method: "DELETE",
|
|
39594
|
-
path: "/v1/
|
|
39815
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39595
39816
|
args,
|
|
39596
39817
|
queryParamKeys: []
|
|
39597
39818
|
});
|
|
39598
39819
|
});
|
|
39599
|
-
resource.command("list-agent-
|
|
39820
|
+
resource.command("list-agent-rate-cards").description(`List AI rate cards: named pricing row sets in credits, window units or currency. Shows what plans/policies/products depend on each. Filter by denomination, currency or name search; paginated with take/skip.`).option("--denomination <value>", `Unit in which rate-card prices are expressed.
|
|
39821
|
+
|
|
39822
|
+
- credits: Credit counts.
|
|
39823
|
+
- units: Weighted rolling-allowance units.
|
|
39824
|
+
- currency: Major units of the specified currency.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--search <value>", `search`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39600
39825
|
Examples:
|
|
39601
|
-
hyperline
|
|
39826
|
+
hyperline ai-billing list-agent-rate-cards
|
|
39827
|
+
hyperline ai-billing list-agent-rate-cards --denomination <denomination> --currency <currency>`).action(async (opts) => {
|
|
39602
39828
|
const ctx = resource.parent?.opts()._ctx;
|
|
39603
39829
|
if (!ctx) {
|
|
39604
39830
|
process.stderr.write("Error: Not authenticated\n");
|
|
39605
39831
|
process.exit(1);
|
|
39606
39832
|
}
|
|
39607
39833
|
const args = {};
|
|
39834
|
+
if (opts.denomination !== void 0)
|
|
39835
|
+
args.denomination = opts.denomination;
|
|
39836
|
+
if (opts.currency !== void 0)
|
|
39837
|
+
args.currency = opts.currency;
|
|
39838
|
+
if (opts.search !== void 0)
|
|
39839
|
+
args.search = opts.search;
|
|
39840
|
+
if (opts.take !== void 0)
|
|
39841
|
+
args.take = Number(opts.take);
|
|
39842
|
+
if (opts.skip !== void 0)
|
|
39843
|
+
args.skip = Number(opts.skip);
|
|
39608
39844
|
await ctx.execute({
|
|
39609
39845
|
method: "GET",
|
|
39610
|
-
path: "/v1/
|
|
39846
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39847
|
+
args,
|
|
39848
|
+
queryParamKeys: ["denomination", "currency", "search", "take", "skip"]
|
|
39849
|
+
});
|
|
39850
|
+
});
|
|
39851
|
+
resource.command("create-agent-rate-card").description(`Create an AI rate card with llm rows (per-1M input/output token rates) and item rows (per-unit rates), a denomination (credits/units/currency) and an optional USD fallback conversion.`).requiredOption("--name <value>", `Human-readable resource name.`).option("--fallback-per-usd <value>", `Credits, allowance units, or major currency units per USD of provider cost. Null leaves unmatched usage unpriced.`).requiredOption("--rows <json>", `All pricing rows on the card; replacement replaces the complete list.`).requiredOption("--denomination <value>", `Unit in which rate-card prices are expressed.
|
|
39852
|
+
|
|
39853
|
+
- credits: Credit counts.
|
|
39854
|
+
- units: Weighted rolling-allowance units.
|
|
39855
|
+
- currency: Major units of the specified currency.`).option("--currency <value>", `ISO 4217 currency code for monetary values. Null for counts or historical amounts without recorded currency.`).addHelpText("after", `
|
|
39856
|
+
Examples:
|
|
39857
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination>
|
|
39858
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --fallback-per-usd <fallback_per_usd> --currency <currency>
|
|
39859
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --output json`).action(async (opts) => {
|
|
39860
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39861
|
+
if (!ctx) {
|
|
39862
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39863
|
+
process.exit(1);
|
|
39864
|
+
}
|
|
39865
|
+
const args = {};
|
|
39866
|
+
if (opts.name !== void 0)
|
|
39867
|
+
args.name = opts.name;
|
|
39868
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39869
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39870
|
+
if (opts.denomination !== void 0)
|
|
39871
|
+
args.denomination = opts.denomination;
|
|
39872
|
+
if (opts.currency !== void 0)
|
|
39873
|
+
args.currency = opts.currency;
|
|
39874
|
+
if (opts.rows !== void 0)
|
|
39875
|
+
args.rows = JSON.parse(opts.rows);
|
|
39876
|
+
await ctx.execute({
|
|
39877
|
+
method: "POST",
|
|
39878
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39611
39879
|
args,
|
|
39612
39880
|
queryParamKeys: []
|
|
39613
39881
|
});
|
|
39614
39882
|
});
|
|
39615
|
-
resource.command("
|
|
39883
|
+
resource.command("get-agent-rate-card").description(`Get one AI rate card by id with all its pricing rows and usage counts (plans, policies, credit product).`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39616
39884
|
Examples:
|
|
39617
|
-
hyperline
|
|
39618
|
-
hyperline agents list-agent-cost-catalog --enabled-only <enabled_only>`).action(async (opts) => {
|
|
39885
|
+
hyperline ai-billing get-agent-rate-card --id <id>`).action(async (opts) => {
|
|
39619
39886
|
const ctx = resource.parent?.opts()._ctx;
|
|
39620
39887
|
if (!ctx) {
|
|
39621
39888
|
process.stderr.write("Error: Not authenticated\n");
|
|
39622
39889
|
process.exit(1);
|
|
39623
39890
|
}
|
|
39624
39891
|
const args = {};
|
|
39625
|
-
if (opts.
|
|
39626
|
-
args.
|
|
39892
|
+
if (opts.id !== void 0)
|
|
39893
|
+
args.id = opts.id;
|
|
39627
39894
|
await ctx.execute({
|
|
39628
39895
|
method: "GET",
|
|
39629
|
-
path: "/v1/
|
|
39896
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39630
39897
|
args,
|
|
39631
|
-
queryParamKeys: [
|
|
39898
|
+
queryParamKeys: []
|
|
39632
39899
|
});
|
|
39633
39900
|
});
|
|
39634
|
-
resource.command("
|
|
39901
|
+
resource.command("replace-agent-rate-card").description(`Replace an AI rate card's rows, name and USD fallback (whole-card semantics). Denomination and currency are immutable.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Human-readable resource name.`).option("--fallback-per-usd <value>", `Credits, allowance units, or major currency units per USD of provider cost. Null leaves unmatched usage unpriced.`).requiredOption("--rows <json>", `All pricing rows on the card; replacement replaces the complete list.`).addHelpText("after", `
|
|
39635
39902
|
Examples:
|
|
39636
|
-
hyperline
|
|
39637
|
-
hyperline
|
|
39903
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows>
|
|
39904
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --fallback-per-usd <fallback_per_usd>
|
|
39905
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --output json`).action(async (opts) => {
|
|
39638
39906
|
const ctx = resource.parent?.opts()._ctx;
|
|
39639
39907
|
if (!ctx) {
|
|
39640
39908
|
process.stderr.write("Error: Not authenticated\n");
|
|
39641
39909
|
process.exit(1);
|
|
39642
39910
|
}
|
|
39643
39911
|
const args = {};
|
|
39644
|
-
if (opts.
|
|
39645
|
-
args.
|
|
39646
|
-
if (opts.
|
|
39647
|
-
args.
|
|
39648
|
-
if (opts.
|
|
39649
|
-
args.
|
|
39912
|
+
if (opts.id !== void 0)
|
|
39913
|
+
args.id = opts.id;
|
|
39914
|
+
if (opts.name !== void 0)
|
|
39915
|
+
args.name = opts.name;
|
|
39916
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39917
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39918
|
+
if (opts.rows !== void 0)
|
|
39919
|
+
args.rows = JSON.parse(opts.rows);
|
|
39650
39920
|
await ctx.execute({
|
|
39651
|
-
method: "
|
|
39652
|
-
path: "/v1/
|
|
39921
|
+
method: "PUT",
|
|
39922
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39653
39923
|
args,
|
|
39654
39924
|
queryParamKeys: []
|
|
39655
39925
|
});
|
|
39656
39926
|
});
|
|
39657
|
-
resource.command("delete-agent-
|
|
39927
|
+
resource.command("delete-agent-rate-card").description(`Delete an AI rate card. Refused (409, rate_card_in_use) while any plan, credit product or customer policy still uses it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39658
39928
|
Examples:
|
|
39659
|
-
hyperline
|
|
39660
|
-
hyperline
|
|
39929
|
+
hyperline ai-billing delete-agent-rate-card --id <id>
|
|
39930
|
+
hyperline ai-billing delete-agent-rate-card --id <id> --output json`).action(async (opts) => {
|
|
39661
39931
|
const ctx = resource.parent?.opts()._ctx;
|
|
39662
39932
|
if (!ctx) {
|
|
39663
39933
|
process.stderr.write("Error: Not authenticated\n");
|
|
39664
39934
|
process.exit(1);
|
|
39665
39935
|
}
|
|
39666
39936
|
const args = {};
|
|
39667
|
-
if (opts.
|
|
39668
|
-
args.
|
|
39937
|
+
if (opts.id !== void 0)
|
|
39938
|
+
args.id = opts.id;
|
|
39669
39939
|
if (!opts.yes) {
|
|
39670
39940
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39671
39941
|
if (!confirmed) {
|
|
@@ -39675,55 +39945,123 @@ Examples:
|
|
|
39675
39945
|
}
|
|
39676
39946
|
await ctx.execute({
|
|
39677
39947
|
method: "DELETE",
|
|
39678
|
-
path: "/v1/
|
|
39948
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39679
39949
|
args,
|
|
39680
39950
|
queryParamKeys: []
|
|
39681
39951
|
});
|
|
39682
39952
|
});
|
|
39683
|
-
resource.command("
|
|
39953
|
+
resource.command("list-agent-customer-policies").description(`List all AI billing policies (scopes) for one customer: the default shared pool plus per-agent overrides. Accepts Hyperline or external customer ids.`).requiredOption("--id <value>", `id parameter`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39954
|
+
Examples:
|
|
39955
|
+
hyperline ai-billing list-agent-customer-policies --id <id>
|
|
39956
|
+
hyperline ai-billing list-agent-customer-policies --id <id> --take <take>`).action(async (opts) => {
|
|
39957
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39958
|
+
if (!ctx) {
|
|
39959
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39960
|
+
process.exit(1);
|
|
39961
|
+
}
|
|
39962
|
+
const args = {};
|
|
39963
|
+
if (opts.id !== void 0)
|
|
39964
|
+
args.id = opts.id;
|
|
39965
|
+
if (opts.take !== void 0)
|
|
39966
|
+
args.take = Number(opts.take);
|
|
39967
|
+
if (opts.skip !== void 0)
|
|
39968
|
+
args.skip = Number(opts.skip);
|
|
39969
|
+
await ctx.execute({
|
|
39970
|
+
method: "GET",
|
|
39971
|
+
path: "/v1/ai/billing/customers/{id}/policies",
|
|
39972
|
+
args,
|
|
39973
|
+
queryParamKeys: ["take", "skip"]
|
|
39974
|
+
});
|
|
39975
|
+
});
|
|
39976
|
+
resource.command("get-default-customer-billing-policy").description(`Get the exact customer billing policy addressed by this resource; agent policies never fall back to the shared pool.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39977
|
+
Examples:
|
|
39978
|
+
hyperline ai-billing get-default-customer-billing-policy --id <id>`).action(async (opts) => {
|
|
39979
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39980
|
+
if (!ctx) {
|
|
39981
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39982
|
+
process.exit(1);
|
|
39983
|
+
}
|
|
39984
|
+
const args = {};
|
|
39985
|
+
if (opts.id !== void 0)
|
|
39986
|
+
args.id = opts.id;
|
|
39987
|
+
await ctx.execute({
|
|
39988
|
+
method: "GET",
|
|
39989
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39990
|
+
args,
|
|
39991
|
+
queryParamKeys: []
|
|
39992
|
+
});
|
|
39993
|
+
});
|
|
39994
|
+
resource.command("upsert-default-customer-billing-policy").description(`Replace customer billing settings while preserving omitted plan_id and rate_card_id references; null detaches them, and a shared policy enables automatic telemetry billing.`).requiredOption("--id <value>", `id parameter`).requiredOption("--mode <value>", `Billing mode.
|
|
39995
|
+
|
|
39996
|
+
- wallet: Charges a monetary wallet.
|
|
39997
|
+
- credits: Consumes a credit balance.
|
|
39998
|
+
- windows: Meters weighted units against rolling allowances.`).option("--wallet-id <value>", `Customer wallet identifier. Omit on wallet policy writes to provision or reuse the customer's wallet.`).option("--credit-product-id <value>", `Public credit product identifier whose balance this policy consumes.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39999
|
+
|
|
40000
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
40001
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--overage-wallet-id <value>", `Wallet charged for overage. Null bills overage in arrears.`).option("--floor <value>", `Minimum available balance a spend check requires, in the policy's denomination.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
40002
|
+
|
|
40003
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).requiredOption("--blocked", `Whether spending is disabled for this billing scope.`).addHelpText("after", `
|
|
39684
40004
|
Examples:
|
|
39685
|
-
hyperline
|
|
39686
|
-
hyperline
|
|
39687
|
-
hyperline
|
|
40005
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked
|
|
40006
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --wallet-id <wallet_id> --credit-product-id <credit_product_id>
|
|
40007
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39688
40008
|
const ctx = resource.parent?.opts()._ctx;
|
|
39689
40009
|
if (!ctx) {
|
|
39690
40010
|
process.stderr.write("Error: Not authenticated\n");
|
|
39691
40011
|
process.exit(1);
|
|
39692
40012
|
}
|
|
39693
40013
|
const args = {};
|
|
39694
|
-
if (opts.
|
|
39695
|
-
args.
|
|
39696
|
-
if (opts.
|
|
39697
|
-
args.
|
|
39698
|
-
if (opts.
|
|
39699
|
-
args.
|
|
39700
|
-
if (opts.
|
|
39701
|
-
args.
|
|
39702
|
-
if (opts.
|
|
39703
|
-
args.
|
|
39704
|
-
if (opts.
|
|
39705
|
-
args.
|
|
39706
|
-
if (opts.
|
|
39707
|
-
args.
|
|
40014
|
+
if (opts.id !== void 0)
|
|
40015
|
+
args.id = opts.id;
|
|
40016
|
+
if (opts.mode !== void 0)
|
|
40017
|
+
args.mode = opts.mode;
|
|
40018
|
+
if (opts.walletId !== void 0)
|
|
40019
|
+
args.wallet_id = opts.walletId;
|
|
40020
|
+
if (opts.creditProductId !== void 0)
|
|
40021
|
+
args.credit_product_id = opts.creditProductId;
|
|
40022
|
+
if (opts.markupPercent !== void 0)
|
|
40023
|
+
args.markup_percent = opts.markupPercent;
|
|
40024
|
+
if (opts.overageMode !== void 0)
|
|
40025
|
+
args.overage_mode = opts.overageMode;
|
|
40026
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
40027
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
40028
|
+
if (opts.overageRateCardId !== void 0)
|
|
40029
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
40030
|
+
if (opts.overageWalletId !== void 0)
|
|
40031
|
+
args.overage_wallet_id = opts.overageWalletId;
|
|
40032
|
+
if (opts.floor !== void 0)
|
|
40033
|
+
args.floor = opts.floor;
|
|
40034
|
+
if (opts.settlementSchedule !== void 0)
|
|
40035
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
40036
|
+
if (opts.rateCardId !== void 0)
|
|
40037
|
+
args.rate_card_id = opts.rateCardId;
|
|
40038
|
+
if (opts.planId !== void 0)
|
|
40039
|
+
args.plan_id = opts.planId;
|
|
40040
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
40041
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
40042
|
+
if (opts.blocked !== void 0)
|
|
40043
|
+
args.blocked = true;
|
|
40044
|
+
if (opts.windows !== void 0)
|
|
40045
|
+
args.windows = JSON.parse(opts.windows);
|
|
39708
40046
|
await ctx.execute({
|
|
39709
40047
|
method: "PUT",
|
|
39710
|
-
path: "/v1/
|
|
40048
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39711
40049
|
args,
|
|
39712
40050
|
queryParamKeys: []
|
|
39713
40051
|
});
|
|
39714
40052
|
});
|
|
39715
|
-
resource.command("delete-
|
|
40053
|
+
resource.command("delete-default-customer-billing-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39716
40054
|
Examples:
|
|
39717
|
-
hyperline
|
|
39718
|
-
hyperline
|
|
40055
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id>
|
|
40056
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id> --output json`).action(async (opts) => {
|
|
39719
40057
|
const ctx = resource.parent?.opts()._ctx;
|
|
39720
40058
|
if (!ctx) {
|
|
39721
40059
|
process.stderr.write("Error: Not authenticated\n");
|
|
39722
40060
|
process.exit(1);
|
|
39723
40061
|
}
|
|
39724
40062
|
const args = {};
|
|
39725
|
-
if (opts.
|
|
39726
|
-
args.
|
|
40063
|
+
if (opts.id !== void 0)
|
|
40064
|
+
args.id = opts.id;
|
|
39727
40065
|
if (!opts.yes) {
|
|
39728
40066
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39729
40067
|
if (!confirmed) {
|
|
@@ -39733,51 +40071,32 @@ Examples:
|
|
|
39733
40071
|
}
|
|
39734
40072
|
await ctx.execute({
|
|
39735
40073
|
method: "DELETE",
|
|
39736
|
-
path: "/v1/
|
|
40074
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39737
40075
|
args,
|
|
39738
40076
|
queryParamKeys: []
|
|
39739
40077
|
});
|
|
39740
40078
|
});
|
|
39741
|
-
resource.command("
|
|
40079
|
+
resource.command("get-agent-customer-billing-policy").description(`Get the exact customer billing policy addressed by this resource; agent policies never fall back to the shared pool.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).addHelpText("after", `
|
|
39742
40080
|
Examples:
|
|
39743
|
-
hyperline
|
|
40081
|
+
hyperline ai-billing get-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
39744
40082
|
const ctx = resource.parent?.opts()._ctx;
|
|
39745
40083
|
if (!ctx) {
|
|
39746
40084
|
process.stderr.write("Error: Not authenticated\n");
|
|
39747
40085
|
process.exit(1);
|
|
39748
40086
|
}
|
|
39749
40087
|
const args = {};
|
|
39750
|
-
if (opts.
|
|
39751
|
-
args.
|
|
40088
|
+
if (opts.id !== void 0)
|
|
40089
|
+
args.id = opts.id;
|
|
40090
|
+
if (opts.agentSlug !== void 0)
|
|
40091
|
+
args.agent_slug = opts.agentSlug;
|
|
39752
40092
|
await ctx.execute({
|
|
39753
40093
|
method: "GET",
|
|
39754
|
-
path: "/v1/
|
|
40094
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39755
40095
|
args,
|
|
39756
40096
|
queryParamKeys: []
|
|
39757
40097
|
});
|
|
39758
40098
|
});
|
|
39759
|
-
resource.command("
|
|
39760
|
-
Examples:
|
|
39761
|
-
hyperline agents get-agent-customer-policy --customer-id <customer_id>
|
|
39762
|
-
hyperline agents get-agent-customer-policy --customer-id <customer_id> --agent <agent>`).action(async (opts) => {
|
|
39763
|
-
const ctx = resource.parent?.opts()._ctx;
|
|
39764
|
-
if (!ctx) {
|
|
39765
|
-
process.stderr.write("Error: Not authenticated\n");
|
|
39766
|
-
process.exit(1);
|
|
39767
|
-
}
|
|
39768
|
-
const args = {};
|
|
39769
|
-
if (opts.customerId !== void 0)
|
|
39770
|
-
args.customer_id = opts.customerId;
|
|
39771
|
-
if (opts.agent !== void 0)
|
|
39772
|
-
args.agent = opts.agent;
|
|
39773
|
-
await ctx.execute({
|
|
39774
|
-
method: "GET",
|
|
39775
|
-
path: "/v1/agents/customers/{customer_id}/policy",
|
|
39776
|
-
args,
|
|
39777
|
-
queryParamKeys: ["agent"]
|
|
39778
|
-
});
|
|
39779
|
-
});
|
|
39780
|
-
resource.command("upsert-agent-customer-policy").description(`Create or replace one customer's AI billing policy (whole-row). Pass plan_id to attach the customer to a billing plan \u2014 this also attaches the plan's overage invoice container to their subscription. Past-limit usage is priced by overage_markup_percent over the base rates, or by overage_rate_card_id (a currency rate card whose rates ARE the overage price) \u2014 never both. Wallet/credit pots are auto-opened empty.`).requiredOption("--customer-id <value>", `customer_id parameter`).option("--agent <value>", `Agent scope identifier. Null on scoped results denotes the customer's shared pool.`).requiredOption("--mode <value>", `Billing mode.
|
|
40099
|
+
resource.command("upsert-agent-customer-billing-policy").description(`Replace customer billing settings while preserving omitted plan_id and rate_card_id references; null detaches them, and a shared policy enables automatic telemetry billing.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).requiredOption("--mode <value>", `Billing mode.
|
|
39781
40100
|
|
|
39782
40101
|
- wallet: Charges a monetary wallet.
|
|
39783
40102
|
- credits: Consumes a credit balance.
|
|
@@ -39786,21 +40105,21 @@ Examples:
|
|
|
39786
40105
|
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39787
40106
|
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--overage-wallet-id <value>", `Wallet charged for overage. Null bills overage in arrears.`).option("--floor <value>", `Minimum available balance a spend check requires, in the policy's denomination.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39788
40107
|
|
|
39789
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).option("--
|
|
40108
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).requiredOption("--blocked", `Whether spending is disabled for this billing scope.`).addHelpText("after", `
|
|
39790
40109
|
Examples:
|
|
39791
|
-
hyperline
|
|
39792
|
-
hyperline
|
|
39793
|
-
hyperline
|
|
40110
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked
|
|
40111
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked --wallet-id <wallet_id> --credit-product-id <credit_product_id>
|
|
40112
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39794
40113
|
const ctx = resource.parent?.opts()._ctx;
|
|
39795
40114
|
if (!ctx) {
|
|
39796
40115
|
process.stderr.write("Error: Not authenticated\n");
|
|
39797
40116
|
process.exit(1);
|
|
39798
40117
|
}
|
|
39799
40118
|
const args = {};
|
|
39800
|
-
if (opts.
|
|
39801
|
-
args.
|
|
39802
|
-
if (opts.
|
|
39803
|
-
args.
|
|
40119
|
+
if (opts.id !== void 0)
|
|
40120
|
+
args.id = opts.id;
|
|
40121
|
+
if (opts.agentSlug !== void 0)
|
|
40122
|
+
args.agent_slug = opts.agentSlug;
|
|
39804
40123
|
if (opts.mode !== void 0)
|
|
39805
40124
|
args.mode = opts.mode;
|
|
39806
40125
|
if (opts.walletId !== void 0)
|
|
@@ -39829,32 +40148,29 @@ Examples:
|
|
|
39829
40148
|
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39830
40149
|
if (opts.blocked !== void 0)
|
|
39831
40150
|
args.blocked = true;
|
|
39832
|
-
if (opts.
|
|
39833
|
-
args.
|
|
39834
|
-
if (opts.windowRates !== void 0)
|
|
39835
|
-
args.window_rates = JSON.parse(opts.windowRates);
|
|
40151
|
+
if (opts.windows !== void 0)
|
|
40152
|
+
args.windows = JSON.parse(opts.windows);
|
|
39836
40153
|
await ctx.execute({
|
|
39837
40154
|
method: "PUT",
|
|
39838
|
-
path: "/v1/
|
|
40155
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39839
40156
|
args,
|
|
39840
|
-
queryParamKeys: [
|
|
40157
|
+
queryParamKeys: []
|
|
39841
40158
|
});
|
|
39842
40159
|
});
|
|
39843
|
-
resource.command("delete-agent-customer-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--
|
|
40160
|
+
resource.command("delete-agent-customer-billing-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39844
40161
|
Examples:
|
|
39845
|
-
hyperline
|
|
39846
|
-
hyperline
|
|
39847
|
-
hyperline agents delete-agent-customer-policy --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
40162
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>
|
|
40163
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --output json`).action(async (opts) => {
|
|
39848
40164
|
const ctx = resource.parent?.opts()._ctx;
|
|
39849
40165
|
if (!ctx) {
|
|
39850
40166
|
process.stderr.write("Error: Not authenticated\n");
|
|
39851
40167
|
process.exit(1);
|
|
39852
40168
|
}
|
|
39853
40169
|
const args = {};
|
|
39854
|
-
if (opts.
|
|
39855
|
-
args.
|
|
39856
|
-
if (opts.
|
|
39857
|
-
args.
|
|
40170
|
+
if (opts.id !== void 0)
|
|
40171
|
+
args.id = opts.id;
|
|
40172
|
+
if (opts.agentSlug !== void 0)
|
|
40173
|
+
args.agent_slug = opts.agentSlug;
|
|
39858
40174
|
if (!opts.yes) {
|
|
39859
40175
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39860
40176
|
if (!confirmed) {
|
|
@@ -39864,87 +40180,87 @@ Examples:
|
|
|
39864
40180
|
}
|
|
39865
40181
|
await ctx.execute({
|
|
39866
40182
|
method: "DELETE",
|
|
39867
|
-
path: "/v1/
|
|
40183
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39868
40184
|
args,
|
|
39869
|
-
queryParamKeys: [
|
|
40185
|
+
queryParamKeys: []
|
|
39870
40186
|
});
|
|
39871
40187
|
});
|
|
39872
|
-
resource.command("apply-agent-default-plan").description(`Apply the workspace's default AI agent billing plan to one customer (by id or external id). Idempotent; refuses (409) if the customer already has a different billing policy, 404 when no default plan is set.`).requiredOption("--
|
|
40188
|
+
resource.command("apply-agent-default-plan").description(`Apply the workspace's default AI agent billing plan to one customer (by id or external id). Idempotent; refuses (409) if the customer already has a different billing policy, 404 when no default plan is set.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39873
40189
|
Examples:
|
|
39874
|
-
hyperline
|
|
39875
|
-
hyperline
|
|
40190
|
+
hyperline ai-billing apply-agent-default-plan --id <id>
|
|
40191
|
+
hyperline ai-billing apply-agent-default-plan --id <id> --output json`).action(async (opts) => {
|
|
39876
40192
|
const ctx = resource.parent?.opts()._ctx;
|
|
39877
40193
|
if (!ctx) {
|
|
39878
40194
|
process.stderr.write("Error: Not authenticated\n");
|
|
39879
40195
|
process.exit(1);
|
|
39880
40196
|
}
|
|
39881
40197
|
const args = {};
|
|
39882
|
-
if (opts.
|
|
39883
|
-
args.
|
|
40198
|
+
if (opts.id !== void 0)
|
|
40199
|
+
args.id = opts.id;
|
|
39884
40200
|
await ctx.execute({
|
|
39885
40201
|
method: "POST",
|
|
39886
|
-
path: "/v1/
|
|
40202
|
+
path: "/v1/ai/billing/customers/{id}/apply-default-plan",
|
|
39887
40203
|
args,
|
|
39888
40204
|
queryParamKeys: []
|
|
39889
40205
|
});
|
|
39890
40206
|
});
|
|
39891
|
-
resource.command("get-agent-customer-balance").description(`Get one customer's live AI balance, shaped by their billing mode: wallet shadow balance, credit pot, or rolling window meters with reset times. Includes per-agent scopes and overage state.`).requiredOption("--
|
|
40207
|
+
resource.command("get-agent-customer-balance").description(`Get one customer's live AI balance, shaped by their billing mode: wallet shadow balance, credit pot, or rolling window meters with reset times. Includes per-agent scopes and overage state.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Agent scope identifier. Null is the customer's shared pool.`).addHelpText("after", `
|
|
39892
40208
|
Examples:
|
|
39893
|
-
hyperline
|
|
39894
|
-
hyperline
|
|
40209
|
+
hyperline ai-billing get-agent-customer-balance --id <id>
|
|
40210
|
+
hyperline ai-billing get-agent-customer-balance --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
39895
40211
|
const ctx = resource.parent?.opts()._ctx;
|
|
39896
40212
|
if (!ctx) {
|
|
39897
40213
|
process.stderr.write("Error: Not authenticated\n");
|
|
39898
40214
|
process.exit(1);
|
|
39899
40215
|
}
|
|
39900
40216
|
const args = {};
|
|
39901
|
-
if (opts.
|
|
39902
|
-
args.
|
|
39903
|
-
if (opts.
|
|
39904
|
-
args.
|
|
40217
|
+
if (opts.id !== void 0)
|
|
40218
|
+
args.id = opts.id;
|
|
40219
|
+
if (opts.agentSlug !== void 0)
|
|
40220
|
+
args.agent_slug = opts.agentSlug;
|
|
39905
40221
|
await ctx.execute({
|
|
39906
40222
|
method: "GET",
|
|
39907
|
-
path: "/v1/
|
|
40223
|
+
path: "/v1/ai/billing/customers/{id}/balance",
|
|
39908
40224
|
args,
|
|
39909
|
-
queryParamKeys: ["
|
|
40225
|
+
queryParamKeys: ["agent_slug"]
|
|
39910
40226
|
});
|
|
39911
40227
|
});
|
|
39912
|
-
resource.command("reset-agent-customer-windows").description(`Reset one customer's open AI allowance windows so their next call starts a fresh full allowance. Windows-mode scopes only.`).requiredOption("--
|
|
40228
|
+
resource.command("reset-agent-customer-windows").description(`Reset one customer's open AI allowance windows so their next call starts a fresh full allowance. Windows-mode scopes only.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Agent scope identifier. Null is the customer's shared pool.`).addHelpText("after", `
|
|
39913
40229
|
Examples:
|
|
39914
|
-
hyperline
|
|
39915
|
-
hyperline
|
|
39916
|
-
hyperline
|
|
40230
|
+
hyperline ai-billing reset-agent-customer-windows --id <id>
|
|
40231
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --agent-slug <agent_slug>
|
|
40232
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --output json`).action(async (opts) => {
|
|
39917
40233
|
const ctx = resource.parent?.opts()._ctx;
|
|
39918
40234
|
if (!ctx) {
|
|
39919
40235
|
process.stderr.write("Error: Not authenticated\n");
|
|
39920
40236
|
process.exit(1);
|
|
39921
40237
|
}
|
|
39922
40238
|
const args = {};
|
|
39923
|
-
if (opts.
|
|
39924
|
-
args.
|
|
39925
|
-
if (opts.
|
|
39926
|
-
args.
|
|
40239
|
+
if (opts.id !== void 0)
|
|
40240
|
+
args.id = opts.id;
|
|
40241
|
+
if (opts.agentSlug !== void 0)
|
|
40242
|
+
args.agent_slug = opts.agentSlug;
|
|
39927
40243
|
await ctx.execute({
|
|
39928
40244
|
method: "POST",
|
|
39929
|
-
path: "/v1/
|
|
40245
|
+
path: "/v1/ai/billing/customers/{id}/windows/reset",
|
|
39930
40246
|
args,
|
|
39931
|
-
queryParamKeys: ["
|
|
40247
|
+
queryParamKeys: ["agent_slug"]
|
|
39932
40248
|
});
|
|
39933
40249
|
});
|
|
39934
|
-
resource.command("list-agent-customer-consumption").description(`List one customer's AI consumption ledger entries, newest first, with amounts, denominations and overage flags. Filter by agent scope, overage, and from/to time range; paginated with take/skip.`).requiredOption("--
|
|
40250
|
+
resource.command("list-agent-customer-consumption").description(`List one customer's AI consumption ledger entries, newest first, with amounts, denominations and overage flags. Filter by agent scope, overage, and from/to time range; paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Billing scope: an empty string selects the shared pool; omission includes all scopes.`).option("--overage <value>", `Filter by overage status; omission includes both ordinary and overage entries.`).option("--from <value>", `UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--to <value>", `UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39935
40251
|
Examples:
|
|
39936
|
-
hyperline
|
|
39937
|
-
hyperline
|
|
40252
|
+
hyperline ai-billing list-agent-customer-consumption --id <id>
|
|
40253
|
+
hyperline ai-billing list-agent-customer-consumption --id <id> --agent-slug <agent_slug> --overage <overage>`).action(async (opts) => {
|
|
39938
40254
|
const ctx = resource.parent?.opts()._ctx;
|
|
39939
40255
|
if (!ctx) {
|
|
39940
40256
|
process.stderr.write("Error: Not authenticated\n");
|
|
39941
40257
|
process.exit(1);
|
|
39942
40258
|
}
|
|
39943
40259
|
const args = {};
|
|
39944
|
-
if (opts.
|
|
39945
|
-
args.
|
|
39946
|
-
if (opts.
|
|
39947
|
-
args.
|
|
40260
|
+
if (opts.id !== void 0)
|
|
40261
|
+
args.id = opts.id;
|
|
40262
|
+
if (opts.agentSlug !== void 0)
|
|
40263
|
+
args.agent_slug = opts.agentSlug;
|
|
39948
40264
|
if (opts.overage !== void 0)
|
|
39949
40265
|
args.overage = opts.overage;
|
|
39950
40266
|
if (opts.from !== void 0)
|
|
@@ -39957,106 +40273,131 @@ Examples:
|
|
|
39957
40273
|
args.skip = Number(opts.skip);
|
|
39958
40274
|
await ctx.execute({
|
|
39959
40275
|
method: "GET",
|
|
39960
|
-
path: "/v1/
|
|
40276
|
+
path: "/v1/ai/billing/customers/{id}/consumption",
|
|
39961
40277
|
args,
|
|
39962
|
-
queryParamKeys: ["
|
|
40278
|
+
queryParamKeys: ["agent_slug", "overage", "from", "to", "take", "skip"]
|
|
39963
40279
|
});
|
|
39964
40280
|
});
|
|
39965
|
-
resource.command("get-
|
|
40281
|
+
resource.command("get-product-ai-rate-card").description(`Get the default AI rate-card reference for a credit product, or 404 when none is attached.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39966
40282
|
Examples:
|
|
39967
|
-
hyperline
|
|
40283
|
+
hyperline ai-billing get-product-ai-rate-card --id <id>`).action(async (opts) => {
|
|
39968
40284
|
const ctx = resource.parent?.opts()._ctx;
|
|
39969
40285
|
if (!ctx) {
|
|
39970
40286
|
process.stderr.write("Error: Not authenticated\n");
|
|
39971
40287
|
process.exit(1);
|
|
39972
40288
|
}
|
|
39973
40289
|
const args = {};
|
|
39974
|
-
if (opts.
|
|
39975
|
-
args.
|
|
40290
|
+
if (opts.id !== void 0)
|
|
40291
|
+
args.id = opts.id;
|
|
39976
40292
|
await ctx.execute({
|
|
39977
40293
|
method: "GET",
|
|
39978
|
-
path: "/v1/
|
|
40294
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40295
|
+
args,
|
|
40296
|
+
queryParamKeys: []
|
|
40297
|
+
});
|
|
40298
|
+
});
|
|
40299
|
+
resource.command("set-product-ai-rate-card").description(`Attach a credits-denominated AI rate card with complete fallback pricing as the credit product's default.`).requiredOption("--id <value>", `id parameter`).requiredOption("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).addHelpText("after", `
|
|
40300
|
+
Examples:
|
|
40301
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id>
|
|
40302
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id> --output json`).action(async (opts) => {
|
|
40303
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40304
|
+
if (!ctx) {
|
|
40305
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40306
|
+
process.exit(1);
|
|
40307
|
+
}
|
|
40308
|
+
const args = {};
|
|
40309
|
+
if (opts.id !== void 0)
|
|
40310
|
+
args.id = opts.id;
|
|
40311
|
+
if (opts.rateCardId !== void 0)
|
|
40312
|
+
args.rate_card_id = opts.rateCardId;
|
|
40313
|
+
await ctx.execute({
|
|
40314
|
+
method: "PUT",
|
|
40315
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40316
|
+
args,
|
|
40317
|
+
queryParamKeys: []
|
|
40318
|
+
});
|
|
40319
|
+
});
|
|
40320
|
+
resource.command("clear-product-ai-rate-card").description(`Detach a credit product's default AI rate card without deleting the card, or return 404 when none is attached.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40321
|
+
Examples:
|
|
40322
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id>
|
|
40323
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id> --output json`).action(async (opts) => {
|
|
40324
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40325
|
+
if (!ctx) {
|
|
40326
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40327
|
+
process.exit(1);
|
|
40328
|
+
}
|
|
40329
|
+
const args = {};
|
|
40330
|
+
if (opts.id !== void 0)
|
|
40331
|
+
args.id = opts.id;
|
|
40332
|
+
if (!opts.yes) {
|
|
40333
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40334
|
+
if (!confirmed) {
|
|
40335
|
+
process.stdout.write("Aborted.\n");
|
|
40336
|
+
return;
|
|
40337
|
+
}
|
|
40338
|
+
}
|
|
40339
|
+
await ctx.execute({
|
|
40340
|
+
method: "DELETE",
|
|
40341
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
39979
40342
|
args,
|
|
39980
40343
|
queryParamKeys: []
|
|
39981
40344
|
});
|
|
39982
40345
|
});
|
|
39983
40346
|
}
|
|
39984
40347
|
|
|
39985
|
-
// build/commands/generated/
|
|
39986
|
-
function
|
|
39987
|
-
const resource = parent.command("
|
|
39988
|
-
resource.command("list").description(`List
|
|
40348
|
+
// build/commands/generated/ai-costs.js
|
|
40349
|
+
function registerAi_CostsCommands(parent) {
|
|
40350
|
+
const resource = parent.command("ai-costs").description("Manage ai > costs");
|
|
40351
|
+
resource.command("list-agent-cost-catalog").description(`List the AI cost catalog: registry model prices merged with this workspace's negotiated overrides, its own custom cost items (source custom), and the unpriced pairs its telemetry has carried (source unlisted). Rates are USD decimal strings. Pass enabled_only=true for just the enabled catalog.`).option("--take <number>", `Maximum catalog entries to return.`).option("--skip <number>", `skip`).option("--enabled-only <value>", `enabled_only`).addHelpText("after", `
|
|
39989
40352
|
Examples:
|
|
39990
|
-
hyperline
|
|
39991
|
-
hyperline
|
|
40353
|
+
hyperline ai-costs list-agent-cost-catalog
|
|
40354
|
+
hyperline ai-costs list-agent-cost-catalog --take <take> --enabled-only <enabled_only>`).action(async (opts) => {
|
|
39992
40355
|
const ctx = resource.parent?.opts()._ctx;
|
|
39993
40356
|
if (!ctx) {
|
|
39994
40357
|
process.stderr.write("Error: Not authenticated\n");
|
|
39995
40358
|
process.exit(1);
|
|
39996
40359
|
}
|
|
39997
40360
|
const args = {};
|
|
40361
|
+
if (opts.enabledOnly !== void 0)
|
|
40362
|
+
args.enabled_only = opts.enabledOnly;
|
|
39998
40363
|
if (opts.take !== void 0)
|
|
39999
40364
|
args.take = Number(opts.take);
|
|
40000
40365
|
if (opts.skip !== void 0)
|
|
40001
40366
|
args.skip = Number(opts.skip);
|
|
40002
40367
|
await ctx.execute({
|
|
40003
40368
|
method: "GET",
|
|
40004
|
-
path: "/v1/
|
|
40369
|
+
path: "/v1/ai/billing/costs",
|
|
40005
40370
|
args,
|
|
40006
|
-
queryParamKeys: ["take", "skip"]
|
|
40371
|
+
queryParamKeys: ["take", "skip", "enabled_only"]
|
|
40007
40372
|
});
|
|
40008
40373
|
});
|
|
40009
|
-
resource.command("create").description(`Create a
|
|
40374
|
+
resource.command("create-agent-cost-catalog-item").description(`Create a custom provider/item cost; an existing pair returns 200 with its unchanged rates, so use PUT /v1/ai/billing/costs/items/:id to edit it.`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--item <value>", `Custom item name matching the usage payload.`).requiredOption("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40010
40375
|
Examples:
|
|
40011
|
-
hyperline
|
|
40012
|
-
hyperline
|
|
40013
|
-
hyperline aggregators create --entity <entity> --operation <operation> --output json`).action(async (opts) => {
|
|
40376
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions>
|
|
40377
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40014
40378
|
const ctx = resource.parent?.opts()._ctx;
|
|
40015
40379
|
if (!ctx) {
|
|
40016
40380
|
process.stderr.write("Error: Not authenticated\n");
|
|
40017
40381
|
process.exit(1);
|
|
40018
40382
|
}
|
|
40019
40383
|
const args = {};
|
|
40020
|
-
if (opts.
|
|
40021
|
-
args.
|
|
40022
|
-
if (opts.
|
|
40023
|
-
args.
|
|
40024
|
-
if (opts.
|
|
40025
|
-
args.
|
|
40026
|
-
if (opts.description !== void 0)
|
|
40027
|
-
args.description = opts.description;
|
|
40028
|
-
if (opts.customEventName !== void 0)
|
|
40029
|
-
args.custom_event_name = opts.customEventName;
|
|
40030
|
-
if (opts.unitName !== void 0)
|
|
40031
|
-
args.unit_name = opts.unitName;
|
|
40032
|
-
if (opts.defaultIntervalPeriod !== void 0)
|
|
40033
|
-
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
40034
|
-
if (opts.operation !== void 0)
|
|
40035
|
-
args.operation = opts.operation;
|
|
40036
|
-
if (opts.property !== void 0)
|
|
40037
|
-
args.property = opts.property;
|
|
40038
|
-
if (opts.defaultIntervalCount !== void 0)
|
|
40039
|
-
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
40040
|
-
if (opts.allowNegativeValues !== void 0)
|
|
40041
|
-
args.allow_negative_values = true;
|
|
40042
|
-
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
40043
|
-
args.aggregate_on_customers_enabled = true;
|
|
40044
|
-
if (opts.where !== void 0)
|
|
40045
|
-
args.where = JSON.parse(opts.where);
|
|
40046
|
-
if (opts.exposedEventKeys !== void 0)
|
|
40047
|
-
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
40048
|
-
if (opts.thresholds !== void 0)
|
|
40049
|
-
args.thresholds = JSON.parse(opts.thresholds);
|
|
40384
|
+
if (opts.provider !== void 0)
|
|
40385
|
+
args.provider = opts.provider;
|
|
40386
|
+
if (opts.item !== void 0)
|
|
40387
|
+
args.item = opts.item;
|
|
40388
|
+
if (opts.dimensions !== void 0)
|
|
40389
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40050
40390
|
await ctx.execute({
|
|
40051
40391
|
method: "POST",
|
|
40052
|
-
path: "/v1/
|
|
40392
|
+
path: "/v1/ai/billing/costs/items",
|
|
40053
40393
|
args,
|
|
40054
40394
|
queryParamKeys: []
|
|
40055
40395
|
});
|
|
40056
40396
|
});
|
|
40057
|
-
resource.command("
|
|
40397
|
+
resource.command("delete-agent-cost-catalog-item").description(`Close a custom AI cost item by its custom_item_id. History is kept; new calls on that pair go back to unpriced. An override id passed here is a 404.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40058
40398
|
Examples:
|
|
40059
|
-
hyperline
|
|
40399
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id>
|
|
40400
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id> --output json`).action(async (opts) => {
|
|
40060
40401
|
const ctx = resource.parent?.opts()._ctx;
|
|
40061
40402
|
if (!ctx) {
|
|
40062
40403
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40065,67 +40406,56 @@ Examples:
|
|
|
40065
40406
|
const args = {};
|
|
40066
40407
|
if (opts.id !== void 0)
|
|
40067
40408
|
args.id = opts.id;
|
|
40409
|
+
if (!opts.yes) {
|
|
40410
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40411
|
+
if (!confirmed) {
|
|
40412
|
+
process.stdout.write("Aborted.\n");
|
|
40413
|
+
return;
|
|
40414
|
+
}
|
|
40415
|
+
}
|
|
40068
40416
|
await ctx.execute({
|
|
40069
|
-
method: "
|
|
40070
|
-
path: "/v1/
|
|
40417
|
+
method: "DELETE",
|
|
40418
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40071
40419
|
args,
|
|
40072
40420
|
queryParamKeys: []
|
|
40073
40421
|
});
|
|
40074
40422
|
});
|
|
40075
|
-
resource.command("
|
|
40423
|
+
resource.command("upsert-agent-cost-catalog-override").description(`Set this workspace's negotiated price for a registry AI model (input/output/cached/cache-write USD per 1M tokens, plus optional dimensions). Replaces any open override immediately; historical calls keep their original rate. A pair the registry does not know is refused \u2014 create a custom cost item instead.`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--model <value>", `Model identifier, or custom item identifier. Null on wildcard pricing rows.`).requiredOption("--input-per-m-tokens <value>", `Provider cost in USD per million input tokens, as an exact decimal string.`).requiredOption("--output-per-m-tokens <value>", `Provider cost in USD per million output tokens, as an exact decimal string.`).option("--cached-input-per-m-tokens <value>", `Provider cost in USD per million cached input tokens, as an exact decimal string.`).option("--cache-write-per-m-tokens <value>", `Provider cost in USD per million cache write tokens, as an exact decimal string.`).option("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40076
40424
|
Examples:
|
|
40077
|
-
hyperline
|
|
40078
|
-
hyperline
|
|
40079
|
-
hyperline
|
|
40425
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens>
|
|
40426
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens> --cached-input-per-m-tokens <cached_input_per_m_tokens> --cache-write-per-m-tokens <cache_write_per_m_tokens>
|
|
40427
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens> --output json`).action(async (opts) => {
|
|
40080
40428
|
const ctx = resource.parent?.opts()._ctx;
|
|
40081
40429
|
if (!ctx) {
|
|
40082
40430
|
process.stderr.write("Error: Not authenticated\n");
|
|
40083
40431
|
process.exit(1);
|
|
40084
40432
|
}
|
|
40085
40433
|
const args = {};
|
|
40086
|
-
if (opts.
|
|
40087
|
-
args.
|
|
40088
|
-
if (opts.
|
|
40089
|
-
args.
|
|
40090
|
-
if (opts.
|
|
40091
|
-
args.
|
|
40092
|
-
if (opts.
|
|
40093
|
-
args.
|
|
40094
|
-
if (opts.
|
|
40095
|
-
args.
|
|
40096
|
-
if (opts.
|
|
40097
|
-
args.
|
|
40098
|
-
if (opts.
|
|
40099
|
-
args.
|
|
40100
|
-
if (opts.defaultIntervalPeriod !== void 0)
|
|
40101
|
-
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
40102
|
-
if (opts.operation !== void 0)
|
|
40103
|
-
args.operation = opts.operation;
|
|
40104
|
-
if (opts.property !== void 0)
|
|
40105
|
-
args.property = opts.property;
|
|
40106
|
-
if (opts.defaultIntervalCount !== void 0)
|
|
40107
|
-
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
40108
|
-
if (opts.allowNegativeValues !== void 0)
|
|
40109
|
-
args.allow_negative_values = true;
|
|
40110
|
-
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
40111
|
-
args.aggregate_on_customers_enabled = true;
|
|
40112
|
-
if (opts.where !== void 0)
|
|
40113
|
-
args.where = JSON.parse(opts.where);
|
|
40114
|
-
if (opts.exposedEventKeys !== void 0)
|
|
40115
|
-
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
40116
|
-
if (opts.thresholds !== void 0)
|
|
40117
|
-
args.thresholds = JSON.parse(opts.thresholds);
|
|
40434
|
+
if (opts.provider !== void 0)
|
|
40435
|
+
args.provider = opts.provider;
|
|
40436
|
+
if (opts.model !== void 0)
|
|
40437
|
+
args.model = opts.model;
|
|
40438
|
+
if (opts.inputPerMTokens !== void 0)
|
|
40439
|
+
args.input_per_m_tokens = opts.inputPerMTokens;
|
|
40440
|
+
if (opts.outputPerMTokens !== void 0)
|
|
40441
|
+
args.output_per_m_tokens = opts.outputPerMTokens;
|
|
40442
|
+
if (opts.cachedInputPerMTokens !== void 0)
|
|
40443
|
+
args.cached_input_per_m_tokens = opts.cachedInputPerMTokens;
|
|
40444
|
+
if (opts.cacheWritePerMTokens !== void 0)
|
|
40445
|
+
args.cache_write_per_m_tokens = opts.cacheWritePerMTokens;
|
|
40446
|
+
if (opts.dimensions !== void 0)
|
|
40447
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40118
40448
|
await ctx.execute({
|
|
40119
40449
|
method: "PUT",
|
|
40120
|
-
path: "/v1/
|
|
40450
|
+
path: "/v1/ai/billing/costs/overrides",
|
|
40121
40451
|
args,
|
|
40122
40452
|
queryParamKeys: []
|
|
40123
40453
|
});
|
|
40124
40454
|
});
|
|
40125
|
-
resource.command("delete").description(`
|
|
40455
|
+
resource.command("delete-agent-cost-catalog-override").description(`Close this workspace's negotiated price override by its override.id; pricing falls back to the global registry rate. A custom cost item id passed here is a 404.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40126
40456
|
Examples:
|
|
40127
|
-
hyperline
|
|
40128
|
-
hyperline
|
|
40457
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id>
|
|
40458
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id> --output json`).action(async (opts) => {
|
|
40129
40459
|
const ctx = resource.parent?.opts()._ctx;
|
|
40130
40460
|
if (!ctx) {
|
|
40131
40461
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40143,19 +40473,15 @@ Examples:
|
|
|
40143
40473
|
}
|
|
40144
40474
|
await ctx.execute({
|
|
40145
40475
|
method: "DELETE",
|
|
40146
|
-
path: "/v1/
|
|
40476
|
+
path: "/v1/ai/billing/costs/overrides/{id}",
|
|
40147
40477
|
args,
|
|
40148
40478
|
queryParamKeys: []
|
|
40149
40479
|
});
|
|
40150
40480
|
});
|
|
40151
|
-
|
|
40152
|
-
|
|
40153
|
-
// build/commands/generated/aggregators-usage.js
|
|
40154
|
-
function registerAggregators_UsageCommands(parent) {
|
|
40155
|
-
const resource = parent.command("aggregators-usage").description("Manage aggregators > usage");
|
|
40156
|
-
resource.command("get-aggregator-usage").description(`Retrieve a usage row for an aggregator. Use the timeseries, group-by-customer or events endpoints to query metering data.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40481
|
+
resource.command("replace-agent-cost-catalog-item").description(`Replace a custom item's provider, item and dimensions, preserving historical prices and returning the new active custom_item_id.`).requiredOption("--id <value>", `id parameter`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--item <value>", `Custom item name matching the usage payload.`).requiredOption("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40157
40482
|
Examples:
|
|
40158
|
-
hyperline
|
|
40483
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions>
|
|
40484
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40159
40485
|
const ctx = resource.parent?.opts()._ctx;
|
|
40160
40486
|
if (!ctx) {
|
|
40161
40487
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40164,84 +40490,69 @@ Examples:
|
|
|
40164
40490
|
const args = {};
|
|
40165
40491
|
if (opts.id !== void 0)
|
|
40166
40492
|
args.id = opts.id;
|
|
40493
|
+
if (opts.provider !== void 0)
|
|
40494
|
+
args.provider = opts.provider;
|
|
40495
|
+
if (opts.item !== void 0)
|
|
40496
|
+
args.item = opts.item;
|
|
40497
|
+
if (opts.dimensions !== void 0)
|
|
40498
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40167
40499
|
await ctx.execute({
|
|
40168
|
-
method: "
|
|
40169
|
-
path: "/v1/
|
|
40500
|
+
method: "PUT",
|
|
40501
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40170
40502
|
args,
|
|
40171
40503
|
queryParamKeys: []
|
|
40172
40504
|
});
|
|
40173
40505
|
});
|
|
40174
|
-
|
|
40175
|
-
|
|
40176
|
-
|
|
40177
|
-
|
|
40178
|
-
|
|
40179
|
-
|
|
40180
|
-
process.stderr.write("Error: Not authenticated\n");
|
|
40181
|
-
process.exit(1);
|
|
40182
|
-
}
|
|
40183
|
-
const args = {};
|
|
40184
|
-
if (opts.id !== void 0)
|
|
40185
|
-
args.id = opts.id;
|
|
40186
|
-
if (opts.startDate !== void 0)
|
|
40187
|
-
args.start_date = opts.startDate;
|
|
40188
|
-
if (opts.endDate !== void 0)
|
|
40189
|
-
args.end_date = opts.endDate;
|
|
40190
|
-
if (opts.aggregatorFilterId !== void 0)
|
|
40191
|
-
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
40192
|
-
if (opts.groupBy !== void 0)
|
|
40193
|
-
args.group_by = opts.groupBy;
|
|
40194
|
-
await ctx.execute({
|
|
40195
|
-
method: "GET",
|
|
40196
|
-
path: "/v1/aggregators/{id}/usage/timeseries",
|
|
40197
|
-
args,
|
|
40198
|
-
queryParamKeys: [
|
|
40199
|
-
"start_date",
|
|
40200
|
-
"end_date",
|
|
40201
|
-
"aggregator_filter_id",
|
|
40202
|
-
"group_by"
|
|
40203
|
-
]
|
|
40204
|
-
});
|
|
40205
|
-
});
|
|
40206
|
-
resource.command("get-aggregator-usage-group-by-customer").description(`Per-customer total usage for an aggregator over a period, ranked by total. Paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).option("--aggregator-filter-id <value>", `Optional aggregator filter ID. When set, restricts the result to events matching that filter's config. Must belong to the aggregator in the path.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
40506
|
+
}
|
|
40507
|
+
|
|
40508
|
+
// build/commands/generated/ai-monitoring.js
|
|
40509
|
+
function registerAi_MonitoringCommands(parent) {
|
|
40510
|
+
const resource = parent.command("ai-monitoring").description("Manage ai > monitoring");
|
|
40511
|
+
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score, 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", `
|
|
40207
40512
|
Examples:
|
|
40208
|
-
hyperline
|
|
40209
|
-
hyperline
|
|
40513
|
+
hyperline ai-monitoring list-monitoring-analyses
|
|
40514
|
+
hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
40210
40515
|
const ctx = resource.parent?.opts()._ctx;
|
|
40211
40516
|
if (!ctx) {
|
|
40212
40517
|
process.stderr.write("Error: Not authenticated\n");
|
|
40213
40518
|
process.exit(1);
|
|
40214
40519
|
}
|
|
40215
40520
|
const args = {};
|
|
40216
|
-
if (opts.
|
|
40217
|
-
args.
|
|
40218
|
-
if (opts.
|
|
40219
|
-
args.
|
|
40220
|
-
if (opts.
|
|
40221
|
-
args.
|
|
40222
|
-
if (opts.
|
|
40223
|
-
args.
|
|
40224
|
-
if (opts.
|
|
40225
|
-
args.
|
|
40226
|
-
if (opts.
|
|
40227
|
-
args.
|
|
40521
|
+
if (opts.cursor !== void 0)
|
|
40522
|
+
args.cursor = opts.cursor;
|
|
40523
|
+
if (opts.includeTotal !== void 0)
|
|
40524
|
+
args.include_total = opts.includeTotal;
|
|
40525
|
+
if (opts.customerId !== void 0)
|
|
40526
|
+
args.customer_id = opts.customerId;
|
|
40527
|
+
if (opts["customerId.in"] !== void 0)
|
|
40528
|
+
args.customer_id__in = opts["customerId.in"];
|
|
40529
|
+
if (opts.status !== void 0)
|
|
40530
|
+
args.status = opts.status;
|
|
40531
|
+
if (opts["createdAt.gte"] !== void 0)
|
|
40532
|
+
args.created_at__gte = opts["createdAt.gte"];
|
|
40533
|
+
if (opts["createdAt.lte"] !== void 0)
|
|
40534
|
+
args.created_at__lte = opts["createdAt.lte"];
|
|
40535
|
+
if (opts.limit !== void 0)
|
|
40536
|
+
args.limit = Number(opts.limit);
|
|
40228
40537
|
await ctx.execute({
|
|
40229
40538
|
method: "GET",
|
|
40230
|
-
path: "/v1/
|
|
40539
|
+
path: "/v1/agents/monitoring/analyses",
|
|
40231
40540
|
args,
|
|
40232
40541
|
queryParamKeys: [
|
|
40233
|
-
"
|
|
40234
|
-
"
|
|
40235
|
-
"
|
|
40236
|
-
"
|
|
40237
|
-
"
|
|
40542
|
+
"limit",
|
|
40543
|
+
"cursor",
|
|
40544
|
+
"include_total",
|
|
40545
|
+
"customer_id",
|
|
40546
|
+
"customer_id__in",
|
|
40547
|
+
"status",
|
|
40548
|
+
"created_at__gte",
|
|
40549
|
+
"created_at__lte"
|
|
40238
40550
|
]
|
|
40239
40551
|
});
|
|
40240
40552
|
});
|
|
40241
|
-
resource.command("get-
|
|
40553
|
+
resource.command("get-monitoring-analysis").description(`Get one customer health analysis by ID: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40242
40554
|
Examples:
|
|
40243
|
-
hyperline
|
|
40244
|
-
hyperline aggregators-usage get-aggregator-usage-events --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
40555
|
+
hyperline ai-monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
|
|
40245
40556
|
const ctx = resource.parent?.opts()._ctx;
|
|
40246
40557
|
if (!ctx) {
|
|
40247
40558
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40250,27 +40561,11 @@ Examples:
|
|
|
40250
40561
|
const args = {};
|
|
40251
40562
|
if (opts.id !== void 0)
|
|
40252
40563
|
args.id = opts.id;
|
|
40253
|
-
if (opts.startDate !== void 0)
|
|
40254
|
-
args.start_date = opts.startDate;
|
|
40255
|
-
if (opts.endDate !== void 0)
|
|
40256
|
-
args.end_date = opts.endDate;
|
|
40257
|
-
if (opts.aggregatorFilterId !== void 0)
|
|
40258
|
-
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
40259
|
-
if (opts.take !== void 0)
|
|
40260
|
-
args.take = Number(opts.take);
|
|
40261
|
-
if (opts.skip !== void 0)
|
|
40262
|
-
args.skip = Number(opts.skip);
|
|
40263
40564
|
await ctx.execute({
|
|
40264
40565
|
method: "GET",
|
|
40265
|
-
path: "/v1/
|
|
40566
|
+
path: "/v1/agents/monitoring/analyses/{id}",
|
|
40266
40567
|
args,
|
|
40267
|
-
queryParamKeys: [
|
|
40268
|
-
"start_date",
|
|
40269
|
-
"end_date",
|
|
40270
|
-
"aggregator_filter_id",
|
|
40271
|
-
"take",
|
|
40272
|
-
"skip"
|
|
40273
|
-
]
|
|
40568
|
+
queryParamKeys: []
|
|
40274
40569
|
});
|
|
40275
40570
|
});
|
|
40276
40571
|
}
|
|
@@ -40434,7 +40729,7 @@ Examples:
|
|
|
40434
40729
|
queryParamKeys: ["take", "skip"]
|
|
40435
40730
|
});
|
|
40436
40731
|
});
|
|
40437
|
-
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", `
|
|
40438
40733
|
Examples:
|
|
40439
40734
|
hyperline coupons create --name <name> --type <type>
|
|
40440
40735
|
hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40451,6 +40746,8 @@ Examples:
|
|
|
40451
40746
|
args.description = opts.description;
|
|
40452
40747
|
if (opts.expirationDate !== void 0)
|
|
40453
40748
|
args.expiration_date = opts.expirationDate;
|
|
40749
|
+
if (opts.productScope !== void 0)
|
|
40750
|
+
args.product_scope = opts.productScope;
|
|
40454
40751
|
if (opts.repeat !== void 0)
|
|
40455
40752
|
args.repeat = opts.repeat;
|
|
40456
40753
|
if (opts.type !== void 0)
|
|
@@ -40494,7 +40791,7 @@ Examples:
|
|
|
40494
40791
|
queryParamKeys: []
|
|
40495
40792
|
});
|
|
40496
40793
|
});
|
|
40497
|
-
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", `
|
|
40498
40795
|
Examples:
|
|
40499
40796
|
hyperline coupons update --id <id> --name <name> --type <type>
|
|
40500
40797
|
hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40513,6 +40810,8 @@ Examples:
|
|
|
40513
40810
|
args.description = opts.description;
|
|
40514
40811
|
if (opts.expirationDate !== void 0)
|
|
40515
40812
|
args.expiration_date = opts.expirationDate;
|
|
40813
|
+
if (opts.productScope !== void 0)
|
|
40814
|
+
args.product_scope = opts.productScope;
|
|
40516
40815
|
if (opts.repeat !== void 0)
|
|
40517
40816
|
args.repeat = opts.repeat;
|
|
40518
40817
|
if (opts.type !== void 0)
|
|
@@ -40863,7 +41162,15 @@ Examples:
|
|
|
40863
41162
|
// build/commands/generated/customers.js
|
|
40864
41163
|
function registerCustomersCommands(parent) {
|
|
40865
41164
|
const resource = parent.command("customers").description("Manage customers");
|
|
40866
|
-
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", `
|
|
40867
41174
|
Examples:
|
|
40868
41175
|
hyperline customers list
|
|
40869
41176
|
hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
@@ -40881,6 +41188,8 @@ Examples:
|
|
|
40881
41188
|
args.order = opts.order;
|
|
40882
41189
|
if (opts.sort !== void 0)
|
|
40883
41190
|
args.sort = opts.sort;
|
|
41191
|
+
if (opts.taxIdStatus !== void 0)
|
|
41192
|
+
args.tax_id_status = opts.taxIdStatus;
|
|
40884
41193
|
if (opts.name !== void 0)
|
|
40885
41194
|
args.name = opts.name;
|
|
40886
41195
|
if (opts["name.not"] !== void 0)
|
|
@@ -41065,6 +41374,7 @@ Examples:
|
|
|
41065
41374
|
"include_total",
|
|
41066
41375
|
"order",
|
|
41067
41376
|
"sort",
|
|
41377
|
+
"tax_id_status",
|
|
41068
41378
|
"name",
|
|
41069
41379
|
"name__not",
|
|
41070
41380
|
"name__isNull",
|
|
@@ -41945,7 +42255,7 @@ Examples:
|
|
|
41945
42255
|
queryParamKeys: []
|
|
41946
42256
|
});
|
|
41947
42257
|
});
|
|
41948
|
-
resource.command("purchase-customer-credits").description(`Purchase credits for a customer. This generates an invoice and charges the customer. Returns the invoice ID and new balance.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--credit-count <number>", `Value indicating a number of credits to add. If \`price_id\` is defined, this value must correspond to a full credit pack for the price.`).option("--amount-excluding-tax <number>", `Custom amount for the added credits. Either \`amount_excluding_tax\` or \`price_id\` must be defined. Expressed in currency's smallest unit.`).option("--price-id <value>", `Price ID used to add credits. The price must be of type \`bundle\`. Either \`amount_excluding_tax\` or \`price_id\` must be defined.`).option("--expires-at <value>", `Expiration date for credits linked to this transaction. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
|
|
42258
|
+
resource.command("purchase-customer-credits").description(`Purchase credits for a customer. This generates an invoice and charges the customer's card immediately, granting the credits only once paid. Requires a card payment method (otherwise fails with reason \`payment_method_not_supported\`). Returns the invoice ID and new balance.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--credit-count <number>", `Value indicating a number of credits to add. If \`price_id\` is defined, this value must correspond to a full credit pack for the price.`).option("--amount-excluding-tax <number>", `Custom amount for the added credits. Either \`amount_excluding_tax\` or \`price_id\` must be defined. Expressed in currency's smallest unit.`).option("--price-id <value>", `Price ID used to add credits. The price must be of type \`bundle\`. Either \`amount_excluding_tax\` or \`price_id\` must be defined.`).option("--expires-at <value>", `Expiration date for credits linked to this transaction. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
|
|
41949
42259
|
Examples:
|
|
41950
42260
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count>
|
|
41951
42261
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count> --amount-excluding-tax <amount_excluding_tax> --price-id <price_id>
|
|
@@ -42027,6 +42337,54 @@ Examples:
|
|
|
42027
42337
|
queryParamKeys: []
|
|
42028
42338
|
});
|
|
42029
42339
|
});
|
|
42340
|
+
resource.command("get-customer-credit-portal-settings").description(`Get whether a customer can top up a credit product from the customer portal, at which price, and which prices can be selected.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).addHelpText("after", `
|
|
42341
|
+
Examples:
|
|
42342
|
+
hyperline customers-credits get-customer-credit-portal-settings --id <id> --product-id <productId>`).action(async (opts) => {
|
|
42343
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42344
|
+
if (!ctx) {
|
|
42345
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42346
|
+
process.exit(1);
|
|
42347
|
+
}
|
|
42348
|
+
const args = {};
|
|
42349
|
+
if (opts.id !== void 0)
|
|
42350
|
+
args.id = opts.id;
|
|
42351
|
+
if (opts.productId !== void 0)
|
|
42352
|
+
args.productId = opts.productId;
|
|
42353
|
+
await ctx.execute({
|
|
42354
|
+
method: "GET",
|
|
42355
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42356
|
+
args,
|
|
42357
|
+
queryParamKeys: []
|
|
42358
|
+
});
|
|
42359
|
+
});
|
|
42360
|
+
resource.command("update-customer-credit-portal-settings").description(`Enable or disable customer portal credit top-ups for a customer and credit product, with the price configuration (or a custom price) the customer pays. Enabling requires the customer's credit balance for the product: create it first (createCustomerCredit, a 0 balance is fine).`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--enabled", `Whether the customer can buy this credit product from the customer portal. Enabling requires a price: \`price_configuration_id\`, \`custom_price_configuration\`, or the price already set. Disabling clears the price and removes the customer's own price.`).option("--price-configuration-id <value>", `ID of one of the credit product's price configurations, in the customer's price book and currency, of type \`bundle\`, \`volume\` or \`bulk\`. Mutually exclusive with \`custom_price_configuration\`.`).option("--custom-price-configuration <json>", `A price of the customer's own, in the customer's currency, replacing any previous one. Same shape as a credit product price configuration. Mutually exclusive with \`price_configuration_id\`. It needs at least one price; \`unit_count\` is a whole number of at least 1; \`amount\` is never negative, a \`bundle\` pack is never free, and the price is not free altogether; volume tiers start at 0 and each starts where the previous one ends; bulk tiers are in increasing \`to\` order; only the last tier has \`to: null\`. Otherwise the request fails with reason \`invalid_custom_price\`.`).addHelpText("after", `
|
|
42361
|
+
Examples:
|
|
42362
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
|
|
42363
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --price-configuration-id <price_configuration_id> --custom-price-configuration <custom_price_configuration>
|
|
42364
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --output json`).action(async (opts) => {
|
|
42365
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42366
|
+
if (!ctx) {
|
|
42367
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42368
|
+
process.exit(1);
|
|
42369
|
+
}
|
|
42370
|
+
const args = {};
|
|
42371
|
+
if (opts.id !== void 0)
|
|
42372
|
+
args.id = opts.id;
|
|
42373
|
+
if (opts.productId !== void 0)
|
|
42374
|
+
args.productId = opts.productId;
|
|
42375
|
+
if (opts.priceConfigurationId !== void 0)
|
|
42376
|
+
args.price_configuration_id = opts.priceConfigurationId;
|
|
42377
|
+
if (opts.enabled !== void 0)
|
|
42378
|
+
args.enabled = true;
|
|
42379
|
+
if (opts.customPriceConfiguration !== void 0)
|
|
42380
|
+
args.custom_price_configuration = JSON.parse(opts.customPriceConfiguration);
|
|
42381
|
+
await ctx.execute({
|
|
42382
|
+
method: "PUT",
|
|
42383
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42384
|
+
args,
|
|
42385
|
+
queryParamKeys: []
|
|
42386
|
+
});
|
|
42387
|
+
});
|
|
42030
42388
|
}
|
|
42031
42389
|
|
|
42032
42390
|
// build/commands/generated/customers-payment-methods.js
|
|
@@ -43156,7 +43514,7 @@ Examples:
|
|
|
43156
43514
|
queryParamKeys: []
|
|
43157
43515
|
});
|
|
43158
43516
|
});
|
|
43159
|
-
resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
|
|
43517
|
+
resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. A zero-priced paid invoice can also be voided, without a credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
|
|
43160
43518
|
Examples:
|
|
43161
43519
|
hyperline invoices void --id <id>
|
|
43162
43520
|
hyperline invoices void --id <id> --send-email
|
|
@@ -43465,7 +43823,7 @@ Examples:
|
|
|
43465
43823
|
queryParamKeys: []
|
|
43466
43824
|
});
|
|
43467
43825
|
});
|
|
43468
|
-
resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity
|
|
43826
|
+
resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
|
|
43469
43827
|
Examples:
|
|
43470
43828
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
43471
43829
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -43548,6 +43906,8 @@ Examples:
|
|
|
43548
43906
|
args.credit_note_wallet_refund_enabled = true;
|
|
43549
43907
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43550
43908
|
args.standalone_credit_note_creation_enabled = true;
|
|
43909
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43910
|
+
args.fx_conversion_display_enabled = true;
|
|
43551
43911
|
await ctx.execute({
|
|
43552
43912
|
method: "POST",
|
|
43553
43913
|
path: "/v1/invoicing-entities",
|
|
@@ -43555,7 +43915,7 @@ Examples:
|
|
|
43555
43915
|
queryParamKeys: []
|
|
43556
43916
|
});
|
|
43557
43917
|
});
|
|
43558
|
-
resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity
|
|
43918
|
+
resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
|
|
43559
43919
|
Examples:
|
|
43560
43920
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
43561
43921
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -43630,6 +43990,8 @@ Examples:
|
|
|
43630
43990
|
args.credit_note_wallet_refund_enabled = true;
|
|
43631
43991
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43632
43992
|
args.standalone_credit_note_creation_enabled = true;
|
|
43993
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43994
|
+
args.fx_conversion_display_enabled = true;
|
|
43633
43995
|
await ctx.execute({
|
|
43634
43996
|
method: "PUT",
|
|
43635
43997
|
path: "/v1/invoicing-entities/{id}",
|
|
@@ -43950,6 +44312,46 @@ Examples:
|
|
|
43950
44312
|
queryParamKeys: []
|
|
43951
44313
|
});
|
|
43952
44314
|
});
|
|
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", `
|
|
44316
|
+
Examples:
|
|
44317
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
|
|
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>
|
|
44319
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --output json`).action(async (opts) => {
|
|
44320
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44321
|
+
if (!ctx) {
|
|
44322
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44323
|
+
process.exit(1);
|
|
44324
|
+
}
|
|
44325
|
+
const args = {};
|
|
44326
|
+
if (opts.currency !== void 0)
|
|
44327
|
+
args.currency = opts.currency;
|
|
44328
|
+
if (opts.priceBookId !== void 0)
|
|
44329
|
+
args.price_book_id = opts.priceBookId;
|
|
44330
|
+
if (opts.type !== void 0)
|
|
44331
|
+
args.type = opts.type;
|
|
44332
|
+
if (opts.productId !== void 0)
|
|
44333
|
+
args.product_id = opts.productId;
|
|
44334
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
44335
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
44336
|
+
if (opts.allowOnPortal !== void 0)
|
|
44337
|
+
args.allow_on_portal = true;
|
|
44338
|
+
if (opts.countries !== void 0)
|
|
44339
|
+
args.countries = JSON.parse(opts.countries);
|
|
44340
|
+
if (opts.billingInterval !== void 0)
|
|
44341
|
+
args.billing_interval = JSON.parse(opts.billingInterval);
|
|
44342
|
+
if (opts.commitmentInterval !== void 0)
|
|
44343
|
+
args.commitment_interval = JSON.parse(opts.commitmentInterval);
|
|
44344
|
+
if (opts.prices !== void 0)
|
|
44345
|
+
args.prices = JSON.parse(opts.prices);
|
|
44346
|
+
if (opts.meteringFilter !== void 0)
|
|
44347
|
+
args.metering_filter = JSON.parse(opts.meteringFilter);
|
|
44348
|
+
await ctx.execute({
|
|
44349
|
+
method: "POST",
|
|
44350
|
+
path: "/v1/price-configurations",
|
|
44351
|
+
args,
|
|
44352
|
+
queryParamKeys: []
|
|
44353
|
+
});
|
|
44354
|
+
});
|
|
43953
44355
|
resource.command("update-prices").description(`Update the prices of an existing price configuration by ID. Allows changing tier thresholds, unit prices, and flat fees.`).requiredOption("--id <value>", `id parameter`).option("--stdin", `Read JSON array input from stdin`).addHelpText("after", `
|
|
43954
44356
|
Examples:
|
|
43955
44357
|
hyperline price-configurations update-prices --id <id>
|
|
@@ -44148,7 +44550,7 @@ How the periodic credit allowance is granted for partial billing periods.
|
|
|
44148
44550
|
|
|
44149
44551
|
- \`prorated\` (default): the granted credits are prorated to the elapsed period.
|
|
44150
44552
|
- \`full_allowance\`: the full allowance is always granted (the invoice remains prorated).
|
|
44151
|
-
`).option("--credits-balance-auto-creation-enabled <value>", `Default for the \`credits_balance_auto_creation_enabled\` setting of subscription products using this credit product: whether the customer credit balance is created as soon as the product is added to a subscription. \`true\` when unset. A subscription product can override it.`).option("--
|
|
44553
|
+
`).option("--credits-balance-auto-creation-enabled <value>", `Default for the \`credits_balance_auto_creation_enabled\` setting of subscription products using this credit product: whether the customer credit balance is created as soon as the product is added to a subscription. \`true\` when unset. A subscription product can override it.`).option("--display-mode <value>", `How bundle items are displayed on invoices.`).option("--exclusive-items-enabled", `When true, only one item in the bundle can be active at a time.`).option("--bundle-items <json>", `Products included in this bundle. Percentages must sum to 100.`).addHelpText("after", `
|
|
44152
44554
|
Examples:
|
|
44153
44555
|
hyperline products create --name <name> --type <type> --price-configurations <price_configurations>
|
|
44154
44556
|
hyperline products create --name <name> --type <type> --price-configurations <price_configurations> --description <description> --description-display-interval-dates
|
|
@@ -44175,8 +44577,6 @@ Examples:
|
|
|
44175
44577
|
args.credits_grant_mode = opts.creditsGrantMode;
|
|
44176
44578
|
if (opts.creditsBalanceAutoCreationEnabled !== void 0)
|
|
44177
44579
|
args.credits_balance_auto_creation_enabled = opts.creditsBalanceAutoCreationEnabled;
|
|
44178
|
-
if (opts.portalTopUpAutoActivationEnabled !== void 0)
|
|
44179
|
-
args.portal_top_up_auto_activation_enabled = opts.portalTopUpAutoActivationEnabled;
|
|
44180
44580
|
if (opts.displayMode !== void 0)
|
|
44181
44581
|
args.display_mode = opts.displayMode;
|
|
44182
44582
|
if (opts.lowCreditsThreshold !== void 0)
|
|
@@ -44346,12 +44746,12 @@ Quote status.
|
|
|
44346
44746
|
- \`draft\`: The quote is a draft.
|
|
44347
44747
|
- \`approved\`: The quote is approved and ready to be sent to the customer.
|
|
44348
44748
|
- \`pending_signature\`: The quote is awaiting the customer's signature.
|
|
44349
|
-
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--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.
|
|
44350
44750
|
|
|
44351
44751
|
- \`all\`: Display all pricing tiers.
|
|
44352
44752
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
44353
44753
|
- \`none\`: Hide all pricing tiers.
|
|
44354
|
-
`).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", `
|
|
44355
44755
|
Examples:
|
|
44356
44756
|
hyperline quotes create --customer-id <customer_id>
|
|
44357
44757
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -44390,6 +44790,8 @@ Examples:
|
|
|
44390
44790
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
44391
44791
|
if (opts.displayPhaseValue !== void 0)
|
|
44392
44792
|
args.display_phase_value = opts.displayPhaseValue;
|
|
44793
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
44794
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
44393
44795
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
44394
44796
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
44395
44797
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
@@ -44404,6 +44806,8 @@ Examples:
|
|
|
44404
44806
|
args.expires_at = opts.expiresAt;
|
|
44405
44807
|
if (opts.amount !== void 0)
|
|
44406
44808
|
args.amount = Number(opts.amount);
|
|
44809
|
+
if (opts.contractValue !== void 0)
|
|
44810
|
+
args.contract_value = Number(opts.contractValue);
|
|
44407
44811
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
44408
44812
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
44409
44813
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -44419,7 +44823,7 @@ Examples:
|
|
|
44419
44823
|
queryParamKeys: []
|
|
44420
44824
|
});
|
|
44421
44825
|
});
|
|
44422
|
-
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", `
|
|
44423
44827
|
Examples:
|
|
44424
44828
|
hyperline quotes list
|
|
44425
44829
|
hyperline quotes list --take <take> --id <id>`).action(async (opts) => {
|
|
@@ -44515,20 +44919,6 @@ Examples:
|
|
|
44515
44919
|
args.crm_opportunity_id__endWith = opts["crmOpportunityId.endWith"];
|
|
44516
44920
|
if (opts.type !== void 0)
|
|
44517
44921
|
args.type = opts.type;
|
|
44518
|
-
if (opts["type.not"] !== void 0)
|
|
44519
|
-
args.type__not = opts["type.not"];
|
|
44520
|
-
if (opts["type.isNull"] !== void 0)
|
|
44521
|
-
args.type__isNull = opts["type.isNull"];
|
|
44522
|
-
if (opts["type.isNotNull"] !== void 0)
|
|
44523
|
-
args.type__isNotNull = opts["type.isNotNull"];
|
|
44524
|
-
if (opts["type.equals"] !== void 0)
|
|
44525
|
-
args.type__equals = opts["type.equals"];
|
|
44526
|
-
if (opts["type.contains"] !== void 0)
|
|
44527
|
-
args.type__contains = opts["type.contains"];
|
|
44528
|
-
if (opts["type.startsWith"] !== void 0)
|
|
44529
|
-
args.type__startsWith = opts["type.startsWith"];
|
|
44530
|
-
if (opts["type.endWith"] !== void 0)
|
|
44531
|
-
args.type__endWith = opts["type.endWith"];
|
|
44532
44922
|
if (opts.updatedAt !== void 0)
|
|
44533
44923
|
args.updated_at = opts.updatedAt;
|
|
44534
44924
|
if (opts["updatedAt.not"] !== void 0)
|
|
@@ -44601,13 +44991,6 @@ Examples:
|
|
|
44601
44991
|
"crm_opportunity_id__startsWith",
|
|
44602
44992
|
"crm_opportunity_id__endWith",
|
|
44603
44993
|
"type",
|
|
44604
|
-
"type__not",
|
|
44605
|
-
"type__isNull",
|
|
44606
|
-
"type__isNotNull",
|
|
44607
|
-
"type__equals",
|
|
44608
|
-
"type__contains",
|
|
44609
|
-
"type__startsWith",
|
|
44610
|
-
"type__endWith",
|
|
44611
44994
|
"updated_at",
|
|
44612
44995
|
"updated_at__not",
|
|
44613
44996
|
"updated_at__isNull",
|
|
@@ -44638,12 +45021,12 @@ Examples:
|
|
|
44638
45021
|
queryParamKeys: []
|
|
44639
45022
|
});
|
|
44640
45023
|
});
|
|
44641
|
-
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.`).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.
|
|
44642
45025
|
|
|
44643
45026
|
- \`all\`: Display all pricing tiers.
|
|
44644
45027
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
44645
45028
|
- \`none\`: Hide all pricing tiers.
|
|
44646
|
-
`).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", `
|
|
44647
45030
|
Examples:
|
|
44648
45031
|
hyperline quotes update --id <id>
|
|
44649
45032
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -44678,6 +45061,8 @@ Examples:
|
|
|
44678
45061
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
44679
45062
|
if (opts.displayPhaseValue !== void 0)
|
|
44680
45063
|
args.display_phase_value = opts.displayPhaseValue;
|
|
45064
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
45065
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
44681
45066
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
44682
45067
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
44683
45068
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
@@ -44692,6 +45077,8 @@ Examples:
|
|
|
44692
45077
|
args.expires_at = opts.expiresAt;
|
|
44693
45078
|
if (opts.amount !== void 0)
|
|
44694
45079
|
args.amount = Number(opts.amount);
|
|
45080
|
+
if (opts.contractValue !== void 0)
|
|
45081
|
+
args.contract_value = Number(opts.contractValue);
|
|
44695
45082
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
44696
45083
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
44697
45084
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -44707,6 +45094,25 @@ Examples:
|
|
|
44707
45094
|
queryParamKeys: []
|
|
44708
45095
|
});
|
|
44709
45096
|
});
|
|
45097
|
+
resource.command("duplicate").description(`Create a draft duplicate of an existing quote, including its linked invoice or subscription configuration.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45098
|
+
Examples:
|
|
45099
|
+
hyperline quotes duplicate --id <id>
|
|
45100
|
+
hyperline quotes duplicate --id <id> --output json`).action(async (opts) => {
|
|
45101
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45102
|
+
if (!ctx) {
|
|
45103
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45104
|
+
process.exit(1);
|
|
45105
|
+
}
|
|
45106
|
+
const args = {};
|
|
45107
|
+
if (opts.id !== void 0)
|
|
45108
|
+
args.id = opts.id;
|
|
45109
|
+
await ctx.execute({
|
|
45110
|
+
method: "POST",
|
|
45111
|
+
path: "/v1/quotes/{id}/duplicate",
|
|
45112
|
+
args,
|
|
45113
|
+
queryParamKeys: []
|
|
45114
|
+
});
|
|
45115
|
+
});
|
|
44710
45116
|
resource.command("download").description(`Download the PDF of a quote. Supports locale parameter for localization.`).requiredOption("--id <value>", `id parameter`).option("--locale <value>", `Locale as a supported language code and an uppercase ISO 3166-1 alpha-2 country code, separated by a hyphen.`).addHelpText("after", `
|
|
44711
45117
|
Examples:
|
|
44712
45118
|
hyperline quotes download --id <id>
|
|
@@ -44728,10 +45134,52 @@ Examples:
|
|
|
44728
45134
|
queryParamKeys: ["locale"]
|
|
44729
45135
|
});
|
|
44730
45136
|
});
|
|
44731
|
-
resource.command("
|
|
45137
|
+
resource.command("finalize").description(`Finalize a draft quote. The quote is submitted for approval when approval is required, otherwise it becomes approved and ready to be sent for signature.`).requiredOption("--id <value>", `id parameter`).option("--requester-comment <value>", `Internal comment supplied by the requester for approvers; not displayed on the customer-facing quote.`).addHelpText("after", `
|
|
45138
|
+
Examples:
|
|
45139
|
+
hyperline quotes finalize --id <id>
|
|
45140
|
+
hyperline quotes finalize --id <id> --requester-comment <requester_comment>
|
|
45141
|
+
hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
|
|
45142
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45143
|
+
if (!ctx) {
|
|
45144
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45145
|
+
process.exit(1);
|
|
45146
|
+
}
|
|
45147
|
+
const args = {};
|
|
45148
|
+
if (opts.id !== void 0)
|
|
45149
|
+
args.id = opts.id;
|
|
45150
|
+
if (opts.requesterComment !== void 0)
|
|
45151
|
+
args.requester_comment = opts.requesterComment;
|
|
45152
|
+
await ctx.execute({
|
|
45153
|
+
method: "POST",
|
|
45154
|
+
path: "/v1/quotes/{id}/finalize",
|
|
45155
|
+
args,
|
|
45156
|
+
queryParamKeys: []
|
|
45157
|
+
});
|
|
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
|
+
});
|
|
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", `
|
|
44732
45179
|
Examples:
|
|
44733
|
-
hyperline quotes
|
|
44734
|
-
hyperline quotes
|
|
45180
|
+
hyperline quotes send --id <id>
|
|
45181
|
+
hyperline quotes send --id <id> --email <email> --message <message>
|
|
45182
|
+
hyperline quotes send --id <id> --output json`).action(async (opts) => {
|
|
44735
45183
|
const ctx = resource.parent?.opts()._ctx;
|
|
44736
45184
|
if (!ctx) {
|
|
44737
45185
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44740,17 +45188,20 @@ Examples:
|
|
|
44740
45188
|
const args = {};
|
|
44741
45189
|
if (opts.id !== void 0)
|
|
44742
45190
|
args.id = opts.id;
|
|
45191
|
+
if (opts.email !== void 0)
|
|
45192
|
+
args.email = opts.email;
|
|
45193
|
+
if (opts.message !== void 0)
|
|
45194
|
+
args.message = opts.message;
|
|
44743
45195
|
await ctx.execute({
|
|
44744
45196
|
method: "POST",
|
|
44745
|
-
path: "/v1/quotes/{id}/
|
|
45197
|
+
path: "/v1/quotes/{id}/send",
|
|
44746
45198
|
args,
|
|
44747
45199
|
queryParamKeys: []
|
|
44748
45200
|
});
|
|
44749
45201
|
});
|
|
44750
|
-
resource.command("
|
|
45202
|
+
resource.command("list-quote-signers").description(`List the signers of a quote in signing order, with each signer's status (pending, notified, viewed, signed, declined). An empty list means the quote uses the single-signer flow of \`send_quote\`.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
44751
45203
|
Examples:
|
|
44752
|
-
hyperline quotes
|
|
44753
|
-
hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
|
|
45204
|
+
hyperline quotes list-quote-signers --id <id>`).action(async (opts) => {
|
|
44754
45205
|
const ctx = resource.parent?.opts()._ctx;
|
|
44755
45206
|
if (!ctx) {
|
|
44756
45207
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44760,17 +45211,22 @@ Examples:
|
|
|
44760
45211
|
if (opts.id !== void 0)
|
|
44761
45212
|
args.id = opts.id;
|
|
44762
45213
|
await ctx.execute({
|
|
44763
|
-
method: "
|
|
44764
|
-
path: "/v1/quotes/{id}/
|
|
45214
|
+
method: "GET",
|
|
45215
|
+
path: "/v1/quotes/{id}/signers",
|
|
44765
45216
|
args,
|
|
44766
45217
|
queryParamKeys: []
|
|
44767
45218
|
});
|
|
44768
45219
|
});
|
|
44769
|
-
resource.command("
|
|
45220
|
+
resource.command("set-quote-signers").description(`Replace the full list of signers of a quote. Signers with the same \`step_order\` sign in parallel; steps sign in ascending order. Requires at least one \`external\` signer, and a \`countersigner\` must sign after an external step. Set signers before calling \`send_quote\`, which then emails the signers of the first step and no longer needs \`email\`. Pass an empty list to go back to the single-signer flow.`).requiredOption("--id <value>", `id parameter`).requiredOption("--signers <json>", `
|
|
45221
|
+
Signature workflow of the quote, replaced as a whole.
|
|
45222
|
+
|
|
45223
|
+
Signers sign step by step, in ascending \`step_order\`. Signers sharing a step sign in parallel, and the next step opens once all of them have signed. The workflow needs at least one \`external\` signer, and a \`countersigner\` must sign after the first external step.
|
|
45224
|
+
|
|
45225
|
+
Signers who already signed cannot be removed or moved. Once the quote is out for signature at an electronic signature provider, the workflow can no longer be changed.
|
|
45226
|
+
`).addHelpText("after", `
|
|
44770
45227
|
Examples:
|
|
44771
|
-
hyperline quotes
|
|
44772
|
-
hyperline quotes
|
|
44773
|
-
hyperline quotes send --id <id> --email <email> --output json`).action(async (opts) => {
|
|
45228
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers>
|
|
45229
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers> --output json`).action(async (opts) => {
|
|
44774
45230
|
const ctx = resource.parent?.opts()._ctx;
|
|
44775
45231
|
if (!ctx) {
|
|
44776
45232
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44779,13 +45235,11 @@ Examples:
|
|
|
44779
45235
|
const args = {};
|
|
44780
45236
|
if (opts.id !== void 0)
|
|
44781
45237
|
args.id = opts.id;
|
|
44782
|
-
if (opts.
|
|
44783
|
-
args.
|
|
44784
|
-
if (opts.message !== void 0)
|
|
44785
|
-
args.message = opts.message;
|
|
45238
|
+
if (opts.signers !== void 0)
|
|
45239
|
+
args.signers = JSON.parse(opts.signers);
|
|
44786
45240
|
await ctx.execute({
|
|
44787
|
-
method: "
|
|
44788
|
-
path: "/v1/quotes/{id}/
|
|
45241
|
+
method: "PUT",
|
|
45242
|
+
path: "/v1/quotes/{id}/signers",
|
|
44789
45243
|
args,
|
|
44790
45244
|
queryParamKeys: []
|
|
44791
45245
|
});
|
|
@@ -44873,6 +45327,48 @@ Examples:
|
|
|
44873
45327
|
});
|
|
44874
45328
|
}
|
|
44875
45329
|
|
|
45330
|
+
// build/commands/generated/quotes-approvals.js
|
|
45331
|
+
function registerQuotes_ApprovalsCommands(parent) {
|
|
45332
|
+
const resource = parent.command("quotes-approvals").description("Manage quotes > approvals");
|
|
45333
|
+
resource.command("approve-quote").description(`Approve a quote as the account owner. This is a prerequisite before sending the quote for customer signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45334
|
+
Examples:
|
|
45335
|
+
hyperline quotes-approvals approve-quote --id <id>
|
|
45336
|
+
hyperline quotes-approvals approve-quote --id <id> --output json`).action(async (opts) => {
|
|
45337
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45338
|
+
if (!ctx) {
|
|
45339
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45340
|
+
process.exit(1);
|
|
45341
|
+
}
|
|
45342
|
+
const args = {};
|
|
45343
|
+
if (opts.id !== void 0)
|
|
45344
|
+
args.id = opts.id;
|
|
45345
|
+
await ctx.execute({
|
|
45346
|
+
method: "POST",
|
|
45347
|
+
path: "/v1/quotes/{id}/approve",
|
|
45348
|
+
args,
|
|
45349
|
+
queryParamKeys: []
|
|
45350
|
+
});
|
|
45351
|
+
});
|
|
45352
|
+
resource.command("get-quote-approvals").description(`Read quote approvals without submitting the quote. Returns a newest-first array, currently containing one element. Draft and changes-requested quotes return current approval routing in preview mode; other statuses return the recorded request, ordered steps and decisions in execution mode. A null request means no workflow execution was recorded, including automatic and legacy approval.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45353
|
+
Examples:
|
|
45354
|
+
hyperline quotes-approvals get-quote-approvals --id <id>`).action(async (opts) => {
|
|
45355
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45356
|
+
if (!ctx) {
|
|
45357
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45358
|
+
process.exit(1);
|
|
45359
|
+
}
|
|
45360
|
+
const args = {};
|
|
45361
|
+
if (opts.id !== void 0)
|
|
45362
|
+
args.id = opts.id;
|
|
45363
|
+
await ctx.execute({
|
|
45364
|
+
method: "GET",
|
|
45365
|
+
path: "/v1/quotes/{id}/approvals",
|
|
45366
|
+
args,
|
|
45367
|
+
queryParamKeys: []
|
|
45368
|
+
});
|
|
45369
|
+
});
|
|
45370
|
+
}
|
|
45371
|
+
|
|
44876
45372
|
// build/commands/generated/quotes-templates.js
|
|
44877
45373
|
function registerQuotes_TemplatesCommands(parent) {
|
|
44878
45374
|
const resource = parent.command("quotes-templates").description("Manage quotes > templates");
|
|
@@ -45072,7 +45568,7 @@ Examples:
|
|
|
45072
45568
|
queryParamKeys: []
|
|
45073
45569
|
});
|
|
45074
45570
|
});
|
|
45075
|
-
resource.command("cancel").description(`Cancel a subscription. Supports immediate or end-of-period cancellation. Optionally specify a cancellation reason.`).requiredOption("--id <value>", `id parameter`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--reason <value>", `Reason for the cancellation.`).option("--pro-rata", `Indicates if the cancel should refund the customer using a pro rata strategy.`).option("--refund-method <value>", `Override the refund destination for the resulting credit note. When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).addHelpText("after", `
|
|
45571
|
+
resource.command("cancel").description(`Cancel a subscription. Supports immediate or end-of-period cancellation. Optionally specify a cancellation reason. On a cancelled subscription with a scheduled reinstatement, call it with an empty body to remove that reinstatement; the subscription stays cancelled.`).requiredOption("--id <value>", `id parameter`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--reason <value>", `Reason for the cancellation.`).option("--pro-rata", `Indicates if the cancel should refund the customer using a pro rata strategy.`).option("--refund-method <value>", `Override the refund destination for the resulting credit note. When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).addHelpText("after", `
|
|
45076
45572
|
Examples:
|
|
45077
45573
|
hyperline subscriptions cancel --id <id>
|
|
45078
45574
|
hyperline subscriptions cancel --id <id> --cancel-at <cancel_at> --reason <reason>
|
|
@@ -45100,9 +45596,10 @@ Examples:
|
|
|
45100
45596
|
queryParamKeys: []
|
|
45101
45597
|
});
|
|
45102
45598
|
});
|
|
45103
|
-
resource.command("reinstate").description(`Reinstate a subscription
|
|
45599
|
+
resource.command("reinstate").description(`Reinstate a subscription, reverting it to active status. Works for a subscription scheduled for cancellation and for a fully-cancelled one. For a fully-cancelled subscription, optionally pass reactivate_at (may be in the past, after the cancellation date; a future date schedules it) and invoicing_mode (or charge_line_items for a custom charge) to control how the cancelled gap is invoiced.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date a fully-cancelled subscription resumes from. May be in the past (after the cancellation date). Defaults to now. A future date schedules the reinstatement; calling again with another date reschedules it, and cancelling the subscription removes it. Ignored for scheduled-cancellation reinstatement.`).option("--invoicing-mode <value>", `How the paused/cancelled gap is invoiced when the subscription resumes. \`charge_full_period\`: bill the frozen periods as if never paused. \`prorate_remaining_period\`: skip the gap and bill the prorated remainder from the resume date. \`resume_at_next_cycle\` (default): skip the gap with no catch-up invoice.`).option("--charge-line-items <json>", `Custom charge: bill exactly these lines on an immediate resume instead of applying \`invoicing_mode\`. The lines cover the stopped period (pause or cancellation date to resume date). Requires the \`invoices_create\` permission. Fully-cancelled subscriptions only. Not allowed with a future \`reactivate_at\`.`).addHelpText("after", `
|
|
45104
45600
|
Examples:
|
|
45105
45601
|
hyperline subscriptions reinstate --id <id>
|
|
45602
|
+
hyperline subscriptions reinstate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
45106
45603
|
hyperline subscriptions reinstate --id <id> --output json`).action(async (opts) => {
|
|
45107
45604
|
const ctx = resource.parent?.opts()._ctx;
|
|
45108
45605
|
if (!ctx) {
|
|
@@ -45112,6 +45609,12 @@ Examples:
|
|
|
45112
45609
|
const args = {};
|
|
45113
45610
|
if (opts.id !== void 0)
|
|
45114
45611
|
args.id = opts.id;
|
|
45612
|
+
if (opts.reactivateAt !== void 0)
|
|
45613
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45614
|
+
if (opts.invoicingMode !== void 0)
|
|
45615
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45616
|
+
if (opts.chargeLineItems !== void 0)
|
|
45617
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
45115
45618
|
await ctx.execute({
|
|
45116
45619
|
method: "POST",
|
|
45117
45620
|
path: "/v1/subscriptions/{id}/reinstate",
|
|
@@ -45119,7 +45622,7 @@ Examples:
|
|
|
45119
45622
|
queryParamKeys: []
|
|
45120
45623
|
});
|
|
45121
45624
|
});
|
|
45122
|
-
resource.command("pause").description(`Pause a subscription. Billing stops while paused. Optionally specify a reactivate_at date for automatic resumption. If the subscription is already paused, updates (or clears) its reactivation date.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date when the subscription will be automatically reactivated.
|
|
45625
|
+
resource.command("pause").description(`Pause a subscription. Billing stops while paused. Optionally specify a reactivate_at date for automatic resumption. If the subscription is already paused, updates (or clears) its reactivation date.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date when the subscription will be automatically reactivated. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. A date on or before the pause date resumes it at the next scheduled run.`).addHelpText("after", `
|
|
45123
45626
|
Examples:
|
|
45124
45627
|
hyperline subscriptions pause --id <id>
|
|
45125
45628
|
hyperline subscriptions pause --id <id> --reactivate-at <reactivate_at>
|
|
@@ -45160,9 +45663,10 @@ Examples:
|
|
|
45160
45663
|
queryParamKeys: []
|
|
45161
45664
|
});
|
|
45162
45665
|
});
|
|
45163
|
-
resource.command("reactivate").description(`Resume a paused subscription,
|
|
45666
|
+
resource.command("reactivate").description(`Resume a paused subscription. Optionally pass reactivate_at (may be in the past, after the pause date; a future date schedules it) and invoicing_mode (or charge_line_items for a custom charge) to control how the paused gap is invoiced.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date the subscription resumes from. May be in the past (after the pause date). Defaults to now. A future date schedules the reactivation.`).option("--invoicing-mode <value>", `How the paused/cancelled gap is invoiced when the subscription resumes. \`charge_full_period\`: bill the frozen periods as if never paused. \`prorate_remaining_period\`: skip the gap and bill the prorated remainder from the resume date. \`resume_at_next_cycle\` (default): skip the gap with no catch-up invoice.`).option("--charge-line-items <json>", `Custom charge: bill exactly these lines on an immediate resume instead of applying \`invoicing_mode\`. The lines cover the stopped period (pause or cancellation date to resume date). Requires the \`invoices_create\` permission. Not allowed with a future \`reactivate_at\`.`).addHelpText("after", `
|
|
45164
45667
|
Examples:
|
|
45165
45668
|
hyperline subscriptions reactivate --id <id>
|
|
45669
|
+
hyperline subscriptions reactivate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
45166
45670
|
hyperline subscriptions reactivate --id <id> --output json`).action(async (opts) => {
|
|
45167
45671
|
const ctx = resource.parent?.opts()._ctx;
|
|
45168
45672
|
if (!ctx) {
|
|
@@ -45172,6 +45676,12 @@ Examples:
|
|
|
45172
45676
|
const args = {};
|
|
45173
45677
|
if (opts.id !== void 0)
|
|
45174
45678
|
args.id = opts.id;
|
|
45679
|
+
if (opts.reactivateAt !== void 0)
|
|
45680
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45681
|
+
if (opts.invoicingMode !== void 0)
|
|
45682
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45683
|
+
if (opts.chargeLineItems !== void 0)
|
|
45684
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
45175
45685
|
await ctx.execute({
|
|
45176
45686
|
method: "POST",
|
|
45177
45687
|
path: "/v1/subscriptions/{id}/reactivate",
|
|
@@ -46755,10 +47265,11 @@ function registerAllCommands(program2) {
|
|
|
46755
47265
|
registerAccounting_ReportsCommands(program2);
|
|
46756
47266
|
registerAccounting_Revenue_RecognitionCommands(program2);
|
|
46757
47267
|
registerAccounting_RulesCommands(program2);
|
|
46758
|
-
registerAgentsCommands(program2);
|
|
46759
47268
|
registerCustom_PropertiesCommands(program2);
|
|
46760
47269
|
registerAggregatorsCommands(program2);
|
|
46761
47270
|
registerAggregators_UsageCommands(program2);
|
|
47271
|
+
registerAi_BillingCommands(program2);
|
|
47272
|
+
registerAi_CostsCommands(program2);
|
|
46762
47273
|
registerAnalyticsCommands(program2);
|
|
46763
47274
|
registerBank_AccountsCommands(program2);
|
|
46764
47275
|
registerCompaniesCommands(program2);
|
|
@@ -46777,11 +47288,13 @@ function registerAllCommands(program2) {
|
|
|
46777
47288
|
registerInvoicesCommands(program2);
|
|
46778
47289
|
registerInvoices_TransactionsCommands(program2);
|
|
46779
47290
|
registerInvoicing_EntitiesCommands(program2);
|
|
47291
|
+
registerAi_MonitoringCommands(program2);
|
|
46780
47292
|
registerPaymentsCommands(program2);
|
|
46781
47293
|
registerProductsCommands(program2);
|
|
46782
47294
|
registerPrice_ConfigurationsCommands(program2);
|
|
46783
47295
|
registerQuotesCommands(program2);
|
|
46784
47296
|
registerQuotes_TemplatesCommands(program2);
|
|
47297
|
+
registerQuotes_ApprovalsCommands(program2);
|
|
46785
47298
|
registerSubscriptions_TemplatesCommands(program2);
|
|
46786
47299
|
registerSubscriptionsCommands(program2);
|
|
46787
47300
|
registerSubscriptions_TransitionsCommands(program2);
|
|
@@ -62792,23 +63305,26 @@ var languages = [
|
|
|
62792
63305
|
|
|
62793
63306
|
// ../hyperline-i18n/build/locales/de.js
|
|
62794
63307
|
var de = {
|
|
62795
|
-
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
62796
|
-
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
62797
|
-
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
62798
63308
|
"accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
|
|
62799
|
-
"accounting.
|
|
63309
|
+
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
63310
|
+
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
62800
63311
|
"accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62801
63312
|
"accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62802
63313
|
"accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62803
|
-
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
62804
63314
|
"accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62805
63315
|
"accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
|
|
63316
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
|
|
63317
|
+
"accounting.transactionChargedBack.entryDescription": "R\xFCckbuchung f\xFCr Rechnung {{invoiceId}}",
|
|
63318
|
+
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
63319
|
+
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
62806
63320
|
"creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
|
|
62807
63321
|
"credits.bundleOf": "{{productName}} - Paket mit {{creditCount}} Guthaben",
|
|
62808
63322
|
"credits.unitsOf": "{{productName}} - {{creditCount}} Guthaben",
|
|
62809
63323
|
"einvoicing.paymentFromWallet": "Zahlung aus Guthaben",
|
|
62810
63324
|
"einvoicing.paymentProcessed": "Zahlung verarbeitet",
|
|
62811
63325
|
"einvoicing.paymentReceived": "Zahlung erhalten",
|
|
63326
|
+
"invoices.minimumFee.adjustmentName": "Anpassung der Mindestgeb\xFChr",
|
|
63327
|
+
"invoices.minimumFee.name": "Mindestgeb\xFChr",
|
|
62812
63328
|
"invoices.outstandingProduct.description": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{date}}",
|
|
62813
63329
|
"invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
|
|
62814
63330
|
"invoices.outstandingProduct.name": "Offener Saldo",
|
|
@@ -62816,9 +63332,9 @@ var de = {
|
|
|
62816
63332
|
"invoices.prorata.paymentForItemFullPeriod": "Zahlung f\xFCr",
|
|
62817
63333
|
"invoices.prorata.refundForItem": "Anteilig erstatteter Betrag f\xFCr",
|
|
62818
63334
|
"invoices.prorata.refundForItemFullPeriod": "Erstattung f\xFCr",
|
|
62819
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben",
|
|
62820
63335
|
"subscriptions.closingChargeName": "Abschlussgeb\xFChr f\xFCr das Abonnement",
|
|
62821
63336
|
"subscriptions.correction": "Vorperiodische Anpassung",
|
|
63337
|
+
"subscriptions.reinstatementRechargeName": "Wiederherstellungsgeb\xFChr f\xFCr den stornierten Zeitraum",
|
|
62822
63338
|
"subscriptions.updates.addCoupon": "Gutschein hinzuf\xFCgen {{couponName}}",
|
|
62823
63339
|
"subscriptions.updates.addProduct": "{{productName}} hinzuf\xFCgen",
|
|
62824
63340
|
"subscriptions.updates.removeCoupon": "Gutschein entfernen {{couponName}}",
|
|
@@ -62833,7 +63349,8 @@ var de = {
|
|
|
62833
63349
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Betrag von {{amount}} (mit einer minimal zugesicherten Anzahl von {{committedCount}}) f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
|
|
62834
63350
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Diese Position wurde f\xFCr den anteiligen Zeitraum in Rechnung gestellt",
|
|
62835
63351
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Betrag von {{amount}} f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
|
|
62836
|
-
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren"
|
|
63352
|
+
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren",
|
|
63353
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben"
|
|
62837
63354
|
};
|
|
62838
63355
|
|
|
62839
63356
|
// ../hyperline-i18n/build/locales/en.js
|
|
@@ -62841,6 +63358,8 @@ var en = {
|
|
|
62841
63358
|
"creditNotes.refundChargeName": "Refund for invoice",
|
|
62842
63359
|
"credits.bundleOf": "{{productName}} - Pack of {{creditCount}} credits",
|
|
62843
63360
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
63361
|
+
"invoices.minimumFee.adjustmentName": "Minimum fee adjustment",
|
|
63362
|
+
"invoices.minimumFee.name": "Minimum fee",
|
|
62844
63363
|
"invoices.outstandingProduct.description": "Unpaid amount from the invoice{{invoiceNumber}} emitted on {{date}}",
|
|
62845
63364
|
"invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
|
|
62846
63365
|
"invoices.outstandingProduct.name": "Outstanding balance",
|
|
@@ -62850,6 +63369,7 @@ var en = {
|
|
|
62850
63369
|
"invoices.prorata.refundForItemFullPeriod": "Refund for",
|
|
62851
63370
|
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 expired balance",
|
|
62852
63371
|
"subscriptions.closingChargeName": "Closing fee for subscription",
|
|
63372
|
+
"subscriptions.reinstatementRechargeName": "Reinstatement recharge of canceled period",
|
|
62853
63373
|
"subscriptions.correction": "Adjustment previous period",
|
|
62854
63374
|
"subscriptions.updates.addCoupon": "Add coupon {{couponName}}",
|
|
62855
63375
|
"subscriptions.updates.addProduct": "Add {{productName}}",
|
|
@@ -62869,6 +63389,7 @@ var en = {
|
|
|
62869
63389
|
"accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
|
|
62870
63390
|
"accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
|
|
62871
63391
|
"accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
|
|
63392
|
+
"accounting.transactionChargedBack.entryDescription": "Chargeback for Invoice {{invoiceId}}",
|
|
62872
63393
|
"accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
|
|
62873
63394
|
"accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
|
|
62874
63395
|
"accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
|
|
@@ -62884,23 +63405,26 @@ var en = {
|
|
|
62884
63405
|
|
|
62885
63406
|
// ../hyperline-i18n/build/locales/es.js
|
|
62886
63407
|
var es = {
|
|
62887
|
-
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
62888
|
-
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62889
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
62890
63408
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
|
|
62891
|
-
"accounting.
|
|
63409
|
+
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
63410
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62892
63411
|
"accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62893
63412
|
"accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62894
63413
|
"accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62895
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62896
63414
|
"accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62897
63415
|
"accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63416
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63417
|
+
"accounting.transactionChargedBack.entryDescription": "Contracargo de la factura {{invoiceId}}",
|
|
63418
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
63419
|
+
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62898
63420
|
"creditNotes.refundChargeName": "Reembolso por factura",
|
|
62899
63421
|
"credits.bundleOf": "{{productName}} - Paquete de {{creditCount}} cr\xE9ditos",
|
|
62900
63422
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
62901
63423
|
"einvoicing.paymentFromWallet": "Pago desde el monedero",
|
|
62902
63424
|
"einvoicing.paymentProcessed": "Pago procesado",
|
|
62903
63425
|
"einvoicing.paymentReceived": "Pago recibido",
|
|
63426
|
+
"invoices.minimumFee.adjustmentName": "Ajuste del cargo m\xEDnimo",
|
|
63427
|
+
"invoices.minimumFee.name": "Cargo m\xEDnimo",
|
|
62904
63428
|
"invoices.outstandingProduct.description": "Monto pendiente de la factura{{invoiceNumber}} emitida el {{date}}",
|
|
62905
63429
|
"invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
|
|
62906
63430
|
"invoices.outstandingProduct.name": "Saldo pendiente",
|
|
@@ -62908,9 +63432,9 @@ var es = {
|
|
|
62908
63432
|
"invoices.prorata.paymentForItemFullPeriod": "Pago por",
|
|
62909
63433
|
"invoices.prorata.refundForItem": "Reembolso prorrateado por",
|
|
62910
63434
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
62911
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado",
|
|
62912
63435
|
"subscriptions.closingChargeName": "Cargo por cierre de suscripci\xF3n",
|
|
62913
63436
|
"subscriptions.correction": "Ajuste del periodo anterior",
|
|
63437
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reinstalaci\xF3n del per\xEDodo cancelado",
|
|
62914
63438
|
"subscriptions.updates.addCoupon": "A\xF1adir cup\xF3n {{couponName}}",
|
|
62915
63439
|
"subscriptions.updates.addProduct": "A\xF1adir {{productName}}",
|
|
62916
63440
|
"subscriptions.updates.removeCoupon": "Eliminar cup\xF3n {{couponName}}",
|
|
@@ -62925,28 +63449,32 @@ var es = {
|
|
|
62925
63449
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Importe de {{amount}} (con un m\xEDnimo comprometido de {{committedCount}}) no facturado para el per\xEDodo prorrateado",
|
|
62926
63450
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta l\xEDnea ha sido facturada para el per\xEDodo prorrateado",
|
|
62927
63451
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importe de {{amount}} no facturado para el per\xEDodo prorrateado",
|
|
62928
|
-
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}"
|
|
63452
|
+
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}",
|
|
63453
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado"
|
|
62929
63454
|
};
|
|
62930
63455
|
|
|
62931
63456
|
// ../hyperline-i18n/build/locales/fr.js
|
|
62932
63457
|
var fr = {
|
|
63458
|
+
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
63459
|
+
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
63460
|
+
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62933
63461
|
"accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62934
63462
|
"accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62935
63463
|
"accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62936
|
-
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62937
63464
|
"accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62938
|
-
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
62939
|
-
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62940
|
-
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
62941
|
-
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
62942
|
-
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
62943
63465
|
"accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
|
|
63466
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
63467
|
+
"accounting.transactionChargedBack.entryDescription": "R\xE9trofacturation de la facture {{invoiceId}}",
|
|
63468
|
+
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
63469
|
+
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62944
63470
|
"creditNotes.refundChargeName": "Remboursement pour facture",
|
|
62945
63471
|
"credits.bundleOf": "{{productName}} - Pack de {{creditCount}} cr\xE9dits",
|
|
62946
63472
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9dits",
|
|
62947
63473
|
"einvoicing.paymentFromWallet": "Paiement depuis le portefeuille",
|
|
62948
63474
|
"einvoicing.paymentProcessed": "Paiement effectu\xE9",
|
|
62949
63475
|
"einvoicing.paymentReceived": "Paiement re\xE7u",
|
|
63476
|
+
"invoices.minimumFee.adjustmentName": "Ajustement des frais minimums",
|
|
63477
|
+
"invoices.minimumFee.name": "Frais minimums",
|
|
62950
63478
|
"invoices.outstandingProduct.description": "Montant impay\xE9 de la facture{{invoiceNumber}} \xE9mise le {{date}}",
|
|
62951
63479
|
"invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
|
|
62952
63480
|
"invoices.outstandingProduct.name": "Solde impay\xE9",
|
|
@@ -62954,9 +63482,9 @@ var fr = {
|
|
|
62954
63482
|
"invoices.prorata.paymentForItemFullPeriod": "Paiement pour",
|
|
62955
63483
|
"invoices.prorata.refundForItem": "Remboursement au prorata pour",
|
|
62956
63484
|
"invoices.prorata.refundForItemFullPeriod": "Remboursement pour",
|
|
62957
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9",
|
|
62958
63485
|
"subscriptions.closingChargeName": "Frais de cl\xF4ture pour abonnement",
|
|
62959
63486
|
"subscriptions.correction": "Ajustement p\xE9riode pr\xE9c\xE9dente",
|
|
63487
|
+
"subscriptions.reinstatementRechargeName": "Recharge de r\xE9tablissement de la p\xE9riode annul\xE9e",
|
|
62960
63488
|
"subscriptions.updates.addCoupon": "Ajout du coupon {{couponName}}",
|
|
62961
63489
|
"subscriptions.updates.addProduct": "Ajout {{productName}}",
|
|
62962
63490
|
"subscriptions.updates.removeCoupon": "Retrait du coupon {{couponName}}",
|
|
@@ -62971,28 +63499,32 @@ var fr = {
|
|
|
62971
63499
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Montant de {{amount}} (avec un minimum engag\xE9 de {{committedCount}}) non factur\xE9 pour la p\xE9riode proratis\xE9e",
|
|
62972
63500
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Cette ligne a \xE9t\xE9 factur\xE9e pour la p\xE9riode proratis\xE9e",
|
|
62973
63501
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Montant de {{amount}} non factur\xE9 pour la p\xE9riode proratis\xE9e",
|
|
62974
|
-
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}"
|
|
63502
|
+
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}",
|
|
63503
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9"
|
|
62975
63504
|
};
|
|
62976
63505
|
|
|
62977
63506
|
// ../hyperline-i18n/build/locales/it.js
|
|
62978
63507
|
var it = {
|
|
62979
|
-
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
62980
|
-
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62981
|
-
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
62982
63508
|
"accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
|
|
62983
|
-
"accounting.
|
|
63509
|
+
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
63510
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62984
63511
|
"accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62985
63512
|
"accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62986
63513
|
"accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62987
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62988
63514
|
"accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62989
63515
|
"accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
|
|
63516
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
|
|
63517
|
+
"accounting.transactionChargedBack.entryDescription": "Riaddebito per la fattura {{invoiceId}}",
|
|
63518
|
+
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
63519
|
+
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62990
63520
|
"creditNotes.refundChargeName": "Rimborso per fattura",
|
|
62991
63521
|
"credits.bundleOf": "{{productName}} - Pacchetto di {{creditCount}} crediti",
|
|
62992
63522
|
"credits.unitsOf": "{{productName}} - {{creditCount}} crediti",
|
|
62993
63523
|
"einvoicing.paymentFromWallet": "Pagamento dal portafoglio",
|
|
62994
63524
|
"einvoicing.paymentProcessed": "Pagamento elaborato",
|
|
62995
63525
|
"einvoicing.paymentReceived": "Pagamento ricevuto",
|
|
63526
|
+
"invoices.minimumFee.adjustmentName": "Adeguamento all\u2019importo minimo",
|
|
63527
|
+
"invoices.minimumFee.name": "Importo minimo",
|
|
62996
63528
|
"invoices.outstandingProduct.description": "Importo insoluto della fattura{{invoiceNumber}} emessa il {{date}}",
|
|
62997
63529
|
"invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
|
|
62998
63530
|
"invoices.outstandingProduct.name": "Saldo insoluto",
|
|
@@ -63000,9 +63532,9 @@ var it = {
|
|
|
63000
63532
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento per",
|
|
63001
63533
|
"invoices.prorata.refundForItem": "Rimborso proporzionale per",
|
|
63002
63534
|
"invoices.prorata.refundForItemFullPeriod": "Rimborso per",
|
|
63003
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto",
|
|
63004
63535
|
"subscriptions.closingChargeName": "Costo di chiusura per abbonamento",
|
|
63005
63536
|
"subscriptions.correction": "Correzione periodo precedente",
|
|
63537
|
+
"subscriptions.reinstatementRechargeName": "Ricarica di reintegrazione del periodo annullato",
|
|
63006
63538
|
"subscriptions.updates.addCoupon": "Aggiungi coupon {{couponName}}",
|
|
63007
63539
|
"subscriptions.updates.addProduct": "Aggiungi {{productName}}",
|
|
63008
63540
|
"subscriptions.updates.removeCoupon": "Rimuovi coupon {{couponName}}",
|
|
@@ -63017,14 +63549,32 @@ var it = {
|
|
|
63017
63549
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Importo di {{amount}} (con un minimo impegnato di {{committedCount}}) non fatturato per il periodo proporzionato",
|
|
63018
63550
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Questa voce \xE8 stata fatturata per il periodo proporzionato",
|
|
63019
63551
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importo di {{amount}} non fatturato per il periodo proporzionato",
|
|
63020
|
-
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}"
|
|
63552
|
+
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}",
|
|
63553
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto"
|
|
63021
63554
|
};
|
|
63022
63555
|
|
|
63023
63556
|
// ../hyperline-i18n/build/locales/lt.js
|
|
63024
63557
|
var lt = {
|
|
63558
|
+
"accounting.creditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}} s\u0105skaitai fakt\u016Brai {{invoiceId}}",
|
|
63559
|
+
"accounting.invoicePosted.entryDescription": "I\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros {{invoiceId}} registravimo \u012Fra\u0161as",
|
|
63560
|
+
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63561
|
+
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63562
|
+
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63563
|
+
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63564
|
+
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63565
|
+
"accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
|
|
63566
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
|
|
63567
|
+
"accounting.transactionChargedBack.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} u\u017Egin\u010Dyto mok\u0117jimo gr\u0105\u017Einimas",
|
|
63568
|
+
"accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
|
|
63569
|
+
"accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
|
|
63025
63570
|
"creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
|
|
63026
63571
|
"credits.bundleOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173 paketas",
|
|
63027
63572
|
"credits.unitsOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173",
|
|
63573
|
+
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
|
|
63574
|
+
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63575
|
+
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63576
|
+
"invoices.minimumFee.adjustmentName": "Minimalaus mokes\u010Dio koregavimas",
|
|
63577
|
+
"invoices.minimumFee.name": "Minimalus mokestis",
|
|
63028
63578
|
"invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
|
|
63029
63579
|
"invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
|
|
63030
63580
|
"invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
|
|
@@ -63032,59 +63582,49 @@ var lt = {
|
|
|
63032
63582
|
"invoices.prorata.paymentForItemFullPeriod": "Mok\u0117jimas u\u017E",
|
|
63033
63583
|
"invoices.prorata.refundForItem": "Proporcingas gr\u0105\u017Einimas u\u017E",
|
|
63034
63584
|
"invoices.prorata.refundForItemFullPeriod": "Gr\u0105\u017Einimas u\u017E",
|
|
63035
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis",
|
|
63036
63585
|
"subscriptions.closingChargeName": "Prenumeratos u\u017Ebaigimo mokestis",
|
|
63037
63586
|
"subscriptions.correction": "Ankstesnio laikotarpio koregavimas",
|
|
63587
|
+
"subscriptions.reinstatementRechargeName": "Atnaujinimo \u012Fmokos u\u017E nutraukt\u0105 laikotarp\u012F",
|
|
63038
63588
|
"subscriptions.updates.addCoupon": "Prid\u0117ti kupon\u0105 {{couponName}}",
|
|
63039
63589
|
"subscriptions.updates.addProduct": "Prid\u0117ti {{productName}}",
|
|
63040
63590
|
"subscriptions.updates.removeCoupon": "Pa\u0161alinti kupon\u0105 {{couponName}}",
|
|
63041
63591
|
"subscriptions.updates.removeProduct": "Pa\u0161alinti {{productName}}",
|
|
63042
63592
|
"subscriptions.updates.unit": "vnt.",
|
|
63043
|
-
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
63044
63593
|
"subscriptions.updates.updateCount": "Atnaujinti {{productName}} kiek\u012F ({{previousCount}} \u2192 {{newCount}} {{unit}})",
|
|
63045
|
-
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63046
|
-
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63047
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63048
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63049
63594
|
"subscriptions.updates.updateCount.description.full.committed.invoiced": "Visam laikotarpiui pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63050
63595
|
"subscriptions.updates.updateCount.description.full.committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63051
63596
|
"subscriptions.updates.updateCount.description.full.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 visam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63052
63597
|
"subscriptions.updates.updateCount.description.full.not_committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63053
|
-
"
|
|
63054
|
-
"
|
|
63055
|
-
"
|
|
63056
|
-
"
|
|
63057
|
-
"
|
|
63058
|
-
"
|
|
63059
|
-
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63060
|
-
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63061
|
-
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63062
|
-
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63063
|
-
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63064
|
-
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63065
|
-
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63066
|
-
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s"
|
|
63598
|
+
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63599
|
+
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63600
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63601
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63602
|
+
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
63603
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis"
|
|
63067
63604
|
};
|
|
63068
63605
|
|
|
63069
63606
|
// ../hyperline-i18n/build/locales/nl.js
|
|
63070
63607
|
var nl = {
|
|
63071
|
-
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63072
|
-
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
63073
|
-
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63074
63608
|
"accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
|
|
63075
|
-
"accounting.
|
|
63609
|
+
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63610
|
+
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
63076
63611
|
"accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63077
63612
|
"accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63078
63613
|
"accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63079
|
-
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
63080
63614
|
"accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63081
63615
|
"accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
|
|
63616
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
|
|
63617
|
+
"accounting.transactionChargedBack.entryDescription": "Terugboeking voor factuur {{invoiceId}}",
|
|
63618
|
+
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63619
|
+
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
63082
63620
|
"creditNotes.refundChargeName": "Terugbetaling voor factuur",
|
|
63083
63621
|
"credits.bundleOf": "{{productName}} - Bundel van {{creditCount}} credits",
|
|
63084
63622
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
63085
63623
|
"einvoicing.paymentFromWallet": "Betaling uit tegoed",
|
|
63086
63624
|
"einvoicing.paymentProcessed": "Betaling verwerkt",
|
|
63087
63625
|
"einvoicing.paymentReceived": "Betaling ontvangen",
|
|
63626
|
+
"invoices.minimumFee.adjustmentName": "Aanpassing minimumbedrag",
|
|
63627
|
+
"invoices.minimumFee.name": "Minimumbedrag",
|
|
63088
63628
|
"invoices.outstandingProduct.description": "Onbetaald bedrag van de factuur{{invoiceNumber}} uitgegeven op {{date}}",
|
|
63089
63629
|
"invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
|
|
63090
63630
|
"invoices.outstandingProduct.name": "Openstaand saldo",
|
|
@@ -63092,9 +63632,9 @@ var nl = {
|
|
|
63092
63632
|
"invoices.prorata.paymentForItemFullPeriod": "Betaling voor",
|
|
63093
63633
|
"invoices.prorata.refundForItem": "Gedeeltelijke terugbetaling voor",
|
|
63094
63634
|
"invoices.prorata.refundForItemFullPeriod": "Terugbetaling voor",
|
|
63095
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo",
|
|
63096
63635
|
"subscriptions.closingChargeName": "Afsluitkosten voor abonnement",
|
|
63097
63636
|
"subscriptions.correction": "Aanpassing vorige periode",
|
|
63637
|
+
"subscriptions.reinstatementRechargeName": "Herstelkosten van geannuleerde periode",
|
|
63098
63638
|
"subscriptions.updates.addCoupon": "Coupon toevoegen {{couponName}}",
|
|
63099
63639
|
"subscriptions.updates.addProduct": "{{productName}} toevoegen",
|
|
63100
63640
|
"subscriptions.updates.removeCoupon": "Coupon verwijderen {{couponName}}",
|
|
@@ -63109,28 +63649,32 @@ var nl = {
|
|
|
63109
63649
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Bedrag van {{amount}} (met een minimaal toegezegd aantal van {{committedCount}}) niet gefactureerd voor de geproportioneerde periode",
|
|
63110
63650
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Deze regel is gefactureerd voor de geproportioneerde periode",
|
|
63111
63651
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Bedrag van {{amount}} niet gefactureerd voor de geproportioneerde periode",
|
|
63112
|
-
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}"
|
|
63652
|
+
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}",
|
|
63653
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo"
|
|
63113
63654
|
};
|
|
63114
63655
|
|
|
63115
63656
|
// ../hyperline-i18n/build/locales/pl.js
|
|
63116
63657
|
var pl = {
|
|
63117
|
-
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63118
|
-
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63119
|
-
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63120
63658
|
"accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
|
|
63121
|
-
"accounting.
|
|
63659
|
+
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63660
|
+
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
63122
63661
|
"accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63123
63662
|
"accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63124
63663
|
"accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63125
|
-
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
63126
63664
|
"accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63127
63665
|
"accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
|
|
63666
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
|
|
63667
|
+
"accounting.transactionChargedBack.entryDescription": "Obci\u0105\u017Cenie zwrotne za faktur\u0119 {{invoiceId}}",
|
|
63668
|
+
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63669
|
+
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63128
63670
|
"creditNotes.refundChargeName": "Zwrot za faktur\u0119",
|
|
63129
63671
|
"credits.bundleOf": "{{productName}} - Pakiet {{creditCount}} kredyt\xF3w",
|
|
63130
63672
|
"credits.unitsOf": "{{productName}} - {{creditCount}} kredyt\xF3w",
|
|
63131
63673
|
"einvoicing.paymentFromWallet": "P\u0142atno\u015B\u0107 z portfela",
|
|
63132
63674
|
"einvoicing.paymentProcessed": "P\u0142atno\u015B\u0107 przetworzona",
|
|
63133
63675
|
"einvoicing.paymentReceived": "P\u0142atno\u015B\u0107 otrzymana",
|
|
63676
|
+
"invoices.minimumFee.adjustmentName": "Wyr\xF3wnanie do op\u0142aty minimalnej",
|
|
63677
|
+
"invoices.minimumFee.name": "Op\u0142ata minimalna",
|
|
63134
63678
|
"invoices.outstandingProduct.description": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} wystawionej {{date}}",
|
|
63135
63679
|
"invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
|
|
63136
63680
|
"invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
|
|
@@ -63138,9 +63682,9 @@ var pl = {
|
|
|
63138
63682
|
"invoices.prorata.paymentForItemFullPeriod": "P\u0142atno\u015B\u0107 za",
|
|
63139
63683
|
"invoices.prorata.refundForItem": "Zwrot proporcjonalny za",
|
|
63140
63684
|
"invoices.prorata.refundForItemFullPeriod": "Zwrot za",
|
|
63141
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo",
|
|
63142
63685
|
"subscriptions.closingChargeName": "Op\u0142ata za zamkni\u0119cie subskrypcji",
|
|
63143
63686
|
"subscriptions.correction": "Korekta poprzedniego okresu",
|
|
63687
|
+
"subscriptions.reinstatementRechargeName": "Op\u0142ata za przywr\xF3cenie anulowanego okresu",
|
|
63144
63688
|
"subscriptions.updates.addCoupon": "Dodaj kupon {{couponName}}",
|
|
63145
63689
|
"subscriptions.updates.addProduct": "Dodaj {{productName}}",
|
|
63146
63690
|
"subscriptions.updates.removeCoupon": "Usu\u0144 kupon {{couponName}}",
|
|
@@ -63155,28 +63699,32 @@ var pl = {
|
|
|
63155
63699
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Kwota {{amount}} (z minimaln\u0105 zobowi\u0105zan\u0105 ilo\u015Bci\u0105 {{committedCount}}) niefakturowana za okres proporcjonalny",
|
|
63156
63700
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Ta pozycja zosta\u0142a zafakturowana za okres proporcjonalny",
|
|
63157
63701
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Kwota {{amount}} niefakturowana za okres proporcjonalny",
|
|
63158
|
-
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}"
|
|
63702
|
+
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}",
|
|
63703
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo"
|
|
63159
63704
|
};
|
|
63160
63705
|
|
|
63161
63706
|
// ../hyperline-i18n/build/locales/pt.js
|
|
63162
63707
|
var pt = {
|
|
63163
|
-
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63164
|
-
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63165
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63166
63708
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
|
|
63167
|
-
"accounting.
|
|
63709
|
+
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63710
|
+
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
63168
63711
|
"accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63169
63712
|
"accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63170
63713
|
"accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63171
|
-
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
63172
63714
|
"accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63173
63715
|
"accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63716
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63717
|
+
"accounting.transactionChargedBack.entryDescription": "Estorno da fatura {{invoiceId}}",
|
|
63718
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63719
|
+
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63174
63720
|
"creditNotes.refundChargeName": "Reembolso pela fatura",
|
|
63175
63721
|
"credits.bundleOf": "{{productName}} - Pacote de {{creditCount}} cr\xE9ditos",
|
|
63176
63722
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
63177
63723
|
"einvoicing.paymentFromWallet": "Pagamento da carteira",
|
|
63178
63724
|
"einvoicing.paymentProcessed": "Pagamento processado",
|
|
63179
63725
|
"einvoicing.paymentReceived": "Pagamento recebido",
|
|
63726
|
+
"invoices.minimumFee.adjustmentName": "Ajuste do valor m\xEDnimo",
|
|
63727
|
+
"invoices.minimumFee.name": "Valor m\xEDnimo",
|
|
63180
63728
|
"invoices.outstandingProduct.description": "Valor em aberto da fatura{{invoiceNumber}} emitida em {{date}}",
|
|
63181
63729
|
"invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
|
|
63182
63730
|
"invoices.outstandingProduct.name": "Saldo em aberto",
|
|
@@ -63184,9 +63732,9 @@ var pt = {
|
|
|
63184
63732
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento por",
|
|
63185
63733
|
"invoices.prorata.refundForItem": "Reembolso proporcional por",
|
|
63186
63734
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
63187
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado",
|
|
63188
63735
|
"subscriptions.closingChargeName": "Taxa de encerramento da assinatura",
|
|
63189
63736
|
"subscriptions.correction": "Ajuste do per\xEDodo anterior",
|
|
63737
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reintegra\xE7\xE3o do per\xEDodo cancelado",
|
|
63190
63738
|
"subscriptions.updates.addCoupon": "Adicionar cupom {{couponName}}",
|
|
63191
63739
|
"subscriptions.updates.addProduct": "Adicionar {{productName}}",
|
|
63192
63740
|
"subscriptions.updates.removeCoupon": "Remover cupom {{couponName}}",
|
|
@@ -63201,7 +63749,8 @@ var pt = {
|
|
|
63201
63749
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Valor de {{amount}} (com um m\xEDnimo comprometido de {{committedCount}}) n\xE3o faturado para o per\xEDodo proporcional",
|
|
63202
63750
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta linha foi faturada para o per\xEDodo proporcional",
|
|
63203
63751
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Valor de {{amount}} n\xE3o faturado para o per\xEDodo proporcional",
|
|
63204
|
-
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}"
|
|
63752
|
+
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}",
|
|
63753
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado"
|
|
63205
63754
|
};
|
|
63206
63755
|
|
|
63207
63756
|
// ../hyperline-i18n/build/language.js
|
|
@@ -63364,6 +63913,223 @@ import * as winston from "winston";
|
|
|
63364
63913
|
|
|
63365
63914
|
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
63366
63915
|
import prune from "json-prune";
|
|
63916
|
+
|
|
63917
|
+
// ../hyperline-monitoring/build/logger/formatting/logRedaction.js
|
|
63918
|
+
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
63919
|
+
"accesstoken",
|
|
63920
|
+
"apitoken",
|
|
63921
|
+
"assertion",
|
|
63922
|
+
"authorization",
|
|
63923
|
+
"authtoken",
|
|
63924
|
+
"cardnumber",
|
|
63925
|
+
"clientassertion",
|
|
63926
|
+
"codeverifier",
|
|
63927
|
+
"connectionurl",
|
|
63928
|
+
"consumerkey",
|
|
63929
|
+
"cookie",
|
|
63930
|
+
"credential",
|
|
63931
|
+
"credentials",
|
|
63932
|
+
"iban",
|
|
63933
|
+
"idtoken",
|
|
63934
|
+
"privatekey",
|
|
63935
|
+
"publictoken",
|
|
63936
|
+
"refreshtoken",
|
|
63937
|
+
"sessiontoken",
|
|
63938
|
+
"token",
|
|
63939
|
+
"tokenid",
|
|
63940
|
+
"verificationcode"
|
|
63941
|
+
]);
|
|
63942
|
+
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password|passphrase|apikey)$/;
|
|
63943
|
+
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
|
|
63944
|
+
var URL_ONLY_REDACTED_KEYS = /* @__PURE__ */ new Set(["key"]);
|
|
63945
|
+
var OAUTH_CODE_KEY = "code";
|
|
63946
|
+
var OAUTH_CODE_CONTEXT_KEYS = ["state", "grant_type"];
|
|
63947
|
+
var REDACTED_VALUE = "<redacted>";
|
|
63948
|
+
var TRUNCATED_VALUE = "[TRUNCATED: not redacted]";
|
|
63949
|
+
var TRUNCATED_KEY = "[TRUNCATED]";
|
|
63950
|
+
var MAX_REDACTION_DEPTH = 6;
|
|
63951
|
+
var MAX_ARRAY_ENTRIES = 50;
|
|
63952
|
+
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
63953
|
+
var MAX_VISITED_NODES = 5e3;
|
|
63954
|
+
var MAX_CONTAINER_ENTRIES = 1e3;
|
|
63955
|
+
var MAX_STRING_CHARACTERS = 256e3;
|
|
63956
|
+
function redactLogBody({ body }) {
|
|
63957
|
+
return redactValue({
|
|
63958
|
+
value: body,
|
|
63959
|
+
depth: MAX_REDACTION_DEPTH,
|
|
63960
|
+
budget: {
|
|
63961
|
+
remainingNodes: MAX_VISITED_NODES,
|
|
63962
|
+
remainingChars: MAX_STRING_CHARACTERS
|
|
63963
|
+
}
|
|
63964
|
+
});
|
|
63965
|
+
}
|
|
63966
|
+
function redactLogUrl({ url: url2 }) {
|
|
63967
|
+
const queryIndex = url2.indexOf("?");
|
|
63968
|
+
if (queryIndex === -1) {
|
|
63969
|
+
return url2;
|
|
63970
|
+
}
|
|
63971
|
+
if (url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
63972
|
+
return `${url2.slice(0, queryIndex)}?${TRUNCATED_VALUE}`;
|
|
63973
|
+
}
|
|
63974
|
+
const redactedQuery = redactFormEncoded({
|
|
63975
|
+
text: url2.slice(queryIndex + 1),
|
|
63976
|
+
extraRedactedKeys: URL_ONLY_REDACTED_KEYS
|
|
63977
|
+
});
|
|
63978
|
+
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
63979
|
+
}
|
|
63980
|
+
function redactValue({ value, depth, budget }) {
|
|
63981
|
+
if (isOpaqueObject({ value })) {
|
|
63982
|
+
return replaceOpaqueObject({ value });
|
|
63983
|
+
}
|
|
63984
|
+
if (typeof value === "string") {
|
|
63985
|
+
if (value.length > budget.remainingChars) {
|
|
63986
|
+
return TRUNCATED_VALUE;
|
|
63987
|
+
}
|
|
63988
|
+
budget.remainingChars -= value.length;
|
|
63989
|
+
}
|
|
63990
|
+
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
63991
|
+
return isInspectable({ value }) ? TRUNCATED_VALUE : value;
|
|
63992
|
+
}
|
|
63993
|
+
budget.remainingNodes -= 1;
|
|
63994
|
+
if (typeof value === "string") {
|
|
63995
|
+
return redactString({ text: value, budget });
|
|
63996
|
+
}
|
|
63997
|
+
if (value instanceof URLSearchParams) {
|
|
63998
|
+
return redactValue({ value: value.toString(), depth, budget });
|
|
63999
|
+
}
|
|
64000
|
+
if (Array.isArray(value)) {
|
|
64001
|
+
return redactArray({ items: value, depth, budget });
|
|
64002
|
+
}
|
|
64003
|
+
if (isPlainObject2(value)) {
|
|
64004
|
+
return redactObject({ record: value, depth, budget });
|
|
64005
|
+
}
|
|
64006
|
+
return value;
|
|
64007
|
+
}
|
|
64008
|
+
function isOpaqueObject({ value }) {
|
|
64009
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && !isPlainObject2(value) && !(value instanceof URLSearchParams);
|
|
64010
|
+
}
|
|
64011
|
+
function replaceOpaqueObject({ value }) {
|
|
64012
|
+
if (typeof value !== "object" || value === null || value instanceof Date) {
|
|
64013
|
+
return value;
|
|
64014
|
+
}
|
|
64015
|
+
if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
64016
|
+
return `[BINARY ${value.byteLength} bytes]`;
|
|
64017
|
+
}
|
|
64018
|
+
if (value instanceof Blob) {
|
|
64019
|
+
return `[BINARY ${value.size} bytes]`;
|
|
64020
|
+
}
|
|
64021
|
+
if (value instanceof FormData || typeof Reflect.get(value, "pipe") === "function") {
|
|
64022
|
+
return "[BINARY stream]";
|
|
64023
|
+
}
|
|
64024
|
+
return TRUNCATED_VALUE;
|
|
64025
|
+
}
|
|
64026
|
+
function redactArray({ items, depth, budget }) {
|
|
64027
|
+
const isTruncated = items.length > MAX_ARRAY_ENTRIES;
|
|
64028
|
+
const keptItems = isTruncated ? items.slice(0, MAX_ARRAY_ENTRIES) : items;
|
|
64029
|
+
let redactedItems;
|
|
64030
|
+
for (const [index, item] of keptItems.entries()) {
|
|
64031
|
+
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
64032
|
+
if (redactedItem !== item) {
|
|
64033
|
+
redactedItems ??= [...keptItems];
|
|
64034
|
+
redactedItems[index] = redactedItem;
|
|
64035
|
+
}
|
|
64036
|
+
}
|
|
64037
|
+
const result = redactedItems ?? keptItems;
|
|
64038
|
+
return isTruncated ? [...result, TRUNCATED_VALUE] : result;
|
|
64039
|
+
}
|
|
64040
|
+
function redactObject({ record: record2, depth, budget }) {
|
|
64041
|
+
const redactedEntries = /* @__PURE__ */ new Map();
|
|
64042
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => Object.hasOwn(record2, contextKey));
|
|
64043
|
+
const keptKeys = [];
|
|
64044
|
+
let isTruncated = false;
|
|
64045
|
+
for (const key in record2) {
|
|
64046
|
+
if (!Object.hasOwn(record2, key)) {
|
|
64047
|
+
continue;
|
|
64048
|
+
}
|
|
64049
|
+
if (keptKeys.length >= MAX_CONTAINER_ENTRIES || key.length > budget.remainingChars) {
|
|
64050
|
+
isTruncated = true;
|
|
64051
|
+
break;
|
|
64052
|
+
}
|
|
64053
|
+
budget.remainingChars -= key.length;
|
|
64054
|
+
keptKeys.push(key);
|
|
64055
|
+
const nestedValue = record2[key];
|
|
64056
|
+
const isSensitiveKey = isRedactedKey({ key }) || carriesOAuthCode && key === OAUTH_CODE_KEY;
|
|
64057
|
+
const shouldRedact = isSensitiveKey && nestedValue != null && typeof nestedValue !== "boolean";
|
|
64058
|
+
if (shouldRedact) {
|
|
64059
|
+
budget.remainingNodes -= 1;
|
|
64060
|
+
}
|
|
64061
|
+
const redactedNestedValue = shouldRedact ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
64062
|
+
if (redactedNestedValue !== nestedValue) {
|
|
64063
|
+
redactedEntries.set(key, redactedNestedValue);
|
|
64064
|
+
}
|
|
64065
|
+
}
|
|
64066
|
+
if (isTruncated) {
|
|
64067
|
+
const keptRecord = {};
|
|
64068
|
+
for (const key of keptKeys) {
|
|
64069
|
+
keptRecord[key] = redactedEntries.has(key) ? redactedEntries.get(key) : record2[key];
|
|
64070
|
+
}
|
|
64071
|
+
keptRecord[TRUNCATED_KEY] = TRUNCATED_VALUE;
|
|
64072
|
+
return keptRecord;
|
|
64073
|
+
}
|
|
64074
|
+
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
64075
|
+
}
|
|
64076
|
+
function redactString({ text, budget }) {
|
|
64077
|
+
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
64078
|
+
return TRUNCATED_VALUE;
|
|
64079
|
+
}
|
|
64080
|
+
if (!isInspectable({ value: text })) {
|
|
64081
|
+
return text;
|
|
64082
|
+
}
|
|
64083
|
+
const trimmedText = text.trim();
|
|
64084
|
+
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
64085
|
+
try {
|
|
64086
|
+
const parsedValue = JSON.parse(trimmedText);
|
|
64087
|
+
const redactedValue = redactValue({
|
|
64088
|
+
value: parsedValue,
|
|
64089
|
+
depth: MAX_REDACTION_DEPTH,
|
|
64090
|
+
budget
|
|
64091
|
+
});
|
|
64092
|
+
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
64093
|
+
} catch {
|
|
64094
|
+
return REDACTED_KEY_CANDIDATE_PATTERN.test(text) ? TRUNCATED_VALUE : redactFormEncoded({ text }) ?? text;
|
|
64095
|
+
}
|
|
64096
|
+
}
|
|
64097
|
+
return redactFormEncoded({ text }) ?? text;
|
|
64098
|
+
}
|
|
64099
|
+
function redactFormEncoded({ text, extraRedactedKeys }) {
|
|
64100
|
+
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
64101
|
+
return void 0;
|
|
64102
|
+
}
|
|
64103
|
+
const params = new URLSearchParams(text);
|
|
64104
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => params.has(contextKey));
|
|
64105
|
+
let hasRedactedParam = false;
|
|
64106
|
+
for (const key of new Set(params.keys())) {
|
|
64107
|
+
if (isRedactedKey({ key }) || extraRedactedKeys?.has(key.toLowerCase()) || carriesOAuthCode && key === OAUTH_CODE_KEY) {
|
|
64108
|
+
params.set(key, REDACTED_VALUE);
|
|
64109
|
+
hasRedactedParam = true;
|
|
64110
|
+
}
|
|
64111
|
+
}
|
|
64112
|
+
return hasRedactedParam ? params.toString() : void 0;
|
|
64113
|
+
}
|
|
64114
|
+
function isRedactedKey({ key }) {
|
|
64115
|
+
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
64116
|
+
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
64117
|
+
}
|
|
64118
|
+
function isInspectable({ value }) {
|
|
64119
|
+
if (typeof value === "string") {
|
|
64120
|
+
return value.length > MAX_PARSED_STRING_LENGTH || /^\s*[{[]/.test(value) || value.includes("=") && REDACTED_KEY_CANDIDATE_PATTERN.test(value);
|
|
64121
|
+
}
|
|
64122
|
+
return value instanceof URLSearchParams || Array.isArray(value) || isPlainObject2(value);
|
|
64123
|
+
}
|
|
64124
|
+
function isPlainObject2(value) {
|
|
64125
|
+
if (typeof value !== "object" || value === null) {
|
|
64126
|
+
return false;
|
|
64127
|
+
}
|
|
64128
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64129
|
+
return prototype === Object.prototype || prototype === null;
|
|
64130
|
+
}
|
|
64131
|
+
|
|
64132
|
+
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
63367
64133
|
var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
|
|
63368
64134
|
function jsonFormat(info) {
|
|
63369
64135
|
const prunedInfo = JSON.parse(prune(info));
|
|
@@ -63424,14 +64190,106 @@ function transformPrune(info) {
|
|
|
63424
64190
|
});
|
|
63425
64191
|
return info;
|
|
63426
64192
|
}
|
|
64193
|
+
var MAX_AXIOS_ERROR_DEPTH = 5;
|
|
64194
|
+
var MAX_AXIOS_ERROR_CONTAINER_ENTRIES = 1e3;
|
|
64195
|
+
var MAX_AXIOS_ERROR_VISITED_NODES = 5e3;
|
|
64196
|
+
var REDACTED_BODY_KEYS = /* @__PURE__ */ new Set(["requestBody", "responseBody"]);
|
|
63427
64197
|
function transformAxiosError(info) {
|
|
63428
|
-
|
|
63429
|
-
|
|
63430
|
-
|
|
64198
|
+
let walk;
|
|
64199
|
+
for (const [key, value] of Object.entries(info)) {
|
|
64200
|
+
if (typeof value !== "object" || value === null || REDACTED_BODY_KEYS.has(key)) {
|
|
64201
|
+
continue;
|
|
63431
64202
|
}
|
|
63432
|
-
|
|
64203
|
+
walk ??= {
|
|
64204
|
+
formatted: /* @__PURE__ */ new Map(),
|
|
64205
|
+
remainingNodes: MAX_AXIOS_ERROR_VISITED_NODES
|
|
64206
|
+
};
|
|
64207
|
+
const formattedValue = formatNestedAxiosErrors({
|
|
64208
|
+
value,
|
|
64209
|
+
depth: MAX_AXIOS_ERROR_DEPTH,
|
|
64210
|
+
walk
|
|
64211
|
+
});
|
|
64212
|
+
if (formattedValue !== value) {
|
|
64213
|
+
info[key] = formattedValue;
|
|
64214
|
+
}
|
|
64215
|
+
}
|
|
63433
64216
|
return info;
|
|
63434
64217
|
}
|
|
64218
|
+
function formatNestedAxiosErrors({ value, depth, walk }) {
|
|
64219
|
+
if (typeof value !== "object" || value === null) {
|
|
64220
|
+
return value;
|
|
64221
|
+
}
|
|
64222
|
+
if (walk.formatted.has(value)) {
|
|
64223
|
+
return walk.formatted.get(value);
|
|
64224
|
+
}
|
|
64225
|
+
if (Reflect.get(value, "name") === "AxiosError") {
|
|
64226
|
+
const formattedError = walk.remainingNodes > 0 ? formatAxiosError(value) : summarizeAxiosError({ error: value });
|
|
64227
|
+
walk.remainingNodes -= 1;
|
|
64228
|
+
walk.formatted.set(value, formattedError);
|
|
64229
|
+
return formattedError;
|
|
64230
|
+
}
|
|
64231
|
+
const isWalkable = Array.isArray(value) || value instanceof Error || isPlainRecord(value);
|
|
64232
|
+
if (!isWalkable || depth <= 0 || walk.remainingNodes <= 0) {
|
|
64233
|
+
return value;
|
|
64234
|
+
}
|
|
64235
|
+
walk.formatted.set(value, "[Circular]");
|
|
64236
|
+
walk.remainingNodes -= 1;
|
|
64237
|
+
const formattedValue = formatWalkableValue({ value, depth, walk });
|
|
64238
|
+
walk.formatted.set(value, formattedValue);
|
|
64239
|
+
return formattedValue;
|
|
64240
|
+
}
|
|
64241
|
+
function summarizeAxiosError({ error: error48 }) {
|
|
64242
|
+
return {
|
|
64243
|
+
name: Reflect.get(error48, "name"),
|
|
64244
|
+
message: Reflect.get(error48, "message"),
|
|
64245
|
+
code: Reflect.get(error48, "code")
|
|
64246
|
+
};
|
|
64247
|
+
}
|
|
64248
|
+
function formatWalkableValue({ value, depth, walk }) {
|
|
64249
|
+
if (Array.isArray(value)) {
|
|
64250
|
+
if (value.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64251
|
+
return value;
|
|
64252
|
+
}
|
|
64253
|
+
let formattedItems;
|
|
64254
|
+
for (const [index, item] of value.entries()) {
|
|
64255
|
+
const formattedItem = formatNestedAxiosErrors({
|
|
64256
|
+
value: item,
|
|
64257
|
+
depth: depth - 1,
|
|
64258
|
+
walk
|
|
64259
|
+
});
|
|
64260
|
+
if (formattedItem !== item) {
|
|
64261
|
+
formattedItems ??= [...value];
|
|
64262
|
+
formattedItems[index] = formattedItem;
|
|
64263
|
+
}
|
|
64264
|
+
}
|
|
64265
|
+
return formattedItems ?? value;
|
|
64266
|
+
}
|
|
64267
|
+
const keys = Object.keys(value);
|
|
64268
|
+
if (keys.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64269
|
+
return value;
|
|
64270
|
+
}
|
|
64271
|
+
const formattedEntries = /* @__PURE__ */ new Map();
|
|
64272
|
+
for (const key of keys) {
|
|
64273
|
+
const nestedValue = Reflect.get(value, key);
|
|
64274
|
+
const formattedNestedValue = formatNestedAxiosErrors({
|
|
64275
|
+
value: nestedValue,
|
|
64276
|
+
depth: depth - 1,
|
|
64277
|
+
walk
|
|
64278
|
+
});
|
|
64279
|
+
if (formattedNestedValue !== nestedValue) {
|
|
64280
|
+
formattedEntries.set(key, formattedNestedValue);
|
|
64281
|
+
}
|
|
64282
|
+
}
|
|
64283
|
+
if (formattedEntries.size === 0) {
|
|
64284
|
+
return value;
|
|
64285
|
+
}
|
|
64286
|
+
return {
|
|
64287
|
+
...value,
|
|
64288
|
+
// Error properties are not enumerable, so the spread would drop them.
|
|
64289
|
+
...value instanceof Error ? { name: value.name, message: value.message, stack: value.stack } : {},
|
|
64290
|
+
...Object.fromEntries(formattedEntries)
|
|
64291
|
+
};
|
|
64292
|
+
}
|
|
63435
64293
|
function formatAxiosError(error48) {
|
|
63436
64294
|
if (!isRecord(error48) || error48.name !== "AxiosError") {
|
|
63437
64295
|
return error48;
|
|
@@ -63444,9 +64302,9 @@ function formatAxiosError(error48) {
|
|
|
63444
64302
|
code: error48.code,
|
|
63445
64303
|
request: {
|
|
63446
64304
|
method: request?.method,
|
|
63447
|
-
url: request?.url,
|
|
64305
|
+
url: typeof request?.url === "string" ? redactLogUrl({ url: request.url }) : request?.url,
|
|
63448
64306
|
baseURL: request?.baseURL,
|
|
63449
|
-
params: request?.params,
|
|
64307
|
+
params: redactLogBody({ body: request?.params }),
|
|
63450
64308
|
headers: redactHeaders({ headers: request?.headers }),
|
|
63451
64309
|
"axios-retry": request?.["axios-retry"]
|
|
63452
64310
|
},
|
|
@@ -63454,7 +64312,7 @@ function formatAxiosError(error48) {
|
|
|
63454
64312
|
status: response?.status,
|
|
63455
64313
|
statusText: response?.statusText,
|
|
63456
64314
|
headers: redactHeaders({ headers: response?.headers }),
|
|
63457
|
-
data: response?.data
|
|
64315
|
+
data: redactLogBody({ body: response?.data })
|
|
63458
64316
|
}
|
|
63459
64317
|
};
|
|
63460
64318
|
}
|
|
@@ -63467,6 +64325,10 @@ function redactHeaders({ headers }) {
|
|
|
63467
64325
|
REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
|
|
63468
64326
|
]));
|
|
63469
64327
|
}
|
|
64328
|
+
function isPlainRecord(value) {
|
|
64329
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64330
|
+
return prototype === Object.prototype || prototype === null;
|
|
64331
|
+
}
|
|
63470
64332
|
function isRecord(value) {
|
|
63471
64333
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
63472
64334
|
}
|
|
@@ -63496,7 +64358,7 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
63496
64358
|
const responseMetadata = {
|
|
63497
64359
|
statusCode,
|
|
63498
64360
|
responseTime,
|
|
63499
|
-
responseBody,
|
|
64361
|
+
responseBody: redactLogBody({ body: responseBody }),
|
|
63500
64362
|
// Redacted so secrets (authorization/cookie/token/…) never reach the logs
|
|
63501
64363
|
// while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
|
|
63502
64364
|
responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
|
|
@@ -63509,14 +64371,15 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
63509
64371
|
}
|
|
63510
64372
|
function transform2(request) {
|
|
63511
64373
|
const method = request.method.toUpperCase();
|
|
63512
|
-
const
|
|
64374
|
+
const originalUrl = redactLogUrl({ url: request.originalUrl });
|
|
64375
|
+
const message = `${method} ${originalUrl}`;
|
|
63513
64376
|
const metadata = {};
|
|
63514
64377
|
metadata.method = method;
|
|
63515
|
-
metadata.url = request.url;
|
|
63516
|
-
metadata.path = request.path;
|
|
64378
|
+
metadata.url = redactLogUrl({ url: request.url });
|
|
64379
|
+
metadata.path = redactLogUrl({ url: request.path });
|
|
63517
64380
|
metadata.hostname = request.hostname;
|
|
63518
|
-
metadata.originalUrl =
|
|
63519
|
-
metadata.requestBody =
|
|
64381
|
+
metadata.originalUrl = originalUrl;
|
|
64382
|
+
metadata.requestBody = redactLogBody({ body: request.body });
|
|
63520
64383
|
metadata.routePath = transformUrlIntoRoutePath(request);
|
|
63521
64384
|
metadata.apiKeyEnd = request.headers["authorization"]?.slice(-6);
|
|
63522
64385
|
return { message, metadata };
|
|
@@ -63563,7 +64426,16 @@ function buildLoggerFactory({ config: config4, context }) {
|
|
|
63563
64426
|
const internalLogger = winston.createLogger({
|
|
63564
64427
|
transports: transports2,
|
|
63565
64428
|
defaultMeta,
|
|
63566
|
-
format: winston.format.combine(
|
|
64429
|
+
format: winston.format.combine(
|
|
64430
|
+
winston.format.splat(),
|
|
64431
|
+
winston.format(addMetadata({ getCorrelationId, getExecutionContext }))(),
|
|
64432
|
+
// Before pruning: json-prune would otherwise serialize a binary
|
|
64433
|
+
// `response.data` byte by byte before it is summarised (#6006).
|
|
64434
|
+
winston.format(transformAxiosError)(),
|
|
64435
|
+
winston.format(transformErrorEnrich)({ depth: 5 }),
|
|
64436
|
+
winston.format(transformPrune)(),
|
|
64437
|
+
winston.format.timestamp()
|
|
64438
|
+
),
|
|
63567
64439
|
exitOnError: false
|
|
63568
64440
|
});
|
|
63569
64441
|
function createLogger3({ serviceName }) {
|
|
@@ -65910,8 +66782,21 @@ import { deepEqual } from "fast-equals";
|
|
|
65910
66782
|
|
|
65911
66783
|
// ../hyperline-lib/build/utils/realignDatesToTimezone.js
|
|
65912
66784
|
var import_shared4 = __toESM(require_shared(), 1);
|
|
65913
|
-
var
|
|
66785
|
+
var MILLISECONDS_PER_HOUR = 60 * 60 * 1e3;
|
|
66786
|
+
var MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;
|
|
65914
66787
|
var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
|
|
66788
|
+
var dateRealignmentModeSchema = external_exports.enum([
|
|
66789
|
+
"utc_midnight_import",
|
|
66790
|
+
"dst_hour_drift",
|
|
66791
|
+
"month_start_drift",
|
|
66792
|
+
"manual_phase_end_midnight"
|
|
66793
|
+
]).default("utc_midnight_import");
|
|
66794
|
+
var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
|
|
66795
|
+
[23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66796
|
+
[LAST_MILLISECOND_OF_DAY - MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66797
|
+
[MILLISECONDS_PER_HOUR, -MILLISECONDS_PER_HOUR],
|
|
66798
|
+
[MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
|
|
66799
|
+
]);
|
|
65915
66800
|
|
|
65916
66801
|
// ../hyperline-lib/build/utils/api/filterBuilder.js
|
|
65917
66802
|
var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
|
|
@@ -66047,12 +66932,13 @@ function isTooManyRequestsError(error48) {
|
|
|
66047
66932
|
return error48.response?.status === 429;
|
|
66048
66933
|
}
|
|
66049
66934
|
var toLogRequest = (config4) => {
|
|
66935
|
+
const url2 = config4.url ?? "";
|
|
66050
66936
|
return {
|
|
66051
66937
|
method: config4.method ?? "",
|
|
66052
|
-
url:
|
|
66053
|
-
path:
|
|
66938
|
+
url: url2,
|
|
66939
|
+
path: url2,
|
|
66054
66940
|
hostname: config4.baseURL ?? "",
|
|
66055
|
-
originalUrl: `${config4.baseURL ?? ""}${
|
|
66941
|
+
originalUrl: `${config4.baseURL ?? ""}${url2}`,
|
|
66056
66942
|
body: config4.data,
|
|
66057
66943
|
headers: {}
|
|
66058
66944
|
};
|