@hyperline/cli 0.1.0-build.1.89030d4 → 0.1.0-build.1.89a21ba
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 +2772 -361
- package/package.json +1 -4
|
@@ -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_zod23 = require_lib();
|
|
34989
34989
|
var countryIds2 = ["all", ...countries.map(({ id }) => id)];
|
|
34990
|
-
var ZodId =
|
|
34991
|
-
var ZodTranslationsSchemaFn = (schema) =>
|
|
34990
|
+
var ZodId = import_zod23.z.enum(countryIds2);
|
|
34991
|
+
var ZodTranslationsSchemaFn = (schema) => import_zod23.z.record(import_zod23.z.string(), schema.optional());
|
|
34992
34992
|
var UsStates = [
|
|
34993
34993
|
{ id: "AA", name: "Armed Forces Americas" },
|
|
34994
34994
|
{ id: "AE", name: "Armed Forces Europe" },
|
|
@@ -36287,14 +36287,14 @@ var require_shared = __commonJS({
|
|
|
36287
36287
|
ZodNumberCurrencyPositiveValue: () => ZodNumberCurrencyPositiveValue,
|
|
36288
36288
|
ZodNumberCurrencyPositiveValueExcludingZero: () => ZodNumberCurrencyPositiveValueExcludingZero
|
|
36289
36289
|
});
|
|
36290
|
-
var
|
|
36291
|
-
var ZodCurrencyId =
|
|
36290
|
+
var import_zod24 = require_lib();
|
|
36291
|
+
var ZodCurrencyId = import_zod24.z.enum(
|
|
36292
36292
|
all_default.map(({ id }) => id)
|
|
36293
36293
|
);
|
|
36294
|
-
var ZodNumberCurrency =
|
|
36295
|
-
var ZodNumberCurrencyPositiveValue =
|
|
36296
|
-
var ZodNumberCurrencyPositiveValueExcludingZero =
|
|
36297
|
-
var ZodCurrencyMap =
|
|
36294
|
+
var ZodNumberCurrency = import_zod24.z.string().or(import_zod24.z.number().transform((number4) => number4)).transform((number4) => number4);
|
|
36295
|
+
var ZodNumberCurrencyPositiveValue = import_zod24.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
|
|
36296
|
+
var ZodNumberCurrencyPositiveValueExcludingZero = import_zod24.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
|
|
36297
|
+
var ZodCurrencyMap = import_zod24.z.record(ZodNumberCurrency).refine(
|
|
36298
36298
|
(data) => Object.keys(data).every((key) => ZodCurrencyId.safeParse(key).success),
|
|
36299
36299
|
{
|
|
36300
36300
|
message: "Invalid currency key.",
|
|
@@ -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("--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,12 +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;
|
|
39276
|
+
if (opts.invoiceType !== void 0)
|
|
39277
|
+
args.invoice_type = opts.invoiceType;
|
|
39211
39278
|
if (opts.intervalPeriod !== void 0)
|
|
39212
39279
|
args.interval_period = opts.intervalPeriod;
|
|
39213
39280
|
if (opts.intervalCount !== void 0)
|
|
39214
39281
|
args.interval_count = Number(opts.intervalCount);
|
|
39282
|
+
if (opts.customProperties !== void 0)
|
|
39283
|
+
args.custom_properties = JSON.parse(opts.customProperties);
|
|
39215
39284
|
await ctx.execute({
|
|
39216
39285
|
method: "POST",
|
|
39217
39286
|
path: "/v1/accounting/rules/resolve",
|
|
@@ -39221,57 +39290,81 @@ Examples:
|
|
|
39221
39290
|
});
|
|
39222
39291
|
}
|
|
39223
39292
|
|
|
39224
|
-
// build/commands/generated/
|
|
39225
|
-
function
|
|
39226
|
-
const resource = parent.command("
|
|
39227
|
-
resource.command("
|
|
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", `
|
|
39228
39297
|
Examples:
|
|
39229
|
-
hyperline
|
|
39230
|
-
hyperline
|
|
39298
|
+
hyperline aggregators list
|
|
39299
|
+
hyperline aggregators list --take <take>`).action(async (opts) => {
|
|
39231
39300
|
const ctx = resource.parent?.opts()._ctx;
|
|
39232
39301
|
if (!ctx) {
|
|
39233
39302
|
process.stderr.write("Error: Not authenticated\n");
|
|
39234
39303
|
process.exit(1);
|
|
39235
39304
|
}
|
|
39236
39305
|
const args = {};
|
|
39237
|
-
if (opts.
|
|
39238
|
-
args.
|
|
39306
|
+
if (opts.take !== void 0)
|
|
39307
|
+
args.take = Number(opts.take);
|
|
39308
|
+
if (opts.skip !== void 0)
|
|
39309
|
+
args.skip = Number(opts.skip);
|
|
39239
39310
|
await ctx.execute({
|
|
39240
39311
|
method: "GET",
|
|
39241
|
-
path: "/v1/
|
|
39312
|
+
path: "/v1/aggregators",
|
|
39242
39313
|
args,
|
|
39243
|
-
queryParamKeys: ["
|
|
39314
|
+
queryParamKeys: ["take", "skip"]
|
|
39244
39315
|
});
|
|
39245
39316
|
});
|
|
39246
|
-
|
|
39247
|
-
|
|
39248
|
-
// build/commands/generated/bank-accounts.js
|
|
39249
|
-
function registerBank_AccountsCommands(parent) {
|
|
39250
|
-
const resource = parent.command("bank-accounts").description("Manage bank accounts");
|
|
39251
|
-
resource.command("list").description(`List all bank accounts configured on the account. Returns paginated results with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).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", `
|
|
39252
39318
|
Examples:
|
|
39253
|
-
hyperline
|
|
39254
|
-
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) => {
|
|
39255
39322
|
const ctx = resource.parent?.opts()._ctx;
|
|
39256
39323
|
if (!ctx) {
|
|
39257
39324
|
process.stderr.write("Error: Not authenticated\n");
|
|
39258
39325
|
process.exit(1);
|
|
39259
39326
|
}
|
|
39260
39327
|
const args = {};
|
|
39261
|
-
if (opts.
|
|
39262
|
-
args.
|
|
39263
|
-
if (opts.
|
|
39264
|
-
args.
|
|
39328
|
+
if (opts.entity !== void 0)
|
|
39329
|
+
args.entity = opts.entity;
|
|
39330
|
+
if (opts.type !== void 0)
|
|
39331
|
+
args.type = opts.type;
|
|
39332
|
+
if (opts.name !== void 0)
|
|
39333
|
+
args.name = opts.name;
|
|
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);
|
|
39265
39358
|
await ctx.execute({
|
|
39266
|
-
method: "
|
|
39267
|
-
path: "/v1/
|
|
39359
|
+
method: "POST",
|
|
39360
|
+
path: "/v1/aggregators",
|
|
39268
39361
|
args,
|
|
39269
|
-
queryParamKeys: [
|
|
39362
|
+
queryParamKeys: []
|
|
39270
39363
|
});
|
|
39271
39364
|
});
|
|
39272
|
-
resource.command("get").description(`Retrieve a specific
|
|
39365
|
+
resource.command("get").description(`Retrieve a specific aggregator by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39273
39366
|
Examples:
|
|
39274
|
-
hyperline
|
|
39367
|
+
hyperline aggregators get --id <id>`).action(async (opts) => {
|
|
39275
39368
|
const ctx = resource.parent?.opts()._ctx;
|
|
39276
39369
|
if (!ctx) {
|
|
39277
39370
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39282,15 +39375,16 @@ Examples:
|
|
|
39282
39375
|
args.id = opts.id;
|
|
39283
39376
|
await ctx.execute({
|
|
39284
39377
|
method: "GET",
|
|
39285
|
-
path: "/v1/
|
|
39378
|
+
path: "/v1/aggregators/{id}",
|
|
39286
39379
|
args,
|
|
39287
39380
|
queryParamKeys: []
|
|
39288
39381
|
});
|
|
39289
39382
|
});
|
|
39290
|
-
resource.command("
|
|
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", `
|
|
39291
39384
|
Examples:
|
|
39292
|
-
hyperline
|
|
39293
|
-
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) => {
|
|
39294
39388
|
const ctx = resource.parent?.opts()._ctx;
|
|
39295
39389
|
if (!ctx) {
|
|
39296
39390
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39299,92 +39393,240 @@ Examples:
|
|
|
39299
39393
|
const args = {};
|
|
39300
39394
|
if (opts.id !== void 0)
|
|
39301
39395
|
args.id = opts.id;
|
|
39302
|
-
if (opts.
|
|
39303
|
-
args.
|
|
39304
|
-
if (opts.
|
|
39305
|
-
args.
|
|
39306
|
-
if (opts.
|
|
39307
|
-
args.
|
|
39396
|
+
if (opts.entity !== void 0)
|
|
39397
|
+
args.entity = opts.entity;
|
|
39398
|
+
if (opts.type !== void 0)
|
|
39399
|
+
args.type = opts.type;
|
|
39400
|
+
if (opts.name !== void 0)
|
|
39401
|
+
args.name = opts.name;
|
|
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);
|
|
39308
39426
|
await ctx.execute({
|
|
39309
|
-
method: "
|
|
39310
|
-
path: "/v1/
|
|
39427
|
+
method: "PUT",
|
|
39428
|
+
path: "/v1/aggregators/{id}",
|
|
39311
39429
|
args,
|
|
39312
|
-
queryParamKeys: [
|
|
39430
|
+
queryParamKeys: []
|
|
39431
|
+
});
|
|
39432
|
+
});
|
|
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", `
|
|
39434
|
+
Examples:
|
|
39435
|
+
hyperline aggregators delete --id <id>
|
|
39436
|
+
hyperline aggregators delete --id <id> --output json`).action(async (opts) => {
|
|
39437
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39438
|
+
if (!ctx) {
|
|
39439
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39440
|
+
process.exit(1);
|
|
39441
|
+
}
|
|
39442
|
+
const args = {};
|
|
39443
|
+
if (opts.id !== void 0)
|
|
39444
|
+
args.id = opts.id;
|
|
39445
|
+
if (!opts.yes) {
|
|
39446
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39447
|
+
if (!confirmed) {
|
|
39448
|
+
process.stdout.write("Aborted.\n");
|
|
39449
|
+
return;
|
|
39450
|
+
}
|
|
39451
|
+
}
|
|
39452
|
+
await ctx.execute({
|
|
39453
|
+
method: "DELETE",
|
|
39454
|
+
path: "/v1/aggregators/{id}",
|
|
39455
|
+
args,
|
|
39456
|
+
queryParamKeys: []
|
|
39313
39457
|
});
|
|
39314
39458
|
});
|
|
39315
39459
|
}
|
|
39316
39460
|
|
|
39317
|
-
// build/commands/generated/
|
|
39318
|
-
function
|
|
39319
|
-
const resource = parent.command("
|
|
39320
|
-
resource.command("
|
|
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", `
|
|
39321
39465
|
Examples:
|
|
39322
|
-
hyperline
|
|
39466
|
+
hyperline aggregators-usage get-aggregator-usage --id <id>`).action(async (opts) => {
|
|
39323
39467
|
const ctx = resource.parent?.opts()._ctx;
|
|
39324
39468
|
if (!ctx) {
|
|
39325
39469
|
process.stderr.write("Error: Not authenticated\n");
|
|
39326
39470
|
process.exit(1);
|
|
39327
39471
|
}
|
|
39328
39472
|
const args = {};
|
|
39473
|
+
if (opts.id !== void 0)
|
|
39474
|
+
args.id = opts.id;
|
|
39329
39475
|
await ctx.execute({
|
|
39330
39476
|
method: "GET",
|
|
39331
|
-
path: "/v1/
|
|
39477
|
+
path: "/v1/aggregators/{id}/usage",
|
|
39332
39478
|
args,
|
|
39333
39479
|
queryParamKeys: []
|
|
39334
39480
|
});
|
|
39335
39481
|
});
|
|
39336
|
-
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", `
|
|
39337
39483
|
Examples:
|
|
39338
|
-
hyperline
|
|
39339
|
-
hyperline
|
|
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) => {
|
|
39340
39486
|
const ctx = resource.parent?.opts()._ctx;
|
|
39341
39487
|
if (!ctx) {
|
|
39342
39488
|
process.stderr.write("Error: Not authenticated\n");
|
|
39343
39489
|
process.exit(1);
|
|
39344
39490
|
}
|
|
39345
39491
|
const args = {};
|
|
39346
|
-
if (opts.
|
|
39347
|
-
args.
|
|
39348
|
-
if (opts.
|
|
39349
|
-
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;
|
|
39350
39502
|
await ctx.execute({
|
|
39351
|
-
method: "
|
|
39352
|
-
path: "/v1/
|
|
39503
|
+
method: "GET",
|
|
39504
|
+
path: "/v1/aggregators/{id}/usage/timeseries",
|
|
39353
39505
|
args,
|
|
39354
|
-
queryParamKeys: [
|
|
39506
|
+
queryParamKeys: [
|
|
39507
|
+
"start_date",
|
|
39508
|
+
"end_date",
|
|
39509
|
+
"aggregator_filter_id",
|
|
39510
|
+
"group_by"
|
|
39511
|
+
]
|
|
39512
|
+
});
|
|
39513
|
+
});
|
|
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", `
|
|
39515
|
+
Examples:
|
|
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) => {
|
|
39518
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39519
|
+
if (!ctx) {
|
|
39520
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39521
|
+
process.exit(1);
|
|
39522
|
+
}
|
|
39523
|
+
const args = {};
|
|
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);
|
|
39536
|
+
await ctx.execute({
|
|
39537
|
+
method: "GET",
|
|
39538
|
+
path: "/v1/aggregators/{id}/usage/group-by-customer",
|
|
39539
|
+
args,
|
|
39540
|
+
queryParamKeys: [
|
|
39541
|
+
"start_date",
|
|
39542
|
+
"end_date",
|
|
39543
|
+
"aggregator_filter_id",
|
|
39544
|
+
"take",
|
|
39545
|
+
"skip"
|
|
39546
|
+
]
|
|
39547
|
+
});
|
|
39548
|
+
});
|
|
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", `
|
|
39550
|
+
Examples:
|
|
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) => {
|
|
39553
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39554
|
+
if (!ctx) {
|
|
39555
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39556
|
+
process.exit(1);
|
|
39557
|
+
}
|
|
39558
|
+
const 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;
|
|
39567
|
+
if (opts.take !== void 0)
|
|
39568
|
+
args.take = Number(opts.take);
|
|
39569
|
+
if (opts.skip !== void 0)
|
|
39570
|
+
args.skip = Number(opts.skip);
|
|
39571
|
+
await ctx.execute({
|
|
39572
|
+
method: "GET",
|
|
39573
|
+
path: "/v1/aggregators/{id}/usage/events",
|
|
39574
|
+
args,
|
|
39575
|
+
queryParamKeys: [
|
|
39576
|
+
"start_date",
|
|
39577
|
+
"end_date",
|
|
39578
|
+
"aggregator_filter_id",
|
|
39579
|
+
"take",
|
|
39580
|
+
"skip"
|
|
39581
|
+
]
|
|
39355
39582
|
});
|
|
39356
39583
|
});
|
|
39357
39584
|
}
|
|
39358
39585
|
|
|
39359
|
-
// build/commands/generated/
|
|
39360
|
-
function
|
|
39361
|
-
const resource = parent.command("
|
|
39362
|
-
resource.command("list").description(`List
|
|
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", `
|
|
39363
39594
|
Examples:
|
|
39364
|
-
hyperline
|
|
39365
|
-
hyperline
|
|
39595
|
+
hyperline ai-billing list-agent-plans
|
|
39596
|
+
hyperline ai-billing list-agent-plans --mode <mode> --take <take>`).action(async (opts) => {
|
|
39366
39597
|
const ctx = resource.parent?.opts()._ctx;
|
|
39367
39598
|
if (!ctx) {
|
|
39368
39599
|
process.stderr.write("Error: Not authenticated\n");
|
|
39369
39600
|
process.exit(1);
|
|
39370
39601
|
}
|
|
39371
39602
|
const args = {};
|
|
39603
|
+
if (opts.mode !== void 0)
|
|
39604
|
+
args.mode = opts.mode;
|
|
39372
39605
|
if (opts.take !== void 0)
|
|
39373
39606
|
args.take = Number(opts.take);
|
|
39374
39607
|
if (opts.skip !== void 0)
|
|
39375
39608
|
args.skip = Number(opts.skip);
|
|
39376
39609
|
await ctx.execute({
|
|
39377
39610
|
method: "GET",
|
|
39378
|
-
path: "/v1/
|
|
39611
|
+
path: "/v1/ai/billing/plans",
|
|
39379
39612
|
args,
|
|
39380
|
-
queryParamKeys: ["take", "skip"]
|
|
39613
|
+
queryParamKeys: ["mode", "take", "skip"]
|
|
39381
39614
|
});
|
|
39382
39615
|
});
|
|
39383
|
-
resource.command("create").description(`Create
|
|
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", `
|
|
39384
39626
|
Examples:
|
|
39385
|
-
hyperline
|
|
39386
|
-
hyperline
|
|
39387
|
-
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) => {
|
|
39388
39630
|
const ctx = resource.parent?.opts()._ctx;
|
|
39389
39631
|
if (!ctx) {
|
|
39390
39632
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39393,105 +39635,83 @@ Examples:
|
|
|
39393
39635
|
const args = {};
|
|
39394
39636
|
if (opts.name !== void 0)
|
|
39395
39637
|
args.name = opts.name;
|
|
39396
|
-
if (opts.
|
|
39397
|
-
args.
|
|
39398
|
-
if (opts.
|
|
39399
|
-
args.
|
|
39400
|
-
if (opts.
|
|
39401
|
-
args.
|
|
39402
|
-
if (opts.
|
|
39403
|
-
args.
|
|
39404
|
-
if (opts.
|
|
39405
|
-
args.
|
|
39406
|
-
if (opts.
|
|
39407
|
-
args.
|
|
39408
|
-
if (opts.
|
|
39409
|
-
args.
|
|
39410
|
-
if (opts.
|
|
39411
|
-
args.
|
|
39412
|
-
if (opts.
|
|
39413
|
-
args.
|
|
39414
|
-
if (opts.
|
|
39415
|
-
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);
|
|
39416
39660
|
await ctx.execute({
|
|
39417
39661
|
method: "POST",
|
|
39418
|
-
path: "/v1/
|
|
39662
|
+
path: "/v1/ai/billing/plans",
|
|
39419
39663
|
args,
|
|
39420
39664
|
queryParamKeys: []
|
|
39421
39665
|
});
|
|
39422
39666
|
});
|
|
39423
|
-
resource.command("get").description(`
|
|
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", `
|
|
39424
39668
|
Examples:
|
|
39425
|
-
hyperline
|
|
39669
|
+
hyperline ai-billing get-agent-default-plan`).action(async (_opts) => {
|
|
39426
39670
|
const ctx = resource.parent?.opts()._ctx;
|
|
39427
39671
|
if (!ctx) {
|
|
39428
39672
|
process.stderr.write("Error: Not authenticated\n");
|
|
39429
39673
|
process.exit(1);
|
|
39430
39674
|
}
|
|
39431
39675
|
const args = {};
|
|
39432
|
-
if (opts.id !== void 0)
|
|
39433
|
-
args.id = opts.id;
|
|
39434
39676
|
await ctx.execute({
|
|
39435
39677
|
method: "GET",
|
|
39436
|
-
path: "/v1/
|
|
39678
|
+
path: "/v1/ai/billing/plans/default",
|
|
39437
39679
|
args,
|
|
39438
39680
|
queryParamKeys: []
|
|
39439
39681
|
});
|
|
39440
39682
|
});
|
|
39441
|
-
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", `
|
|
39442
39684
|
Examples:
|
|
39443
|
-
hyperline
|
|
39444
|
-
hyperline
|
|
39445
|
-
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) => {
|
|
39446
39688
|
const ctx = resource.parent?.opts()._ctx;
|
|
39447
39689
|
if (!ctx) {
|
|
39448
39690
|
process.stderr.write("Error: Not authenticated\n");
|
|
39449
39691
|
process.exit(1);
|
|
39450
39692
|
}
|
|
39451
39693
|
const args = {};
|
|
39452
|
-
if (opts.
|
|
39453
|
-
args.
|
|
39454
|
-
if (opts.
|
|
39455
|
-
args.
|
|
39456
|
-
if (opts.description !== void 0)
|
|
39457
|
-
args.description = opts.description;
|
|
39458
|
-
if (opts.expirationDate !== void 0)
|
|
39459
|
-
args.expiration_date = opts.expirationDate;
|
|
39460
|
-
if (opts.repeat !== void 0)
|
|
39461
|
-
args.repeat = opts.repeat;
|
|
39462
|
-
if (opts.type !== void 0)
|
|
39463
|
-
args.type = opts.type;
|
|
39464
|
-
if (opts.currency !== void 0)
|
|
39465
|
-
args.currency = opts.currency;
|
|
39466
|
-
if (opts.redemptionLimit !== void 0)
|
|
39467
|
-
args.redemption_limit = Number(opts.redemptionLimit);
|
|
39468
|
-
if (opts.discountAmount !== void 0)
|
|
39469
|
-
args.discount_amount = Number(opts.discountAmount);
|
|
39470
|
-
if (opts.discountPercent !== void 0)
|
|
39471
|
-
args.discount_percent = Number(opts.discountPercent);
|
|
39472
|
-
if (opts.productIds !== void 0)
|
|
39473
|
-
args.product_ids = JSON.parse(opts.productIds);
|
|
39474
|
-
if (opts.duration !== void 0)
|
|
39475
|
-
args.duration = JSON.parse(opts.duration);
|
|
39694
|
+
if (opts.planId !== void 0)
|
|
39695
|
+
args.plan_id = opts.planId;
|
|
39696
|
+
if (opts.autoApply !== void 0)
|
|
39697
|
+
args.auto_apply = true;
|
|
39476
39698
|
await ctx.execute({
|
|
39477
39699
|
method: "PUT",
|
|
39478
|
-
path: "/v1/
|
|
39700
|
+
path: "/v1/ai/billing/plans/default",
|
|
39479
39701
|
args,
|
|
39480
39702
|
queryParamKeys: []
|
|
39481
39703
|
});
|
|
39482
39704
|
});
|
|
39483
|
-
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", `
|
|
39484
39706
|
Examples:
|
|
39485
|
-
hyperline
|
|
39486
|
-
hyperline
|
|
39707
|
+
hyperline ai-billing clear-agent-default-plan
|
|
39708
|
+
hyperline ai-billing clear-agent-default-plan --output json`).action(async (opts) => {
|
|
39487
39709
|
const ctx = resource.parent?.opts()._ctx;
|
|
39488
39710
|
if (!ctx) {
|
|
39489
39711
|
process.stderr.write("Error: Not authenticated\n");
|
|
39490
39712
|
process.exit(1);
|
|
39491
39713
|
}
|
|
39492
39714
|
const args = {};
|
|
39493
|
-
if (opts.id !== void 0)
|
|
39494
|
-
args.id = opts.id;
|
|
39495
39715
|
if (!opts.yes) {
|
|
39496
39716
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39497
39717
|
if (!confirmed) {
|
|
@@ -39501,16 +39721,1150 @@ Examples:
|
|
|
39501
39721
|
}
|
|
39502
39722
|
await ctx.execute({
|
|
39503
39723
|
method: "DELETE",
|
|
39504
|
-
path: "/v1/
|
|
39724
|
+
path: "/v1/ai/billing/plans/default",
|
|
39505
39725
|
args,
|
|
39506
39726
|
queryParamKeys: []
|
|
39507
39727
|
});
|
|
39508
39728
|
});
|
|
39509
|
-
|
|
39510
|
-
|
|
39511
|
-
|
|
39512
|
-
|
|
39513
|
-
|
|
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", `
|
|
39730
|
+
Examples:
|
|
39731
|
+
hyperline ai-billing get-agent-plan --id <id>`).action(async (opts) => {
|
|
39732
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39733
|
+
if (!ctx) {
|
|
39734
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39735
|
+
process.exit(1);
|
|
39736
|
+
}
|
|
39737
|
+
const args = {};
|
|
39738
|
+
if (opts.id !== void 0)
|
|
39739
|
+
args.id = opts.id;
|
|
39740
|
+
await ctx.execute({
|
|
39741
|
+
method: "GET",
|
|
39742
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39743
|
+
args,
|
|
39744
|
+
queryParamKeys: []
|
|
39745
|
+
});
|
|
39746
|
+
});
|
|
39747
|
+
resource.command("replace-agent-plan").description(`Replace an AI agent billing plan (whole-row semantics). Changes take effect on the next call for every customer on the plan; mode is immutable. Overage is priced by overage_markup_percent or by overage_rate_card_id, never both.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Human-readable resource name.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39748
|
+
|
|
39749
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39750
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39751
|
+
|
|
39752
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39753
|
+
Examples:
|
|
39754
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name>
|
|
39755
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39756
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --output json`).action(async (opts) => {
|
|
39757
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39758
|
+
if (!ctx) {
|
|
39759
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39760
|
+
process.exit(1);
|
|
39761
|
+
}
|
|
39762
|
+
const args = {};
|
|
39763
|
+
if (opts.id !== void 0)
|
|
39764
|
+
args.id = opts.id;
|
|
39765
|
+
if (opts.name !== void 0)
|
|
39766
|
+
args.name = opts.name;
|
|
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}",
|
|
39790
|
+
args,
|
|
39791
|
+
queryParamKeys: []
|
|
39792
|
+
});
|
|
39793
|
+
});
|
|
39794
|
+
resource.command("delete-agent-plan").description(`Delete an AI agent billing plan. Refused (409, plan_in_use) while any customer is still attached to it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39795
|
+
Examples:
|
|
39796
|
+
hyperline ai-billing delete-agent-plan --id <id>
|
|
39797
|
+
hyperline ai-billing delete-agent-plan --id <id> --output json`).action(async (opts) => {
|
|
39798
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39799
|
+
if (!ctx) {
|
|
39800
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39801
|
+
process.exit(1);
|
|
39802
|
+
}
|
|
39803
|
+
const args = {};
|
|
39804
|
+
if (opts.id !== void 0)
|
|
39805
|
+
args.id = opts.id;
|
|
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);
|
|
39844
|
+
await ctx.execute({
|
|
39845
|
+
method: "GET",
|
|
39846
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39847
|
+
args,
|
|
39848
|
+
queryParamKeys: ["denomination", "currency", "search", "take", "skip"]
|
|
39849
|
+
});
|
|
39850
|
+
});
|
|
39851
|
+
resource.command("create-agent-rate-card").description(`Create an AI rate card with llm rows (per-1M input/output token rates) and item rows (per-unit rates), a denomination (credits/units/currency) and an optional USD fallback conversion.`).requiredOption("--name <value>", `Human-readable resource name.`).option("--fallback-per-usd <value>", `Credits, allowance units, or major currency units per USD of provider cost. Null leaves unmatched usage unpriced.`).requiredOption("--rows <json>", `All pricing rows on the card; replacement replaces the complete list.`).requiredOption("--denomination <value>", `Unit in which rate-card prices are expressed.
|
|
39852
|
+
|
|
39853
|
+
- credits: Credit counts.
|
|
39854
|
+
- units: Weighted rolling-allowance units.
|
|
39855
|
+
- currency: Major units of the specified currency.`).option("--currency <value>", `ISO 4217 currency code for monetary values. Null for counts or historical amounts without recorded currency.`).addHelpText("after", `
|
|
39856
|
+
Examples:
|
|
39857
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination>
|
|
39858
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --fallback-per-usd <fallback_per_usd> --currency <currency>
|
|
39859
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --output json`).action(async (opts) => {
|
|
39860
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39861
|
+
if (!ctx) {
|
|
39862
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39863
|
+
process.exit(1);
|
|
39864
|
+
}
|
|
39865
|
+
const args = {};
|
|
39866
|
+
if (opts.name !== void 0)
|
|
39867
|
+
args.name = opts.name;
|
|
39868
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39869
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39870
|
+
if (opts.denomination !== void 0)
|
|
39871
|
+
args.denomination = opts.denomination;
|
|
39872
|
+
if (opts.currency !== void 0)
|
|
39873
|
+
args.currency = opts.currency;
|
|
39874
|
+
if (opts.rows !== void 0)
|
|
39875
|
+
args.rows = JSON.parse(opts.rows);
|
|
39876
|
+
await ctx.execute({
|
|
39877
|
+
method: "POST",
|
|
39878
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39879
|
+
args,
|
|
39880
|
+
queryParamKeys: []
|
|
39881
|
+
});
|
|
39882
|
+
});
|
|
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", `
|
|
39884
|
+
Examples:
|
|
39885
|
+
hyperline ai-billing get-agent-rate-card --id <id>`).action(async (opts) => {
|
|
39886
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39887
|
+
if (!ctx) {
|
|
39888
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39889
|
+
process.exit(1);
|
|
39890
|
+
}
|
|
39891
|
+
const args = {};
|
|
39892
|
+
if (opts.id !== void 0)
|
|
39893
|
+
args.id = opts.id;
|
|
39894
|
+
await ctx.execute({
|
|
39895
|
+
method: "GET",
|
|
39896
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39897
|
+
args,
|
|
39898
|
+
queryParamKeys: []
|
|
39899
|
+
});
|
|
39900
|
+
});
|
|
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", `
|
|
39902
|
+
Examples:
|
|
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) => {
|
|
39906
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39907
|
+
if (!ctx) {
|
|
39908
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39909
|
+
process.exit(1);
|
|
39910
|
+
}
|
|
39911
|
+
const args = {};
|
|
39912
|
+
if (opts.id !== void 0)
|
|
39913
|
+
args.id = opts.id;
|
|
39914
|
+
if (opts.name !== void 0)
|
|
39915
|
+
args.name = opts.name;
|
|
39916
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39917
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39918
|
+
if (opts.rows !== void 0)
|
|
39919
|
+
args.rows = JSON.parse(opts.rows);
|
|
39920
|
+
await ctx.execute({
|
|
39921
|
+
method: "PUT",
|
|
39922
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39923
|
+
args,
|
|
39924
|
+
queryParamKeys: []
|
|
39925
|
+
});
|
|
39926
|
+
});
|
|
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", `
|
|
39928
|
+
Examples:
|
|
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) => {
|
|
39931
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39932
|
+
if (!ctx) {
|
|
39933
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39934
|
+
process.exit(1);
|
|
39935
|
+
}
|
|
39936
|
+
const args = {};
|
|
39937
|
+
if (opts.id !== void 0)
|
|
39938
|
+
args.id = opts.id;
|
|
39939
|
+
if (!opts.yes) {
|
|
39940
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39941
|
+
if (!confirmed) {
|
|
39942
|
+
process.stdout.write("Aborted.\n");
|
|
39943
|
+
return;
|
|
39944
|
+
}
|
|
39945
|
+
}
|
|
39946
|
+
await ctx.execute({
|
|
39947
|
+
method: "DELETE",
|
|
39948
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39949
|
+
args,
|
|
39950
|
+
queryParamKeys: []
|
|
39951
|
+
});
|
|
39952
|
+
});
|
|
39953
|
+
resource.command("list-agent-customer-policies").description(`List all AI billing policies (scopes) for one customer: the default shared pool plus per-agent overrides. Accepts Hyperline or external customer ids.`).requiredOption("--id <value>", `id parameter`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39954
|
+
Examples:
|
|
39955
|
+
hyperline ai-billing list-agent-customer-policies --id <id>
|
|
39956
|
+
hyperline ai-billing list-agent-customer-policies --id <id> --take <take>`).action(async (opts) => {
|
|
39957
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39958
|
+
if (!ctx) {
|
|
39959
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39960
|
+
process.exit(1);
|
|
39961
|
+
}
|
|
39962
|
+
const args = {};
|
|
39963
|
+
if (opts.id !== void 0)
|
|
39964
|
+
args.id = opts.id;
|
|
39965
|
+
if (opts.take !== void 0)
|
|
39966
|
+
args.take = Number(opts.take);
|
|
39967
|
+
if (opts.skip !== void 0)
|
|
39968
|
+
args.skip = Number(opts.skip);
|
|
39969
|
+
await ctx.execute({
|
|
39970
|
+
method: "GET",
|
|
39971
|
+
path: "/v1/ai/billing/customers/{id}/policies",
|
|
39972
|
+
args,
|
|
39973
|
+
queryParamKeys: ["take", "skip"]
|
|
39974
|
+
});
|
|
39975
|
+
});
|
|
39976
|
+
resource.command("get-default-customer-billing-policy").description(`Get the exact customer billing policy addressed by this resource; agent policies never fall back to the shared pool.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39977
|
+
Examples:
|
|
39978
|
+
hyperline ai-billing get-default-customer-billing-policy --id <id>`).action(async (opts) => {
|
|
39979
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39980
|
+
if (!ctx) {
|
|
39981
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39982
|
+
process.exit(1);
|
|
39983
|
+
}
|
|
39984
|
+
const args = {};
|
|
39985
|
+
if (opts.id !== void 0)
|
|
39986
|
+
args.id = opts.id;
|
|
39987
|
+
await ctx.execute({
|
|
39988
|
+
method: "GET",
|
|
39989
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39990
|
+
args,
|
|
39991
|
+
queryParamKeys: []
|
|
39992
|
+
});
|
|
39993
|
+
});
|
|
39994
|
+
resource.command("upsert-default-customer-billing-policy").description(`Replace customer billing settings while preserving omitted plan_id and rate_card_id references; null detaches them, and a shared policy enables automatic telemetry billing.`).requiredOption("--id <value>", `id parameter`).requiredOption("--mode <value>", `Billing mode.
|
|
39995
|
+
|
|
39996
|
+
- wallet: Charges a monetary wallet.
|
|
39997
|
+
- credits: Consumes a credit balance.
|
|
39998
|
+
- windows: Meters weighted units against rolling allowances.`).option("--wallet-id <value>", `Customer wallet identifier. Omit on wallet policy writes to provision or reuse the customer's wallet.`).option("--credit-product-id <value>", `Public credit product identifier whose balance this policy consumes.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39999
|
+
|
|
40000
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
40001
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--overage-wallet-id <value>", `Wallet charged for overage. Null bills overage in arrears.`).option("--floor <value>", `Minimum available balance a spend check requires, in the policy's denomination.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
40002
|
+
|
|
40003
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).requiredOption("--blocked", `Whether spending is disabled for this billing scope.`).addHelpText("after", `
|
|
40004
|
+
Examples:
|
|
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) => {
|
|
40008
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40009
|
+
if (!ctx) {
|
|
40010
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40011
|
+
process.exit(1);
|
|
40012
|
+
}
|
|
40013
|
+
const 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;
|
|
40092
|
+
await ctx.execute({
|
|
40093
|
+
method: "GET",
|
|
40094
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
40095
|
+
args,
|
|
40096
|
+
queryParamKeys: []
|
|
40097
|
+
});
|
|
40098
|
+
});
|
|
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.
|
|
40100
|
+
|
|
40101
|
+
- wallet: Charges a monetary wallet.
|
|
40102
|
+
- credits: Consumes a credit balance.
|
|
40103
|
+
- 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.
|
|
40104
|
+
|
|
40105
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
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.
|
|
40107
|
+
|
|
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", `
|
|
40109
|
+
Examples:
|
|
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) => {
|
|
40113
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40114
|
+
if (!ctx) {
|
|
40115
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40116
|
+
process.exit(1);
|
|
40117
|
+
}
|
|
40118
|
+
const args = {};
|
|
40119
|
+
if (opts.id !== void 0)
|
|
40120
|
+
args.id = opts.id;
|
|
40121
|
+
if (opts.agentSlug !== void 0)
|
|
40122
|
+
args.agent_slug = opts.agentSlug;
|
|
40123
|
+
if (opts.mode !== void 0)
|
|
40124
|
+
args.mode = opts.mode;
|
|
40125
|
+
if (opts.walletId !== void 0)
|
|
40126
|
+
args.wallet_id = opts.walletId;
|
|
40127
|
+
if (opts.creditProductId !== void 0)
|
|
40128
|
+
args.credit_product_id = opts.creditProductId;
|
|
40129
|
+
if (opts.markupPercent !== void 0)
|
|
40130
|
+
args.markup_percent = opts.markupPercent;
|
|
40131
|
+
if (opts.overageMode !== void 0)
|
|
40132
|
+
args.overage_mode = opts.overageMode;
|
|
40133
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
40134
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
40135
|
+
if (opts.overageRateCardId !== void 0)
|
|
40136
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
40137
|
+
if (opts.overageWalletId !== void 0)
|
|
40138
|
+
args.overage_wallet_id = opts.overageWalletId;
|
|
40139
|
+
if (opts.floor !== void 0)
|
|
40140
|
+
args.floor = opts.floor;
|
|
40141
|
+
if (opts.settlementSchedule !== void 0)
|
|
40142
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
40143
|
+
if (opts.rateCardId !== void 0)
|
|
40144
|
+
args.rate_card_id = opts.rateCardId;
|
|
40145
|
+
if (opts.planId !== void 0)
|
|
40146
|
+
args.plan_id = opts.planId;
|
|
40147
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
40148
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
40149
|
+
if (opts.blocked !== void 0)
|
|
40150
|
+
args.blocked = true;
|
|
40151
|
+
if (opts.windows !== void 0)
|
|
40152
|
+
args.windows = JSON.parse(opts.windows);
|
|
40153
|
+
await ctx.execute({
|
|
40154
|
+
method: "PUT",
|
|
40155
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
40156
|
+
args,
|
|
40157
|
+
queryParamKeys: []
|
|
40158
|
+
});
|
|
40159
|
+
});
|
|
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", `
|
|
40161
|
+
Examples:
|
|
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) => {
|
|
40164
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40165
|
+
if (!ctx) {
|
|
40166
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40167
|
+
process.exit(1);
|
|
40168
|
+
}
|
|
40169
|
+
const args = {};
|
|
40170
|
+
if (opts.id !== void 0)
|
|
40171
|
+
args.id = opts.id;
|
|
40172
|
+
if (opts.agentSlug !== void 0)
|
|
40173
|
+
args.agent_slug = opts.agentSlug;
|
|
40174
|
+
if (!opts.yes) {
|
|
40175
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40176
|
+
if (!confirmed) {
|
|
40177
|
+
process.stdout.write("Aborted.\n");
|
|
40178
|
+
return;
|
|
40179
|
+
}
|
|
40180
|
+
}
|
|
40181
|
+
await ctx.execute({
|
|
40182
|
+
method: "DELETE",
|
|
40183
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
40184
|
+
args,
|
|
40185
|
+
queryParamKeys: []
|
|
40186
|
+
});
|
|
40187
|
+
});
|
|
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", `
|
|
40189
|
+
Examples:
|
|
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) => {
|
|
40192
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40193
|
+
if (!ctx) {
|
|
40194
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40195
|
+
process.exit(1);
|
|
40196
|
+
}
|
|
40197
|
+
const args = {};
|
|
40198
|
+
if (opts.id !== void 0)
|
|
40199
|
+
args.id = opts.id;
|
|
40200
|
+
await ctx.execute({
|
|
40201
|
+
method: "POST",
|
|
40202
|
+
path: "/v1/ai/billing/customers/{id}/apply-default-plan",
|
|
40203
|
+
args,
|
|
40204
|
+
queryParamKeys: []
|
|
40205
|
+
});
|
|
40206
|
+
});
|
|
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", `
|
|
40208
|
+
Examples:
|
|
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) => {
|
|
40211
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40212
|
+
if (!ctx) {
|
|
40213
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40214
|
+
process.exit(1);
|
|
40215
|
+
}
|
|
40216
|
+
const args = {};
|
|
40217
|
+
if (opts.id !== void 0)
|
|
40218
|
+
args.id = opts.id;
|
|
40219
|
+
if (opts.agentSlug !== void 0)
|
|
40220
|
+
args.agent_slug = opts.agentSlug;
|
|
40221
|
+
await ctx.execute({
|
|
40222
|
+
method: "GET",
|
|
40223
|
+
path: "/v1/ai/billing/customers/{id}/balance",
|
|
40224
|
+
args,
|
|
40225
|
+
queryParamKeys: ["agent_slug"]
|
|
40226
|
+
});
|
|
40227
|
+
});
|
|
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", `
|
|
40229
|
+
Examples:
|
|
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) => {
|
|
40233
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40234
|
+
if (!ctx) {
|
|
40235
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40236
|
+
process.exit(1);
|
|
40237
|
+
}
|
|
40238
|
+
const args = {};
|
|
40239
|
+
if (opts.id !== void 0)
|
|
40240
|
+
args.id = opts.id;
|
|
40241
|
+
if (opts.agentSlug !== void 0)
|
|
40242
|
+
args.agent_slug = opts.agentSlug;
|
|
40243
|
+
await ctx.execute({
|
|
40244
|
+
method: "POST",
|
|
40245
|
+
path: "/v1/ai/billing/customers/{id}/windows/reset",
|
|
40246
|
+
args,
|
|
40247
|
+
queryParamKeys: ["agent_slug"]
|
|
40248
|
+
});
|
|
40249
|
+
});
|
|
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", `
|
|
40251
|
+
Examples:
|
|
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) => {
|
|
40254
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40255
|
+
if (!ctx) {
|
|
40256
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40257
|
+
process.exit(1);
|
|
40258
|
+
}
|
|
40259
|
+
const args = {};
|
|
40260
|
+
if (opts.id !== void 0)
|
|
40261
|
+
args.id = opts.id;
|
|
40262
|
+
if (opts.agentSlug !== void 0)
|
|
40263
|
+
args.agent_slug = opts.agentSlug;
|
|
40264
|
+
if (opts.overage !== void 0)
|
|
40265
|
+
args.overage = opts.overage;
|
|
40266
|
+
if (opts.from !== void 0)
|
|
40267
|
+
args.from = opts.from;
|
|
40268
|
+
if (opts.to !== void 0)
|
|
40269
|
+
args.to = opts.to;
|
|
40270
|
+
if (opts.take !== void 0)
|
|
40271
|
+
args.take = Number(opts.take);
|
|
40272
|
+
if (opts.skip !== void 0)
|
|
40273
|
+
args.skip = Number(opts.skip);
|
|
40274
|
+
await ctx.execute({
|
|
40275
|
+
method: "GET",
|
|
40276
|
+
path: "/v1/ai/billing/customers/{id}/consumption",
|
|
40277
|
+
args,
|
|
40278
|
+
queryParamKeys: ["agent_slug", "overage", "from", "to", "take", "skip"]
|
|
40279
|
+
});
|
|
40280
|
+
});
|
|
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", `
|
|
40282
|
+
Examples:
|
|
40283
|
+
hyperline ai-billing get-product-ai-rate-card --id <id>`).action(async (opts) => {
|
|
40284
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40285
|
+
if (!ctx) {
|
|
40286
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40287
|
+
process.exit(1);
|
|
40288
|
+
}
|
|
40289
|
+
const args = {};
|
|
40290
|
+
if (opts.id !== void 0)
|
|
40291
|
+
args.id = opts.id;
|
|
40292
|
+
await ctx.execute({
|
|
40293
|
+
method: "GET",
|
|
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",
|
|
40342
|
+
args,
|
|
40343
|
+
queryParamKeys: []
|
|
40344
|
+
});
|
|
40345
|
+
});
|
|
40346
|
+
}
|
|
40347
|
+
|
|
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", `
|
|
40352
|
+
Examples:
|
|
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) => {
|
|
40355
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40356
|
+
if (!ctx) {
|
|
40357
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40358
|
+
process.exit(1);
|
|
40359
|
+
}
|
|
40360
|
+
const args = {};
|
|
40361
|
+
if (opts.enabledOnly !== void 0)
|
|
40362
|
+
args.enabled_only = opts.enabledOnly;
|
|
40363
|
+
if (opts.take !== void 0)
|
|
40364
|
+
args.take = Number(opts.take);
|
|
40365
|
+
if (opts.skip !== void 0)
|
|
40366
|
+
args.skip = Number(opts.skip);
|
|
40367
|
+
await ctx.execute({
|
|
40368
|
+
method: "GET",
|
|
40369
|
+
path: "/v1/ai/billing/costs",
|
|
40370
|
+
args,
|
|
40371
|
+
queryParamKeys: ["take", "skip", "enabled_only"]
|
|
40372
|
+
});
|
|
40373
|
+
});
|
|
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", `
|
|
40375
|
+
Examples:
|
|
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) => {
|
|
40378
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40379
|
+
if (!ctx) {
|
|
40380
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40381
|
+
process.exit(1);
|
|
40382
|
+
}
|
|
40383
|
+
const args = {};
|
|
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);
|
|
40390
|
+
await ctx.execute({
|
|
40391
|
+
method: "POST",
|
|
40392
|
+
path: "/v1/ai/billing/costs/items",
|
|
40393
|
+
args,
|
|
40394
|
+
queryParamKeys: []
|
|
40395
|
+
});
|
|
40396
|
+
});
|
|
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", `
|
|
40398
|
+
Examples:
|
|
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) => {
|
|
40401
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40402
|
+
if (!ctx) {
|
|
40403
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40404
|
+
process.exit(1);
|
|
40405
|
+
}
|
|
40406
|
+
const args = {};
|
|
40407
|
+
if (opts.id !== void 0)
|
|
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
|
+
}
|
|
40416
|
+
await ctx.execute({
|
|
40417
|
+
method: "DELETE",
|
|
40418
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40419
|
+
args,
|
|
40420
|
+
queryParamKeys: []
|
|
40421
|
+
});
|
|
40422
|
+
});
|
|
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", `
|
|
40424
|
+
Examples:
|
|
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) => {
|
|
40428
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40429
|
+
if (!ctx) {
|
|
40430
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40431
|
+
process.exit(1);
|
|
40432
|
+
}
|
|
40433
|
+
const args = {};
|
|
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);
|
|
40448
|
+
await ctx.execute({
|
|
40449
|
+
method: "PUT",
|
|
40450
|
+
path: "/v1/ai/billing/costs/overrides",
|
|
40451
|
+
args,
|
|
40452
|
+
queryParamKeys: []
|
|
40453
|
+
});
|
|
40454
|
+
});
|
|
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", `
|
|
40456
|
+
Examples:
|
|
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) => {
|
|
40459
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40460
|
+
if (!ctx) {
|
|
40461
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40462
|
+
process.exit(1);
|
|
40463
|
+
}
|
|
40464
|
+
const args = {};
|
|
40465
|
+
if (opts.id !== void 0)
|
|
40466
|
+
args.id = opts.id;
|
|
40467
|
+
if (!opts.yes) {
|
|
40468
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40469
|
+
if (!confirmed) {
|
|
40470
|
+
process.stdout.write("Aborted.\n");
|
|
40471
|
+
return;
|
|
40472
|
+
}
|
|
40473
|
+
}
|
|
40474
|
+
await ctx.execute({
|
|
40475
|
+
method: "DELETE",
|
|
40476
|
+
path: "/v1/ai/billing/costs/overrides/{id}",
|
|
40477
|
+
args,
|
|
40478
|
+
queryParamKeys: []
|
|
40479
|
+
});
|
|
40480
|
+
});
|
|
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", `
|
|
40482
|
+
Examples:
|
|
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) => {
|
|
40485
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40486
|
+
if (!ctx) {
|
|
40487
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40488
|
+
process.exit(1);
|
|
40489
|
+
}
|
|
40490
|
+
const args = {};
|
|
40491
|
+
if (opts.id !== void 0)
|
|
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);
|
|
40499
|
+
await ctx.execute({
|
|
40500
|
+
method: "PUT",
|
|
40501
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40502
|
+
args,
|
|
40503
|
+
queryParamKeys: []
|
|
40504
|
+
});
|
|
40505
|
+
});
|
|
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", `
|
|
40512
|
+
Examples:
|
|
40513
|
+
hyperline ai-monitoring list-monitoring-analyses
|
|
40514
|
+
hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
40515
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40516
|
+
if (!ctx) {
|
|
40517
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40518
|
+
process.exit(1);
|
|
40519
|
+
}
|
|
40520
|
+
const 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);
|
|
40535
|
+
await ctx.execute({
|
|
40536
|
+
method: "GET",
|
|
40537
|
+
path: "/v1/agents/monitoring/analyses",
|
|
40538
|
+
args,
|
|
40539
|
+
queryParamKeys: [
|
|
40540
|
+
"limit",
|
|
40541
|
+
"cursor",
|
|
40542
|
+
"include_total",
|
|
40543
|
+
"customer_id",
|
|
40544
|
+
"status",
|
|
40545
|
+
"created_at__gte",
|
|
40546
|
+
"created_at__lte"
|
|
40547
|
+
]
|
|
40548
|
+
});
|
|
40549
|
+
});
|
|
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", `
|
|
40551
|
+
Examples:
|
|
40552
|
+
hyperline ai-monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
|
|
40553
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40554
|
+
if (!ctx) {
|
|
40555
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40556
|
+
process.exit(1);
|
|
40557
|
+
}
|
|
40558
|
+
const args = {};
|
|
40559
|
+
if (opts.id !== void 0)
|
|
40560
|
+
args.id = opts.id;
|
|
40561
|
+
await ctx.execute({
|
|
40562
|
+
method: "GET",
|
|
40563
|
+
path: "/v1/agents/monitoring/analyses/{id}",
|
|
40564
|
+
args,
|
|
40565
|
+
queryParamKeys: []
|
|
40566
|
+
});
|
|
40567
|
+
});
|
|
40568
|
+
}
|
|
40569
|
+
|
|
40570
|
+
// build/commands/generated/analytics.js
|
|
40571
|
+
function registerAnalyticsCommands(parent) {
|
|
40572
|
+
const resource = parent.command("analytics").description("Manage analytics");
|
|
40573
|
+
resource.command("get").description(`Retrieve pre-computed account analytics including ARR, MRR, revenues, churn rate, and other key billing metrics. Optionally filter by invoicing_entity_id. Use this to get a high-level financial overview.`).option("--invoicing-entity-id <value>", `Invoicing Entity ID to filter analytics`).addHelpText("after", `
|
|
40574
|
+
Examples:
|
|
40575
|
+
hyperline analytics get
|
|
40576
|
+
hyperline analytics get --invoicing-entity-id <invoicing_entity_id>`).action(async (opts) => {
|
|
40577
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40578
|
+
if (!ctx) {
|
|
40579
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40580
|
+
process.exit(1);
|
|
40581
|
+
}
|
|
40582
|
+
const args = {};
|
|
40583
|
+
if (opts.invoicingEntityId !== void 0)
|
|
40584
|
+
args.invoicing_entity_id = opts.invoicingEntityId;
|
|
40585
|
+
await ctx.execute({
|
|
40586
|
+
method: "GET",
|
|
40587
|
+
path: "/v1/analytics",
|
|
40588
|
+
args,
|
|
40589
|
+
queryParamKeys: ["invoicing_entity_id"]
|
|
40590
|
+
});
|
|
40591
|
+
});
|
|
40592
|
+
}
|
|
40593
|
+
|
|
40594
|
+
// build/commands/generated/bank-accounts.js
|
|
40595
|
+
function registerBank_AccountsCommands(parent) {
|
|
40596
|
+
const resource = parent.command("bank-accounts").description("Manage bank accounts");
|
|
40597
|
+
resource.command("list").description(`List all bank accounts configured on the account. Returns paginated results with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
40598
|
+
Examples:
|
|
40599
|
+
hyperline bank-accounts list
|
|
40600
|
+
hyperline bank-accounts list --take <take>`).action(async (opts) => {
|
|
40601
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40602
|
+
if (!ctx) {
|
|
40603
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40604
|
+
process.exit(1);
|
|
40605
|
+
}
|
|
40606
|
+
const args = {};
|
|
40607
|
+
if (opts.take !== void 0)
|
|
40608
|
+
args.take = Number(opts.take);
|
|
40609
|
+
if (opts.skip !== void 0)
|
|
40610
|
+
args.skip = Number(opts.skip);
|
|
40611
|
+
await ctx.execute({
|
|
40612
|
+
method: "GET",
|
|
40613
|
+
path: "/v1/bank-accounts",
|
|
40614
|
+
args,
|
|
40615
|
+
queryParamKeys: ["take", "skip"]
|
|
40616
|
+
});
|
|
40617
|
+
});
|
|
40618
|
+
resource.command("get").description(`Retrieve a specific bank account by its ID. Returns masked bank account details, account type, balance, and currency.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40619
|
+
Examples:
|
|
40620
|
+
hyperline bank-accounts get --id <id>`).action(async (opts) => {
|
|
40621
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40622
|
+
if (!ctx) {
|
|
40623
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40624
|
+
process.exit(1);
|
|
40625
|
+
}
|
|
40626
|
+
const args = {};
|
|
40627
|
+
if (opts.id !== void 0)
|
|
40628
|
+
args.id = opts.id;
|
|
40629
|
+
await ctx.execute({
|
|
40630
|
+
method: "GET",
|
|
40631
|
+
path: "/v1/bank-accounts/{id}",
|
|
40632
|
+
args,
|
|
40633
|
+
queryParamKeys: []
|
|
40634
|
+
});
|
|
40635
|
+
});
|
|
40636
|
+
resource.command("list-bank-account-transactions").description(`List open banking transactions for a specific bank account. Paginated with limit/cursor.`).requiredOption("--id <value>", `id parameter`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).addHelpText("after", `
|
|
40637
|
+
Examples:
|
|
40638
|
+
hyperline bank-accounts list-bank-account-transactions --id <id>
|
|
40639
|
+
hyperline bank-accounts list-bank-account-transactions --id <id> --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
40640
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40641
|
+
if (!ctx) {
|
|
40642
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40643
|
+
process.exit(1);
|
|
40644
|
+
}
|
|
40645
|
+
const args = {};
|
|
40646
|
+
if (opts.id !== void 0)
|
|
40647
|
+
args.id = opts.id;
|
|
40648
|
+
if (opts.cursor !== void 0)
|
|
40649
|
+
args.cursor = opts.cursor;
|
|
40650
|
+
if (opts.includeTotal !== void 0)
|
|
40651
|
+
args.include_total = opts.includeTotal;
|
|
40652
|
+
if (opts.limit !== void 0)
|
|
40653
|
+
args.limit = Number(opts.limit);
|
|
40654
|
+
await ctx.execute({
|
|
40655
|
+
method: "GET",
|
|
40656
|
+
path: "/v1/bank-accounts/{id}/transactions",
|
|
40657
|
+
args,
|
|
40658
|
+
queryParamKeys: ["limit", "cursor", "include_total"]
|
|
40659
|
+
});
|
|
40660
|
+
});
|
|
40661
|
+
}
|
|
40662
|
+
|
|
40663
|
+
// build/commands/generated/companies.js
|
|
40664
|
+
function registerCompaniesCommands(parent) {
|
|
40665
|
+
const resource = parent.command("companies").description("Manage companies");
|
|
40666
|
+
resource.command("list").description(`List all companies accessible to the current authentication token. A company represents an organizational unit.`).addHelpText("after", `
|
|
40667
|
+
Examples:
|
|
40668
|
+
hyperline companies list`).action(async (_opts) => {
|
|
40669
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40670
|
+
if (!ctx) {
|
|
40671
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40672
|
+
process.exit(1);
|
|
40673
|
+
}
|
|
40674
|
+
const args = {};
|
|
40675
|
+
await ctx.execute({
|
|
40676
|
+
method: "GET",
|
|
40677
|
+
path: "/v1/companies",
|
|
40678
|
+
args,
|
|
40679
|
+
queryParamKeys: []
|
|
40680
|
+
});
|
|
40681
|
+
});
|
|
40682
|
+
resource.command("create-company").description(`Create a company with an approved account owner. Company creation must be enabled.`).requiredOption("--name <value>", `Company name.`).requiredOption("--address <json>", `Address of the default invoicing entity`).addHelpText("after", `
|
|
40683
|
+
Examples:
|
|
40684
|
+
hyperline companies create-company --name <name> --address <address>
|
|
40685
|
+
hyperline companies create-company --name <name> --address <address> --output json`).action(async (opts) => {
|
|
40686
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40687
|
+
if (!ctx) {
|
|
40688
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40689
|
+
process.exit(1);
|
|
40690
|
+
}
|
|
40691
|
+
const args = {};
|
|
40692
|
+
if (opts.name !== void 0)
|
|
40693
|
+
args.name = opts.name;
|
|
40694
|
+
if (opts.address !== void 0)
|
|
40695
|
+
args.address = JSON.parse(opts.address);
|
|
40696
|
+
await ctx.execute({
|
|
40697
|
+
method: "POST",
|
|
40698
|
+
path: "/v1/companies",
|
|
40699
|
+
args,
|
|
40700
|
+
queryParamKeys: []
|
|
40701
|
+
});
|
|
40702
|
+
});
|
|
40703
|
+
}
|
|
40704
|
+
|
|
40705
|
+
// build/commands/generated/coupons.js
|
|
40706
|
+
function registerCouponsCommands(parent) {
|
|
40707
|
+
const resource = parent.command("coupons").description("Manage coupons");
|
|
40708
|
+
resource.command("list").description(`List all coupons with pagination (take/skip). Coupons define discount rules (percentage or fixed amount) that can be applied to subscriptions or invoices.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
40709
|
+
Examples:
|
|
40710
|
+
hyperline coupons list
|
|
40711
|
+
hyperline coupons list --take <take>`).action(async (opts) => {
|
|
40712
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40713
|
+
if (!ctx) {
|
|
40714
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40715
|
+
process.exit(1);
|
|
40716
|
+
}
|
|
40717
|
+
const args = {};
|
|
40718
|
+
if (opts.take !== void 0)
|
|
40719
|
+
args.take = Number(opts.take);
|
|
40720
|
+
if (opts.skip !== void 0)
|
|
40721
|
+
args.skip = Number(opts.skip);
|
|
40722
|
+
await ctx.execute({
|
|
40723
|
+
method: "GET",
|
|
40724
|
+
path: "/v1/coupons",
|
|
40725
|
+
args,
|
|
40726
|
+
queryParamKeys: ["take", "skip"]
|
|
40727
|
+
});
|
|
40728
|
+
});
|
|
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>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40730
|
+
Examples:
|
|
40731
|
+
hyperline coupons create --name <name> --type <type>
|
|
40732
|
+
hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
40733
|
+
hyperline coupons create --name <name> --type <type> --output json`).action(async (opts) => {
|
|
40734
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40735
|
+
if (!ctx) {
|
|
40736
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40737
|
+
process.exit(1);
|
|
40738
|
+
}
|
|
40739
|
+
const args = {};
|
|
40740
|
+
if (opts.name !== void 0)
|
|
40741
|
+
args.name = opts.name;
|
|
40742
|
+
if (opts.description !== void 0)
|
|
40743
|
+
args.description = opts.description;
|
|
40744
|
+
if (opts.expirationDate !== void 0)
|
|
40745
|
+
args.expiration_date = opts.expirationDate;
|
|
40746
|
+
if (opts.productScope !== void 0)
|
|
40747
|
+
args.product_scope = opts.productScope;
|
|
40748
|
+
if (opts.repeat !== void 0)
|
|
40749
|
+
args.repeat = opts.repeat;
|
|
40750
|
+
if (opts.type !== void 0)
|
|
40751
|
+
args.type = opts.type;
|
|
40752
|
+
if (opts.currency !== void 0)
|
|
40753
|
+
args.currency = opts.currency;
|
|
40754
|
+
if (opts.redemptionLimit !== void 0)
|
|
40755
|
+
args.redemption_limit = Number(opts.redemptionLimit);
|
|
40756
|
+
if (opts.discountAmount !== void 0)
|
|
40757
|
+
args.discount_amount = Number(opts.discountAmount);
|
|
40758
|
+
if (opts.discountPercent !== void 0)
|
|
40759
|
+
args.discount_percent = Number(opts.discountPercent);
|
|
40760
|
+
if (opts.productIds !== void 0)
|
|
40761
|
+
args.product_ids = JSON.parse(opts.productIds);
|
|
40762
|
+
if (opts.duration !== void 0)
|
|
40763
|
+
args.duration = JSON.parse(opts.duration);
|
|
40764
|
+
if (opts.properties !== void 0)
|
|
40765
|
+
args.properties = JSON.parse(opts.properties);
|
|
40766
|
+
await ctx.execute({
|
|
40767
|
+
method: "POST",
|
|
40768
|
+
path: "/v1/coupons",
|
|
40769
|
+
args,
|
|
40770
|
+
queryParamKeys: []
|
|
40771
|
+
});
|
|
40772
|
+
});
|
|
40773
|
+
resource.command("get").description(`Retrieve a specific coupon by ID including its discount configuration, redemption count, and deletion status.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40774
|
+
Examples:
|
|
40775
|
+
hyperline coupons get --id <id>`).action(async (opts) => {
|
|
40776
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40777
|
+
if (!ctx) {
|
|
40778
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40779
|
+
process.exit(1);
|
|
40780
|
+
}
|
|
40781
|
+
const args = {};
|
|
40782
|
+
if (opts.id !== void 0)
|
|
40783
|
+
args.id = opts.id;
|
|
40784
|
+
await ctx.execute({
|
|
40785
|
+
method: "GET",
|
|
40786
|
+
path: "/v1/coupons/{id}",
|
|
40787
|
+
args,
|
|
40788
|
+
queryParamKeys: []
|
|
40789
|
+
});
|
|
40790
|
+
});
|
|
40791
|
+
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40792
|
+
Examples:
|
|
40793
|
+
hyperline coupons update --id <id> --name <name> --type <type>
|
|
40794
|
+
hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
40795
|
+
hyperline coupons update --id <id> --name <name> --type <type> --output json`).action(async (opts) => {
|
|
40796
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40797
|
+
if (!ctx) {
|
|
40798
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40799
|
+
process.exit(1);
|
|
40800
|
+
}
|
|
40801
|
+
const args = {};
|
|
40802
|
+
if (opts.id !== void 0)
|
|
40803
|
+
args.id = opts.id;
|
|
40804
|
+
if (opts.name !== void 0)
|
|
40805
|
+
args.name = opts.name;
|
|
40806
|
+
if (opts.description !== void 0)
|
|
40807
|
+
args.description = opts.description;
|
|
40808
|
+
if (opts.expirationDate !== void 0)
|
|
40809
|
+
args.expiration_date = opts.expirationDate;
|
|
40810
|
+
if (opts.productScope !== void 0)
|
|
40811
|
+
args.product_scope = opts.productScope;
|
|
40812
|
+
if (opts.repeat !== void 0)
|
|
40813
|
+
args.repeat = opts.repeat;
|
|
40814
|
+
if (opts.type !== void 0)
|
|
40815
|
+
args.type = opts.type;
|
|
40816
|
+
if (opts.currency !== void 0)
|
|
40817
|
+
args.currency = opts.currency;
|
|
40818
|
+
if (opts.redemptionLimit !== void 0)
|
|
40819
|
+
args.redemption_limit = Number(opts.redemptionLimit);
|
|
40820
|
+
if (opts.discountAmount !== void 0)
|
|
40821
|
+
args.discount_amount = Number(opts.discountAmount);
|
|
40822
|
+
if (opts.discountPercent !== void 0)
|
|
40823
|
+
args.discount_percent = Number(opts.discountPercent);
|
|
40824
|
+
if (opts.productIds !== void 0)
|
|
40825
|
+
args.product_ids = JSON.parse(opts.productIds);
|
|
40826
|
+
if (opts.duration !== void 0)
|
|
40827
|
+
args.duration = JSON.parse(opts.duration);
|
|
40828
|
+
if (opts.properties !== void 0)
|
|
40829
|
+
args.properties = JSON.parse(opts.properties);
|
|
40830
|
+
await ctx.execute({
|
|
40831
|
+
method: "PUT",
|
|
40832
|
+
path: "/v1/coupons/{id}",
|
|
40833
|
+
args,
|
|
40834
|
+
queryParamKeys: []
|
|
40835
|
+
});
|
|
40836
|
+
});
|
|
40837
|
+
resource.command("delete").description(`Permanently delete a coupon by ID. This cannot be undone.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40838
|
+
Examples:
|
|
40839
|
+
hyperline coupons delete --id <id>
|
|
40840
|
+
hyperline coupons delete --id <id> --output json`).action(async (opts) => {
|
|
40841
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40842
|
+
if (!ctx) {
|
|
40843
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40844
|
+
process.exit(1);
|
|
40845
|
+
}
|
|
40846
|
+
const args = {};
|
|
40847
|
+
if (opts.id !== void 0)
|
|
40848
|
+
args.id = opts.id;
|
|
40849
|
+
if (!opts.yes) {
|
|
40850
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40851
|
+
if (!confirmed) {
|
|
40852
|
+
process.stdout.write("Aborted.\n");
|
|
40853
|
+
return;
|
|
40854
|
+
}
|
|
40855
|
+
}
|
|
40856
|
+
await ctx.execute({
|
|
40857
|
+
method: "DELETE",
|
|
40858
|
+
path: "/v1/coupons/{id}",
|
|
40859
|
+
args,
|
|
40860
|
+
queryParamKeys: []
|
|
40861
|
+
});
|
|
40862
|
+
});
|
|
40863
|
+
}
|
|
40864
|
+
|
|
40865
|
+
// build/commands/generated/coupons-promotion-codes.js
|
|
40866
|
+
function registerCoupons_Promotion_CodesCommands(parent) {
|
|
40867
|
+
const resource = parent.command("coupons-promotion-codes").description("Manage coupons > promotion codes");
|
|
39514
40868
|
resource.command("list-promotion-codes").description(`List promotion codes with optional filter by coupon_id. Promotion codes are shareable codes that reference a coupon. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--coupon-id <value>", `coupon_id`).option("--coupon-id.not <value>", `coupon_id__not`).option("--coupon-id.is-null <value>", `coupon_id__isNull`).option("--coupon-id.is-not-null <value>", `coupon_id__isNotNull`).option("--coupon-id.equals <value>", `coupon_id__equals`).option("--coupon-id.contains <value>", `coupon_id__contains`).option("--coupon-id.starts-with <value>", `coupon_id__startsWith`).option("--coupon-id.end-with <value>", `coupon_id__endWith`).addHelpText("after", `
|
|
39515
40869
|
Examples:
|
|
39516
40870
|
hyperline coupons-promotion-codes list-promotion-codes
|
|
@@ -39704,7 +41058,7 @@ Examples:
|
|
|
39704
41058
|
queryParamKeys: []
|
|
39705
41059
|
});
|
|
39706
41060
|
});
|
|
39707
|
-
resource.command("create-custom-property").description(`Create a new custom property definition with a name, type (
|
|
41061
|
+
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", `
|
|
39708
41062
|
Examples:
|
|
39709
41063
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities>
|
|
39710
41064
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -39729,6 +41083,8 @@ Examples:
|
|
|
39729
41083
|
args.entities = JSON.parse(opts.entities);
|
|
39730
41084
|
if (opts.authorizedValues !== void 0)
|
|
39731
41085
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
41086
|
+
if (opts.defaultValue !== void 0)
|
|
41087
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
39732
41088
|
await ctx.execute({
|
|
39733
41089
|
method: "POST",
|
|
39734
41090
|
path: "/v1/custom-properties",
|
|
@@ -39736,7 +41092,7 @@ Examples:
|
|
|
39736
41092
|
queryParamKeys: []
|
|
39737
41093
|
});
|
|
39738
41094
|
});
|
|
39739
|
-
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", `
|
|
41095
|
+
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", `
|
|
39740
41096
|
Examples:
|
|
39741
41097
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities>
|
|
39742
41098
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -39763,6 +41119,8 @@ Examples:
|
|
|
39763
41119
|
args.entities = JSON.parse(opts.entities);
|
|
39764
41120
|
if (opts.authorizedValues !== void 0)
|
|
39765
41121
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
41122
|
+
if (opts.defaultValue !== void 0)
|
|
41123
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
39766
41124
|
await ctx.execute({
|
|
39767
41125
|
method: "PUT",
|
|
39768
41126
|
path: "/v1/custom-properties/{id}",
|
|
@@ -39801,7 +41159,15 @@ Examples:
|
|
|
39801
41159
|
// build/commands/generated/customers.js
|
|
39802
41160
|
function registerCustomersCommands(parent) {
|
|
39803
41161
|
const resource = parent.command("customers").description("Manage customers");
|
|
39804
|
-
resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--
|
|
41162
|
+
resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, tax_id_status, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--tax-id-status <value>", `
|
|
41163
|
+
Verification status of the customer tax ID.
|
|
41164
|
+
|
|
41165
|
+
- \`valid\`: Tax ID has been verified and is valid.
|
|
41166
|
+
- \`invalid\`: Tax ID has been verified and is invalid.
|
|
41167
|
+
- \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
|
|
41168
|
+
- \`unverified\`: Tax ID has not been verified yet.
|
|
41169
|
+
- \`unsupported\`: Tax ID verification for this type not supported yet.
|
|
41170
|
+
`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--country <value>", `country`).option("--country.not <value>", `country__not`).option("--country.is-null <value>", `country__isNull`).option("--country.is-not-null <value>", `country__isNotNull`).option("--country.equals <value>", `country__equals`).option("--country.contains <value>", `country__contains`).option("--country.starts-with <value>", `country__startsWith`).option("--country.end-with <value>", `country__endWith`).option("--external-id <value>", `external_id`).option("--external-id.not <value>", `external_id__not`).option("--external-id.is-null <value>", `external_id__isNull`).option("--external-id.is-not-null <value>", `external_id__isNotNull`).option("--external-id.equals <value>", `external_id__equals`).option("--external-id.contains <value>", `external_id__contains`).option("--external-id.starts-with <value>", `external_id__startsWith`).option("--external-id.end-with <value>", `external_id__endWith`).option("--billing-email <value>", `billing_email`).option("--billing-email.not <value>", `billing_email__not`).option("--billing-email.is-null <value>", `billing_email__isNull`).option("--billing-email.is-not-null <value>", `billing_email__isNotNull`).option("--billing-email.equals <value>", `billing_email__equals`).option("--billing-email.contains <value>", `billing_email__contains`).option("--billing-email.starts-with <value>", `billing_email__startsWith`).option("--billing-email.end-with <value>", `billing_email__endWith`).option("--search <value>", `search`).option("--tax-id <value>", `tax_id`).option("--tax-id.not <value>", `tax_id__not`).option("--tax-id.is-null <value>", `tax_id__isNull`).option("--tax-id.is-not-null <value>", `tax_id__isNotNull`).option("--tax-id.equals <value>", `tax_id__equals`).option("--tax-id.contains <value>", `tax_id__contains`).option("--tax-id.starts-with <value>", `tax_id__startsWith`).option("--tax-id.end-with <value>", `tax_id__endWith`).option("--subscription-status <value>", `subscription_status`).option("--subscription-status.in <value>", `subscription_status__in`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.is-null <value>", `invoicing_entity_id__isNull`).option("--invoicing-entity-id.is-not-null <value>", `invoicing_entity_id__isNotNull`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--segment-id <value>", `segment_id`).option("--custom-properties <value>", `custom_properties`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-type.in <value>", `payment_method_type__in`).option("--integration-entity-id <value>", `integration_entity_id`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.is-null <value>", `created_at__isNull`).option("--created-at.is-not-null <value>", `created_at__isNotNull`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
39805
41171
|
Examples:
|
|
39806
41172
|
hyperline customers list
|
|
39807
41173
|
hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
@@ -39819,6 +41185,8 @@ Examples:
|
|
|
39819
41185
|
args.order = opts.order;
|
|
39820
41186
|
if (opts.sort !== void 0)
|
|
39821
41187
|
args.sort = opts.sort;
|
|
41188
|
+
if (opts.taxIdStatus !== void 0)
|
|
41189
|
+
args.tax_id_status = opts.taxIdStatus;
|
|
39822
41190
|
if (opts.name !== void 0)
|
|
39823
41191
|
args.name = opts.name;
|
|
39824
41192
|
if (opts["name.not"] !== void 0)
|
|
@@ -40003,6 +41371,7 @@ Examples:
|
|
|
40003
41371
|
"include_total",
|
|
40004
41372
|
"order",
|
|
40005
41373
|
"sort",
|
|
41374
|
+
"tax_id_status",
|
|
40006
41375
|
"name",
|
|
40007
41376
|
"name__not",
|
|
40008
41377
|
"name__isNull",
|
|
@@ -40120,7 +41489,7 @@ Customer type.
|
|
|
40120
41489
|
|
|
40121
41490
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
40122
41491
|
- \`exempt\`: The customer is exempt from tax.
|
|
40123
|
-
`).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>", `
|
|
41492
|
+
`).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>", `
|
|
40124
41493
|
How customer invoices are issued from the parent organisation.
|
|
40125
41494
|
|
|
40126
41495
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
@@ -40149,6 +41518,8 @@ Examples:
|
|
|
40149
41518
|
args.taxability = opts.taxability;
|
|
40150
41519
|
if (opts.registrationNumber !== void 0)
|
|
40151
41520
|
args.registration_number = opts.registrationNumber;
|
|
41521
|
+
if (opts.einvoicingCode !== void 0)
|
|
41522
|
+
args.einvoicing_code = opts.einvoicingCode;
|
|
40152
41523
|
if (opts.externalId !== void 0)
|
|
40153
41524
|
args.external_id = opts.externalId;
|
|
40154
41525
|
if (opts.domain !== void 0)
|
|
@@ -40255,7 +41626,7 @@ Customer type.
|
|
|
40255
41626
|
|
|
40256
41627
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
40257
41628
|
- \`exempt\`: The customer is exempt from tax.
|
|
40258
|
-
`).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>", `
|
|
41629
|
+
`).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>", `
|
|
40259
41630
|
How customer invoices are issued from the parent organisation.
|
|
40260
41631
|
|
|
40261
41632
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
@@ -40286,6 +41657,8 @@ Examples:
|
|
|
40286
41657
|
args.taxability = opts.taxability;
|
|
40287
41658
|
if (opts.registrationNumber !== void 0)
|
|
40288
41659
|
args.registration_number = opts.registrationNumber;
|
|
41660
|
+
if (opts.einvoicingCode !== void 0)
|
|
41661
|
+
args.einvoicing_code = opts.einvoicingCode;
|
|
40289
41662
|
if (opts.externalId !== void 0)
|
|
40290
41663
|
args.external_id = opts.externalId;
|
|
40291
41664
|
if (opts.domain !== void 0)
|
|
@@ -40518,6 +41891,133 @@ Examples:
|
|
|
40518
41891
|
});
|
|
40519
41892
|
}
|
|
40520
41893
|
|
|
41894
|
+
// build/commands/generated/customers-address.js
|
|
41895
|
+
function registerCustomers_AddressCommands(parent) {
|
|
41896
|
+
const resource = parent.command("customers-address").description("Manage customers > address");
|
|
41897
|
+
resource.command("list-customer-addresses").description(`List active addresses: at most one billing address and multiple shipping addresses per customer.`).requiredOption("--customer-id <value>", `customerId parameter`).addHelpText("after", `
|
|
41898
|
+
Examples:
|
|
41899
|
+
hyperline customers-address list-customer-addresses --customer-id <customerId>`).action(async (opts) => {
|
|
41900
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41901
|
+
if (!ctx) {
|
|
41902
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41903
|
+
process.exit(1);
|
|
41904
|
+
}
|
|
41905
|
+
const args = {};
|
|
41906
|
+
if (opts.customerId !== void 0)
|
|
41907
|
+
args.customerId = opts.customerId;
|
|
41908
|
+
await ctx.execute({
|
|
41909
|
+
method: "GET",
|
|
41910
|
+
path: "/v1/customers/{customerId}/addresses",
|
|
41911
|
+
args,
|
|
41912
|
+
queryParamKeys: []
|
|
41913
|
+
});
|
|
41914
|
+
});
|
|
41915
|
+
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", `
|
|
41916
|
+
Examples:
|
|
41917
|
+
hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
|
|
41918
|
+
hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
|
|
41919
|
+
hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --output json`).action(async (opts) => {
|
|
41920
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41921
|
+
if (!ctx) {
|
|
41922
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41923
|
+
process.exit(1);
|
|
41924
|
+
}
|
|
41925
|
+
const args = {};
|
|
41926
|
+
if (opts.customerId !== void 0)
|
|
41927
|
+
args.customerId = opts.customerId;
|
|
41928
|
+
if (opts.type !== void 0)
|
|
41929
|
+
args.type = opts.type;
|
|
41930
|
+
if (opts.name !== void 0)
|
|
41931
|
+
args.name = opts.name;
|
|
41932
|
+
if (opts.line1 !== void 0)
|
|
41933
|
+
args.line1 = opts.line1;
|
|
41934
|
+
if (opts.line2 !== void 0)
|
|
41935
|
+
args.line2 = opts.line2;
|
|
41936
|
+
if (opts.city !== void 0)
|
|
41937
|
+
args.city = opts.city;
|
|
41938
|
+
if (opts.zip !== void 0)
|
|
41939
|
+
args.zip = opts.zip;
|
|
41940
|
+
if (opts.state !== void 0)
|
|
41941
|
+
args.state = opts.state;
|
|
41942
|
+
if (opts.country !== void 0)
|
|
41943
|
+
args.country = opts.country;
|
|
41944
|
+
if (opts.taxId !== void 0)
|
|
41945
|
+
args.tax_id = opts.taxId;
|
|
41946
|
+
await ctx.execute({
|
|
41947
|
+
method: "POST",
|
|
41948
|
+
path: "/v1/customers/{customerId}/addresses",
|
|
41949
|
+
args,
|
|
41950
|
+
queryParamKeys: []
|
|
41951
|
+
});
|
|
41952
|
+
});
|
|
41953
|
+
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", `
|
|
41954
|
+
Examples:
|
|
41955
|
+
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
|
|
41956
|
+
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
|
|
41957
|
+
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --output json`).action(async (opts) => {
|
|
41958
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41959
|
+
if (!ctx) {
|
|
41960
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41961
|
+
process.exit(1);
|
|
41962
|
+
}
|
|
41963
|
+
const args = {};
|
|
41964
|
+
if (opts.customerId !== void 0)
|
|
41965
|
+
args.customerId = opts.customerId;
|
|
41966
|
+
if (opts.addressId !== void 0)
|
|
41967
|
+
args.addressId = opts.addressId;
|
|
41968
|
+
if (opts.name !== void 0)
|
|
41969
|
+
args.name = opts.name;
|
|
41970
|
+
if (opts.line1 !== void 0)
|
|
41971
|
+
args.line1 = opts.line1;
|
|
41972
|
+
if (opts.line2 !== void 0)
|
|
41973
|
+
args.line2 = opts.line2;
|
|
41974
|
+
if (opts.city !== void 0)
|
|
41975
|
+
args.city = opts.city;
|
|
41976
|
+
if (opts.zip !== void 0)
|
|
41977
|
+
args.zip = opts.zip;
|
|
41978
|
+
if (opts.state !== void 0)
|
|
41979
|
+
args.state = opts.state;
|
|
41980
|
+
if (opts.country !== void 0)
|
|
41981
|
+
args.country = opts.country;
|
|
41982
|
+
if (opts.taxId !== void 0)
|
|
41983
|
+
args.tax_id = opts.taxId;
|
|
41984
|
+
await ctx.execute({
|
|
41985
|
+
method: "PATCH",
|
|
41986
|
+
path: "/v1/customers/{customerId}/addresses/{addressId}",
|
|
41987
|
+
args,
|
|
41988
|
+
queryParamKeys: []
|
|
41989
|
+
});
|
|
41990
|
+
});
|
|
41991
|
+
resource.command("delete-customer-address").description(`Delete an address. To delete the default shipping address, first select another shipping address or use the billing address.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
41992
|
+
Examples:
|
|
41993
|
+
hyperline customers-address delete-customer-address --customer-id <customerId> --address-id <addressId>
|
|
41994
|
+
hyperline customers-address delete-customer-address --customer-id <customerId> --address-id <addressId> --output json`).action(async (opts) => {
|
|
41995
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41996
|
+
if (!ctx) {
|
|
41997
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41998
|
+
process.exit(1);
|
|
41999
|
+
}
|
|
42000
|
+
const args = {};
|
|
42001
|
+
if (opts.customerId !== void 0)
|
|
42002
|
+
args.customerId = opts.customerId;
|
|
42003
|
+
if (opts.addressId !== void 0)
|
|
42004
|
+
args.addressId = opts.addressId;
|
|
42005
|
+
if (!opts.yes) {
|
|
42006
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
42007
|
+
if (!confirmed) {
|
|
42008
|
+
process.stdout.write("Aborted.\n");
|
|
42009
|
+
return;
|
|
42010
|
+
}
|
|
42011
|
+
}
|
|
42012
|
+
await ctx.execute({
|
|
42013
|
+
method: "DELETE",
|
|
42014
|
+
path: "/v1/customers/{customerId}/addresses/{addressId}",
|
|
42015
|
+
args,
|
|
42016
|
+
queryParamKeys: []
|
|
42017
|
+
});
|
|
42018
|
+
});
|
|
42019
|
+
}
|
|
42020
|
+
|
|
40521
42021
|
// build/commands/generated/customers-credits.js
|
|
40522
42022
|
function registerCustomers_CreditsCommands(parent) {
|
|
40523
42023
|
const resource = parent.command("customers-credits").description("Manage customers > credits");
|
|
@@ -40663,7 +42163,7 @@ Examples:
|
|
|
40663
42163
|
queryParamKeys: []
|
|
40664
42164
|
});
|
|
40665
42165
|
});
|
|
40666
|
-
resource.command("list-customer-credit-transactions").description(`List all transactions (
|
|
42166
|
+
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", `
|
|
40667
42167
|
Examples:
|
|
40668
42168
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId>
|
|
40669
42169
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId> --take <take> --type <type>`).action(async (opts) => {
|
|
@@ -40752,7 +42252,7 @@ Examples:
|
|
|
40752
42252
|
queryParamKeys: []
|
|
40753
42253
|
});
|
|
40754
42254
|
});
|
|
40755
|
-
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", `
|
|
42255
|
+
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", `
|
|
40756
42256
|
Examples:
|
|
40757
42257
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count>
|
|
40758
42258
|
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>
|
|
@@ -40834,6 +42334,54 @@ Examples:
|
|
|
40834
42334
|
queryParamKeys: []
|
|
40835
42335
|
});
|
|
40836
42336
|
});
|
|
42337
|
+
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", `
|
|
42338
|
+
Examples:
|
|
42339
|
+
hyperline customers-credits get-customer-credit-portal-settings --id <id> --product-id <productId>`).action(async (opts) => {
|
|
42340
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42341
|
+
if (!ctx) {
|
|
42342
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42343
|
+
process.exit(1);
|
|
42344
|
+
}
|
|
42345
|
+
const args = {};
|
|
42346
|
+
if (opts.id !== void 0)
|
|
42347
|
+
args.id = opts.id;
|
|
42348
|
+
if (opts.productId !== void 0)
|
|
42349
|
+
args.productId = opts.productId;
|
|
42350
|
+
await ctx.execute({
|
|
42351
|
+
method: "GET",
|
|
42352
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42353
|
+
args,
|
|
42354
|
+
queryParamKeys: []
|
|
42355
|
+
});
|
|
42356
|
+
});
|
|
42357
|
+
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", `
|
|
42358
|
+
Examples:
|
|
42359
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
|
|
42360
|
+
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>
|
|
42361
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --output json`).action(async (opts) => {
|
|
42362
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42363
|
+
if (!ctx) {
|
|
42364
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42365
|
+
process.exit(1);
|
|
42366
|
+
}
|
|
42367
|
+
const args = {};
|
|
42368
|
+
if (opts.id !== void 0)
|
|
42369
|
+
args.id = opts.id;
|
|
42370
|
+
if (opts.productId !== void 0)
|
|
42371
|
+
args.productId = opts.productId;
|
|
42372
|
+
if (opts.priceConfigurationId !== void 0)
|
|
42373
|
+
args.price_configuration_id = opts.priceConfigurationId;
|
|
42374
|
+
if (opts.enabled !== void 0)
|
|
42375
|
+
args.enabled = true;
|
|
42376
|
+
if (opts.customPriceConfiguration !== void 0)
|
|
42377
|
+
args.custom_price_configuration = JSON.parse(opts.customPriceConfiguration);
|
|
42378
|
+
await ctx.execute({
|
|
42379
|
+
method: "PUT",
|
|
42380
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42381
|
+
args,
|
|
42382
|
+
queryParamKeys: []
|
|
42383
|
+
});
|
|
42384
|
+
});
|
|
40837
42385
|
}
|
|
40838
42386
|
|
|
40839
42387
|
// build/commands/generated/customers-payment-methods.js
|
|
@@ -40897,16 +42445,172 @@ Examples:
|
|
|
40897
42445
|
if (opts.paymentMethodId !== void 0)
|
|
40898
42446
|
args.paymentMethodId = opts.paymentMethodId;
|
|
40899
42447
|
await ctx.execute({
|
|
40900
|
-
method: "GET",
|
|
40901
|
-
path: "/v1/customers/{id}/payment-methods/{paymentMethodId}",
|
|
42448
|
+
method: "GET",
|
|
42449
|
+
path: "/v1/customers/{id}/payment-methods/{paymentMethodId}",
|
|
42450
|
+
args,
|
|
42451
|
+
queryParamKeys: []
|
|
42452
|
+
});
|
|
42453
|
+
});
|
|
42454
|
+
resource.command("delete-customer-payment-method").description(`Remove a payment method from a customer. The payment method is deleted permanently.`).requiredOption("--id <value>", `id parameter`).requiredOption("--payment-method-id <value>", `paymentMethodId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
42455
|
+
Examples:
|
|
42456
|
+
hyperline customers-payment-methods delete-customer-payment-method --id <id> --payment-method-id <paymentMethodId>
|
|
42457
|
+
hyperline customers-payment-methods delete-customer-payment-method --id <id> --payment-method-id <paymentMethodId> --output json`).action(async (opts) => {
|
|
42458
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42459
|
+
if (!ctx) {
|
|
42460
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42461
|
+
process.exit(1);
|
|
42462
|
+
}
|
|
42463
|
+
const args = {};
|
|
42464
|
+
if (opts.id !== void 0)
|
|
42465
|
+
args.id = opts.id;
|
|
42466
|
+
if (opts.paymentMethodId !== void 0)
|
|
42467
|
+
args.paymentMethodId = opts.paymentMethodId;
|
|
42468
|
+
if (!opts.yes) {
|
|
42469
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
42470
|
+
if (!confirmed) {
|
|
42471
|
+
process.stdout.write("Aborted.\n");
|
|
42472
|
+
return;
|
|
42473
|
+
}
|
|
42474
|
+
}
|
|
42475
|
+
await ctx.execute({
|
|
42476
|
+
method: "DELETE",
|
|
42477
|
+
path: "/v1/customers/{id}/payment-methods/{paymentMethodId}",
|
|
42478
|
+
args,
|
|
42479
|
+
queryParamKeys: []
|
|
42480
|
+
});
|
|
42481
|
+
});
|
|
42482
|
+
}
|
|
42483
|
+
|
|
42484
|
+
// build/commands/generated/customers-segments.js
|
|
42485
|
+
function registerCustomers_SegmentsCommands(parent) {
|
|
42486
|
+
const resource = parent.command("customers-segments").description("Manage customers > segments");
|
|
42487
|
+
resource.command("list").description(`Retrieve all customer segments.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
42488
|
+
Examples:
|
|
42489
|
+
hyperline customers-segments list
|
|
42490
|
+
hyperline customers-segments list --take <take>`).action(async (opts) => {
|
|
42491
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42492
|
+
if (!ctx) {
|
|
42493
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42494
|
+
process.exit(1);
|
|
42495
|
+
}
|
|
42496
|
+
const args = {};
|
|
42497
|
+
if (opts.take !== void 0)
|
|
42498
|
+
args.take = Number(opts.take);
|
|
42499
|
+
if (opts.skip !== void 0)
|
|
42500
|
+
args.skip = Number(opts.skip);
|
|
42501
|
+
await ctx.execute({
|
|
42502
|
+
method: "GET",
|
|
42503
|
+
path: "/v1/customers/segments",
|
|
42504
|
+
args,
|
|
42505
|
+
queryParamKeys: ["take", "skip"]
|
|
42506
|
+
});
|
|
42507
|
+
});
|
|
42508
|
+
resource.command("create").description(`Create a new customer segment.`).requiredOption("--name <value>", `name`).option("--description <value>", `description`).requiredOption("--rules <json>", `rules`).addHelpText("after", `
|
|
42509
|
+
Examples:
|
|
42510
|
+
hyperline customers-segments create --name <name> --rules <rules>
|
|
42511
|
+
hyperline customers-segments create --name <name> --rules <rules> --description <description>
|
|
42512
|
+
hyperline customers-segments create --name <name> --rules <rules> --output json`).action(async (opts) => {
|
|
42513
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42514
|
+
if (!ctx) {
|
|
42515
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42516
|
+
process.exit(1);
|
|
42517
|
+
}
|
|
42518
|
+
const args = {};
|
|
42519
|
+
if (opts.name !== void 0)
|
|
42520
|
+
args.name = opts.name;
|
|
42521
|
+
if (opts.description !== void 0)
|
|
42522
|
+
args.description = opts.description;
|
|
42523
|
+
if (opts.rules !== void 0)
|
|
42524
|
+
args.rules = JSON.parse(opts.rules);
|
|
42525
|
+
await ctx.execute({
|
|
42526
|
+
method: "POST",
|
|
42527
|
+
path: "/v1/customers/segments",
|
|
42528
|
+
args,
|
|
42529
|
+
queryParamKeys: []
|
|
42530
|
+
});
|
|
42531
|
+
});
|
|
42532
|
+
resource.command("update").description(`Update an existing customer segment.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `name`).option("--description <value>", `description`).option("--rules <json>", `rules`).addHelpText("after", `
|
|
42533
|
+
Examples:
|
|
42534
|
+
hyperline customers-segments update --id <id>
|
|
42535
|
+
hyperline customers-segments update --id <id> --name <name> --description <description>
|
|
42536
|
+
hyperline customers-segments update --id <id> --output json`).action(async (opts) => {
|
|
42537
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42538
|
+
if (!ctx) {
|
|
42539
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42540
|
+
process.exit(1);
|
|
42541
|
+
}
|
|
42542
|
+
const args = {};
|
|
42543
|
+
if (opts.id !== void 0)
|
|
42544
|
+
args.id = opts.id;
|
|
42545
|
+
if (opts.name !== void 0)
|
|
42546
|
+
args.name = opts.name;
|
|
42547
|
+
if (opts.description !== void 0)
|
|
42548
|
+
args.description = opts.description;
|
|
42549
|
+
if (opts.rules !== void 0)
|
|
42550
|
+
args.rules = JSON.parse(opts.rules);
|
|
42551
|
+
await ctx.execute({
|
|
42552
|
+
method: "PATCH",
|
|
42553
|
+
path: "/v1/customers/segments/{id}",
|
|
42554
|
+
args,
|
|
42555
|
+
queryParamKeys: []
|
|
42556
|
+
});
|
|
42557
|
+
});
|
|
42558
|
+
}
|
|
42559
|
+
|
|
42560
|
+
// build/commands/generated/customers-shipping.js
|
|
42561
|
+
function registerCustomers_ShippingCommands(parent) {
|
|
42562
|
+
const resource = parent.command("customers-shipping").description("Manage customers > shipping");
|
|
42563
|
+
resource.command("get-customer-shipping-destination").description(`Get the billing or shipping destination and its resolved address object, or null if no address exists.`).requiredOption("--customer-id <value>", `customerId parameter`).addHelpText("after", `
|
|
42564
|
+
Examples:
|
|
42565
|
+
hyperline customers-shipping get-customer-shipping-destination --customer-id <customerId>`).action(async (opts) => {
|
|
42566
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42567
|
+
if (!ctx) {
|
|
42568
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42569
|
+
process.exit(1);
|
|
42570
|
+
}
|
|
42571
|
+
const args = {};
|
|
42572
|
+
if (opts.customerId !== void 0)
|
|
42573
|
+
args.customerId = opts.customerId;
|
|
42574
|
+
await ctx.execute({
|
|
42575
|
+
method: "GET",
|
|
42576
|
+
path: "/v1/customers/{customerId}/shipping",
|
|
42577
|
+
args,
|
|
42578
|
+
queryParamKeys: []
|
|
42579
|
+
});
|
|
42580
|
+
});
|
|
42581
|
+
resource.command("set-customer-shipping-destination").description(`Select a saved shipping address or use the billing address.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--destination <value>", `Whether shipping uses the billing address or a saved shipping address.`).option("--address-id <value>", `Active shipping address ID belonging to this customer. Uses the customer's default shipping address when omitted. A shipping address must exist.`).addHelpText("after", `
|
|
42582
|
+
Examples:
|
|
42583
|
+
hyperline customers-shipping set-customer-shipping-destination --customer-id <customerId> --destination <destination>
|
|
42584
|
+
hyperline customers-shipping set-customer-shipping-destination --customer-id <customerId> --destination <destination> --address-id <address_id>
|
|
42585
|
+
hyperline customers-shipping set-customer-shipping-destination --customer-id <customerId> --destination <destination> --output json`).action(async (opts) => {
|
|
42586
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42587
|
+
if (!ctx) {
|
|
42588
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42589
|
+
process.exit(1);
|
|
42590
|
+
}
|
|
42591
|
+
const args = {};
|
|
42592
|
+
if (opts.customerId !== void 0)
|
|
42593
|
+
args.customerId = opts.customerId;
|
|
42594
|
+
if (opts.destination !== void 0)
|
|
42595
|
+
args.destination = opts.destination;
|
|
42596
|
+
if (opts.addressId !== void 0)
|
|
42597
|
+
args.address_id = opts.addressId;
|
|
42598
|
+
await ctx.execute({
|
|
42599
|
+
method: "PUT",
|
|
42600
|
+
path: "/v1/customers/{customerId}/shipping",
|
|
40902
42601
|
args,
|
|
40903
42602
|
queryParamKeys: []
|
|
40904
42603
|
});
|
|
40905
42604
|
});
|
|
40906
|
-
|
|
42605
|
+
}
|
|
42606
|
+
|
|
42607
|
+
// build/commands/generated/customers-usage.js
|
|
42608
|
+
function registerCustomers_UsageCommands(parent) {
|
|
42609
|
+
const resource = parent.command("customers-usage").description("Manage customers > usage");
|
|
42610
|
+
resource.command("list-customer-usage").description(`List one usage row per aggregator for a single customer over a period (total + event count per aggregator).`).requiredOption("--id <value>", `id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).addHelpText("after", `
|
|
40907
42611
|
Examples:
|
|
40908
|
-
hyperline customers-
|
|
40909
|
-
hyperline customers-
|
|
42612
|
+
hyperline customers-usage list-customer-usage --id <id>
|
|
42613
|
+
hyperline customers-usage list-customer-usage --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
40910
42614
|
const ctx = resource.parent?.opts()._ctx;
|
|
40911
42615
|
if (!ctx) {
|
|
40912
42616
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40915,77 +42619,80 @@ Examples:
|
|
|
40915
42619
|
const args = {};
|
|
40916
42620
|
if (opts.id !== void 0)
|
|
40917
42621
|
args.id = opts.id;
|
|
40918
|
-
if (opts.
|
|
40919
|
-
args.
|
|
40920
|
-
if (
|
|
40921
|
-
|
|
40922
|
-
if (!confirmed) {
|
|
40923
|
-
process.stdout.write("Aborted.\n");
|
|
40924
|
-
return;
|
|
40925
|
-
}
|
|
40926
|
-
}
|
|
42622
|
+
if (opts.startDate !== void 0)
|
|
42623
|
+
args.start_date = opts.startDate;
|
|
42624
|
+
if (opts.endDate !== void 0)
|
|
42625
|
+
args.end_date = opts.endDate;
|
|
40927
42626
|
await ctx.execute({
|
|
40928
|
-
method: "
|
|
40929
|
-
path: "/v1/customers/{id}/
|
|
42627
|
+
method: "GET",
|
|
42628
|
+
path: "/v1/customers/{id}/usage",
|
|
40930
42629
|
args,
|
|
40931
|
-
queryParamKeys: []
|
|
42630
|
+
queryParamKeys: ["start_date", "end_date"]
|
|
40932
42631
|
});
|
|
40933
42632
|
});
|
|
40934
|
-
|
|
40935
|
-
|
|
40936
|
-
// build/commands/generated/customers-segments.js
|
|
40937
|
-
function registerCustomers_SegmentsCommands(parent) {
|
|
40938
|
-
const resource = parent.command("customers-segments").description("Manage customers > segments");
|
|
40939
|
-
resource.command("list").description(`Retrieve all customer segments.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
42633
|
+
resource.command("get-customer-usage").description(`Get the usage of a customer for a specific aggregator over a period.`).requiredOption("--id <value>", `id parameter`).requiredOption("--aggregator-id <value>", `aggregator_id parameter`).option("--start-date <value>", `ISO-8601 date string.`).option("--end-date <value>", `ISO-8601 date string.`).addHelpText("after", `
|
|
40940
42634
|
Examples:
|
|
40941
|
-
hyperline customers-
|
|
40942
|
-
hyperline customers-
|
|
42635
|
+
hyperline customers-usage get-customer-usage --id <id> --aggregator-id <aggregator_id>
|
|
42636
|
+
hyperline customers-usage get-customer-usage --id <id> --aggregator-id <aggregator_id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
40943
42637
|
const ctx = resource.parent?.opts()._ctx;
|
|
40944
42638
|
if (!ctx) {
|
|
40945
42639
|
process.stderr.write("Error: Not authenticated\n");
|
|
40946
42640
|
process.exit(1);
|
|
40947
42641
|
}
|
|
40948
42642
|
const args = {};
|
|
40949
|
-
if (opts.
|
|
40950
|
-
args.
|
|
40951
|
-
if (opts.
|
|
40952
|
-
args.
|
|
42643
|
+
if (opts.id !== void 0)
|
|
42644
|
+
args.id = opts.id;
|
|
42645
|
+
if (opts.aggregatorId !== void 0)
|
|
42646
|
+
args.aggregator_id = opts.aggregatorId;
|
|
42647
|
+
if (opts.startDate !== void 0)
|
|
42648
|
+
args.start_date = opts.startDate;
|
|
42649
|
+
if (opts.endDate !== void 0)
|
|
42650
|
+
args.end_date = opts.endDate;
|
|
40953
42651
|
await ctx.execute({
|
|
40954
42652
|
method: "GET",
|
|
40955
|
-
path: "/v1/customers/
|
|
42653
|
+
path: "/v1/customers/{id}/usage/{aggregator_id}",
|
|
40956
42654
|
args,
|
|
40957
|
-
queryParamKeys: ["
|
|
42655
|
+
queryParamKeys: ["start_date", "end_date"]
|
|
40958
42656
|
});
|
|
40959
42657
|
});
|
|
40960
|
-
resource.command("
|
|
42658
|
+
resource.command("get-customer-usage-timeseries").description(`Get per-bucket usage for a customer + aggregator (month/day/hour).`).requiredOption("--id <value>", `id parameter`).requiredOption("--aggregator-id <value>", `aggregator_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", `
|
|
40961
42659
|
Examples:
|
|
40962
|
-
hyperline customers-
|
|
40963
|
-
hyperline customers-
|
|
40964
|
-
hyperline customers-segments create --name <name> --rules <rules> --output json`).action(async (opts) => {
|
|
42660
|
+
hyperline customers-usage get-customer-usage-timeseries --id <id> --aggregator-id <aggregator_id>
|
|
42661
|
+
hyperline customers-usage get-customer-usage-timeseries --id <id> --aggregator-id <aggregator_id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
40965
42662
|
const ctx = resource.parent?.opts()._ctx;
|
|
40966
42663
|
if (!ctx) {
|
|
40967
42664
|
process.stderr.write("Error: Not authenticated\n");
|
|
40968
42665
|
process.exit(1);
|
|
40969
42666
|
}
|
|
40970
42667
|
const args = {};
|
|
40971
|
-
if (opts.
|
|
40972
|
-
args.
|
|
40973
|
-
if (opts.
|
|
40974
|
-
args.
|
|
40975
|
-
if (opts.
|
|
40976
|
-
args.
|
|
42668
|
+
if (opts.id !== void 0)
|
|
42669
|
+
args.id = opts.id;
|
|
42670
|
+
if (opts.aggregatorId !== void 0)
|
|
42671
|
+
args.aggregator_id = opts.aggregatorId;
|
|
42672
|
+
if (opts.startDate !== void 0)
|
|
42673
|
+
args.start_date = opts.startDate;
|
|
42674
|
+
if (opts.endDate !== void 0)
|
|
42675
|
+
args.end_date = opts.endDate;
|
|
42676
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
42677
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
42678
|
+
if (opts.groupBy !== void 0)
|
|
42679
|
+
args.group_by = opts.groupBy;
|
|
40977
42680
|
await ctx.execute({
|
|
40978
|
-
method: "
|
|
40979
|
-
path: "/v1/customers/
|
|
42681
|
+
method: "GET",
|
|
42682
|
+
path: "/v1/customers/{id}/usage/{aggregator_id}/timeseries",
|
|
40980
42683
|
args,
|
|
40981
|
-
queryParamKeys: [
|
|
42684
|
+
queryParamKeys: [
|
|
42685
|
+
"start_date",
|
|
42686
|
+
"end_date",
|
|
42687
|
+
"aggregator_filter_id",
|
|
42688
|
+
"group_by"
|
|
42689
|
+
]
|
|
40982
42690
|
});
|
|
40983
42691
|
});
|
|
40984
|
-
resource.command("
|
|
42692
|
+
resource.command("get-customer-usage-events").description(`List raw billable events for a customer + aggregator over a period. Paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).requiredOption("--aggregator-id <value>", `aggregator_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", `
|
|
40985
42693
|
Examples:
|
|
40986
|
-
hyperline customers-
|
|
40987
|
-
hyperline customers-
|
|
40988
|
-
hyperline customers-segments update --id <id> --output json`).action(async (opts) => {
|
|
42694
|
+
hyperline customers-usage get-customer-usage-events --id <id> --aggregator-id <aggregator_id>
|
|
42695
|
+
hyperline customers-usage get-customer-usage-events --id <id> --aggregator-id <aggregator_id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
40989
42696
|
const ctx = resource.parent?.opts()._ctx;
|
|
40990
42697
|
if (!ctx) {
|
|
40991
42698
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40994,17 +42701,29 @@ Examples:
|
|
|
40994
42701
|
const args = {};
|
|
40995
42702
|
if (opts.id !== void 0)
|
|
40996
42703
|
args.id = opts.id;
|
|
40997
|
-
if (opts.
|
|
40998
|
-
args.
|
|
40999
|
-
if (opts.
|
|
41000
|
-
args.
|
|
41001
|
-
if (opts.
|
|
41002
|
-
args.
|
|
42704
|
+
if (opts.aggregatorId !== void 0)
|
|
42705
|
+
args.aggregator_id = opts.aggregatorId;
|
|
42706
|
+
if (opts.startDate !== void 0)
|
|
42707
|
+
args.start_date = opts.startDate;
|
|
42708
|
+
if (opts.endDate !== void 0)
|
|
42709
|
+
args.end_date = opts.endDate;
|
|
42710
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
42711
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
42712
|
+
if (opts.take !== void 0)
|
|
42713
|
+
args.take = Number(opts.take);
|
|
42714
|
+
if (opts.skip !== void 0)
|
|
42715
|
+
args.skip = Number(opts.skip);
|
|
41003
42716
|
await ctx.execute({
|
|
41004
|
-
method: "
|
|
41005
|
-
path: "/v1/customers/
|
|
42717
|
+
method: "GET",
|
|
42718
|
+
path: "/v1/customers/{id}/usage/{aggregator_id}/events",
|
|
41006
42719
|
args,
|
|
41007
|
-
queryParamKeys: [
|
|
42720
|
+
queryParamKeys: [
|
|
42721
|
+
"start_date",
|
|
42722
|
+
"end_date",
|
|
42723
|
+
"aggregator_filter_id",
|
|
42724
|
+
"take",
|
|
42725
|
+
"skip"
|
|
42726
|
+
]
|
|
41008
42727
|
});
|
|
41009
42728
|
});
|
|
41010
42729
|
}
|
|
@@ -41618,7 +43337,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
|
|
|
41618
43337
|
|
|
41619
43338
|
- \`current\`: Use the current default payment method of the customer.
|
|
41620
43339
|
- \`external\`: Manage the payment of the invoice outside of Hyperline.
|
|
41621
|
-
`).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", `
|
|
43340
|
+
`).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", `
|
|
41622
43341
|
Examples:
|
|
41623
43342
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
|
|
41624
43343
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
|
|
@@ -41669,6 +43388,8 @@ Examples:
|
|
|
41669
43388
|
args.due_at = opts.dueAt;
|
|
41670
43389
|
if (opts.settledAt !== void 0)
|
|
41671
43390
|
args.settled_at = opts.settledAt;
|
|
43391
|
+
if (opts.issuingMethod !== void 0)
|
|
43392
|
+
args.issuing_method = opts.issuingMethod;
|
|
41672
43393
|
if (opts.properties !== void 0)
|
|
41673
43394
|
args.properties = JSON.parse(opts.properties);
|
|
41674
43395
|
if (opts.customProperties !== void 0)
|
|
@@ -41790,7 +43511,7 @@ Examples:
|
|
|
41790
43511
|
queryParamKeys: []
|
|
41791
43512
|
});
|
|
41792
43513
|
});
|
|
41793
|
-
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", `
|
|
43514
|
+
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", `
|
|
41794
43515
|
Examples:
|
|
41795
43516
|
hyperline invoices void --id <id>
|
|
41796
43517
|
hyperline invoices void --id <id> --send-email
|
|
@@ -41858,7 +43579,7 @@ Examples:
|
|
|
41858
43579
|
|
|
41859
43580
|
- \`auto\`: Tax is automatically computed and applied.
|
|
41860
43581
|
- \`not_eligible\`: Tax collection is disabled for the invoice.
|
|
41861
|
-
`).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", `
|
|
43582
|
+
`).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", `
|
|
41862
43583
|
Examples:
|
|
41863
43584
|
hyperline invoices update --id <id>
|
|
41864
43585
|
hyperline invoices update --id <id> --type <type> --document-name <document_name>
|
|
@@ -41887,6 +43608,10 @@ Examples:
|
|
|
41887
43608
|
args.footer = opts.footer;
|
|
41888
43609
|
if (opts.taxScheme !== void 0)
|
|
41889
43610
|
args.tax_scheme = opts.taxScheme;
|
|
43611
|
+
if (opts.issuingMethod !== void 0)
|
|
43612
|
+
args.issuing_method = opts.issuingMethod;
|
|
43613
|
+
if (opts.emittedAt !== void 0)
|
|
43614
|
+
args.emitted_at = opts.emittedAt;
|
|
41890
43615
|
if (opts.paymentMethodType !== void 0)
|
|
41891
43616
|
args.payment_method_type = opts.paymentMethodType;
|
|
41892
43617
|
if (opts.paymentMethodId !== void 0)
|
|
@@ -42095,7 +43820,7 @@ Examples:
|
|
|
42095
43820
|
queryParamKeys: []
|
|
42096
43821
|
});
|
|
42097
43822
|
});
|
|
42098
|
-
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
|
|
43823
|
+
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", `
|
|
42099
43824
|
Examples:
|
|
42100
43825
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
42101
43826
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -42178,6 +43903,8 @@ Examples:
|
|
|
42178
43903
|
args.credit_note_wallet_refund_enabled = true;
|
|
42179
43904
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
42180
43905
|
args.standalone_credit_note_creation_enabled = true;
|
|
43906
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43907
|
+
args.fx_conversion_display_enabled = true;
|
|
42181
43908
|
await ctx.execute({
|
|
42182
43909
|
method: "POST",
|
|
42183
43910
|
path: "/v1/invoicing-entities",
|
|
@@ -42185,7 +43912,7 @@ Examples:
|
|
|
42185
43912
|
queryParamKeys: []
|
|
42186
43913
|
});
|
|
42187
43914
|
});
|
|
42188
|
-
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
|
|
43915
|
+
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", `
|
|
42189
43916
|
Examples:
|
|
42190
43917
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
42191
43918
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -42260,6 +43987,8 @@ Examples:
|
|
|
42260
43987
|
args.credit_note_wallet_refund_enabled = true;
|
|
42261
43988
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
42262
43989
|
args.standalone_credit_note_creation_enabled = true;
|
|
43990
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43991
|
+
args.fx_conversion_display_enabled = true;
|
|
42263
43992
|
await ctx.execute({
|
|
42264
43993
|
method: "PUT",
|
|
42265
43994
|
path: "/v1/invoicing-entities/{id}",
|
|
@@ -42298,6 +44027,93 @@ Examples:
|
|
|
42298
44027
|
// build/commands/generated/organisations.js
|
|
42299
44028
|
function registerOrganisationsCommands(parent) {
|
|
42300
44029
|
const resource = parent.command("organisations").description("Manage organisations");
|
|
44030
|
+
resource.command("list").description(`Retrieve organisations with their billing details and child customer IDs.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.is-null <value>", `created_at__isNull`).option("--created-at.is-not-null <value>", `created_at__isNotNull`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
44031
|
+
Examples:
|
|
44032
|
+
hyperline organisations list
|
|
44033
|
+
hyperline organisations list --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
44034
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44035
|
+
if (!ctx) {
|
|
44036
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44037
|
+
process.exit(1);
|
|
44038
|
+
}
|
|
44039
|
+
const args = {};
|
|
44040
|
+
if (opts.cursor !== void 0)
|
|
44041
|
+
args.cursor = opts.cursor;
|
|
44042
|
+
if (opts.includeTotal !== void 0)
|
|
44043
|
+
args.include_total = opts.includeTotal;
|
|
44044
|
+
if (opts.order !== void 0)
|
|
44045
|
+
args.order = opts.order;
|
|
44046
|
+
if (opts.sort !== void 0)
|
|
44047
|
+
args.sort = opts.sort;
|
|
44048
|
+
if (opts.createdAt !== void 0)
|
|
44049
|
+
args.created_at = opts.createdAt;
|
|
44050
|
+
if (opts["createdAt.not"] !== void 0)
|
|
44051
|
+
args.created_at__not = opts["createdAt.not"];
|
|
44052
|
+
if (opts["createdAt.isNull"] !== void 0)
|
|
44053
|
+
args.created_at__isNull = opts["createdAt.isNull"];
|
|
44054
|
+
if (opts["createdAt.isNotNull"] !== void 0)
|
|
44055
|
+
args.created_at__isNotNull = opts["createdAt.isNotNull"];
|
|
44056
|
+
if (opts["createdAt.equals"] !== void 0)
|
|
44057
|
+
args.created_at__equals = opts["createdAt.equals"];
|
|
44058
|
+
if (opts["createdAt.lt"] !== void 0)
|
|
44059
|
+
args.created_at__lt = opts["createdAt.lt"];
|
|
44060
|
+
if (opts["createdAt.lte"] !== void 0)
|
|
44061
|
+
args.created_at__lte = opts["createdAt.lte"];
|
|
44062
|
+
if (opts["createdAt.gt"] !== void 0)
|
|
44063
|
+
args.created_at__gt = opts["createdAt.gt"];
|
|
44064
|
+
if (opts["createdAt.gte"] !== void 0)
|
|
44065
|
+
args.created_at__gte = opts["createdAt.gte"];
|
|
44066
|
+
if (opts.updatedAt !== void 0)
|
|
44067
|
+
args.updated_at = opts.updatedAt;
|
|
44068
|
+
if (opts["updatedAt.not"] !== void 0)
|
|
44069
|
+
args.updated_at__not = opts["updatedAt.not"];
|
|
44070
|
+
if (opts["updatedAt.isNull"] !== void 0)
|
|
44071
|
+
args.updated_at__isNull = opts["updatedAt.isNull"];
|
|
44072
|
+
if (opts["updatedAt.isNotNull"] !== void 0)
|
|
44073
|
+
args.updated_at__isNotNull = opts["updatedAt.isNotNull"];
|
|
44074
|
+
if (opts["updatedAt.equals"] !== void 0)
|
|
44075
|
+
args.updated_at__equals = opts["updatedAt.equals"];
|
|
44076
|
+
if (opts["updatedAt.lt"] !== void 0)
|
|
44077
|
+
args.updated_at__lt = opts["updatedAt.lt"];
|
|
44078
|
+
if (opts["updatedAt.lte"] !== void 0)
|
|
44079
|
+
args.updated_at__lte = opts["updatedAt.lte"];
|
|
44080
|
+
if (opts["updatedAt.gt"] !== void 0)
|
|
44081
|
+
args.updated_at__gt = opts["updatedAt.gt"];
|
|
44082
|
+
if (opts["updatedAt.gte"] !== void 0)
|
|
44083
|
+
args.updated_at__gte = opts["updatedAt.gte"];
|
|
44084
|
+
if (opts.limit !== void 0)
|
|
44085
|
+
args.limit = Number(opts.limit);
|
|
44086
|
+
await ctx.execute({
|
|
44087
|
+
method: "GET",
|
|
44088
|
+
path: "/v1/organisations",
|
|
44089
|
+
args,
|
|
44090
|
+
queryParamKeys: [
|
|
44091
|
+
"limit",
|
|
44092
|
+
"cursor",
|
|
44093
|
+
"include_total",
|
|
44094
|
+
"order",
|
|
44095
|
+
"sort",
|
|
44096
|
+
"created_at",
|
|
44097
|
+
"created_at__not",
|
|
44098
|
+
"created_at__isNull",
|
|
44099
|
+
"created_at__isNotNull",
|
|
44100
|
+
"created_at__equals",
|
|
44101
|
+
"created_at__lt",
|
|
44102
|
+
"created_at__lte",
|
|
44103
|
+
"created_at__gt",
|
|
44104
|
+
"created_at__gte",
|
|
44105
|
+
"updated_at",
|
|
44106
|
+
"updated_at__not",
|
|
44107
|
+
"updated_at__isNull",
|
|
44108
|
+
"updated_at__isNotNull",
|
|
44109
|
+
"updated_at__equals",
|
|
44110
|
+
"updated_at__lt",
|
|
44111
|
+
"updated_at__lte",
|
|
44112
|
+
"updated_at__gt",
|
|
44113
|
+
"updated_at__gte"
|
|
44114
|
+
]
|
|
44115
|
+
});
|
|
44116
|
+
});
|
|
42301
44117
|
resource.command("get").description(`Retrieve details of an organisation by ID. Organisations group customers and can have their own billing configuration.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
42302
44118
|
Examples:
|
|
42303
44119
|
hyperline organisations get --id <id>`).action(async (opts) => {
|
|
@@ -42493,6 +44309,46 @@ Examples:
|
|
|
42493
44309
|
queryParamKeys: []
|
|
42494
44310
|
});
|
|
42495
44311
|
});
|
|
44312
|
+
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--aggregator-filter-id <value>", `ID of an existing metering filter of the product's aggregator to attach to this price configuration, instead of creating a new one with \`metering_filter\`.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44313
|
+
Examples:
|
|
44314
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
|
|
44315
|
+
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>
|
|
44316
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --output json`).action(async (opts) => {
|
|
44317
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44318
|
+
if (!ctx) {
|
|
44319
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44320
|
+
process.exit(1);
|
|
44321
|
+
}
|
|
44322
|
+
const args = {};
|
|
44323
|
+
if (opts.currency !== void 0)
|
|
44324
|
+
args.currency = opts.currency;
|
|
44325
|
+
if (opts.priceBookId !== void 0)
|
|
44326
|
+
args.price_book_id = opts.priceBookId;
|
|
44327
|
+
if (opts.type !== void 0)
|
|
44328
|
+
args.type = opts.type;
|
|
44329
|
+
if (opts.productId !== void 0)
|
|
44330
|
+
args.product_id = opts.productId;
|
|
44331
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
44332
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
44333
|
+
if (opts.allowOnPortal !== void 0)
|
|
44334
|
+
args.allow_on_portal = true;
|
|
44335
|
+
if (opts.countries !== void 0)
|
|
44336
|
+
args.countries = JSON.parse(opts.countries);
|
|
44337
|
+
if (opts.billingInterval !== void 0)
|
|
44338
|
+
args.billing_interval = JSON.parse(opts.billingInterval);
|
|
44339
|
+
if (opts.commitmentInterval !== void 0)
|
|
44340
|
+
args.commitment_interval = JSON.parse(opts.commitmentInterval);
|
|
44341
|
+
if (opts.prices !== void 0)
|
|
44342
|
+
args.prices = JSON.parse(opts.prices);
|
|
44343
|
+
if (opts.meteringFilter !== void 0)
|
|
44344
|
+
args.metering_filter = JSON.parse(opts.meteringFilter);
|
|
44345
|
+
await ctx.execute({
|
|
44346
|
+
method: "POST",
|
|
44347
|
+
path: "/v1/price-configurations",
|
|
44348
|
+
args,
|
|
44349
|
+
queryParamKeys: []
|
|
44350
|
+
});
|
|
44351
|
+
});
|
|
42496
44352
|
resource.command("update-prices").description(`Update the prices of an existing price configuration by ID. Allows changing tier thresholds, unit prices, and flat fees.`).requiredOption("--id <value>", `id parameter`).option("--stdin", `Read JSON array input from stdin`).addHelpText("after", `
|
|
42497
44353
|
Examples:
|
|
42498
44354
|
hyperline price-configurations update-prices --id <id>
|
|
@@ -42691,7 +44547,7 @@ How the periodic credit allowance is granted for partial billing periods.
|
|
|
42691
44547
|
|
|
42692
44548
|
- \`prorated\` (default): the granted credits are prorated to the elapsed period.
|
|
42693
44549
|
- \`full_allowance\`: the full allowance is always granted (the invoice remains prorated).
|
|
42694
|
-
`).option("--display-mode <value>", `How bundle items are displayed on invoices.`).option("--exclusive-items-enabled", `When true, only one item in the bundle can be active at a time.`).option("--bundle-items <json>", `Products included in this bundle. Percentages must sum to 100.`).addHelpText("after", `
|
|
44550
|
+
`).option("--credits-balance-auto-creation-enabled <value>", `Default for the \`credits_balance_auto_creation_enabled\` setting of subscription products using this credit product: whether the customer credit balance is created as soon as the product is added to a subscription. \`true\` when unset. A subscription product can override it.`).option("--display-mode <value>", `How bundle items are displayed on invoices.`).option("--exclusive-items-enabled", `When true, only one item in the bundle can be active at a time.`).option("--bundle-items <json>", `Products included in this bundle. Percentages must sum to 100.`).addHelpText("after", `
|
|
42695
44551
|
Examples:
|
|
42696
44552
|
hyperline products create --name <name> --type <type> --price-configurations <price_configurations>
|
|
42697
44553
|
hyperline products create --name <name> --type <type> --price-configurations <price_configurations> --description <description> --description-display-interval-dates
|
|
@@ -42716,6 +44572,8 @@ Examples:
|
|
|
42716
44572
|
args.unit_name = opts.unitName;
|
|
42717
44573
|
if (opts.creditsGrantMode !== void 0)
|
|
42718
44574
|
args.credits_grant_mode = opts.creditsGrantMode;
|
|
44575
|
+
if (opts.creditsBalanceAutoCreationEnabled !== void 0)
|
|
44576
|
+
args.credits_balance_auto_creation_enabled = opts.creditsBalanceAutoCreationEnabled;
|
|
42719
44577
|
if (opts.displayMode !== void 0)
|
|
42720
44578
|
args.display_mode = opts.displayMode;
|
|
42721
44579
|
if (opts.lowCreditsThreshold !== void 0)
|
|
@@ -42885,12 +44743,12 @@ Quote status.
|
|
|
42885
44743
|
- \`draft\`: The quote is a draft.
|
|
42886
44744
|
- \`approved\`: The quote is approved and ready to be sent to the customer.
|
|
42887
44745
|
- \`pending_signature\`: The quote is awaiting the customer's signature.
|
|
42888
|
-
`).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.
|
|
44746
|
+
`).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.
|
|
42889
44747
|
|
|
42890
44748
|
- \`all\`: Display all pricing tiers.
|
|
42891
44749
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
42892
44750
|
- \`none\`: Hide all pricing tiers.
|
|
42893
|
-
`).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("--
|
|
44751
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
42894
44752
|
Examples:
|
|
42895
44753
|
hyperline quotes create --customer-id <customer_id>
|
|
42896
44754
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -42929,12 +44787,14 @@ Examples:
|
|
|
42929
44787
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
42930
44788
|
if (opts.displayPhaseValue !== void 0)
|
|
42931
44789
|
args.display_phase_value = opts.displayPhaseValue;
|
|
44790
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
44791
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
42932
44792
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
42933
44793
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
42934
44794
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
42935
44795
|
args.display_documents_in_preview = opts.displayDocumentsInPreview;
|
|
42936
|
-
if (opts.
|
|
42937
|
-
args.
|
|
44796
|
+
if (opts.subscriptionUpdateDisplay !== void 0)
|
|
44797
|
+
args.subscription_update_display = opts.subscriptionUpdateDisplay;
|
|
42938
44798
|
if (opts.generateDraftInvoices !== void 0)
|
|
42939
44799
|
args.generate_draft_invoices = opts.generateDraftInvoices;
|
|
42940
44800
|
if (opts.templateId !== void 0)
|
|
@@ -42943,6 +44803,8 @@ Examples:
|
|
|
42943
44803
|
args.expires_at = opts.expiresAt;
|
|
42944
44804
|
if (opts.amount !== void 0)
|
|
42945
44805
|
args.amount = Number(opts.amount);
|
|
44806
|
+
if (opts.contractValue !== void 0)
|
|
44807
|
+
args.contract_value = Number(opts.contractValue);
|
|
42946
44808
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
42947
44809
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
42948
44810
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -43177,12 +45039,12 @@ Examples:
|
|
|
43177
45039
|
queryParamKeys: []
|
|
43178
45040
|
});
|
|
43179
45041
|
});
|
|
43180
|
-
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.
|
|
45042
|
+
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.
|
|
43181
45043
|
|
|
43182
45044
|
- \`all\`: Display all pricing tiers.
|
|
43183
45045
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
43184
45046
|
- \`none\`: Hide all pricing tiers.
|
|
43185
|
-
`).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("--
|
|
45047
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
43186
45048
|
Examples:
|
|
43187
45049
|
hyperline quotes update --id <id>
|
|
43188
45050
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -43217,12 +45079,14 @@ Examples:
|
|
|
43217
45079
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
43218
45080
|
if (opts.displayPhaseValue !== void 0)
|
|
43219
45081
|
args.display_phase_value = opts.displayPhaseValue;
|
|
45082
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
45083
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
43220
45084
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
43221
45085
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
43222
45086
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
43223
45087
|
args.display_documents_in_preview = opts.displayDocumentsInPreview;
|
|
43224
|
-
if (opts.
|
|
43225
|
-
args.
|
|
45088
|
+
if (opts.subscriptionUpdateDisplay !== void 0)
|
|
45089
|
+
args.subscription_update_display = opts.subscriptionUpdateDisplay;
|
|
43226
45090
|
if (opts.generateDraftInvoices !== void 0)
|
|
43227
45091
|
args.generate_draft_invoices = opts.generateDraftInvoices;
|
|
43228
45092
|
if (opts.crmOpportunityId !== void 0)
|
|
@@ -43231,6 +45095,8 @@ Examples:
|
|
|
43231
45095
|
args.expires_at = opts.expiresAt;
|
|
43232
45096
|
if (opts.amount !== void 0)
|
|
43233
45097
|
args.amount = Number(opts.amount);
|
|
45098
|
+
if (opts.contractValue !== void 0)
|
|
45099
|
+
args.contract_value = Number(opts.contractValue);
|
|
43234
45100
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
43235
45101
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
43236
45102
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -43246,6 +45112,25 @@ Examples:
|
|
|
43246
45112
|
queryParamKeys: []
|
|
43247
45113
|
});
|
|
43248
45114
|
});
|
|
45115
|
+
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", `
|
|
45116
|
+
Examples:
|
|
45117
|
+
hyperline quotes duplicate --id <id>
|
|
45118
|
+
hyperline quotes duplicate --id <id> --output json`).action(async (opts) => {
|
|
45119
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45120
|
+
if (!ctx) {
|
|
45121
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45122
|
+
process.exit(1);
|
|
45123
|
+
}
|
|
45124
|
+
const args = {};
|
|
45125
|
+
if (opts.id !== void 0)
|
|
45126
|
+
args.id = opts.id;
|
|
45127
|
+
await ctx.execute({
|
|
45128
|
+
method: "POST",
|
|
45129
|
+
path: "/v1/quotes/{id}/duplicate",
|
|
45130
|
+
args,
|
|
45131
|
+
queryParamKeys: []
|
|
45132
|
+
});
|
|
45133
|
+
});
|
|
43249
45134
|
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", `
|
|
43250
45135
|
Examples:
|
|
43251
45136
|
hyperline quotes download --id <id>
|
|
@@ -43267,10 +45152,11 @@ Examples:
|
|
|
43267
45152
|
queryParamKeys: ["locale"]
|
|
43268
45153
|
});
|
|
43269
45154
|
});
|
|
43270
|
-
resource.command("
|
|
45155
|
+
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", `
|
|
43271
45156
|
Examples:
|
|
43272
|
-
hyperline quotes
|
|
43273
|
-
hyperline quotes
|
|
45157
|
+
hyperline quotes finalize --id <id>
|
|
45158
|
+
hyperline quotes finalize --id <id> --requester-comment <requester_comment>
|
|
45159
|
+
hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
|
|
43274
45160
|
const ctx = resource.parent?.opts()._ctx;
|
|
43275
45161
|
if (!ctx) {
|
|
43276
45162
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -43279,17 +45165,19 @@ Examples:
|
|
|
43279
45165
|
const args = {};
|
|
43280
45166
|
if (opts.id !== void 0)
|
|
43281
45167
|
args.id = opts.id;
|
|
45168
|
+
if (opts.requesterComment !== void 0)
|
|
45169
|
+
args.requester_comment = opts.requesterComment;
|
|
43282
45170
|
await ctx.execute({
|
|
43283
45171
|
method: "POST",
|
|
43284
|
-
path: "/v1/quotes/{id}/
|
|
45172
|
+
path: "/v1/quotes/{id}/finalize",
|
|
43285
45173
|
args,
|
|
43286
45174
|
queryParamKeys: []
|
|
43287
45175
|
});
|
|
43288
45176
|
});
|
|
43289
|
-
resource.command("
|
|
45177
|
+
resource.command("redraft").description(`Switch a quote back to draft so its subscription or invoice configuration can be updated. Works on quotes pending approval, with changes requested, approved, or awaiting signature. Cancels pending approval requests and the signature request; the quote must then be finalized again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
43290
45178
|
Examples:
|
|
43291
|
-
hyperline quotes
|
|
43292
|
-
hyperline quotes
|
|
45179
|
+
hyperline quotes redraft --id <id>
|
|
45180
|
+
hyperline quotes redraft --id <id> --output json`).action(async (opts) => {
|
|
43293
45181
|
const ctx = resource.parent?.opts()._ctx;
|
|
43294
45182
|
if (!ctx) {
|
|
43295
45183
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -43300,16 +45188,63 @@ Examples:
|
|
|
43300
45188
|
args.id = opts.id;
|
|
43301
45189
|
await ctx.execute({
|
|
43302
45190
|
method: "POST",
|
|
43303
|
-
path: "/v1/quotes/{id}/
|
|
45191
|
+
path: "/v1/quotes/{id}/redraft",
|
|
45192
|
+
args,
|
|
45193
|
+
queryParamKeys: []
|
|
45194
|
+
});
|
|
45195
|
+
});
|
|
45196
|
+
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", `
|
|
45197
|
+
Examples:
|
|
45198
|
+
hyperline quotes send --id <id>
|
|
45199
|
+
hyperline quotes send --id <id> --email <email> --message <message>
|
|
45200
|
+
hyperline quotes send --id <id> --output json`).action(async (opts) => {
|
|
45201
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45202
|
+
if (!ctx) {
|
|
45203
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45204
|
+
process.exit(1);
|
|
45205
|
+
}
|
|
45206
|
+
const args = {};
|
|
45207
|
+
if (opts.id !== void 0)
|
|
45208
|
+
args.id = opts.id;
|
|
45209
|
+
if (opts.email !== void 0)
|
|
45210
|
+
args.email = opts.email;
|
|
45211
|
+
if (opts.message !== void 0)
|
|
45212
|
+
args.message = opts.message;
|
|
45213
|
+
await ctx.execute({
|
|
45214
|
+
method: "POST",
|
|
45215
|
+
path: "/v1/quotes/{id}/send",
|
|
45216
|
+
args,
|
|
45217
|
+
queryParamKeys: []
|
|
45218
|
+
});
|
|
45219
|
+
});
|
|
45220
|
+
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", `
|
|
45221
|
+
Examples:
|
|
45222
|
+
hyperline quotes list-quote-signers --id <id>`).action(async (opts) => {
|
|
45223
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45224
|
+
if (!ctx) {
|
|
45225
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45226
|
+
process.exit(1);
|
|
45227
|
+
}
|
|
45228
|
+
const args = {};
|
|
45229
|
+
if (opts.id !== void 0)
|
|
45230
|
+
args.id = opts.id;
|
|
45231
|
+
await ctx.execute({
|
|
45232
|
+
method: "GET",
|
|
45233
|
+
path: "/v1/quotes/{id}/signers",
|
|
43304
45234
|
args,
|
|
43305
45235
|
queryParamKeys: []
|
|
43306
45236
|
});
|
|
43307
45237
|
});
|
|
43308
|
-
resource.command("
|
|
45238
|
+
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>", `
|
|
45239
|
+
Signature workflow of the quote, replaced as a whole.
|
|
45240
|
+
|
|
45241
|
+
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.
|
|
45242
|
+
|
|
45243
|
+
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.
|
|
45244
|
+
`).addHelpText("after", `
|
|
43309
45245
|
Examples:
|
|
43310
|
-
hyperline quotes
|
|
43311
|
-
hyperline quotes
|
|
43312
|
-
hyperline quotes send --id <id> --email <email> --output json`).action(async (opts) => {
|
|
45246
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers>
|
|
45247
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers> --output json`).action(async (opts) => {
|
|
43313
45248
|
const ctx = resource.parent?.opts()._ctx;
|
|
43314
45249
|
if (!ctx) {
|
|
43315
45250
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -43318,13 +45253,11 @@ Examples:
|
|
|
43318
45253
|
const args = {};
|
|
43319
45254
|
if (opts.id !== void 0)
|
|
43320
45255
|
args.id = opts.id;
|
|
43321
|
-
if (opts.
|
|
43322
|
-
args.
|
|
43323
|
-
if (opts.message !== void 0)
|
|
43324
|
-
args.message = opts.message;
|
|
45256
|
+
if (opts.signers !== void 0)
|
|
45257
|
+
args.signers = JSON.parse(opts.signers);
|
|
43325
45258
|
await ctx.execute({
|
|
43326
|
-
method: "
|
|
43327
|
-
path: "/v1/quotes/{id}/
|
|
45259
|
+
method: "PUT",
|
|
45260
|
+
path: "/v1/quotes/{id}/signers",
|
|
43328
45261
|
args,
|
|
43329
45262
|
queryParamKeys: []
|
|
43330
45263
|
});
|
|
@@ -43412,6 +45345,48 @@ Examples:
|
|
|
43412
45345
|
});
|
|
43413
45346
|
}
|
|
43414
45347
|
|
|
45348
|
+
// build/commands/generated/quotes-approvals.js
|
|
45349
|
+
function registerQuotes_ApprovalsCommands(parent) {
|
|
45350
|
+
const resource = parent.command("quotes-approvals").description("Manage quotes > approvals");
|
|
45351
|
+
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", `
|
|
45352
|
+
Examples:
|
|
45353
|
+
hyperline quotes-approvals approve-quote --id <id>
|
|
45354
|
+
hyperline quotes-approvals approve-quote --id <id> --output json`).action(async (opts) => {
|
|
45355
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45356
|
+
if (!ctx) {
|
|
45357
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45358
|
+
process.exit(1);
|
|
45359
|
+
}
|
|
45360
|
+
const args = {};
|
|
45361
|
+
if (opts.id !== void 0)
|
|
45362
|
+
args.id = opts.id;
|
|
45363
|
+
await ctx.execute({
|
|
45364
|
+
method: "POST",
|
|
45365
|
+
path: "/v1/quotes/{id}/approve",
|
|
45366
|
+
args,
|
|
45367
|
+
queryParamKeys: []
|
|
45368
|
+
});
|
|
45369
|
+
});
|
|
45370
|
+
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", `
|
|
45371
|
+
Examples:
|
|
45372
|
+
hyperline quotes-approvals get-quote-approvals --id <id>`).action(async (opts) => {
|
|
45373
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45374
|
+
if (!ctx) {
|
|
45375
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45376
|
+
process.exit(1);
|
|
45377
|
+
}
|
|
45378
|
+
const args = {};
|
|
45379
|
+
if (opts.id !== void 0)
|
|
45380
|
+
args.id = opts.id;
|
|
45381
|
+
await ctx.execute({
|
|
45382
|
+
method: "GET",
|
|
45383
|
+
path: "/v1/quotes/{id}/approvals",
|
|
45384
|
+
args,
|
|
45385
|
+
queryParamKeys: []
|
|
45386
|
+
});
|
|
45387
|
+
});
|
|
45388
|
+
}
|
|
45389
|
+
|
|
43415
45390
|
// build/commands/generated/quotes-templates.js
|
|
43416
45391
|
function registerQuotes_TemplatesCommands(parent) {
|
|
43417
45392
|
const resource = parent.command("quotes-templates").description("Manage quotes > templates");
|
|
@@ -43611,7 +45586,7 @@ Examples:
|
|
|
43611
45586
|
queryParamKeys: []
|
|
43612
45587
|
});
|
|
43613
45588
|
});
|
|
43614
|
-
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", `
|
|
45589
|
+
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", `
|
|
43615
45590
|
Examples:
|
|
43616
45591
|
hyperline subscriptions cancel --id <id>
|
|
43617
45592
|
hyperline subscriptions cancel --id <id> --cancel-at <cancel_at> --reason <reason>
|
|
@@ -43639,9 +45614,10 @@ Examples:
|
|
|
43639
45614
|
queryParamKeys: []
|
|
43640
45615
|
});
|
|
43641
45616
|
});
|
|
43642
|
-
resource.command("reinstate").description(`Reinstate a subscription
|
|
45617
|
+
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", `
|
|
43643
45618
|
Examples:
|
|
43644
45619
|
hyperline subscriptions reinstate --id <id>
|
|
45620
|
+
hyperline subscriptions reinstate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
43645
45621
|
hyperline subscriptions reinstate --id <id> --output json`).action(async (opts) => {
|
|
43646
45622
|
const ctx = resource.parent?.opts()._ctx;
|
|
43647
45623
|
if (!ctx) {
|
|
@@ -43651,6 +45627,12 @@ Examples:
|
|
|
43651
45627
|
const args = {};
|
|
43652
45628
|
if (opts.id !== void 0)
|
|
43653
45629
|
args.id = opts.id;
|
|
45630
|
+
if (opts.reactivateAt !== void 0)
|
|
45631
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45632
|
+
if (opts.invoicingMode !== void 0)
|
|
45633
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45634
|
+
if (opts.chargeLineItems !== void 0)
|
|
45635
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
43654
45636
|
await ctx.execute({
|
|
43655
45637
|
method: "POST",
|
|
43656
45638
|
path: "/v1/subscriptions/{id}/reinstate",
|
|
@@ -43658,7 +45640,7 @@ Examples:
|
|
|
43658
45640
|
queryParamKeys: []
|
|
43659
45641
|
});
|
|
43660
45642
|
});
|
|
43661
|
-
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.
|
|
45643
|
+
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", `
|
|
43662
45644
|
Examples:
|
|
43663
45645
|
hyperline subscriptions pause --id <id>
|
|
43664
45646
|
hyperline subscriptions pause --id <id> --reactivate-at <reactivate_at>
|
|
@@ -43699,9 +45681,10 @@ Examples:
|
|
|
43699
45681
|
queryParamKeys: []
|
|
43700
45682
|
});
|
|
43701
45683
|
});
|
|
43702
|
-
resource.command("reactivate").description(`Resume a paused subscription,
|
|
45684
|
+
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", `
|
|
43703
45685
|
Examples:
|
|
43704
45686
|
hyperline subscriptions reactivate --id <id>
|
|
45687
|
+
hyperline subscriptions reactivate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
43705
45688
|
hyperline subscriptions reactivate --id <id> --output json`).action(async (opts) => {
|
|
43706
45689
|
const ctx = resource.parent?.opts()._ctx;
|
|
43707
45690
|
if (!ctx) {
|
|
@@ -43711,6 +45694,12 @@ Examples:
|
|
|
43711
45694
|
const args = {};
|
|
43712
45695
|
if (opts.id !== void 0)
|
|
43713
45696
|
args.id = opts.id;
|
|
45697
|
+
if (opts.reactivateAt !== void 0)
|
|
45698
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45699
|
+
if (opts.invoicingMode !== void 0)
|
|
45700
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45701
|
+
if (opts.chargeLineItems !== void 0)
|
|
45702
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
43714
45703
|
await ctx.execute({
|
|
43715
45704
|
method: "POST",
|
|
43716
45705
|
path: "/v1/subscriptions/{id}/reactivate",
|
|
@@ -43782,7 +45771,7 @@ Strategy used to activate the subscription.
|
|
|
43782
45771
|
- \`manually\`: The subscription requires activation through a manual action.
|
|
43783
45772
|
- \`checkout\`: The subscription will be activated once the checkout is completed, but only if the start date is in the past. Otherwise, activation will occur later on the specified start date.
|
|
43784
45773
|
- \`quote\`: The subscription will be activated depending on the configuration and the signature of the related quote.
|
|
43785
|
-
`).option("--products <json>", `Products that make up the subscription.`).option("--coupons <json>", `coupons`).option("--name <value>", `Subscription custom name.`).option("--purchase-order <value>", `Reference to the purchase order.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the subscription. If not defined, fallback to customer's invoicing entity.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--minimum-invoice-fee <number>", `Minimum fee applied to each invoice outside of one time payments.`).option("--contract-terms <json>", `Contract terms linked to the subscription.`).option("--starts-at <value>", `Applies only if the activation strategy is \`start_date\`. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--initial-billing-at <value>", `Date when the subscription will start being billed. If not specified, it will correspond to the \`starts_at\` date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--display-shipping-details <value>", `Indicates if the shipping details should be displayed on the subscription's invoices.`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--cancellation-strategy <value>", `
|
|
45774
|
+
`).option("--products <json>", `Products that make up the subscription.`).option("--coupons <json>", `coupons`).option("--name <value>", `Subscription custom name.`).option("--purchase-order <value>", `Reference to the purchase order.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the subscription. If not defined, fallback to customer's invoicing entity.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--minimum-invoice-fee <number>", `Minimum fee applied to each invoice outside of one time payments.`).option("--contract-terms <json>", `Contract terms linked to the subscription.`).option("--starts-at <value>", `Applies only if the activation strategy is \`start_date\`. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--initial-billing-at <value>", `Date when the subscription will start being billed. If not specified, it will correspond to the \`starts_at\` date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--shipping-address-id <value>", `Active shipping address ID belonging to the subscription customer. Omit to use the customer shipping destination: billing address or default shipping address.`).option("--display-shipping-details <value>", `Indicates if the shipping details should be displayed on the subscription's invoices.`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--cancellation-strategy <value>", `
|
|
43786
45775
|
Strategy used to cancel the subscription. If not specified \`do_nothing\` is used.
|
|
43787
45776
|
|
|
43788
45777
|
- \`charge_prorata\`: Will charge the customer the unpaid amount for the prorated period up to the end of the current period.
|
|
@@ -43834,6 +45823,8 @@ Examples:
|
|
|
43834
45823
|
args.starts_at = opts.startsAt;
|
|
43835
45824
|
if (opts.initialBillingAt !== void 0)
|
|
43836
45825
|
args.initial_billing_at = opts.initialBillingAt;
|
|
45826
|
+
if (opts.shippingAddressId !== void 0)
|
|
45827
|
+
args.shipping_address_id = opts.shippingAddressId;
|
|
43837
45828
|
if (opts.displayShippingDetails !== void 0)
|
|
43838
45829
|
args.display_shipping_details = opts.displayShippingDetails;
|
|
43839
45830
|
if (opts.cancelAt !== void 0)
|
|
@@ -44144,7 +46135,7 @@ Defines when invoices are generated relative to the billing period.
|
|
|
44144
46135
|
|
|
44145
46136
|
- \`period_start\`: Invoices are generated at the start of the billing period.
|
|
44146
46137
|
- \`period_end\`: Invoices are generated at the end of the billing period.
|
|
44147
|
-
`).option("--estimated-arr <number>", `Estimated Annual Recurring Revenue generated by the subscription.`).option("--contract-value <number>", `Contract value of the subscription. This value is overridable by the user.`).option("--starts-at <value>", `Applies only if the activation strategy is \`start_date\`. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--initial-billing-at <value>", `Date when the subscription will start being billed. If not specified, it will correspond to the \`starts_at\` date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--display-shipping-details <value>", `Indicates if the shipping details should be displayed on the subscription's invoices.`).option("--phases <json>", `Array of subscription phases. Existing pending phases will be replaced by the ones in the array.`).option("--contract-terms <json>", `Contract terms to update.`).addHelpText("after", `
|
|
46138
|
+
`).option("--estimated-arr <number>", `Estimated Annual Recurring Revenue generated by the subscription.`).option("--contract-value <number>", `Contract value of the subscription. This value is overridable by the user.`).option("--starts-at <value>", `Applies only if the activation strategy is \`start_date\`. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--initial-billing-at <value>", `Date when the subscription will start being billed. If not specified, it will correspond to the \`starts_at\` date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--shipping-address-id <value>", `Active shipping address ID belonging to the subscription customer. Null uses the customer shipping destination: billing address or default shipping address.`).option("--display-shipping-details <value>", `Indicates if the shipping details should be displayed on the subscription's invoices.`).option("--phases <json>", `Array of subscription phases. Existing pending phases will be replaced by the ones in the array.`).option("--contract-terms <json>", `Contract terms to update.`).addHelpText("after", `
|
|
44148
46139
|
Examples:
|
|
44149
46140
|
hyperline subscriptions update --id <id>
|
|
44150
46141
|
hyperline subscriptions update --id <id> --name <name> --purchase-order <purchase_order>
|
|
@@ -44185,6 +46176,8 @@ Examples:
|
|
|
44185
46176
|
args.initial_billing_at = opts.initialBillingAt;
|
|
44186
46177
|
if (opts.cancelAt !== void 0)
|
|
44187
46178
|
args.cancel_at = opts.cancelAt;
|
|
46179
|
+
if (opts.shippingAddressId !== void 0)
|
|
46180
|
+
args.shipping_address_id = opts.shippingAddressId;
|
|
44188
46181
|
if (opts.displayShippingDetails !== void 0)
|
|
44189
46182
|
args.display_shipping_details = opts.displayShippingDetails;
|
|
44190
46183
|
if (opts.minimumInvoiceFee !== void 0)
|
|
@@ -45291,6 +47284,10 @@ function registerAllCommands(program2) {
|
|
|
45291
47284
|
registerAccounting_Revenue_RecognitionCommands(program2);
|
|
45292
47285
|
registerAccounting_RulesCommands(program2);
|
|
45293
47286
|
registerCustom_PropertiesCommands(program2);
|
|
47287
|
+
registerAggregatorsCommands(program2);
|
|
47288
|
+
registerAggregators_UsageCommands(program2);
|
|
47289
|
+
registerAi_BillingCommands(program2);
|
|
47290
|
+
registerAi_CostsCommands(program2);
|
|
45294
47291
|
registerAnalyticsCommands(program2);
|
|
45295
47292
|
registerBank_AccountsCommands(program2);
|
|
45296
47293
|
registerCompaniesCommands(program2);
|
|
@@ -45298,7 +47295,10 @@ function registerAllCommands(program2) {
|
|
|
45298
47295
|
registerCoupons_Promotion_CodesCommands(program2);
|
|
45299
47296
|
registerCustomers_CreditsCommands(program2);
|
|
45300
47297
|
registerCustomers_Payment_MethodsCommands(program2);
|
|
47298
|
+
registerCustomers_AddressCommands(program2);
|
|
47299
|
+
registerCustomers_ShippingCommands(program2);
|
|
45301
47300
|
registerCustomersCommands(program2);
|
|
47301
|
+
registerCustomers_UsageCommands(program2);
|
|
45302
47302
|
registerOrganisationsCommands(program2);
|
|
45303
47303
|
registerCustomers_SegmentsCommands(program2);
|
|
45304
47304
|
registerExportsCommands(program2);
|
|
@@ -45306,11 +47306,13 @@ function registerAllCommands(program2) {
|
|
|
45306
47306
|
registerInvoicesCommands(program2);
|
|
45307
47307
|
registerInvoices_TransactionsCommands(program2);
|
|
45308
47308
|
registerInvoicing_EntitiesCommands(program2);
|
|
47309
|
+
registerAi_MonitoringCommands(program2);
|
|
45309
47310
|
registerPaymentsCommands(program2);
|
|
45310
47311
|
registerProductsCommands(program2);
|
|
45311
47312
|
registerPrice_ConfigurationsCommands(program2);
|
|
45312
47313
|
registerQuotesCommands(program2);
|
|
45313
47314
|
registerQuotes_TemplatesCommands(program2);
|
|
47315
|
+
registerQuotes_ApprovalsCommands(program2);
|
|
45314
47316
|
registerSubscriptions_TemplatesCommands(program2);
|
|
45315
47317
|
registerSubscriptionsCommands(program2);
|
|
45316
47318
|
registerSubscriptions_TransitionsCommands(program2);
|
|
@@ -61258,12 +63260,41 @@ var DateTimeSchema = external_exports.iso.datetime({
|
|
|
61258
63260
|
example: "2024-12-20T16:04:11Z"
|
|
61259
63261
|
});
|
|
61260
63262
|
|
|
63263
|
+
// ../hyperline-lib/build/http/dto/decimal.js
|
|
63264
|
+
var DecimalStringSchema = external_exports.string().regex(/^-?\d+(\.\d+)?(e[+-]?\d+)?$/i).openapi({
|
|
63265
|
+
description: "Exact decimal string. Interpret the unit using the field description and denomination.",
|
|
63266
|
+
example: "0.0021"
|
|
63267
|
+
});
|
|
63268
|
+
var NonNegativeDecimalStringSchema = external_exports.string().regex(/^\d+(\.\d+)?$/).max(40).openapi({
|
|
63269
|
+
description: "Non-negative exact decimal string, at most 40 characters.",
|
|
63270
|
+
example: "0.0021"
|
|
63271
|
+
});
|
|
63272
|
+
|
|
61261
63273
|
// ../hyperline-lib/build/http/dto/domain.js
|
|
61262
63274
|
var DomainSchema = external_exports.string().trim().toLowerCase().regex(/^(?!:\/\/)(?=.{1,253}$)(?!-)([a-z0-9-]{1,63}\.)+[a-z]{2,63}$/, "Invalid domain").openapi({
|
|
61263
63275
|
description: "Domain name.",
|
|
61264
63276
|
example: "acme.com"
|
|
61265
63277
|
});
|
|
61266
63278
|
|
|
63279
|
+
// ../hyperline-lib/build/http/dto/emailStatus.js
|
|
63280
|
+
var EmailStatusSchema = external_exports.enum([
|
|
63281
|
+
"sent",
|
|
63282
|
+
"delivered",
|
|
63283
|
+
"opened",
|
|
63284
|
+
"clicked",
|
|
63285
|
+
"spammed",
|
|
63286
|
+
"bounced",
|
|
63287
|
+
"queued",
|
|
63288
|
+
"drafted",
|
|
63289
|
+
"attempted",
|
|
63290
|
+
"failed",
|
|
63291
|
+
"undeliverable",
|
|
63292
|
+
"converted",
|
|
63293
|
+
"suppressed",
|
|
63294
|
+
"unsubscribed",
|
|
63295
|
+
"dropped"
|
|
63296
|
+
]);
|
|
63297
|
+
|
|
61267
63298
|
// ../hyperline-lib/build/http/dto/error.js
|
|
61268
63299
|
var ErrorSchema = external_exports.object({
|
|
61269
63300
|
message: external_exports.string()
|
|
@@ -61292,23 +63323,26 @@ var languages = [
|
|
|
61292
63323
|
|
|
61293
63324
|
// ../hyperline-i18n/build/locales/de.js
|
|
61294
63325
|
var de = {
|
|
61295
|
-
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
61296
|
-
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
61297
|
-
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
61298
63326
|
"accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
|
|
61299
|
-
"accounting.
|
|
63327
|
+
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
63328
|
+
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
61300
63329
|
"accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
61301
63330
|
"accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
61302
63331
|
"accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
61303
|
-
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
61304
63332
|
"accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
61305
63333
|
"accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
|
|
63334
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
|
|
63335
|
+
"accounting.transactionChargedBack.entryDescription": "R\xFCckbuchung f\xFCr Rechnung {{invoiceId}}",
|
|
63336
|
+
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
63337
|
+
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
61306
63338
|
"creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
|
|
61307
63339
|
"credits.bundleOf": "{{productName}} - Paket mit {{creditCount}} Guthaben",
|
|
61308
63340
|
"credits.unitsOf": "{{productName}} - {{creditCount}} Guthaben",
|
|
61309
63341
|
"einvoicing.paymentFromWallet": "Zahlung aus Guthaben",
|
|
61310
63342
|
"einvoicing.paymentProcessed": "Zahlung verarbeitet",
|
|
61311
63343
|
"einvoicing.paymentReceived": "Zahlung erhalten",
|
|
63344
|
+
"invoices.minimumFee.adjustmentName": "Anpassung der Mindestgeb\xFChr",
|
|
63345
|
+
"invoices.minimumFee.name": "Mindestgeb\xFChr",
|
|
61312
63346
|
"invoices.outstandingProduct.description": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{date}}",
|
|
61313
63347
|
"invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
|
|
61314
63348
|
"invoices.outstandingProduct.name": "Offener Saldo",
|
|
@@ -61316,9 +63350,9 @@ var de = {
|
|
|
61316
63350
|
"invoices.prorata.paymentForItemFullPeriod": "Zahlung f\xFCr",
|
|
61317
63351
|
"invoices.prorata.refundForItem": "Anteilig erstatteter Betrag f\xFCr",
|
|
61318
63352
|
"invoices.prorata.refundForItemFullPeriod": "Erstattung f\xFCr",
|
|
61319
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben",
|
|
61320
63353
|
"subscriptions.closingChargeName": "Abschlussgeb\xFChr f\xFCr das Abonnement",
|
|
61321
63354
|
"subscriptions.correction": "Vorperiodische Anpassung",
|
|
63355
|
+
"subscriptions.reinstatementRechargeName": "Wiederherstellungsgeb\xFChr f\xFCr den stornierten Zeitraum",
|
|
61322
63356
|
"subscriptions.updates.addCoupon": "Gutschein hinzuf\xFCgen {{couponName}}",
|
|
61323
63357
|
"subscriptions.updates.addProduct": "{{productName}} hinzuf\xFCgen",
|
|
61324
63358
|
"subscriptions.updates.removeCoupon": "Gutschein entfernen {{couponName}}",
|
|
@@ -61333,7 +63367,8 @@ var de = {
|
|
|
61333
63367
|
"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",
|
|
61334
63368
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Diese Position wurde f\xFCr den anteiligen Zeitraum in Rechnung gestellt",
|
|
61335
63369
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Betrag von {{amount}} f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
|
|
61336
|
-
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren"
|
|
63370
|
+
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren",
|
|
63371
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben"
|
|
61337
63372
|
};
|
|
61338
63373
|
|
|
61339
63374
|
// ../hyperline-i18n/build/locales/en.js
|
|
@@ -61341,6 +63376,8 @@ var en = {
|
|
|
61341
63376
|
"creditNotes.refundChargeName": "Refund for invoice",
|
|
61342
63377
|
"credits.bundleOf": "{{productName}} - Pack of {{creditCount}} credits",
|
|
61343
63378
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
63379
|
+
"invoices.minimumFee.adjustmentName": "Minimum fee adjustment",
|
|
63380
|
+
"invoices.minimumFee.name": "Minimum fee",
|
|
61344
63381
|
"invoices.outstandingProduct.description": "Unpaid amount from the invoice{{invoiceNumber}} emitted on {{date}}",
|
|
61345
63382
|
"invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
|
|
61346
63383
|
"invoices.outstandingProduct.name": "Outstanding balance",
|
|
@@ -61350,6 +63387,7 @@ var en = {
|
|
|
61350
63387
|
"invoices.prorata.refundForItemFullPeriod": "Refund for",
|
|
61351
63388
|
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 expired balance",
|
|
61352
63389
|
"subscriptions.closingChargeName": "Closing fee for subscription",
|
|
63390
|
+
"subscriptions.reinstatementRechargeName": "Reinstatement recharge of canceled period",
|
|
61353
63391
|
"subscriptions.correction": "Adjustment previous period",
|
|
61354
63392
|
"subscriptions.updates.addCoupon": "Add coupon {{couponName}}",
|
|
61355
63393
|
"subscriptions.updates.addProduct": "Add {{productName}}",
|
|
@@ -61369,6 +63407,7 @@ var en = {
|
|
|
61369
63407
|
"accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
|
|
61370
63408
|
"accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
|
|
61371
63409
|
"accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
|
|
63410
|
+
"accounting.transactionChargedBack.entryDescription": "Chargeback for Invoice {{invoiceId}}",
|
|
61372
63411
|
"accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
|
|
61373
63412
|
"accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
|
|
61374
63413
|
"accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
|
|
@@ -61384,23 +63423,26 @@ var en = {
|
|
|
61384
63423
|
|
|
61385
63424
|
// ../hyperline-i18n/build/locales/es.js
|
|
61386
63425
|
var es = {
|
|
61387
|
-
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
61388
|
-
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
61389
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
61390
63426
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
|
|
61391
|
-
"accounting.
|
|
63427
|
+
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
63428
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
61392
63429
|
"accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
61393
63430
|
"accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
61394
63431
|
"accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
61395
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
61396
63432
|
"accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
61397
63433
|
"accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63434
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63435
|
+
"accounting.transactionChargedBack.entryDescription": "Contracargo de la factura {{invoiceId}}",
|
|
63436
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
63437
|
+
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
61398
63438
|
"creditNotes.refundChargeName": "Reembolso por factura",
|
|
61399
63439
|
"credits.bundleOf": "{{productName}} - Paquete de {{creditCount}} cr\xE9ditos",
|
|
61400
63440
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
61401
63441
|
"einvoicing.paymentFromWallet": "Pago desde el monedero",
|
|
61402
63442
|
"einvoicing.paymentProcessed": "Pago procesado",
|
|
61403
63443
|
"einvoicing.paymentReceived": "Pago recibido",
|
|
63444
|
+
"invoices.minimumFee.adjustmentName": "Ajuste del cargo m\xEDnimo",
|
|
63445
|
+
"invoices.minimumFee.name": "Cargo m\xEDnimo",
|
|
61404
63446
|
"invoices.outstandingProduct.description": "Monto pendiente de la factura{{invoiceNumber}} emitida el {{date}}",
|
|
61405
63447
|
"invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
|
|
61406
63448
|
"invoices.outstandingProduct.name": "Saldo pendiente",
|
|
@@ -61408,9 +63450,9 @@ var es = {
|
|
|
61408
63450
|
"invoices.prorata.paymentForItemFullPeriod": "Pago por",
|
|
61409
63451
|
"invoices.prorata.refundForItem": "Reembolso prorrateado por",
|
|
61410
63452
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
61411
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado",
|
|
61412
63453
|
"subscriptions.closingChargeName": "Cargo por cierre de suscripci\xF3n",
|
|
61413
63454
|
"subscriptions.correction": "Ajuste del periodo anterior",
|
|
63455
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reinstalaci\xF3n del per\xEDodo cancelado",
|
|
61414
63456
|
"subscriptions.updates.addCoupon": "A\xF1adir cup\xF3n {{couponName}}",
|
|
61415
63457
|
"subscriptions.updates.addProduct": "A\xF1adir {{productName}}",
|
|
61416
63458
|
"subscriptions.updates.removeCoupon": "Eliminar cup\xF3n {{couponName}}",
|
|
@@ -61425,28 +63467,32 @@ var es = {
|
|
|
61425
63467
|
"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",
|
|
61426
63468
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta l\xEDnea ha sido facturada para el per\xEDodo prorrateado",
|
|
61427
63469
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importe de {{amount}} no facturado para el per\xEDodo prorrateado",
|
|
61428
|
-
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}"
|
|
63470
|
+
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}",
|
|
63471
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado"
|
|
61429
63472
|
};
|
|
61430
63473
|
|
|
61431
63474
|
// ../hyperline-i18n/build/locales/fr.js
|
|
61432
63475
|
var fr = {
|
|
63476
|
+
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
63477
|
+
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
63478
|
+
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
61433
63479
|
"accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
61434
63480
|
"accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
61435
63481
|
"accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
61436
|
-
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
61437
63482
|
"accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
61438
|
-
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
61439
|
-
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
61440
|
-
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
61441
|
-
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
61442
|
-
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
61443
63483
|
"accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
|
|
63484
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
63485
|
+
"accounting.transactionChargedBack.entryDescription": "R\xE9trofacturation de la facture {{invoiceId}}",
|
|
63486
|
+
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
63487
|
+
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
61444
63488
|
"creditNotes.refundChargeName": "Remboursement pour facture",
|
|
61445
63489
|
"credits.bundleOf": "{{productName}} - Pack de {{creditCount}} cr\xE9dits",
|
|
61446
63490
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9dits",
|
|
61447
63491
|
"einvoicing.paymentFromWallet": "Paiement depuis le portefeuille",
|
|
61448
63492
|
"einvoicing.paymentProcessed": "Paiement effectu\xE9",
|
|
61449
63493
|
"einvoicing.paymentReceived": "Paiement re\xE7u",
|
|
63494
|
+
"invoices.minimumFee.adjustmentName": "Ajustement des frais minimums",
|
|
63495
|
+
"invoices.minimumFee.name": "Frais minimums",
|
|
61450
63496
|
"invoices.outstandingProduct.description": "Montant impay\xE9 de la facture{{invoiceNumber}} \xE9mise le {{date}}",
|
|
61451
63497
|
"invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
|
|
61452
63498
|
"invoices.outstandingProduct.name": "Solde impay\xE9",
|
|
@@ -61454,9 +63500,9 @@ var fr = {
|
|
|
61454
63500
|
"invoices.prorata.paymentForItemFullPeriod": "Paiement pour",
|
|
61455
63501
|
"invoices.prorata.refundForItem": "Remboursement au prorata pour",
|
|
61456
63502
|
"invoices.prorata.refundForItemFullPeriod": "Remboursement pour",
|
|
61457
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9",
|
|
61458
63503
|
"subscriptions.closingChargeName": "Frais de cl\xF4ture pour abonnement",
|
|
61459
63504
|
"subscriptions.correction": "Ajustement p\xE9riode pr\xE9c\xE9dente",
|
|
63505
|
+
"subscriptions.reinstatementRechargeName": "Recharge de r\xE9tablissement de la p\xE9riode annul\xE9e",
|
|
61460
63506
|
"subscriptions.updates.addCoupon": "Ajout du coupon {{couponName}}",
|
|
61461
63507
|
"subscriptions.updates.addProduct": "Ajout {{productName}}",
|
|
61462
63508
|
"subscriptions.updates.removeCoupon": "Retrait du coupon {{couponName}}",
|
|
@@ -61471,28 +63517,32 @@ var fr = {
|
|
|
61471
63517
|
"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",
|
|
61472
63518
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Cette ligne a \xE9t\xE9 factur\xE9e pour la p\xE9riode proratis\xE9e",
|
|
61473
63519
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Montant de {{amount}} non factur\xE9 pour la p\xE9riode proratis\xE9e",
|
|
61474
|
-
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}"
|
|
63520
|
+
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}",
|
|
63521
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9"
|
|
61475
63522
|
};
|
|
61476
63523
|
|
|
61477
63524
|
// ../hyperline-i18n/build/locales/it.js
|
|
61478
63525
|
var it = {
|
|
61479
|
-
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
61480
|
-
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
61481
|
-
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
61482
63526
|
"accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
|
|
61483
|
-
"accounting.
|
|
63527
|
+
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
63528
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
61484
63529
|
"accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
61485
63530
|
"accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
61486
63531
|
"accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
61487
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
61488
63532
|
"accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
61489
63533
|
"accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
|
|
63534
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
|
|
63535
|
+
"accounting.transactionChargedBack.entryDescription": "Riaddebito per la fattura {{invoiceId}}",
|
|
63536
|
+
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
63537
|
+
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
61490
63538
|
"creditNotes.refundChargeName": "Rimborso per fattura",
|
|
61491
63539
|
"credits.bundleOf": "{{productName}} - Pacchetto di {{creditCount}} crediti",
|
|
61492
63540
|
"credits.unitsOf": "{{productName}} - {{creditCount}} crediti",
|
|
61493
63541
|
"einvoicing.paymentFromWallet": "Pagamento dal portafoglio",
|
|
61494
63542
|
"einvoicing.paymentProcessed": "Pagamento elaborato",
|
|
61495
63543
|
"einvoicing.paymentReceived": "Pagamento ricevuto",
|
|
63544
|
+
"invoices.minimumFee.adjustmentName": "Adeguamento all\u2019importo minimo",
|
|
63545
|
+
"invoices.minimumFee.name": "Importo minimo",
|
|
61496
63546
|
"invoices.outstandingProduct.description": "Importo insoluto della fattura{{invoiceNumber}} emessa il {{date}}",
|
|
61497
63547
|
"invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
|
|
61498
63548
|
"invoices.outstandingProduct.name": "Saldo insoluto",
|
|
@@ -61500,9 +63550,9 @@ var it = {
|
|
|
61500
63550
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento per",
|
|
61501
63551
|
"invoices.prorata.refundForItem": "Rimborso proporzionale per",
|
|
61502
63552
|
"invoices.prorata.refundForItemFullPeriod": "Rimborso per",
|
|
61503
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto",
|
|
61504
63553
|
"subscriptions.closingChargeName": "Costo di chiusura per abbonamento",
|
|
61505
63554
|
"subscriptions.correction": "Correzione periodo precedente",
|
|
63555
|
+
"subscriptions.reinstatementRechargeName": "Ricarica di reintegrazione del periodo annullato",
|
|
61506
63556
|
"subscriptions.updates.addCoupon": "Aggiungi coupon {{couponName}}",
|
|
61507
63557
|
"subscriptions.updates.addProduct": "Aggiungi {{productName}}",
|
|
61508
63558
|
"subscriptions.updates.removeCoupon": "Rimuovi coupon {{couponName}}",
|
|
@@ -61517,14 +63567,32 @@ var it = {
|
|
|
61517
63567
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Importo di {{amount}} (con un minimo impegnato di {{committedCount}}) non fatturato per il periodo proporzionato",
|
|
61518
63568
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Questa voce \xE8 stata fatturata per il periodo proporzionato",
|
|
61519
63569
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importo di {{amount}} non fatturato per il periodo proporzionato",
|
|
61520
|
-
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}"
|
|
63570
|
+
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}",
|
|
63571
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto"
|
|
61521
63572
|
};
|
|
61522
63573
|
|
|
61523
63574
|
// ../hyperline-i18n/build/locales/lt.js
|
|
61524
63575
|
var lt = {
|
|
63576
|
+
"accounting.creditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}} s\u0105skaitai fakt\u016Brai {{invoiceId}}",
|
|
63577
|
+
"accounting.invoicePosted.entryDescription": "I\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros {{invoiceId}} registravimo \u012Fra\u0161as",
|
|
63578
|
+
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63579
|
+
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63580
|
+
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63581
|
+
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63582
|
+
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63583
|
+
"accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
|
|
63584
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
|
|
63585
|
+
"accounting.transactionChargedBack.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} u\u017Egin\u010Dyto mok\u0117jimo gr\u0105\u017Einimas",
|
|
63586
|
+
"accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
|
|
63587
|
+
"accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
|
|
61525
63588
|
"creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
|
|
61526
63589
|
"credits.bundleOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173 paketas",
|
|
61527
63590
|
"credits.unitsOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173",
|
|
63591
|
+
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
|
|
63592
|
+
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63593
|
+
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63594
|
+
"invoices.minimumFee.adjustmentName": "Minimalaus mokes\u010Dio koregavimas",
|
|
63595
|
+
"invoices.minimumFee.name": "Minimalus mokestis",
|
|
61528
63596
|
"invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
|
|
61529
63597
|
"invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
|
|
61530
63598
|
"invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
|
|
@@ -61532,59 +63600,49 @@ var lt = {
|
|
|
61532
63600
|
"invoices.prorata.paymentForItemFullPeriod": "Mok\u0117jimas u\u017E",
|
|
61533
63601
|
"invoices.prorata.refundForItem": "Proporcingas gr\u0105\u017Einimas u\u017E",
|
|
61534
63602
|
"invoices.prorata.refundForItemFullPeriod": "Gr\u0105\u017Einimas u\u017E",
|
|
61535
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis",
|
|
61536
63603
|
"subscriptions.closingChargeName": "Prenumeratos u\u017Ebaigimo mokestis",
|
|
61537
63604
|
"subscriptions.correction": "Ankstesnio laikotarpio koregavimas",
|
|
63605
|
+
"subscriptions.reinstatementRechargeName": "Atnaujinimo \u012Fmokos u\u017E nutraukt\u0105 laikotarp\u012F",
|
|
61538
63606
|
"subscriptions.updates.addCoupon": "Prid\u0117ti kupon\u0105 {{couponName}}",
|
|
61539
63607
|
"subscriptions.updates.addProduct": "Prid\u0117ti {{productName}}",
|
|
61540
63608
|
"subscriptions.updates.removeCoupon": "Pa\u0161alinti kupon\u0105 {{couponName}}",
|
|
61541
63609
|
"subscriptions.updates.removeProduct": "Pa\u0161alinti {{productName}}",
|
|
61542
63610
|
"subscriptions.updates.unit": "vnt.",
|
|
61543
|
-
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
61544
63611
|
"subscriptions.updates.updateCount": "Atnaujinti {{productName}} kiek\u012F ({{previousCount}} \u2192 {{newCount}} {{unit}})",
|
|
61545
|
-
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
61546
|
-
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
61547
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
61548
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
61549
63612
|
"subscriptions.updates.updateCount.description.full.committed.invoiced": "Visam laikotarpiui pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
61550
63613
|
"subscriptions.updates.updateCount.description.full.committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
61551
63614
|
"subscriptions.updates.updateCount.description.full.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 visam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
61552
63615
|
"subscriptions.updates.updateCount.description.full.not_committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
61553
|
-
"
|
|
61554
|
-
"
|
|
61555
|
-
"
|
|
61556
|
-
"
|
|
61557
|
-
"
|
|
61558
|
-
"
|
|
61559
|
-
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
61560
|
-
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
61561
|
-
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
61562
|
-
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
61563
|
-
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
61564
|
-
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
61565
|
-
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
61566
|
-
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s"
|
|
63616
|
+
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63617
|
+
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63618
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63619
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63620
|
+
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
63621
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis"
|
|
61567
63622
|
};
|
|
61568
63623
|
|
|
61569
63624
|
// ../hyperline-i18n/build/locales/nl.js
|
|
61570
63625
|
var nl = {
|
|
61571
|
-
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
61572
|
-
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
61573
|
-
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
61574
63626
|
"accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
|
|
61575
|
-
"accounting.
|
|
63627
|
+
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63628
|
+
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
61576
63629
|
"accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
61577
63630
|
"accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
61578
63631
|
"accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
61579
|
-
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
61580
63632
|
"accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
61581
63633
|
"accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
|
|
63634
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
|
|
63635
|
+
"accounting.transactionChargedBack.entryDescription": "Terugboeking voor factuur {{invoiceId}}",
|
|
63636
|
+
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63637
|
+
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
61582
63638
|
"creditNotes.refundChargeName": "Terugbetaling voor factuur",
|
|
61583
63639
|
"credits.bundleOf": "{{productName}} - Bundel van {{creditCount}} credits",
|
|
61584
63640
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
61585
63641
|
"einvoicing.paymentFromWallet": "Betaling uit tegoed",
|
|
61586
63642
|
"einvoicing.paymentProcessed": "Betaling verwerkt",
|
|
61587
63643
|
"einvoicing.paymentReceived": "Betaling ontvangen",
|
|
63644
|
+
"invoices.minimumFee.adjustmentName": "Aanpassing minimumbedrag",
|
|
63645
|
+
"invoices.minimumFee.name": "Minimumbedrag",
|
|
61588
63646
|
"invoices.outstandingProduct.description": "Onbetaald bedrag van de factuur{{invoiceNumber}} uitgegeven op {{date}}",
|
|
61589
63647
|
"invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
|
|
61590
63648
|
"invoices.outstandingProduct.name": "Openstaand saldo",
|
|
@@ -61592,9 +63650,9 @@ var nl = {
|
|
|
61592
63650
|
"invoices.prorata.paymentForItemFullPeriod": "Betaling voor",
|
|
61593
63651
|
"invoices.prorata.refundForItem": "Gedeeltelijke terugbetaling voor",
|
|
61594
63652
|
"invoices.prorata.refundForItemFullPeriod": "Terugbetaling voor",
|
|
61595
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo",
|
|
61596
63653
|
"subscriptions.closingChargeName": "Afsluitkosten voor abonnement",
|
|
61597
63654
|
"subscriptions.correction": "Aanpassing vorige periode",
|
|
63655
|
+
"subscriptions.reinstatementRechargeName": "Herstelkosten van geannuleerde periode",
|
|
61598
63656
|
"subscriptions.updates.addCoupon": "Coupon toevoegen {{couponName}}",
|
|
61599
63657
|
"subscriptions.updates.addProduct": "{{productName}} toevoegen",
|
|
61600
63658
|
"subscriptions.updates.removeCoupon": "Coupon verwijderen {{couponName}}",
|
|
@@ -61609,28 +63667,32 @@ var nl = {
|
|
|
61609
63667
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Bedrag van {{amount}} (met een minimaal toegezegd aantal van {{committedCount}}) niet gefactureerd voor de geproportioneerde periode",
|
|
61610
63668
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Deze regel is gefactureerd voor de geproportioneerde periode",
|
|
61611
63669
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Bedrag van {{amount}} niet gefactureerd voor de geproportioneerde periode",
|
|
61612
|
-
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}"
|
|
63670
|
+
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}",
|
|
63671
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo"
|
|
61613
63672
|
};
|
|
61614
63673
|
|
|
61615
63674
|
// ../hyperline-i18n/build/locales/pl.js
|
|
61616
63675
|
var pl = {
|
|
61617
|
-
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
61618
|
-
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
61619
|
-
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
61620
63676
|
"accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
|
|
61621
|
-
"accounting.
|
|
63677
|
+
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63678
|
+
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
61622
63679
|
"accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
61623
63680
|
"accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
61624
63681
|
"accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
61625
|
-
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
61626
63682
|
"accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
61627
63683
|
"accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
|
|
63684
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
|
|
63685
|
+
"accounting.transactionChargedBack.entryDescription": "Obci\u0105\u017Cenie zwrotne za faktur\u0119 {{invoiceId}}",
|
|
63686
|
+
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63687
|
+
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
61628
63688
|
"creditNotes.refundChargeName": "Zwrot za faktur\u0119",
|
|
61629
63689
|
"credits.bundleOf": "{{productName}} - Pakiet {{creditCount}} kredyt\xF3w",
|
|
61630
63690
|
"credits.unitsOf": "{{productName}} - {{creditCount}} kredyt\xF3w",
|
|
61631
63691
|
"einvoicing.paymentFromWallet": "P\u0142atno\u015B\u0107 z portfela",
|
|
61632
63692
|
"einvoicing.paymentProcessed": "P\u0142atno\u015B\u0107 przetworzona",
|
|
61633
63693
|
"einvoicing.paymentReceived": "P\u0142atno\u015B\u0107 otrzymana",
|
|
63694
|
+
"invoices.minimumFee.adjustmentName": "Wyr\xF3wnanie do op\u0142aty minimalnej",
|
|
63695
|
+
"invoices.minimumFee.name": "Op\u0142ata minimalna",
|
|
61634
63696
|
"invoices.outstandingProduct.description": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} wystawionej {{date}}",
|
|
61635
63697
|
"invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
|
|
61636
63698
|
"invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
|
|
@@ -61638,9 +63700,9 @@ var pl = {
|
|
|
61638
63700
|
"invoices.prorata.paymentForItemFullPeriod": "P\u0142atno\u015B\u0107 za",
|
|
61639
63701
|
"invoices.prorata.refundForItem": "Zwrot proporcjonalny za",
|
|
61640
63702
|
"invoices.prorata.refundForItemFullPeriod": "Zwrot za",
|
|
61641
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo",
|
|
61642
63703
|
"subscriptions.closingChargeName": "Op\u0142ata za zamkni\u0119cie subskrypcji",
|
|
61643
63704
|
"subscriptions.correction": "Korekta poprzedniego okresu",
|
|
63705
|
+
"subscriptions.reinstatementRechargeName": "Op\u0142ata za przywr\xF3cenie anulowanego okresu",
|
|
61644
63706
|
"subscriptions.updates.addCoupon": "Dodaj kupon {{couponName}}",
|
|
61645
63707
|
"subscriptions.updates.addProduct": "Dodaj {{productName}}",
|
|
61646
63708
|
"subscriptions.updates.removeCoupon": "Usu\u0144 kupon {{couponName}}",
|
|
@@ -61655,28 +63717,32 @@ var pl = {
|
|
|
61655
63717
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Kwota {{amount}} (z minimaln\u0105 zobowi\u0105zan\u0105 ilo\u015Bci\u0105 {{committedCount}}) niefakturowana za okres proporcjonalny",
|
|
61656
63718
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Ta pozycja zosta\u0142a zafakturowana za okres proporcjonalny",
|
|
61657
63719
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Kwota {{amount}} niefakturowana za okres proporcjonalny",
|
|
61658
|
-
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}"
|
|
63720
|
+
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}",
|
|
63721
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo"
|
|
61659
63722
|
};
|
|
61660
63723
|
|
|
61661
63724
|
// ../hyperline-i18n/build/locales/pt.js
|
|
61662
63725
|
var pt = {
|
|
61663
|
-
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
61664
|
-
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
61665
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
61666
63726
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
|
|
61667
|
-
"accounting.
|
|
63727
|
+
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63728
|
+
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
61668
63729
|
"accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
61669
63730
|
"accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
61670
63731
|
"accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
61671
|
-
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
61672
63732
|
"accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
61673
63733
|
"accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63734
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63735
|
+
"accounting.transactionChargedBack.entryDescription": "Estorno da fatura {{invoiceId}}",
|
|
63736
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63737
|
+
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
61674
63738
|
"creditNotes.refundChargeName": "Reembolso pela fatura",
|
|
61675
63739
|
"credits.bundleOf": "{{productName}} - Pacote de {{creditCount}} cr\xE9ditos",
|
|
61676
63740
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
61677
63741
|
"einvoicing.paymentFromWallet": "Pagamento da carteira",
|
|
61678
63742
|
"einvoicing.paymentProcessed": "Pagamento processado",
|
|
61679
63743
|
"einvoicing.paymentReceived": "Pagamento recebido",
|
|
63744
|
+
"invoices.minimumFee.adjustmentName": "Ajuste do valor m\xEDnimo",
|
|
63745
|
+
"invoices.minimumFee.name": "Valor m\xEDnimo",
|
|
61680
63746
|
"invoices.outstandingProduct.description": "Valor em aberto da fatura{{invoiceNumber}} emitida em {{date}}",
|
|
61681
63747
|
"invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
|
|
61682
63748
|
"invoices.outstandingProduct.name": "Saldo em aberto",
|
|
@@ -61684,9 +63750,9 @@ var pt = {
|
|
|
61684
63750
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento por",
|
|
61685
63751
|
"invoices.prorata.refundForItem": "Reembolso proporcional por",
|
|
61686
63752
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
61687
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado",
|
|
61688
63753
|
"subscriptions.closingChargeName": "Taxa de encerramento da assinatura",
|
|
61689
63754
|
"subscriptions.correction": "Ajuste do per\xEDodo anterior",
|
|
63755
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reintegra\xE7\xE3o do per\xEDodo cancelado",
|
|
61690
63756
|
"subscriptions.updates.addCoupon": "Adicionar cupom {{couponName}}",
|
|
61691
63757
|
"subscriptions.updates.addProduct": "Adicionar {{productName}}",
|
|
61692
63758
|
"subscriptions.updates.removeCoupon": "Remover cupom {{couponName}}",
|
|
@@ -61701,7 +63767,8 @@ var pt = {
|
|
|
61701
63767
|
"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",
|
|
61702
63768
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta linha foi faturada para o per\xEDodo proporcional",
|
|
61703
63769
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Valor de {{amount}} n\xE3o faturado para o per\xEDodo proporcional",
|
|
61704
|
-
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}"
|
|
63770
|
+
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}",
|
|
63771
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado"
|
|
61705
63772
|
};
|
|
61706
63773
|
|
|
61707
63774
|
// ../hyperline-i18n/build/language.js
|
|
@@ -61864,6 +63931,223 @@ import * as winston from "winston";
|
|
|
61864
63931
|
|
|
61865
63932
|
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
61866
63933
|
import prune from "json-prune";
|
|
63934
|
+
|
|
63935
|
+
// ../hyperline-monitoring/build/logger/formatting/logRedaction.js
|
|
63936
|
+
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
63937
|
+
"accesstoken",
|
|
63938
|
+
"apitoken",
|
|
63939
|
+
"assertion",
|
|
63940
|
+
"authorization",
|
|
63941
|
+
"authtoken",
|
|
63942
|
+
"cardnumber",
|
|
63943
|
+
"clientassertion",
|
|
63944
|
+
"codeverifier",
|
|
63945
|
+
"connectionurl",
|
|
63946
|
+
"consumerkey",
|
|
63947
|
+
"cookie",
|
|
63948
|
+
"credential",
|
|
63949
|
+
"credentials",
|
|
63950
|
+
"iban",
|
|
63951
|
+
"idtoken",
|
|
63952
|
+
"privatekey",
|
|
63953
|
+
"publictoken",
|
|
63954
|
+
"refreshtoken",
|
|
63955
|
+
"sessiontoken",
|
|
63956
|
+
"token",
|
|
63957
|
+
"tokenid",
|
|
63958
|
+
"verificationcode"
|
|
63959
|
+
]);
|
|
63960
|
+
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password|passphrase|apikey)$/;
|
|
63961
|
+
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
|
|
63962
|
+
var URL_ONLY_REDACTED_KEYS = /* @__PURE__ */ new Set(["key"]);
|
|
63963
|
+
var OAUTH_CODE_KEY = "code";
|
|
63964
|
+
var OAUTH_CODE_CONTEXT_KEYS = ["state", "grant_type"];
|
|
63965
|
+
var REDACTED_VALUE = "<redacted>";
|
|
63966
|
+
var TRUNCATED_VALUE = "[TRUNCATED: not redacted]";
|
|
63967
|
+
var TRUNCATED_KEY = "[TRUNCATED]";
|
|
63968
|
+
var MAX_REDACTION_DEPTH = 6;
|
|
63969
|
+
var MAX_ARRAY_ENTRIES = 50;
|
|
63970
|
+
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
63971
|
+
var MAX_VISITED_NODES = 5e3;
|
|
63972
|
+
var MAX_CONTAINER_ENTRIES = 1e3;
|
|
63973
|
+
var MAX_STRING_CHARACTERS = 256e3;
|
|
63974
|
+
function redactLogBody({ body }) {
|
|
63975
|
+
return redactValue({
|
|
63976
|
+
value: body,
|
|
63977
|
+
depth: MAX_REDACTION_DEPTH,
|
|
63978
|
+
budget: {
|
|
63979
|
+
remainingNodes: MAX_VISITED_NODES,
|
|
63980
|
+
remainingChars: MAX_STRING_CHARACTERS
|
|
63981
|
+
}
|
|
63982
|
+
});
|
|
63983
|
+
}
|
|
63984
|
+
function redactLogUrl({ url: url2 }) {
|
|
63985
|
+
const queryIndex = url2.indexOf("?");
|
|
63986
|
+
if (queryIndex === -1) {
|
|
63987
|
+
return url2;
|
|
63988
|
+
}
|
|
63989
|
+
if (url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
63990
|
+
return `${url2.slice(0, queryIndex)}?${TRUNCATED_VALUE}`;
|
|
63991
|
+
}
|
|
63992
|
+
const redactedQuery = redactFormEncoded({
|
|
63993
|
+
text: url2.slice(queryIndex + 1),
|
|
63994
|
+
extraRedactedKeys: URL_ONLY_REDACTED_KEYS
|
|
63995
|
+
});
|
|
63996
|
+
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
63997
|
+
}
|
|
63998
|
+
function redactValue({ value, depth, budget }) {
|
|
63999
|
+
if (isOpaqueObject({ value })) {
|
|
64000
|
+
return replaceOpaqueObject({ value });
|
|
64001
|
+
}
|
|
64002
|
+
if (typeof value === "string") {
|
|
64003
|
+
if (value.length > budget.remainingChars) {
|
|
64004
|
+
return TRUNCATED_VALUE;
|
|
64005
|
+
}
|
|
64006
|
+
budget.remainingChars -= value.length;
|
|
64007
|
+
}
|
|
64008
|
+
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
64009
|
+
return isInspectable({ value }) ? TRUNCATED_VALUE : value;
|
|
64010
|
+
}
|
|
64011
|
+
budget.remainingNodes -= 1;
|
|
64012
|
+
if (typeof value === "string") {
|
|
64013
|
+
return redactString({ text: value, budget });
|
|
64014
|
+
}
|
|
64015
|
+
if (value instanceof URLSearchParams) {
|
|
64016
|
+
return redactValue({ value: value.toString(), depth, budget });
|
|
64017
|
+
}
|
|
64018
|
+
if (Array.isArray(value)) {
|
|
64019
|
+
return redactArray({ items: value, depth, budget });
|
|
64020
|
+
}
|
|
64021
|
+
if (isPlainObject2(value)) {
|
|
64022
|
+
return redactObject({ record: value, depth, budget });
|
|
64023
|
+
}
|
|
64024
|
+
return value;
|
|
64025
|
+
}
|
|
64026
|
+
function isOpaqueObject({ value }) {
|
|
64027
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && !isPlainObject2(value) && !(value instanceof URLSearchParams);
|
|
64028
|
+
}
|
|
64029
|
+
function replaceOpaqueObject({ value }) {
|
|
64030
|
+
if (typeof value !== "object" || value === null || value instanceof Date) {
|
|
64031
|
+
return value;
|
|
64032
|
+
}
|
|
64033
|
+
if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
64034
|
+
return `[BINARY ${value.byteLength} bytes]`;
|
|
64035
|
+
}
|
|
64036
|
+
if (value instanceof Blob) {
|
|
64037
|
+
return `[BINARY ${value.size} bytes]`;
|
|
64038
|
+
}
|
|
64039
|
+
if (value instanceof FormData || typeof Reflect.get(value, "pipe") === "function") {
|
|
64040
|
+
return "[BINARY stream]";
|
|
64041
|
+
}
|
|
64042
|
+
return TRUNCATED_VALUE;
|
|
64043
|
+
}
|
|
64044
|
+
function redactArray({ items, depth, budget }) {
|
|
64045
|
+
const isTruncated = items.length > MAX_ARRAY_ENTRIES;
|
|
64046
|
+
const keptItems = isTruncated ? items.slice(0, MAX_ARRAY_ENTRIES) : items;
|
|
64047
|
+
let redactedItems;
|
|
64048
|
+
for (const [index, item] of keptItems.entries()) {
|
|
64049
|
+
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
64050
|
+
if (redactedItem !== item) {
|
|
64051
|
+
redactedItems ??= [...keptItems];
|
|
64052
|
+
redactedItems[index] = redactedItem;
|
|
64053
|
+
}
|
|
64054
|
+
}
|
|
64055
|
+
const result = redactedItems ?? keptItems;
|
|
64056
|
+
return isTruncated ? [...result, TRUNCATED_VALUE] : result;
|
|
64057
|
+
}
|
|
64058
|
+
function redactObject({ record: record2, depth, budget }) {
|
|
64059
|
+
const redactedEntries = /* @__PURE__ */ new Map();
|
|
64060
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => Object.hasOwn(record2, contextKey));
|
|
64061
|
+
const keptKeys = [];
|
|
64062
|
+
let isTruncated = false;
|
|
64063
|
+
for (const key in record2) {
|
|
64064
|
+
if (!Object.hasOwn(record2, key)) {
|
|
64065
|
+
continue;
|
|
64066
|
+
}
|
|
64067
|
+
if (keptKeys.length >= MAX_CONTAINER_ENTRIES || key.length > budget.remainingChars) {
|
|
64068
|
+
isTruncated = true;
|
|
64069
|
+
break;
|
|
64070
|
+
}
|
|
64071
|
+
budget.remainingChars -= key.length;
|
|
64072
|
+
keptKeys.push(key);
|
|
64073
|
+
const nestedValue = record2[key];
|
|
64074
|
+
const isSensitiveKey = isRedactedKey({ key }) || carriesOAuthCode && key === OAUTH_CODE_KEY;
|
|
64075
|
+
const shouldRedact = isSensitiveKey && nestedValue != null && typeof nestedValue !== "boolean";
|
|
64076
|
+
if (shouldRedact) {
|
|
64077
|
+
budget.remainingNodes -= 1;
|
|
64078
|
+
}
|
|
64079
|
+
const redactedNestedValue = shouldRedact ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
64080
|
+
if (redactedNestedValue !== nestedValue) {
|
|
64081
|
+
redactedEntries.set(key, redactedNestedValue);
|
|
64082
|
+
}
|
|
64083
|
+
}
|
|
64084
|
+
if (isTruncated) {
|
|
64085
|
+
const keptRecord = {};
|
|
64086
|
+
for (const key of keptKeys) {
|
|
64087
|
+
keptRecord[key] = redactedEntries.has(key) ? redactedEntries.get(key) : record2[key];
|
|
64088
|
+
}
|
|
64089
|
+
keptRecord[TRUNCATED_KEY] = TRUNCATED_VALUE;
|
|
64090
|
+
return keptRecord;
|
|
64091
|
+
}
|
|
64092
|
+
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
64093
|
+
}
|
|
64094
|
+
function redactString({ text, budget }) {
|
|
64095
|
+
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
64096
|
+
return TRUNCATED_VALUE;
|
|
64097
|
+
}
|
|
64098
|
+
if (!isInspectable({ value: text })) {
|
|
64099
|
+
return text;
|
|
64100
|
+
}
|
|
64101
|
+
const trimmedText = text.trim();
|
|
64102
|
+
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
64103
|
+
try {
|
|
64104
|
+
const parsedValue = JSON.parse(trimmedText);
|
|
64105
|
+
const redactedValue = redactValue({
|
|
64106
|
+
value: parsedValue,
|
|
64107
|
+
depth: MAX_REDACTION_DEPTH,
|
|
64108
|
+
budget
|
|
64109
|
+
});
|
|
64110
|
+
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
64111
|
+
} catch {
|
|
64112
|
+
return REDACTED_KEY_CANDIDATE_PATTERN.test(text) ? TRUNCATED_VALUE : redactFormEncoded({ text }) ?? text;
|
|
64113
|
+
}
|
|
64114
|
+
}
|
|
64115
|
+
return redactFormEncoded({ text }) ?? text;
|
|
64116
|
+
}
|
|
64117
|
+
function redactFormEncoded({ text, extraRedactedKeys }) {
|
|
64118
|
+
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
64119
|
+
return void 0;
|
|
64120
|
+
}
|
|
64121
|
+
const params = new URLSearchParams(text);
|
|
64122
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => params.has(contextKey));
|
|
64123
|
+
let hasRedactedParam = false;
|
|
64124
|
+
for (const key of new Set(params.keys())) {
|
|
64125
|
+
if (isRedactedKey({ key }) || extraRedactedKeys?.has(key.toLowerCase()) || carriesOAuthCode && key === OAUTH_CODE_KEY) {
|
|
64126
|
+
params.set(key, REDACTED_VALUE);
|
|
64127
|
+
hasRedactedParam = true;
|
|
64128
|
+
}
|
|
64129
|
+
}
|
|
64130
|
+
return hasRedactedParam ? params.toString() : void 0;
|
|
64131
|
+
}
|
|
64132
|
+
function isRedactedKey({ key }) {
|
|
64133
|
+
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
64134
|
+
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
64135
|
+
}
|
|
64136
|
+
function isInspectable({ value }) {
|
|
64137
|
+
if (typeof value === "string") {
|
|
64138
|
+
return value.length > MAX_PARSED_STRING_LENGTH || /^\s*[{[]/.test(value) || value.includes("=") && REDACTED_KEY_CANDIDATE_PATTERN.test(value);
|
|
64139
|
+
}
|
|
64140
|
+
return value instanceof URLSearchParams || Array.isArray(value) || isPlainObject2(value);
|
|
64141
|
+
}
|
|
64142
|
+
function isPlainObject2(value) {
|
|
64143
|
+
if (typeof value !== "object" || value === null) {
|
|
64144
|
+
return false;
|
|
64145
|
+
}
|
|
64146
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64147
|
+
return prototype === Object.prototype || prototype === null;
|
|
64148
|
+
}
|
|
64149
|
+
|
|
64150
|
+
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
61867
64151
|
var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
|
|
61868
64152
|
function jsonFormat(info) {
|
|
61869
64153
|
const prunedInfo = JSON.parse(prune(info));
|
|
@@ -61924,14 +64208,106 @@ function transformPrune(info) {
|
|
|
61924
64208
|
});
|
|
61925
64209
|
return info;
|
|
61926
64210
|
}
|
|
64211
|
+
var MAX_AXIOS_ERROR_DEPTH = 5;
|
|
64212
|
+
var MAX_AXIOS_ERROR_CONTAINER_ENTRIES = 1e3;
|
|
64213
|
+
var MAX_AXIOS_ERROR_VISITED_NODES = 5e3;
|
|
64214
|
+
var REDACTED_BODY_KEYS = /* @__PURE__ */ new Set(["requestBody", "responseBody"]);
|
|
61927
64215
|
function transformAxiosError(info) {
|
|
61928
|
-
|
|
61929
|
-
|
|
61930
|
-
|
|
64216
|
+
let walk;
|
|
64217
|
+
for (const [key, value] of Object.entries(info)) {
|
|
64218
|
+
if (typeof value !== "object" || value === null || REDACTED_BODY_KEYS.has(key)) {
|
|
64219
|
+
continue;
|
|
61931
64220
|
}
|
|
61932
|
-
|
|
64221
|
+
walk ??= {
|
|
64222
|
+
formatted: /* @__PURE__ */ new Map(),
|
|
64223
|
+
remainingNodes: MAX_AXIOS_ERROR_VISITED_NODES
|
|
64224
|
+
};
|
|
64225
|
+
const formattedValue = formatNestedAxiosErrors({
|
|
64226
|
+
value,
|
|
64227
|
+
depth: MAX_AXIOS_ERROR_DEPTH,
|
|
64228
|
+
walk
|
|
64229
|
+
});
|
|
64230
|
+
if (formattedValue !== value) {
|
|
64231
|
+
info[key] = formattedValue;
|
|
64232
|
+
}
|
|
64233
|
+
}
|
|
61933
64234
|
return info;
|
|
61934
64235
|
}
|
|
64236
|
+
function formatNestedAxiosErrors({ value, depth, walk }) {
|
|
64237
|
+
if (typeof value !== "object" || value === null) {
|
|
64238
|
+
return value;
|
|
64239
|
+
}
|
|
64240
|
+
if (walk.formatted.has(value)) {
|
|
64241
|
+
return walk.formatted.get(value);
|
|
64242
|
+
}
|
|
64243
|
+
if (Reflect.get(value, "name") === "AxiosError") {
|
|
64244
|
+
const formattedError = walk.remainingNodes > 0 ? formatAxiosError(value) : summarizeAxiosError({ error: value });
|
|
64245
|
+
walk.remainingNodes -= 1;
|
|
64246
|
+
walk.formatted.set(value, formattedError);
|
|
64247
|
+
return formattedError;
|
|
64248
|
+
}
|
|
64249
|
+
const isWalkable = Array.isArray(value) || value instanceof Error || isPlainRecord(value);
|
|
64250
|
+
if (!isWalkable || depth <= 0 || walk.remainingNodes <= 0) {
|
|
64251
|
+
return value;
|
|
64252
|
+
}
|
|
64253
|
+
walk.formatted.set(value, "[Circular]");
|
|
64254
|
+
walk.remainingNodes -= 1;
|
|
64255
|
+
const formattedValue = formatWalkableValue({ value, depth, walk });
|
|
64256
|
+
walk.formatted.set(value, formattedValue);
|
|
64257
|
+
return formattedValue;
|
|
64258
|
+
}
|
|
64259
|
+
function summarizeAxiosError({ error: error48 }) {
|
|
64260
|
+
return {
|
|
64261
|
+
name: Reflect.get(error48, "name"),
|
|
64262
|
+
message: Reflect.get(error48, "message"),
|
|
64263
|
+
code: Reflect.get(error48, "code")
|
|
64264
|
+
};
|
|
64265
|
+
}
|
|
64266
|
+
function formatWalkableValue({ value, depth, walk }) {
|
|
64267
|
+
if (Array.isArray(value)) {
|
|
64268
|
+
if (value.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64269
|
+
return value;
|
|
64270
|
+
}
|
|
64271
|
+
let formattedItems;
|
|
64272
|
+
for (const [index, item] of value.entries()) {
|
|
64273
|
+
const formattedItem = formatNestedAxiosErrors({
|
|
64274
|
+
value: item,
|
|
64275
|
+
depth: depth - 1,
|
|
64276
|
+
walk
|
|
64277
|
+
});
|
|
64278
|
+
if (formattedItem !== item) {
|
|
64279
|
+
formattedItems ??= [...value];
|
|
64280
|
+
formattedItems[index] = formattedItem;
|
|
64281
|
+
}
|
|
64282
|
+
}
|
|
64283
|
+
return formattedItems ?? value;
|
|
64284
|
+
}
|
|
64285
|
+
const keys = Object.keys(value);
|
|
64286
|
+
if (keys.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64287
|
+
return value;
|
|
64288
|
+
}
|
|
64289
|
+
const formattedEntries = /* @__PURE__ */ new Map();
|
|
64290
|
+
for (const key of keys) {
|
|
64291
|
+
const nestedValue = Reflect.get(value, key);
|
|
64292
|
+
const formattedNestedValue = formatNestedAxiosErrors({
|
|
64293
|
+
value: nestedValue,
|
|
64294
|
+
depth: depth - 1,
|
|
64295
|
+
walk
|
|
64296
|
+
});
|
|
64297
|
+
if (formattedNestedValue !== nestedValue) {
|
|
64298
|
+
formattedEntries.set(key, formattedNestedValue);
|
|
64299
|
+
}
|
|
64300
|
+
}
|
|
64301
|
+
if (formattedEntries.size === 0) {
|
|
64302
|
+
return value;
|
|
64303
|
+
}
|
|
64304
|
+
return {
|
|
64305
|
+
...value,
|
|
64306
|
+
// Error properties are not enumerable, so the spread would drop them.
|
|
64307
|
+
...value instanceof Error ? { name: value.name, message: value.message, stack: value.stack } : {},
|
|
64308
|
+
...Object.fromEntries(formattedEntries)
|
|
64309
|
+
};
|
|
64310
|
+
}
|
|
61935
64311
|
function formatAxiosError(error48) {
|
|
61936
64312
|
if (!isRecord(error48) || error48.name !== "AxiosError") {
|
|
61937
64313
|
return error48;
|
|
@@ -61944,9 +64320,9 @@ function formatAxiosError(error48) {
|
|
|
61944
64320
|
code: error48.code,
|
|
61945
64321
|
request: {
|
|
61946
64322
|
method: request?.method,
|
|
61947
|
-
url: request?.url,
|
|
64323
|
+
url: typeof request?.url === "string" ? redactLogUrl({ url: request.url }) : request?.url,
|
|
61948
64324
|
baseURL: request?.baseURL,
|
|
61949
|
-
params: request?.params,
|
|
64325
|
+
params: redactLogBody({ body: request?.params }),
|
|
61950
64326
|
headers: redactHeaders({ headers: request?.headers }),
|
|
61951
64327
|
"axios-retry": request?.["axios-retry"]
|
|
61952
64328
|
},
|
|
@@ -61954,7 +64330,7 @@ function formatAxiosError(error48) {
|
|
|
61954
64330
|
status: response?.status,
|
|
61955
64331
|
statusText: response?.statusText,
|
|
61956
64332
|
headers: redactHeaders({ headers: response?.headers }),
|
|
61957
|
-
data: response?.data
|
|
64333
|
+
data: redactLogBody({ body: response?.data })
|
|
61958
64334
|
}
|
|
61959
64335
|
};
|
|
61960
64336
|
}
|
|
@@ -61967,6 +64343,10 @@ function redactHeaders({ headers }) {
|
|
|
61967
64343
|
REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
|
|
61968
64344
|
]));
|
|
61969
64345
|
}
|
|
64346
|
+
function isPlainRecord(value) {
|
|
64347
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64348
|
+
return prototype === Object.prototype || prototype === null;
|
|
64349
|
+
}
|
|
61970
64350
|
function isRecord(value) {
|
|
61971
64351
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
61972
64352
|
}
|
|
@@ -61996,7 +64376,7 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
61996
64376
|
const responseMetadata = {
|
|
61997
64377
|
statusCode,
|
|
61998
64378
|
responseTime,
|
|
61999
|
-
responseBody,
|
|
64379
|
+
responseBody: redactLogBody({ body: responseBody }),
|
|
62000
64380
|
// Redacted so secrets (authorization/cookie/token/…) never reach the logs
|
|
62001
64381
|
// while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
|
|
62002
64382
|
responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
|
|
@@ -62009,14 +64389,15 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
62009
64389
|
}
|
|
62010
64390
|
function transform2(request) {
|
|
62011
64391
|
const method = request.method.toUpperCase();
|
|
62012
|
-
const
|
|
64392
|
+
const originalUrl = redactLogUrl({ url: request.originalUrl });
|
|
64393
|
+
const message = `${method} ${originalUrl}`;
|
|
62013
64394
|
const metadata = {};
|
|
62014
64395
|
metadata.method = method;
|
|
62015
|
-
metadata.url = request.url;
|
|
62016
|
-
metadata.path = request.path;
|
|
64396
|
+
metadata.url = redactLogUrl({ url: request.url });
|
|
64397
|
+
metadata.path = redactLogUrl({ url: request.path });
|
|
62017
64398
|
metadata.hostname = request.hostname;
|
|
62018
|
-
metadata.originalUrl =
|
|
62019
|
-
metadata.requestBody =
|
|
64399
|
+
metadata.originalUrl = originalUrl;
|
|
64400
|
+
metadata.requestBody = redactLogBody({ body: request.body });
|
|
62020
64401
|
metadata.routePath = transformUrlIntoRoutePath(request);
|
|
62021
64402
|
metadata.apiKeyEnd = request.headers["authorization"]?.slice(-6);
|
|
62022
64403
|
return { message, metadata };
|
|
@@ -62063,7 +64444,16 @@ function buildLoggerFactory({ config: config4, context }) {
|
|
|
62063
64444
|
const internalLogger = winston.createLogger({
|
|
62064
64445
|
transports: transports2,
|
|
62065
64446
|
defaultMeta,
|
|
62066
|
-
format: winston.format.combine(
|
|
64447
|
+
format: winston.format.combine(
|
|
64448
|
+
winston.format.splat(),
|
|
64449
|
+
winston.format(addMetadata({ getCorrelationId, getExecutionContext }))(),
|
|
64450
|
+
// Before pruning: json-prune would otherwise serialize a binary
|
|
64451
|
+
// `response.data` byte by byte before it is summarised (#6006).
|
|
64452
|
+
winston.format(transformAxiosError)(),
|
|
64453
|
+
winston.format(transformErrorEnrich)({ depth: 5 }),
|
|
64454
|
+
winston.format(transformPrune)(),
|
|
64455
|
+
winston.format.timestamp()
|
|
64456
|
+
),
|
|
62067
64457
|
exitOnError: false
|
|
62068
64458
|
});
|
|
62069
64459
|
function createLogger3({ serviceName }) {
|
|
@@ -64395,6 +66785,8 @@ var usStates = [
|
|
|
64395
66785
|
|
|
64396
66786
|
// ../hyperline-lib/build/utils/dates.js
|
|
64397
66787
|
var import_shared2 = __toESM(require_shared(), 1);
|
|
66788
|
+
var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
|
|
66789
|
+
var DST_SHIFT_MS = 60 * 60 * 1e3;
|
|
64398
66790
|
|
|
64399
66791
|
// ../hyperline-lib/build/utils/document.js
|
|
64400
66792
|
var import_shared3 = __toESM(require_shared(), 1);
|
|
@@ -64406,6 +66798,24 @@ import * as https from "node:https";
|
|
|
64406
66798
|
import { createHash as createHash2 } from "node:crypto";
|
|
64407
66799
|
import { deepEqual } from "fast-equals";
|
|
64408
66800
|
|
|
66801
|
+
// ../hyperline-lib/build/utils/realignDatesToTimezone.js
|
|
66802
|
+
var import_shared4 = __toESM(require_shared(), 1);
|
|
66803
|
+
var MILLISECONDS_PER_HOUR = 60 * 60 * 1e3;
|
|
66804
|
+
var MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;
|
|
66805
|
+
var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
|
|
66806
|
+
var dateRealignmentModeSchema = external_exports.enum([
|
|
66807
|
+
"utc_midnight_import",
|
|
66808
|
+
"dst_hour_drift",
|
|
66809
|
+
"month_start_drift",
|
|
66810
|
+
"manual_phase_end_midnight"
|
|
66811
|
+
]).default("utc_midnight_import");
|
|
66812
|
+
var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
|
|
66813
|
+
[23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66814
|
+
[LAST_MILLISECOND_OF_DAY - MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66815
|
+
[MILLISECONDS_PER_HOUR, -MILLISECONDS_PER_HOUR],
|
|
66816
|
+
[MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
|
|
66817
|
+
]);
|
|
66818
|
+
|
|
64409
66819
|
// ../hyperline-lib/build/utils/api/filterBuilder.js
|
|
64410
66820
|
var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
|
|
64411
66821
|
var booleanAuthorizedOperators = [
|
|
@@ -64472,7 +66882,7 @@ var isAxiosError = axios.isAxiosError;
|
|
|
64472
66882
|
|
|
64473
66883
|
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
64474
66884
|
import axios2 from "axios";
|
|
64475
|
-
import axiosRetry, { isNetworkOrIdempotentRequestError } from "axios-retry";
|
|
66885
|
+
import axiosRetry, { isNetworkOrIdempotentRequestError, retryAfter } from "axios-retry";
|
|
64476
66886
|
import { AxiosError } from "axios";
|
|
64477
66887
|
var recommendedRetryConfig = {
|
|
64478
66888
|
retries: 3,
|
|
@@ -64540,12 +66950,13 @@ function isTooManyRequestsError(error48) {
|
|
|
64540
66950
|
return error48.response?.status === 429;
|
|
64541
66951
|
}
|
|
64542
66952
|
var toLogRequest = (config4) => {
|
|
66953
|
+
const url2 = config4.url ?? "";
|
|
64543
66954
|
return {
|
|
64544
66955
|
method: config4.method ?? "",
|
|
64545
|
-
url:
|
|
64546
|
-
path:
|
|
66956
|
+
url: url2,
|
|
66957
|
+
path: url2,
|
|
64547
66958
|
hostname: config4.baseURL ?? "",
|
|
64548
|
-
originalUrl: `${config4.baseURL ?? ""}${
|
|
66959
|
+
originalUrl: `${config4.baseURL ?? ""}${url2}`,
|
|
64549
66960
|
body: config4.data,
|
|
64550
66961
|
headers: {}
|
|
64551
66962
|
};
|