@hyperline/cli 0.1.0-build.1.5d16bbf → 0.1.0-build.1.5d28ec7
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 +1241 -632
- package/package.json +1 -1
|
@@ -33833,7 +33833,7 @@ var require_shared = __commonJS({
|
|
|
33833
33833
|
getNameForCurrency: () => getNameForCurrency,
|
|
33834
33834
|
getNaturalNumber: () => getNaturalNumber,
|
|
33835
33835
|
getSymbolForCurrency: () => getSymbolForCurrency,
|
|
33836
|
-
getTimezoneByName: () =>
|
|
33836
|
+
getTimezoneByName: () => getTimezoneByName2,
|
|
33837
33837
|
getTimezoneOffsetName: () => getTimezoneOffsetName,
|
|
33838
33838
|
getTimezones: () => getTimezones2,
|
|
33839
33839
|
getValidTimezonesNames: () => getValidTimezonesNames,
|
|
@@ -33850,7 +33850,7 @@ var require_shared = __commonJS({
|
|
|
33850
33850
|
subtract: () => subtract,
|
|
33851
33851
|
sum: () => sum2,
|
|
33852
33852
|
toLocalTime: () => toLocalTime3,
|
|
33853
|
-
toUtc: () =>
|
|
33853
|
+
toUtc: () => toUtc3,
|
|
33854
33854
|
useDebounce: () => useDebounce
|
|
33855
33855
|
});
|
|
33856
33856
|
module.exports = __toCommonJS(shared_exports);
|
|
@@ -36557,14 +36557,14 @@ var require_shared = __commonJS({
|
|
|
36557
36557
|
function getTimezones2() {
|
|
36558
36558
|
return timezones;
|
|
36559
36559
|
}
|
|
36560
|
-
function
|
|
36560
|
+
function getTimezoneByName2(tz) {
|
|
36561
36561
|
var _a2;
|
|
36562
36562
|
if (tz === "UTC") {
|
|
36563
36563
|
return timezones.find(({ name }) => name === "Etc/UTC");
|
|
36564
36564
|
}
|
|
36565
36565
|
return (_a2 = timezones.find(({ name }) => name === tz)) != null ? _a2 : timezones.find(({ group }) => group.includes(tz));
|
|
36566
36566
|
}
|
|
36567
|
-
function
|
|
36567
|
+
function toUtc3(date5, timezone) {
|
|
36568
36568
|
return (0, import_date_fns_tz.fromZonedTime)(date5, timezone);
|
|
36569
36569
|
}
|
|
36570
36570
|
function toLocalTime3(date5, localTimezone) {
|
|
@@ -36575,7 +36575,7 @@ var require_shared = __commonJS({
|
|
|
36575
36575
|
);
|
|
36576
36576
|
var constructDateFromTimezoneToLocal = (date5, timezone) => {
|
|
36577
36577
|
if (!timezone) return date5;
|
|
36578
|
-
const timezoneObj =
|
|
36578
|
+
const timezoneObj = getTimezoneByName2(timezone);
|
|
36579
36579
|
if (!timezoneObj) return date5;
|
|
36580
36580
|
const dateAtTimezone = new Date(
|
|
36581
36581
|
date5.getFullYear(),
|
|
@@ -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({
|
|
@@ -38941,7 +38936,7 @@ Examples:
|
|
|
38941
38936
|
]
|
|
38942
38937
|
});
|
|
38943
38938
|
});
|
|
38944
|
-
resource.command("get-accounting-rule-tree").description(`Retrieve accounting rules organized as a filter tree.`).option("--ledger-id <value>", `Ledger identifier.`).option("--invoicing-entity-id <value>", `Optional invoicing entity identifier.`).option("--max-depth <number>", `Maximum tree depth to return.`).option("--search <value>", `Search by rule identifier or category.`).addHelpText("after", `
|
|
38939
|
+
resource.command("get-accounting-rule-tree").description(`Retrieve accounting rules organized as a filter tree. Accounting software sync rules are excluded.`).option("--ledger-id <value>", `Ledger identifier.`).option("--invoicing-entity-id <value>", `Optional invoicing entity identifier.`).option("--max-depth <number>", `Maximum tree depth to return.`).option("--search <value>", `Search by rule identifier or category.`).addHelpText("after", `
|
|
38945
38940
|
Examples:
|
|
38946
38941
|
hyperline accounting-rules get-accounting-rule-tree
|
|
38947
38942
|
hyperline accounting-rules get-accounting-rule-tree --ledger-id <ledger_id> --invoicing-entity-id <invoicing_entity_id>`).action(async (opts) => {
|
|
@@ -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 (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Use an asset account for doubtful-receivable reclassification or an expense account for direct write-off.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances.`).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", `
|
|
39011
|
+
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 (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Use an asset account for doubtful-receivable reclassification or an expense account for direct write-off.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances.`).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>
|
|
@@ -39078,6 +39073,8 @@ Examples:
|
|
|
39078
39073
|
args.client_provider_ids = JSON.parse(opts.clientProviderIds);
|
|
39079
39074
|
if (opts.paymentMethodTypes !== void 0)
|
|
39080
39075
|
args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
|
|
39076
|
+
if (opts.customPropertyFilters !== void 0)
|
|
39077
|
+
args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
|
|
39081
39078
|
await ctx.execute({
|
|
39082
39079
|
method: "POST",
|
|
39083
39080
|
path: "/v1/accounting/rules",
|
|
@@ -39085,7 +39082,7 @@ Examples:
|
|
|
39085
39082
|
queryParamKeys: []
|
|
39086
39083
|
});
|
|
39087
39084
|
});
|
|
39088
|
-
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
|
|
39085
|
+
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 (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Use an asset account for doubtful-receivable reclassification or an expense account for direct write-off.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances.`).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", `
|
|
39089
39086
|
Examples:
|
|
39090
39087
|
hyperline accounting-rules update --id <id>
|
|
39091
39088
|
hyperline accounting-rules update --id <id> --name <name> --category <category>
|
|
@@ -39150,6 +39147,8 @@ Examples:
|
|
|
39150
39147
|
args.client_provider_ids = JSON.parse(opts.clientProviderIds);
|
|
39151
39148
|
if (opts.paymentMethodTypes !== void 0)
|
|
39152
39149
|
args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
|
|
39150
|
+
if (opts.customPropertyFilters !== void 0)
|
|
39151
|
+
args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
|
|
39153
39152
|
await ctx.execute({
|
|
39154
39153
|
method: "PUT",
|
|
39155
39154
|
path: "/v1/accounting/rules/{id}",
|
|
@@ -39183,7 +39182,7 @@ Examples:
|
|
|
39183
39182
|
queryParamKeys: []
|
|
39184
39183
|
});
|
|
39185
39184
|
});
|
|
39186
|
-
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 (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).addHelpText("after", `
|
|
39185
|
+
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 (month, year, 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", `
|
|
39187
39186
|
Examples:
|
|
39188
39187
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category>
|
|
39189
39188
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category> --product-id <product_id> --product-type <product_type>
|
|
@@ -39214,6 +39213,8 @@ Examples:
|
|
|
39214
39213
|
args.interval_period = opts.intervalPeriod;
|
|
39215
39214
|
if (opts.intervalCount !== void 0)
|
|
39216
39215
|
args.interval_count = Number(opts.intervalCount);
|
|
39216
|
+
if (opts.customProperties !== void 0)
|
|
39217
|
+
args.custom_properties = JSON.parse(opts.customProperties);
|
|
39217
39218
|
await ctx.execute({
|
|
39218
39219
|
method: "POST",
|
|
39219
39220
|
path: "/v1/accounting/rules/resolve",
|
|
@@ -39223,164 +39224,158 @@ Examples:
|
|
|
39223
39224
|
});
|
|
39224
39225
|
}
|
|
39225
39226
|
|
|
39226
|
-
// build/commands/generated/
|
|
39227
|
-
function
|
|
39228
|
-
const resource = parent.command("
|
|
39229
|
-
resource.command("list
|
|
39230
|
-
|
|
39231
|
-
- wallet: Charges a monetary wallet.
|
|
39232
|
-
- credits: Consumes a credit balance.
|
|
39233
|
-
- windows: Meters weighted units against rolling allowances.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39227
|
+
// build/commands/generated/aggregators.js
|
|
39228
|
+
function registerAggregatorsCommands(parent) {
|
|
39229
|
+
const resource = parent.command("aggregators").description("Manage aggregators");
|
|
39230
|
+
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", `
|
|
39234
39231
|
Examples:
|
|
39235
|
-
hyperline
|
|
39236
|
-
hyperline
|
|
39232
|
+
hyperline aggregators list
|
|
39233
|
+
hyperline aggregators list --take <take>`).action(async (opts) => {
|
|
39237
39234
|
const ctx = resource.parent?.opts()._ctx;
|
|
39238
39235
|
if (!ctx) {
|
|
39239
39236
|
process.stderr.write("Error: Not authenticated\n");
|
|
39240
39237
|
process.exit(1);
|
|
39241
39238
|
}
|
|
39242
39239
|
const args = {};
|
|
39243
|
-
if (opts.mode !== void 0)
|
|
39244
|
-
args.mode = opts.mode;
|
|
39245
39240
|
if (opts.take !== void 0)
|
|
39246
39241
|
args.take = Number(opts.take);
|
|
39247
39242
|
if (opts.skip !== void 0)
|
|
39248
39243
|
args.skip = Number(opts.skip);
|
|
39249
39244
|
await ctx.execute({
|
|
39250
39245
|
method: "GET",
|
|
39251
|
-
path: "/v1/
|
|
39246
|
+
path: "/v1/aggregators",
|
|
39252
39247
|
args,
|
|
39253
|
-
queryParamKeys: ["
|
|
39248
|
+
queryParamKeys: ["take", "skip"]
|
|
39254
39249
|
});
|
|
39255
39250
|
});
|
|
39256
|
-
resource.command("create
|
|
39257
|
-
|
|
39258
|
-
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39259
|
-
- 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.
|
|
39260
|
-
|
|
39261
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).requiredOption("--mode <value>", `Billing mode.
|
|
39262
|
-
|
|
39263
|
-
- wallet: Charges a monetary wallet.
|
|
39264
|
-
- credits: Consumes a credit balance.
|
|
39265
|
-
- windows: Meters weighted units against rolling allowances.`).addHelpText("after", `
|
|
39251
|
+
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", `
|
|
39266
39252
|
Examples:
|
|
39267
|
-
hyperline
|
|
39268
|
-
hyperline
|
|
39269
|
-
hyperline
|
|
39253
|
+
hyperline aggregators create --entity <entity> --operation <operation>
|
|
39254
|
+
hyperline aggregators create --entity <entity> --operation <operation> --type <type> --where <where>
|
|
39255
|
+
hyperline aggregators create --entity <entity> --operation <operation> --output json`).action(async (opts) => {
|
|
39270
39256
|
const ctx = resource.parent?.opts()._ctx;
|
|
39271
39257
|
if (!ctx) {
|
|
39272
39258
|
process.stderr.write("Error: Not authenticated\n");
|
|
39273
39259
|
process.exit(1);
|
|
39274
39260
|
}
|
|
39275
39261
|
const args = {};
|
|
39262
|
+
if (opts.entity !== void 0)
|
|
39263
|
+
args.entity = opts.entity;
|
|
39264
|
+
if (opts.type !== void 0)
|
|
39265
|
+
args.type = opts.type;
|
|
39276
39266
|
if (opts.name !== void 0)
|
|
39277
39267
|
args.name = opts.name;
|
|
39278
|
-
if (opts.
|
|
39279
|
-
args.
|
|
39280
|
-
if (opts.
|
|
39281
|
-
args.
|
|
39282
|
-
if (opts.
|
|
39283
|
-
args.
|
|
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.
|
|
39268
|
+
if (opts.description !== void 0)
|
|
39269
|
+
args.description = opts.description;
|
|
39270
|
+
if (opts.customEventName !== void 0)
|
|
39271
|
+
args.custom_event_name = opts.customEventName;
|
|
39272
|
+
if (opts.unitName !== void 0)
|
|
39273
|
+
args.unit_name = opts.unitName;
|
|
39274
|
+
if (opts.defaultIntervalPeriod !== void 0)
|
|
39275
|
+
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
39276
|
+
if (opts.operation !== void 0)
|
|
39277
|
+
args.operation = opts.operation;
|
|
39278
|
+
if (opts.property !== void 0)
|
|
39279
|
+
args.property = opts.property;
|
|
39280
|
+
if (opts.defaultIntervalCount !== void 0)
|
|
39281
|
+
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
39282
|
+
if (opts.allowNegativeValues !== void 0)
|
|
39283
|
+
args.allow_negative_values = true;
|
|
39284
|
+
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
39285
|
+
args.aggregate_on_customers_enabled = true;
|
|
39286
|
+
if (opts.where !== void 0)
|
|
39287
|
+
args.where = JSON.parse(opts.where);
|
|
39288
|
+
if (opts.exposedEventKeys !== void 0)
|
|
39289
|
+
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
39290
|
+
if (opts.thresholds !== void 0)
|
|
39291
|
+
args.thresholds = JSON.parse(opts.thresholds);
|
|
39300
39292
|
await ctx.execute({
|
|
39301
39293
|
method: "POST",
|
|
39302
|
-
path: "/v1/
|
|
39294
|
+
path: "/v1/aggregators",
|
|
39303
39295
|
args,
|
|
39304
39296
|
queryParamKeys: []
|
|
39305
39297
|
});
|
|
39306
39298
|
});
|
|
39307
|
-
resource.command("get
|
|
39299
|
+
resource.command("get").description(`Retrieve a specific aggregator by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39308
39300
|
Examples:
|
|
39309
|
-
hyperline
|
|
39301
|
+
hyperline aggregators get --id <id>`).action(async (opts) => {
|
|
39310
39302
|
const ctx = resource.parent?.opts()._ctx;
|
|
39311
39303
|
if (!ctx) {
|
|
39312
39304
|
process.stderr.write("Error: Not authenticated\n");
|
|
39313
39305
|
process.exit(1);
|
|
39314
39306
|
}
|
|
39315
39307
|
const args = {};
|
|
39316
|
-
if (opts.
|
|
39317
|
-
args.
|
|
39308
|
+
if (opts.id !== void 0)
|
|
39309
|
+
args.id = opts.id;
|
|
39318
39310
|
await ctx.execute({
|
|
39319
39311
|
method: "GET",
|
|
39320
|
-
path: "/v1/
|
|
39312
|
+
path: "/v1/aggregators/{id}",
|
|
39321
39313
|
args,
|
|
39322
39314
|
queryParamKeys: []
|
|
39323
39315
|
});
|
|
39324
39316
|
});
|
|
39325
|
-
resource.command("
|
|
39326
|
-
|
|
39327
|
-
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39328
|
-
- 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.
|
|
39329
|
-
|
|
39330
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39317
|
+
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", `
|
|
39331
39318
|
Examples:
|
|
39332
|
-
hyperline
|
|
39333
|
-
hyperline
|
|
39334
|
-
hyperline
|
|
39319
|
+
hyperline aggregators update --id <id>
|
|
39320
|
+
hyperline aggregators update --id <id> --entity <entity> --type <type>
|
|
39321
|
+
hyperline aggregators update --id <id> --output json`).action(async (opts) => {
|
|
39335
39322
|
const ctx = resource.parent?.opts()._ctx;
|
|
39336
39323
|
if (!ctx) {
|
|
39337
39324
|
process.stderr.write("Error: Not authenticated\n");
|
|
39338
39325
|
process.exit(1);
|
|
39339
39326
|
}
|
|
39340
39327
|
const args = {};
|
|
39341
|
-
if (opts.
|
|
39342
|
-
args.
|
|
39328
|
+
if (opts.id !== void 0)
|
|
39329
|
+
args.id = opts.id;
|
|
39330
|
+
if (opts.entity !== void 0)
|
|
39331
|
+
args.entity = opts.entity;
|
|
39332
|
+
if (opts.type !== void 0)
|
|
39333
|
+
args.type = opts.type;
|
|
39343
39334
|
if (opts.name !== void 0)
|
|
39344
39335
|
args.name = opts.name;
|
|
39345
|
-
if (opts.
|
|
39346
|
-
args.
|
|
39347
|
-
if (opts.
|
|
39348
|
-
args.
|
|
39349
|
-
if (opts.
|
|
39350
|
-
args.
|
|
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.
|
|
39336
|
+
if (opts.description !== void 0)
|
|
39337
|
+
args.description = opts.description;
|
|
39338
|
+
if (opts.customEventName !== void 0)
|
|
39339
|
+
args.custom_event_name = opts.customEventName;
|
|
39340
|
+
if (opts.unitName !== void 0)
|
|
39341
|
+
args.unit_name = opts.unitName;
|
|
39342
|
+
if (opts.defaultIntervalPeriod !== void 0)
|
|
39343
|
+
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
39344
|
+
if (opts.operation !== void 0)
|
|
39345
|
+
args.operation = opts.operation;
|
|
39346
|
+
if (opts.property !== void 0)
|
|
39347
|
+
args.property = opts.property;
|
|
39348
|
+
if (opts.defaultIntervalCount !== void 0)
|
|
39349
|
+
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
39350
|
+
if (opts.allowNegativeValues !== void 0)
|
|
39351
|
+
args.allow_negative_values = true;
|
|
39352
|
+
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
39353
|
+
args.aggregate_on_customers_enabled = true;
|
|
39354
|
+
if (opts.where !== void 0)
|
|
39355
|
+
args.where = JSON.parse(opts.where);
|
|
39356
|
+
if (opts.exposedEventKeys !== void 0)
|
|
39357
|
+
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
39358
|
+
if (opts.thresholds !== void 0)
|
|
39359
|
+
args.thresholds = JSON.parse(opts.thresholds);
|
|
39365
39360
|
await ctx.execute({
|
|
39366
39361
|
method: "PUT",
|
|
39367
|
-
path: "/v1/
|
|
39362
|
+
path: "/v1/aggregators/{id}",
|
|
39368
39363
|
args,
|
|
39369
39364
|
queryParamKeys: []
|
|
39370
39365
|
});
|
|
39371
39366
|
});
|
|
39372
|
-
resource.command("delete
|
|
39367
|
+
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", `
|
|
39373
39368
|
Examples:
|
|
39374
|
-
hyperline
|
|
39375
|
-
hyperline
|
|
39369
|
+
hyperline aggregators delete --id <id>
|
|
39370
|
+
hyperline aggregators delete --id <id> --output json`).action(async (opts) => {
|
|
39376
39371
|
const ctx = resource.parent?.opts()._ctx;
|
|
39377
39372
|
if (!ctx) {
|
|
39378
39373
|
process.stderr.write("Error: Not authenticated\n");
|
|
39379
39374
|
process.exit(1);
|
|
39380
39375
|
}
|
|
39381
39376
|
const args = {};
|
|
39382
|
-
if (opts.
|
|
39383
|
-
args.
|
|
39377
|
+
if (opts.id !== void 0)
|
|
39378
|
+
args.id = opts.id;
|
|
39384
39379
|
if (!opts.yes) {
|
|
39385
39380
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39386
39381
|
if (!confirmed) {
|
|
@@ -39390,113 +39385,182 @@ Examples:
|
|
|
39390
39385
|
}
|
|
39391
39386
|
await ctx.execute({
|
|
39392
39387
|
method: "DELETE",
|
|
39393
|
-
path: "/v1/
|
|
39388
|
+
path: "/v1/aggregators/{id}",
|
|
39394
39389
|
args,
|
|
39395
39390
|
queryParamKeys: []
|
|
39396
39391
|
});
|
|
39397
39392
|
});
|
|
39398
|
-
|
|
39393
|
+
}
|
|
39394
|
+
|
|
39395
|
+
// build/commands/generated/aggregators-usage.js
|
|
39396
|
+
function registerAggregators_UsageCommands(parent) {
|
|
39397
|
+
const resource = parent.command("aggregators-usage").description("Manage aggregators > usage");
|
|
39398
|
+
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", `
|
|
39399
39399
|
Examples:
|
|
39400
|
-
hyperline
|
|
39400
|
+
hyperline aggregators-usage get-aggregator-usage --id <id>`).action(async (opts) => {
|
|
39401
39401
|
const ctx = resource.parent?.opts()._ctx;
|
|
39402
39402
|
if (!ctx) {
|
|
39403
39403
|
process.stderr.write("Error: Not authenticated\n");
|
|
39404
39404
|
process.exit(1);
|
|
39405
39405
|
}
|
|
39406
39406
|
const args = {};
|
|
39407
|
+
if (opts.id !== void 0)
|
|
39408
|
+
args.id = opts.id;
|
|
39407
39409
|
await ctx.execute({
|
|
39408
39410
|
method: "GET",
|
|
39409
|
-
path: "/v1/
|
|
39411
|
+
path: "/v1/aggregators/{id}/usage",
|
|
39410
39412
|
args,
|
|
39411
39413
|
queryParamKeys: []
|
|
39412
39414
|
});
|
|
39413
39415
|
});
|
|
39414
|
-
resource.command("
|
|
39416
|
+
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", `
|
|
39415
39417
|
Examples:
|
|
39416
|
-
hyperline
|
|
39417
|
-
hyperline
|
|
39418
|
-
hyperline agents set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39418
|
+
hyperline aggregators-usage get-aggregator-usage-timeseries --id <id>
|
|
39419
|
+
hyperline aggregators-usage get-aggregator-usage-timeseries --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39419
39420
|
const ctx = resource.parent?.opts()._ctx;
|
|
39420
39421
|
if (!ctx) {
|
|
39421
39422
|
process.stderr.write("Error: Not authenticated\n");
|
|
39422
39423
|
process.exit(1);
|
|
39423
39424
|
}
|
|
39424
39425
|
const args = {};
|
|
39425
|
-
if (opts.
|
|
39426
|
-
args.
|
|
39427
|
-
if (opts.
|
|
39428
|
-
args.
|
|
39426
|
+
if (opts.id !== void 0)
|
|
39427
|
+
args.id = opts.id;
|
|
39428
|
+
if (opts.startDate !== void 0)
|
|
39429
|
+
args.start_date = opts.startDate;
|
|
39430
|
+
if (opts.endDate !== void 0)
|
|
39431
|
+
args.end_date = opts.endDate;
|
|
39432
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39433
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39434
|
+
if (opts.groupBy !== void 0)
|
|
39435
|
+
args.group_by = opts.groupBy;
|
|
39429
39436
|
await ctx.execute({
|
|
39430
|
-
method: "
|
|
39431
|
-
path: "/v1/
|
|
39437
|
+
method: "GET",
|
|
39438
|
+
path: "/v1/aggregators/{id}/usage/timeseries",
|
|
39432
39439
|
args,
|
|
39433
|
-
queryParamKeys: [
|
|
39440
|
+
queryParamKeys: [
|
|
39441
|
+
"start_date",
|
|
39442
|
+
"end_date",
|
|
39443
|
+
"aggregator_filter_id",
|
|
39444
|
+
"group_by"
|
|
39445
|
+
]
|
|
39434
39446
|
});
|
|
39435
39447
|
});
|
|
39436
|
-
resource.command("
|
|
39448
|
+
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", `
|
|
39437
39449
|
Examples:
|
|
39438
|
-
hyperline
|
|
39439
|
-
hyperline
|
|
39450
|
+
hyperline aggregators-usage get-aggregator-usage-group-by-customer --id <id>
|
|
39451
|
+
hyperline aggregators-usage get-aggregator-usage-group-by-customer --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39440
39452
|
const ctx = resource.parent?.opts()._ctx;
|
|
39441
39453
|
if (!ctx) {
|
|
39442
39454
|
process.stderr.write("Error: Not authenticated\n");
|
|
39443
39455
|
process.exit(1);
|
|
39444
39456
|
}
|
|
39445
39457
|
const args = {};
|
|
39446
|
-
if (
|
|
39447
|
-
|
|
39448
|
-
|
|
39449
|
-
|
|
39450
|
-
|
|
39451
|
-
|
|
39452
|
-
|
|
39458
|
+
if (opts.id !== void 0)
|
|
39459
|
+
args.id = opts.id;
|
|
39460
|
+
if (opts.startDate !== void 0)
|
|
39461
|
+
args.start_date = opts.startDate;
|
|
39462
|
+
if (opts.endDate !== void 0)
|
|
39463
|
+
args.end_date = opts.endDate;
|
|
39464
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39465
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39466
|
+
if (opts.take !== void 0)
|
|
39467
|
+
args.take = Number(opts.take);
|
|
39468
|
+
if (opts.skip !== void 0)
|
|
39469
|
+
args.skip = Number(opts.skip);
|
|
39453
39470
|
await ctx.execute({
|
|
39454
|
-
method: "
|
|
39455
|
-
path: "/v1/
|
|
39471
|
+
method: "GET",
|
|
39472
|
+
path: "/v1/aggregators/{id}/usage/group-by-customer",
|
|
39456
39473
|
args,
|
|
39457
|
-
queryParamKeys: [
|
|
39474
|
+
queryParamKeys: [
|
|
39475
|
+
"start_date",
|
|
39476
|
+
"end_date",
|
|
39477
|
+
"aggregator_filter_id",
|
|
39478
|
+
"take",
|
|
39479
|
+
"skip"
|
|
39480
|
+
]
|
|
39458
39481
|
});
|
|
39459
39482
|
});
|
|
39460
|
-
resource.command("
|
|
39461
|
-
|
|
39462
|
-
- credits: Credit counts.
|
|
39463
|
-
- units: Weighted rolling-allowance units.
|
|
39464
|
-
- 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", `
|
|
39483
|
+
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", `
|
|
39465
39484
|
Examples:
|
|
39466
|
-
hyperline
|
|
39467
|
-
hyperline
|
|
39485
|
+
hyperline aggregators-usage get-aggregator-usage-events --id <id>
|
|
39486
|
+
hyperline aggregators-usage get-aggregator-usage-events --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39468
39487
|
const ctx = resource.parent?.opts()._ctx;
|
|
39469
39488
|
if (!ctx) {
|
|
39470
39489
|
process.stderr.write("Error: Not authenticated\n");
|
|
39471
39490
|
process.exit(1);
|
|
39472
39491
|
}
|
|
39473
39492
|
const args = {};
|
|
39474
|
-
if (opts.
|
|
39475
|
-
args.
|
|
39476
|
-
if (opts.
|
|
39477
|
-
args.
|
|
39478
|
-
if (opts.
|
|
39479
|
-
args.
|
|
39480
|
-
if (opts.
|
|
39493
|
+
if (opts.id !== void 0)
|
|
39494
|
+
args.id = opts.id;
|
|
39495
|
+
if (opts.startDate !== void 0)
|
|
39496
|
+
args.start_date = opts.startDate;
|
|
39497
|
+
if (opts.endDate !== void 0)
|
|
39498
|
+
args.end_date = opts.endDate;
|
|
39499
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39500
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39501
|
+
if (opts.take !== void 0)
|
|
39481
39502
|
args.take = Number(opts.take);
|
|
39482
39503
|
if (opts.skip !== void 0)
|
|
39483
39504
|
args.skip = Number(opts.skip);
|
|
39484
39505
|
await ctx.execute({
|
|
39485
39506
|
method: "GET",
|
|
39486
|
-
path: "/v1/
|
|
39507
|
+
path: "/v1/aggregators/{id}/usage/events",
|
|
39487
39508
|
args,
|
|
39488
|
-
queryParamKeys: [
|
|
39509
|
+
queryParamKeys: [
|
|
39510
|
+
"start_date",
|
|
39511
|
+
"end_date",
|
|
39512
|
+
"aggregator_filter_id",
|
|
39513
|
+
"take",
|
|
39514
|
+
"skip"
|
|
39515
|
+
]
|
|
39489
39516
|
});
|
|
39490
39517
|
});
|
|
39491
|
-
|
|
39518
|
+
}
|
|
39492
39519
|
|
|
39493
|
-
-
|
|
39494
|
-
|
|
39495
|
-
|
|
39520
|
+
// build/commands/generated/ai-billing.js
|
|
39521
|
+
function registerAi_BillingCommands(parent) {
|
|
39522
|
+
const resource = parent.command("ai-billing").description("Manage ai > billing");
|
|
39523
|
+
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.
|
|
39524
|
+
|
|
39525
|
+
- wallet: Charges a monetary wallet.
|
|
39526
|
+
- credits: Consumes a credit balance.
|
|
39527
|
+
- windows: Meters weighted units against rolling allowances.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39496
39528
|
Examples:
|
|
39497
|
-
hyperline
|
|
39498
|
-
hyperline
|
|
39499
|
-
|
|
39529
|
+
hyperline ai-billing list-agent-plans
|
|
39530
|
+
hyperline ai-billing list-agent-plans --mode <mode> --take <take>`).action(async (opts) => {
|
|
39531
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39532
|
+
if (!ctx) {
|
|
39533
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39534
|
+
process.exit(1);
|
|
39535
|
+
}
|
|
39536
|
+
const args = {};
|
|
39537
|
+
if (opts.mode !== void 0)
|
|
39538
|
+
args.mode = opts.mode;
|
|
39539
|
+
if (opts.take !== void 0)
|
|
39540
|
+
args.take = Number(opts.take);
|
|
39541
|
+
if (opts.skip !== void 0)
|
|
39542
|
+
args.skip = Number(opts.skip);
|
|
39543
|
+
await ctx.execute({
|
|
39544
|
+
method: "GET",
|
|
39545
|
+
path: "/v1/ai/billing/plans",
|
|
39546
|
+
args,
|
|
39547
|
+
queryParamKeys: ["mode", "take", "skip"]
|
|
39548
|
+
});
|
|
39549
|
+
});
|
|
39550
|
+
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.
|
|
39551
|
+
|
|
39552
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39553
|
+
- 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.
|
|
39554
|
+
|
|
39555
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).requiredOption("--mode <value>", `Billing mode.
|
|
39556
|
+
|
|
39557
|
+
- wallet: Charges a monetary wallet.
|
|
39558
|
+
- credits: Consumes a credit balance.
|
|
39559
|
+
- windows: Meters weighted units against rolling allowances.`).addHelpText("after", `
|
|
39560
|
+
Examples:
|
|
39561
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode>
|
|
39562
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39563
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --output json`).action(async (opts) => {
|
|
39500
39564
|
const ctx = resource.parent?.opts()._ctx;
|
|
39501
39565
|
if (!ctx) {
|
|
39502
39566
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39505,77 +39569,83 @@ Examples:
|
|
|
39505
39569
|
const args = {};
|
|
39506
39570
|
if (opts.name !== void 0)
|
|
39507
39571
|
args.name = opts.name;
|
|
39508
|
-
if (opts.
|
|
39509
|
-
args.
|
|
39510
|
-
if (opts.
|
|
39511
|
-
args.
|
|
39512
|
-
if (opts.
|
|
39513
|
-
args.
|
|
39514
|
-
if (opts.
|
|
39515
|
-
args.
|
|
39572
|
+
if (opts.rateCardId !== void 0)
|
|
39573
|
+
args.rate_card_id = opts.rateCardId;
|
|
39574
|
+
if (opts.overageMode !== void 0)
|
|
39575
|
+
args.overage_mode = opts.overageMode;
|
|
39576
|
+
if (opts.markupPercent !== void 0)
|
|
39577
|
+
args.markup_percent = opts.markupPercent;
|
|
39578
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39579
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39580
|
+
if (opts.overageRateCardId !== void 0)
|
|
39581
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39582
|
+
if (opts.perSeatCredits !== void 0)
|
|
39583
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39584
|
+
if (opts.settlementSchedule !== void 0)
|
|
39585
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39586
|
+
if (opts.mode !== void 0)
|
|
39587
|
+
args.mode = opts.mode;
|
|
39588
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39589
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39590
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39591
|
+
args.grant_rollover_enabled = true;
|
|
39592
|
+
if (opts.windows !== void 0)
|
|
39593
|
+
args.windows = JSON.parse(opts.windows);
|
|
39516
39594
|
await ctx.execute({
|
|
39517
39595
|
method: "POST",
|
|
39518
|
-
path: "/v1/
|
|
39596
|
+
path: "/v1/ai/billing/plans",
|
|
39519
39597
|
args,
|
|
39520
39598
|
queryParamKeys: []
|
|
39521
39599
|
});
|
|
39522
39600
|
});
|
|
39523
|
-
resource.command("get-agent-
|
|
39601
|
+
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", `
|
|
39524
39602
|
Examples:
|
|
39525
|
-
hyperline
|
|
39603
|
+
hyperline ai-billing get-agent-default-plan`).action(async (_opts) => {
|
|
39526
39604
|
const ctx = resource.parent?.opts()._ctx;
|
|
39527
39605
|
if (!ctx) {
|
|
39528
39606
|
process.stderr.write("Error: Not authenticated\n");
|
|
39529
39607
|
process.exit(1);
|
|
39530
39608
|
}
|
|
39531
39609
|
const args = {};
|
|
39532
|
-
if (opts.rateCardId !== void 0)
|
|
39533
|
-
args.rate_card_id = opts.rateCardId;
|
|
39534
39610
|
await ctx.execute({
|
|
39535
39611
|
method: "GET",
|
|
39536
|
-
path: "/v1/
|
|
39612
|
+
path: "/v1/ai/billing/plans/default",
|
|
39537
39613
|
args,
|
|
39538
39614
|
queryParamKeys: []
|
|
39539
39615
|
});
|
|
39540
39616
|
});
|
|
39541
|
-
resource.command("
|
|
39617
|
+
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", `
|
|
39542
39618
|
Examples:
|
|
39543
|
-
hyperline
|
|
39544
|
-
hyperline
|
|
39545
|
-
hyperline
|
|
39619
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id>
|
|
39620
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --auto-apply
|
|
39621
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39546
39622
|
const ctx = resource.parent?.opts()._ctx;
|
|
39547
39623
|
if (!ctx) {
|
|
39548
39624
|
process.stderr.write("Error: Not authenticated\n");
|
|
39549
39625
|
process.exit(1);
|
|
39550
39626
|
}
|
|
39551
39627
|
const args = {};
|
|
39552
|
-
if (opts.
|
|
39553
|
-
args.
|
|
39554
|
-
if (opts.
|
|
39555
|
-
args.
|
|
39556
|
-
if (opts.fallbackPerUsd !== void 0)
|
|
39557
|
-
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39558
|
-
if (opts.rows !== void 0)
|
|
39559
|
-
args.rows = JSON.parse(opts.rows);
|
|
39628
|
+
if (opts.planId !== void 0)
|
|
39629
|
+
args.plan_id = opts.planId;
|
|
39630
|
+
if (opts.autoApply !== void 0)
|
|
39631
|
+
args.auto_apply = true;
|
|
39560
39632
|
await ctx.execute({
|
|
39561
39633
|
method: "PUT",
|
|
39562
|
-
path: "/v1/
|
|
39634
|
+
path: "/v1/ai/billing/plans/default",
|
|
39563
39635
|
args,
|
|
39564
39636
|
queryParamKeys: []
|
|
39565
39637
|
});
|
|
39566
39638
|
});
|
|
39567
|
-
resource.command("
|
|
39639
|
+
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", `
|
|
39568
39640
|
Examples:
|
|
39569
|
-
hyperline
|
|
39570
|
-
hyperline
|
|
39641
|
+
hyperline ai-billing clear-agent-default-plan
|
|
39642
|
+
hyperline ai-billing clear-agent-default-plan --output json`).action(async (opts) => {
|
|
39571
39643
|
const ctx = resource.parent?.opts()._ctx;
|
|
39572
39644
|
if (!ctx) {
|
|
39573
39645
|
process.stderr.write("Error: Not authenticated\n");
|
|
39574
39646
|
process.exit(1);
|
|
39575
39647
|
}
|
|
39576
39648
|
const args = {};
|
|
39577
|
-
if (opts.rateCardId !== void 0)
|
|
39578
|
-
args.rate_card_id = opts.rateCardId;
|
|
39579
39649
|
if (!opts.yes) {
|
|
39580
39650
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39581
39651
|
if (!confirmed) {
|
|
@@ -39585,139 +39655,221 @@ Examples:
|
|
|
39585
39655
|
}
|
|
39586
39656
|
await ctx.execute({
|
|
39587
39657
|
method: "DELETE",
|
|
39588
|
-
path: "/v1/
|
|
39658
|
+
path: "/v1/ai/billing/plans/default",
|
|
39589
39659
|
args,
|
|
39590
39660
|
queryParamKeys: []
|
|
39591
39661
|
});
|
|
39592
39662
|
});
|
|
39593
|
-
resource.command("
|
|
39663
|
+
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", `
|
|
39594
39664
|
Examples:
|
|
39595
|
-
hyperline
|
|
39665
|
+
hyperline ai-billing get-agent-plan --id <id>`).action(async (opts) => {
|
|
39596
39666
|
const ctx = resource.parent?.opts()._ctx;
|
|
39597
39667
|
if (!ctx) {
|
|
39598
39668
|
process.stderr.write("Error: Not authenticated\n");
|
|
39599
39669
|
process.exit(1);
|
|
39600
39670
|
}
|
|
39601
39671
|
const args = {};
|
|
39672
|
+
if (opts.id !== void 0)
|
|
39673
|
+
args.id = opts.id;
|
|
39602
39674
|
await ctx.execute({
|
|
39603
39675
|
method: "GET",
|
|
39604
|
-
path: "/v1/
|
|
39676
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39605
39677
|
args,
|
|
39606
39678
|
queryParamKeys: []
|
|
39607
39679
|
});
|
|
39608
39680
|
});
|
|
39609
|
-
resource.command("
|
|
39681
|
+
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.
|
|
39682
|
+
|
|
39683
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39684
|
+
- 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.
|
|
39685
|
+
|
|
39686
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39610
39687
|
Examples:
|
|
39611
|
-
hyperline
|
|
39612
|
-
hyperline
|
|
39688
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name>
|
|
39689
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39690
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --output json`).action(async (opts) => {
|
|
39613
39691
|
const ctx = resource.parent?.opts()._ctx;
|
|
39614
39692
|
if (!ctx) {
|
|
39615
39693
|
process.stderr.write("Error: Not authenticated\n");
|
|
39616
39694
|
process.exit(1);
|
|
39617
39695
|
}
|
|
39618
39696
|
const args = {};
|
|
39619
|
-
if (opts.
|
|
39620
|
-
args.
|
|
39697
|
+
if (opts.id !== void 0)
|
|
39698
|
+
args.id = opts.id;
|
|
39699
|
+
if (opts.name !== void 0)
|
|
39700
|
+
args.name = opts.name;
|
|
39701
|
+
if (opts.rateCardId !== void 0)
|
|
39702
|
+
args.rate_card_id = opts.rateCardId;
|
|
39703
|
+
if (opts.overageMode !== void 0)
|
|
39704
|
+
args.overage_mode = opts.overageMode;
|
|
39705
|
+
if (opts.markupPercent !== void 0)
|
|
39706
|
+
args.markup_percent = opts.markupPercent;
|
|
39707
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39708
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39709
|
+
if (opts.overageRateCardId !== void 0)
|
|
39710
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39711
|
+
if (opts.perSeatCredits !== void 0)
|
|
39712
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39713
|
+
if (opts.settlementSchedule !== void 0)
|
|
39714
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39715
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39716
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39717
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39718
|
+
args.grant_rollover_enabled = true;
|
|
39719
|
+
if (opts.windows !== void 0)
|
|
39720
|
+
args.windows = JSON.parse(opts.windows);
|
|
39721
|
+
await ctx.execute({
|
|
39722
|
+
method: "PUT",
|
|
39723
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39724
|
+
args,
|
|
39725
|
+
queryParamKeys: []
|
|
39726
|
+
});
|
|
39727
|
+
});
|
|
39728
|
+
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", `
|
|
39729
|
+
Examples:
|
|
39730
|
+
hyperline ai-billing delete-agent-plan --id <id>
|
|
39731
|
+
hyperline ai-billing delete-agent-plan --id <id> --output json`).action(async (opts) => {
|
|
39732
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39733
|
+
if (!ctx) {
|
|
39734
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39735
|
+
process.exit(1);
|
|
39736
|
+
}
|
|
39737
|
+
const args = {};
|
|
39738
|
+
if (opts.id !== void 0)
|
|
39739
|
+
args.id = opts.id;
|
|
39740
|
+
if (!opts.yes) {
|
|
39741
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39742
|
+
if (!confirmed) {
|
|
39743
|
+
process.stdout.write("Aborted.\n");
|
|
39744
|
+
return;
|
|
39745
|
+
}
|
|
39746
|
+
}
|
|
39747
|
+
await ctx.execute({
|
|
39748
|
+
method: "DELETE",
|
|
39749
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39750
|
+
args,
|
|
39751
|
+
queryParamKeys: []
|
|
39752
|
+
});
|
|
39753
|
+
});
|
|
39754
|
+
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.
|
|
39755
|
+
|
|
39756
|
+
- credits: Credit counts.
|
|
39757
|
+
- units: Weighted rolling-allowance units.
|
|
39758
|
+
- 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", `
|
|
39759
|
+
Examples:
|
|
39760
|
+
hyperline ai-billing list-agent-rate-cards
|
|
39761
|
+
hyperline ai-billing list-agent-rate-cards --denomination <denomination> --currency <currency>`).action(async (opts) => {
|
|
39762
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39763
|
+
if (!ctx) {
|
|
39764
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39765
|
+
process.exit(1);
|
|
39766
|
+
}
|
|
39767
|
+
const args = {};
|
|
39768
|
+
if (opts.denomination !== void 0)
|
|
39769
|
+
args.denomination = opts.denomination;
|
|
39770
|
+
if (opts.currency !== void 0)
|
|
39771
|
+
args.currency = opts.currency;
|
|
39772
|
+
if (opts.search !== void 0)
|
|
39773
|
+
args.search = opts.search;
|
|
39774
|
+
if (opts.take !== void 0)
|
|
39775
|
+
args.take = Number(opts.take);
|
|
39776
|
+
if (opts.skip !== void 0)
|
|
39777
|
+
args.skip = Number(opts.skip);
|
|
39621
39778
|
await ctx.execute({
|
|
39622
39779
|
method: "GET",
|
|
39623
|
-
path: "/v1/
|
|
39780
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39624
39781
|
args,
|
|
39625
|
-
queryParamKeys: ["
|
|
39782
|
+
queryParamKeys: ["denomination", "currency", "search", "take", "skip"]
|
|
39626
39783
|
});
|
|
39627
39784
|
});
|
|
39628
|
-
resource.command("create-agent-
|
|
39785
|
+
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.
|
|
39786
|
+
|
|
39787
|
+
- credits: Credit counts.
|
|
39788
|
+
- units: Weighted rolling-allowance units.
|
|
39789
|
+
- 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", `
|
|
39629
39790
|
Examples:
|
|
39630
|
-
hyperline
|
|
39631
|
-
hyperline
|
|
39791
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination>
|
|
39792
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --fallback-per-usd <fallback_per_usd> --currency <currency>
|
|
39793
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --output json`).action(async (opts) => {
|
|
39632
39794
|
const ctx = resource.parent?.opts()._ctx;
|
|
39633
39795
|
if (!ctx) {
|
|
39634
39796
|
process.stderr.write("Error: Not authenticated\n");
|
|
39635
39797
|
process.exit(1);
|
|
39636
39798
|
}
|
|
39637
39799
|
const args = {};
|
|
39638
|
-
if (opts.
|
|
39639
|
-
args.
|
|
39640
|
-
if (opts.
|
|
39641
|
-
args.
|
|
39642
|
-
if (opts.
|
|
39643
|
-
args.
|
|
39800
|
+
if (opts.name !== void 0)
|
|
39801
|
+
args.name = opts.name;
|
|
39802
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39803
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39804
|
+
if (opts.denomination !== void 0)
|
|
39805
|
+
args.denomination = opts.denomination;
|
|
39806
|
+
if (opts.currency !== void 0)
|
|
39807
|
+
args.currency = opts.currency;
|
|
39808
|
+
if (opts.rows !== void 0)
|
|
39809
|
+
args.rows = JSON.parse(opts.rows);
|
|
39644
39810
|
await ctx.execute({
|
|
39645
39811
|
method: "POST",
|
|
39646
|
-
path: "/v1/
|
|
39812
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39647
39813
|
args,
|
|
39648
39814
|
queryParamKeys: []
|
|
39649
39815
|
});
|
|
39650
39816
|
});
|
|
39651
|
-
resource.command("
|
|
39817
|
+
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", `
|
|
39652
39818
|
Examples:
|
|
39653
|
-
hyperline
|
|
39654
|
-
hyperline agents delete-agent-cost-catalog-item --item-id <item_id> --output json`).action(async (opts) => {
|
|
39819
|
+
hyperline ai-billing get-agent-rate-card --id <id>`).action(async (opts) => {
|
|
39655
39820
|
const ctx = resource.parent?.opts()._ctx;
|
|
39656
39821
|
if (!ctx) {
|
|
39657
39822
|
process.stderr.write("Error: Not authenticated\n");
|
|
39658
39823
|
process.exit(1);
|
|
39659
39824
|
}
|
|
39660
39825
|
const args = {};
|
|
39661
|
-
if (opts.
|
|
39662
|
-
args.
|
|
39663
|
-
if (!opts.yes) {
|
|
39664
|
-
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39665
|
-
if (!confirmed) {
|
|
39666
|
-
process.stdout.write("Aborted.\n");
|
|
39667
|
-
return;
|
|
39668
|
-
}
|
|
39669
|
-
}
|
|
39826
|
+
if (opts.id !== void 0)
|
|
39827
|
+
args.id = opts.id;
|
|
39670
39828
|
await ctx.execute({
|
|
39671
|
-
method: "
|
|
39672
|
-
path: "/v1/
|
|
39829
|
+
method: "GET",
|
|
39830
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39673
39831
|
args,
|
|
39674
39832
|
queryParamKeys: []
|
|
39675
39833
|
});
|
|
39676
39834
|
});
|
|
39677
|
-
resource.command("
|
|
39835
|
+
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", `
|
|
39678
39836
|
Examples:
|
|
39679
|
-
hyperline
|
|
39680
|
-
hyperline
|
|
39681
|
-
hyperline
|
|
39837
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows>
|
|
39838
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --fallback-per-usd <fallback_per_usd>
|
|
39839
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --output json`).action(async (opts) => {
|
|
39682
39840
|
const ctx = resource.parent?.opts()._ctx;
|
|
39683
39841
|
if (!ctx) {
|
|
39684
39842
|
process.stderr.write("Error: Not authenticated\n");
|
|
39685
39843
|
process.exit(1);
|
|
39686
39844
|
}
|
|
39687
39845
|
const args = {};
|
|
39688
|
-
if (opts.
|
|
39689
|
-
args.
|
|
39690
|
-
if (opts.
|
|
39691
|
-
args.
|
|
39692
|
-
if (opts.
|
|
39693
|
-
args.
|
|
39694
|
-
if (opts.
|
|
39695
|
-
args.
|
|
39696
|
-
if (opts.cachedInputPerMTokens !== void 0)
|
|
39697
|
-
args.cached_input_per_m_tokens = opts.cachedInputPerMTokens;
|
|
39698
|
-
if (opts.cacheWritePerMTokens !== void 0)
|
|
39699
|
-
args.cache_write_per_m_tokens = opts.cacheWritePerMTokens;
|
|
39700
|
-
if (opts.dimensions !== void 0)
|
|
39701
|
-
args.dimensions = JSON.parse(opts.dimensions);
|
|
39846
|
+
if (opts.id !== void 0)
|
|
39847
|
+
args.id = opts.id;
|
|
39848
|
+
if (opts.name !== void 0)
|
|
39849
|
+
args.name = opts.name;
|
|
39850
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39851
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39852
|
+
if (opts.rows !== void 0)
|
|
39853
|
+
args.rows = JSON.parse(opts.rows);
|
|
39702
39854
|
await ctx.execute({
|
|
39703
39855
|
method: "PUT",
|
|
39704
|
-
path: "/v1/
|
|
39856
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39705
39857
|
args,
|
|
39706
39858
|
queryParamKeys: []
|
|
39707
39859
|
});
|
|
39708
39860
|
});
|
|
39709
|
-
resource.command("delete-agent-
|
|
39861
|
+
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", `
|
|
39710
39862
|
Examples:
|
|
39711
|
-
hyperline
|
|
39712
|
-
hyperline
|
|
39863
|
+
hyperline ai-billing delete-agent-rate-card --id <id>
|
|
39864
|
+
hyperline ai-billing delete-agent-rate-card --id <id> --output json`).action(async (opts) => {
|
|
39713
39865
|
const ctx = resource.parent?.opts()._ctx;
|
|
39714
39866
|
if (!ctx) {
|
|
39715
39867
|
process.stderr.write("Error: Not authenticated\n");
|
|
39716
39868
|
process.exit(1);
|
|
39717
39869
|
}
|
|
39718
39870
|
const args = {};
|
|
39719
|
-
if (opts.
|
|
39720
|
-
args.
|
|
39871
|
+
if (opts.id !== void 0)
|
|
39872
|
+
args.id = opts.id;
|
|
39721
39873
|
if (!opts.yes) {
|
|
39722
39874
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39723
39875
|
if (!confirmed) {
|
|
@@ -39727,51 +39879,53 @@ Examples:
|
|
|
39727
39879
|
}
|
|
39728
39880
|
await ctx.execute({
|
|
39729
39881
|
method: "DELETE",
|
|
39730
|
-
path: "/v1/
|
|
39882
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39731
39883
|
args,
|
|
39732
39884
|
queryParamKeys: []
|
|
39733
39885
|
});
|
|
39734
39886
|
});
|
|
39735
|
-
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("--
|
|
39887
|
+
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", `
|
|
39736
39888
|
Examples:
|
|
39737
|
-
hyperline
|
|
39889
|
+
hyperline ai-billing list-agent-customer-policies --id <id>
|
|
39890
|
+
hyperline ai-billing list-agent-customer-policies --id <id> --take <take>`).action(async (opts) => {
|
|
39738
39891
|
const ctx = resource.parent?.opts()._ctx;
|
|
39739
39892
|
if (!ctx) {
|
|
39740
39893
|
process.stderr.write("Error: Not authenticated\n");
|
|
39741
39894
|
process.exit(1);
|
|
39742
39895
|
}
|
|
39743
39896
|
const args = {};
|
|
39744
|
-
if (opts.
|
|
39745
|
-
args.
|
|
39897
|
+
if (opts.id !== void 0)
|
|
39898
|
+
args.id = opts.id;
|
|
39899
|
+
if (opts.take !== void 0)
|
|
39900
|
+
args.take = Number(opts.take);
|
|
39901
|
+
if (opts.skip !== void 0)
|
|
39902
|
+
args.skip = Number(opts.skip);
|
|
39746
39903
|
await ctx.execute({
|
|
39747
39904
|
method: "GET",
|
|
39748
|
-
path: "/v1/
|
|
39905
|
+
path: "/v1/ai/billing/customers/{id}/policies",
|
|
39749
39906
|
args,
|
|
39750
|
-
queryParamKeys: []
|
|
39907
|
+
queryParamKeys: ["take", "skip"]
|
|
39751
39908
|
});
|
|
39752
39909
|
});
|
|
39753
|
-
resource.command("get-
|
|
39910
|
+
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", `
|
|
39754
39911
|
Examples:
|
|
39755
|
-
hyperline
|
|
39756
|
-
hyperline agents get-agent-customer-policy --customer-id <customer_id> --agent <agent>`).action(async (opts) => {
|
|
39912
|
+
hyperline ai-billing get-default-customer-billing-policy --id <id>`).action(async (opts) => {
|
|
39757
39913
|
const ctx = resource.parent?.opts()._ctx;
|
|
39758
39914
|
if (!ctx) {
|
|
39759
39915
|
process.stderr.write("Error: Not authenticated\n");
|
|
39760
39916
|
process.exit(1);
|
|
39761
39917
|
}
|
|
39762
39918
|
const args = {};
|
|
39763
|
-
if (opts.
|
|
39764
|
-
args.
|
|
39765
|
-
if (opts.agent !== void 0)
|
|
39766
|
-
args.agent = opts.agent;
|
|
39919
|
+
if (opts.id !== void 0)
|
|
39920
|
+
args.id = opts.id;
|
|
39767
39921
|
await ctx.execute({
|
|
39768
39922
|
method: "GET",
|
|
39769
|
-
path: "/v1/
|
|
39923
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39770
39924
|
args,
|
|
39771
|
-
queryParamKeys: [
|
|
39925
|
+
queryParamKeys: []
|
|
39772
39926
|
});
|
|
39773
39927
|
});
|
|
39774
|
-
resource.command("upsert-
|
|
39928
|
+
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.
|
|
39775
39929
|
|
|
39776
39930
|
- wallet: Charges a monetary wallet.
|
|
39777
39931
|
- credits: Consumes a credit balance.
|
|
@@ -39780,21 +39934,19 @@ Examples:
|
|
|
39780
39934
|
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39781
39935
|
- 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.
|
|
39782
39936
|
|
|
39783
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).option("--
|
|
39937
|
+
- 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", `
|
|
39784
39938
|
Examples:
|
|
39785
|
-
hyperline
|
|
39786
|
-
hyperline
|
|
39787
|
-
hyperline
|
|
39939
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked
|
|
39940
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --wallet-id <wallet_id> --credit-product-id <credit_product_id>
|
|
39941
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39788
39942
|
const ctx = resource.parent?.opts()._ctx;
|
|
39789
39943
|
if (!ctx) {
|
|
39790
39944
|
process.stderr.write("Error: Not authenticated\n");
|
|
39791
39945
|
process.exit(1);
|
|
39792
39946
|
}
|
|
39793
39947
|
const args = {};
|
|
39794
|
-
if (opts.
|
|
39795
|
-
args.
|
|
39796
|
-
if (opts.agent !== void 0)
|
|
39797
|
-
args.agent = opts.agent;
|
|
39948
|
+
if (opts.id !== void 0)
|
|
39949
|
+
args.id = opts.id;
|
|
39798
39950
|
if (opts.mode !== void 0)
|
|
39799
39951
|
args.mode = opts.mode;
|
|
39800
39952
|
if (opts.walletId !== void 0)
|
|
@@ -39823,32 +39975,27 @@ Examples:
|
|
|
39823
39975
|
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39824
39976
|
if (opts.blocked !== void 0)
|
|
39825
39977
|
args.blocked = true;
|
|
39826
|
-
if (opts.
|
|
39827
|
-
args.
|
|
39828
|
-
if (opts.windowRates !== void 0)
|
|
39829
|
-
args.window_rates = JSON.parse(opts.windowRates);
|
|
39978
|
+
if (opts.windows !== void 0)
|
|
39979
|
+
args.windows = JSON.parse(opts.windows);
|
|
39830
39980
|
await ctx.execute({
|
|
39831
39981
|
method: "PUT",
|
|
39832
|
-
path: "/v1/
|
|
39982
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39833
39983
|
args,
|
|
39834
|
-
queryParamKeys: [
|
|
39984
|
+
queryParamKeys: []
|
|
39835
39985
|
});
|
|
39836
39986
|
});
|
|
39837
|
-
resource.command("delete-
|
|
39987
|
+
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", `
|
|
39838
39988
|
Examples:
|
|
39839
|
-
hyperline
|
|
39840
|
-
hyperline
|
|
39841
|
-
hyperline agents delete-agent-customer-policy --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
39989
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id>
|
|
39990
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id> --output json`).action(async (opts) => {
|
|
39842
39991
|
const ctx = resource.parent?.opts()._ctx;
|
|
39843
39992
|
if (!ctx) {
|
|
39844
39993
|
process.stderr.write("Error: Not authenticated\n");
|
|
39845
39994
|
process.exit(1);
|
|
39846
39995
|
}
|
|
39847
39996
|
const args = {};
|
|
39848
|
-
if (opts.
|
|
39849
|
-
args.
|
|
39850
|
-
if (opts.agent !== void 0)
|
|
39851
|
-
args.agent = opts.agent;
|
|
39997
|
+
if (opts.id !== void 0)
|
|
39998
|
+
args.id = opts.id;
|
|
39852
39999
|
if (!opts.yes) {
|
|
39853
40000
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39854
40001
|
if (!confirmed) {
|
|
@@ -39858,199 +40005,216 @@ Examples:
|
|
|
39858
40005
|
}
|
|
39859
40006
|
await ctx.execute({
|
|
39860
40007
|
method: "DELETE",
|
|
39861
|
-
path: "/v1/
|
|
40008
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39862
40009
|
args,
|
|
39863
|
-
queryParamKeys: [
|
|
40010
|
+
queryParamKeys: []
|
|
39864
40011
|
});
|
|
39865
40012
|
});
|
|
39866
|
-
resource.command("
|
|
40013
|
+
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", `
|
|
39867
40014
|
Examples:
|
|
39868
|
-
hyperline
|
|
39869
|
-
hyperline agents apply-agent-default-plan --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
40015
|
+
hyperline ai-billing get-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
39870
40016
|
const ctx = resource.parent?.opts()._ctx;
|
|
39871
40017
|
if (!ctx) {
|
|
39872
40018
|
process.stderr.write("Error: Not authenticated\n");
|
|
39873
40019
|
process.exit(1);
|
|
39874
40020
|
}
|
|
39875
40021
|
const args = {};
|
|
39876
|
-
if (opts.
|
|
39877
|
-
args.
|
|
40022
|
+
if (opts.id !== void 0)
|
|
40023
|
+
args.id = opts.id;
|
|
40024
|
+
if (opts.agentSlug !== void 0)
|
|
40025
|
+
args.agent_slug = opts.agentSlug;
|
|
39878
40026
|
await ctx.execute({
|
|
39879
|
-
method: "
|
|
39880
|
-
path: "/v1/
|
|
40027
|
+
method: "GET",
|
|
40028
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39881
40029
|
args,
|
|
39882
40030
|
queryParamKeys: []
|
|
39883
40031
|
});
|
|
39884
40032
|
});
|
|
39885
|
-
resource.command("
|
|
40033
|
+
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.
|
|
40034
|
+
|
|
40035
|
+
- wallet: Charges a monetary wallet.
|
|
40036
|
+
- credits: Consumes a credit balance.
|
|
40037
|
+
- 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.
|
|
40038
|
+
|
|
40039
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
40040
|
+
- 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.
|
|
40041
|
+
|
|
40042
|
+
- 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", `
|
|
39886
40043
|
Examples:
|
|
39887
|
-
hyperline
|
|
39888
|
-
hyperline
|
|
40044
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked
|
|
40045
|
+
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>
|
|
40046
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39889
40047
|
const ctx = resource.parent?.opts()._ctx;
|
|
39890
40048
|
if (!ctx) {
|
|
39891
40049
|
process.stderr.write("Error: Not authenticated\n");
|
|
39892
40050
|
process.exit(1);
|
|
39893
40051
|
}
|
|
39894
40052
|
const args = {};
|
|
39895
|
-
if (opts.
|
|
39896
|
-
args.
|
|
39897
|
-
if (opts.
|
|
39898
|
-
args.
|
|
40053
|
+
if (opts.id !== void 0)
|
|
40054
|
+
args.id = opts.id;
|
|
40055
|
+
if (opts.agentSlug !== void 0)
|
|
40056
|
+
args.agent_slug = opts.agentSlug;
|
|
40057
|
+
if (opts.mode !== void 0)
|
|
40058
|
+
args.mode = opts.mode;
|
|
40059
|
+
if (opts.walletId !== void 0)
|
|
40060
|
+
args.wallet_id = opts.walletId;
|
|
40061
|
+
if (opts.creditProductId !== void 0)
|
|
40062
|
+
args.credit_product_id = opts.creditProductId;
|
|
40063
|
+
if (opts.markupPercent !== void 0)
|
|
40064
|
+
args.markup_percent = opts.markupPercent;
|
|
40065
|
+
if (opts.overageMode !== void 0)
|
|
40066
|
+
args.overage_mode = opts.overageMode;
|
|
40067
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
40068
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
40069
|
+
if (opts.overageRateCardId !== void 0)
|
|
40070
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
40071
|
+
if (opts.overageWalletId !== void 0)
|
|
40072
|
+
args.overage_wallet_id = opts.overageWalletId;
|
|
40073
|
+
if (opts.floor !== void 0)
|
|
40074
|
+
args.floor = opts.floor;
|
|
40075
|
+
if (opts.settlementSchedule !== void 0)
|
|
40076
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
40077
|
+
if (opts.rateCardId !== void 0)
|
|
40078
|
+
args.rate_card_id = opts.rateCardId;
|
|
40079
|
+
if (opts.planId !== void 0)
|
|
40080
|
+
args.plan_id = opts.planId;
|
|
40081
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
40082
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
40083
|
+
if (opts.blocked !== void 0)
|
|
40084
|
+
args.blocked = true;
|
|
40085
|
+
if (opts.windows !== void 0)
|
|
40086
|
+
args.windows = JSON.parse(opts.windows);
|
|
39899
40087
|
await ctx.execute({
|
|
39900
|
-
method: "
|
|
39901
|
-
path: "/v1/
|
|
40088
|
+
method: "PUT",
|
|
40089
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39902
40090
|
args,
|
|
39903
|
-
queryParamKeys: [
|
|
40091
|
+
queryParamKeys: []
|
|
39904
40092
|
});
|
|
39905
40093
|
});
|
|
39906
|
-
resource.command("
|
|
40094
|
+
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", `
|
|
39907
40095
|
Examples:
|
|
39908
|
-
hyperline
|
|
39909
|
-
hyperline
|
|
39910
|
-
hyperline agents reset-agent-customer-windows --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
40096
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>
|
|
40097
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --output json`).action(async (opts) => {
|
|
39911
40098
|
const ctx = resource.parent?.opts()._ctx;
|
|
39912
40099
|
if (!ctx) {
|
|
39913
40100
|
process.stderr.write("Error: Not authenticated\n");
|
|
39914
40101
|
process.exit(1);
|
|
39915
40102
|
}
|
|
39916
40103
|
const args = {};
|
|
39917
|
-
if (opts.
|
|
39918
|
-
args.
|
|
39919
|
-
if (opts.
|
|
39920
|
-
args.
|
|
40104
|
+
if (opts.id !== void 0)
|
|
40105
|
+
args.id = opts.id;
|
|
40106
|
+
if (opts.agentSlug !== void 0)
|
|
40107
|
+
args.agent_slug = opts.agentSlug;
|
|
40108
|
+
if (!opts.yes) {
|
|
40109
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40110
|
+
if (!confirmed) {
|
|
40111
|
+
process.stdout.write("Aborted.\n");
|
|
40112
|
+
return;
|
|
40113
|
+
}
|
|
40114
|
+
}
|
|
39921
40115
|
await ctx.execute({
|
|
39922
|
-
method: "
|
|
39923
|
-
path: "/v1/
|
|
40116
|
+
method: "DELETE",
|
|
40117
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39924
40118
|
args,
|
|
39925
|
-
queryParamKeys: [
|
|
40119
|
+
queryParamKeys: []
|
|
39926
40120
|
});
|
|
39927
40121
|
});
|
|
39928
|
-
resource.command("
|
|
40122
|
+
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", `
|
|
39929
40123
|
Examples:
|
|
39930
|
-
hyperline
|
|
39931
|
-
hyperline
|
|
40124
|
+
hyperline ai-billing apply-agent-default-plan --id <id>
|
|
40125
|
+
hyperline ai-billing apply-agent-default-plan --id <id> --output json`).action(async (opts) => {
|
|
39932
40126
|
const ctx = resource.parent?.opts()._ctx;
|
|
39933
40127
|
if (!ctx) {
|
|
39934
40128
|
process.stderr.write("Error: Not authenticated\n");
|
|
39935
40129
|
process.exit(1);
|
|
39936
40130
|
}
|
|
39937
40131
|
const args = {};
|
|
39938
|
-
if (opts.
|
|
39939
|
-
args.
|
|
39940
|
-
if (opts.agent !== void 0)
|
|
39941
|
-
args.agent = opts.agent;
|
|
39942
|
-
if (opts.overage !== void 0)
|
|
39943
|
-
args.overage = opts.overage;
|
|
39944
|
-
if (opts.from !== void 0)
|
|
39945
|
-
args.from = opts.from;
|
|
39946
|
-
if (opts.to !== void 0)
|
|
39947
|
-
args.to = opts.to;
|
|
39948
|
-
if (opts.take !== void 0)
|
|
39949
|
-
args.take = Number(opts.take);
|
|
39950
|
-
if (opts.skip !== void 0)
|
|
39951
|
-
args.skip = Number(opts.skip);
|
|
40132
|
+
if (opts.id !== void 0)
|
|
40133
|
+
args.id = opts.id;
|
|
39952
40134
|
await ctx.execute({
|
|
39953
|
-
method: "
|
|
39954
|
-
path: "/v1/
|
|
40135
|
+
method: "POST",
|
|
40136
|
+
path: "/v1/ai/billing/customers/{id}/apply-default-plan",
|
|
39955
40137
|
args,
|
|
39956
|
-
queryParamKeys: [
|
|
40138
|
+
queryParamKeys: []
|
|
39957
40139
|
});
|
|
39958
40140
|
});
|
|
39959
|
-
resource.command("get-agent-customer-
|
|
40141
|
+
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", `
|
|
39960
40142
|
Examples:
|
|
39961
|
-
hyperline
|
|
40143
|
+
hyperline ai-billing get-agent-customer-balance --id <id>
|
|
40144
|
+
hyperline ai-billing get-agent-customer-balance --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
39962
40145
|
const ctx = resource.parent?.opts()._ctx;
|
|
39963
40146
|
if (!ctx) {
|
|
39964
40147
|
process.stderr.write("Error: Not authenticated\n");
|
|
39965
40148
|
process.exit(1);
|
|
39966
40149
|
}
|
|
39967
40150
|
const args = {};
|
|
39968
|
-
if (opts.
|
|
39969
|
-
args.
|
|
40151
|
+
if (opts.id !== void 0)
|
|
40152
|
+
args.id = opts.id;
|
|
40153
|
+
if (opts.agentSlug !== void 0)
|
|
40154
|
+
args.agent_slug = opts.agentSlug;
|
|
39970
40155
|
await ctx.execute({
|
|
39971
40156
|
method: "GET",
|
|
39972
|
-
path: "/v1/
|
|
40157
|
+
path: "/v1/ai/billing/customers/{id}/balance",
|
|
39973
40158
|
args,
|
|
39974
|
-
queryParamKeys: []
|
|
40159
|
+
queryParamKeys: ["agent_slug"]
|
|
39975
40160
|
});
|
|
39976
40161
|
});
|
|
39977
|
-
|
|
39978
|
-
|
|
39979
|
-
// build/commands/generated/aggregators.js
|
|
39980
|
-
function registerAggregatorsCommands(parent) {
|
|
39981
|
-
const resource = parent.command("aggregators").description("Manage aggregators");
|
|
39982
|
-
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", `
|
|
40162
|
+
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", `
|
|
39983
40163
|
Examples:
|
|
39984
|
-
hyperline
|
|
39985
|
-
hyperline
|
|
40164
|
+
hyperline ai-billing reset-agent-customer-windows --id <id>
|
|
40165
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --agent-slug <agent_slug>
|
|
40166
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --output json`).action(async (opts) => {
|
|
39986
40167
|
const ctx = resource.parent?.opts()._ctx;
|
|
39987
40168
|
if (!ctx) {
|
|
39988
40169
|
process.stderr.write("Error: Not authenticated\n");
|
|
39989
40170
|
process.exit(1);
|
|
39990
40171
|
}
|
|
39991
40172
|
const args = {};
|
|
39992
|
-
if (opts.
|
|
39993
|
-
args.
|
|
39994
|
-
if (opts.
|
|
39995
|
-
args.
|
|
40173
|
+
if (opts.id !== void 0)
|
|
40174
|
+
args.id = opts.id;
|
|
40175
|
+
if (opts.agentSlug !== void 0)
|
|
40176
|
+
args.agent_slug = opts.agentSlug;
|
|
39996
40177
|
await ctx.execute({
|
|
39997
|
-
method: "
|
|
39998
|
-
path: "/v1/
|
|
40178
|
+
method: "POST",
|
|
40179
|
+
path: "/v1/ai/billing/customers/{id}/windows/reset",
|
|
39999
40180
|
args,
|
|
40000
|
-
queryParamKeys: ["
|
|
40181
|
+
queryParamKeys: ["agent_slug"]
|
|
40001
40182
|
});
|
|
40002
40183
|
});
|
|
40003
|
-
resource.command("
|
|
40184
|
+
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", `
|
|
40004
40185
|
Examples:
|
|
40005
|
-
hyperline
|
|
40006
|
-
hyperline
|
|
40007
|
-
hyperline aggregators create --entity <entity> --operation <operation> --output json`).action(async (opts) => {
|
|
40186
|
+
hyperline ai-billing list-agent-customer-consumption --id <id>
|
|
40187
|
+
hyperline ai-billing list-agent-customer-consumption --id <id> --agent-slug <agent_slug> --overage <overage>`).action(async (opts) => {
|
|
40008
40188
|
const ctx = resource.parent?.opts()._ctx;
|
|
40009
40189
|
if (!ctx) {
|
|
40010
40190
|
process.stderr.write("Error: Not authenticated\n");
|
|
40011
40191
|
process.exit(1);
|
|
40012
40192
|
}
|
|
40013
40193
|
const args = {};
|
|
40014
|
-
if (opts.
|
|
40015
|
-
args.
|
|
40016
|
-
if (opts.
|
|
40017
|
-
args.
|
|
40018
|
-
if (opts.
|
|
40019
|
-
args.
|
|
40020
|
-
if (opts.
|
|
40021
|
-
args.
|
|
40022
|
-
if (opts.
|
|
40023
|
-
args.
|
|
40024
|
-
if (opts.
|
|
40025
|
-
args.
|
|
40026
|
-
if (opts.
|
|
40027
|
-
args.
|
|
40028
|
-
if (opts.operation !== void 0)
|
|
40029
|
-
args.operation = opts.operation;
|
|
40030
|
-
if (opts.property !== void 0)
|
|
40031
|
-
args.property = opts.property;
|
|
40032
|
-
if (opts.defaultIntervalCount !== void 0)
|
|
40033
|
-
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
40034
|
-
if (opts.allowNegativeValues !== void 0)
|
|
40035
|
-
args.allow_negative_values = true;
|
|
40036
|
-
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
40037
|
-
args.aggregate_on_customers_enabled = true;
|
|
40038
|
-
if (opts.where !== void 0)
|
|
40039
|
-
args.where = JSON.parse(opts.where);
|
|
40040
|
-
if (opts.exposedEventKeys !== void 0)
|
|
40041
|
-
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
40042
|
-
if (opts.thresholds !== void 0)
|
|
40043
|
-
args.thresholds = JSON.parse(opts.thresholds);
|
|
40194
|
+
if (opts.id !== void 0)
|
|
40195
|
+
args.id = opts.id;
|
|
40196
|
+
if (opts.agentSlug !== void 0)
|
|
40197
|
+
args.agent_slug = opts.agentSlug;
|
|
40198
|
+
if (opts.overage !== void 0)
|
|
40199
|
+
args.overage = opts.overage;
|
|
40200
|
+
if (opts.from !== void 0)
|
|
40201
|
+
args.from = opts.from;
|
|
40202
|
+
if (opts.to !== void 0)
|
|
40203
|
+
args.to = opts.to;
|
|
40204
|
+
if (opts.take !== void 0)
|
|
40205
|
+
args.take = Number(opts.take);
|
|
40206
|
+
if (opts.skip !== void 0)
|
|
40207
|
+
args.skip = Number(opts.skip);
|
|
40044
40208
|
await ctx.execute({
|
|
40045
|
-
method: "
|
|
40046
|
-
path: "/v1/
|
|
40209
|
+
method: "GET",
|
|
40210
|
+
path: "/v1/ai/billing/customers/{id}/consumption",
|
|
40047
40211
|
args,
|
|
40048
|
-
queryParamKeys: []
|
|
40212
|
+
queryParamKeys: ["agent_slug", "overage", "from", "to", "take", "skip"]
|
|
40049
40213
|
});
|
|
40050
40214
|
});
|
|
40051
|
-
resource.command("get").description(`
|
|
40215
|
+
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", `
|
|
40052
40216
|
Examples:
|
|
40053
|
-
hyperline
|
|
40217
|
+
hyperline ai-billing get-product-ai-rate-card --id <id>`).action(async (opts) => {
|
|
40054
40218
|
const ctx = resource.parent?.opts()._ctx;
|
|
40055
40219
|
if (!ctx) {
|
|
40056
40220
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40061,16 +40225,15 @@ Examples:
|
|
|
40061
40225
|
args.id = opts.id;
|
|
40062
40226
|
await ctx.execute({
|
|
40063
40227
|
method: "GET",
|
|
40064
|
-
path: "/v1/
|
|
40228
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40065
40229
|
args,
|
|
40066
40230
|
queryParamKeys: []
|
|
40067
40231
|
});
|
|
40068
40232
|
});
|
|
40069
|
-
resource.command("
|
|
40233
|
+
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", `
|
|
40070
40234
|
Examples:
|
|
40071
|
-
hyperline
|
|
40072
|
-
hyperline
|
|
40073
|
-
hyperline aggregators update --id <id> --output json`).action(async (opts) => {
|
|
40235
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id>
|
|
40236
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id> --output json`).action(async (opts) => {
|
|
40074
40237
|
const ctx = resource.parent?.opts()._ctx;
|
|
40075
40238
|
if (!ctx) {
|
|
40076
40239
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40079,47 +40242,19 @@ Examples:
|
|
|
40079
40242
|
const args = {};
|
|
40080
40243
|
if (opts.id !== void 0)
|
|
40081
40244
|
args.id = opts.id;
|
|
40082
|
-
if (opts.
|
|
40083
|
-
args.
|
|
40084
|
-
if (opts.type !== void 0)
|
|
40085
|
-
args.type = opts.type;
|
|
40086
|
-
if (opts.name !== void 0)
|
|
40087
|
-
args.name = opts.name;
|
|
40088
|
-
if (opts.description !== void 0)
|
|
40089
|
-
args.description = opts.description;
|
|
40090
|
-
if (opts.customEventName !== void 0)
|
|
40091
|
-
args.custom_event_name = opts.customEventName;
|
|
40092
|
-
if (opts.unitName !== void 0)
|
|
40093
|
-
args.unit_name = opts.unitName;
|
|
40094
|
-
if (opts.defaultIntervalPeriod !== void 0)
|
|
40095
|
-
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
40096
|
-
if (opts.operation !== void 0)
|
|
40097
|
-
args.operation = opts.operation;
|
|
40098
|
-
if (opts.property !== void 0)
|
|
40099
|
-
args.property = opts.property;
|
|
40100
|
-
if (opts.defaultIntervalCount !== void 0)
|
|
40101
|
-
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
40102
|
-
if (opts.allowNegativeValues !== void 0)
|
|
40103
|
-
args.allow_negative_values = true;
|
|
40104
|
-
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
40105
|
-
args.aggregate_on_customers_enabled = true;
|
|
40106
|
-
if (opts.where !== void 0)
|
|
40107
|
-
args.where = JSON.parse(opts.where);
|
|
40108
|
-
if (opts.exposedEventKeys !== void 0)
|
|
40109
|
-
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
40110
|
-
if (opts.thresholds !== void 0)
|
|
40111
|
-
args.thresholds = JSON.parse(opts.thresholds);
|
|
40245
|
+
if (opts.rateCardId !== void 0)
|
|
40246
|
+
args.rate_card_id = opts.rateCardId;
|
|
40112
40247
|
await ctx.execute({
|
|
40113
40248
|
method: "PUT",
|
|
40114
|
-
path: "/v1/
|
|
40249
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40115
40250
|
args,
|
|
40116
40251
|
queryParamKeys: []
|
|
40117
40252
|
});
|
|
40118
40253
|
});
|
|
40119
|
-
resource.command("
|
|
40254
|
+
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", `
|
|
40120
40255
|
Examples:
|
|
40121
|
-
hyperline
|
|
40122
|
-
hyperline
|
|
40256
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id>
|
|
40257
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id> --output json`).action(async (opts) => {
|
|
40123
40258
|
const ctx = resource.parent?.opts()._ctx;
|
|
40124
40259
|
if (!ctx) {
|
|
40125
40260
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40137,38 +40272,66 @@ Examples:
|
|
|
40137
40272
|
}
|
|
40138
40273
|
await ctx.execute({
|
|
40139
40274
|
method: "DELETE",
|
|
40140
|
-
path: "/v1/
|
|
40275
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40141
40276
|
args,
|
|
40142
40277
|
queryParamKeys: []
|
|
40143
40278
|
});
|
|
40144
40279
|
});
|
|
40145
40280
|
}
|
|
40146
40281
|
|
|
40147
|
-
// build/commands/generated/
|
|
40148
|
-
function
|
|
40149
|
-
const resource = parent.command("
|
|
40150
|
-
resource.command("
|
|
40282
|
+
// build/commands/generated/ai-costs.js
|
|
40283
|
+
function registerAi_CostsCommands(parent) {
|
|
40284
|
+
const resource = parent.command("ai-costs").description("Manage ai > costs");
|
|
40285
|
+
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", `
|
|
40151
40286
|
Examples:
|
|
40152
|
-
hyperline
|
|
40287
|
+
hyperline ai-costs list-agent-cost-catalog
|
|
40288
|
+
hyperline ai-costs list-agent-cost-catalog --take <take> --enabled-only <enabled_only>`).action(async (opts) => {
|
|
40153
40289
|
const ctx = resource.parent?.opts()._ctx;
|
|
40154
40290
|
if (!ctx) {
|
|
40155
40291
|
process.stderr.write("Error: Not authenticated\n");
|
|
40156
40292
|
process.exit(1);
|
|
40157
40293
|
}
|
|
40158
40294
|
const args = {};
|
|
40159
|
-
if (opts.
|
|
40160
|
-
args.
|
|
40295
|
+
if (opts.enabledOnly !== void 0)
|
|
40296
|
+
args.enabled_only = opts.enabledOnly;
|
|
40297
|
+
if (opts.take !== void 0)
|
|
40298
|
+
args.take = Number(opts.take);
|
|
40299
|
+
if (opts.skip !== void 0)
|
|
40300
|
+
args.skip = Number(opts.skip);
|
|
40161
40301
|
await ctx.execute({
|
|
40162
40302
|
method: "GET",
|
|
40163
|
-
path: "/v1/
|
|
40303
|
+
path: "/v1/ai/billing/costs",
|
|
40304
|
+
args,
|
|
40305
|
+
queryParamKeys: ["take", "skip", "enabled_only"]
|
|
40306
|
+
});
|
|
40307
|
+
});
|
|
40308
|
+
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", `
|
|
40309
|
+
Examples:
|
|
40310
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions>
|
|
40311
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40312
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40313
|
+
if (!ctx) {
|
|
40314
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40315
|
+
process.exit(1);
|
|
40316
|
+
}
|
|
40317
|
+
const args = {};
|
|
40318
|
+
if (opts.provider !== void 0)
|
|
40319
|
+
args.provider = opts.provider;
|
|
40320
|
+
if (opts.item !== void 0)
|
|
40321
|
+
args.item = opts.item;
|
|
40322
|
+
if (opts.dimensions !== void 0)
|
|
40323
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40324
|
+
await ctx.execute({
|
|
40325
|
+
method: "POST",
|
|
40326
|
+
path: "/v1/ai/billing/costs/items",
|
|
40164
40327
|
args,
|
|
40165
40328
|
queryParamKeys: []
|
|
40166
40329
|
});
|
|
40167
40330
|
});
|
|
40168
|
-
resource.command("
|
|
40331
|
+
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", `
|
|
40169
40332
|
Examples:
|
|
40170
|
-
hyperline
|
|
40171
|
-
hyperline
|
|
40333
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id>
|
|
40334
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id> --output json`).action(async (opts) => {
|
|
40172
40335
|
const ctx = resource.parent?.opts()._ctx;
|
|
40173
40336
|
if (!ctx) {
|
|
40174
40337
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40177,30 +40340,56 @@ Examples:
|
|
|
40177
40340
|
const args = {};
|
|
40178
40341
|
if (opts.id !== void 0)
|
|
40179
40342
|
args.id = opts.id;
|
|
40180
|
-
if (opts.
|
|
40181
|
-
|
|
40182
|
-
|
|
40183
|
-
|
|
40184
|
-
|
|
40185
|
-
|
|
40186
|
-
|
|
40187
|
-
args.group_by = opts.groupBy;
|
|
40343
|
+
if (!opts.yes) {
|
|
40344
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40345
|
+
if (!confirmed) {
|
|
40346
|
+
process.stdout.write("Aborted.\n");
|
|
40347
|
+
return;
|
|
40348
|
+
}
|
|
40349
|
+
}
|
|
40188
40350
|
await ctx.execute({
|
|
40189
|
-
method: "
|
|
40190
|
-
path: "/v1/
|
|
40351
|
+
method: "DELETE",
|
|
40352
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40191
40353
|
args,
|
|
40192
|
-
queryParamKeys: [
|
|
40193
|
-
"start_date",
|
|
40194
|
-
"end_date",
|
|
40195
|
-
"aggregator_filter_id",
|
|
40196
|
-
"group_by"
|
|
40197
|
-
]
|
|
40354
|
+
queryParamKeys: []
|
|
40198
40355
|
});
|
|
40199
40356
|
});
|
|
40200
|
-
resource.command("
|
|
40357
|
+
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", `
|
|
40201
40358
|
Examples:
|
|
40202
|
-
hyperline
|
|
40203
|
-
hyperline
|
|
40359
|
+
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>
|
|
40360
|
+
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>
|
|
40361
|
+
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) => {
|
|
40362
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40363
|
+
if (!ctx) {
|
|
40364
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40365
|
+
process.exit(1);
|
|
40366
|
+
}
|
|
40367
|
+
const args = {};
|
|
40368
|
+
if (opts.provider !== void 0)
|
|
40369
|
+
args.provider = opts.provider;
|
|
40370
|
+
if (opts.model !== void 0)
|
|
40371
|
+
args.model = opts.model;
|
|
40372
|
+
if (opts.inputPerMTokens !== void 0)
|
|
40373
|
+
args.input_per_m_tokens = opts.inputPerMTokens;
|
|
40374
|
+
if (opts.outputPerMTokens !== void 0)
|
|
40375
|
+
args.output_per_m_tokens = opts.outputPerMTokens;
|
|
40376
|
+
if (opts.cachedInputPerMTokens !== void 0)
|
|
40377
|
+
args.cached_input_per_m_tokens = opts.cachedInputPerMTokens;
|
|
40378
|
+
if (opts.cacheWritePerMTokens !== void 0)
|
|
40379
|
+
args.cache_write_per_m_tokens = opts.cacheWritePerMTokens;
|
|
40380
|
+
if (opts.dimensions !== void 0)
|
|
40381
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40382
|
+
await ctx.execute({
|
|
40383
|
+
method: "PUT",
|
|
40384
|
+
path: "/v1/ai/billing/costs/overrides",
|
|
40385
|
+
args,
|
|
40386
|
+
queryParamKeys: []
|
|
40387
|
+
});
|
|
40388
|
+
});
|
|
40389
|
+
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", `
|
|
40390
|
+
Examples:
|
|
40391
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id>
|
|
40392
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id> --output json`).action(async (opts) => {
|
|
40204
40393
|
const ctx = resource.parent?.opts()._ctx;
|
|
40205
40394
|
if (!ctx) {
|
|
40206
40395
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40209,33 +40398,24 @@ Examples:
|
|
|
40209
40398
|
const args = {};
|
|
40210
40399
|
if (opts.id !== void 0)
|
|
40211
40400
|
args.id = opts.id;
|
|
40212
|
-
if (opts.
|
|
40213
|
-
|
|
40214
|
-
|
|
40215
|
-
|
|
40216
|
-
|
|
40217
|
-
|
|
40218
|
-
|
|
40219
|
-
args.take = Number(opts.take);
|
|
40220
|
-
if (opts.skip !== void 0)
|
|
40221
|
-
args.skip = Number(opts.skip);
|
|
40401
|
+
if (!opts.yes) {
|
|
40402
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40403
|
+
if (!confirmed) {
|
|
40404
|
+
process.stdout.write("Aborted.\n");
|
|
40405
|
+
return;
|
|
40406
|
+
}
|
|
40407
|
+
}
|
|
40222
40408
|
await ctx.execute({
|
|
40223
|
-
method: "
|
|
40224
|
-
path: "/v1/
|
|
40409
|
+
method: "DELETE",
|
|
40410
|
+
path: "/v1/ai/billing/costs/overrides/{id}",
|
|
40225
40411
|
args,
|
|
40226
|
-
queryParamKeys: [
|
|
40227
|
-
"start_date",
|
|
40228
|
-
"end_date",
|
|
40229
|
-
"aggregator_filter_id",
|
|
40230
|
-
"take",
|
|
40231
|
-
"skip"
|
|
40232
|
-
]
|
|
40412
|
+
queryParamKeys: []
|
|
40233
40413
|
});
|
|
40234
40414
|
});
|
|
40235
|
-
resource.command("
|
|
40415
|
+
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", `
|
|
40236
40416
|
Examples:
|
|
40237
|
-
hyperline
|
|
40238
|
-
hyperline
|
|
40417
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions>
|
|
40418
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40239
40419
|
const ctx = resource.parent?.opts()._ctx;
|
|
40240
40420
|
if (!ctx) {
|
|
40241
40421
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40244,27 +40424,17 @@ Examples:
|
|
|
40244
40424
|
const args = {};
|
|
40245
40425
|
if (opts.id !== void 0)
|
|
40246
40426
|
args.id = opts.id;
|
|
40247
|
-
if (opts.
|
|
40248
|
-
args.
|
|
40249
|
-
if (opts.
|
|
40250
|
-
args.
|
|
40251
|
-
if (opts.
|
|
40252
|
-
args.
|
|
40253
|
-
if (opts.take !== void 0)
|
|
40254
|
-
args.take = Number(opts.take);
|
|
40255
|
-
if (opts.skip !== void 0)
|
|
40256
|
-
args.skip = Number(opts.skip);
|
|
40427
|
+
if (opts.provider !== void 0)
|
|
40428
|
+
args.provider = opts.provider;
|
|
40429
|
+
if (opts.item !== void 0)
|
|
40430
|
+
args.item = opts.item;
|
|
40431
|
+
if (opts.dimensions !== void 0)
|
|
40432
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40257
40433
|
await ctx.execute({
|
|
40258
|
-
method: "
|
|
40259
|
-
path: "/v1/
|
|
40434
|
+
method: "PUT",
|
|
40435
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40260
40436
|
args,
|
|
40261
|
-
queryParamKeys: [
|
|
40262
|
-
"start_date",
|
|
40263
|
-
"end_date",
|
|
40264
|
-
"aggregator_filter_id",
|
|
40265
|
-
"take",
|
|
40266
|
-
"skip"
|
|
40267
|
-
]
|
|
40437
|
+
queryParamKeys: []
|
|
40268
40438
|
});
|
|
40269
40439
|
});
|
|
40270
40440
|
}
|
|
@@ -40756,7 +40926,7 @@ Examples:
|
|
|
40756
40926
|
queryParamKeys: []
|
|
40757
40927
|
});
|
|
40758
40928
|
});
|
|
40759
|
-
resource.command("create-custom-property").description(`Create a new custom property definition with a name, type (
|
|
40929
|
+
resource.command("create-custom-property").description(`Create a new custom property definition with a name, type (text, email, number, boolean, date, select, multi_select), and optional default value.`).requiredOption("--name <value>", `name`).requiredOption("--type <value>", `type`).requiredOption("--slug <value>", `slug`).requiredOption("--entities <json>", `entities`).option("--api-only", `api_only`).option("--required", `required`).option("--authorized-values <json>", `authorized_values`).option("--default-value <json>", `Value set on entities created without an explicit value for this custom property. On existing entities without a value, it also satisfies \`required\`. Must match the custom property type, and one of \`authorized_values\` for \`select\` and \`multi_select\` types. Dates are ISO 8601 strings. Email defaults must be valid email addresses. Null means no default value.`).addHelpText("after", `
|
|
40760
40930
|
Examples:
|
|
40761
40931
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities>
|
|
40762
40932
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -40781,6 +40951,8 @@ Examples:
|
|
|
40781
40951
|
args.entities = JSON.parse(opts.entities);
|
|
40782
40952
|
if (opts.authorizedValues !== void 0)
|
|
40783
40953
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
40954
|
+
if (opts.defaultValue !== void 0)
|
|
40955
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
40784
40956
|
await ctx.execute({
|
|
40785
40957
|
method: "POST",
|
|
40786
40958
|
path: "/v1/custom-properties",
|
|
@@ -40788,7 +40960,7 @@ Examples:
|
|
|
40788
40960
|
queryParamKeys: []
|
|
40789
40961
|
});
|
|
40790
40962
|
});
|
|
40791
|
-
resource.command("update-custom-property").description(`Update an existing custom property definition by ID.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `name`).requiredOption("--type <value>", `type`).requiredOption("--slug <value>", `slug`).requiredOption("--entities <json>", `entities`).option("--api-only", `api_only`).option("--required", `required`).option("--authorized-values <json>", `authorized_values`).addHelpText("after", `
|
|
40963
|
+
resource.command("update-custom-property").description(`Update an existing custom property definition by ID.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `name`).requiredOption("--type <value>", `type`).requiredOption("--slug <value>", `slug`).requiredOption("--entities <json>", `entities`).option("--api-only", `api_only`).option("--required", `required`).option("--authorized-values <json>", `authorized_values`).option("--default-value <json>", `Value set on entities created without an explicit value for this custom property. On existing entities without a value, it also satisfies \`required\`. Must match the custom property type, and one of \`authorized_values\` for \`select\` and \`multi_select\` types. Dates are ISO 8601 strings. Email defaults must be valid email addresses. Null means no default value.`).addHelpText("after", `
|
|
40792
40964
|
Examples:
|
|
40793
40965
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities>
|
|
40794
40966
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -40815,6 +40987,8 @@ Examples:
|
|
|
40815
40987
|
args.entities = JSON.parse(opts.entities);
|
|
40816
40988
|
if (opts.authorizedValues !== void 0)
|
|
40817
40989
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
40990
|
+
if (opts.defaultValue !== void 0)
|
|
40991
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
40818
40992
|
await ctx.execute({
|
|
40819
40993
|
method: "PUT",
|
|
40820
40994
|
path: "/v1/custom-properties/{id}",
|
|
@@ -41846,7 +42020,7 @@ Examples:
|
|
|
41846
42020
|
queryParamKeys: []
|
|
41847
42021
|
});
|
|
41848
42022
|
});
|
|
41849
|
-
resource.command("list-customer-credit-transactions").description(`List all transactions (
|
|
42023
|
+
resource.command("list-customer-credit-transactions").description(`List all transactions (topups, usages, expirations) for a specific credit product. Paginated with take/skip and optional filters.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--type <value>", `type`).option("--invoice-id <value>", `invoice_id`).option("--created-at <value>", `created_at`).addHelpText("after", `
|
|
41850
42024
|
Examples:
|
|
41851
42025
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId>
|
|
41852
42026
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId> --take <take> --type <type>`).action(async (opts) => {
|
|
@@ -41935,7 +42109,7 @@ Examples:
|
|
|
41935
42109
|
queryParamKeys: []
|
|
41936
42110
|
});
|
|
41937
42111
|
});
|
|
41938
|
-
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", `
|
|
42112
|
+
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", `
|
|
41939
42113
|
Examples:
|
|
41940
42114
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count>
|
|
41941
42115
|
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>
|
|
@@ -42017,6 +42191,54 @@ Examples:
|
|
|
42017
42191
|
queryParamKeys: []
|
|
42018
42192
|
});
|
|
42019
42193
|
});
|
|
42194
|
+
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", `
|
|
42195
|
+
Examples:
|
|
42196
|
+
hyperline customers-credits get-customer-credit-portal-settings --id <id> --product-id <productId>`).action(async (opts) => {
|
|
42197
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42198
|
+
if (!ctx) {
|
|
42199
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42200
|
+
process.exit(1);
|
|
42201
|
+
}
|
|
42202
|
+
const args = {};
|
|
42203
|
+
if (opts.id !== void 0)
|
|
42204
|
+
args.id = opts.id;
|
|
42205
|
+
if (opts.productId !== void 0)
|
|
42206
|
+
args.productId = opts.productId;
|
|
42207
|
+
await ctx.execute({
|
|
42208
|
+
method: "GET",
|
|
42209
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42210
|
+
args,
|
|
42211
|
+
queryParamKeys: []
|
|
42212
|
+
});
|
|
42213
|
+
});
|
|
42214
|
+
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", `
|
|
42215
|
+
Examples:
|
|
42216
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
|
|
42217
|
+
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>
|
|
42218
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --output json`).action(async (opts) => {
|
|
42219
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42220
|
+
if (!ctx) {
|
|
42221
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42222
|
+
process.exit(1);
|
|
42223
|
+
}
|
|
42224
|
+
const args = {};
|
|
42225
|
+
if (opts.id !== void 0)
|
|
42226
|
+
args.id = opts.id;
|
|
42227
|
+
if (opts.productId !== void 0)
|
|
42228
|
+
args.productId = opts.productId;
|
|
42229
|
+
if (opts.priceConfigurationId !== void 0)
|
|
42230
|
+
args.price_configuration_id = opts.priceConfigurationId;
|
|
42231
|
+
if (opts.enabled !== void 0)
|
|
42232
|
+
args.enabled = true;
|
|
42233
|
+
if (opts.customPriceConfiguration !== void 0)
|
|
42234
|
+
args.custom_price_configuration = JSON.parse(opts.customPriceConfiguration);
|
|
42235
|
+
await ctx.execute({
|
|
42236
|
+
method: "PUT",
|
|
42237
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42238
|
+
args,
|
|
42239
|
+
queryParamKeys: []
|
|
42240
|
+
});
|
|
42241
|
+
});
|
|
42020
42242
|
}
|
|
42021
42243
|
|
|
42022
42244
|
// build/commands/generated/customers-payment-methods.js
|
|
@@ -42972,7 +43194,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
|
|
|
42972
43194
|
|
|
42973
43195
|
- \`current\`: Use the current default payment method of the customer.
|
|
42974
43196
|
- \`external\`: Manage the payment of the invoice outside of Hyperline.
|
|
42975
|
-
`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--emitted-at <value>", `Issue date of the invoice.`).option("--due-at <value>", `Due date of the invoice. Computed from the issue date and the payment delay configured in your settings.`).option("--settled-at <value>", `Date the invoice was fully paid.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).requiredOption("--line-items <json>", `line_items`).option("--transactions <json>", `transactions`).option("--coupons <json>", `coupons`).addHelpText("after", `
|
|
43197
|
+
`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--emitted-at <value>", `Issue date of the invoice.`).option("--due-at <value>", `Due date of the invoice. Computed from the issue date and the payment delay configured in your settings.`).option("--settled-at <value>", `Date the invoice was fully paid.`).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), resolved to the start of that day in the customer timezone. Requires \`status\` to be \`draft\` and an issue date after today. Default to \`manual\`.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).requiredOption("--line-items <json>", `line_items`).option("--transactions <json>", `transactions`).option("--coupons <json>", `coupons`).addHelpText("after", `
|
|
42976
43198
|
Examples:
|
|
42977
43199
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
|
|
42978
43200
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
|
|
@@ -43023,6 +43245,8 @@ Examples:
|
|
|
43023
43245
|
args.due_at = opts.dueAt;
|
|
43024
43246
|
if (opts.settledAt !== void 0)
|
|
43025
43247
|
args.settled_at = opts.settledAt;
|
|
43248
|
+
if (opts.issuingMethod !== void 0)
|
|
43249
|
+
args.issuing_method = opts.issuingMethod;
|
|
43026
43250
|
if (opts.properties !== void 0)
|
|
43027
43251
|
args.properties = JSON.parse(opts.properties);
|
|
43028
43252
|
if (opts.customProperties !== void 0)
|
|
@@ -43212,7 +43436,7 @@ Examples:
|
|
|
43212
43436
|
|
|
43213
43437
|
- \`auto\`: Tax is automatically computed and applied.
|
|
43214
43438
|
- \`not_eligible\`: Tax collection is disabled for the invoice.
|
|
43215
|
-
`).option("--line-items <json>", `line_items`).option("--coupons <json>", `coupons`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).option("--customer <json>", `Override customer details on the invoice. Only allowed for draft or grace period invoices.`).addHelpText("after", `
|
|
43439
|
+
`).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), in the invoice timezone. The issue date must be after today. Set to \`manual\` to unschedule the invoice.`).option("--emitted-at <value>", `Issue date of the draft invoice. For a scheduled invoice, the day on which it is automatically finalized.`).option("--line-items <json>", `line_items`).option("--coupons <json>", `coupons`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).option("--customer <json>", `Override customer details on the invoice. Only allowed for draft or grace period invoices.`).addHelpText("after", `
|
|
43216
43440
|
Examples:
|
|
43217
43441
|
hyperline invoices update --id <id>
|
|
43218
43442
|
hyperline invoices update --id <id> --type <type> --document-name <document_name>
|
|
@@ -43241,6 +43465,10 @@ Examples:
|
|
|
43241
43465
|
args.footer = opts.footer;
|
|
43242
43466
|
if (opts.taxScheme !== void 0)
|
|
43243
43467
|
args.tax_scheme = opts.taxScheme;
|
|
43468
|
+
if (opts.issuingMethod !== void 0)
|
|
43469
|
+
args.issuing_method = opts.issuingMethod;
|
|
43470
|
+
if (opts.emittedAt !== void 0)
|
|
43471
|
+
args.emitted_at = opts.emittedAt;
|
|
43244
43472
|
if (opts.paymentMethodType !== void 0)
|
|
43245
43473
|
args.payment_method_type = opts.paymentMethodType;
|
|
43246
43474
|
if (opts.paymentMethodId !== void 0)
|
|
@@ -43449,7 +43677,7 @@ Examples:
|
|
|
43449
43677
|
queryParamKeys: []
|
|
43450
43678
|
});
|
|
43451
43679
|
});
|
|
43452
|
-
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
|
|
43680
|
+
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", `
|
|
43453
43681
|
Examples:
|
|
43454
43682
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
43455
43683
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -43532,6 +43760,8 @@ Examples:
|
|
|
43532
43760
|
args.credit_note_wallet_refund_enabled = true;
|
|
43533
43761
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43534
43762
|
args.standalone_credit_note_creation_enabled = true;
|
|
43763
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43764
|
+
args.fx_conversion_display_enabled = true;
|
|
43535
43765
|
await ctx.execute({
|
|
43536
43766
|
method: "POST",
|
|
43537
43767
|
path: "/v1/invoicing-entities",
|
|
@@ -43539,7 +43769,7 @@ Examples:
|
|
|
43539
43769
|
queryParamKeys: []
|
|
43540
43770
|
});
|
|
43541
43771
|
});
|
|
43542
|
-
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
|
|
43772
|
+
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", `
|
|
43543
43773
|
Examples:
|
|
43544
43774
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
43545
43775
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -43614,6 +43844,8 @@ Examples:
|
|
|
43614
43844
|
args.credit_note_wallet_refund_enabled = true;
|
|
43615
43845
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43616
43846
|
args.standalone_credit_note_creation_enabled = true;
|
|
43847
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43848
|
+
args.fx_conversion_display_enabled = true;
|
|
43617
43849
|
await ctx.execute({
|
|
43618
43850
|
method: "PUT",
|
|
43619
43851
|
path: "/v1/invoicing-entities/{id}",
|
|
@@ -43649,6 +43881,68 @@ Examples:
|
|
|
43649
43881
|
});
|
|
43650
43882
|
}
|
|
43651
43883
|
|
|
43884
|
+
// build/commands/generated/monitoring.js
|
|
43885
|
+
function registerMonitoringCommands(parent) {
|
|
43886
|
+
const resource = parent.command("monitoring").description("Manage monitoring");
|
|
43887
|
+
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score. Only completed analyses unless status is set.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
|
|
43888
|
+
Examples:
|
|
43889
|
+
hyperline monitoring list-monitoring-analyses
|
|
43890
|
+
hyperline monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
43891
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
43892
|
+
if (!ctx) {
|
|
43893
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
43894
|
+
process.exit(1);
|
|
43895
|
+
}
|
|
43896
|
+
const args = {};
|
|
43897
|
+
if (opts.cursor !== void 0)
|
|
43898
|
+
args.cursor = opts.cursor;
|
|
43899
|
+
if (opts.includeTotal !== void 0)
|
|
43900
|
+
args.include_total = opts.includeTotal;
|
|
43901
|
+
if (opts.customerId !== void 0)
|
|
43902
|
+
args.customer_id = opts.customerId;
|
|
43903
|
+
if (opts.status !== void 0)
|
|
43904
|
+
args.status = opts.status;
|
|
43905
|
+
if (opts["createdAt.gte"] !== void 0)
|
|
43906
|
+
args.created_at__gte = opts["createdAt.gte"];
|
|
43907
|
+
if (opts["createdAt.lte"] !== void 0)
|
|
43908
|
+
args.created_at__lte = opts["createdAt.lte"];
|
|
43909
|
+
if (opts.limit !== void 0)
|
|
43910
|
+
args.limit = Number(opts.limit);
|
|
43911
|
+
await ctx.execute({
|
|
43912
|
+
method: "GET",
|
|
43913
|
+
path: "/v1/agents/monitoring/analyses",
|
|
43914
|
+
args,
|
|
43915
|
+
queryParamKeys: [
|
|
43916
|
+
"limit",
|
|
43917
|
+
"cursor",
|
|
43918
|
+
"include_total",
|
|
43919
|
+
"customer_id",
|
|
43920
|
+
"status",
|
|
43921
|
+
"created_at__gte",
|
|
43922
|
+
"created_at__lte"
|
|
43923
|
+
]
|
|
43924
|
+
});
|
|
43925
|
+
});
|
|
43926
|
+
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", `
|
|
43927
|
+
Examples:
|
|
43928
|
+
hyperline monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
|
|
43929
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
43930
|
+
if (!ctx) {
|
|
43931
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
43932
|
+
process.exit(1);
|
|
43933
|
+
}
|
|
43934
|
+
const args = {};
|
|
43935
|
+
if (opts.id !== void 0)
|
|
43936
|
+
args.id = opts.id;
|
|
43937
|
+
await ctx.execute({
|
|
43938
|
+
method: "GET",
|
|
43939
|
+
path: "/v1/agents/monitoring/analyses/{id}",
|
|
43940
|
+
args,
|
|
43941
|
+
queryParamKeys: []
|
|
43942
|
+
});
|
|
43943
|
+
});
|
|
43944
|
+
}
|
|
43945
|
+
|
|
43652
43946
|
// build/commands/generated/organisations.js
|
|
43653
43947
|
function registerOrganisationsCommands(parent) {
|
|
43654
43948
|
const resource = parent.command("organisations").description("Manage organisations");
|
|
@@ -43928,8 +44222,46 @@ Examples:
|
|
|
43928
44222
|
if (opts.id !== void 0)
|
|
43929
44223
|
args.id = opts.id;
|
|
43930
44224
|
await ctx.execute({
|
|
43931
|
-
method: "GET",
|
|
43932
|
-
path: "/v1/price-configurations/{id}",
|
|
44225
|
+
method: "GET",
|
|
44226
|
+
path: "/v1/price-configurations/{id}",
|
|
44227
|
+
args,
|
|
44228
|
+
queryParamKeys: []
|
|
44229
|
+
});
|
|
44230
|
+
});
|
|
44231
|
+
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44232
|
+
Examples:
|
|
44233
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
|
|
44234
|
+
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>
|
|
44235
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --output json`).action(async (opts) => {
|
|
44236
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44237
|
+
if (!ctx) {
|
|
44238
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44239
|
+
process.exit(1);
|
|
44240
|
+
}
|
|
44241
|
+
const args = {};
|
|
44242
|
+
if (opts.currency !== void 0)
|
|
44243
|
+
args.currency = opts.currency;
|
|
44244
|
+
if (opts.priceBookId !== void 0)
|
|
44245
|
+
args.price_book_id = opts.priceBookId;
|
|
44246
|
+
if (opts.type !== void 0)
|
|
44247
|
+
args.type = opts.type;
|
|
44248
|
+
if (opts.productId !== void 0)
|
|
44249
|
+
args.product_id = opts.productId;
|
|
44250
|
+
if (opts.allowOnPortal !== void 0)
|
|
44251
|
+
args.allow_on_portal = true;
|
|
44252
|
+
if (opts.countries !== void 0)
|
|
44253
|
+
args.countries = JSON.parse(opts.countries);
|
|
44254
|
+
if (opts.billingInterval !== void 0)
|
|
44255
|
+
args.billing_interval = JSON.parse(opts.billingInterval);
|
|
44256
|
+
if (opts.commitmentInterval !== void 0)
|
|
44257
|
+
args.commitment_interval = JSON.parse(opts.commitmentInterval);
|
|
44258
|
+
if (opts.prices !== void 0)
|
|
44259
|
+
args.prices = JSON.parse(opts.prices);
|
|
44260
|
+
if (opts.meteringFilter !== void 0)
|
|
44261
|
+
args.metering_filter = JSON.parse(opts.meteringFilter);
|
|
44262
|
+
await ctx.execute({
|
|
44263
|
+
method: "POST",
|
|
44264
|
+
path: "/v1/price-configurations",
|
|
43933
44265
|
args,
|
|
43934
44266
|
queryParamKeys: []
|
|
43935
44267
|
});
|
|
@@ -44328,7 +44660,7 @@ Quote status.
|
|
|
44328
44660
|
- \`draft\`: The quote is a draft.
|
|
44329
44661
|
- \`approved\`: The quote is approved and ready to be sent to the customer.
|
|
44330
44662
|
- \`pending_signature\`: The quote is awaiting the customer's signature.
|
|
44331
|
-
`).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.
|
|
44663
|
+
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44332
44664
|
|
|
44333
44665
|
- \`all\`: Display all pricing tiers.
|
|
44334
44666
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
@@ -44620,7 +44952,7 @@ Examples:
|
|
|
44620
44952
|
queryParamKeys: []
|
|
44621
44953
|
});
|
|
44622
44954
|
});
|
|
44623
|
-
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.
|
|
44955
|
+
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44624
44956
|
|
|
44625
44957
|
- \`all\`: Display all pricing tiers.
|
|
44626
44958
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
@@ -44689,10 +45021,10 @@ Examples:
|
|
|
44689
45021
|
queryParamKeys: []
|
|
44690
45022
|
});
|
|
44691
45023
|
});
|
|
44692
|
-
resource.command("
|
|
45024
|
+
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", `
|
|
44693
45025
|
Examples:
|
|
44694
|
-
hyperline quotes
|
|
44695
|
-
hyperline quotes
|
|
45026
|
+
hyperline quotes duplicate --id <id>
|
|
45027
|
+
hyperline quotes duplicate --id <id> --output json`).action(async (opts) => {
|
|
44696
45028
|
const ctx = resource.parent?.opts()._ctx;
|
|
44697
45029
|
if (!ctx) {
|
|
44698
45030
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44701,19 +45033,17 @@ Examples:
|
|
|
44701
45033
|
const args = {};
|
|
44702
45034
|
if (opts.id !== void 0)
|
|
44703
45035
|
args.id = opts.id;
|
|
44704
|
-
if (opts.locale !== void 0)
|
|
44705
|
-
args.locale = opts.locale;
|
|
44706
45036
|
await ctx.execute({
|
|
44707
|
-
method: "
|
|
44708
|
-
path: "/v1/quotes/{id}/
|
|
45037
|
+
method: "POST",
|
|
45038
|
+
path: "/v1/quotes/{id}/duplicate",
|
|
44709
45039
|
args,
|
|
44710
|
-
queryParamKeys: [
|
|
45040
|
+
queryParamKeys: []
|
|
44711
45041
|
});
|
|
44712
45042
|
});
|
|
44713
|
-
resource.command("
|
|
45043
|
+
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", `
|
|
44714
45044
|
Examples:
|
|
44715
|
-
hyperline quotes
|
|
44716
|
-
hyperline quotes
|
|
45045
|
+
hyperline quotes download --id <id>
|
|
45046
|
+
hyperline quotes download --id <id> --locale <locale>`).action(async (opts) => {
|
|
44717
45047
|
const ctx = resource.parent?.opts()._ctx;
|
|
44718
45048
|
if (!ctx) {
|
|
44719
45049
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44722,16 +45052,19 @@ Examples:
|
|
|
44722
45052
|
const args = {};
|
|
44723
45053
|
if (opts.id !== void 0)
|
|
44724
45054
|
args.id = opts.id;
|
|
45055
|
+
if (opts.locale !== void 0)
|
|
45056
|
+
args.locale = opts.locale;
|
|
44725
45057
|
await ctx.execute({
|
|
44726
|
-
method: "
|
|
44727
|
-
path: "/v1/quotes/{id}/
|
|
45058
|
+
method: "GET",
|
|
45059
|
+
path: "/v1/quotes/{id}/download",
|
|
44728
45060
|
args,
|
|
44729
|
-
queryParamKeys: []
|
|
45061
|
+
queryParamKeys: ["locale"]
|
|
44730
45062
|
});
|
|
44731
45063
|
});
|
|
44732
|
-
resource.command("finalize").description(`Finalize a draft quote. The quote is submitted for approval when approval is required, otherwise it becomes approved and ready to be sent for signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45064
|
+
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", `
|
|
44733
45065
|
Examples:
|
|
44734
45066
|
hyperline quotes finalize --id <id>
|
|
45067
|
+
hyperline quotes finalize --id <id> --requester-comment <requester_comment>
|
|
44735
45068
|
hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
|
|
44736
45069
|
const ctx = resource.parent?.opts()._ctx;
|
|
44737
45070
|
if (!ctx) {
|
|
@@ -44741,6 +45074,8 @@ Examples:
|
|
|
44741
45074
|
const args = {};
|
|
44742
45075
|
if (opts.id !== void 0)
|
|
44743
45076
|
args.id = opts.id;
|
|
45077
|
+
if (opts.requesterComment !== void 0)
|
|
45078
|
+
args.requester_comment = opts.requesterComment;
|
|
44744
45079
|
await ctx.execute({
|
|
44745
45080
|
method: "POST",
|
|
44746
45081
|
path: "/v1/quotes/{id}/finalize",
|
|
@@ -44748,11 +45083,11 @@ Examples:
|
|
|
44748
45083
|
queryParamKeys: []
|
|
44749
45084
|
});
|
|
44750
45085
|
});
|
|
44751
|
-
resource.command("send").description(`Send a quote by email for customer signature. Requires the quote to be approved first.`).requiredOption("--id <value>", `id parameter`).
|
|
45086
|
+
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", `
|
|
44752
45087
|
Examples:
|
|
44753
|
-
hyperline quotes send --id <id>
|
|
45088
|
+
hyperline quotes send --id <id>
|
|
44754
45089
|
hyperline quotes send --id <id> --email <email> --message <message>
|
|
44755
|
-
hyperline quotes send --id <id> --
|
|
45090
|
+
hyperline quotes send --id <id> --output json`).action(async (opts) => {
|
|
44756
45091
|
const ctx = resource.parent?.opts()._ctx;
|
|
44757
45092
|
if (!ctx) {
|
|
44758
45093
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44772,6 +45107,51 @@ Examples:
|
|
|
44772
45107
|
queryParamKeys: []
|
|
44773
45108
|
});
|
|
44774
45109
|
});
|
|
45110
|
+
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", `
|
|
45111
|
+
Examples:
|
|
45112
|
+
hyperline quotes list-quote-signers --id <id>`).action(async (opts) => {
|
|
45113
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45114
|
+
if (!ctx) {
|
|
45115
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45116
|
+
process.exit(1);
|
|
45117
|
+
}
|
|
45118
|
+
const args = {};
|
|
45119
|
+
if (opts.id !== void 0)
|
|
45120
|
+
args.id = opts.id;
|
|
45121
|
+
await ctx.execute({
|
|
45122
|
+
method: "GET",
|
|
45123
|
+
path: "/v1/quotes/{id}/signers",
|
|
45124
|
+
args,
|
|
45125
|
+
queryParamKeys: []
|
|
45126
|
+
});
|
|
45127
|
+
});
|
|
45128
|
+
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>", `
|
|
45129
|
+
Signature workflow of the quote, replaced as a whole.
|
|
45130
|
+
|
|
45131
|
+
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.
|
|
45132
|
+
|
|
45133
|
+
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.
|
|
45134
|
+
`).addHelpText("after", `
|
|
45135
|
+
Examples:
|
|
45136
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers>
|
|
45137
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers> --output json`).action(async (opts) => {
|
|
45138
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45139
|
+
if (!ctx) {
|
|
45140
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45141
|
+
process.exit(1);
|
|
45142
|
+
}
|
|
45143
|
+
const args = {};
|
|
45144
|
+
if (opts.id !== void 0)
|
|
45145
|
+
args.id = opts.id;
|
|
45146
|
+
if (opts.signers !== void 0)
|
|
45147
|
+
args.signers = JSON.parse(opts.signers);
|
|
45148
|
+
await ctx.execute({
|
|
45149
|
+
method: "PUT",
|
|
45150
|
+
path: "/v1/quotes/{id}/signers",
|
|
45151
|
+
args,
|
|
45152
|
+
queryParamKeys: []
|
|
45153
|
+
});
|
|
45154
|
+
});
|
|
44775
45155
|
resource.command("sign").description(`Manually mark a quote as signed externally. Optionally upload a signed PDF. Bypasses the built-in Hyperline signature flow.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
44776
45156
|
Examples:
|
|
44777
45157
|
hyperline quotes sign --id <id>
|
|
@@ -44855,6 +45235,48 @@ Examples:
|
|
|
44855
45235
|
});
|
|
44856
45236
|
}
|
|
44857
45237
|
|
|
45238
|
+
// build/commands/generated/quotes-approvals.js
|
|
45239
|
+
function registerQuotes_ApprovalsCommands(parent) {
|
|
45240
|
+
const resource = parent.command("quotes-approvals").description("Manage quotes > approvals");
|
|
45241
|
+
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", `
|
|
45242
|
+
Examples:
|
|
45243
|
+
hyperline quotes-approvals approve-quote --id <id>
|
|
45244
|
+
hyperline quotes-approvals approve-quote --id <id> --output json`).action(async (opts) => {
|
|
45245
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45246
|
+
if (!ctx) {
|
|
45247
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45248
|
+
process.exit(1);
|
|
45249
|
+
}
|
|
45250
|
+
const args = {};
|
|
45251
|
+
if (opts.id !== void 0)
|
|
45252
|
+
args.id = opts.id;
|
|
45253
|
+
await ctx.execute({
|
|
45254
|
+
method: "POST",
|
|
45255
|
+
path: "/v1/quotes/{id}/approve",
|
|
45256
|
+
args,
|
|
45257
|
+
queryParamKeys: []
|
|
45258
|
+
});
|
|
45259
|
+
});
|
|
45260
|
+
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", `
|
|
45261
|
+
Examples:
|
|
45262
|
+
hyperline quotes-approvals get-quote-approvals --id <id>`).action(async (opts) => {
|
|
45263
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45264
|
+
if (!ctx) {
|
|
45265
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45266
|
+
process.exit(1);
|
|
45267
|
+
}
|
|
45268
|
+
const args = {};
|
|
45269
|
+
if (opts.id !== void 0)
|
|
45270
|
+
args.id = opts.id;
|
|
45271
|
+
await ctx.execute({
|
|
45272
|
+
method: "GET",
|
|
45273
|
+
path: "/v1/quotes/{id}/approvals",
|
|
45274
|
+
args,
|
|
45275
|
+
queryParamKeys: []
|
|
45276
|
+
});
|
|
45277
|
+
});
|
|
45278
|
+
}
|
|
45279
|
+
|
|
44858
45280
|
// build/commands/generated/quotes-templates.js
|
|
44859
45281
|
function registerQuotes_TemplatesCommands(parent) {
|
|
44860
45282
|
const resource = parent.command("quotes-templates").description("Manage quotes > templates");
|
|
@@ -45054,7 +45476,7 @@ Examples:
|
|
|
45054
45476
|
queryParamKeys: []
|
|
45055
45477
|
});
|
|
45056
45478
|
});
|
|
45057
|
-
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", `
|
|
45479
|
+
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", `
|
|
45058
45480
|
Examples:
|
|
45059
45481
|
hyperline subscriptions cancel --id <id>
|
|
45060
45482
|
hyperline subscriptions cancel --id <id> --cancel-at <cancel_at> --reason <reason>
|
|
@@ -45082,9 +45504,10 @@ Examples:
|
|
|
45082
45504
|
queryParamKeys: []
|
|
45083
45505
|
});
|
|
45084
45506
|
});
|
|
45085
|
-
resource.command("reinstate").description(`Reinstate a subscription
|
|
45507
|
+
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", `
|
|
45086
45508
|
Examples:
|
|
45087
45509
|
hyperline subscriptions reinstate --id <id>
|
|
45510
|
+
hyperline subscriptions reinstate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
45088
45511
|
hyperline subscriptions reinstate --id <id> --output json`).action(async (opts) => {
|
|
45089
45512
|
const ctx = resource.parent?.opts()._ctx;
|
|
45090
45513
|
if (!ctx) {
|
|
@@ -45094,6 +45517,12 @@ Examples:
|
|
|
45094
45517
|
const args = {};
|
|
45095
45518
|
if (opts.id !== void 0)
|
|
45096
45519
|
args.id = opts.id;
|
|
45520
|
+
if (opts.reactivateAt !== void 0)
|
|
45521
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45522
|
+
if (opts.invoicingMode !== void 0)
|
|
45523
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45524
|
+
if (opts.chargeLineItems !== void 0)
|
|
45525
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
45097
45526
|
await ctx.execute({
|
|
45098
45527
|
method: "POST",
|
|
45099
45528
|
path: "/v1/subscriptions/{id}/reinstate",
|
|
@@ -45101,7 +45530,7 @@ Examples:
|
|
|
45101
45530
|
queryParamKeys: []
|
|
45102
45531
|
});
|
|
45103
45532
|
});
|
|
45104
|
-
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.
|
|
45533
|
+
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", `
|
|
45105
45534
|
Examples:
|
|
45106
45535
|
hyperline subscriptions pause --id <id>
|
|
45107
45536
|
hyperline subscriptions pause --id <id> --reactivate-at <reactivate_at>
|
|
@@ -45142,9 +45571,10 @@ Examples:
|
|
|
45142
45571
|
queryParamKeys: []
|
|
45143
45572
|
});
|
|
45144
45573
|
});
|
|
45145
|
-
resource.command("reactivate").description(`Resume a paused subscription,
|
|
45574
|
+
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", `
|
|
45146
45575
|
Examples:
|
|
45147
45576
|
hyperline subscriptions reactivate --id <id>
|
|
45577
|
+
hyperline subscriptions reactivate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
45148
45578
|
hyperline subscriptions reactivate --id <id> --output json`).action(async (opts) => {
|
|
45149
45579
|
const ctx = resource.parent?.opts()._ctx;
|
|
45150
45580
|
if (!ctx) {
|
|
@@ -45154,6 +45584,12 @@ Examples:
|
|
|
45154
45584
|
const args = {};
|
|
45155
45585
|
if (opts.id !== void 0)
|
|
45156
45586
|
args.id = opts.id;
|
|
45587
|
+
if (opts.reactivateAt !== void 0)
|
|
45588
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45589
|
+
if (opts.invoicingMode !== void 0)
|
|
45590
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45591
|
+
if (opts.chargeLineItems !== void 0)
|
|
45592
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
45157
45593
|
await ctx.execute({
|
|
45158
45594
|
method: "POST",
|
|
45159
45595
|
path: "/v1/subscriptions/{id}/reactivate",
|
|
@@ -46737,10 +47173,11 @@ function registerAllCommands(program2) {
|
|
|
46737
47173
|
registerAccounting_ReportsCommands(program2);
|
|
46738
47174
|
registerAccounting_Revenue_RecognitionCommands(program2);
|
|
46739
47175
|
registerAccounting_RulesCommands(program2);
|
|
46740
|
-
registerAgentsCommands(program2);
|
|
46741
47176
|
registerCustom_PropertiesCommands(program2);
|
|
46742
47177
|
registerAggregatorsCommands(program2);
|
|
46743
47178
|
registerAggregators_UsageCommands(program2);
|
|
47179
|
+
registerAi_BillingCommands(program2);
|
|
47180
|
+
registerAi_CostsCommands(program2);
|
|
46744
47181
|
registerAnalyticsCommands(program2);
|
|
46745
47182
|
registerBank_AccountsCommands(program2);
|
|
46746
47183
|
registerCompaniesCommands(program2);
|
|
@@ -46759,11 +47196,13 @@ function registerAllCommands(program2) {
|
|
|
46759
47196
|
registerInvoicesCommands(program2);
|
|
46760
47197
|
registerInvoices_TransactionsCommands(program2);
|
|
46761
47198
|
registerInvoicing_EntitiesCommands(program2);
|
|
47199
|
+
registerMonitoringCommands(program2);
|
|
46762
47200
|
registerPaymentsCommands(program2);
|
|
46763
47201
|
registerProductsCommands(program2);
|
|
46764
47202
|
registerPrice_ConfigurationsCommands(program2);
|
|
46765
47203
|
registerQuotesCommands(program2);
|
|
46766
47204
|
registerQuotes_TemplatesCommands(program2);
|
|
47205
|
+
registerQuotes_ApprovalsCommands(program2);
|
|
46767
47206
|
registerSubscriptions_TemplatesCommands(program2);
|
|
46768
47207
|
registerSubscriptionsCommands(program2);
|
|
46769
47208
|
registerSubscriptions_TransitionsCommands(program2);
|
|
@@ -62774,17 +63213,18 @@ var languages = [
|
|
|
62774
63213
|
|
|
62775
63214
|
// ../hyperline-i18n/build/locales/de.js
|
|
62776
63215
|
var de = {
|
|
62777
|
-
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
62778
|
-
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
62779
|
-
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
62780
63216
|
"accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
|
|
62781
|
-
"accounting.
|
|
63217
|
+
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
63218
|
+
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
62782
63219
|
"accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62783
63220
|
"accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62784
63221
|
"accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62785
|
-
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
62786
63222
|
"accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62787
63223
|
"accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
|
|
63224
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
|
|
63225
|
+
"accounting.transactionChargedBack.entryDescription": "R\xFCckbuchung f\xFCr Rechnung {{invoiceId}}",
|
|
63226
|
+
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
63227
|
+
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
62788
63228
|
"creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
|
|
62789
63229
|
"credits.bundleOf": "{{productName}} - Paket mit {{creditCount}} Guthaben",
|
|
62790
63230
|
"credits.unitsOf": "{{productName}} - {{creditCount}} Guthaben",
|
|
@@ -62798,9 +63238,9 @@ var de = {
|
|
|
62798
63238
|
"invoices.prorata.paymentForItemFullPeriod": "Zahlung f\xFCr",
|
|
62799
63239
|
"invoices.prorata.refundForItem": "Anteilig erstatteter Betrag f\xFCr",
|
|
62800
63240
|
"invoices.prorata.refundForItemFullPeriod": "Erstattung f\xFCr",
|
|
62801
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben",
|
|
62802
63241
|
"subscriptions.closingChargeName": "Abschlussgeb\xFChr f\xFCr das Abonnement",
|
|
62803
63242
|
"subscriptions.correction": "Vorperiodische Anpassung",
|
|
63243
|
+
"subscriptions.reinstatementRechargeName": "Wiederherstellungsgeb\xFChr f\xFCr den stornierten Zeitraum",
|
|
62804
63244
|
"subscriptions.updates.addCoupon": "Gutschein hinzuf\xFCgen {{couponName}}",
|
|
62805
63245
|
"subscriptions.updates.addProduct": "{{productName}} hinzuf\xFCgen",
|
|
62806
63246
|
"subscriptions.updates.removeCoupon": "Gutschein entfernen {{couponName}}",
|
|
@@ -62815,7 +63255,8 @@ var de = {
|
|
|
62815
63255
|
"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",
|
|
62816
63256
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Diese Position wurde f\xFCr den anteiligen Zeitraum in Rechnung gestellt",
|
|
62817
63257
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Betrag von {{amount}} f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
|
|
62818
|
-
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren"
|
|
63258
|
+
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren",
|
|
63259
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben"
|
|
62819
63260
|
};
|
|
62820
63261
|
|
|
62821
63262
|
// ../hyperline-i18n/build/locales/en.js
|
|
@@ -62832,6 +63273,7 @@ var en = {
|
|
|
62832
63273
|
"invoices.prorata.refundForItemFullPeriod": "Refund for",
|
|
62833
63274
|
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 expired balance",
|
|
62834
63275
|
"subscriptions.closingChargeName": "Closing fee for subscription",
|
|
63276
|
+
"subscriptions.reinstatementRechargeName": "Reinstatement recharge of canceled period",
|
|
62835
63277
|
"subscriptions.correction": "Adjustment previous period",
|
|
62836
63278
|
"subscriptions.updates.addCoupon": "Add coupon {{couponName}}",
|
|
62837
63279
|
"subscriptions.updates.addProduct": "Add {{productName}}",
|
|
@@ -62851,6 +63293,7 @@ var en = {
|
|
|
62851
63293
|
"accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
|
|
62852
63294
|
"accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
|
|
62853
63295
|
"accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
|
|
63296
|
+
"accounting.transactionChargedBack.entryDescription": "Chargeback for Invoice {{invoiceId}}",
|
|
62854
63297
|
"accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
|
|
62855
63298
|
"accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
|
|
62856
63299
|
"accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
|
|
@@ -62866,17 +63309,18 @@ var en = {
|
|
|
62866
63309
|
|
|
62867
63310
|
// ../hyperline-i18n/build/locales/es.js
|
|
62868
63311
|
var es = {
|
|
62869
|
-
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
62870
|
-
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62871
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
62872
63312
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
|
|
62873
|
-
"accounting.
|
|
63313
|
+
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
63314
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62874
63315
|
"accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62875
63316
|
"accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62876
63317
|
"accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62877
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62878
63318
|
"accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62879
63319
|
"accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63320
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63321
|
+
"accounting.transactionChargedBack.entryDescription": "Contracargo de la factura {{invoiceId}}",
|
|
63322
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
63323
|
+
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62880
63324
|
"creditNotes.refundChargeName": "Reembolso por factura",
|
|
62881
63325
|
"credits.bundleOf": "{{productName}} - Paquete de {{creditCount}} cr\xE9ditos",
|
|
62882
63326
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
@@ -62890,9 +63334,9 @@ var es = {
|
|
|
62890
63334
|
"invoices.prorata.paymentForItemFullPeriod": "Pago por",
|
|
62891
63335
|
"invoices.prorata.refundForItem": "Reembolso prorrateado por",
|
|
62892
63336
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
62893
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado",
|
|
62894
63337
|
"subscriptions.closingChargeName": "Cargo por cierre de suscripci\xF3n",
|
|
62895
63338
|
"subscriptions.correction": "Ajuste del periodo anterior",
|
|
63339
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reinstalaci\xF3n del per\xEDodo cancelado",
|
|
62896
63340
|
"subscriptions.updates.addCoupon": "A\xF1adir cup\xF3n {{couponName}}",
|
|
62897
63341
|
"subscriptions.updates.addProduct": "A\xF1adir {{productName}}",
|
|
62898
63342
|
"subscriptions.updates.removeCoupon": "Eliminar cup\xF3n {{couponName}}",
|
|
@@ -62907,22 +63351,24 @@ var es = {
|
|
|
62907
63351
|
"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",
|
|
62908
63352
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta l\xEDnea ha sido facturada para el per\xEDodo prorrateado",
|
|
62909
63353
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importe de {{amount}} no facturado para el per\xEDodo prorrateado",
|
|
62910
|
-
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}"
|
|
63354
|
+
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}",
|
|
63355
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado"
|
|
62911
63356
|
};
|
|
62912
63357
|
|
|
62913
63358
|
// ../hyperline-i18n/build/locales/fr.js
|
|
62914
63359
|
var fr = {
|
|
63360
|
+
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
63361
|
+
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
63362
|
+
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62915
63363
|
"accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62916
63364
|
"accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62917
63365
|
"accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62918
|
-
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62919
63366
|
"accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62920
|
-
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
62921
|
-
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62922
|
-
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
62923
|
-
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
62924
|
-
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
62925
63367
|
"accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
|
|
63368
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
63369
|
+
"accounting.transactionChargedBack.entryDescription": "R\xE9trofacturation de la facture {{invoiceId}}",
|
|
63370
|
+
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
63371
|
+
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62926
63372
|
"creditNotes.refundChargeName": "Remboursement pour facture",
|
|
62927
63373
|
"credits.bundleOf": "{{productName}} - Pack de {{creditCount}} cr\xE9dits",
|
|
62928
63374
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9dits",
|
|
@@ -62936,9 +63382,9 @@ var fr = {
|
|
|
62936
63382
|
"invoices.prorata.paymentForItemFullPeriod": "Paiement pour",
|
|
62937
63383
|
"invoices.prorata.refundForItem": "Remboursement au prorata pour",
|
|
62938
63384
|
"invoices.prorata.refundForItemFullPeriod": "Remboursement pour",
|
|
62939
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9",
|
|
62940
63385
|
"subscriptions.closingChargeName": "Frais de cl\xF4ture pour abonnement",
|
|
62941
63386
|
"subscriptions.correction": "Ajustement p\xE9riode pr\xE9c\xE9dente",
|
|
63387
|
+
"subscriptions.reinstatementRechargeName": "Recharge de r\xE9tablissement de la p\xE9riode annul\xE9e",
|
|
62942
63388
|
"subscriptions.updates.addCoupon": "Ajout du coupon {{couponName}}",
|
|
62943
63389
|
"subscriptions.updates.addProduct": "Ajout {{productName}}",
|
|
62944
63390
|
"subscriptions.updates.removeCoupon": "Retrait du coupon {{couponName}}",
|
|
@@ -62953,22 +63399,24 @@ var fr = {
|
|
|
62953
63399
|
"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",
|
|
62954
63400
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Cette ligne a \xE9t\xE9 factur\xE9e pour la p\xE9riode proratis\xE9e",
|
|
62955
63401
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Montant de {{amount}} non factur\xE9 pour la p\xE9riode proratis\xE9e",
|
|
62956
|
-
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}"
|
|
63402
|
+
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}",
|
|
63403
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9"
|
|
62957
63404
|
};
|
|
62958
63405
|
|
|
62959
63406
|
// ../hyperline-i18n/build/locales/it.js
|
|
62960
63407
|
var it = {
|
|
62961
|
-
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
62962
|
-
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62963
|
-
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
62964
63408
|
"accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
|
|
62965
|
-
"accounting.
|
|
63409
|
+
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
63410
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62966
63411
|
"accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62967
63412
|
"accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62968
63413
|
"accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62969
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62970
63414
|
"accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62971
63415
|
"accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
|
|
63416
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
|
|
63417
|
+
"accounting.transactionChargedBack.entryDescription": "Riaddebito per la fattura {{invoiceId}}",
|
|
63418
|
+
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
63419
|
+
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62972
63420
|
"creditNotes.refundChargeName": "Rimborso per fattura",
|
|
62973
63421
|
"credits.bundleOf": "{{productName}} - Pacchetto di {{creditCount}} crediti",
|
|
62974
63422
|
"credits.unitsOf": "{{productName}} - {{creditCount}} crediti",
|
|
@@ -62982,9 +63430,9 @@ var it = {
|
|
|
62982
63430
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento per",
|
|
62983
63431
|
"invoices.prorata.refundForItem": "Rimborso proporzionale per",
|
|
62984
63432
|
"invoices.prorata.refundForItemFullPeriod": "Rimborso per",
|
|
62985
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto",
|
|
62986
63433
|
"subscriptions.closingChargeName": "Costo di chiusura per abbonamento",
|
|
62987
63434
|
"subscriptions.correction": "Correzione periodo precedente",
|
|
63435
|
+
"subscriptions.reinstatementRechargeName": "Ricarica di reintegrazione del periodo annullato",
|
|
62988
63436
|
"subscriptions.updates.addCoupon": "Aggiungi coupon {{couponName}}",
|
|
62989
63437
|
"subscriptions.updates.addProduct": "Aggiungi {{productName}}",
|
|
62990
63438
|
"subscriptions.updates.removeCoupon": "Rimuovi coupon {{couponName}}",
|
|
@@ -62999,14 +63447,30 @@ var it = {
|
|
|
62999
63447
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Importo di {{amount}} (con un minimo impegnato di {{committedCount}}) non fatturato per il periodo proporzionato",
|
|
63000
63448
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Questa voce \xE8 stata fatturata per il periodo proporzionato",
|
|
63001
63449
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importo di {{amount}} non fatturato per il periodo proporzionato",
|
|
63002
|
-
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}"
|
|
63450
|
+
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}",
|
|
63451
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto"
|
|
63003
63452
|
};
|
|
63004
63453
|
|
|
63005
63454
|
// ../hyperline-i18n/build/locales/lt.js
|
|
63006
63455
|
var lt = {
|
|
63456
|
+
"accounting.creditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}} s\u0105skaitai fakt\u016Brai {{invoiceId}}",
|
|
63457
|
+
"accounting.invoicePosted.entryDescription": "I\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros {{invoiceId}} registravimo \u012Fra\u0161as",
|
|
63458
|
+
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63459
|
+
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63460
|
+
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63461
|
+
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63462
|
+
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63463
|
+
"accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
|
|
63464
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
|
|
63465
|
+
"accounting.transactionChargedBack.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} u\u017Egin\u010Dyto mok\u0117jimo gr\u0105\u017Einimas",
|
|
63466
|
+
"accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
|
|
63467
|
+
"accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
|
|
63007
63468
|
"creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
|
|
63008
63469
|
"credits.bundleOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173 paketas",
|
|
63009
63470
|
"credits.unitsOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173",
|
|
63471
|
+
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
|
|
63472
|
+
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63473
|
+
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63010
63474
|
"invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
|
|
63011
63475
|
"invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
|
|
63012
63476
|
"invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
|
|
@@ -63014,53 +63478,41 @@ var lt = {
|
|
|
63014
63478
|
"invoices.prorata.paymentForItemFullPeriod": "Mok\u0117jimas u\u017E",
|
|
63015
63479
|
"invoices.prorata.refundForItem": "Proporcingas gr\u0105\u017Einimas u\u017E",
|
|
63016
63480
|
"invoices.prorata.refundForItemFullPeriod": "Gr\u0105\u017Einimas u\u017E",
|
|
63017
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis",
|
|
63018
63481
|
"subscriptions.closingChargeName": "Prenumeratos u\u017Ebaigimo mokestis",
|
|
63019
63482
|
"subscriptions.correction": "Ankstesnio laikotarpio koregavimas",
|
|
63483
|
+
"subscriptions.reinstatementRechargeName": "Atnaujinimo \u012Fmokos u\u017E nutraukt\u0105 laikotarp\u012F",
|
|
63020
63484
|
"subscriptions.updates.addCoupon": "Prid\u0117ti kupon\u0105 {{couponName}}",
|
|
63021
63485
|
"subscriptions.updates.addProduct": "Prid\u0117ti {{productName}}",
|
|
63022
63486
|
"subscriptions.updates.removeCoupon": "Pa\u0161alinti kupon\u0105 {{couponName}}",
|
|
63023
63487
|
"subscriptions.updates.removeProduct": "Pa\u0161alinti {{productName}}",
|
|
63024
63488
|
"subscriptions.updates.unit": "vnt.",
|
|
63025
|
-
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
63026
63489
|
"subscriptions.updates.updateCount": "Atnaujinti {{productName}} kiek\u012F ({{previousCount}} \u2192 {{newCount}} {{unit}})",
|
|
63027
|
-
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63028
|
-
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63029
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63030
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63031
63490
|
"subscriptions.updates.updateCount.description.full.committed.invoiced": "Visam laikotarpiui pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63032
63491
|
"subscriptions.updates.updateCount.description.full.committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63033
63492
|
"subscriptions.updates.updateCount.description.full.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 visam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63034
63493
|
"subscriptions.updates.updateCount.description.full.not_committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63035
|
-
"
|
|
63036
|
-
"
|
|
63037
|
-
"
|
|
63038
|
-
"
|
|
63039
|
-
"
|
|
63040
|
-
"
|
|
63041
|
-
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63042
|
-
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63043
|
-
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63044
|
-
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63045
|
-
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63046
|
-
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63047
|
-
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63048
|
-
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s"
|
|
63494
|
+
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63495
|
+
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63496
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63497
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63498
|
+
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
63499
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis"
|
|
63049
63500
|
};
|
|
63050
63501
|
|
|
63051
63502
|
// ../hyperline-i18n/build/locales/nl.js
|
|
63052
63503
|
var nl = {
|
|
63053
|
-
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63054
|
-
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
63055
|
-
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63056
63504
|
"accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
|
|
63057
|
-
"accounting.
|
|
63505
|
+
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63506
|
+
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
63058
63507
|
"accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63059
63508
|
"accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63060
63509
|
"accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63061
|
-
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
63062
63510
|
"accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63063
63511
|
"accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
|
|
63512
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
|
|
63513
|
+
"accounting.transactionChargedBack.entryDescription": "Terugboeking voor factuur {{invoiceId}}",
|
|
63514
|
+
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63515
|
+
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
63064
63516
|
"creditNotes.refundChargeName": "Terugbetaling voor factuur",
|
|
63065
63517
|
"credits.bundleOf": "{{productName}} - Bundel van {{creditCount}} credits",
|
|
63066
63518
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
@@ -63074,9 +63526,9 @@ var nl = {
|
|
|
63074
63526
|
"invoices.prorata.paymentForItemFullPeriod": "Betaling voor",
|
|
63075
63527
|
"invoices.prorata.refundForItem": "Gedeeltelijke terugbetaling voor",
|
|
63076
63528
|
"invoices.prorata.refundForItemFullPeriod": "Terugbetaling voor",
|
|
63077
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo",
|
|
63078
63529
|
"subscriptions.closingChargeName": "Afsluitkosten voor abonnement",
|
|
63079
63530
|
"subscriptions.correction": "Aanpassing vorige periode",
|
|
63531
|
+
"subscriptions.reinstatementRechargeName": "Herstelkosten van geannuleerde periode",
|
|
63080
63532
|
"subscriptions.updates.addCoupon": "Coupon toevoegen {{couponName}}",
|
|
63081
63533
|
"subscriptions.updates.addProduct": "{{productName}} toevoegen",
|
|
63082
63534
|
"subscriptions.updates.removeCoupon": "Coupon verwijderen {{couponName}}",
|
|
@@ -63091,22 +63543,24 @@ var nl = {
|
|
|
63091
63543
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Bedrag van {{amount}} (met een minimaal toegezegd aantal van {{committedCount}}) niet gefactureerd voor de geproportioneerde periode",
|
|
63092
63544
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Deze regel is gefactureerd voor de geproportioneerde periode",
|
|
63093
63545
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Bedrag van {{amount}} niet gefactureerd voor de geproportioneerde periode",
|
|
63094
|
-
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}"
|
|
63546
|
+
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}",
|
|
63547
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo"
|
|
63095
63548
|
};
|
|
63096
63549
|
|
|
63097
63550
|
// ../hyperline-i18n/build/locales/pl.js
|
|
63098
63551
|
var pl = {
|
|
63099
|
-
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63100
|
-
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63101
|
-
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63102
63552
|
"accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
|
|
63103
|
-
"accounting.
|
|
63553
|
+
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63554
|
+
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
63104
63555
|
"accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63105
63556
|
"accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63106
63557
|
"accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63107
|
-
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
63108
63558
|
"accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63109
63559
|
"accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
|
|
63560
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
|
|
63561
|
+
"accounting.transactionChargedBack.entryDescription": "Obci\u0105\u017Cenie zwrotne za faktur\u0119 {{invoiceId}}",
|
|
63562
|
+
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63563
|
+
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63110
63564
|
"creditNotes.refundChargeName": "Zwrot za faktur\u0119",
|
|
63111
63565
|
"credits.bundleOf": "{{productName}} - Pakiet {{creditCount}} kredyt\xF3w",
|
|
63112
63566
|
"credits.unitsOf": "{{productName}} - {{creditCount}} kredyt\xF3w",
|
|
@@ -63120,9 +63574,9 @@ var pl = {
|
|
|
63120
63574
|
"invoices.prorata.paymentForItemFullPeriod": "P\u0142atno\u015B\u0107 za",
|
|
63121
63575
|
"invoices.prorata.refundForItem": "Zwrot proporcjonalny za",
|
|
63122
63576
|
"invoices.prorata.refundForItemFullPeriod": "Zwrot za",
|
|
63123
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo",
|
|
63124
63577
|
"subscriptions.closingChargeName": "Op\u0142ata za zamkni\u0119cie subskrypcji",
|
|
63125
63578
|
"subscriptions.correction": "Korekta poprzedniego okresu",
|
|
63579
|
+
"subscriptions.reinstatementRechargeName": "Op\u0142ata za przywr\xF3cenie anulowanego okresu",
|
|
63126
63580
|
"subscriptions.updates.addCoupon": "Dodaj kupon {{couponName}}",
|
|
63127
63581
|
"subscriptions.updates.addProduct": "Dodaj {{productName}}",
|
|
63128
63582
|
"subscriptions.updates.removeCoupon": "Usu\u0144 kupon {{couponName}}",
|
|
@@ -63137,22 +63591,24 @@ var pl = {
|
|
|
63137
63591
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Kwota {{amount}} (z minimaln\u0105 zobowi\u0105zan\u0105 ilo\u015Bci\u0105 {{committedCount}}) niefakturowana za okres proporcjonalny",
|
|
63138
63592
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Ta pozycja zosta\u0142a zafakturowana za okres proporcjonalny",
|
|
63139
63593
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Kwota {{amount}} niefakturowana za okres proporcjonalny",
|
|
63140
|
-
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}"
|
|
63594
|
+
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}",
|
|
63595
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo"
|
|
63141
63596
|
};
|
|
63142
63597
|
|
|
63143
63598
|
// ../hyperline-i18n/build/locales/pt.js
|
|
63144
63599
|
var pt = {
|
|
63145
|
-
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63146
|
-
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63147
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63148
63600
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
|
|
63149
|
-
"accounting.
|
|
63601
|
+
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63602
|
+
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
63150
63603
|
"accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63151
63604
|
"accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63152
63605
|
"accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63153
|
-
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
63154
63606
|
"accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63155
63607
|
"accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63608
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63609
|
+
"accounting.transactionChargedBack.entryDescription": "Estorno da fatura {{invoiceId}}",
|
|
63610
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63611
|
+
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63156
63612
|
"creditNotes.refundChargeName": "Reembolso pela fatura",
|
|
63157
63613
|
"credits.bundleOf": "{{productName}} - Pacote de {{creditCount}} cr\xE9ditos",
|
|
63158
63614
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
@@ -63166,9 +63622,9 @@ var pt = {
|
|
|
63166
63622
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento por",
|
|
63167
63623
|
"invoices.prorata.refundForItem": "Reembolso proporcional por",
|
|
63168
63624
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
63169
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado",
|
|
63170
63625
|
"subscriptions.closingChargeName": "Taxa de encerramento da assinatura",
|
|
63171
63626
|
"subscriptions.correction": "Ajuste do per\xEDodo anterior",
|
|
63627
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reintegra\xE7\xE3o do per\xEDodo cancelado",
|
|
63172
63628
|
"subscriptions.updates.addCoupon": "Adicionar cupom {{couponName}}",
|
|
63173
63629
|
"subscriptions.updates.addProduct": "Adicionar {{productName}}",
|
|
63174
63630
|
"subscriptions.updates.removeCoupon": "Remover cupom {{couponName}}",
|
|
@@ -63183,7 +63639,8 @@ var pt = {
|
|
|
63183
63639
|
"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",
|
|
63184
63640
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta linha foi faturada para o per\xEDodo proporcional",
|
|
63185
63641
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Valor de {{amount}} n\xE3o faturado para o per\xEDodo proporcional",
|
|
63186
|
-
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}"
|
|
63642
|
+
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}",
|
|
63643
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado"
|
|
63187
63644
|
};
|
|
63188
63645
|
|
|
63189
63646
|
// ../hyperline-i18n/build/language.js
|
|
@@ -65877,6 +66334,8 @@ var usStates = [
|
|
|
65877
66334
|
|
|
65878
66335
|
// ../hyperline-lib/build/utils/dates.js
|
|
65879
66336
|
var import_shared2 = __toESM(require_shared(), 1);
|
|
66337
|
+
var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
|
|
66338
|
+
var DST_SHIFT_MS = 60 * 60 * 1e3;
|
|
65880
66339
|
|
|
65881
66340
|
// ../hyperline-lib/build/utils/document.js
|
|
65882
66341
|
var import_shared3 = __toESM(require_shared(), 1);
|
|
@@ -65888,6 +66347,11 @@ import * as https from "node:https";
|
|
|
65888
66347
|
import { createHash as createHash2 } from "node:crypto";
|
|
65889
66348
|
import { deepEqual } from "fast-equals";
|
|
65890
66349
|
|
|
66350
|
+
// ../hyperline-lib/build/utils/realignDatesToTimezone.js
|
|
66351
|
+
var import_shared4 = __toESM(require_shared(), 1);
|
|
66352
|
+
var MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1e3;
|
|
66353
|
+
var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
|
|
66354
|
+
|
|
65891
66355
|
// ../hyperline-lib/build/utils/api/filterBuilder.js
|
|
65892
66356
|
var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
|
|
65893
66357
|
var booleanAuthorizedOperators = [
|
|
@@ -65954,7 +66418,151 @@ var isAxiosError = axios.isAxiosError;
|
|
|
65954
66418
|
|
|
65955
66419
|
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
65956
66420
|
import axios2 from "axios";
|
|
65957
|
-
import axiosRetry, { isNetworkOrIdempotentRequestError } from "axios-retry";
|
|
66421
|
+
import axiosRetry, { isNetworkOrIdempotentRequestError, retryAfter } from "axios-retry";
|
|
66422
|
+
|
|
66423
|
+
// ../hyperline-lib/build/httpClient/logRedaction.js
|
|
66424
|
+
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
66425
|
+
"accesstoken",
|
|
66426
|
+
"apikey",
|
|
66427
|
+
"apitoken",
|
|
66428
|
+
"assertion",
|
|
66429
|
+
"authtoken",
|
|
66430
|
+
"clientassertion",
|
|
66431
|
+
"codeverifier",
|
|
66432
|
+
"credentials",
|
|
66433
|
+
"idtoken",
|
|
66434
|
+
"privatekey",
|
|
66435
|
+
"refreshtoken",
|
|
66436
|
+
"sessiontoken",
|
|
66437
|
+
"token"
|
|
66438
|
+
]);
|
|
66439
|
+
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password)$/;
|
|
66440
|
+
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|password|assertion|verifier|credentials/i;
|
|
66441
|
+
var REDACTED_VALUE = "<redacted>";
|
|
66442
|
+
var MAX_REDACTION_DEPTH = 10;
|
|
66443
|
+
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
66444
|
+
var MAX_VISITED_NODES = 1e3;
|
|
66445
|
+
var MAX_CONTAINER_ENTRIES = MAX_VISITED_NODES;
|
|
66446
|
+
function redactLogBody({ body }) {
|
|
66447
|
+
return redactValue({
|
|
66448
|
+
value: body,
|
|
66449
|
+
depth: MAX_REDACTION_DEPTH,
|
|
66450
|
+
budget: { remainingNodes: MAX_VISITED_NODES }
|
|
66451
|
+
});
|
|
66452
|
+
}
|
|
66453
|
+
function redactLogUrl({ url: url2 }) {
|
|
66454
|
+
const queryIndex = url2.indexOf("?");
|
|
66455
|
+
if (queryIndex === -1 || url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
66456
|
+
return url2;
|
|
66457
|
+
}
|
|
66458
|
+
const redactedQuery = redactFormEncoded({ text: url2.slice(queryIndex + 1) });
|
|
66459
|
+
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
66460
|
+
}
|
|
66461
|
+
function redactValue({ value, depth, budget }) {
|
|
66462
|
+
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
66463
|
+
return value;
|
|
66464
|
+
}
|
|
66465
|
+
budget.remainingNodes -= 1;
|
|
66466
|
+
if (typeof value === "string") {
|
|
66467
|
+
return redactString({ text: value, budget });
|
|
66468
|
+
}
|
|
66469
|
+
if (value instanceof URLSearchParams) {
|
|
66470
|
+
return redactFormEncoded({ text: value.toString() }) ?? value;
|
|
66471
|
+
}
|
|
66472
|
+
if (Array.isArray(value)) {
|
|
66473
|
+
return redactArray({ items: value, depth, budget });
|
|
66474
|
+
}
|
|
66475
|
+
if (isPlainObject2(value)) {
|
|
66476
|
+
return redactObject({ record: value, depth, budget });
|
|
66477
|
+
}
|
|
66478
|
+
return value;
|
|
66479
|
+
}
|
|
66480
|
+
function redactArray({ items, depth, budget }) {
|
|
66481
|
+
if (items.length > MAX_CONTAINER_ENTRIES) {
|
|
66482
|
+
return items;
|
|
66483
|
+
}
|
|
66484
|
+
let redactedItems;
|
|
66485
|
+
for (const [index, item] of items.entries()) {
|
|
66486
|
+
if (budget.remainingNodes <= 0) {
|
|
66487
|
+
break;
|
|
66488
|
+
}
|
|
66489
|
+
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
66490
|
+
if (redactedItem !== item) {
|
|
66491
|
+
redactedItems ??= [...items];
|
|
66492
|
+
redactedItems[index] = redactedItem;
|
|
66493
|
+
}
|
|
66494
|
+
}
|
|
66495
|
+
return redactedItems ?? items;
|
|
66496
|
+
}
|
|
66497
|
+
function redactObject({ record: record2, depth, budget }) {
|
|
66498
|
+
const redactedEntries = /* @__PURE__ */ new Map();
|
|
66499
|
+
let entryCount = 0;
|
|
66500
|
+
for (const key in record2) {
|
|
66501
|
+
if (!Object.hasOwn(record2, key)) {
|
|
66502
|
+
continue;
|
|
66503
|
+
}
|
|
66504
|
+
entryCount += 1;
|
|
66505
|
+
if (entryCount > MAX_CONTAINER_ENTRIES) {
|
|
66506
|
+
return record2;
|
|
66507
|
+
}
|
|
66508
|
+
if (budget.remainingNodes <= 0) {
|
|
66509
|
+
break;
|
|
66510
|
+
}
|
|
66511
|
+
const nestedValue = record2[key];
|
|
66512
|
+
const redactedNestedValue = isRedactedKey({ key }) && nestedValue != null ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
66513
|
+
if (redactedNestedValue !== nestedValue) {
|
|
66514
|
+
redactedEntries.set(key, redactedNestedValue);
|
|
66515
|
+
}
|
|
66516
|
+
}
|
|
66517
|
+
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
66518
|
+
}
|
|
66519
|
+
function redactString({ text, budget }) {
|
|
66520
|
+
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
66521
|
+
return text;
|
|
66522
|
+
}
|
|
66523
|
+
const trimmedText = text.trim();
|
|
66524
|
+
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
66525
|
+
try {
|
|
66526
|
+
const parsedValue = JSON.parse(trimmedText);
|
|
66527
|
+
const redactedValue = redactValue({
|
|
66528
|
+
value: parsedValue,
|
|
66529
|
+
depth: MAX_REDACTION_DEPTH,
|
|
66530
|
+
budget
|
|
66531
|
+
});
|
|
66532
|
+
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
66533
|
+
} catch {
|
|
66534
|
+
return text;
|
|
66535
|
+
}
|
|
66536
|
+
}
|
|
66537
|
+
return redactFormEncoded({ text }) ?? text;
|
|
66538
|
+
}
|
|
66539
|
+
function redactFormEncoded({ text }) {
|
|
66540
|
+
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
66541
|
+
return void 0;
|
|
66542
|
+
}
|
|
66543
|
+
const params = new URLSearchParams(text);
|
|
66544
|
+
let hasRedactedParam = false;
|
|
66545
|
+
for (const key of new Set(params.keys())) {
|
|
66546
|
+
if (isRedactedKey({ key })) {
|
|
66547
|
+
params.set(key, REDACTED_VALUE);
|
|
66548
|
+
hasRedactedParam = true;
|
|
66549
|
+
}
|
|
66550
|
+
}
|
|
66551
|
+
return hasRedactedParam ? params.toString() : void 0;
|
|
66552
|
+
}
|
|
66553
|
+
function isRedactedKey({ key }) {
|
|
66554
|
+
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
66555
|
+
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
66556
|
+
}
|
|
66557
|
+
function isPlainObject2(value) {
|
|
66558
|
+
if (typeof value !== "object" || value === null) {
|
|
66559
|
+
return false;
|
|
66560
|
+
}
|
|
66561
|
+
const prototype = Object.getPrototypeOf(value);
|
|
66562
|
+
return prototype === Object.prototype || prototype === null;
|
|
66563
|
+
}
|
|
66564
|
+
|
|
66565
|
+
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
65958
66566
|
import { AxiosError } from "axios";
|
|
65959
66567
|
var recommendedRetryConfig = {
|
|
65960
66568
|
retries: 3,
|
|
@@ -66022,13 +66630,14 @@ function isTooManyRequestsError(error48) {
|
|
|
66022
66630
|
return error48.response?.status === 429;
|
|
66023
66631
|
}
|
|
66024
66632
|
var toLogRequest = (config4) => {
|
|
66633
|
+
const url2 = redactLogUrl({ url: config4.url ?? "" });
|
|
66025
66634
|
return {
|
|
66026
66635
|
method: config4.method ?? "",
|
|
66027
|
-
url:
|
|
66028
|
-
path:
|
|
66636
|
+
url: url2,
|
|
66637
|
+
path: url2,
|
|
66029
66638
|
hostname: config4.baseURL ?? "",
|
|
66030
|
-
originalUrl: `${config4.baseURL ?? ""}${
|
|
66031
|
-
body: config4.data,
|
|
66639
|
+
originalUrl: `${config4.baseURL ?? ""}${url2}`,
|
|
66640
|
+
body: redactLogBody({ body: config4.data }),
|
|
66032
66641
|
headers: {}
|
|
66033
66642
|
};
|
|
66034
66643
|
};
|