@hyperline/cli 0.1.0-build.1.f3906be → 0.1.0-build.1.f5418f4
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 +1355 -645
- 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);
|
|
@@ -34985,10 +34985,10 @@ var require_shared = __commonJS({
|
|
|
34985
34985
|
ZodId: () => ZodId,
|
|
34986
34986
|
ZodTranslationsSchemaFn: () => ZodTranslationsSchemaFn
|
|
34987
34987
|
});
|
|
34988
|
-
var
|
|
34988
|
+
var import_zod22 = require_lib();
|
|
34989
34989
|
var countryIds2 = ["all", ...countries.map(({ id }) => id)];
|
|
34990
|
-
var ZodId =
|
|
34991
|
-
var ZodTranslationsSchemaFn = (schema) =>
|
|
34990
|
+
var ZodId = import_zod22.z.enum(countryIds2);
|
|
34991
|
+
var ZodTranslationsSchemaFn = (schema) => import_zod22.z.record(import_zod22.z.string(), schema.optional());
|
|
34992
34992
|
var UsStates = [
|
|
34993
34993
|
{ id: "AA", name: "Armed Forces Americas" },
|
|
34994
34994
|
{ id: "AE", name: "Armed Forces Europe" },
|
|
@@ -36287,14 +36287,14 @@ var require_shared = __commonJS({
|
|
|
36287
36287
|
ZodNumberCurrencyPositiveValue: () => ZodNumberCurrencyPositiveValue,
|
|
36288
36288
|
ZodNumberCurrencyPositiveValueExcludingZero: () => ZodNumberCurrencyPositiveValueExcludingZero
|
|
36289
36289
|
});
|
|
36290
|
-
var
|
|
36291
|
-
var ZodCurrencyId =
|
|
36290
|
+
var import_zod23 = require_lib();
|
|
36291
|
+
var ZodCurrencyId = import_zod23.z.enum(
|
|
36292
36292
|
all_default.map(({ id }) => id)
|
|
36293
36293
|
);
|
|
36294
|
-
var ZodNumberCurrency =
|
|
36295
|
-
var ZodNumberCurrencyPositiveValue =
|
|
36296
|
-
var ZodNumberCurrencyPositiveValueExcludingZero =
|
|
36297
|
-
var ZodCurrencyMap =
|
|
36294
|
+
var ZodNumberCurrency = import_zod23.z.string().or(import_zod23.z.number().transform((number4) => number4)).transform((number4) => number4);
|
|
36295
|
+
var ZodNumberCurrencyPositiveValue = import_zod23.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
|
|
36296
|
+
var ZodNumberCurrencyPositiveValueExcludingZero = import_zod23.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
|
|
36297
|
+
var ZodCurrencyMap = import_zod23.z.record(ZodNumberCurrency).refine(
|
|
36298
36298
|
(data) => Object.keys(data).every((key) => ZodCurrencyId.safeParse(key).success),
|
|
36299
36299
|
{
|
|
36300
36300
|
message: "Invalid currency key.",
|
|
@@ -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 (
|
|
39011
|
+
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39017
39012
|
Examples:
|
|
39018
39013
|
hyperline accounting-rules create --category <category> --priority <priority>
|
|
39019
39014
|
hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
|
|
@@ -39052,8 +39047,24 @@ Examples:
|
|
|
39052
39047
|
args.output_tax_ledger_account_id = opts.outputTaxLedgerAccountId;
|
|
39053
39048
|
if (opts.uncollectibleDebitLedgerAccountId !== void 0)
|
|
39054
39049
|
args.uncollectible_debit_ledger_account_id = opts.uncollectibleDebitLedgerAccountId;
|
|
39050
|
+
if (opts.allowanceForDoubtfulAccountsId !== void 0)
|
|
39051
|
+
args.allowance_for_doubtful_accounts_id = opts.allowanceForDoubtfulAccountsId;
|
|
39052
|
+
if (opts.providerFeesExpenseLedgerAccountId !== void 0)
|
|
39053
|
+
args.provider_fees_expense_ledger_account_id = opts.providerFeesExpenseLedgerAccountId;
|
|
39054
|
+
if (opts.paymentProcessingFeesExpenseLedgerAccountId !== void 0)
|
|
39055
|
+
args.payment_processing_fees_expense_ledger_account_id = opts.paymentProcessingFeesExpenseLedgerAccountId;
|
|
39056
|
+
if (opts.paymentProcessingFeesRevenueLedgerAccountId !== void 0)
|
|
39057
|
+
args.payment_processing_fees_revenue_ledger_account_id = opts.paymentProcessingFeesRevenueLedgerAccountId;
|
|
39055
39058
|
if (opts.customerCreditsLedgerAccountId !== void 0)
|
|
39056
39059
|
args.customer_credits_ledger_account_id = opts.customerCreditsLedgerAccountId;
|
|
39060
|
+
if (opts.revRecMethod !== void 0)
|
|
39061
|
+
args.rev_rec_method = opts.revRecMethod;
|
|
39062
|
+
if (opts.revRecGranularity !== void 0)
|
|
39063
|
+
args.rev_rec_granularity = opts.revRecGranularity;
|
|
39064
|
+
if (opts.revRecPointInTimeBasis !== void 0)
|
|
39065
|
+
args.rev_rec_point_in_time_basis = opts.revRecPointInTimeBasis;
|
|
39066
|
+
if (opts.discountRecognitionMethod !== void 0)
|
|
39067
|
+
args.discount_recognition_method = opts.discountRecognitionMethod;
|
|
39057
39068
|
if (opts.journalId !== void 0)
|
|
39058
39069
|
args.journal_id = opts.journalId;
|
|
39059
39070
|
if (opts.entityType !== void 0)
|
|
@@ -39072,12 +39083,24 @@ Examples:
|
|
|
39072
39083
|
args.currencies = JSON.parse(opts.currencies);
|
|
39073
39084
|
if (opts.countries !== void 0)
|
|
39074
39085
|
args.countries = JSON.parse(opts.countries);
|
|
39086
|
+
if (opts.taxSchemes !== void 0)
|
|
39087
|
+
args.tax_schemes = JSON.parse(opts.taxSchemes);
|
|
39088
|
+
if (opts.taxTerritories !== void 0)
|
|
39089
|
+
args.tax_territories = JSON.parse(opts.taxTerritories);
|
|
39090
|
+
if (opts.taxRateClasses !== void 0)
|
|
39091
|
+
args.tax_rate_classes = JSON.parse(opts.taxRateClasses);
|
|
39075
39092
|
if (opts.couponIds !== void 0)
|
|
39076
39093
|
args.coupon_ids = JSON.parse(opts.couponIds);
|
|
39077
39094
|
if (opts.clientProviderIds !== void 0)
|
|
39078
39095
|
args.client_provider_ids = JSON.parse(opts.clientProviderIds);
|
|
39079
39096
|
if (opts.paymentMethodTypes !== void 0)
|
|
39080
39097
|
args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
|
|
39098
|
+
if (opts.bankAccountIds !== void 0)
|
|
39099
|
+
args.bank_account_ids = JSON.parse(opts.bankAccountIds);
|
|
39100
|
+
if (opts.invoiceTypes !== void 0)
|
|
39101
|
+
args.invoice_types = JSON.parse(opts.invoiceTypes);
|
|
39102
|
+
if (opts.customPropertyFilters !== void 0)
|
|
39103
|
+
args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
|
|
39081
39104
|
await ctx.execute({
|
|
39082
39105
|
method: "POST",
|
|
39083
39106
|
path: "/v1/accounting/rules",
|
|
@@ -39085,7 +39108,7 @@ Examples:
|
|
|
39085
39108
|
queryParamKeys: []
|
|
39086
39109
|
});
|
|
39087
39110
|
});
|
|
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
|
|
39111
|
+
resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39089
39112
|
Examples:
|
|
39090
39113
|
hyperline accounting-rules update --id <id>
|
|
39091
39114
|
hyperline accounting-rules update --id <id> --name <name> --category <category>
|
|
@@ -39124,8 +39147,24 @@ Examples:
|
|
|
39124
39147
|
args.output_tax_ledger_account_id = opts.outputTaxLedgerAccountId;
|
|
39125
39148
|
if (opts.uncollectibleDebitLedgerAccountId !== void 0)
|
|
39126
39149
|
args.uncollectible_debit_ledger_account_id = opts.uncollectibleDebitLedgerAccountId;
|
|
39150
|
+
if (opts.allowanceForDoubtfulAccountsId !== void 0)
|
|
39151
|
+
args.allowance_for_doubtful_accounts_id = opts.allowanceForDoubtfulAccountsId;
|
|
39152
|
+
if (opts.providerFeesExpenseLedgerAccountId !== void 0)
|
|
39153
|
+
args.provider_fees_expense_ledger_account_id = opts.providerFeesExpenseLedgerAccountId;
|
|
39154
|
+
if (opts.paymentProcessingFeesExpenseLedgerAccountId !== void 0)
|
|
39155
|
+
args.payment_processing_fees_expense_ledger_account_id = opts.paymentProcessingFeesExpenseLedgerAccountId;
|
|
39156
|
+
if (opts.paymentProcessingFeesRevenueLedgerAccountId !== void 0)
|
|
39157
|
+
args.payment_processing_fees_revenue_ledger_account_id = opts.paymentProcessingFeesRevenueLedgerAccountId;
|
|
39127
39158
|
if (opts.customerCreditsLedgerAccountId !== void 0)
|
|
39128
39159
|
args.customer_credits_ledger_account_id = opts.customerCreditsLedgerAccountId;
|
|
39160
|
+
if (opts.revRecMethod !== void 0)
|
|
39161
|
+
args.rev_rec_method = opts.revRecMethod;
|
|
39162
|
+
if (opts.revRecGranularity !== void 0)
|
|
39163
|
+
args.rev_rec_granularity = opts.revRecGranularity;
|
|
39164
|
+
if (opts.revRecPointInTimeBasis !== void 0)
|
|
39165
|
+
args.rev_rec_point_in_time_basis = opts.revRecPointInTimeBasis;
|
|
39166
|
+
if (opts.discountRecognitionMethod !== void 0)
|
|
39167
|
+
args.discount_recognition_method = opts.discountRecognitionMethod;
|
|
39129
39168
|
if (opts.journalId !== void 0)
|
|
39130
39169
|
args.journal_id = opts.journalId;
|
|
39131
39170
|
if (opts.entityType !== void 0)
|
|
@@ -39144,12 +39183,24 @@ Examples:
|
|
|
39144
39183
|
args.currencies = JSON.parse(opts.currencies);
|
|
39145
39184
|
if (opts.countries !== void 0)
|
|
39146
39185
|
args.countries = JSON.parse(opts.countries);
|
|
39186
|
+
if (opts.taxSchemes !== void 0)
|
|
39187
|
+
args.tax_schemes = JSON.parse(opts.taxSchemes);
|
|
39188
|
+
if (opts.taxTerritories !== void 0)
|
|
39189
|
+
args.tax_territories = JSON.parse(opts.taxTerritories);
|
|
39190
|
+
if (opts.taxRateClasses !== void 0)
|
|
39191
|
+
args.tax_rate_classes = JSON.parse(opts.taxRateClasses);
|
|
39147
39192
|
if (opts.couponIds !== void 0)
|
|
39148
39193
|
args.coupon_ids = JSON.parse(opts.couponIds);
|
|
39149
39194
|
if (opts.clientProviderIds !== void 0)
|
|
39150
39195
|
args.client_provider_ids = JSON.parse(opts.clientProviderIds);
|
|
39151
39196
|
if (opts.paymentMethodTypes !== void 0)
|
|
39152
39197
|
args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
|
|
39198
|
+
if (opts.bankAccountIds !== void 0)
|
|
39199
|
+
args.bank_account_ids = JSON.parse(opts.bankAccountIds);
|
|
39200
|
+
if (opts.invoiceTypes !== void 0)
|
|
39201
|
+
args.invoice_types = JSON.parse(opts.invoiceTypes);
|
|
39202
|
+
if (opts.customPropertyFilters !== void 0)
|
|
39203
|
+
args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
|
|
39153
39204
|
await ctx.execute({
|
|
39154
39205
|
method: "PUT",
|
|
39155
39206
|
path: "/v1/accounting/rules/{id}",
|
|
@@ -39183,7 +39234,7 @@ Examples:
|
|
|
39183
39234
|
queryParamKeys: []
|
|
39184
39235
|
});
|
|
39185
39236
|
});
|
|
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 (
|
|
39237
|
+
resource.command("resolve").description(`Preview which account codes would be resolved for a given context.`).requiredOption("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).option("--product-id <value>", `Product ID to resolve against.`).option("--product-type <value>", `Product type to resolve against.`).option("--currency <value>", `Currency code to resolve against.`).option("--country <value>", `Country code to resolve against.`).option("--tax-scheme <value>", `Tax scheme to resolve against.`).option("--tax-territory <value>", `Tax territory country code to resolve against.`).option("--tax-rate-class <value>", `Tax rate class to resolve against.`).option("--customer-id <value>", `Customer ID to resolve against.`).option("--coupon-id <value>", `Coupon ID to resolve against.`).option("--client-provider-id <value>", `Client provider ID to resolve against.`).option("--payment-method-type <value>", `Payment method type to resolve against.`).option("--bank-account-id <value>", `Bank account ID to resolve against.`).option("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-properties <json>", `Invoice custom property values to resolve against, keyed by custom property slug. Unknown slugs and null values are ignored. Rules with custom property filters never match without them.`).addHelpText("after", `
|
|
39187
39238
|
Examples:
|
|
39188
39239
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category>
|
|
39189
39240
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category> --product-id <product_id> --product-type <product_type>
|
|
@@ -39206,14 +39257,30 @@ Examples:
|
|
|
39206
39257
|
args.currency = opts.currency;
|
|
39207
39258
|
if (opts.country !== void 0)
|
|
39208
39259
|
args.country = opts.country;
|
|
39260
|
+
if (opts.taxScheme !== void 0)
|
|
39261
|
+
args.tax_scheme = opts.taxScheme;
|
|
39262
|
+
if (opts.taxTerritory !== void 0)
|
|
39263
|
+
args.tax_territory = opts.taxTerritory;
|
|
39264
|
+
if (opts.taxRateClass !== void 0)
|
|
39265
|
+
args.tax_rate_class = opts.taxRateClass;
|
|
39209
39266
|
if (opts.customerId !== void 0)
|
|
39210
39267
|
args.customer_id = opts.customerId;
|
|
39268
|
+
if (opts.couponId !== void 0)
|
|
39269
|
+
args.coupon_id = opts.couponId;
|
|
39270
|
+
if (opts.clientProviderId !== void 0)
|
|
39271
|
+
args.client_provider_id = opts.clientProviderId;
|
|
39272
|
+
if (opts.paymentMethodType !== void 0)
|
|
39273
|
+
args.payment_method_type = opts.paymentMethodType;
|
|
39274
|
+
if (opts.bankAccountId !== void 0)
|
|
39275
|
+
args.bank_account_id = opts.bankAccountId;
|
|
39211
39276
|
if (opts.invoiceType !== void 0)
|
|
39212
39277
|
args.invoice_type = opts.invoiceType;
|
|
39213
39278
|
if (opts.intervalPeriod !== void 0)
|
|
39214
39279
|
args.interval_period = opts.intervalPeriod;
|
|
39215
39280
|
if (opts.intervalCount !== void 0)
|
|
39216
39281
|
args.interval_count = Number(opts.intervalCount);
|
|
39282
|
+
if (opts.customProperties !== void 0)
|
|
39283
|
+
args.custom_properties = JSON.parse(opts.customProperties);
|
|
39217
39284
|
await ctx.execute({
|
|
39218
39285
|
method: "POST",
|
|
39219
39286
|
path: "/v1/accounting/rules/resolve",
|
|
@@ -39223,164 +39290,158 @@ Examples:
|
|
|
39223
39290
|
});
|
|
39224
39291
|
}
|
|
39225
39292
|
|
|
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", `
|
|
39293
|
+
// build/commands/generated/aggregators.js
|
|
39294
|
+
function registerAggregatorsCommands(parent) {
|
|
39295
|
+
const resource = parent.command("aggregators").description("Manage aggregators");
|
|
39296
|
+
resource.command("list").description(`List all aggregators with pagination. Aggregators define how billable events are counted or summed to compute usage.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39234
39297
|
Examples:
|
|
39235
|
-
hyperline
|
|
39236
|
-
hyperline
|
|
39298
|
+
hyperline aggregators list
|
|
39299
|
+
hyperline aggregators list --take <take>`).action(async (opts) => {
|
|
39237
39300
|
const ctx = resource.parent?.opts()._ctx;
|
|
39238
39301
|
if (!ctx) {
|
|
39239
39302
|
process.stderr.write("Error: Not authenticated\n");
|
|
39240
39303
|
process.exit(1);
|
|
39241
39304
|
}
|
|
39242
39305
|
const args = {};
|
|
39243
|
-
if (opts.mode !== void 0)
|
|
39244
|
-
args.mode = opts.mode;
|
|
39245
39306
|
if (opts.take !== void 0)
|
|
39246
39307
|
args.take = Number(opts.take);
|
|
39247
39308
|
if (opts.skip !== void 0)
|
|
39248
39309
|
args.skip = Number(opts.skip);
|
|
39249
39310
|
await ctx.execute({
|
|
39250
39311
|
method: "GET",
|
|
39251
|
-
path: "/v1/
|
|
39312
|
+
path: "/v1/aggregators",
|
|
39252
39313
|
args,
|
|
39253
|
-
queryParamKeys: ["
|
|
39314
|
+
queryParamKeys: ["take", "skip"]
|
|
39254
39315
|
});
|
|
39255
39316
|
});
|
|
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", `
|
|
39317
|
+
resource.command("create").description(`Create a new aggregator that counts or sums billable events. Aggregators can then be linked to products via aggregator_id.`).requiredOption("--entity <value>", `The billable event entity to aggregate.`).option("--type <value>", `The type of aggregator.`).option("--where <json>", `Filter conditions for the aggregation.`).option("--name <value>", `Name of the aggregator.`).option("--description <value>", `Description of the aggregator.`).option("--allow-negative-values", `Whether the aggregator can produce negative values.`).option("--aggregate-on-customers-enabled", `Whether the aggregator should aggregate on customers.`).option("--custom-event-name <value>", `Custom event name for the aggregator.`).option("--exposed-event-keys <json>", `Event keys exposed by the aggregator.`).option("--unit-name <value>", `Display name of the unit being measured (e.g. 'user', 'request'). Used as fallback for products attached to this aggregator.`).option("--default-interval-count <number>", `Default interval count for usage periods.`).option("--default-interval-period <value>", `Default interval period for usage periods.`).option("--thresholds <json>", `Thresholds for the aggregator.`).requiredOption("--operation <value>", `The aggregation operation to perform.`).option("--property <value>", `The property to sum.`).addHelpText("after", `
|
|
39266
39318
|
Examples:
|
|
39267
|
-
hyperline
|
|
39268
|
-
hyperline
|
|
39269
|
-
hyperline
|
|
39319
|
+
hyperline aggregators create --entity <entity> --operation <operation>
|
|
39320
|
+
hyperline aggregators create --entity <entity> --operation <operation> --type <type> --where <where>
|
|
39321
|
+
hyperline aggregators create --entity <entity> --operation <operation> --output json`).action(async (opts) => {
|
|
39270
39322
|
const ctx = resource.parent?.opts()._ctx;
|
|
39271
39323
|
if (!ctx) {
|
|
39272
39324
|
process.stderr.write("Error: Not authenticated\n");
|
|
39273
39325
|
process.exit(1);
|
|
39274
39326
|
}
|
|
39275
39327
|
const args = {};
|
|
39328
|
+
if (opts.entity !== void 0)
|
|
39329
|
+
args.entity = opts.entity;
|
|
39330
|
+
if (opts.type !== void 0)
|
|
39331
|
+
args.type = opts.type;
|
|
39276
39332
|
if (opts.name !== void 0)
|
|
39277
39333
|
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.
|
|
39334
|
+
if (opts.description !== void 0)
|
|
39335
|
+
args.description = opts.description;
|
|
39336
|
+
if (opts.customEventName !== void 0)
|
|
39337
|
+
args.custom_event_name = opts.customEventName;
|
|
39338
|
+
if (opts.unitName !== void 0)
|
|
39339
|
+
args.unit_name = opts.unitName;
|
|
39340
|
+
if (opts.defaultIntervalPeriod !== void 0)
|
|
39341
|
+
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
39342
|
+
if (opts.operation !== void 0)
|
|
39343
|
+
args.operation = opts.operation;
|
|
39344
|
+
if (opts.property !== void 0)
|
|
39345
|
+
args.property = opts.property;
|
|
39346
|
+
if (opts.defaultIntervalCount !== void 0)
|
|
39347
|
+
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
39348
|
+
if (opts.allowNegativeValues !== void 0)
|
|
39349
|
+
args.allow_negative_values = true;
|
|
39350
|
+
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
39351
|
+
args.aggregate_on_customers_enabled = true;
|
|
39352
|
+
if (opts.where !== void 0)
|
|
39353
|
+
args.where = JSON.parse(opts.where);
|
|
39354
|
+
if (opts.exposedEventKeys !== void 0)
|
|
39355
|
+
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
39356
|
+
if (opts.thresholds !== void 0)
|
|
39357
|
+
args.thresholds = JSON.parse(opts.thresholds);
|
|
39300
39358
|
await ctx.execute({
|
|
39301
39359
|
method: "POST",
|
|
39302
|
-
path: "/v1/
|
|
39360
|
+
path: "/v1/aggregators",
|
|
39303
39361
|
args,
|
|
39304
39362
|
queryParamKeys: []
|
|
39305
39363
|
});
|
|
39306
39364
|
});
|
|
39307
|
-
resource.command("get
|
|
39365
|
+
resource.command("get").description(`Retrieve a specific aggregator by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39308
39366
|
Examples:
|
|
39309
|
-
hyperline
|
|
39367
|
+
hyperline aggregators get --id <id>`).action(async (opts) => {
|
|
39310
39368
|
const ctx = resource.parent?.opts()._ctx;
|
|
39311
39369
|
if (!ctx) {
|
|
39312
39370
|
process.stderr.write("Error: Not authenticated\n");
|
|
39313
39371
|
process.exit(1);
|
|
39314
39372
|
}
|
|
39315
39373
|
const args = {};
|
|
39316
|
-
if (opts.
|
|
39317
|
-
args.
|
|
39374
|
+
if (opts.id !== void 0)
|
|
39375
|
+
args.id = opts.id;
|
|
39318
39376
|
await ctx.execute({
|
|
39319
39377
|
method: "GET",
|
|
39320
|
-
path: "/v1/
|
|
39378
|
+
path: "/v1/aggregators/{id}",
|
|
39321
39379
|
args,
|
|
39322
39380
|
queryParamKeys: []
|
|
39323
39381
|
});
|
|
39324
39382
|
});
|
|
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", `
|
|
39383
|
+
resource.command("update").description(`Update an existing aggregator's configuration.`).requiredOption("--id <value>", `id parameter`).option("--entity <value>", `The billable event entity to aggregate.`).option("--type <value>", `The type of aggregator.`).option("--where <json>", `Filter conditions for the aggregation.`).option("--name <value>", `Name of the aggregator.`).option("--description <value>", `Description of the aggregator.`).option("--allow-negative-values", `Whether the aggregator can produce negative values.`).option("--aggregate-on-customers-enabled", `Whether the aggregator should aggregate on customers.`).option("--custom-event-name <value>", `Custom event name for the aggregator.`).option("--exposed-event-keys <json>", `Event keys exposed by the aggregator.`).option("--unit-name <value>", `Display name of the unit being measured (e.g. 'user', 'request'). Used as fallback for products attached to this aggregator.`).option("--default-interval-count <number>", `Default interval count for usage periods.`).option("--default-interval-period <value>", `Default interval period for usage periods.`).option("--thresholds <json>", `Thresholds for the aggregator. Replaces existing thresholds.`).option("--operation <value>", `The aggregation operation to perform.`).option("--property <value>", `The property to sum. Required when operation is 'sum'.`).addHelpText("after", `
|
|
39331
39384
|
Examples:
|
|
39332
|
-
hyperline
|
|
39333
|
-
hyperline
|
|
39334
|
-
hyperline
|
|
39385
|
+
hyperline aggregators update --id <id>
|
|
39386
|
+
hyperline aggregators update --id <id> --entity <entity> --type <type>
|
|
39387
|
+
hyperline aggregators update --id <id> --output json`).action(async (opts) => {
|
|
39335
39388
|
const ctx = resource.parent?.opts()._ctx;
|
|
39336
39389
|
if (!ctx) {
|
|
39337
39390
|
process.stderr.write("Error: Not authenticated\n");
|
|
39338
39391
|
process.exit(1);
|
|
39339
39392
|
}
|
|
39340
39393
|
const args = {};
|
|
39341
|
-
if (opts.
|
|
39342
|
-
args.
|
|
39394
|
+
if (opts.id !== void 0)
|
|
39395
|
+
args.id = opts.id;
|
|
39396
|
+
if (opts.entity !== void 0)
|
|
39397
|
+
args.entity = opts.entity;
|
|
39398
|
+
if (opts.type !== void 0)
|
|
39399
|
+
args.type = opts.type;
|
|
39343
39400
|
if (opts.name !== void 0)
|
|
39344
39401
|
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.
|
|
39402
|
+
if (opts.description !== void 0)
|
|
39403
|
+
args.description = opts.description;
|
|
39404
|
+
if (opts.customEventName !== void 0)
|
|
39405
|
+
args.custom_event_name = opts.customEventName;
|
|
39406
|
+
if (opts.unitName !== void 0)
|
|
39407
|
+
args.unit_name = opts.unitName;
|
|
39408
|
+
if (opts.defaultIntervalPeriod !== void 0)
|
|
39409
|
+
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
39410
|
+
if (opts.operation !== void 0)
|
|
39411
|
+
args.operation = opts.operation;
|
|
39412
|
+
if (opts.property !== void 0)
|
|
39413
|
+
args.property = opts.property;
|
|
39414
|
+
if (opts.defaultIntervalCount !== void 0)
|
|
39415
|
+
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
39416
|
+
if (opts.allowNegativeValues !== void 0)
|
|
39417
|
+
args.allow_negative_values = true;
|
|
39418
|
+
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
39419
|
+
args.aggregate_on_customers_enabled = true;
|
|
39420
|
+
if (opts.where !== void 0)
|
|
39421
|
+
args.where = JSON.parse(opts.where);
|
|
39422
|
+
if (opts.exposedEventKeys !== void 0)
|
|
39423
|
+
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
39424
|
+
if (opts.thresholds !== void 0)
|
|
39425
|
+
args.thresholds = JSON.parse(opts.thresholds);
|
|
39365
39426
|
await ctx.execute({
|
|
39366
39427
|
method: "PUT",
|
|
39367
|
-
path: "/v1/
|
|
39428
|
+
path: "/v1/aggregators/{id}",
|
|
39368
39429
|
args,
|
|
39369
39430
|
queryParamKeys: []
|
|
39370
39431
|
});
|
|
39371
39432
|
});
|
|
39372
|
-
resource.command("delete
|
|
39433
|
+
resource.command("delete").description(`Delete an aggregator by ID. Will fail if the aggregator is linked to a product.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39373
39434
|
Examples:
|
|
39374
|
-
hyperline
|
|
39375
|
-
hyperline
|
|
39435
|
+
hyperline aggregators delete --id <id>
|
|
39436
|
+
hyperline aggregators delete --id <id> --output json`).action(async (opts) => {
|
|
39376
39437
|
const ctx = resource.parent?.opts()._ctx;
|
|
39377
39438
|
if (!ctx) {
|
|
39378
39439
|
process.stderr.write("Error: Not authenticated\n");
|
|
39379
39440
|
process.exit(1);
|
|
39380
39441
|
}
|
|
39381
39442
|
const args = {};
|
|
39382
|
-
if (opts.
|
|
39383
|
-
args.
|
|
39443
|
+
if (opts.id !== void 0)
|
|
39444
|
+
args.id = opts.id;
|
|
39384
39445
|
if (!opts.yes) {
|
|
39385
39446
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39386
39447
|
if (!confirmed) {
|
|
@@ -39390,113 +39451,182 @@ Examples:
|
|
|
39390
39451
|
}
|
|
39391
39452
|
await ctx.execute({
|
|
39392
39453
|
method: "DELETE",
|
|
39393
|
-
path: "/v1/
|
|
39454
|
+
path: "/v1/aggregators/{id}",
|
|
39394
39455
|
args,
|
|
39395
39456
|
queryParamKeys: []
|
|
39396
39457
|
});
|
|
39397
39458
|
});
|
|
39398
|
-
|
|
39459
|
+
}
|
|
39460
|
+
|
|
39461
|
+
// build/commands/generated/aggregators-usage.js
|
|
39462
|
+
function registerAggregators_UsageCommands(parent) {
|
|
39463
|
+
const resource = parent.command("aggregators-usage").description("Manage aggregators > usage");
|
|
39464
|
+
resource.command("get-aggregator-usage").description(`Retrieve a usage row for an aggregator. Use the timeseries, group-by-customer or events endpoints to query metering data.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39399
39465
|
Examples:
|
|
39400
|
-
hyperline
|
|
39466
|
+
hyperline aggregators-usage get-aggregator-usage --id <id>`).action(async (opts) => {
|
|
39401
39467
|
const ctx = resource.parent?.opts()._ctx;
|
|
39402
39468
|
if (!ctx) {
|
|
39403
39469
|
process.stderr.write("Error: Not authenticated\n");
|
|
39404
39470
|
process.exit(1);
|
|
39405
39471
|
}
|
|
39406
39472
|
const args = {};
|
|
39473
|
+
if (opts.id !== void 0)
|
|
39474
|
+
args.id = opts.id;
|
|
39407
39475
|
await ctx.execute({
|
|
39408
39476
|
method: "GET",
|
|
39409
|
-
path: "/v1/
|
|
39477
|
+
path: "/v1/aggregators/{id}/usage",
|
|
39410
39478
|
args,
|
|
39411
39479
|
queryParamKeys: []
|
|
39412
39480
|
});
|
|
39413
39481
|
});
|
|
39414
|
-
resource.command("
|
|
39482
|
+
resource.command("get-aggregator-usage-timeseries").description(`Get client-wide usage for an aggregator bucketed by month/day/hour over a period.`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).option("--aggregator-filter-id <value>", `Optional aggregator filter ID. When set, restricts the result to events matching that filter's config. Must belong to the aggregator in the path.`).option("--group-by <value>", `Bucket size for the timeseries.`).addHelpText("after", `
|
|
39415
39483
|
Examples:
|
|
39416
|
-
hyperline
|
|
39417
|
-
hyperline
|
|
39418
|
-
hyperline agents set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39484
|
+
hyperline aggregators-usage get-aggregator-usage-timeseries --id <id>
|
|
39485
|
+
hyperline aggregators-usage get-aggregator-usage-timeseries --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39419
39486
|
const ctx = resource.parent?.opts()._ctx;
|
|
39420
39487
|
if (!ctx) {
|
|
39421
39488
|
process.stderr.write("Error: Not authenticated\n");
|
|
39422
39489
|
process.exit(1);
|
|
39423
39490
|
}
|
|
39424
39491
|
const args = {};
|
|
39425
|
-
if (opts.
|
|
39426
|
-
args.
|
|
39427
|
-
if (opts.
|
|
39428
|
-
args.
|
|
39492
|
+
if (opts.id !== void 0)
|
|
39493
|
+
args.id = opts.id;
|
|
39494
|
+
if (opts.startDate !== void 0)
|
|
39495
|
+
args.start_date = opts.startDate;
|
|
39496
|
+
if (opts.endDate !== void 0)
|
|
39497
|
+
args.end_date = opts.endDate;
|
|
39498
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39499
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39500
|
+
if (opts.groupBy !== void 0)
|
|
39501
|
+
args.group_by = opts.groupBy;
|
|
39429
39502
|
await ctx.execute({
|
|
39430
|
-
method: "
|
|
39431
|
-
path: "/v1/
|
|
39503
|
+
method: "GET",
|
|
39504
|
+
path: "/v1/aggregators/{id}/usage/timeseries",
|
|
39432
39505
|
args,
|
|
39433
|
-
queryParamKeys: [
|
|
39506
|
+
queryParamKeys: [
|
|
39507
|
+
"start_date",
|
|
39508
|
+
"end_date",
|
|
39509
|
+
"aggregator_filter_id",
|
|
39510
|
+
"group_by"
|
|
39511
|
+
]
|
|
39434
39512
|
});
|
|
39435
39513
|
});
|
|
39436
|
-
resource.command("
|
|
39514
|
+
resource.command("get-aggregator-usage-group-by-customer").description(`Per-customer total usage for an aggregator over a period, ranked by total. Paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).option("--aggregator-filter-id <value>", `Optional aggregator filter ID. When set, restricts the result to events matching that filter's config. Must belong to the aggregator in the path.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39437
39515
|
Examples:
|
|
39438
|
-
hyperline
|
|
39439
|
-
hyperline
|
|
39516
|
+
hyperline aggregators-usage get-aggregator-usage-group-by-customer --id <id>
|
|
39517
|
+
hyperline aggregators-usage get-aggregator-usage-group-by-customer --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39440
39518
|
const ctx = resource.parent?.opts()._ctx;
|
|
39441
39519
|
if (!ctx) {
|
|
39442
39520
|
process.stderr.write("Error: Not authenticated\n");
|
|
39443
39521
|
process.exit(1);
|
|
39444
39522
|
}
|
|
39445
39523
|
const args = {};
|
|
39446
|
-
if (
|
|
39447
|
-
|
|
39448
|
-
|
|
39449
|
-
|
|
39450
|
-
|
|
39451
|
-
|
|
39452
|
-
|
|
39524
|
+
if (opts.id !== void 0)
|
|
39525
|
+
args.id = opts.id;
|
|
39526
|
+
if (opts.startDate !== void 0)
|
|
39527
|
+
args.start_date = opts.startDate;
|
|
39528
|
+
if (opts.endDate !== void 0)
|
|
39529
|
+
args.end_date = opts.endDate;
|
|
39530
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39531
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39532
|
+
if (opts.take !== void 0)
|
|
39533
|
+
args.take = Number(opts.take);
|
|
39534
|
+
if (opts.skip !== void 0)
|
|
39535
|
+
args.skip = Number(opts.skip);
|
|
39453
39536
|
await ctx.execute({
|
|
39454
|
-
method: "
|
|
39455
|
-
path: "/v1/
|
|
39537
|
+
method: "GET",
|
|
39538
|
+
path: "/v1/aggregators/{id}/usage/group-by-customer",
|
|
39456
39539
|
args,
|
|
39457
|
-
queryParamKeys: [
|
|
39540
|
+
queryParamKeys: [
|
|
39541
|
+
"start_date",
|
|
39542
|
+
"end_date",
|
|
39543
|
+
"aggregator_filter_id",
|
|
39544
|
+
"take",
|
|
39545
|
+
"skip"
|
|
39546
|
+
]
|
|
39458
39547
|
});
|
|
39459
39548
|
});
|
|
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", `
|
|
39549
|
+
resource.command("get-aggregator-usage-events").description(`List raw billable events for an aggregator across every customer of the client. Paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).option("--aggregator-filter-id <value>", `Optional aggregator filter ID. When set, restricts the result to events matching that filter's config. Must belong to the aggregator in the path.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39465
39550
|
Examples:
|
|
39466
|
-
hyperline
|
|
39467
|
-
hyperline
|
|
39551
|
+
hyperline aggregators-usage get-aggregator-usage-events --id <id>
|
|
39552
|
+
hyperline aggregators-usage get-aggregator-usage-events --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39468
39553
|
const ctx = resource.parent?.opts()._ctx;
|
|
39469
39554
|
if (!ctx) {
|
|
39470
39555
|
process.stderr.write("Error: Not authenticated\n");
|
|
39471
39556
|
process.exit(1);
|
|
39472
39557
|
}
|
|
39473
39558
|
const args = {};
|
|
39474
|
-
if (opts.
|
|
39475
|
-
args.
|
|
39476
|
-
if (opts.
|
|
39477
|
-
args.
|
|
39478
|
-
if (opts.
|
|
39479
|
-
args.
|
|
39559
|
+
if (opts.id !== void 0)
|
|
39560
|
+
args.id = opts.id;
|
|
39561
|
+
if (opts.startDate !== void 0)
|
|
39562
|
+
args.start_date = opts.startDate;
|
|
39563
|
+
if (opts.endDate !== void 0)
|
|
39564
|
+
args.end_date = opts.endDate;
|
|
39565
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39566
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39480
39567
|
if (opts.take !== void 0)
|
|
39481
39568
|
args.take = Number(opts.take);
|
|
39482
39569
|
if (opts.skip !== void 0)
|
|
39483
39570
|
args.skip = Number(opts.skip);
|
|
39484
39571
|
await ctx.execute({
|
|
39485
39572
|
method: "GET",
|
|
39486
|
-
path: "/v1/
|
|
39573
|
+
path: "/v1/aggregators/{id}/usage/events",
|
|
39487
39574
|
args,
|
|
39488
|
-
queryParamKeys: [
|
|
39575
|
+
queryParamKeys: [
|
|
39576
|
+
"start_date",
|
|
39577
|
+
"end_date",
|
|
39578
|
+
"aggregator_filter_id",
|
|
39579
|
+
"take",
|
|
39580
|
+
"skip"
|
|
39581
|
+
]
|
|
39489
39582
|
});
|
|
39490
39583
|
});
|
|
39491
|
-
|
|
39584
|
+
}
|
|
39492
39585
|
|
|
39493
|
-
-
|
|
39494
|
-
|
|
39495
|
-
|
|
39586
|
+
// build/commands/generated/ai-billing.js
|
|
39587
|
+
function registerAi_BillingCommands(parent) {
|
|
39588
|
+
const resource = parent.command("ai-billing").description("Manage ai > billing");
|
|
39589
|
+
resource.command("list-agent-plans").description(`List AI agent billing plans: workspace-level offers carrying a billing mode (wallet/credits/windows), rate card, allowance windows, markups and per-seat credit grants. Filter by mode; paginated with take/skip.`).option("--mode <value>", `Billing mode.
|
|
39590
|
+
|
|
39591
|
+
- wallet: Charges a monetary wallet.
|
|
39592
|
+
- credits: Consumes a credit balance.
|
|
39593
|
+
- windows: Meters weighted units against rolling allowances.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39594
|
+
Examples:
|
|
39595
|
+
hyperline ai-billing list-agent-plans
|
|
39596
|
+
hyperline ai-billing list-agent-plans --mode <mode> --take <take>`).action(async (opts) => {
|
|
39597
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39598
|
+
if (!ctx) {
|
|
39599
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39600
|
+
process.exit(1);
|
|
39601
|
+
}
|
|
39602
|
+
const args = {};
|
|
39603
|
+
if (opts.mode !== void 0)
|
|
39604
|
+
args.mode = opts.mode;
|
|
39605
|
+
if (opts.take !== void 0)
|
|
39606
|
+
args.take = Number(opts.take);
|
|
39607
|
+
if (opts.skip !== void 0)
|
|
39608
|
+
args.skip = Number(opts.skip);
|
|
39609
|
+
await ctx.execute({
|
|
39610
|
+
method: "GET",
|
|
39611
|
+
path: "/v1/ai/billing/plans",
|
|
39612
|
+
args,
|
|
39613
|
+
queryParamKeys: ["mode", "take", "skip"]
|
|
39614
|
+
});
|
|
39615
|
+
});
|
|
39616
|
+
resource.command("create-agent-plan").description(`Create an AI agent billing plan: name, billing mode (wallet/credits/windows), rate card reference, allowance windows, markups, per-seat credit grants and overage stance. Past-limit usage is priced EITHER by overage_markup_percent over the base rates OR by overage_rate_card_id, a currency rate card whose own rates are the overage price \u2014 never both. Metered overage mints the plan's invoice container.`).requiredOption("--name <value>", `Human-readable resource name.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39617
|
+
|
|
39618
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39619
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39620
|
+
|
|
39621
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).requiredOption("--mode <value>", `Billing mode.
|
|
39622
|
+
|
|
39623
|
+
- wallet: Charges a monetary wallet.
|
|
39624
|
+
- credits: Consumes a credit balance.
|
|
39625
|
+
- windows: Meters weighted units against rolling allowances.`).addHelpText("after", `
|
|
39496
39626
|
Examples:
|
|
39497
|
-
hyperline
|
|
39498
|
-
hyperline
|
|
39499
|
-
hyperline
|
|
39627
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode>
|
|
39628
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39629
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --output json`).action(async (opts) => {
|
|
39500
39630
|
const ctx = resource.parent?.opts()._ctx;
|
|
39501
39631
|
if (!ctx) {
|
|
39502
39632
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39505,77 +39635,83 @@ Examples:
|
|
|
39505
39635
|
const args = {};
|
|
39506
39636
|
if (opts.name !== void 0)
|
|
39507
39637
|
args.name = opts.name;
|
|
39508
|
-
if (opts.
|
|
39509
|
-
args.
|
|
39510
|
-
if (opts.
|
|
39511
|
-
args.
|
|
39512
|
-
if (opts.
|
|
39513
|
-
args.
|
|
39514
|
-
if (opts.
|
|
39515
|
-
args.
|
|
39638
|
+
if (opts.rateCardId !== void 0)
|
|
39639
|
+
args.rate_card_id = opts.rateCardId;
|
|
39640
|
+
if (opts.overageMode !== void 0)
|
|
39641
|
+
args.overage_mode = opts.overageMode;
|
|
39642
|
+
if (opts.markupPercent !== void 0)
|
|
39643
|
+
args.markup_percent = opts.markupPercent;
|
|
39644
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39645
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39646
|
+
if (opts.overageRateCardId !== void 0)
|
|
39647
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39648
|
+
if (opts.perSeatCredits !== void 0)
|
|
39649
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39650
|
+
if (opts.settlementSchedule !== void 0)
|
|
39651
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39652
|
+
if (opts.mode !== void 0)
|
|
39653
|
+
args.mode = opts.mode;
|
|
39654
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39655
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39656
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39657
|
+
args.grant_rollover_enabled = true;
|
|
39658
|
+
if (opts.windows !== void 0)
|
|
39659
|
+
args.windows = JSON.parse(opts.windows);
|
|
39516
39660
|
await ctx.execute({
|
|
39517
39661
|
method: "POST",
|
|
39518
|
-
path: "/v1/
|
|
39662
|
+
path: "/v1/ai/billing/plans",
|
|
39519
39663
|
args,
|
|
39520
39664
|
queryParamKeys: []
|
|
39521
39665
|
});
|
|
39522
39666
|
});
|
|
39523
|
-
resource.command("get-agent-
|
|
39667
|
+
resource.command("get-agent-default-plan").description(`Get the workspace's default AI agent billing plan marker (plan id and auto_apply flag). 404 when none is set.`).addHelpText("after", `
|
|
39524
39668
|
Examples:
|
|
39525
|
-
hyperline
|
|
39669
|
+
hyperline ai-billing get-agent-default-plan`).action(async (_opts) => {
|
|
39526
39670
|
const ctx = resource.parent?.opts()._ctx;
|
|
39527
39671
|
if (!ctx) {
|
|
39528
39672
|
process.stderr.write("Error: Not authenticated\n");
|
|
39529
39673
|
process.exit(1);
|
|
39530
39674
|
}
|
|
39531
39675
|
const args = {};
|
|
39532
|
-
if (opts.rateCardId !== void 0)
|
|
39533
|
-
args.rate_card_id = opts.rateCardId;
|
|
39534
39676
|
await ctx.execute({
|
|
39535
39677
|
method: "GET",
|
|
39536
|
-
path: "/v1/
|
|
39678
|
+
path: "/v1/ai/billing/plans/default",
|
|
39537
39679
|
args,
|
|
39538
39680
|
queryParamKeys: []
|
|
39539
39681
|
});
|
|
39540
39682
|
});
|
|
39541
|
-
resource.command("
|
|
39683
|
+
resource.command("set-agent-default-plan").description(`Mark one plan as the workspace's default AI agent billing plan (body: plan_id, optional auto_apply). Replaces the previous marker; 404 when the plan is not this workspace's.`).requiredOption("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).option("--auto-apply", `Whether eligible newly ingested customers receive the default plan automatically.`).addHelpText("after", `
|
|
39542
39684
|
Examples:
|
|
39543
|
-
hyperline
|
|
39544
|
-
hyperline
|
|
39545
|
-
hyperline
|
|
39685
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id>
|
|
39686
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --auto-apply
|
|
39687
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39546
39688
|
const ctx = resource.parent?.opts()._ctx;
|
|
39547
39689
|
if (!ctx) {
|
|
39548
39690
|
process.stderr.write("Error: Not authenticated\n");
|
|
39549
39691
|
process.exit(1);
|
|
39550
39692
|
}
|
|
39551
39693
|
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);
|
|
39694
|
+
if (opts.planId !== void 0)
|
|
39695
|
+
args.plan_id = opts.planId;
|
|
39696
|
+
if (opts.autoApply !== void 0)
|
|
39697
|
+
args.auto_apply = true;
|
|
39560
39698
|
await ctx.execute({
|
|
39561
39699
|
method: "PUT",
|
|
39562
|
-
path: "/v1/
|
|
39700
|
+
path: "/v1/ai/billing/plans/default",
|
|
39563
39701
|
args,
|
|
39564
39702
|
queryParamKeys: []
|
|
39565
39703
|
});
|
|
39566
39704
|
});
|
|
39567
|
-
resource.command("
|
|
39705
|
+
resource.command("clear-agent-default-plan").description(`Clear the workspace's default AI agent billing plan marker. The plan itself is untouched. 404 when none is set.`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39568
39706
|
Examples:
|
|
39569
|
-
hyperline
|
|
39570
|
-
hyperline
|
|
39707
|
+
hyperline ai-billing clear-agent-default-plan
|
|
39708
|
+
hyperline ai-billing clear-agent-default-plan --output json`).action(async (opts) => {
|
|
39571
39709
|
const ctx = resource.parent?.opts()._ctx;
|
|
39572
39710
|
if (!ctx) {
|
|
39573
39711
|
process.stderr.write("Error: Not authenticated\n");
|
|
39574
39712
|
process.exit(1);
|
|
39575
39713
|
}
|
|
39576
39714
|
const args = {};
|
|
39577
|
-
if (opts.rateCardId !== void 0)
|
|
39578
|
-
args.rate_card_id = opts.rateCardId;
|
|
39579
39715
|
if (!opts.yes) {
|
|
39580
39716
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39581
39717
|
if (!confirmed) {
|
|
@@ -39585,139 +39721,221 @@ Examples:
|
|
|
39585
39721
|
}
|
|
39586
39722
|
await ctx.execute({
|
|
39587
39723
|
method: "DELETE",
|
|
39588
|
-
path: "/v1/
|
|
39724
|
+
path: "/v1/ai/billing/plans/default",
|
|
39589
39725
|
args,
|
|
39590
39726
|
queryParamKeys: []
|
|
39591
39727
|
});
|
|
39592
39728
|
});
|
|
39593
|
-
resource.command("
|
|
39729
|
+
resource.command("get-agent-plan").description(`Get one AI agent billing plan by id, with its embedded rate card, window definitions, markups, per-seat grants and minted catalog object ids.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39594
39730
|
Examples:
|
|
39595
|
-
hyperline
|
|
39731
|
+
hyperline ai-billing get-agent-plan --id <id>`).action(async (opts) => {
|
|
39596
39732
|
const ctx = resource.parent?.opts()._ctx;
|
|
39597
39733
|
if (!ctx) {
|
|
39598
39734
|
process.stderr.write("Error: Not authenticated\n");
|
|
39599
39735
|
process.exit(1);
|
|
39600
39736
|
}
|
|
39601
39737
|
const args = {};
|
|
39738
|
+
if (opts.id !== void 0)
|
|
39739
|
+
args.id = opts.id;
|
|
39602
39740
|
await ctx.execute({
|
|
39603
39741
|
method: "GET",
|
|
39604
|
-
path: "/v1/
|
|
39742
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39743
|
+
args,
|
|
39744
|
+
queryParamKeys: []
|
|
39745
|
+
});
|
|
39746
|
+
});
|
|
39747
|
+
resource.command("replace-agent-plan").description(`Replace an AI agent billing plan (whole-row semantics). Changes take effect on the next call for every customer on the plan; mode is immutable. Overage is priced by overage_markup_percent or by overage_rate_card_id, never both.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Human-readable resource name.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39748
|
+
|
|
39749
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39750
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39751
|
+
|
|
39752
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39753
|
+
Examples:
|
|
39754
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name>
|
|
39755
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39756
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --output json`).action(async (opts) => {
|
|
39757
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39758
|
+
if (!ctx) {
|
|
39759
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39760
|
+
process.exit(1);
|
|
39761
|
+
}
|
|
39762
|
+
const args = {};
|
|
39763
|
+
if (opts.id !== void 0)
|
|
39764
|
+
args.id = opts.id;
|
|
39765
|
+
if (opts.name !== void 0)
|
|
39766
|
+
args.name = opts.name;
|
|
39767
|
+
if (opts.rateCardId !== void 0)
|
|
39768
|
+
args.rate_card_id = opts.rateCardId;
|
|
39769
|
+
if (opts.overageMode !== void 0)
|
|
39770
|
+
args.overage_mode = opts.overageMode;
|
|
39771
|
+
if (opts.markupPercent !== void 0)
|
|
39772
|
+
args.markup_percent = opts.markupPercent;
|
|
39773
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39774
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39775
|
+
if (opts.overageRateCardId !== void 0)
|
|
39776
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39777
|
+
if (opts.perSeatCredits !== void 0)
|
|
39778
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39779
|
+
if (opts.settlementSchedule !== void 0)
|
|
39780
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39781
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39782
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39783
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39784
|
+
args.grant_rollover_enabled = true;
|
|
39785
|
+
if (opts.windows !== void 0)
|
|
39786
|
+
args.windows = JSON.parse(opts.windows);
|
|
39787
|
+
await ctx.execute({
|
|
39788
|
+
method: "PUT",
|
|
39789
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39605
39790
|
args,
|
|
39606
39791
|
queryParamKeys: []
|
|
39607
39792
|
});
|
|
39608
39793
|
});
|
|
39609
|
-
resource.command("
|
|
39794
|
+
resource.command("delete-agent-plan").description(`Delete an AI agent billing plan. Refused (409, plan_in_use) while any customer is still attached to it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39610
39795
|
Examples:
|
|
39611
|
-
hyperline
|
|
39612
|
-
hyperline
|
|
39796
|
+
hyperline ai-billing delete-agent-plan --id <id>
|
|
39797
|
+
hyperline ai-billing delete-agent-plan --id <id> --output json`).action(async (opts) => {
|
|
39613
39798
|
const ctx = resource.parent?.opts()._ctx;
|
|
39614
39799
|
if (!ctx) {
|
|
39615
39800
|
process.stderr.write("Error: Not authenticated\n");
|
|
39616
39801
|
process.exit(1);
|
|
39617
39802
|
}
|
|
39618
39803
|
const args = {};
|
|
39619
|
-
if (opts.
|
|
39620
|
-
args.
|
|
39804
|
+
if (opts.id !== void 0)
|
|
39805
|
+
args.id = opts.id;
|
|
39806
|
+
if (!opts.yes) {
|
|
39807
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39808
|
+
if (!confirmed) {
|
|
39809
|
+
process.stdout.write("Aborted.\n");
|
|
39810
|
+
return;
|
|
39811
|
+
}
|
|
39812
|
+
}
|
|
39813
|
+
await ctx.execute({
|
|
39814
|
+
method: "DELETE",
|
|
39815
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39816
|
+
args,
|
|
39817
|
+
queryParamKeys: []
|
|
39818
|
+
});
|
|
39819
|
+
});
|
|
39820
|
+
resource.command("list-agent-rate-cards").description(`List AI rate cards: named pricing row sets in credits, window units or currency. Shows what plans/policies/products depend on each. Filter by denomination, currency or name search; paginated with take/skip.`).option("--denomination <value>", `Unit in which rate-card prices are expressed.
|
|
39821
|
+
|
|
39822
|
+
- credits: Credit counts.
|
|
39823
|
+
- units: Weighted rolling-allowance units.
|
|
39824
|
+
- currency: Major units of the specified currency.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--search <value>", `search`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39825
|
+
Examples:
|
|
39826
|
+
hyperline ai-billing list-agent-rate-cards
|
|
39827
|
+
hyperline ai-billing list-agent-rate-cards --denomination <denomination> --currency <currency>`).action(async (opts) => {
|
|
39828
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39829
|
+
if (!ctx) {
|
|
39830
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39831
|
+
process.exit(1);
|
|
39832
|
+
}
|
|
39833
|
+
const args = {};
|
|
39834
|
+
if (opts.denomination !== void 0)
|
|
39835
|
+
args.denomination = opts.denomination;
|
|
39836
|
+
if (opts.currency !== void 0)
|
|
39837
|
+
args.currency = opts.currency;
|
|
39838
|
+
if (opts.search !== void 0)
|
|
39839
|
+
args.search = opts.search;
|
|
39840
|
+
if (opts.take !== void 0)
|
|
39841
|
+
args.take = Number(opts.take);
|
|
39842
|
+
if (opts.skip !== void 0)
|
|
39843
|
+
args.skip = Number(opts.skip);
|
|
39621
39844
|
await ctx.execute({
|
|
39622
39845
|
method: "GET",
|
|
39623
|
-
path: "/v1/
|
|
39846
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39624
39847
|
args,
|
|
39625
|
-
queryParamKeys: ["
|
|
39848
|
+
queryParamKeys: ["denomination", "currency", "search", "take", "skip"]
|
|
39626
39849
|
});
|
|
39627
39850
|
});
|
|
39628
|
-
resource.command("create-agent-
|
|
39851
|
+
resource.command("create-agent-rate-card").description(`Create an AI rate card with llm rows (per-1M input/output token rates) and item rows (per-unit rates), a denomination (credits/units/currency) and an optional USD fallback conversion.`).requiredOption("--name <value>", `Human-readable resource name.`).option("--fallback-per-usd <value>", `Credits, allowance units, or major currency units per USD of provider cost. Null leaves unmatched usage unpriced.`).requiredOption("--rows <json>", `All pricing rows on the card; replacement replaces the complete list.`).requiredOption("--denomination <value>", `Unit in which rate-card prices are expressed.
|
|
39852
|
+
|
|
39853
|
+
- credits: Credit counts.
|
|
39854
|
+
- units: Weighted rolling-allowance units.
|
|
39855
|
+
- currency: Major units of the specified currency.`).option("--currency <value>", `ISO 4217 currency code for monetary values. Null for counts or historical amounts without recorded currency.`).addHelpText("after", `
|
|
39629
39856
|
Examples:
|
|
39630
|
-
hyperline
|
|
39631
|
-
hyperline
|
|
39857
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination>
|
|
39858
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --fallback-per-usd <fallback_per_usd> --currency <currency>
|
|
39859
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --output json`).action(async (opts) => {
|
|
39632
39860
|
const ctx = resource.parent?.opts()._ctx;
|
|
39633
39861
|
if (!ctx) {
|
|
39634
39862
|
process.stderr.write("Error: Not authenticated\n");
|
|
39635
39863
|
process.exit(1);
|
|
39636
39864
|
}
|
|
39637
39865
|
const args = {};
|
|
39638
|
-
if (opts.
|
|
39639
|
-
args.
|
|
39640
|
-
if (opts.
|
|
39641
|
-
args.
|
|
39642
|
-
if (opts.
|
|
39643
|
-
args.
|
|
39866
|
+
if (opts.name !== void 0)
|
|
39867
|
+
args.name = opts.name;
|
|
39868
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39869
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39870
|
+
if (opts.denomination !== void 0)
|
|
39871
|
+
args.denomination = opts.denomination;
|
|
39872
|
+
if (opts.currency !== void 0)
|
|
39873
|
+
args.currency = opts.currency;
|
|
39874
|
+
if (opts.rows !== void 0)
|
|
39875
|
+
args.rows = JSON.parse(opts.rows);
|
|
39644
39876
|
await ctx.execute({
|
|
39645
39877
|
method: "POST",
|
|
39646
|
-
path: "/v1/
|
|
39878
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39647
39879
|
args,
|
|
39648
39880
|
queryParamKeys: []
|
|
39649
39881
|
});
|
|
39650
39882
|
});
|
|
39651
|
-
resource.command("
|
|
39883
|
+
resource.command("get-agent-rate-card").description(`Get one AI rate card by id with all its pricing rows and usage counts (plans, policies, credit product).`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39652
39884
|
Examples:
|
|
39653
|
-
hyperline
|
|
39654
|
-
hyperline agents delete-agent-cost-catalog-item --item-id <item_id> --output json`).action(async (opts) => {
|
|
39885
|
+
hyperline ai-billing get-agent-rate-card --id <id>`).action(async (opts) => {
|
|
39655
39886
|
const ctx = resource.parent?.opts()._ctx;
|
|
39656
39887
|
if (!ctx) {
|
|
39657
39888
|
process.stderr.write("Error: Not authenticated\n");
|
|
39658
39889
|
process.exit(1);
|
|
39659
39890
|
}
|
|
39660
39891
|
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
|
-
}
|
|
39892
|
+
if (opts.id !== void 0)
|
|
39893
|
+
args.id = opts.id;
|
|
39670
39894
|
await ctx.execute({
|
|
39671
|
-
method: "
|
|
39672
|
-
path: "/v1/
|
|
39895
|
+
method: "GET",
|
|
39896
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39673
39897
|
args,
|
|
39674
39898
|
queryParamKeys: []
|
|
39675
39899
|
});
|
|
39676
39900
|
});
|
|
39677
|
-
resource.command("
|
|
39901
|
+
resource.command("replace-agent-rate-card").description(`Replace an AI rate card's rows, name and USD fallback (whole-card semantics). Denomination and currency are immutable.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Human-readable resource name.`).option("--fallback-per-usd <value>", `Credits, allowance units, or major currency units per USD of provider cost. Null leaves unmatched usage unpriced.`).requiredOption("--rows <json>", `All pricing rows on the card; replacement replaces the complete list.`).addHelpText("after", `
|
|
39678
39902
|
Examples:
|
|
39679
|
-
hyperline
|
|
39680
|
-
hyperline
|
|
39681
|
-
hyperline
|
|
39903
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows>
|
|
39904
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --fallback-per-usd <fallback_per_usd>
|
|
39905
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --output json`).action(async (opts) => {
|
|
39682
39906
|
const ctx = resource.parent?.opts()._ctx;
|
|
39683
39907
|
if (!ctx) {
|
|
39684
39908
|
process.stderr.write("Error: Not authenticated\n");
|
|
39685
39909
|
process.exit(1);
|
|
39686
39910
|
}
|
|
39687
39911
|
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);
|
|
39912
|
+
if (opts.id !== void 0)
|
|
39913
|
+
args.id = opts.id;
|
|
39914
|
+
if (opts.name !== void 0)
|
|
39915
|
+
args.name = opts.name;
|
|
39916
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39917
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39918
|
+
if (opts.rows !== void 0)
|
|
39919
|
+
args.rows = JSON.parse(opts.rows);
|
|
39702
39920
|
await ctx.execute({
|
|
39703
39921
|
method: "PUT",
|
|
39704
|
-
path: "/v1/
|
|
39922
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39705
39923
|
args,
|
|
39706
39924
|
queryParamKeys: []
|
|
39707
39925
|
});
|
|
39708
39926
|
});
|
|
39709
|
-
resource.command("delete-agent-
|
|
39927
|
+
resource.command("delete-agent-rate-card").description(`Delete an AI rate card. Refused (409, rate_card_in_use) while any plan, credit product or customer policy still uses it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39710
39928
|
Examples:
|
|
39711
|
-
hyperline
|
|
39712
|
-
hyperline
|
|
39929
|
+
hyperline ai-billing delete-agent-rate-card --id <id>
|
|
39930
|
+
hyperline ai-billing delete-agent-rate-card --id <id> --output json`).action(async (opts) => {
|
|
39713
39931
|
const ctx = resource.parent?.opts()._ctx;
|
|
39714
39932
|
if (!ctx) {
|
|
39715
39933
|
process.stderr.write("Error: Not authenticated\n");
|
|
39716
39934
|
process.exit(1);
|
|
39717
39935
|
}
|
|
39718
39936
|
const args = {};
|
|
39719
|
-
if (opts.
|
|
39720
|
-
args.
|
|
39937
|
+
if (opts.id !== void 0)
|
|
39938
|
+
args.id = opts.id;
|
|
39721
39939
|
if (!opts.yes) {
|
|
39722
39940
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39723
39941
|
if (!confirmed) {
|
|
@@ -39727,51 +39945,158 @@ Examples:
|
|
|
39727
39945
|
}
|
|
39728
39946
|
await ctx.execute({
|
|
39729
39947
|
method: "DELETE",
|
|
39730
|
-
path: "/v1/
|
|
39948
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39731
39949
|
args,
|
|
39732
39950
|
queryParamKeys: []
|
|
39733
39951
|
});
|
|
39734
39952
|
});
|
|
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("--
|
|
39953
|
+
resource.command("list-agent-customer-policies").description(`List all AI billing policies (scopes) for one customer: the default shared pool plus per-agent overrides. Accepts Hyperline or external customer ids.`).requiredOption("--id <value>", `id parameter`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39736
39954
|
Examples:
|
|
39737
|
-
hyperline
|
|
39955
|
+
hyperline ai-billing list-agent-customer-policies --id <id>
|
|
39956
|
+
hyperline ai-billing list-agent-customer-policies --id <id> --take <take>`).action(async (opts) => {
|
|
39738
39957
|
const ctx = resource.parent?.opts()._ctx;
|
|
39739
39958
|
if (!ctx) {
|
|
39740
39959
|
process.stderr.write("Error: Not authenticated\n");
|
|
39741
39960
|
process.exit(1);
|
|
39742
39961
|
}
|
|
39743
39962
|
const args = {};
|
|
39744
|
-
if (opts.
|
|
39745
|
-
args.
|
|
39963
|
+
if (opts.id !== void 0)
|
|
39964
|
+
args.id = opts.id;
|
|
39965
|
+
if (opts.take !== void 0)
|
|
39966
|
+
args.take = Number(opts.take);
|
|
39967
|
+
if (opts.skip !== void 0)
|
|
39968
|
+
args.skip = Number(opts.skip);
|
|
39969
|
+
await ctx.execute({
|
|
39970
|
+
method: "GET",
|
|
39971
|
+
path: "/v1/ai/billing/customers/{id}/policies",
|
|
39972
|
+
args,
|
|
39973
|
+
queryParamKeys: ["take", "skip"]
|
|
39974
|
+
});
|
|
39975
|
+
});
|
|
39976
|
+
resource.command("get-default-customer-billing-policy").description(`Get the exact customer billing policy addressed by this resource; agent policies never fall back to the shared pool.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39977
|
+
Examples:
|
|
39978
|
+
hyperline ai-billing get-default-customer-billing-policy --id <id>`).action(async (opts) => {
|
|
39979
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39980
|
+
if (!ctx) {
|
|
39981
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39982
|
+
process.exit(1);
|
|
39983
|
+
}
|
|
39984
|
+
const args = {};
|
|
39985
|
+
if (opts.id !== void 0)
|
|
39986
|
+
args.id = opts.id;
|
|
39746
39987
|
await ctx.execute({
|
|
39747
39988
|
method: "GET",
|
|
39748
|
-
path: "/v1/
|
|
39989
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39749
39990
|
args,
|
|
39750
39991
|
queryParamKeys: []
|
|
39751
39992
|
});
|
|
39752
39993
|
});
|
|
39753
|
-
resource.command("
|
|
39994
|
+
resource.command("upsert-default-customer-billing-policy").description(`Replace customer billing settings while preserving omitted plan_id and rate_card_id references; null detaches them, and a shared policy enables automatic telemetry billing.`).requiredOption("--id <value>", `id parameter`).requiredOption("--mode <value>", `Billing mode.
|
|
39995
|
+
|
|
39996
|
+
- wallet: Charges a monetary wallet.
|
|
39997
|
+
- credits: Consumes a credit balance.
|
|
39998
|
+
- windows: Meters weighted units against rolling allowances.`).option("--wallet-id <value>", `Customer wallet identifier. Omit on wallet policy writes to provision or reuse the customer's wallet.`).option("--credit-product-id <value>", `Public credit product identifier whose balance this policy consumes.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39999
|
+
|
|
40000
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
40001
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--overage-wallet-id <value>", `Wallet charged for overage. Null bills overage in arrears.`).option("--floor <value>", `Minimum available balance a spend check requires, in the policy's denomination.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
40002
|
+
|
|
40003
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).requiredOption("--blocked", `Whether spending is disabled for this billing scope.`).addHelpText("after", `
|
|
39754
40004
|
Examples:
|
|
39755
|
-
hyperline
|
|
39756
|
-
hyperline
|
|
40005
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked
|
|
40006
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --wallet-id <wallet_id> --credit-product-id <credit_product_id>
|
|
40007
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39757
40008
|
const ctx = resource.parent?.opts()._ctx;
|
|
39758
40009
|
if (!ctx) {
|
|
39759
40010
|
process.stderr.write("Error: Not authenticated\n");
|
|
39760
40011
|
process.exit(1);
|
|
39761
40012
|
}
|
|
39762
40013
|
const args = {};
|
|
39763
|
-
if (opts.
|
|
39764
|
-
args.
|
|
39765
|
-
if (opts.
|
|
39766
|
-
args.
|
|
40014
|
+
if (opts.id !== void 0)
|
|
40015
|
+
args.id = opts.id;
|
|
40016
|
+
if (opts.mode !== void 0)
|
|
40017
|
+
args.mode = opts.mode;
|
|
40018
|
+
if (opts.walletId !== void 0)
|
|
40019
|
+
args.wallet_id = opts.walletId;
|
|
40020
|
+
if (opts.creditProductId !== void 0)
|
|
40021
|
+
args.credit_product_id = opts.creditProductId;
|
|
40022
|
+
if (opts.markupPercent !== void 0)
|
|
40023
|
+
args.markup_percent = opts.markupPercent;
|
|
40024
|
+
if (opts.overageMode !== void 0)
|
|
40025
|
+
args.overage_mode = opts.overageMode;
|
|
40026
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
40027
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
40028
|
+
if (opts.overageRateCardId !== void 0)
|
|
40029
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
40030
|
+
if (opts.overageWalletId !== void 0)
|
|
40031
|
+
args.overage_wallet_id = opts.overageWalletId;
|
|
40032
|
+
if (opts.floor !== void 0)
|
|
40033
|
+
args.floor = opts.floor;
|
|
40034
|
+
if (opts.settlementSchedule !== void 0)
|
|
40035
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
40036
|
+
if (opts.rateCardId !== void 0)
|
|
40037
|
+
args.rate_card_id = opts.rateCardId;
|
|
40038
|
+
if (opts.planId !== void 0)
|
|
40039
|
+
args.plan_id = opts.planId;
|
|
40040
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
40041
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
40042
|
+
if (opts.blocked !== void 0)
|
|
40043
|
+
args.blocked = true;
|
|
40044
|
+
if (opts.windows !== void 0)
|
|
40045
|
+
args.windows = JSON.parse(opts.windows);
|
|
40046
|
+
await ctx.execute({
|
|
40047
|
+
method: "PUT",
|
|
40048
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
40049
|
+
args,
|
|
40050
|
+
queryParamKeys: []
|
|
40051
|
+
});
|
|
40052
|
+
});
|
|
40053
|
+
resource.command("delete-default-customer-billing-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40054
|
+
Examples:
|
|
40055
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id>
|
|
40056
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id> --output json`).action(async (opts) => {
|
|
40057
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40058
|
+
if (!ctx) {
|
|
40059
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40060
|
+
process.exit(1);
|
|
40061
|
+
}
|
|
40062
|
+
const args = {};
|
|
40063
|
+
if (opts.id !== void 0)
|
|
40064
|
+
args.id = opts.id;
|
|
40065
|
+
if (!opts.yes) {
|
|
40066
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40067
|
+
if (!confirmed) {
|
|
40068
|
+
process.stdout.write("Aborted.\n");
|
|
40069
|
+
return;
|
|
40070
|
+
}
|
|
40071
|
+
}
|
|
40072
|
+
await ctx.execute({
|
|
40073
|
+
method: "DELETE",
|
|
40074
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
40075
|
+
args,
|
|
40076
|
+
queryParamKeys: []
|
|
40077
|
+
});
|
|
40078
|
+
});
|
|
40079
|
+
resource.command("get-agent-customer-billing-policy").description(`Get the exact customer billing policy addressed by this resource; agent policies never fall back to the shared pool.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).addHelpText("after", `
|
|
40080
|
+
Examples:
|
|
40081
|
+
hyperline ai-billing get-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
40082
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40083
|
+
if (!ctx) {
|
|
40084
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40085
|
+
process.exit(1);
|
|
40086
|
+
}
|
|
40087
|
+
const args = {};
|
|
40088
|
+
if (opts.id !== void 0)
|
|
40089
|
+
args.id = opts.id;
|
|
40090
|
+
if (opts.agentSlug !== void 0)
|
|
40091
|
+
args.agent_slug = opts.agentSlug;
|
|
39767
40092
|
await ctx.execute({
|
|
39768
40093
|
method: "GET",
|
|
39769
|
-
path: "/v1/
|
|
40094
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39770
40095
|
args,
|
|
39771
|
-
queryParamKeys: [
|
|
40096
|
+
queryParamKeys: []
|
|
39772
40097
|
});
|
|
39773
40098
|
});
|
|
39774
|
-
resource.command("upsert-agent-customer-policy").description(`
|
|
40099
|
+
resource.command("upsert-agent-customer-billing-policy").description(`Replace customer billing settings while preserving omitted plan_id and rate_card_id references; null detaches them, and a shared policy enables automatic telemetry billing.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).requiredOption("--mode <value>", `Billing mode.
|
|
39775
40100
|
|
|
39776
40101
|
- wallet: Charges a monetary wallet.
|
|
39777
40102
|
- credits: Consumes a credit balance.
|
|
@@ -39780,21 +40105,21 @@ Examples:
|
|
|
39780
40105
|
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39781
40106
|
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--overage-wallet-id <value>", `Wallet charged for overage. Null bills overage in arrears.`).option("--floor <value>", `Minimum available balance a spend check requires, in the policy's denomination.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39782
40107
|
|
|
39783
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).option("--
|
|
40108
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).requiredOption("--blocked", `Whether spending is disabled for this billing scope.`).addHelpText("after", `
|
|
39784
40109
|
Examples:
|
|
39785
|
-
hyperline
|
|
39786
|
-
hyperline
|
|
39787
|
-
hyperline
|
|
40110
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked
|
|
40111
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked --wallet-id <wallet_id> --credit-product-id <credit_product_id>
|
|
40112
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39788
40113
|
const ctx = resource.parent?.opts()._ctx;
|
|
39789
40114
|
if (!ctx) {
|
|
39790
40115
|
process.stderr.write("Error: Not authenticated\n");
|
|
39791
40116
|
process.exit(1);
|
|
39792
40117
|
}
|
|
39793
40118
|
const args = {};
|
|
39794
|
-
if (opts.
|
|
39795
|
-
args.
|
|
39796
|
-
if (opts.
|
|
39797
|
-
args.
|
|
40119
|
+
if (opts.id !== void 0)
|
|
40120
|
+
args.id = opts.id;
|
|
40121
|
+
if (opts.agentSlug !== void 0)
|
|
40122
|
+
args.agent_slug = opts.agentSlug;
|
|
39798
40123
|
if (opts.mode !== void 0)
|
|
39799
40124
|
args.mode = opts.mode;
|
|
39800
40125
|
if (opts.walletId !== void 0)
|
|
@@ -39823,32 +40148,29 @@ Examples:
|
|
|
39823
40148
|
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39824
40149
|
if (opts.blocked !== void 0)
|
|
39825
40150
|
args.blocked = true;
|
|
39826
|
-
if (opts.
|
|
39827
|
-
args.
|
|
39828
|
-
if (opts.windowRates !== void 0)
|
|
39829
|
-
args.window_rates = JSON.parse(opts.windowRates);
|
|
40151
|
+
if (opts.windows !== void 0)
|
|
40152
|
+
args.windows = JSON.parse(opts.windows);
|
|
39830
40153
|
await ctx.execute({
|
|
39831
40154
|
method: "PUT",
|
|
39832
|
-
path: "/v1/
|
|
40155
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39833
40156
|
args,
|
|
39834
|
-
queryParamKeys: [
|
|
40157
|
+
queryParamKeys: []
|
|
39835
40158
|
});
|
|
39836
40159
|
});
|
|
39837
|
-
resource.command("delete-agent-customer-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--
|
|
40160
|
+
resource.command("delete-agent-customer-billing-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39838
40161
|
Examples:
|
|
39839
|
-
hyperline
|
|
39840
|
-
hyperline
|
|
39841
|
-
hyperline agents delete-agent-customer-policy --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
40162
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>
|
|
40163
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --output json`).action(async (opts) => {
|
|
39842
40164
|
const ctx = resource.parent?.opts()._ctx;
|
|
39843
40165
|
if (!ctx) {
|
|
39844
40166
|
process.stderr.write("Error: Not authenticated\n");
|
|
39845
40167
|
process.exit(1);
|
|
39846
40168
|
}
|
|
39847
40169
|
const args = {};
|
|
39848
|
-
if (opts.
|
|
39849
|
-
args.
|
|
39850
|
-
if (opts.
|
|
39851
|
-
args.
|
|
40170
|
+
if (opts.id !== void 0)
|
|
40171
|
+
args.id = opts.id;
|
|
40172
|
+
if (opts.agentSlug !== void 0)
|
|
40173
|
+
args.agent_slug = opts.agentSlug;
|
|
39852
40174
|
if (!opts.yes) {
|
|
39853
40175
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39854
40176
|
if (!confirmed) {
|
|
@@ -39858,87 +40180,87 @@ Examples:
|
|
|
39858
40180
|
}
|
|
39859
40181
|
await ctx.execute({
|
|
39860
40182
|
method: "DELETE",
|
|
39861
|
-
path: "/v1/
|
|
40183
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39862
40184
|
args,
|
|
39863
|
-
queryParamKeys: [
|
|
40185
|
+
queryParamKeys: []
|
|
39864
40186
|
});
|
|
39865
40187
|
});
|
|
39866
|
-
resource.command("apply-agent-default-plan").description(`Apply the workspace's default AI agent billing plan to one customer (by id or external id). Idempotent; refuses (409) if the customer already has a different billing policy, 404 when no default plan is set.`).requiredOption("--
|
|
40188
|
+
resource.command("apply-agent-default-plan").description(`Apply the workspace's default AI agent billing plan to one customer (by id or external id). Idempotent; refuses (409) if the customer already has a different billing policy, 404 when no default plan is set.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39867
40189
|
Examples:
|
|
39868
|
-
hyperline
|
|
39869
|
-
hyperline
|
|
40190
|
+
hyperline ai-billing apply-agent-default-plan --id <id>
|
|
40191
|
+
hyperline ai-billing apply-agent-default-plan --id <id> --output json`).action(async (opts) => {
|
|
39870
40192
|
const ctx = resource.parent?.opts()._ctx;
|
|
39871
40193
|
if (!ctx) {
|
|
39872
40194
|
process.stderr.write("Error: Not authenticated\n");
|
|
39873
40195
|
process.exit(1);
|
|
39874
40196
|
}
|
|
39875
40197
|
const args = {};
|
|
39876
|
-
if (opts.
|
|
39877
|
-
args.
|
|
40198
|
+
if (opts.id !== void 0)
|
|
40199
|
+
args.id = opts.id;
|
|
39878
40200
|
await ctx.execute({
|
|
39879
40201
|
method: "POST",
|
|
39880
|
-
path: "/v1/
|
|
40202
|
+
path: "/v1/ai/billing/customers/{id}/apply-default-plan",
|
|
39881
40203
|
args,
|
|
39882
40204
|
queryParamKeys: []
|
|
39883
40205
|
});
|
|
39884
40206
|
});
|
|
39885
|
-
resource.command("get-agent-customer-balance").description(`Get one customer's live AI balance, shaped by their billing mode: wallet shadow balance, credit pot, or rolling window meters with reset times. Includes per-agent scopes and overage state.`).requiredOption("--
|
|
40207
|
+
resource.command("get-agent-customer-balance").description(`Get one customer's live AI balance, shaped by their billing mode: wallet shadow balance, credit pot, or rolling window meters with reset times. Includes per-agent scopes and overage state.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Agent scope identifier. Null is the customer's shared pool.`).addHelpText("after", `
|
|
39886
40208
|
Examples:
|
|
39887
|
-
hyperline
|
|
39888
|
-
hyperline
|
|
40209
|
+
hyperline ai-billing get-agent-customer-balance --id <id>
|
|
40210
|
+
hyperline ai-billing get-agent-customer-balance --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
39889
40211
|
const ctx = resource.parent?.opts()._ctx;
|
|
39890
40212
|
if (!ctx) {
|
|
39891
40213
|
process.stderr.write("Error: Not authenticated\n");
|
|
39892
40214
|
process.exit(1);
|
|
39893
40215
|
}
|
|
39894
40216
|
const args = {};
|
|
39895
|
-
if (opts.
|
|
39896
|
-
args.
|
|
39897
|
-
if (opts.
|
|
39898
|
-
args.
|
|
40217
|
+
if (opts.id !== void 0)
|
|
40218
|
+
args.id = opts.id;
|
|
40219
|
+
if (opts.agentSlug !== void 0)
|
|
40220
|
+
args.agent_slug = opts.agentSlug;
|
|
39899
40221
|
await ctx.execute({
|
|
39900
40222
|
method: "GET",
|
|
39901
|
-
path: "/v1/
|
|
40223
|
+
path: "/v1/ai/billing/customers/{id}/balance",
|
|
39902
40224
|
args,
|
|
39903
|
-
queryParamKeys: ["
|
|
40225
|
+
queryParamKeys: ["agent_slug"]
|
|
39904
40226
|
});
|
|
39905
40227
|
});
|
|
39906
|
-
resource.command("reset-agent-customer-windows").description(`Reset one customer's open AI allowance windows so their next call starts a fresh full allowance. Windows-mode scopes only.`).requiredOption("--
|
|
40228
|
+
resource.command("reset-agent-customer-windows").description(`Reset one customer's open AI allowance windows so their next call starts a fresh full allowance. Windows-mode scopes only.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Agent scope identifier. Null is the customer's shared pool.`).addHelpText("after", `
|
|
39907
40229
|
Examples:
|
|
39908
|
-
hyperline
|
|
39909
|
-
hyperline
|
|
39910
|
-
hyperline
|
|
40230
|
+
hyperline ai-billing reset-agent-customer-windows --id <id>
|
|
40231
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --agent-slug <agent_slug>
|
|
40232
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --output json`).action(async (opts) => {
|
|
39911
40233
|
const ctx = resource.parent?.opts()._ctx;
|
|
39912
40234
|
if (!ctx) {
|
|
39913
40235
|
process.stderr.write("Error: Not authenticated\n");
|
|
39914
40236
|
process.exit(1);
|
|
39915
40237
|
}
|
|
39916
40238
|
const args = {};
|
|
39917
|
-
if (opts.
|
|
39918
|
-
args.
|
|
39919
|
-
if (opts.
|
|
39920
|
-
args.
|
|
40239
|
+
if (opts.id !== void 0)
|
|
40240
|
+
args.id = opts.id;
|
|
40241
|
+
if (opts.agentSlug !== void 0)
|
|
40242
|
+
args.agent_slug = opts.agentSlug;
|
|
39921
40243
|
await ctx.execute({
|
|
39922
40244
|
method: "POST",
|
|
39923
|
-
path: "/v1/
|
|
40245
|
+
path: "/v1/ai/billing/customers/{id}/windows/reset",
|
|
39924
40246
|
args,
|
|
39925
|
-
queryParamKeys: ["
|
|
40247
|
+
queryParamKeys: ["agent_slug"]
|
|
39926
40248
|
});
|
|
39927
40249
|
});
|
|
39928
|
-
resource.command("list-agent-customer-consumption").description(`List one customer's AI consumption ledger entries, newest first, with amounts, denominations and overage flags. Filter by agent scope, overage, and from/to time range; paginated with take/skip.`).requiredOption("--
|
|
40250
|
+
resource.command("list-agent-customer-consumption").description(`List one customer's AI consumption ledger entries, newest first, with amounts, denominations and overage flags. Filter by agent scope, overage, and from/to time range; paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Billing scope: an empty string selects the shared pool; omission includes all scopes.`).option("--overage <value>", `Filter by overage status; omission includes both ordinary and overage entries.`).option("--from <value>", `UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--to <value>", `UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39929
40251
|
Examples:
|
|
39930
|
-
hyperline
|
|
39931
|
-
hyperline
|
|
40252
|
+
hyperline ai-billing list-agent-customer-consumption --id <id>
|
|
40253
|
+
hyperline ai-billing list-agent-customer-consumption --id <id> --agent-slug <agent_slug> --overage <overage>`).action(async (opts) => {
|
|
39932
40254
|
const ctx = resource.parent?.opts()._ctx;
|
|
39933
40255
|
if (!ctx) {
|
|
39934
40256
|
process.stderr.write("Error: Not authenticated\n");
|
|
39935
40257
|
process.exit(1);
|
|
39936
40258
|
}
|
|
39937
40259
|
const args = {};
|
|
39938
|
-
if (opts.
|
|
39939
|
-
args.
|
|
39940
|
-
if (opts.
|
|
39941
|
-
args.
|
|
40260
|
+
if (opts.id !== void 0)
|
|
40261
|
+
args.id = opts.id;
|
|
40262
|
+
if (opts.agentSlug !== void 0)
|
|
40263
|
+
args.agent_slug = opts.agentSlug;
|
|
39942
40264
|
if (opts.overage !== void 0)
|
|
39943
40265
|
args.overage = opts.overage;
|
|
39944
40266
|
if (opts.from !== void 0)
|
|
@@ -39951,106 +40273,131 @@ Examples:
|
|
|
39951
40273
|
args.skip = Number(opts.skip);
|
|
39952
40274
|
await ctx.execute({
|
|
39953
40275
|
method: "GET",
|
|
39954
|
-
path: "/v1/
|
|
40276
|
+
path: "/v1/ai/billing/customers/{id}/consumption",
|
|
39955
40277
|
args,
|
|
39956
|
-
queryParamKeys: ["
|
|
40278
|
+
queryParamKeys: ["agent_slug", "overage", "from", "to", "take", "skip"]
|
|
39957
40279
|
});
|
|
39958
40280
|
});
|
|
39959
|
-
resource.command("get-
|
|
40281
|
+
resource.command("get-product-ai-rate-card").description(`Get the default AI rate-card reference for a credit product, or 404 when none is attached.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39960
40282
|
Examples:
|
|
39961
|
-
hyperline
|
|
40283
|
+
hyperline ai-billing get-product-ai-rate-card --id <id>`).action(async (opts) => {
|
|
39962
40284
|
const ctx = resource.parent?.opts()._ctx;
|
|
39963
40285
|
if (!ctx) {
|
|
39964
40286
|
process.stderr.write("Error: Not authenticated\n");
|
|
39965
40287
|
process.exit(1);
|
|
39966
40288
|
}
|
|
39967
40289
|
const args = {};
|
|
39968
|
-
if (opts.
|
|
39969
|
-
args.
|
|
40290
|
+
if (opts.id !== void 0)
|
|
40291
|
+
args.id = opts.id;
|
|
39970
40292
|
await ctx.execute({
|
|
39971
40293
|
method: "GET",
|
|
39972
|
-
path: "/v1/
|
|
40294
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40295
|
+
args,
|
|
40296
|
+
queryParamKeys: []
|
|
40297
|
+
});
|
|
40298
|
+
});
|
|
40299
|
+
resource.command("set-product-ai-rate-card").description(`Attach a credits-denominated AI rate card with complete fallback pricing as the credit product's default.`).requiredOption("--id <value>", `id parameter`).requiredOption("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).addHelpText("after", `
|
|
40300
|
+
Examples:
|
|
40301
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id>
|
|
40302
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id> --output json`).action(async (opts) => {
|
|
40303
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40304
|
+
if (!ctx) {
|
|
40305
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40306
|
+
process.exit(1);
|
|
40307
|
+
}
|
|
40308
|
+
const args = {};
|
|
40309
|
+
if (opts.id !== void 0)
|
|
40310
|
+
args.id = opts.id;
|
|
40311
|
+
if (opts.rateCardId !== void 0)
|
|
40312
|
+
args.rate_card_id = opts.rateCardId;
|
|
40313
|
+
await ctx.execute({
|
|
40314
|
+
method: "PUT",
|
|
40315
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40316
|
+
args,
|
|
40317
|
+
queryParamKeys: []
|
|
40318
|
+
});
|
|
40319
|
+
});
|
|
40320
|
+
resource.command("clear-product-ai-rate-card").description(`Detach a credit product's default AI rate card without deleting the card, or return 404 when none is attached.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40321
|
+
Examples:
|
|
40322
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id>
|
|
40323
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id> --output json`).action(async (opts) => {
|
|
40324
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40325
|
+
if (!ctx) {
|
|
40326
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40327
|
+
process.exit(1);
|
|
40328
|
+
}
|
|
40329
|
+
const args = {};
|
|
40330
|
+
if (opts.id !== void 0)
|
|
40331
|
+
args.id = opts.id;
|
|
40332
|
+
if (!opts.yes) {
|
|
40333
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40334
|
+
if (!confirmed) {
|
|
40335
|
+
process.stdout.write("Aborted.\n");
|
|
40336
|
+
return;
|
|
40337
|
+
}
|
|
40338
|
+
}
|
|
40339
|
+
await ctx.execute({
|
|
40340
|
+
method: "DELETE",
|
|
40341
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
39973
40342
|
args,
|
|
39974
40343
|
queryParamKeys: []
|
|
39975
40344
|
});
|
|
39976
40345
|
});
|
|
39977
40346
|
}
|
|
39978
40347
|
|
|
39979
|
-
// build/commands/generated/
|
|
39980
|
-
function
|
|
39981
|
-
const resource = parent.command("
|
|
39982
|
-
resource.command("list").description(`List
|
|
40348
|
+
// build/commands/generated/ai-costs.js
|
|
40349
|
+
function registerAi_CostsCommands(parent) {
|
|
40350
|
+
const resource = parent.command("ai-costs").description("Manage ai > costs");
|
|
40351
|
+
resource.command("list-agent-cost-catalog").description(`List the AI cost catalog: registry model prices merged with this workspace's negotiated overrides, its own custom cost items (source custom), and the unpriced pairs its telemetry has carried (source unlisted). Rates are USD decimal strings. Pass enabled_only=true for just the enabled catalog.`).option("--take <number>", `Maximum catalog entries to return.`).option("--skip <number>", `skip`).option("--enabled-only <value>", `enabled_only`).addHelpText("after", `
|
|
39983
40352
|
Examples:
|
|
39984
|
-
hyperline
|
|
39985
|
-
hyperline
|
|
40353
|
+
hyperline ai-costs list-agent-cost-catalog
|
|
40354
|
+
hyperline ai-costs list-agent-cost-catalog --take <take> --enabled-only <enabled_only>`).action(async (opts) => {
|
|
39986
40355
|
const ctx = resource.parent?.opts()._ctx;
|
|
39987
40356
|
if (!ctx) {
|
|
39988
40357
|
process.stderr.write("Error: Not authenticated\n");
|
|
39989
40358
|
process.exit(1);
|
|
39990
40359
|
}
|
|
39991
40360
|
const args = {};
|
|
40361
|
+
if (opts.enabledOnly !== void 0)
|
|
40362
|
+
args.enabled_only = opts.enabledOnly;
|
|
39992
40363
|
if (opts.take !== void 0)
|
|
39993
40364
|
args.take = Number(opts.take);
|
|
39994
40365
|
if (opts.skip !== void 0)
|
|
39995
40366
|
args.skip = Number(opts.skip);
|
|
39996
40367
|
await ctx.execute({
|
|
39997
40368
|
method: "GET",
|
|
39998
|
-
path: "/v1/
|
|
40369
|
+
path: "/v1/ai/billing/costs",
|
|
39999
40370
|
args,
|
|
40000
|
-
queryParamKeys: ["take", "skip"]
|
|
40371
|
+
queryParamKeys: ["take", "skip", "enabled_only"]
|
|
40001
40372
|
});
|
|
40002
40373
|
});
|
|
40003
|
-
resource.command("create").description(`Create a
|
|
40374
|
+
resource.command("create-agent-cost-catalog-item").description(`Create a custom provider/item cost; an existing pair returns 200 with its unchanged rates, so use PUT /v1/ai/billing/costs/items/:id to edit it.`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--item <value>", `Custom item name matching the usage payload.`).requiredOption("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40004
40375
|
Examples:
|
|
40005
|
-
hyperline
|
|
40006
|
-
hyperline
|
|
40007
|
-
hyperline aggregators create --entity <entity> --operation <operation> --output json`).action(async (opts) => {
|
|
40376
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions>
|
|
40377
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40008
40378
|
const ctx = resource.parent?.opts()._ctx;
|
|
40009
40379
|
if (!ctx) {
|
|
40010
40380
|
process.stderr.write("Error: Not authenticated\n");
|
|
40011
40381
|
process.exit(1);
|
|
40012
40382
|
}
|
|
40013
40383
|
const args = {};
|
|
40014
|
-
if (opts.
|
|
40015
|
-
args.
|
|
40016
|
-
if (opts.
|
|
40017
|
-
args.
|
|
40018
|
-
if (opts.
|
|
40019
|
-
args.
|
|
40020
|
-
if (opts.description !== void 0)
|
|
40021
|
-
args.description = opts.description;
|
|
40022
|
-
if (opts.customEventName !== void 0)
|
|
40023
|
-
args.custom_event_name = opts.customEventName;
|
|
40024
|
-
if (opts.unitName !== void 0)
|
|
40025
|
-
args.unit_name = opts.unitName;
|
|
40026
|
-
if (opts.defaultIntervalPeriod !== void 0)
|
|
40027
|
-
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
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);
|
|
40384
|
+
if (opts.provider !== void 0)
|
|
40385
|
+
args.provider = opts.provider;
|
|
40386
|
+
if (opts.item !== void 0)
|
|
40387
|
+
args.item = opts.item;
|
|
40388
|
+
if (opts.dimensions !== void 0)
|
|
40389
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40044
40390
|
await ctx.execute({
|
|
40045
40391
|
method: "POST",
|
|
40046
|
-
path: "/v1/
|
|
40392
|
+
path: "/v1/ai/billing/costs/items",
|
|
40047
40393
|
args,
|
|
40048
40394
|
queryParamKeys: []
|
|
40049
40395
|
});
|
|
40050
40396
|
});
|
|
40051
|
-
resource.command("
|
|
40397
|
+
resource.command("delete-agent-cost-catalog-item").description(`Close a custom AI cost item by its custom_item_id. History is kept; new calls on that pair go back to unpriced. An override id passed here is a 404.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40052
40398
|
Examples:
|
|
40053
|
-
hyperline
|
|
40399
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id>
|
|
40400
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id> --output json`).action(async (opts) => {
|
|
40054
40401
|
const ctx = resource.parent?.opts()._ctx;
|
|
40055
40402
|
if (!ctx) {
|
|
40056
40403
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40059,67 +40406,56 @@ Examples:
|
|
|
40059
40406
|
const args = {};
|
|
40060
40407
|
if (opts.id !== void 0)
|
|
40061
40408
|
args.id = opts.id;
|
|
40409
|
+
if (!opts.yes) {
|
|
40410
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40411
|
+
if (!confirmed) {
|
|
40412
|
+
process.stdout.write("Aborted.\n");
|
|
40413
|
+
return;
|
|
40414
|
+
}
|
|
40415
|
+
}
|
|
40062
40416
|
await ctx.execute({
|
|
40063
|
-
method: "
|
|
40064
|
-
path: "/v1/
|
|
40417
|
+
method: "DELETE",
|
|
40418
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40065
40419
|
args,
|
|
40066
40420
|
queryParamKeys: []
|
|
40067
40421
|
});
|
|
40068
40422
|
});
|
|
40069
|
-
resource.command("
|
|
40423
|
+
resource.command("upsert-agent-cost-catalog-override").description(`Set this workspace's negotiated price for a registry AI model (input/output/cached/cache-write USD per 1M tokens, plus optional dimensions). Replaces any open override immediately; historical calls keep their original rate. A pair the registry does not know is refused \u2014 create a custom cost item instead.`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--model <value>", `Model identifier, or custom item identifier. Null on wildcard pricing rows.`).requiredOption("--input-per-m-tokens <value>", `Provider cost in USD per million input tokens, as an exact decimal string.`).requiredOption("--output-per-m-tokens <value>", `Provider cost in USD per million output tokens, as an exact decimal string.`).option("--cached-input-per-m-tokens <value>", `Provider cost in USD per million cached input tokens, as an exact decimal string.`).option("--cache-write-per-m-tokens <value>", `Provider cost in USD per million cache write tokens, as an exact decimal string.`).option("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40070
40424
|
Examples:
|
|
40071
|
-
hyperline
|
|
40072
|
-
hyperline
|
|
40073
|
-
hyperline
|
|
40425
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens>
|
|
40426
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens> --cached-input-per-m-tokens <cached_input_per_m_tokens> --cache-write-per-m-tokens <cache_write_per_m_tokens>
|
|
40427
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens> --output json`).action(async (opts) => {
|
|
40074
40428
|
const ctx = resource.parent?.opts()._ctx;
|
|
40075
40429
|
if (!ctx) {
|
|
40076
40430
|
process.stderr.write("Error: Not authenticated\n");
|
|
40077
40431
|
process.exit(1);
|
|
40078
40432
|
}
|
|
40079
40433
|
const args = {};
|
|
40080
|
-
if (opts.
|
|
40081
|
-
args.
|
|
40082
|
-
if (opts.
|
|
40083
|
-
args.
|
|
40084
|
-
if (opts.
|
|
40085
|
-
args.
|
|
40086
|
-
if (opts.
|
|
40087
|
-
args.
|
|
40088
|
-
if (opts.
|
|
40089
|
-
args.
|
|
40090
|
-
if (opts.
|
|
40091
|
-
args.
|
|
40092
|
-
if (opts.
|
|
40093
|
-
args.
|
|
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);
|
|
40434
|
+
if (opts.provider !== void 0)
|
|
40435
|
+
args.provider = opts.provider;
|
|
40436
|
+
if (opts.model !== void 0)
|
|
40437
|
+
args.model = opts.model;
|
|
40438
|
+
if (opts.inputPerMTokens !== void 0)
|
|
40439
|
+
args.input_per_m_tokens = opts.inputPerMTokens;
|
|
40440
|
+
if (opts.outputPerMTokens !== void 0)
|
|
40441
|
+
args.output_per_m_tokens = opts.outputPerMTokens;
|
|
40442
|
+
if (opts.cachedInputPerMTokens !== void 0)
|
|
40443
|
+
args.cached_input_per_m_tokens = opts.cachedInputPerMTokens;
|
|
40444
|
+
if (opts.cacheWritePerMTokens !== void 0)
|
|
40445
|
+
args.cache_write_per_m_tokens = opts.cacheWritePerMTokens;
|
|
40446
|
+
if (opts.dimensions !== void 0)
|
|
40447
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40112
40448
|
await ctx.execute({
|
|
40113
40449
|
method: "PUT",
|
|
40114
|
-
path: "/v1/
|
|
40450
|
+
path: "/v1/ai/billing/costs/overrides",
|
|
40115
40451
|
args,
|
|
40116
40452
|
queryParamKeys: []
|
|
40117
40453
|
});
|
|
40118
40454
|
});
|
|
40119
|
-
resource.command("delete").description(`
|
|
40455
|
+
resource.command("delete-agent-cost-catalog-override").description(`Close this workspace's negotiated price override by its override.id; pricing falls back to the global registry rate. A custom cost item id passed here is a 404.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40120
40456
|
Examples:
|
|
40121
|
-
hyperline
|
|
40122
|
-
hyperline
|
|
40457
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id>
|
|
40458
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id> --output json`).action(async (opts) => {
|
|
40123
40459
|
const ctx = resource.parent?.opts()._ctx;
|
|
40124
40460
|
if (!ctx) {
|
|
40125
40461
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40137,19 +40473,15 @@ Examples:
|
|
|
40137
40473
|
}
|
|
40138
40474
|
await ctx.execute({
|
|
40139
40475
|
method: "DELETE",
|
|
40140
|
-
path: "/v1/
|
|
40476
|
+
path: "/v1/ai/billing/costs/overrides/{id}",
|
|
40141
40477
|
args,
|
|
40142
40478
|
queryParamKeys: []
|
|
40143
40479
|
});
|
|
40144
40480
|
});
|
|
40145
|
-
|
|
40146
|
-
|
|
40147
|
-
// build/commands/generated/aggregators-usage.js
|
|
40148
|
-
function registerAggregators_UsageCommands(parent) {
|
|
40149
|
-
const resource = parent.command("aggregators-usage").description("Manage aggregators > usage");
|
|
40150
|
-
resource.command("get-aggregator-usage").description(`Retrieve a usage row for an aggregator. Use the timeseries, group-by-customer or events endpoints to query metering data.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40481
|
+
resource.command("replace-agent-cost-catalog-item").description(`Replace a custom item's provider, item and dimensions, preserving historical prices and returning the new active custom_item_id.`).requiredOption("--id <value>", `id parameter`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--item <value>", `Custom item name matching the usage payload.`).requiredOption("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40151
40482
|
Examples:
|
|
40152
|
-
hyperline
|
|
40483
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions>
|
|
40484
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40153
40485
|
const ctx = resource.parent?.opts()._ctx;
|
|
40154
40486
|
if (!ctx) {
|
|
40155
40487
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40158,84 +40490,66 @@ Examples:
|
|
|
40158
40490
|
const args = {};
|
|
40159
40491
|
if (opts.id !== void 0)
|
|
40160
40492
|
args.id = opts.id;
|
|
40493
|
+
if (opts.provider !== void 0)
|
|
40494
|
+
args.provider = opts.provider;
|
|
40495
|
+
if (opts.item !== void 0)
|
|
40496
|
+
args.item = opts.item;
|
|
40497
|
+
if (opts.dimensions !== void 0)
|
|
40498
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40161
40499
|
await ctx.execute({
|
|
40162
|
-
method: "
|
|
40163
|
-
path: "/v1/
|
|
40500
|
+
method: "PUT",
|
|
40501
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40164
40502
|
args,
|
|
40165
40503
|
queryParamKeys: []
|
|
40166
40504
|
});
|
|
40167
40505
|
});
|
|
40168
|
-
|
|
40169
|
-
|
|
40170
|
-
|
|
40171
|
-
|
|
40172
|
-
|
|
40173
|
-
|
|
40174
|
-
process.stderr.write("Error: Not authenticated\n");
|
|
40175
|
-
process.exit(1);
|
|
40176
|
-
}
|
|
40177
|
-
const args = {};
|
|
40178
|
-
if (opts.id !== void 0)
|
|
40179
|
-
args.id = opts.id;
|
|
40180
|
-
if (opts.startDate !== void 0)
|
|
40181
|
-
args.start_date = opts.startDate;
|
|
40182
|
-
if (opts.endDate !== void 0)
|
|
40183
|
-
args.end_date = opts.endDate;
|
|
40184
|
-
if (opts.aggregatorFilterId !== void 0)
|
|
40185
|
-
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
40186
|
-
if (opts.groupBy !== void 0)
|
|
40187
|
-
args.group_by = opts.groupBy;
|
|
40188
|
-
await ctx.execute({
|
|
40189
|
-
method: "GET",
|
|
40190
|
-
path: "/v1/aggregators/{id}/usage/timeseries",
|
|
40191
|
-
args,
|
|
40192
|
-
queryParamKeys: [
|
|
40193
|
-
"start_date",
|
|
40194
|
-
"end_date",
|
|
40195
|
-
"aggregator_filter_id",
|
|
40196
|
-
"group_by"
|
|
40197
|
-
]
|
|
40198
|
-
});
|
|
40199
|
-
});
|
|
40200
|
-
resource.command("get-aggregator-usage-group-by-customer").description(`Per-customer total usage for an aggregator over a period, ranked by total. Paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).option("--aggregator-filter-id <value>", `Optional aggregator filter ID. When set, restricts the result to events matching that filter's config. Must belong to the aggregator in the path.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
40506
|
+
}
|
|
40507
|
+
|
|
40508
|
+
// build/commands/generated/ai-monitoring.js
|
|
40509
|
+
function registerAi_MonitoringCommands(parent) {
|
|
40510
|
+
const resource = parent.command("ai-monitoring").description("Manage ai > monitoring");
|
|
40511
|
+
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score. 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", `
|
|
40201
40512
|
Examples:
|
|
40202
|
-
hyperline
|
|
40203
|
-
hyperline
|
|
40513
|
+
hyperline ai-monitoring list-monitoring-analyses
|
|
40514
|
+
hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
40204
40515
|
const ctx = resource.parent?.opts()._ctx;
|
|
40205
40516
|
if (!ctx) {
|
|
40206
40517
|
process.stderr.write("Error: Not authenticated\n");
|
|
40207
40518
|
process.exit(1);
|
|
40208
40519
|
}
|
|
40209
40520
|
const args = {};
|
|
40210
|
-
if (opts.
|
|
40211
|
-
args.
|
|
40212
|
-
if (opts.
|
|
40213
|
-
args.
|
|
40214
|
-
if (opts.
|
|
40215
|
-
args.
|
|
40216
|
-
if (opts.
|
|
40217
|
-
args.
|
|
40218
|
-
if (opts.
|
|
40219
|
-
args.
|
|
40220
|
-
if (opts.
|
|
40221
|
-
args.
|
|
40521
|
+
if (opts.cursor !== void 0)
|
|
40522
|
+
args.cursor = opts.cursor;
|
|
40523
|
+
if (opts.includeTotal !== void 0)
|
|
40524
|
+
args.include_total = opts.includeTotal;
|
|
40525
|
+
if (opts.customerId !== void 0)
|
|
40526
|
+
args.customer_id = opts.customerId;
|
|
40527
|
+
if (opts.status !== void 0)
|
|
40528
|
+
args.status = opts.status;
|
|
40529
|
+
if (opts["createdAt.gte"] !== void 0)
|
|
40530
|
+
args.created_at__gte = opts["createdAt.gte"];
|
|
40531
|
+
if (opts["createdAt.lte"] !== void 0)
|
|
40532
|
+
args.created_at__lte = opts["createdAt.lte"];
|
|
40533
|
+
if (opts.limit !== void 0)
|
|
40534
|
+
args.limit = Number(opts.limit);
|
|
40222
40535
|
await ctx.execute({
|
|
40223
40536
|
method: "GET",
|
|
40224
|
-
path: "/v1/
|
|
40537
|
+
path: "/v1/agents/monitoring/analyses",
|
|
40225
40538
|
args,
|
|
40226
40539
|
queryParamKeys: [
|
|
40227
|
-
"
|
|
40228
|
-
"
|
|
40229
|
-
"
|
|
40230
|
-
"
|
|
40231
|
-
"
|
|
40540
|
+
"limit",
|
|
40541
|
+
"cursor",
|
|
40542
|
+
"include_total",
|
|
40543
|
+
"customer_id",
|
|
40544
|
+
"status",
|
|
40545
|
+
"created_at__gte",
|
|
40546
|
+
"created_at__lte"
|
|
40232
40547
|
]
|
|
40233
40548
|
});
|
|
40234
40549
|
});
|
|
40235
|
-
resource.command("get-
|
|
40550
|
+
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", `
|
|
40236
40551
|
Examples:
|
|
40237
|
-
hyperline
|
|
40238
|
-
hyperline aggregators-usage get-aggregator-usage-events --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
40552
|
+
hyperline ai-monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
|
|
40239
40553
|
const ctx = resource.parent?.opts()._ctx;
|
|
40240
40554
|
if (!ctx) {
|
|
40241
40555
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40244,27 +40558,11 @@ Examples:
|
|
|
40244
40558
|
const args = {};
|
|
40245
40559
|
if (opts.id !== void 0)
|
|
40246
40560
|
args.id = opts.id;
|
|
40247
|
-
if (opts.startDate !== void 0)
|
|
40248
|
-
args.start_date = opts.startDate;
|
|
40249
|
-
if (opts.endDate !== void 0)
|
|
40250
|
-
args.end_date = opts.endDate;
|
|
40251
|
-
if (opts.aggregatorFilterId !== void 0)
|
|
40252
|
-
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
40253
|
-
if (opts.take !== void 0)
|
|
40254
|
-
args.take = Number(opts.take);
|
|
40255
|
-
if (opts.skip !== void 0)
|
|
40256
|
-
args.skip = Number(opts.skip);
|
|
40257
40561
|
await ctx.execute({
|
|
40258
40562
|
method: "GET",
|
|
40259
|
-
path: "/v1/
|
|
40563
|
+
path: "/v1/agents/monitoring/analyses/{id}",
|
|
40260
40564
|
args,
|
|
40261
|
-
queryParamKeys: [
|
|
40262
|
-
"start_date",
|
|
40263
|
-
"end_date",
|
|
40264
|
-
"aggregator_filter_id",
|
|
40265
|
-
"take",
|
|
40266
|
-
"skip"
|
|
40267
|
-
]
|
|
40565
|
+
queryParamKeys: []
|
|
40268
40566
|
});
|
|
40269
40567
|
});
|
|
40270
40568
|
}
|
|
@@ -40428,7 +40726,7 @@ Examples:
|
|
|
40428
40726
|
queryParamKeys: ["take", "skip"]
|
|
40429
40727
|
});
|
|
40430
40728
|
});
|
|
40431
|
-
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40729
|
+
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40432
40730
|
Examples:
|
|
40433
40731
|
hyperline coupons create --name <name> --type <type>
|
|
40434
40732
|
hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40461,6 +40759,8 @@ Examples:
|
|
|
40461
40759
|
args.product_ids = JSON.parse(opts.productIds);
|
|
40462
40760
|
if (opts.duration !== void 0)
|
|
40463
40761
|
args.duration = JSON.parse(opts.duration);
|
|
40762
|
+
if (opts.properties !== void 0)
|
|
40763
|
+
args.properties = JSON.parse(opts.properties);
|
|
40464
40764
|
await ctx.execute({
|
|
40465
40765
|
method: "POST",
|
|
40466
40766
|
path: "/v1/coupons",
|
|
@@ -40486,7 +40786,7 @@ Examples:
|
|
|
40486
40786
|
queryParamKeys: []
|
|
40487
40787
|
});
|
|
40488
40788
|
});
|
|
40489
|
-
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40789
|
+
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40490
40790
|
Examples:
|
|
40491
40791
|
hyperline coupons update --id <id> --name <name> --type <type>
|
|
40492
40792
|
hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40521,6 +40821,8 @@ Examples:
|
|
|
40521
40821
|
args.product_ids = JSON.parse(opts.productIds);
|
|
40522
40822
|
if (opts.duration !== void 0)
|
|
40523
40823
|
args.duration = JSON.parse(opts.duration);
|
|
40824
|
+
if (opts.properties !== void 0)
|
|
40825
|
+
args.properties = JSON.parse(opts.properties);
|
|
40524
40826
|
await ctx.execute({
|
|
40525
40827
|
method: "PUT",
|
|
40526
40828
|
path: "/v1/coupons/{id}",
|
|
@@ -40752,7 +41054,7 @@ Examples:
|
|
|
40752
41054
|
queryParamKeys: []
|
|
40753
41055
|
});
|
|
40754
41056
|
});
|
|
40755
|
-
resource.command("create-custom-property").description(`Create a new custom property definition with a name, type (
|
|
41057
|
+
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", `
|
|
40756
41058
|
Examples:
|
|
40757
41059
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities>
|
|
40758
41060
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -40777,6 +41079,8 @@ Examples:
|
|
|
40777
41079
|
args.entities = JSON.parse(opts.entities);
|
|
40778
41080
|
if (opts.authorizedValues !== void 0)
|
|
40779
41081
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
41082
|
+
if (opts.defaultValue !== void 0)
|
|
41083
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
40780
41084
|
await ctx.execute({
|
|
40781
41085
|
method: "POST",
|
|
40782
41086
|
path: "/v1/custom-properties",
|
|
@@ -40784,7 +41088,7 @@ Examples:
|
|
|
40784
41088
|
queryParamKeys: []
|
|
40785
41089
|
});
|
|
40786
41090
|
});
|
|
40787
|
-
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", `
|
|
41091
|
+
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", `
|
|
40788
41092
|
Examples:
|
|
40789
41093
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities>
|
|
40790
41094
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -40811,6 +41115,8 @@ Examples:
|
|
|
40811
41115
|
args.entities = JSON.parse(opts.entities);
|
|
40812
41116
|
if (opts.authorizedValues !== void 0)
|
|
40813
41117
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
41118
|
+
if (opts.defaultValue !== void 0)
|
|
41119
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
40814
41120
|
await ctx.execute({
|
|
40815
41121
|
method: "PUT",
|
|
40816
41122
|
path: "/v1/custom-properties/{id}",
|
|
@@ -41168,7 +41474,7 @@ Customer type.
|
|
|
41168
41474
|
|
|
41169
41475
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
41170
41476
|
- \`exempt\`: The customer is exempt from tax.
|
|
41171
|
-
`).option("--registration-number <value>", `Customer registration number.`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
|
|
41477
|
+
`).option("--registration-number <value>", `Customer registration number.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
|
|
41172
41478
|
How customer invoices are issued from the parent organisation.
|
|
41173
41479
|
|
|
41174
41480
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
@@ -41197,6 +41503,8 @@ Examples:
|
|
|
41197
41503
|
args.taxability = opts.taxability;
|
|
41198
41504
|
if (opts.registrationNumber !== void 0)
|
|
41199
41505
|
args.registration_number = opts.registrationNumber;
|
|
41506
|
+
if (opts.einvoicingCode !== void 0)
|
|
41507
|
+
args.einvoicing_code = opts.einvoicingCode;
|
|
41200
41508
|
if (opts.externalId !== void 0)
|
|
41201
41509
|
args.external_id = opts.externalId;
|
|
41202
41510
|
if (opts.domain !== void 0)
|
|
@@ -41303,7 +41611,7 @@ Customer type.
|
|
|
41303
41611
|
|
|
41304
41612
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
41305
41613
|
- \`exempt\`: The customer is exempt from tax.
|
|
41306
|
-
`).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
|
|
41614
|
+
`).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
|
|
41307
41615
|
How customer invoices are issued from the parent organisation.
|
|
41308
41616
|
|
|
41309
41617
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
@@ -41334,6 +41642,8 @@ Examples:
|
|
|
41334
41642
|
args.taxability = opts.taxability;
|
|
41335
41643
|
if (opts.registrationNumber !== void 0)
|
|
41336
41644
|
args.registration_number = opts.registrationNumber;
|
|
41645
|
+
if (opts.einvoicingCode !== void 0)
|
|
41646
|
+
args.einvoicing_code = opts.einvoicingCode;
|
|
41337
41647
|
if (opts.externalId !== void 0)
|
|
41338
41648
|
args.external_id = opts.externalId;
|
|
41339
41649
|
if (opts.domain !== void 0)
|
|
@@ -41587,7 +41897,7 @@ Examples:
|
|
|
41587
41897
|
queryParamKeys: []
|
|
41588
41898
|
});
|
|
41589
41899
|
});
|
|
41590
|
-
resource.command("create-customer-address").description(`Create a shipping address with type shipping; billing creation is rejected because a customer can have at most one billing address, managed through the customer endpoint.`).requiredOption("--customer-id <value>", `customerId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).
|
|
41900
|
+
resource.command("create-customer-address").description(`Create a shipping address with type shipping; billing creation is rejected because a customer can have at most one billing address, managed through the customer endpoint.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--type <value>", `Only shipping addresses can be created here. A customer has at most one active billing address, managed through the customer or by updating its address ID.`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).option("--tax-id <value>", `Tax ID override for a shipping address. Null or blank inherits the customer's tax ID; omission on update preserves the override. Billing addresses cannot have an override.`).addHelpText("after", `
|
|
41591
41901
|
Examples:
|
|
41592
41902
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
|
|
41593
41903
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
|
|
@@ -41600,6 +41910,8 @@ Examples:
|
|
|
41600
41910
|
const args = {};
|
|
41601
41911
|
if (opts.customerId !== void 0)
|
|
41602
41912
|
args.customerId = opts.customerId;
|
|
41913
|
+
if (opts.type !== void 0)
|
|
41914
|
+
args.type = opts.type;
|
|
41603
41915
|
if (opts.name !== void 0)
|
|
41604
41916
|
args.name = opts.name;
|
|
41605
41917
|
if (opts.line1 !== void 0)
|
|
@@ -41614,8 +41926,8 @@ Examples:
|
|
|
41614
41926
|
args.state = opts.state;
|
|
41615
41927
|
if (opts.country !== void 0)
|
|
41616
41928
|
args.country = opts.country;
|
|
41617
|
-
if (opts.
|
|
41618
|
-
args.
|
|
41929
|
+
if (opts.taxId !== void 0)
|
|
41930
|
+
args.tax_id = opts.taxId;
|
|
41619
41931
|
await ctx.execute({
|
|
41620
41932
|
method: "POST",
|
|
41621
41933
|
path: "/v1/customers/{customerId}/addresses",
|
|
@@ -41623,7 +41935,7 @@ Examples:
|
|
|
41623
41935
|
queryParamKeys: []
|
|
41624
41936
|
});
|
|
41625
41937
|
});
|
|
41626
|
-
resource.command("update-customer-address").description(`Update a billing or shipping address by ID; billing changes also update the customer billing-address projection.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).addHelpText("after", `
|
|
41938
|
+
resource.command("update-customer-address").description(`Update a billing or shipping address by ID; billing changes also update the customer billing-address projection.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).option("--tax-id <value>", `Tax ID override for a shipping address. Null or blank inherits the customer's tax ID; omission on update preserves the override. Billing addresses cannot have an override.`).addHelpText("after", `
|
|
41627
41939
|
Examples:
|
|
41628
41940
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
|
|
41629
41941
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
|
|
@@ -41652,6 +41964,8 @@ Examples:
|
|
|
41652
41964
|
args.state = opts.state;
|
|
41653
41965
|
if (opts.country !== void 0)
|
|
41654
41966
|
args.country = opts.country;
|
|
41967
|
+
if (opts.taxId !== void 0)
|
|
41968
|
+
args.tax_id = opts.taxId;
|
|
41655
41969
|
await ctx.execute({
|
|
41656
41970
|
method: "PATCH",
|
|
41657
41971
|
path: "/v1/customers/{customerId}/addresses/{addressId}",
|
|
@@ -41834,7 +42148,7 @@ Examples:
|
|
|
41834
42148
|
queryParamKeys: []
|
|
41835
42149
|
});
|
|
41836
42150
|
});
|
|
41837
|
-
resource.command("list-customer-credit-transactions").description(`List all transactions (
|
|
42151
|
+
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", `
|
|
41838
42152
|
Examples:
|
|
41839
42153
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId>
|
|
41840
42154
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId> --take <take> --type <type>`).action(async (opts) => {
|
|
@@ -41923,7 +42237,7 @@ Examples:
|
|
|
41923
42237
|
queryParamKeys: []
|
|
41924
42238
|
});
|
|
41925
42239
|
});
|
|
41926
|
-
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", `
|
|
42240
|
+
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", `
|
|
41927
42241
|
Examples:
|
|
41928
42242
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count>
|
|
41929
42243
|
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>
|
|
@@ -42005,6 +42319,54 @@ Examples:
|
|
|
42005
42319
|
queryParamKeys: []
|
|
42006
42320
|
});
|
|
42007
42321
|
});
|
|
42322
|
+
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", `
|
|
42323
|
+
Examples:
|
|
42324
|
+
hyperline customers-credits get-customer-credit-portal-settings --id <id> --product-id <productId>`).action(async (opts) => {
|
|
42325
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42326
|
+
if (!ctx) {
|
|
42327
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42328
|
+
process.exit(1);
|
|
42329
|
+
}
|
|
42330
|
+
const args = {};
|
|
42331
|
+
if (opts.id !== void 0)
|
|
42332
|
+
args.id = opts.id;
|
|
42333
|
+
if (opts.productId !== void 0)
|
|
42334
|
+
args.productId = opts.productId;
|
|
42335
|
+
await ctx.execute({
|
|
42336
|
+
method: "GET",
|
|
42337
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42338
|
+
args,
|
|
42339
|
+
queryParamKeys: []
|
|
42340
|
+
});
|
|
42341
|
+
});
|
|
42342
|
+
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", `
|
|
42343
|
+
Examples:
|
|
42344
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
|
|
42345
|
+
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>
|
|
42346
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --output json`).action(async (opts) => {
|
|
42347
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42348
|
+
if (!ctx) {
|
|
42349
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42350
|
+
process.exit(1);
|
|
42351
|
+
}
|
|
42352
|
+
const args = {};
|
|
42353
|
+
if (opts.id !== void 0)
|
|
42354
|
+
args.id = opts.id;
|
|
42355
|
+
if (opts.productId !== void 0)
|
|
42356
|
+
args.productId = opts.productId;
|
|
42357
|
+
if (opts.priceConfigurationId !== void 0)
|
|
42358
|
+
args.price_configuration_id = opts.priceConfigurationId;
|
|
42359
|
+
if (opts.enabled !== void 0)
|
|
42360
|
+
args.enabled = true;
|
|
42361
|
+
if (opts.customPriceConfiguration !== void 0)
|
|
42362
|
+
args.custom_price_configuration = JSON.parse(opts.customPriceConfiguration);
|
|
42363
|
+
await ctx.execute({
|
|
42364
|
+
method: "PUT",
|
|
42365
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42366
|
+
args,
|
|
42367
|
+
queryParamKeys: []
|
|
42368
|
+
});
|
|
42369
|
+
});
|
|
42008
42370
|
}
|
|
42009
42371
|
|
|
42010
42372
|
// build/commands/generated/customers-payment-methods.js
|
|
@@ -42960,7 +43322,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
|
|
|
42960
43322
|
|
|
42961
43323
|
- \`current\`: Use the current default payment method of the customer.
|
|
42962
43324
|
- \`external\`: Manage the payment of the invoice outside of Hyperline.
|
|
42963
|
-
`).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", `
|
|
43325
|
+
`).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", `
|
|
42964
43326
|
Examples:
|
|
42965
43327
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
|
|
42966
43328
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
|
|
@@ -43011,6 +43373,8 @@ Examples:
|
|
|
43011
43373
|
args.due_at = opts.dueAt;
|
|
43012
43374
|
if (opts.settledAt !== void 0)
|
|
43013
43375
|
args.settled_at = opts.settledAt;
|
|
43376
|
+
if (opts.issuingMethod !== void 0)
|
|
43377
|
+
args.issuing_method = opts.issuingMethod;
|
|
43014
43378
|
if (opts.properties !== void 0)
|
|
43015
43379
|
args.properties = JSON.parse(opts.properties);
|
|
43016
43380
|
if (opts.customProperties !== void 0)
|
|
@@ -43132,7 +43496,7 @@ Examples:
|
|
|
43132
43496
|
queryParamKeys: []
|
|
43133
43497
|
});
|
|
43134
43498
|
});
|
|
43135
|
-
resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
|
|
43499
|
+
resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. A zero-priced paid invoice can also be voided, without a credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
|
|
43136
43500
|
Examples:
|
|
43137
43501
|
hyperline invoices void --id <id>
|
|
43138
43502
|
hyperline invoices void --id <id> --send-email
|
|
@@ -43200,7 +43564,7 @@ Examples:
|
|
|
43200
43564
|
|
|
43201
43565
|
- \`auto\`: Tax is automatically computed and applied.
|
|
43202
43566
|
- \`not_eligible\`: Tax collection is disabled for the invoice.
|
|
43203
|
-
`).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", `
|
|
43567
|
+
`).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", `
|
|
43204
43568
|
Examples:
|
|
43205
43569
|
hyperline invoices update --id <id>
|
|
43206
43570
|
hyperline invoices update --id <id> --type <type> --document-name <document_name>
|
|
@@ -43229,6 +43593,10 @@ Examples:
|
|
|
43229
43593
|
args.footer = opts.footer;
|
|
43230
43594
|
if (opts.taxScheme !== void 0)
|
|
43231
43595
|
args.tax_scheme = opts.taxScheme;
|
|
43596
|
+
if (opts.issuingMethod !== void 0)
|
|
43597
|
+
args.issuing_method = opts.issuingMethod;
|
|
43598
|
+
if (opts.emittedAt !== void 0)
|
|
43599
|
+
args.emitted_at = opts.emittedAt;
|
|
43232
43600
|
if (opts.paymentMethodType !== void 0)
|
|
43233
43601
|
args.payment_method_type = opts.paymentMethodType;
|
|
43234
43602
|
if (opts.paymentMethodId !== void 0)
|
|
@@ -43437,7 +43805,7 @@ Examples:
|
|
|
43437
43805
|
queryParamKeys: []
|
|
43438
43806
|
});
|
|
43439
43807
|
});
|
|
43440
|
-
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
|
|
43808
|
+
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", `
|
|
43441
43809
|
Examples:
|
|
43442
43810
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
43443
43811
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -43520,6 +43888,8 @@ Examples:
|
|
|
43520
43888
|
args.credit_note_wallet_refund_enabled = true;
|
|
43521
43889
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43522
43890
|
args.standalone_credit_note_creation_enabled = true;
|
|
43891
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43892
|
+
args.fx_conversion_display_enabled = true;
|
|
43523
43893
|
await ctx.execute({
|
|
43524
43894
|
method: "POST",
|
|
43525
43895
|
path: "/v1/invoicing-entities",
|
|
@@ -43527,7 +43897,7 @@ Examples:
|
|
|
43527
43897
|
queryParamKeys: []
|
|
43528
43898
|
});
|
|
43529
43899
|
});
|
|
43530
|
-
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
|
|
43900
|
+
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", `
|
|
43531
43901
|
Examples:
|
|
43532
43902
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
43533
43903
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -43602,6 +43972,8 @@ Examples:
|
|
|
43602
43972
|
args.credit_note_wallet_refund_enabled = true;
|
|
43603
43973
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43604
43974
|
args.standalone_credit_note_creation_enabled = true;
|
|
43975
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43976
|
+
args.fx_conversion_display_enabled = true;
|
|
43605
43977
|
await ctx.execute({
|
|
43606
43978
|
method: "PUT",
|
|
43607
43979
|
path: "/v1/invoicing-entities/{id}",
|
|
@@ -43916,8 +44288,46 @@ Examples:
|
|
|
43916
44288
|
if (opts.id !== void 0)
|
|
43917
44289
|
args.id = opts.id;
|
|
43918
44290
|
await ctx.execute({
|
|
43919
|
-
method: "GET",
|
|
43920
|
-
path: "/v1/price-configurations/{id}",
|
|
44291
|
+
method: "GET",
|
|
44292
|
+
path: "/v1/price-configurations/{id}",
|
|
44293
|
+
args,
|
|
44294
|
+
queryParamKeys: []
|
|
44295
|
+
});
|
|
44296
|
+
});
|
|
44297
|
+
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44298
|
+
Examples:
|
|
44299
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
|
|
44300
|
+
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>
|
|
44301
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --output json`).action(async (opts) => {
|
|
44302
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44303
|
+
if (!ctx) {
|
|
44304
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44305
|
+
process.exit(1);
|
|
44306
|
+
}
|
|
44307
|
+
const args = {};
|
|
44308
|
+
if (opts.currency !== void 0)
|
|
44309
|
+
args.currency = opts.currency;
|
|
44310
|
+
if (opts.priceBookId !== void 0)
|
|
44311
|
+
args.price_book_id = opts.priceBookId;
|
|
44312
|
+
if (opts.type !== void 0)
|
|
44313
|
+
args.type = opts.type;
|
|
44314
|
+
if (opts.productId !== void 0)
|
|
44315
|
+
args.product_id = opts.productId;
|
|
44316
|
+
if (opts.allowOnPortal !== void 0)
|
|
44317
|
+
args.allow_on_portal = true;
|
|
44318
|
+
if (opts.countries !== void 0)
|
|
44319
|
+
args.countries = JSON.parse(opts.countries);
|
|
44320
|
+
if (opts.billingInterval !== void 0)
|
|
44321
|
+
args.billing_interval = JSON.parse(opts.billingInterval);
|
|
44322
|
+
if (opts.commitmentInterval !== void 0)
|
|
44323
|
+
args.commitment_interval = JSON.parse(opts.commitmentInterval);
|
|
44324
|
+
if (opts.prices !== void 0)
|
|
44325
|
+
args.prices = JSON.parse(opts.prices);
|
|
44326
|
+
if (opts.meteringFilter !== void 0)
|
|
44327
|
+
args.metering_filter = JSON.parse(opts.meteringFilter);
|
|
44328
|
+
await ctx.execute({
|
|
44329
|
+
method: "POST",
|
|
44330
|
+
path: "/v1/price-configurations",
|
|
43921
44331
|
args,
|
|
43922
44332
|
queryParamKeys: []
|
|
43923
44333
|
});
|
|
@@ -44316,12 +44726,12 @@ Quote status.
|
|
|
44316
44726
|
- \`draft\`: The quote is a draft.
|
|
44317
44727
|
- \`approved\`: The quote is approved and ready to be sent to the customer.
|
|
44318
44728
|
- \`pending_signature\`: The quote is awaiting the customer's signature.
|
|
44319
|
-
`).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.
|
|
44729
|
+
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44320
44730
|
|
|
44321
44731
|
- \`all\`: Display all pricing tiers.
|
|
44322
44732
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
44323
44733
|
- \`none\`: Hide all pricing tiers.
|
|
44324
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--
|
|
44734
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
44325
44735
|
Examples:
|
|
44326
44736
|
hyperline quotes create --customer-id <customer_id>
|
|
44327
44737
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -44364,8 +44774,8 @@ Examples:
|
|
|
44364
44774
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
44365
44775
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
44366
44776
|
args.display_documents_in_preview = opts.displayDocumentsInPreview;
|
|
44367
|
-
if (opts.
|
|
44368
|
-
args.
|
|
44777
|
+
if (opts.subscriptionUpdateDisplay !== void 0)
|
|
44778
|
+
args.subscription_update_display = opts.subscriptionUpdateDisplay;
|
|
44369
44779
|
if (opts.generateDraftInvoices !== void 0)
|
|
44370
44780
|
args.generate_draft_invoices = opts.generateDraftInvoices;
|
|
44371
44781
|
if (opts.templateId !== void 0)
|
|
@@ -44374,6 +44784,8 @@ Examples:
|
|
|
44374
44784
|
args.expires_at = opts.expiresAt;
|
|
44375
44785
|
if (opts.amount !== void 0)
|
|
44376
44786
|
args.amount = Number(opts.amount);
|
|
44787
|
+
if (opts.contractValue !== void 0)
|
|
44788
|
+
args.contract_value = Number(opts.contractValue);
|
|
44377
44789
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
44378
44790
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
44379
44791
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -44608,12 +45020,12 @@ Examples:
|
|
|
44608
45020
|
queryParamKeys: []
|
|
44609
45021
|
});
|
|
44610
45022
|
});
|
|
44611
|
-
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.
|
|
45023
|
+
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value. Set to \`null\` to go back to the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44612
45024
|
|
|
44613
45025
|
- \`all\`: Display all pricing tiers.
|
|
44614
45026
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
44615
45027
|
- \`none\`: Hide all pricing tiers.
|
|
44616
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--
|
|
45028
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
44617
45029
|
Examples:
|
|
44618
45030
|
hyperline quotes update --id <id>
|
|
44619
45031
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -44652,8 +45064,8 @@ Examples:
|
|
|
44652
45064
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
44653
45065
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
44654
45066
|
args.display_documents_in_preview = opts.displayDocumentsInPreview;
|
|
44655
|
-
if (opts.
|
|
44656
|
-
args.
|
|
45067
|
+
if (opts.subscriptionUpdateDisplay !== void 0)
|
|
45068
|
+
args.subscription_update_display = opts.subscriptionUpdateDisplay;
|
|
44657
45069
|
if (opts.generateDraftInvoices !== void 0)
|
|
44658
45070
|
args.generate_draft_invoices = opts.generateDraftInvoices;
|
|
44659
45071
|
if (opts.crmOpportunityId !== void 0)
|
|
@@ -44662,6 +45074,8 @@ Examples:
|
|
|
44662
45074
|
args.expires_at = opts.expiresAt;
|
|
44663
45075
|
if (opts.amount !== void 0)
|
|
44664
45076
|
args.amount = Number(opts.amount);
|
|
45077
|
+
if (opts.contractValue !== void 0)
|
|
45078
|
+
args.contract_value = Number(opts.contractValue);
|
|
44665
45079
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
44666
45080
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
44667
45081
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -44677,10 +45091,10 @@ Examples:
|
|
|
44677
45091
|
queryParamKeys: []
|
|
44678
45092
|
});
|
|
44679
45093
|
});
|
|
44680
|
-
resource.command("
|
|
45094
|
+
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", `
|
|
44681
45095
|
Examples:
|
|
44682
|
-
hyperline quotes
|
|
44683
|
-
hyperline quotes
|
|
45096
|
+
hyperline quotes duplicate --id <id>
|
|
45097
|
+
hyperline quotes duplicate --id <id> --output json`).action(async (opts) => {
|
|
44684
45098
|
const ctx = resource.parent?.opts()._ctx;
|
|
44685
45099
|
if (!ctx) {
|
|
44686
45100
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44689,19 +45103,17 @@ Examples:
|
|
|
44689
45103
|
const args = {};
|
|
44690
45104
|
if (opts.id !== void 0)
|
|
44691
45105
|
args.id = opts.id;
|
|
44692
|
-
if (opts.locale !== void 0)
|
|
44693
|
-
args.locale = opts.locale;
|
|
44694
45106
|
await ctx.execute({
|
|
44695
|
-
method: "
|
|
44696
|
-
path: "/v1/quotes/{id}/
|
|
45107
|
+
method: "POST",
|
|
45108
|
+
path: "/v1/quotes/{id}/duplicate",
|
|
44697
45109
|
args,
|
|
44698
|
-
queryParamKeys: [
|
|
45110
|
+
queryParamKeys: []
|
|
44699
45111
|
});
|
|
44700
45112
|
});
|
|
44701
|
-
resource.command("
|
|
45113
|
+
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", `
|
|
44702
45114
|
Examples:
|
|
44703
|
-
hyperline quotes
|
|
44704
|
-
hyperline quotes
|
|
45115
|
+
hyperline quotes download --id <id>
|
|
45116
|
+
hyperline quotes download --id <id> --locale <locale>`).action(async (opts) => {
|
|
44705
45117
|
const ctx = resource.parent?.opts()._ctx;
|
|
44706
45118
|
if (!ctx) {
|
|
44707
45119
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44710,16 +45122,19 @@ Examples:
|
|
|
44710
45122
|
const args = {};
|
|
44711
45123
|
if (opts.id !== void 0)
|
|
44712
45124
|
args.id = opts.id;
|
|
45125
|
+
if (opts.locale !== void 0)
|
|
45126
|
+
args.locale = opts.locale;
|
|
44713
45127
|
await ctx.execute({
|
|
44714
|
-
method: "
|
|
44715
|
-
path: "/v1/quotes/{id}/
|
|
45128
|
+
method: "GET",
|
|
45129
|
+
path: "/v1/quotes/{id}/download",
|
|
44716
45130
|
args,
|
|
44717
|
-
queryParamKeys: []
|
|
45131
|
+
queryParamKeys: ["locale"]
|
|
44718
45132
|
});
|
|
44719
45133
|
});
|
|
44720
|
-
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", `
|
|
45134
|
+
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", `
|
|
44721
45135
|
Examples:
|
|
44722
45136
|
hyperline quotes finalize --id <id>
|
|
45137
|
+
hyperline quotes finalize --id <id> --requester-comment <requester_comment>
|
|
44723
45138
|
hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
|
|
44724
45139
|
const ctx = resource.parent?.opts()._ctx;
|
|
44725
45140
|
if (!ctx) {
|
|
@@ -44729,6 +45144,8 @@ Examples:
|
|
|
44729
45144
|
const args = {};
|
|
44730
45145
|
if (opts.id !== void 0)
|
|
44731
45146
|
args.id = opts.id;
|
|
45147
|
+
if (opts.requesterComment !== void 0)
|
|
45148
|
+
args.requester_comment = opts.requesterComment;
|
|
44732
45149
|
await ctx.execute({
|
|
44733
45150
|
method: "POST",
|
|
44734
45151
|
path: "/v1/quotes/{id}/finalize",
|
|
@@ -44736,11 +45153,11 @@ Examples:
|
|
|
44736
45153
|
queryParamKeys: []
|
|
44737
45154
|
});
|
|
44738
45155
|
});
|
|
44739
|
-
resource.command("send").description(`Send a quote by email for customer signature. Requires the quote to be approved first.`).requiredOption("--id <value>", `id parameter`).
|
|
45156
|
+
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", `
|
|
44740
45157
|
Examples:
|
|
44741
|
-
hyperline quotes send --id <id>
|
|
45158
|
+
hyperline quotes send --id <id>
|
|
44742
45159
|
hyperline quotes send --id <id> --email <email> --message <message>
|
|
44743
|
-
hyperline quotes send --id <id> --
|
|
45160
|
+
hyperline quotes send --id <id> --output json`).action(async (opts) => {
|
|
44744
45161
|
const ctx = resource.parent?.opts()._ctx;
|
|
44745
45162
|
if (!ctx) {
|
|
44746
45163
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44760,6 +45177,51 @@ Examples:
|
|
|
44760
45177
|
queryParamKeys: []
|
|
44761
45178
|
});
|
|
44762
45179
|
});
|
|
45180
|
+
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", `
|
|
45181
|
+
Examples:
|
|
45182
|
+
hyperline quotes list-quote-signers --id <id>`).action(async (opts) => {
|
|
45183
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45184
|
+
if (!ctx) {
|
|
45185
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45186
|
+
process.exit(1);
|
|
45187
|
+
}
|
|
45188
|
+
const args = {};
|
|
45189
|
+
if (opts.id !== void 0)
|
|
45190
|
+
args.id = opts.id;
|
|
45191
|
+
await ctx.execute({
|
|
45192
|
+
method: "GET",
|
|
45193
|
+
path: "/v1/quotes/{id}/signers",
|
|
45194
|
+
args,
|
|
45195
|
+
queryParamKeys: []
|
|
45196
|
+
});
|
|
45197
|
+
});
|
|
45198
|
+
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>", `
|
|
45199
|
+
Signature workflow of the quote, replaced as a whole.
|
|
45200
|
+
|
|
45201
|
+
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.
|
|
45202
|
+
|
|
45203
|
+
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.
|
|
45204
|
+
`).addHelpText("after", `
|
|
45205
|
+
Examples:
|
|
45206
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers>
|
|
45207
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers> --output json`).action(async (opts) => {
|
|
45208
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45209
|
+
if (!ctx) {
|
|
45210
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45211
|
+
process.exit(1);
|
|
45212
|
+
}
|
|
45213
|
+
const args = {};
|
|
45214
|
+
if (opts.id !== void 0)
|
|
45215
|
+
args.id = opts.id;
|
|
45216
|
+
if (opts.signers !== void 0)
|
|
45217
|
+
args.signers = JSON.parse(opts.signers);
|
|
45218
|
+
await ctx.execute({
|
|
45219
|
+
method: "PUT",
|
|
45220
|
+
path: "/v1/quotes/{id}/signers",
|
|
45221
|
+
args,
|
|
45222
|
+
queryParamKeys: []
|
|
45223
|
+
});
|
|
45224
|
+
});
|
|
44763
45225
|
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", `
|
|
44764
45226
|
Examples:
|
|
44765
45227
|
hyperline quotes sign --id <id>
|
|
@@ -44843,6 +45305,48 @@ Examples:
|
|
|
44843
45305
|
});
|
|
44844
45306
|
}
|
|
44845
45307
|
|
|
45308
|
+
// build/commands/generated/quotes-approvals.js
|
|
45309
|
+
function registerQuotes_ApprovalsCommands(parent) {
|
|
45310
|
+
const resource = parent.command("quotes-approvals").description("Manage quotes > approvals");
|
|
45311
|
+
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", `
|
|
45312
|
+
Examples:
|
|
45313
|
+
hyperline quotes-approvals approve-quote --id <id>
|
|
45314
|
+
hyperline quotes-approvals approve-quote --id <id> --output json`).action(async (opts) => {
|
|
45315
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45316
|
+
if (!ctx) {
|
|
45317
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45318
|
+
process.exit(1);
|
|
45319
|
+
}
|
|
45320
|
+
const args = {};
|
|
45321
|
+
if (opts.id !== void 0)
|
|
45322
|
+
args.id = opts.id;
|
|
45323
|
+
await ctx.execute({
|
|
45324
|
+
method: "POST",
|
|
45325
|
+
path: "/v1/quotes/{id}/approve",
|
|
45326
|
+
args,
|
|
45327
|
+
queryParamKeys: []
|
|
45328
|
+
});
|
|
45329
|
+
});
|
|
45330
|
+
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", `
|
|
45331
|
+
Examples:
|
|
45332
|
+
hyperline quotes-approvals get-quote-approvals --id <id>`).action(async (opts) => {
|
|
45333
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45334
|
+
if (!ctx) {
|
|
45335
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45336
|
+
process.exit(1);
|
|
45337
|
+
}
|
|
45338
|
+
const args = {};
|
|
45339
|
+
if (opts.id !== void 0)
|
|
45340
|
+
args.id = opts.id;
|
|
45341
|
+
await ctx.execute({
|
|
45342
|
+
method: "GET",
|
|
45343
|
+
path: "/v1/quotes/{id}/approvals",
|
|
45344
|
+
args,
|
|
45345
|
+
queryParamKeys: []
|
|
45346
|
+
});
|
|
45347
|
+
});
|
|
45348
|
+
}
|
|
45349
|
+
|
|
44846
45350
|
// build/commands/generated/quotes-templates.js
|
|
44847
45351
|
function registerQuotes_TemplatesCommands(parent) {
|
|
44848
45352
|
const resource = parent.command("quotes-templates").description("Manage quotes > templates");
|
|
@@ -45042,7 +45546,7 @@ Examples:
|
|
|
45042
45546
|
queryParamKeys: []
|
|
45043
45547
|
});
|
|
45044
45548
|
});
|
|
45045
|
-
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", `
|
|
45549
|
+
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", `
|
|
45046
45550
|
Examples:
|
|
45047
45551
|
hyperline subscriptions cancel --id <id>
|
|
45048
45552
|
hyperline subscriptions cancel --id <id> --cancel-at <cancel_at> --reason <reason>
|
|
@@ -45070,9 +45574,10 @@ Examples:
|
|
|
45070
45574
|
queryParamKeys: []
|
|
45071
45575
|
});
|
|
45072
45576
|
});
|
|
45073
|
-
resource.command("reinstate").description(`Reinstate a subscription
|
|
45577
|
+
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", `
|
|
45074
45578
|
Examples:
|
|
45075
45579
|
hyperline subscriptions reinstate --id <id>
|
|
45580
|
+
hyperline subscriptions reinstate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
45076
45581
|
hyperline subscriptions reinstate --id <id> --output json`).action(async (opts) => {
|
|
45077
45582
|
const ctx = resource.parent?.opts()._ctx;
|
|
45078
45583
|
if (!ctx) {
|
|
@@ -45082,6 +45587,12 @@ Examples:
|
|
|
45082
45587
|
const args = {};
|
|
45083
45588
|
if (opts.id !== void 0)
|
|
45084
45589
|
args.id = opts.id;
|
|
45590
|
+
if (opts.reactivateAt !== void 0)
|
|
45591
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45592
|
+
if (opts.invoicingMode !== void 0)
|
|
45593
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45594
|
+
if (opts.chargeLineItems !== void 0)
|
|
45595
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
45085
45596
|
await ctx.execute({
|
|
45086
45597
|
method: "POST",
|
|
45087
45598
|
path: "/v1/subscriptions/{id}/reinstate",
|
|
@@ -45089,7 +45600,7 @@ Examples:
|
|
|
45089
45600
|
queryParamKeys: []
|
|
45090
45601
|
});
|
|
45091
45602
|
});
|
|
45092
|
-
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.
|
|
45603
|
+
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", `
|
|
45093
45604
|
Examples:
|
|
45094
45605
|
hyperline subscriptions pause --id <id>
|
|
45095
45606
|
hyperline subscriptions pause --id <id> --reactivate-at <reactivate_at>
|
|
@@ -45130,9 +45641,10 @@ Examples:
|
|
|
45130
45641
|
queryParamKeys: []
|
|
45131
45642
|
});
|
|
45132
45643
|
});
|
|
45133
|
-
resource.command("reactivate").description(`Resume a paused subscription,
|
|
45644
|
+
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", `
|
|
45134
45645
|
Examples:
|
|
45135
45646
|
hyperline subscriptions reactivate --id <id>
|
|
45647
|
+
hyperline subscriptions reactivate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
45136
45648
|
hyperline subscriptions reactivate --id <id> --output json`).action(async (opts) => {
|
|
45137
45649
|
const ctx = resource.parent?.opts()._ctx;
|
|
45138
45650
|
if (!ctx) {
|
|
@@ -45142,6 +45654,12 @@ Examples:
|
|
|
45142
45654
|
const args = {};
|
|
45143
45655
|
if (opts.id !== void 0)
|
|
45144
45656
|
args.id = opts.id;
|
|
45657
|
+
if (opts.reactivateAt !== void 0)
|
|
45658
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45659
|
+
if (opts.invoicingMode !== void 0)
|
|
45660
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45661
|
+
if (opts.chargeLineItems !== void 0)
|
|
45662
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
45145
45663
|
await ctx.execute({
|
|
45146
45664
|
method: "POST",
|
|
45147
45665
|
path: "/v1/subscriptions/{id}/reactivate",
|
|
@@ -46725,10 +47243,11 @@ function registerAllCommands(program2) {
|
|
|
46725
47243
|
registerAccounting_ReportsCommands(program2);
|
|
46726
47244
|
registerAccounting_Revenue_RecognitionCommands(program2);
|
|
46727
47245
|
registerAccounting_RulesCommands(program2);
|
|
46728
|
-
registerAgentsCommands(program2);
|
|
46729
47246
|
registerCustom_PropertiesCommands(program2);
|
|
46730
47247
|
registerAggregatorsCommands(program2);
|
|
46731
47248
|
registerAggregators_UsageCommands(program2);
|
|
47249
|
+
registerAi_BillingCommands(program2);
|
|
47250
|
+
registerAi_CostsCommands(program2);
|
|
46732
47251
|
registerAnalyticsCommands(program2);
|
|
46733
47252
|
registerBank_AccountsCommands(program2);
|
|
46734
47253
|
registerCompaniesCommands(program2);
|
|
@@ -46747,11 +47266,13 @@ function registerAllCommands(program2) {
|
|
|
46747
47266
|
registerInvoicesCommands(program2);
|
|
46748
47267
|
registerInvoices_TransactionsCommands(program2);
|
|
46749
47268
|
registerInvoicing_EntitiesCommands(program2);
|
|
47269
|
+
registerAi_MonitoringCommands(program2);
|
|
46750
47270
|
registerPaymentsCommands(program2);
|
|
46751
47271
|
registerProductsCommands(program2);
|
|
46752
47272
|
registerPrice_ConfigurationsCommands(program2);
|
|
46753
47273
|
registerQuotesCommands(program2);
|
|
46754
47274
|
registerQuotes_TemplatesCommands(program2);
|
|
47275
|
+
registerQuotes_ApprovalsCommands(program2);
|
|
46755
47276
|
registerSubscriptions_TemplatesCommands(program2);
|
|
46756
47277
|
registerSubscriptionsCommands(program2);
|
|
46757
47278
|
registerSubscriptions_TransitionsCommands(program2);
|
|
@@ -62715,6 +63236,25 @@ var DomainSchema = external_exports.string().trim().toLowerCase().regex(/^(?!:\/
|
|
|
62715
63236
|
example: "acme.com"
|
|
62716
63237
|
});
|
|
62717
63238
|
|
|
63239
|
+
// ../hyperline-lib/build/http/dto/emailStatus.js
|
|
63240
|
+
var EmailStatusSchema = external_exports.enum([
|
|
63241
|
+
"sent",
|
|
63242
|
+
"delivered",
|
|
63243
|
+
"opened",
|
|
63244
|
+
"clicked",
|
|
63245
|
+
"spammed",
|
|
63246
|
+
"bounced",
|
|
63247
|
+
"queued",
|
|
63248
|
+
"drafted",
|
|
63249
|
+
"attempted",
|
|
63250
|
+
"failed",
|
|
63251
|
+
"undeliverable",
|
|
63252
|
+
"converted",
|
|
63253
|
+
"suppressed",
|
|
63254
|
+
"unsubscribed",
|
|
63255
|
+
"dropped"
|
|
63256
|
+
]);
|
|
63257
|
+
|
|
62718
63258
|
// ../hyperline-lib/build/http/dto/error.js
|
|
62719
63259
|
var ErrorSchema = external_exports.object({
|
|
62720
63260
|
message: external_exports.string()
|
|
@@ -62743,17 +63283,18 @@ var languages = [
|
|
|
62743
63283
|
|
|
62744
63284
|
// ../hyperline-i18n/build/locales/de.js
|
|
62745
63285
|
var de = {
|
|
62746
|
-
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
62747
|
-
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
62748
|
-
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
62749
63286
|
"accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
|
|
62750
|
-
"accounting.
|
|
63287
|
+
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
63288
|
+
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
62751
63289
|
"accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62752
63290
|
"accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62753
63291
|
"accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62754
|
-
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
62755
63292
|
"accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62756
63293
|
"accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
|
|
63294
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
|
|
63295
|
+
"accounting.transactionChargedBack.entryDescription": "R\xFCckbuchung f\xFCr Rechnung {{invoiceId}}",
|
|
63296
|
+
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
63297
|
+
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
62757
63298
|
"creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
|
|
62758
63299
|
"credits.bundleOf": "{{productName}} - Paket mit {{creditCount}} Guthaben",
|
|
62759
63300
|
"credits.unitsOf": "{{productName}} - {{creditCount}} Guthaben",
|
|
@@ -62767,9 +63308,9 @@ var de = {
|
|
|
62767
63308
|
"invoices.prorata.paymentForItemFullPeriod": "Zahlung f\xFCr",
|
|
62768
63309
|
"invoices.prorata.refundForItem": "Anteilig erstatteter Betrag f\xFCr",
|
|
62769
63310
|
"invoices.prorata.refundForItemFullPeriod": "Erstattung f\xFCr",
|
|
62770
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben",
|
|
62771
63311
|
"subscriptions.closingChargeName": "Abschlussgeb\xFChr f\xFCr das Abonnement",
|
|
62772
63312
|
"subscriptions.correction": "Vorperiodische Anpassung",
|
|
63313
|
+
"subscriptions.reinstatementRechargeName": "Wiederherstellungsgeb\xFChr f\xFCr den stornierten Zeitraum",
|
|
62773
63314
|
"subscriptions.updates.addCoupon": "Gutschein hinzuf\xFCgen {{couponName}}",
|
|
62774
63315
|
"subscriptions.updates.addProduct": "{{productName}} hinzuf\xFCgen",
|
|
62775
63316
|
"subscriptions.updates.removeCoupon": "Gutschein entfernen {{couponName}}",
|
|
@@ -62784,7 +63325,8 @@ var de = {
|
|
|
62784
63325
|
"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",
|
|
62785
63326
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Diese Position wurde f\xFCr den anteiligen Zeitraum in Rechnung gestellt",
|
|
62786
63327
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Betrag von {{amount}} f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
|
|
62787
|
-
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren"
|
|
63328
|
+
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren",
|
|
63329
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben"
|
|
62788
63330
|
};
|
|
62789
63331
|
|
|
62790
63332
|
// ../hyperline-i18n/build/locales/en.js
|
|
@@ -62801,6 +63343,7 @@ var en = {
|
|
|
62801
63343
|
"invoices.prorata.refundForItemFullPeriod": "Refund for",
|
|
62802
63344
|
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 expired balance",
|
|
62803
63345
|
"subscriptions.closingChargeName": "Closing fee for subscription",
|
|
63346
|
+
"subscriptions.reinstatementRechargeName": "Reinstatement recharge of canceled period",
|
|
62804
63347
|
"subscriptions.correction": "Adjustment previous period",
|
|
62805
63348
|
"subscriptions.updates.addCoupon": "Add coupon {{couponName}}",
|
|
62806
63349
|
"subscriptions.updates.addProduct": "Add {{productName}}",
|
|
@@ -62820,6 +63363,7 @@ var en = {
|
|
|
62820
63363
|
"accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
|
|
62821
63364
|
"accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
|
|
62822
63365
|
"accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
|
|
63366
|
+
"accounting.transactionChargedBack.entryDescription": "Chargeback for Invoice {{invoiceId}}",
|
|
62823
63367
|
"accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
|
|
62824
63368
|
"accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
|
|
62825
63369
|
"accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
|
|
@@ -62835,17 +63379,18 @@ var en = {
|
|
|
62835
63379
|
|
|
62836
63380
|
// ../hyperline-i18n/build/locales/es.js
|
|
62837
63381
|
var es = {
|
|
62838
|
-
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
62839
|
-
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62840
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
62841
63382
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
|
|
62842
|
-
"accounting.
|
|
63383
|
+
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
63384
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62843
63385
|
"accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62844
63386
|
"accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62845
63387
|
"accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62846
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62847
63388
|
"accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62848
63389
|
"accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63390
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63391
|
+
"accounting.transactionChargedBack.entryDescription": "Contracargo de la factura {{invoiceId}}",
|
|
63392
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
63393
|
+
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62849
63394
|
"creditNotes.refundChargeName": "Reembolso por factura",
|
|
62850
63395
|
"credits.bundleOf": "{{productName}} - Paquete de {{creditCount}} cr\xE9ditos",
|
|
62851
63396
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
@@ -62859,9 +63404,9 @@ var es = {
|
|
|
62859
63404
|
"invoices.prorata.paymentForItemFullPeriod": "Pago por",
|
|
62860
63405
|
"invoices.prorata.refundForItem": "Reembolso prorrateado por",
|
|
62861
63406
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
62862
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado",
|
|
62863
63407
|
"subscriptions.closingChargeName": "Cargo por cierre de suscripci\xF3n",
|
|
62864
63408
|
"subscriptions.correction": "Ajuste del periodo anterior",
|
|
63409
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reinstalaci\xF3n del per\xEDodo cancelado",
|
|
62865
63410
|
"subscriptions.updates.addCoupon": "A\xF1adir cup\xF3n {{couponName}}",
|
|
62866
63411
|
"subscriptions.updates.addProduct": "A\xF1adir {{productName}}",
|
|
62867
63412
|
"subscriptions.updates.removeCoupon": "Eliminar cup\xF3n {{couponName}}",
|
|
@@ -62876,22 +63421,24 @@ var es = {
|
|
|
62876
63421
|
"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",
|
|
62877
63422
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta l\xEDnea ha sido facturada para el per\xEDodo prorrateado",
|
|
62878
63423
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importe de {{amount}} no facturado para el per\xEDodo prorrateado",
|
|
62879
|
-
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}"
|
|
63424
|
+
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}",
|
|
63425
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado"
|
|
62880
63426
|
};
|
|
62881
63427
|
|
|
62882
63428
|
// ../hyperline-i18n/build/locales/fr.js
|
|
62883
63429
|
var fr = {
|
|
63430
|
+
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
63431
|
+
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
63432
|
+
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62884
63433
|
"accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62885
63434
|
"accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62886
63435
|
"accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62887
|
-
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62888
63436
|
"accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62889
|
-
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
62890
|
-
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62891
|
-
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
62892
|
-
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
62893
|
-
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
62894
63437
|
"accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
|
|
63438
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
63439
|
+
"accounting.transactionChargedBack.entryDescription": "R\xE9trofacturation de la facture {{invoiceId}}",
|
|
63440
|
+
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
63441
|
+
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62895
63442
|
"creditNotes.refundChargeName": "Remboursement pour facture",
|
|
62896
63443
|
"credits.bundleOf": "{{productName}} - Pack de {{creditCount}} cr\xE9dits",
|
|
62897
63444
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9dits",
|
|
@@ -62905,9 +63452,9 @@ var fr = {
|
|
|
62905
63452
|
"invoices.prorata.paymentForItemFullPeriod": "Paiement pour",
|
|
62906
63453
|
"invoices.prorata.refundForItem": "Remboursement au prorata pour",
|
|
62907
63454
|
"invoices.prorata.refundForItemFullPeriod": "Remboursement pour",
|
|
62908
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9",
|
|
62909
63455
|
"subscriptions.closingChargeName": "Frais de cl\xF4ture pour abonnement",
|
|
62910
63456
|
"subscriptions.correction": "Ajustement p\xE9riode pr\xE9c\xE9dente",
|
|
63457
|
+
"subscriptions.reinstatementRechargeName": "Recharge de r\xE9tablissement de la p\xE9riode annul\xE9e",
|
|
62911
63458
|
"subscriptions.updates.addCoupon": "Ajout du coupon {{couponName}}",
|
|
62912
63459
|
"subscriptions.updates.addProduct": "Ajout {{productName}}",
|
|
62913
63460
|
"subscriptions.updates.removeCoupon": "Retrait du coupon {{couponName}}",
|
|
@@ -62922,22 +63469,24 @@ var fr = {
|
|
|
62922
63469
|
"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",
|
|
62923
63470
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Cette ligne a \xE9t\xE9 factur\xE9e pour la p\xE9riode proratis\xE9e",
|
|
62924
63471
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Montant de {{amount}} non factur\xE9 pour la p\xE9riode proratis\xE9e",
|
|
62925
|
-
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}"
|
|
63472
|
+
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}",
|
|
63473
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9"
|
|
62926
63474
|
};
|
|
62927
63475
|
|
|
62928
63476
|
// ../hyperline-i18n/build/locales/it.js
|
|
62929
63477
|
var it = {
|
|
62930
|
-
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
62931
|
-
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62932
|
-
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
62933
63478
|
"accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
|
|
62934
|
-
"accounting.
|
|
63479
|
+
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
63480
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62935
63481
|
"accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62936
63482
|
"accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62937
63483
|
"accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62938
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62939
63484
|
"accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62940
63485
|
"accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
|
|
63486
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
|
|
63487
|
+
"accounting.transactionChargedBack.entryDescription": "Riaddebito per la fattura {{invoiceId}}",
|
|
63488
|
+
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
63489
|
+
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62941
63490
|
"creditNotes.refundChargeName": "Rimborso per fattura",
|
|
62942
63491
|
"credits.bundleOf": "{{productName}} - Pacchetto di {{creditCount}} crediti",
|
|
62943
63492
|
"credits.unitsOf": "{{productName}} - {{creditCount}} crediti",
|
|
@@ -62951,9 +63500,9 @@ var it = {
|
|
|
62951
63500
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento per",
|
|
62952
63501
|
"invoices.prorata.refundForItem": "Rimborso proporzionale per",
|
|
62953
63502
|
"invoices.prorata.refundForItemFullPeriod": "Rimborso per",
|
|
62954
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto",
|
|
62955
63503
|
"subscriptions.closingChargeName": "Costo di chiusura per abbonamento",
|
|
62956
63504
|
"subscriptions.correction": "Correzione periodo precedente",
|
|
63505
|
+
"subscriptions.reinstatementRechargeName": "Ricarica di reintegrazione del periodo annullato",
|
|
62957
63506
|
"subscriptions.updates.addCoupon": "Aggiungi coupon {{couponName}}",
|
|
62958
63507
|
"subscriptions.updates.addProduct": "Aggiungi {{productName}}",
|
|
62959
63508
|
"subscriptions.updates.removeCoupon": "Rimuovi coupon {{couponName}}",
|
|
@@ -62968,14 +63517,30 @@ var it = {
|
|
|
62968
63517
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Importo di {{amount}} (con un minimo impegnato di {{committedCount}}) non fatturato per il periodo proporzionato",
|
|
62969
63518
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Questa voce \xE8 stata fatturata per il periodo proporzionato",
|
|
62970
63519
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importo di {{amount}} non fatturato per il periodo proporzionato",
|
|
62971
|
-
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}"
|
|
63520
|
+
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}",
|
|
63521
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto"
|
|
62972
63522
|
};
|
|
62973
63523
|
|
|
62974
63524
|
// ../hyperline-i18n/build/locales/lt.js
|
|
62975
63525
|
var lt = {
|
|
63526
|
+
"accounting.creditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}} s\u0105skaitai fakt\u016Brai {{invoiceId}}",
|
|
63527
|
+
"accounting.invoicePosted.entryDescription": "I\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros {{invoiceId}} registravimo \u012Fra\u0161as",
|
|
63528
|
+
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63529
|
+
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63530
|
+
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63531
|
+
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63532
|
+
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63533
|
+
"accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
|
|
63534
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
|
|
63535
|
+
"accounting.transactionChargedBack.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} u\u017Egin\u010Dyto mok\u0117jimo gr\u0105\u017Einimas",
|
|
63536
|
+
"accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
|
|
63537
|
+
"accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
|
|
62976
63538
|
"creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
|
|
62977
63539
|
"credits.bundleOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173 paketas",
|
|
62978
63540
|
"credits.unitsOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173",
|
|
63541
|
+
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
|
|
63542
|
+
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63543
|
+
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
62979
63544
|
"invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
|
|
62980
63545
|
"invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
|
|
62981
63546
|
"invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
|
|
@@ -62983,53 +63548,41 @@ var lt = {
|
|
|
62983
63548
|
"invoices.prorata.paymentForItemFullPeriod": "Mok\u0117jimas u\u017E",
|
|
62984
63549
|
"invoices.prorata.refundForItem": "Proporcingas gr\u0105\u017Einimas u\u017E",
|
|
62985
63550
|
"invoices.prorata.refundForItemFullPeriod": "Gr\u0105\u017Einimas u\u017E",
|
|
62986
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis",
|
|
62987
63551
|
"subscriptions.closingChargeName": "Prenumeratos u\u017Ebaigimo mokestis",
|
|
62988
63552
|
"subscriptions.correction": "Ankstesnio laikotarpio koregavimas",
|
|
63553
|
+
"subscriptions.reinstatementRechargeName": "Atnaujinimo \u012Fmokos u\u017E nutraukt\u0105 laikotarp\u012F",
|
|
62989
63554
|
"subscriptions.updates.addCoupon": "Prid\u0117ti kupon\u0105 {{couponName}}",
|
|
62990
63555
|
"subscriptions.updates.addProduct": "Prid\u0117ti {{productName}}",
|
|
62991
63556
|
"subscriptions.updates.removeCoupon": "Pa\u0161alinti kupon\u0105 {{couponName}}",
|
|
62992
63557
|
"subscriptions.updates.removeProduct": "Pa\u0161alinti {{productName}}",
|
|
62993
63558
|
"subscriptions.updates.unit": "vnt.",
|
|
62994
|
-
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
62995
63559
|
"subscriptions.updates.updateCount": "Atnaujinti {{productName}} kiek\u012F ({{previousCount}} \u2192 {{newCount}} {{unit}})",
|
|
62996
|
-
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
62997
|
-
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
62998
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
62999
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63000
63560
|
"subscriptions.updates.updateCount.description.full.committed.invoiced": "Visam laikotarpiui pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63001
63561
|
"subscriptions.updates.updateCount.description.full.committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63002
63562
|
"subscriptions.updates.updateCount.description.full.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 visam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63003
63563
|
"subscriptions.updates.updateCount.description.full.not_committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63004
|
-
"
|
|
63005
|
-
"
|
|
63006
|
-
"
|
|
63007
|
-
"
|
|
63008
|
-
"
|
|
63009
|
-
"
|
|
63010
|
-
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63011
|
-
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63012
|
-
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63013
|
-
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63014
|
-
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63015
|
-
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63016
|
-
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63017
|
-
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s"
|
|
63564
|
+
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63565
|
+
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63566
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63567
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63568
|
+
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
63569
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis"
|
|
63018
63570
|
};
|
|
63019
63571
|
|
|
63020
63572
|
// ../hyperline-i18n/build/locales/nl.js
|
|
63021
63573
|
var nl = {
|
|
63022
|
-
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63023
|
-
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
63024
|
-
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63025
63574
|
"accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
|
|
63026
|
-
"accounting.
|
|
63575
|
+
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63576
|
+
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
63027
63577
|
"accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63028
63578
|
"accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63029
63579
|
"accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63030
|
-
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
63031
63580
|
"accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63032
63581
|
"accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
|
|
63582
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
|
|
63583
|
+
"accounting.transactionChargedBack.entryDescription": "Terugboeking voor factuur {{invoiceId}}",
|
|
63584
|
+
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63585
|
+
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
63033
63586
|
"creditNotes.refundChargeName": "Terugbetaling voor factuur",
|
|
63034
63587
|
"credits.bundleOf": "{{productName}} - Bundel van {{creditCount}} credits",
|
|
63035
63588
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
@@ -63043,9 +63596,9 @@ var nl = {
|
|
|
63043
63596
|
"invoices.prorata.paymentForItemFullPeriod": "Betaling voor",
|
|
63044
63597
|
"invoices.prorata.refundForItem": "Gedeeltelijke terugbetaling voor",
|
|
63045
63598
|
"invoices.prorata.refundForItemFullPeriod": "Terugbetaling voor",
|
|
63046
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo",
|
|
63047
63599
|
"subscriptions.closingChargeName": "Afsluitkosten voor abonnement",
|
|
63048
63600
|
"subscriptions.correction": "Aanpassing vorige periode",
|
|
63601
|
+
"subscriptions.reinstatementRechargeName": "Herstelkosten van geannuleerde periode",
|
|
63049
63602
|
"subscriptions.updates.addCoupon": "Coupon toevoegen {{couponName}}",
|
|
63050
63603
|
"subscriptions.updates.addProduct": "{{productName}} toevoegen",
|
|
63051
63604
|
"subscriptions.updates.removeCoupon": "Coupon verwijderen {{couponName}}",
|
|
@@ -63060,22 +63613,24 @@ var nl = {
|
|
|
63060
63613
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Bedrag van {{amount}} (met een minimaal toegezegd aantal van {{committedCount}}) niet gefactureerd voor de geproportioneerde periode",
|
|
63061
63614
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Deze regel is gefactureerd voor de geproportioneerde periode",
|
|
63062
63615
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Bedrag van {{amount}} niet gefactureerd voor de geproportioneerde periode",
|
|
63063
|
-
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}"
|
|
63616
|
+
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}",
|
|
63617
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo"
|
|
63064
63618
|
};
|
|
63065
63619
|
|
|
63066
63620
|
// ../hyperline-i18n/build/locales/pl.js
|
|
63067
63621
|
var pl = {
|
|
63068
|
-
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63069
|
-
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63070
|
-
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63071
63622
|
"accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
|
|
63072
|
-
"accounting.
|
|
63623
|
+
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63624
|
+
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
63073
63625
|
"accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63074
63626
|
"accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63075
63627
|
"accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63076
|
-
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
63077
63628
|
"accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63078
63629
|
"accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
|
|
63630
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
|
|
63631
|
+
"accounting.transactionChargedBack.entryDescription": "Obci\u0105\u017Cenie zwrotne za faktur\u0119 {{invoiceId}}",
|
|
63632
|
+
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63633
|
+
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63079
63634
|
"creditNotes.refundChargeName": "Zwrot za faktur\u0119",
|
|
63080
63635
|
"credits.bundleOf": "{{productName}} - Pakiet {{creditCount}} kredyt\xF3w",
|
|
63081
63636
|
"credits.unitsOf": "{{productName}} - {{creditCount}} kredyt\xF3w",
|
|
@@ -63089,9 +63644,9 @@ var pl = {
|
|
|
63089
63644
|
"invoices.prorata.paymentForItemFullPeriod": "P\u0142atno\u015B\u0107 za",
|
|
63090
63645
|
"invoices.prorata.refundForItem": "Zwrot proporcjonalny za",
|
|
63091
63646
|
"invoices.prorata.refundForItemFullPeriod": "Zwrot za",
|
|
63092
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo",
|
|
63093
63647
|
"subscriptions.closingChargeName": "Op\u0142ata za zamkni\u0119cie subskrypcji",
|
|
63094
63648
|
"subscriptions.correction": "Korekta poprzedniego okresu",
|
|
63649
|
+
"subscriptions.reinstatementRechargeName": "Op\u0142ata za przywr\xF3cenie anulowanego okresu",
|
|
63095
63650
|
"subscriptions.updates.addCoupon": "Dodaj kupon {{couponName}}",
|
|
63096
63651
|
"subscriptions.updates.addProduct": "Dodaj {{productName}}",
|
|
63097
63652
|
"subscriptions.updates.removeCoupon": "Usu\u0144 kupon {{couponName}}",
|
|
@@ -63106,22 +63661,24 @@ var pl = {
|
|
|
63106
63661
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Kwota {{amount}} (z minimaln\u0105 zobowi\u0105zan\u0105 ilo\u015Bci\u0105 {{committedCount}}) niefakturowana za okres proporcjonalny",
|
|
63107
63662
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Ta pozycja zosta\u0142a zafakturowana za okres proporcjonalny",
|
|
63108
63663
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Kwota {{amount}} niefakturowana za okres proporcjonalny",
|
|
63109
|
-
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}"
|
|
63664
|
+
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}",
|
|
63665
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo"
|
|
63110
63666
|
};
|
|
63111
63667
|
|
|
63112
63668
|
// ../hyperline-i18n/build/locales/pt.js
|
|
63113
63669
|
var pt = {
|
|
63114
|
-
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63115
|
-
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63116
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63117
63670
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
|
|
63118
|
-
"accounting.
|
|
63671
|
+
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63672
|
+
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
63119
63673
|
"accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63120
63674
|
"accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63121
63675
|
"accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63122
|
-
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
63123
63676
|
"accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63124
63677
|
"accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63678
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63679
|
+
"accounting.transactionChargedBack.entryDescription": "Estorno da fatura {{invoiceId}}",
|
|
63680
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63681
|
+
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63125
63682
|
"creditNotes.refundChargeName": "Reembolso pela fatura",
|
|
63126
63683
|
"credits.bundleOf": "{{productName}} - Pacote de {{creditCount}} cr\xE9ditos",
|
|
63127
63684
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
@@ -63135,9 +63692,9 @@ var pt = {
|
|
|
63135
63692
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento por",
|
|
63136
63693
|
"invoices.prorata.refundForItem": "Reembolso proporcional por",
|
|
63137
63694
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
63138
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado",
|
|
63139
63695
|
"subscriptions.closingChargeName": "Taxa de encerramento da assinatura",
|
|
63140
63696
|
"subscriptions.correction": "Ajuste do per\xEDodo anterior",
|
|
63697
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reintegra\xE7\xE3o do per\xEDodo cancelado",
|
|
63141
63698
|
"subscriptions.updates.addCoupon": "Adicionar cupom {{couponName}}",
|
|
63142
63699
|
"subscriptions.updates.addProduct": "Adicionar {{productName}}",
|
|
63143
63700
|
"subscriptions.updates.removeCoupon": "Remover cupom {{couponName}}",
|
|
@@ -63152,7 +63709,8 @@ var pt = {
|
|
|
63152
63709
|
"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",
|
|
63153
63710
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta linha foi faturada para o per\xEDodo proporcional",
|
|
63154
63711
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Valor de {{amount}} n\xE3o faturado para o per\xEDodo proporcional",
|
|
63155
|
-
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}"
|
|
63712
|
+
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}",
|
|
63713
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado"
|
|
63156
63714
|
};
|
|
63157
63715
|
|
|
63158
63716
|
// ../hyperline-i18n/build/language.js
|
|
@@ -65846,6 +66404,8 @@ var usStates = [
|
|
|
65846
66404
|
|
|
65847
66405
|
// ../hyperline-lib/build/utils/dates.js
|
|
65848
66406
|
var import_shared2 = __toESM(require_shared(), 1);
|
|
66407
|
+
var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
|
|
66408
|
+
var DST_SHIFT_MS = 60 * 60 * 1e3;
|
|
65849
66409
|
|
|
65850
66410
|
// ../hyperline-lib/build/utils/document.js
|
|
65851
66411
|
var import_shared3 = __toESM(require_shared(), 1);
|
|
@@ -65857,6 +66417,11 @@ import * as https from "node:https";
|
|
|
65857
66417
|
import { createHash as createHash2 } from "node:crypto";
|
|
65858
66418
|
import { deepEqual } from "fast-equals";
|
|
65859
66419
|
|
|
66420
|
+
// ../hyperline-lib/build/utils/realignDatesToTimezone.js
|
|
66421
|
+
var import_shared4 = __toESM(require_shared(), 1);
|
|
66422
|
+
var MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1e3;
|
|
66423
|
+
var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
|
|
66424
|
+
|
|
65860
66425
|
// ../hyperline-lib/build/utils/api/filterBuilder.js
|
|
65861
66426
|
var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
|
|
65862
66427
|
var booleanAuthorizedOperators = [
|
|
@@ -65923,7 +66488,151 @@ var isAxiosError = axios.isAxiosError;
|
|
|
65923
66488
|
|
|
65924
66489
|
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
65925
66490
|
import axios2 from "axios";
|
|
65926
|
-
import axiosRetry, { isNetworkOrIdempotentRequestError } from "axios-retry";
|
|
66491
|
+
import axiosRetry, { isNetworkOrIdempotentRequestError, retryAfter } from "axios-retry";
|
|
66492
|
+
|
|
66493
|
+
// ../hyperline-lib/build/httpClient/logRedaction.js
|
|
66494
|
+
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
66495
|
+
"accesstoken",
|
|
66496
|
+
"apikey",
|
|
66497
|
+
"apitoken",
|
|
66498
|
+
"assertion",
|
|
66499
|
+
"authtoken",
|
|
66500
|
+
"clientassertion",
|
|
66501
|
+
"codeverifier",
|
|
66502
|
+
"credentials",
|
|
66503
|
+
"idtoken",
|
|
66504
|
+
"privatekey",
|
|
66505
|
+
"refreshtoken",
|
|
66506
|
+
"sessiontoken",
|
|
66507
|
+
"token"
|
|
66508
|
+
]);
|
|
66509
|
+
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password)$/;
|
|
66510
|
+
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|password|assertion|verifier|credentials/i;
|
|
66511
|
+
var REDACTED_VALUE = "<redacted>";
|
|
66512
|
+
var MAX_REDACTION_DEPTH = 10;
|
|
66513
|
+
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
66514
|
+
var MAX_VISITED_NODES = 1e3;
|
|
66515
|
+
var MAX_CONTAINER_ENTRIES = MAX_VISITED_NODES;
|
|
66516
|
+
function redactLogBody({ body }) {
|
|
66517
|
+
return redactValue({
|
|
66518
|
+
value: body,
|
|
66519
|
+
depth: MAX_REDACTION_DEPTH,
|
|
66520
|
+
budget: { remainingNodes: MAX_VISITED_NODES }
|
|
66521
|
+
});
|
|
66522
|
+
}
|
|
66523
|
+
function redactLogUrl({ url: url2 }) {
|
|
66524
|
+
const queryIndex = url2.indexOf("?");
|
|
66525
|
+
if (queryIndex === -1 || url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
66526
|
+
return url2;
|
|
66527
|
+
}
|
|
66528
|
+
const redactedQuery = redactFormEncoded({ text: url2.slice(queryIndex + 1) });
|
|
66529
|
+
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
66530
|
+
}
|
|
66531
|
+
function redactValue({ value, depth, budget }) {
|
|
66532
|
+
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
66533
|
+
return value;
|
|
66534
|
+
}
|
|
66535
|
+
budget.remainingNodes -= 1;
|
|
66536
|
+
if (typeof value === "string") {
|
|
66537
|
+
return redactString({ text: value, budget });
|
|
66538
|
+
}
|
|
66539
|
+
if (value instanceof URLSearchParams) {
|
|
66540
|
+
return redactFormEncoded({ text: value.toString() }) ?? value;
|
|
66541
|
+
}
|
|
66542
|
+
if (Array.isArray(value)) {
|
|
66543
|
+
return redactArray({ items: value, depth, budget });
|
|
66544
|
+
}
|
|
66545
|
+
if (isPlainObject2(value)) {
|
|
66546
|
+
return redactObject({ record: value, depth, budget });
|
|
66547
|
+
}
|
|
66548
|
+
return value;
|
|
66549
|
+
}
|
|
66550
|
+
function redactArray({ items, depth, budget }) {
|
|
66551
|
+
if (items.length > MAX_CONTAINER_ENTRIES) {
|
|
66552
|
+
return items;
|
|
66553
|
+
}
|
|
66554
|
+
let redactedItems;
|
|
66555
|
+
for (const [index, item] of items.entries()) {
|
|
66556
|
+
if (budget.remainingNodes <= 0) {
|
|
66557
|
+
break;
|
|
66558
|
+
}
|
|
66559
|
+
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
66560
|
+
if (redactedItem !== item) {
|
|
66561
|
+
redactedItems ??= [...items];
|
|
66562
|
+
redactedItems[index] = redactedItem;
|
|
66563
|
+
}
|
|
66564
|
+
}
|
|
66565
|
+
return redactedItems ?? items;
|
|
66566
|
+
}
|
|
66567
|
+
function redactObject({ record: record2, depth, budget }) {
|
|
66568
|
+
const redactedEntries = /* @__PURE__ */ new Map();
|
|
66569
|
+
let entryCount = 0;
|
|
66570
|
+
for (const key in record2) {
|
|
66571
|
+
if (!Object.hasOwn(record2, key)) {
|
|
66572
|
+
continue;
|
|
66573
|
+
}
|
|
66574
|
+
entryCount += 1;
|
|
66575
|
+
if (entryCount > MAX_CONTAINER_ENTRIES) {
|
|
66576
|
+
return record2;
|
|
66577
|
+
}
|
|
66578
|
+
if (budget.remainingNodes <= 0) {
|
|
66579
|
+
break;
|
|
66580
|
+
}
|
|
66581
|
+
const nestedValue = record2[key];
|
|
66582
|
+
const redactedNestedValue = isRedactedKey({ key }) && nestedValue != null ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
66583
|
+
if (redactedNestedValue !== nestedValue) {
|
|
66584
|
+
redactedEntries.set(key, redactedNestedValue);
|
|
66585
|
+
}
|
|
66586
|
+
}
|
|
66587
|
+
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
66588
|
+
}
|
|
66589
|
+
function redactString({ text, budget }) {
|
|
66590
|
+
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
66591
|
+
return text;
|
|
66592
|
+
}
|
|
66593
|
+
const trimmedText = text.trim();
|
|
66594
|
+
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
66595
|
+
try {
|
|
66596
|
+
const parsedValue = JSON.parse(trimmedText);
|
|
66597
|
+
const redactedValue = redactValue({
|
|
66598
|
+
value: parsedValue,
|
|
66599
|
+
depth: MAX_REDACTION_DEPTH,
|
|
66600
|
+
budget
|
|
66601
|
+
});
|
|
66602
|
+
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
66603
|
+
} catch {
|
|
66604
|
+
return text;
|
|
66605
|
+
}
|
|
66606
|
+
}
|
|
66607
|
+
return redactFormEncoded({ text }) ?? text;
|
|
66608
|
+
}
|
|
66609
|
+
function redactFormEncoded({ text }) {
|
|
66610
|
+
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
66611
|
+
return void 0;
|
|
66612
|
+
}
|
|
66613
|
+
const params = new URLSearchParams(text);
|
|
66614
|
+
let hasRedactedParam = false;
|
|
66615
|
+
for (const key of new Set(params.keys())) {
|
|
66616
|
+
if (isRedactedKey({ key })) {
|
|
66617
|
+
params.set(key, REDACTED_VALUE);
|
|
66618
|
+
hasRedactedParam = true;
|
|
66619
|
+
}
|
|
66620
|
+
}
|
|
66621
|
+
return hasRedactedParam ? params.toString() : void 0;
|
|
66622
|
+
}
|
|
66623
|
+
function isRedactedKey({ key }) {
|
|
66624
|
+
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
66625
|
+
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
66626
|
+
}
|
|
66627
|
+
function isPlainObject2(value) {
|
|
66628
|
+
if (typeof value !== "object" || value === null) {
|
|
66629
|
+
return false;
|
|
66630
|
+
}
|
|
66631
|
+
const prototype = Object.getPrototypeOf(value);
|
|
66632
|
+
return prototype === Object.prototype || prototype === null;
|
|
66633
|
+
}
|
|
66634
|
+
|
|
66635
|
+
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
65927
66636
|
import { AxiosError } from "axios";
|
|
65928
66637
|
var recommendedRetryConfig = {
|
|
65929
66638
|
retries: 3,
|
|
@@ -65991,13 +66700,14 @@ function isTooManyRequestsError(error48) {
|
|
|
65991
66700
|
return error48.response?.status === 429;
|
|
65992
66701
|
}
|
|
65993
66702
|
var toLogRequest = (config4) => {
|
|
66703
|
+
const url2 = redactLogUrl({ url: config4.url ?? "" });
|
|
65994
66704
|
return {
|
|
65995
66705
|
method: config4.method ?? "",
|
|
65996
|
-
url:
|
|
65997
|
-
path:
|
|
66706
|
+
url: url2,
|
|
66707
|
+
path: url2,
|
|
65998
66708
|
hostname: config4.baseURL ?? "",
|
|
65999
|
-
originalUrl: `${config4.baseURL ?? ""}${
|
|
66000
|
-
body: config4.data,
|
|
66709
|
+
originalUrl: `${config4.baseURL ?? ""}${url2}`,
|
|
66710
|
+
body: redactLogBody({ body: config4.data }),
|
|
66001
66711
|
headers: {}
|
|
66002
66712
|
};
|
|
66003
66713
|
};
|