@hyperline/cli 0.1.0-build.1.3dc2653 → 0.1.0-build.1.3ed92c7
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 +2017 -265
- package/package.json +1 -1
|
@@ -33833,7 +33833,7 @@ var require_shared = __commonJS({
|
|
|
33833
33833
|
getNameForCurrency: () => getNameForCurrency,
|
|
33834
33834
|
getNaturalNumber: () => getNaturalNumber,
|
|
33835
33835
|
getSymbolForCurrency: () => getSymbolForCurrency,
|
|
33836
|
-
getTimezoneByName: () =>
|
|
33836
|
+
getTimezoneByName: () => getTimezoneByName2,
|
|
33837
33837
|
getTimezoneOffsetName: () => getTimezoneOffsetName,
|
|
33838
33838
|
getTimezones: () => getTimezones2,
|
|
33839
33839
|
getValidTimezonesNames: () => getValidTimezonesNames,
|
|
@@ -33850,7 +33850,7 @@ var require_shared = __commonJS({
|
|
|
33850
33850
|
subtract: () => subtract,
|
|
33851
33851
|
sum: () => sum2,
|
|
33852
33852
|
toLocalTime: () => toLocalTime3,
|
|
33853
|
-
toUtc: () =>
|
|
33853
|
+
toUtc: () => toUtc3,
|
|
33854
33854
|
useDebounce: () => useDebounce
|
|
33855
33855
|
});
|
|
33856
33856
|
module.exports = __toCommonJS(shared_exports);
|
|
@@ -34985,10 +34985,10 @@ var require_shared = __commonJS({
|
|
|
34985
34985
|
ZodId: () => ZodId,
|
|
34986
34986
|
ZodTranslationsSchemaFn: () => ZodTranslationsSchemaFn
|
|
34987
34987
|
});
|
|
34988
|
-
var
|
|
34988
|
+
var import_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("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (
|
|
39237
|
+
resource.command("resolve").description(`Preview which account codes would be resolved for a given context.`).requiredOption("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).option("--product-id <value>", `Product ID to resolve against.`).option("--product-type <value>", `Product type to resolve against.`).option("--currency <value>", `Currency code to resolve against.`).option("--country <value>", `Country code to resolve against.`).option("--tax-scheme <value>", `Tax scheme to resolve against.`).option("--tax-territory <value>", `Tax territory country code to resolve against.`).option("--tax-rate-class <value>", `Tax rate class to resolve against.`).option("--customer-id <value>", `Customer ID to resolve against.`).option("--coupon-id <value>", `Coupon ID to resolve against.`).option("--client-provider-id <value>", `Client provider ID to resolve against.`).option("--payment-method-type <value>", `Payment method type to resolve against.`).option("--bank-account-id <value>", `Bank account ID to resolve against.`).option("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-properties <json>", `Invoice custom property values to resolve against, keyed by custom property slug. Unknown slugs and null values are ignored. Rules with custom property filters never match without them.`).addHelpText("after", `
|
|
39187
39238
|
Examples:
|
|
39188
39239
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category>
|
|
39189
39240
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category> --product-id <product_id> --product-type <product_type>
|
|
@@ -39206,14 +39257,30 @@ Examples:
|
|
|
39206
39257
|
args.currency = opts.currency;
|
|
39207
39258
|
if (opts.country !== void 0)
|
|
39208
39259
|
args.country = opts.country;
|
|
39260
|
+
if (opts.taxScheme !== void 0)
|
|
39261
|
+
args.tax_scheme = opts.taxScheme;
|
|
39262
|
+
if (opts.taxTerritory !== void 0)
|
|
39263
|
+
args.tax_territory = opts.taxTerritory;
|
|
39264
|
+
if (opts.taxRateClass !== void 0)
|
|
39265
|
+
args.tax_rate_class = opts.taxRateClass;
|
|
39209
39266
|
if (opts.customerId !== void 0)
|
|
39210
39267
|
args.customer_id = opts.customerId;
|
|
39268
|
+
if (opts.couponId !== void 0)
|
|
39269
|
+
args.coupon_id = opts.couponId;
|
|
39270
|
+
if (opts.clientProviderId !== void 0)
|
|
39271
|
+
args.client_provider_id = opts.clientProviderId;
|
|
39272
|
+
if (opts.paymentMethodType !== void 0)
|
|
39273
|
+
args.payment_method_type = opts.paymentMethodType;
|
|
39274
|
+
if (opts.bankAccountId !== void 0)
|
|
39275
|
+
args.bank_account_id = opts.bankAccountId;
|
|
39211
39276
|
if (opts.invoiceType !== void 0)
|
|
39212
39277
|
args.invoice_type = opts.invoiceType;
|
|
39213
39278
|
if (opts.intervalPeriod !== void 0)
|
|
39214
39279
|
args.interval_period = opts.intervalPeriod;
|
|
39215
39280
|
if (opts.intervalCount !== void 0)
|
|
39216
39281
|
args.interval_count = Number(opts.intervalCount);
|
|
39282
|
+
if (opts.customProperties !== void 0)
|
|
39283
|
+
args.custom_properties = JSON.parse(opts.customProperties);
|
|
39217
39284
|
await ctx.execute({
|
|
39218
39285
|
method: "POST",
|
|
39219
39286
|
path: "/v1/accounting/rules/resolve",
|
|
@@ -39402,20 +39469,1019 @@ Examples:
|
|
|
39402
39469
|
process.stderr.write("Error: Not authenticated\n");
|
|
39403
39470
|
process.exit(1);
|
|
39404
39471
|
}
|
|
39405
|
-
const args = {};
|
|
39406
|
-
if (opts.id !== void 0)
|
|
39407
|
-
args.id = opts.id;
|
|
39472
|
+
const args = {};
|
|
39473
|
+
if (opts.id !== void 0)
|
|
39474
|
+
args.id = opts.id;
|
|
39475
|
+
await ctx.execute({
|
|
39476
|
+
method: "GET",
|
|
39477
|
+
path: "/v1/aggregators/{id}/usage",
|
|
39478
|
+
args,
|
|
39479
|
+
queryParamKeys: []
|
|
39480
|
+
});
|
|
39481
|
+
});
|
|
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", `
|
|
39483
|
+
Examples:
|
|
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) => {
|
|
39486
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39487
|
+
if (!ctx) {
|
|
39488
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39489
|
+
process.exit(1);
|
|
39490
|
+
}
|
|
39491
|
+
const 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;
|
|
39502
|
+
await ctx.execute({
|
|
39503
|
+
method: "GET",
|
|
39504
|
+
path: "/v1/aggregators/{id}/usage/timeseries",
|
|
39505
|
+
args,
|
|
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
|
+
]
|
|
39582
|
+
});
|
|
39583
|
+
});
|
|
39584
|
+
}
|
|
39585
|
+
|
|
39586
|
+
// build/commands/generated/ai-billing.js
|
|
39587
|
+
function registerAi_BillingCommands(parent) {
|
|
39588
|
+
const resource = parent.command("ai-billing").description("Manage ai > billing");
|
|
39589
|
+
resource.command("list-agent-plans").description(`List AI agent billing plans: workspace-level offers carrying a billing mode (wallet/credits/windows), rate card, allowance windows, markups and per-seat credit grants. Filter by mode; paginated with take/skip.`).option("--mode <value>", `Billing mode.
|
|
39590
|
+
|
|
39591
|
+
- wallet: Charges a monetary wallet.
|
|
39592
|
+
- credits: Consumes a credit balance.
|
|
39593
|
+
- windows: Meters weighted units against rolling allowances.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39594
|
+
Examples:
|
|
39595
|
+
hyperline ai-billing list-agent-plans
|
|
39596
|
+
hyperline ai-billing list-agent-plans --mode <mode> --take <take>`).action(async (opts) => {
|
|
39597
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39598
|
+
if (!ctx) {
|
|
39599
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39600
|
+
process.exit(1);
|
|
39601
|
+
}
|
|
39602
|
+
const args = {};
|
|
39603
|
+
if (opts.mode !== void 0)
|
|
39604
|
+
args.mode = opts.mode;
|
|
39605
|
+
if (opts.take !== void 0)
|
|
39606
|
+
args.take = Number(opts.take);
|
|
39607
|
+
if (opts.skip !== void 0)
|
|
39608
|
+
args.skip = Number(opts.skip);
|
|
39609
|
+
await ctx.execute({
|
|
39610
|
+
method: "GET",
|
|
39611
|
+
path: "/v1/ai/billing/plans",
|
|
39612
|
+
args,
|
|
39613
|
+
queryParamKeys: ["mode", "take", "skip"]
|
|
39614
|
+
});
|
|
39615
|
+
});
|
|
39616
|
+
resource.command("create-agent-plan").description(`Create an AI agent billing plan: name, billing mode (wallet/credits/windows), rate card reference, allowance windows, markups, per-seat credit grants and overage stance. Past-limit usage is priced EITHER by overage_markup_percent over the base rates OR by overage_rate_card_id, a currency rate card whose own rates are the overage price \u2014 never both. Metered overage mints the plan's invoice container.`).requiredOption("--name <value>", `Human-readable resource name.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39617
|
+
|
|
39618
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39619
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39620
|
+
|
|
39621
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).requiredOption("--mode <value>", `Billing mode.
|
|
39622
|
+
|
|
39623
|
+
- wallet: Charges a monetary wallet.
|
|
39624
|
+
- credits: Consumes a credit balance.
|
|
39625
|
+
- windows: Meters weighted units against rolling allowances.`).addHelpText("after", `
|
|
39626
|
+
Examples:
|
|
39627
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode>
|
|
39628
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39629
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --output json`).action(async (opts) => {
|
|
39630
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39631
|
+
if (!ctx) {
|
|
39632
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39633
|
+
process.exit(1);
|
|
39634
|
+
}
|
|
39635
|
+
const args = {};
|
|
39636
|
+
if (opts.name !== void 0)
|
|
39637
|
+
args.name = opts.name;
|
|
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);
|
|
39660
|
+
await ctx.execute({
|
|
39661
|
+
method: "POST",
|
|
39662
|
+
path: "/v1/ai/billing/plans",
|
|
39663
|
+
args,
|
|
39664
|
+
queryParamKeys: []
|
|
39665
|
+
});
|
|
39666
|
+
});
|
|
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", `
|
|
39668
|
+
Examples:
|
|
39669
|
+
hyperline ai-billing get-agent-default-plan`).action(async (_opts) => {
|
|
39670
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39671
|
+
if (!ctx) {
|
|
39672
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39673
|
+
process.exit(1);
|
|
39674
|
+
}
|
|
39675
|
+
const args = {};
|
|
39676
|
+
await ctx.execute({
|
|
39677
|
+
method: "GET",
|
|
39678
|
+
path: "/v1/ai/billing/plans/default",
|
|
39679
|
+
args,
|
|
39680
|
+
queryParamKeys: []
|
|
39681
|
+
});
|
|
39682
|
+
});
|
|
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", `
|
|
39684
|
+
Examples:
|
|
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) => {
|
|
39688
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39689
|
+
if (!ctx) {
|
|
39690
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39691
|
+
process.exit(1);
|
|
39692
|
+
}
|
|
39693
|
+
const args = {};
|
|
39694
|
+
if (opts.planId !== void 0)
|
|
39695
|
+
args.plan_id = opts.planId;
|
|
39696
|
+
if (opts.autoApply !== void 0)
|
|
39697
|
+
args.auto_apply = true;
|
|
39698
|
+
await ctx.execute({
|
|
39699
|
+
method: "PUT",
|
|
39700
|
+
path: "/v1/ai/billing/plans/default",
|
|
39701
|
+
args,
|
|
39702
|
+
queryParamKeys: []
|
|
39703
|
+
});
|
|
39704
|
+
});
|
|
39705
|
+
resource.command("clear-agent-default-plan").description(`Clear the workspace's default AI agent billing plan marker. The plan itself is untouched. 404 when none is set.`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39706
|
+
Examples:
|
|
39707
|
+
hyperline ai-billing clear-agent-default-plan
|
|
39708
|
+
hyperline ai-billing clear-agent-default-plan --output json`).action(async (opts) => {
|
|
39709
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39710
|
+
if (!ctx) {
|
|
39711
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39712
|
+
process.exit(1);
|
|
39713
|
+
}
|
|
39714
|
+
const args = {};
|
|
39715
|
+
if (!opts.yes) {
|
|
39716
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39717
|
+
if (!confirmed) {
|
|
39718
|
+
process.stdout.write("Aborted.\n");
|
|
39719
|
+
return;
|
|
39720
|
+
}
|
|
39721
|
+
}
|
|
39722
|
+
await ctx.execute({
|
|
39723
|
+
method: "DELETE",
|
|
39724
|
+
path: "/v1/ai/billing/plans/default",
|
|
39725
|
+
args,
|
|
39726
|
+
queryParamKeys: []
|
|
39727
|
+
});
|
|
39728
|
+
});
|
|
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
|
+
}
|
|
39408
40474
|
await ctx.execute({
|
|
39409
|
-
method: "
|
|
39410
|
-
path: "/v1/
|
|
40475
|
+
method: "DELETE",
|
|
40476
|
+
path: "/v1/ai/billing/costs/overrides/{id}",
|
|
39411
40477
|
args,
|
|
39412
40478
|
queryParamKeys: []
|
|
39413
40479
|
});
|
|
39414
40480
|
});
|
|
39415
|
-
resource.command("
|
|
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", `
|
|
39416
40482
|
Examples:
|
|
39417
|
-
hyperline
|
|
39418
|
-
hyperline
|
|
40483
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions>
|
|
40484
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
39419
40485
|
const ctx = resource.parent?.opts()._ctx;
|
|
39420
40486
|
if (!ctx) {
|
|
39421
40487
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39424,65 +40490,69 @@ Examples:
|
|
|
39424
40490
|
const args = {};
|
|
39425
40491
|
if (opts.id !== void 0)
|
|
39426
40492
|
args.id = opts.id;
|
|
39427
|
-
if (opts.
|
|
39428
|
-
args.
|
|
39429
|
-
if (opts.
|
|
39430
|
-
args.
|
|
39431
|
-
if (opts.
|
|
39432
|
-
args.
|
|
39433
|
-
if (opts.groupBy !== void 0)
|
|
39434
|
-
args.group_by = opts.groupBy;
|
|
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);
|
|
39435
40499
|
await ctx.execute({
|
|
39436
|
-
method: "
|
|
39437
|
-
path: "/v1/
|
|
40500
|
+
method: "PUT",
|
|
40501
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
39438
40502
|
args,
|
|
39439
|
-
queryParamKeys: [
|
|
39440
|
-
"start_date",
|
|
39441
|
-
"end_date",
|
|
39442
|
-
"aggregator_filter_id",
|
|
39443
|
-
"group_by"
|
|
39444
|
-
]
|
|
40503
|
+
queryParamKeys: []
|
|
39445
40504
|
});
|
|
39446
40505
|
});
|
|
39447
|
-
|
|
40506
|
+
}
|
|
40507
|
+
|
|
40508
|
+
// build/commands/generated/ai-monitoring.js
|
|
40509
|
+
function registerAi_MonitoringCommands(parent) {
|
|
40510
|
+
const resource = parent.command("ai-monitoring").description("Manage ai > monitoring");
|
|
40511
|
+
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score, or by customer_id__in (up to 100 Hyperline IDs) for several customers; the first analysis per customer is its latest. Only completed analyses unless status is set.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--customer-id.in <value>", `Comma-separated list of up to 100 Hyperline customer IDs. Return only analyses of these customers. Cannot be combined with \`customer_id\`.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
|
|
39448
40512
|
Examples:
|
|
39449
|
-
hyperline
|
|
39450
|
-
hyperline
|
|
40513
|
+
hyperline ai-monitoring list-monitoring-analyses
|
|
40514
|
+
hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
39451
40515
|
const ctx = resource.parent?.opts()._ctx;
|
|
39452
40516
|
if (!ctx) {
|
|
39453
40517
|
process.stderr.write("Error: Not authenticated\n");
|
|
39454
40518
|
process.exit(1);
|
|
39455
40519
|
}
|
|
39456
40520
|
const args = {};
|
|
39457
|
-
if (opts.
|
|
39458
|
-
args.
|
|
39459
|
-
if (opts.
|
|
39460
|
-
args.
|
|
39461
|
-
if (opts.
|
|
39462
|
-
args.
|
|
39463
|
-
if (opts.
|
|
39464
|
-
args.
|
|
39465
|
-
if (opts.
|
|
39466
|
-
args.
|
|
39467
|
-
if (opts.
|
|
39468
|
-
args.
|
|
40521
|
+
if (opts.cursor !== void 0)
|
|
40522
|
+
args.cursor = opts.cursor;
|
|
40523
|
+
if (opts.includeTotal !== void 0)
|
|
40524
|
+
args.include_total = opts.includeTotal;
|
|
40525
|
+
if (opts.customerId !== void 0)
|
|
40526
|
+
args.customer_id = opts.customerId;
|
|
40527
|
+
if (opts["customerId.in"] !== void 0)
|
|
40528
|
+
args.customer_id__in = opts["customerId.in"];
|
|
40529
|
+
if (opts.status !== void 0)
|
|
40530
|
+
args.status = opts.status;
|
|
40531
|
+
if (opts["createdAt.gte"] !== void 0)
|
|
40532
|
+
args.created_at__gte = opts["createdAt.gte"];
|
|
40533
|
+
if (opts["createdAt.lte"] !== void 0)
|
|
40534
|
+
args.created_at__lte = opts["createdAt.lte"];
|
|
40535
|
+
if (opts.limit !== void 0)
|
|
40536
|
+
args.limit = Number(opts.limit);
|
|
39469
40537
|
await ctx.execute({
|
|
39470
40538
|
method: "GET",
|
|
39471
|
-
path: "/v1/
|
|
40539
|
+
path: "/v1/agents/monitoring/analyses",
|
|
39472
40540
|
args,
|
|
39473
40541
|
queryParamKeys: [
|
|
39474
|
-
"
|
|
39475
|
-
"
|
|
39476
|
-
"
|
|
39477
|
-
"
|
|
39478
|
-
"
|
|
40542
|
+
"limit",
|
|
40543
|
+
"cursor",
|
|
40544
|
+
"include_total",
|
|
40545
|
+
"customer_id",
|
|
40546
|
+
"customer_id__in",
|
|
40547
|
+
"status",
|
|
40548
|
+
"created_at__gte",
|
|
40549
|
+
"created_at__lte"
|
|
39479
40550
|
]
|
|
39480
40551
|
});
|
|
39481
40552
|
});
|
|
39482
|
-
resource.command("get-
|
|
40553
|
+
resource.command("get-monitoring-analysis").description(`Get one customer health analysis by ID: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39483
40554
|
Examples:
|
|
39484
|
-
hyperline
|
|
39485
|
-
hyperline aggregators-usage get-aggregator-usage-events --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
40555
|
+
hyperline ai-monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
|
|
39486
40556
|
const ctx = resource.parent?.opts()._ctx;
|
|
39487
40557
|
if (!ctx) {
|
|
39488
40558
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39491,27 +40561,11 @@ Examples:
|
|
|
39491
40561
|
const args = {};
|
|
39492
40562
|
if (opts.id !== void 0)
|
|
39493
40563
|
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.take !== void 0)
|
|
39501
|
-
args.take = Number(opts.take);
|
|
39502
|
-
if (opts.skip !== void 0)
|
|
39503
|
-
args.skip = Number(opts.skip);
|
|
39504
40564
|
await ctx.execute({
|
|
39505
40565
|
method: "GET",
|
|
39506
|
-
path: "/v1/
|
|
40566
|
+
path: "/v1/agents/monitoring/analyses/{id}",
|
|
39507
40567
|
args,
|
|
39508
|
-
queryParamKeys: [
|
|
39509
|
-
"start_date",
|
|
39510
|
-
"end_date",
|
|
39511
|
-
"aggregator_filter_id",
|
|
39512
|
-
"take",
|
|
39513
|
-
"skip"
|
|
39514
|
-
]
|
|
40568
|
+
queryParamKeys: []
|
|
39515
40569
|
});
|
|
39516
40570
|
});
|
|
39517
40571
|
}
|
|
@@ -39675,7 +40729,7 @@ Examples:
|
|
|
39675
40729
|
queryParamKeys: ["take", "skip"]
|
|
39676
40730
|
});
|
|
39677
40731
|
});
|
|
39678
|
-
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `
|
|
40732
|
+
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
39679
40733
|
Examples:
|
|
39680
40734
|
hyperline coupons create --name <name> --type <type>
|
|
39681
40735
|
hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -39692,6 +40746,8 @@ Examples:
|
|
|
39692
40746
|
args.description = opts.description;
|
|
39693
40747
|
if (opts.expirationDate !== void 0)
|
|
39694
40748
|
args.expiration_date = opts.expirationDate;
|
|
40749
|
+
if (opts.productScope !== void 0)
|
|
40750
|
+
args.product_scope = opts.productScope;
|
|
39695
40751
|
if (opts.repeat !== void 0)
|
|
39696
40752
|
args.repeat = opts.repeat;
|
|
39697
40753
|
if (opts.type !== void 0)
|
|
@@ -39708,6 +40764,8 @@ Examples:
|
|
|
39708
40764
|
args.product_ids = JSON.parse(opts.productIds);
|
|
39709
40765
|
if (opts.duration !== void 0)
|
|
39710
40766
|
args.duration = JSON.parse(opts.duration);
|
|
40767
|
+
if (opts.properties !== void 0)
|
|
40768
|
+
args.properties = JSON.parse(opts.properties);
|
|
39711
40769
|
await ctx.execute({
|
|
39712
40770
|
method: "POST",
|
|
39713
40771
|
path: "/v1/coupons",
|
|
@@ -39733,7 +40791,7 @@ Examples:
|
|
|
39733
40791
|
queryParamKeys: []
|
|
39734
40792
|
});
|
|
39735
40793
|
});
|
|
39736
|
-
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `
|
|
40794
|
+
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
39737
40795
|
Examples:
|
|
39738
40796
|
hyperline coupons update --id <id> --name <name> --type <type>
|
|
39739
40797
|
hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -39752,6 +40810,8 @@ Examples:
|
|
|
39752
40810
|
args.description = opts.description;
|
|
39753
40811
|
if (opts.expirationDate !== void 0)
|
|
39754
40812
|
args.expiration_date = opts.expirationDate;
|
|
40813
|
+
if (opts.productScope !== void 0)
|
|
40814
|
+
args.product_scope = opts.productScope;
|
|
39755
40815
|
if (opts.repeat !== void 0)
|
|
39756
40816
|
args.repeat = opts.repeat;
|
|
39757
40817
|
if (opts.type !== void 0)
|
|
@@ -39768,6 +40828,8 @@ Examples:
|
|
|
39768
40828
|
args.product_ids = JSON.parse(opts.productIds);
|
|
39769
40829
|
if (opts.duration !== void 0)
|
|
39770
40830
|
args.duration = JSON.parse(opts.duration);
|
|
40831
|
+
if (opts.properties !== void 0)
|
|
40832
|
+
args.properties = JSON.parse(opts.properties);
|
|
39771
40833
|
await ctx.execute({
|
|
39772
40834
|
method: "PUT",
|
|
39773
40835
|
path: "/v1/coupons/{id}",
|
|
@@ -39999,7 +41061,7 @@ Examples:
|
|
|
39999
41061
|
queryParamKeys: []
|
|
40000
41062
|
});
|
|
40001
41063
|
});
|
|
40002
|
-
resource.command("create-custom-property").description(`Create a new custom property definition with a name, type (
|
|
41064
|
+
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", `
|
|
40003
41065
|
Examples:
|
|
40004
41066
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities>
|
|
40005
41067
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -40024,6 +41086,8 @@ Examples:
|
|
|
40024
41086
|
args.entities = JSON.parse(opts.entities);
|
|
40025
41087
|
if (opts.authorizedValues !== void 0)
|
|
40026
41088
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
41089
|
+
if (opts.defaultValue !== void 0)
|
|
41090
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
40027
41091
|
await ctx.execute({
|
|
40028
41092
|
method: "POST",
|
|
40029
41093
|
path: "/v1/custom-properties",
|
|
@@ -40031,7 +41095,7 @@ Examples:
|
|
|
40031
41095
|
queryParamKeys: []
|
|
40032
41096
|
});
|
|
40033
41097
|
});
|
|
40034
|
-
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", `
|
|
41098
|
+
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", `
|
|
40035
41099
|
Examples:
|
|
40036
41100
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities>
|
|
40037
41101
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -40058,6 +41122,8 @@ Examples:
|
|
|
40058
41122
|
args.entities = JSON.parse(opts.entities);
|
|
40059
41123
|
if (opts.authorizedValues !== void 0)
|
|
40060
41124
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
41125
|
+
if (opts.defaultValue !== void 0)
|
|
41126
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
40061
41127
|
await ctx.execute({
|
|
40062
41128
|
method: "PUT",
|
|
40063
41129
|
path: "/v1/custom-properties/{id}",
|
|
@@ -40096,7 +41162,15 @@ Examples:
|
|
|
40096
41162
|
// build/commands/generated/customers.js
|
|
40097
41163
|
function registerCustomersCommands(parent) {
|
|
40098
41164
|
const resource = parent.command("customers").description("Manage customers");
|
|
40099
|
-
resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--
|
|
41165
|
+
resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, tax_id_status, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--tax-id-status <value>", `
|
|
41166
|
+
Verification status of the customer tax ID.
|
|
41167
|
+
|
|
41168
|
+
- \`valid\`: Tax ID has been verified and is valid.
|
|
41169
|
+
- \`invalid\`: Tax ID has been verified and is invalid.
|
|
41170
|
+
- \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
|
|
41171
|
+
- \`unverified\`: Tax ID has not been verified yet.
|
|
41172
|
+
- \`unsupported\`: Tax ID verification for this type not supported yet.
|
|
41173
|
+
`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--country <value>", `country`).option("--country.not <value>", `country__not`).option("--country.is-null <value>", `country__isNull`).option("--country.is-not-null <value>", `country__isNotNull`).option("--country.equals <value>", `country__equals`).option("--country.contains <value>", `country__contains`).option("--country.starts-with <value>", `country__startsWith`).option("--country.end-with <value>", `country__endWith`).option("--external-id <value>", `external_id`).option("--external-id.not <value>", `external_id__not`).option("--external-id.is-null <value>", `external_id__isNull`).option("--external-id.is-not-null <value>", `external_id__isNotNull`).option("--external-id.equals <value>", `external_id__equals`).option("--external-id.contains <value>", `external_id__contains`).option("--external-id.starts-with <value>", `external_id__startsWith`).option("--external-id.end-with <value>", `external_id__endWith`).option("--billing-email <value>", `billing_email`).option("--billing-email.not <value>", `billing_email__not`).option("--billing-email.is-null <value>", `billing_email__isNull`).option("--billing-email.is-not-null <value>", `billing_email__isNotNull`).option("--billing-email.equals <value>", `billing_email__equals`).option("--billing-email.contains <value>", `billing_email__contains`).option("--billing-email.starts-with <value>", `billing_email__startsWith`).option("--billing-email.end-with <value>", `billing_email__endWith`).option("--search <value>", `search`).option("--tax-id <value>", `tax_id`).option("--tax-id.not <value>", `tax_id__not`).option("--tax-id.is-null <value>", `tax_id__isNull`).option("--tax-id.is-not-null <value>", `tax_id__isNotNull`).option("--tax-id.equals <value>", `tax_id__equals`).option("--tax-id.contains <value>", `tax_id__contains`).option("--tax-id.starts-with <value>", `tax_id__startsWith`).option("--tax-id.end-with <value>", `tax_id__endWith`).option("--subscription-status <value>", `subscription_status`).option("--subscription-status.in <value>", `subscription_status__in`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.is-null <value>", `invoicing_entity_id__isNull`).option("--invoicing-entity-id.is-not-null <value>", `invoicing_entity_id__isNotNull`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--segment-id <value>", `segment_id`).option("--custom-properties <value>", `custom_properties`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-type.in <value>", `payment_method_type__in`).option("--integration-entity-id <value>", `integration_entity_id`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.is-null <value>", `created_at__isNull`).option("--created-at.is-not-null <value>", `created_at__isNotNull`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
40100
41174
|
Examples:
|
|
40101
41175
|
hyperline customers list
|
|
40102
41176
|
hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
@@ -40114,6 +41188,8 @@ Examples:
|
|
|
40114
41188
|
args.order = opts.order;
|
|
40115
41189
|
if (opts.sort !== void 0)
|
|
40116
41190
|
args.sort = opts.sort;
|
|
41191
|
+
if (opts.taxIdStatus !== void 0)
|
|
41192
|
+
args.tax_id_status = opts.taxIdStatus;
|
|
40117
41193
|
if (opts.name !== void 0)
|
|
40118
41194
|
args.name = opts.name;
|
|
40119
41195
|
if (opts["name.not"] !== void 0)
|
|
@@ -40298,6 +41374,7 @@ Examples:
|
|
|
40298
41374
|
"include_total",
|
|
40299
41375
|
"order",
|
|
40300
41376
|
"sort",
|
|
41377
|
+
"tax_id_status",
|
|
40301
41378
|
"name",
|
|
40302
41379
|
"name__not",
|
|
40303
41380
|
"name__isNull",
|
|
@@ -40415,7 +41492,7 @@ Customer type.
|
|
|
40415
41492
|
|
|
40416
41493
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
40417
41494
|
- \`exempt\`: The customer is exempt from tax.
|
|
40418
|
-
`).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>", `
|
|
41495
|
+
`).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>", `
|
|
40419
41496
|
How customer invoices are issued from the parent organisation.
|
|
40420
41497
|
|
|
40421
41498
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
@@ -40444,6 +41521,8 @@ Examples:
|
|
|
40444
41521
|
args.taxability = opts.taxability;
|
|
40445
41522
|
if (opts.registrationNumber !== void 0)
|
|
40446
41523
|
args.registration_number = opts.registrationNumber;
|
|
41524
|
+
if (opts.einvoicingCode !== void 0)
|
|
41525
|
+
args.einvoicing_code = opts.einvoicingCode;
|
|
40447
41526
|
if (opts.externalId !== void 0)
|
|
40448
41527
|
args.external_id = opts.externalId;
|
|
40449
41528
|
if (opts.domain !== void 0)
|
|
@@ -40550,7 +41629,7 @@ Customer type.
|
|
|
40550
41629
|
|
|
40551
41630
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
40552
41631
|
- \`exempt\`: The customer is exempt from tax.
|
|
40553
|
-
`).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>", `
|
|
41632
|
+
`).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>", `
|
|
40554
41633
|
How customer invoices are issued from the parent organisation.
|
|
40555
41634
|
|
|
40556
41635
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
@@ -40581,6 +41660,8 @@ Examples:
|
|
|
40581
41660
|
args.taxability = opts.taxability;
|
|
40582
41661
|
if (opts.registrationNumber !== void 0)
|
|
40583
41662
|
args.registration_number = opts.registrationNumber;
|
|
41663
|
+
if (opts.einvoicingCode !== void 0)
|
|
41664
|
+
args.einvoicing_code = opts.einvoicingCode;
|
|
40584
41665
|
if (opts.externalId !== void 0)
|
|
40585
41666
|
args.external_id = opts.externalId;
|
|
40586
41667
|
if (opts.domain !== void 0)
|
|
@@ -40834,7 +41915,7 @@ Examples:
|
|
|
40834
41915
|
queryParamKeys: []
|
|
40835
41916
|
});
|
|
40836
41917
|
});
|
|
40837
|
-
resource.command("create-customer-address").description(`Create a shipping address with type shipping; billing creation is rejected because a customer can have at most one billing address, managed through the customer endpoint.`).requiredOption("--customer-id <value>", `customerId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).
|
|
41918
|
+
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", `
|
|
40838
41919
|
Examples:
|
|
40839
41920
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
|
|
40840
41921
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
|
|
@@ -40847,6 +41928,8 @@ Examples:
|
|
|
40847
41928
|
const args = {};
|
|
40848
41929
|
if (opts.customerId !== void 0)
|
|
40849
41930
|
args.customerId = opts.customerId;
|
|
41931
|
+
if (opts.type !== void 0)
|
|
41932
|
+
args.type = opts.type;
|
|
40850
41933
|
if (opts.name !== void 0)
|
|
40851
41934
|
args.name = opts.name;
|
|
40852
41935
|
if (opts.line1 !== void 0)
|
|
@@ -40861,8 +41944,8 @@ Examples:
|
|
|
40861
41944
|
args.state = opts.state;
|
|
40862
41945
|
if (opts.country !== void 0)
|
|
40863
41946
|
args.country = opts.country;
|
|
40864
|
-
if (opts.
|
|
40865
|
-
args.
|
|
41947
|
+
if (opts.taxId !== void 0)
|
|
41948
|
+
args.tax_id = opts.taxId;
|
|
40866
41949
|
await ctx.execute({
|
|
40867
41950
|
method: "POST",
|
|
40868
41951
|
path: "/v1/customers/{customerId}/addresses",
|
|
@@ -40870,7 +41953,7 @@ Examples:
|
|
|
40870
41953
|
queryParamKeys: []
|
|
40871
41954
|
});
|
|
40872
41955
|
});
|
|
40873
|
-
resource.command("update-customer-address").description(`Update a billing or shipping address by ID; billing changes also update the customer billing-address projection.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `Only for US country. Second part of subdivision code in ISO format. See [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US).`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).addHelpText("after", `
|
|
41956
|
+
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", `
|
|
40874
41957
|
Examples:
|
|
40875
41958
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
|
|
40876
41959
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
|
|
@@ -40899,6 +41982,8 @@ Examples:
|
|
|
40899
41982
|
args.state = opts.state;
|
|
40900
41983
|
if (opts.country !== void 0)
|
|
40901
41984
|
args.country = opts.country;
|
|
41985
|
+
if (opts.taxId !== void 0)
|
|
41986
|
+
args.tax_id = opts.taxId;
|
|
40902
41987
|
await ctx.execute({
|
|
40903
41988
|
method: "PATCH",
|
|
40904
41989
|
path: "/v1/customers/{customerId}/addresses/{addressId}",
|
|
@@ -41081,7 +42166,7 @@ Examples:
|
|
|
41081
42166
|
queryParamKeys: []
|
|
41082
42167
|
});
|
|
41083
42168
|
});
|
|
41084
|
-
resource.command("list-customer-credit-transactions").description(`List all transactions (
|
|
42169
|
+
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", `
|
|
41085
42170
|
Examples:
|
|
41086
42171
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId>
|
|
41087
42172
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId> --take <take> --type <type>`).action(async (opts) => {
|
|
@@ -41170,7 +42255,7 @@ Examples:
|
|
|
41170
42255
|
queryParamKeys: []
|
|
41171
42256
|
});
|
|
41172
42257
|
});
|
|
41173
|
-
resource.command("purchase-customer-credits").description(`Purchase credits for a customer. This generates an invoice and charges the customer. Returns the invoice ID and new balance.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--credit-count <number>", `Value indicating a number of credits to add. If \`price_id\` is defined, this value must correspond to a full credit pack for the price.`).option("--amount-excluding-tax <number>", `Custom amount for the added credits. Either \`amount_excluding_tax\` or \`price_id\` must be defined. Expressed in currency's smallest unit.`).option("--price-id <value>", `Price ID used to add credits. The price must be of type \`bundle\`. Either \`amount_excluding_tax\` or \`price_id\` must be defined.`).option("--expires-at <value>", `Expiration date for credits linked to this transaction. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
|
|
42258
|
+
resource.command("purchase-customer-credits").description(`Purchase credits for a customer. This generates an invoice and charges the customer's card immediately, granting the credits only once paid. Requires a card payment method (otherwise fails with reason \`payment_method_not_supported\`). Returns the invoice ID and new balance.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--credit-count <number>", `Value indicating a number of credits to add. If \`price_id\` is defined, this value must correspond to a full credit pack for the price.`).option("--amount-excluding-tax <number>", `Custom amount for the added credits. Either \`amount_excluding_tax\` or \`price_id\` must be defined. Expressed in currency's smallest unit.`).option("--price-id <value>", `Price ID used to add credits. The price must be of type \`bundle\`. Either \`amount_excluding_tax\` or \`price_id\` must be defined.`).option("--expires-at <value>", `Expiration date for credits linked to this transaction. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
|
|
41174
42259
|
Examples:
|
|
41175
42260
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count>
|
|
41176
42261
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count> --amount-excluding-tax <amount_excluding_tax> --price-id <price_id>
|
|
@@ -41252,6 +42337,54 @@ Examples:
|
|
|
41252
42337
|
queryParamKeys: []
|
|
41253
42338
|
});
|
|
41254
42339
|
});
|
|
42340
|
+
resource.command("get-customer-credit-portal-settings").description(`Get whether a customer can top up a credit product from the customer portal, at which price, and which prices can be selected.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).addHelpText("after", `
|
|
42341
|
+
Examples:
|
|
42342
|
+
hyperline customers-credits get-customer-credit-portal-settings --id <id> --product-id <productId>`).action(async (opts) => {
|
|
42343
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42344
|
+
if (!ctx) {
|
|
42345
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42346
|
+
process.exit(1);
|
|
42347
|
+
}
|
|
42348
|
+
const args = {};
|
|
42349
|
+
if (opts.id !== void 0)
|
|
42350
|
+
args.id = opts.id;
|
|
42351
|
+
if (opts.productId !== void 0)
|
|
42352
|
+
args.productId = opts.productId;
|
|
42353
|
+
await ctx.execute({
|
|
42354
|
+
method: "GET",
|
|
42355
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42356
|
+
args,
|
|
42357
|
+
queryParamKeys: []
|
|
42358
|
+
});
|
|
42359
|
+
});
|
|
42360
|
+
resource.command("update-customer-credit-portal-settings").description(`Enable or disable customer portal credit top-ups for a customer and credit product, with the price configuration (or a custom price) the customer pays. Enabling requires the customer's credit balance for the product: create it first (createCustomerCredit, a 0 balance is fine).`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--enabled", `Whether the customer can buy this credit product from the customer portal. Enabling requires a price: \`price_configuration_id\`, \`custom_price_configuration\`, or the price already set. Disabling clears the price and removes the customer's own price.`).option("--price-configuration-id <value>", `ID of one of the credit product's price configurations, in the customer's price book and currency, of type \`bundle\`, \`volume\` or \`bulk\`. Mutually exclusive with \`custom_price_configuration\`.`).option("--custom-price-configuration <json>", `A price of the customer's own, in the customer's currency, replacing any previous one. Same shape as a credit product price configuration. Mutually exclusive with \`price_configuration_id\`. It needs at least one price; \`unit_count\` is a whole number of at least 1; \`amount\` is never negative, a \`bundle\` pack is never free, and the price is not free altogether; volume tiers start at 0 and each starts where the previous one ends; bulk tiers are in increasing \`to\` order; only the last tier has \`to: null\`. Otherwise the request fails with reason \`invalid_custom_price\`.`).addHelpText("after", `
|
|
42361
|
+
Examples:
|
|
42362
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
|
|
42363
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --price-configuration-id <price_configuration_id> --custom-price-configuration <custom_price_configuration>
|
|
42364
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --output json`).action(async (opts) => {
|
|
42365
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42366
|
+
if (!ctx) {
|
|
42367
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42368
|
+
process.exit(1);
|
|
42369
|
+
}
|
|
42370
|
+
const args = {};
|
|
42371
|
+
if (opts.id !== void 0)
|
|
42372
|
+
args.id = opts.id;
|
|
42373
|
+
if (opts.productId !== void 0)
|
|
42374
|
+
args.productId = opts.productId;
|
|
42375
|
+
if (opts.priceConfigurationId !== void 0)
|
|
42376
|
+
args.price_configuration_id = opts.priceConfigurationId;
|
|
42377
|
+
if (opts.enabled !== void 0)
|
|
42378
|
+
args.enabled = true;
|
|
42379
|
+
if (opts.customPriceConfiguration !== void 0)
|
|
42380
|
+
args.custom_price_configuration = JSON.parse(opts.customPriceConfiguration);
|
|
42381
|
+
await ctx.execute({
|
|
42382
|
+
method: "PUT",
|
|
42383
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42384
|
+
args,
|
|
42385
|
+
queryParamKeys: []
|
|
42386
|
+
});
|
|
42387
|
+
});
|
|
41255
42388
|
}
|
|
41256
42389
|
|
|
41257
42390
|
// build/commands/generated/customers-payment-methods.js
|
|
@@ -42207,7 +43340,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
|
|
|
42207
43340
|
|
|
42208
43341
|
- \`current\`: Use the current default payment method of the customer.
|
|
42209
43342
|
- \`external\`: Manage the payment of the invoice outside of Hyperline.
|
|
42210
|
-
`).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", `
|
|
43343
|
+
`).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", `
|
|
42211
43344
|
Examples:
|
|
42212
43345
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
|
|
42213
43346
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
|
|
@@ -42258,6 +43391,8 @@ Examples:
|
|
|
42258
43391
|
args.due_at = opts.dueAt;
|
|
42259
43392
|
if (opts.settledAt !== void 0)
|
|
42260
43393
|
args.settled_at = opts.settledAt;
|
|
43394
|
+
if (opts.issuingMethod !== void 0)
|
|
43395
|
+
args.issuing_method = opts.issuingMethod;
|
|
42261
43396
|
if (opts.properties !== void 0)
|
|
42262
43397
|
args.properties = JSON.parse(opts.properties);
|
|
42263
43398
|
if (opts.customProperties !== void 0)
|
|
@@ -42379,7 +43514,7 @@ Examples:
|
|
|
42379
43514
|
queryParamKeys: []
|
|
42380
43515
|
});
|
|
42381
43516
|
});
|
|
42382
|
-
resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
|
|
43517
|
+
resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. A zero-priced paid invoice can also be voided, without a credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
|
|
42383
43518
|
Examples:
|
|
42384
43519
|
hyperline invoices void --id <id>
|
|
42385
43520
|
hyperline invoices void --id <id> --send-email
|
|
@@ -42447,7 +43582,7 @@ Examples:
|
|
|
42447
43582
|
|
|
42448
43583
|
- \`auto\`: Tax is automatically computed and applied.
|
|
42449
43584
|
- \`not_eligible\`: Tax collection is disabled for the invoice.
|
|
42450
|
-
`).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", `
|
|
43585
|
+
`).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", `
|
|
42451
43586
|
Examples:
|
|
42452
43587
|
hyperline invoices update --id <id>
|
|
42453
43588
|
hyperline invoices update --id <id> --type <type> --document-name <document_name>
|
|
@@ -42476,6 +43611,10 @@ Examples:
|
|
|
42476
43611
|
args.footer = opts.footer;
|
|
42477
43612
|
if (opts.taxScheme !== void 0)
|
|
42478
43613
|
args.tax_scheme = opts.taxScheme;
|
|
43614
|
+
if (opts.issuingMethod !== void 0)
|
|
43615
|
+
args.issuing_method = opts.issuingMethod;
|
|
43616
|
+
if (opts.emittedAt !== void 0)
|
|
43617
|
+
args.emitted_at = opts.emittedAt;
|
|
42479
43618
|
if (opts.paymentMethodType !== void 0)
|
|
42480
43619
|
args.payment_method_type = opts.paymentMethodType;
|
|
42481
43620
|
if (opts.paymentMethodId !== void 0)
|
|
@@ -42684,7 +43823,7 @@ Examples:
|
|
|
42684
43823
|
queryParamKeys: []
|
|
42685
43824
|
});
|
|
42686
43825
|
});
|
|
42687
|
-
resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity
|
|
43826
|
+
resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
|
|
42688
43827
|
Examples:
|
|
42689
43828
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
42690
43829
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -42767,6 +43906,8 @@ Examples:
|
|
|
42767
43906
|
args.credit_note_wallet_refund_enabled = true;
|
|
42768
43907
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
42769
43908
|
args.standalone_credit_note_creation_enabled = true;
|
|
43909
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43910
|
+
args.fx_conversion_display_enabled = true;
|
|
42770
43911
|
await ctx.execute({
|
|
42771
43912
|
method: "POST",
|
|
42772
43913
|
path: "/v1/invoicing-entities",
|
|
@@ -42774,7 +43915,7 @@ Examples:
|
|
|
42774
43915
|
queryParamKeys: []
|
|
42775
43916
|
});
|
|
42776
43917
|
});
|
|
42777
|
-
resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity
|
|
43918
|
+
resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
|
|
42778
43919
|
Examples:
|
|
42779
43920
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
42780
43921
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -42849,6 +43990,8 @@ Examples:
|
|
|
42849
43990
|
args.credit_note_wallet_refund_enabled = true;
|
|
42850
43991
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
42851
43992
|
args.standalone_credit_note_creation_enabled = true;
|
|
43993
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43994
|
+
args.fx_conversion_display_enabled = true;
|
|
42852
43995
|
await ctx.execute({
|
|
42853
43996
|
method: "PUT",
|
|
42854
43997
|
path: "/v1/invoicing-entities/{id}",
|
|
@@ -43169,6 +44312,46 @@ Examples:
|
|
|
43169
44312
|
queryParamKeys: []
|
|
43170
44313
|
});
|
|
43171
44314
|
});
|
|
44315
|
+
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--aggregator-filter-id <value>", `ID of an existing metering filter of the product's aggregator to attach to this price configuration, instead of creating a new one with \`metering_filter\`.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44316
|
+
Examples:
|
|
44317
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
|
|
44318
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --countries <countries> --price-book-id <price_book_id>
|
|
44319
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --output json`).action(async (opts) => {
|
|
44320
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44321
|
+
if (!ctx) {
|
|
44322
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44323
|
+
process.exit(1);
|
|
44324
|
+
}
|
|
44325
|
+
const args = {};
|
|
44326
|
+
if (opts.currency !== void 0)
|
|
44327
|
+
args.currency = opts.currency;
|
|
44328
|
+
if (opts.priceBookId !== void 0)
|
|
44329
|
+
args.price_book_id = opts.priceBookId;
|
|
44330
|
+
if (opts.type !== void 0)
|
|
44331
|
+
args.type = opts.type;
|
|
44332
|
+
if (opts.productId !== void 0)
|
|
44333
|
+
args.product_id = opts.productId;
|
|
44334
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
44335
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
44336
|
+
if (opts.allowOnPortal !== void 0)
|
|
44337
|
+
args.allow_on_portal = true;
|
|
44338
|
+
if (opts.countries !== void 0)
|
|
44339
|
+
args.countries = JSON.parse(opts.countries);
|
|
44340
|
+
if (opts.billingInterval !== void 0)
|
|
44341
|
+
args.billing_interval = JSON.parse(opts.billingInterval);
|
|
44342
|
+
if (opts.commitmentInterval !== void 0)
|
|
44343
|
+
args.commitment_interval = JSON.parse(opts.commitmentInterval);
|
|
44344
|
+
if (opts.prices !== void 0)
|
|
44345
|
+
args.prices = JSON.parse(opts.prices);
|
|
44346
|
+
if (opts.meteringFilter !== void 0)
|
|
44347
|
+
args.metering_filter = JSON.parse(opts.meteringFilter);
|
|
44348
|
+
await ctx.execute({
|
|
44349
|
+
method: "POST",
|
|
44350
|
+
path: "/v1/price-configurations",
|
|
44351
|
+
args,
|
|
44352
|
+
queryParamKeys: []
|
|
44353
|
+
});
|
|
44354
|
+
});
|
|
43172
44355
|
resource.command("update-prices").description(`Update the prices of an existing price configuration by ID. Allows changing tier thresholds, unit prices, and flat fees.`).requiredOption("--id <value>", `id parameter`).option("--stdin", `Read JSON array input from stdin`).addHelpText("after", `
|
|
43173
44356
|
Examples:
|
|
43174
44357
|
hyperline price-configurations update-prices --id <id>
|
|
@@ -43563,12 +44746,12 @@ Quote status.
|
|
|
43563
44746
|
- \`draft\`: The quote is a draft.
|
|
43564
44747
|
- \`approved\`: The quote is approved and ready to be sent to the customer.
|
|
43565
44748
|
- \`pending_signature\`: The quote is awaiting the customer's signature.
|
|
43566
|
-
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44749
|
+
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
43567
44750
|
|
|
43568
44751
|
- \`all\`: Display all pricing tiers.
|
|
43569
44752
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
43570
44753
|
- \`none\`: Hide all pricing tiers.
|
|
43571
|
-
`).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("--
|
|
44754
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
43572
44755
|
Examples:
|
|
43573
44756
|
hyperline quotes create --customer-id <customer_id>
|
|
43574
44757
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -43607,12 +44790,14 @@ Examples:
|
|
|
43607
44790
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
43608
44791
|
if (opts.displayPhaseValue !== void 0)
|
|
43609
44792
|
args.display_phase_value = opts.displayPhaseValue;
|
|
44793
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
44794
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
43610
44795
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
43611
44796
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
43612
44797
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
43613
44798
|
args.display_documents_in_preview = opts.displayDocumentsInPreview;
|
|
43614
|
-
if (opts.
|
|
43615
|
-
args.
|
|
44799
|
+
if (opts.subscriptionUpdateDisplay !== void 0)
|
|
44800
|
+
args.subscription_update_display = opts.subscriptionUpdateDisplay;
|
|
43616
44801
|
if (opts.generateDraftInvoices !== void 0)
|
|
43617
44802
|
args.generate_draft_invoices = opts.generateDraftInvoices;
|
|
43618
44803
|
if (opts.templateId !== void 0)
|
|
@@ -43621,6 +44806,8 @@ Examples:
|
|
|
43621
44806
|
args.expires_at = opts.expiresAt;
|
|
43622
44807
|
if (opts.amount !== void 0)
|
|
43623
44808
|
args.amount = Number(opts.amount);
|
|
44809
|
+
if (opts.contractValue !== void 0)
|
|
44810
|
+
args.contract_value = Number(opts.contractValue);
|
|
43624
44811
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
43625
44812
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
43626
44813
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -43636,7 +44823,7 @@ Examples:
|
|
|
43636
44823
|
queryParamKeys: []
|
|
43637
44824
|
});
|
|
43638
44825
|
});
|
|
43639
|
-
resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.is-null <value>", `number__isNull`).option("--number.is-not-null <value>", `number__isNotNull`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--type <value>", `type`).option("--
|
|
44826
|
+
resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.is-null <value>", `number__isNull`).option("--number.is-not-null <value>", `number__isNotNull`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--type <value>", `type`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
43640
44827
|
Examples:
|
|
43641
44828
|
hyperline quotes list
|
|
43642
44829
|
hyperline quotes list --take <take> --id <id>`).action(async (opts) => {
|
|
@@ -43732,20 +44919,6 @@ Examples:
|
|
|
43732
44919
|
args.crm_opportunity_id__endWith = opts["crmOpportunityId.endWith"];
|
|
43733
44920
|
if (opts.type !== void 0)
|
|
43734
44921
|
args.type = opts.type;
|
|
43735
|
-
if (opts["type.not"] !== void 0)
|
|
43736
|
-
args.type__not = opts["type.not"];
|
|
43737
|
-
if (opts["type.isNull"] !== void 0)
|
|
43738
|
-
args.type__isNull = opts["type.isNull"];
|
|
43739
|
-
if (opts["type.isNotNull"] !== void 0)
|
|
43740
|
-
args.type__isNotNull = opts["type.isNotNull"];
|
|
43741
|
-
if (opts["type.equals"] !== void 0)
|
|
43742
|
-
args.type__equals = opts["type.equals"];
|
|
43743
|
-
if (opts["type.contains"] !== void 0)
|
|
43744
|
-
args.type__contains = opts["type.contains"];
|
|
43745
|
-
if (opts["type.startsWith"] !== void 0)
|
|
43746
|
-
args.type__startsWith = opts["type.startsWith"];
|
|
43747
|
-
if (opts["type.endWith"] !== void 0)
|
|
43748
|
-
args.type__endWith = opts["type.endWith"];
|
|
43749
44922
|
if (opts.updatedAt !== void 0)
|
|
43750
44923
|
args.updated_at = opts.updatedAt;
|
|
43751
44924
|
if (opts["updatedAt.not"] !== void 0)
|
|
@@ -43818,13 +44991,6 @@ Examples:
|
|
|
43818
44991
|
"crm_opportunity_id__startsWith",
|
|
43819
44992
|
"crm_opportunity_id__endWith",
|
|
43820
44993
|
"type",
|
|
43821
|
-
"type__not",
|
|
43822
|
-
"type__isNull",
|
|
43823
|
-
"type__isNotNull",
|
|
43824
|
-
"type__equals",
|
|
43825
|
-
"type__contains",
|
|
43826
|
-
"type__startsWith",
|
|
43827
|
-
"type__endWith",
|
|
43828
44994
|
"updated_at",
|
|
43829
44995
|
"updated_at__not",
|
|
43830
44996
|
"updated_at__isNull",
|
|
@@ -43855,12 +45021,12 @@ Examples:
|
|
|
43855
45021
|
queryParamKeys: []
|
|
43856
45022
|
});
|
|
43857
45023
|
});
|
|
43858
|
-
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
45024
|
+
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--contract-value <number>", `What the customer pays over the contract, each coupon counted on the invoices it applies to. Computed from the subscription for \`subscription\` and \`subscription_update\` quotes, unless set manually. Not set on \`one_off\` quotes. When specified, overrides the computed value. Set to \`null\` to go back to the computed value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
43859
45025
|
|
|
43860
45026
|
- \`all\`: Display all pricing tiers.
|
|
43861
45027
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
43862
45028
|
- \`none\`: Hide all pricing tiers.
|
|
43863
|
-
`).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("--
|
|
45029
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
43864
45030
|
Examples:
|
|
43865
45031
|
hyperline quotes update --id <id>
|
|
43866
45032
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -43895,12 +45061,14 @@ Examples:
|
|
|
43895
45061
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
43896
45062
|
if (opts.displayPhaseValue !== void 0)
|
|
43897
45063
|
args.display_phase_value = opts.displayPhaseValue;
|
|
45064
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
45065
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
43898
45066
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
43899
45067
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
43900
45068
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
43901
45069
|
args.display_documents_in_preview = opts.displayDocumentsInPreview;
|
|
43902
|
-
if (opts.
|
|
43903
|
-
args.
|
|
45070
|
+
if (opts.subscriptionUpdateDisplay !== void 0)
|
|
45071
|
+
args.subscription_update_display = opts.subscriptionUpdateDisplay;
|
|
43904
45072
|
if (opts.generateDraftInvoices !== void 0)
|
|
43905
45073
|
args.generate_draft_invoices = opts.generateDraftInvoices;
|
|
43906
45074
|
if (opts.crmOpportunityId !== void 0)
|
|
@@ -43909,6 +45077,8 @@ Examples:
|
|
|
43909
45077
|
args.expires_at = opts.expiresAt;
|
|
43910
45078
|
if (opts.amount !== void 0)
|
|
43911
45079
|
args.amount = Number(opts.amount);
|
|
45080
|
+
if (opts.contractValue !== void 0)
|
|
45081
|
+
args.contract_value = Number(opts.contractValue);
|
|
43912
45082
|
if (opts.collectCustomPropertyIds !== void 0)
|
|
43913
45083
|
args.collect_custom_property_ids = JSON.parse(opts.collectCustomPropertyIds);
|
|
43914
45084
|
if (opts.contractClauseIds !== void 0)
|
|
@@ -43924,6 +45094,25 @@ Examples:
|
|
|
43924
45094
|
queryParamKeys: []
|
|
43925
45095
|
});
|
|
43926
45096
|
});
|
|
45097
|
+
resource.command("duplicate").description(`Create a draft duplicate of an existing quote, including its linked invoice or subscription configuration.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45098
|
+
Examples:
|
|
45099
|
+
hyperline quotes duplicate --id <id>
|
|
45100
|
+
hyperline quotes duplicate --id <id> --output json`).action(async (opts) => {
|
|
45101
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45102
|
+
if (!ctx) {
|
|
45103
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45104
|
+
process.exit(1);
|
|
45105
|
+
}
|
|
45106
|
+
const args = {};
|
|
45107
|
+
if (opts.id !== void 0)
|
|
45108
|
+
args.id = opts.id;
|
|
45109
|
+
await ctx.execute({
|
|
45110
|
+
method: "POST",
|
|
45111
|
+
path: "/v1/quotes/{id}/duplicate",
|
|
45112
|
+
args,
|
|
45113
|
+
queryParamKeys: []
|
|
45114
|
+
});
|
|
45115
|
+
});
|
|
43927
45116
|
resource.command("download").description(`Download the PDF of a quote. Supports locale parameter for localization.`).requiredOption("--id <value>", `id parameter`).option("--locale <value>", `Locale as a supported language code and an uppercase ISO 3166-1 alpha-2 country code, separated by a hyphen.`).addHelpText("after", `
|
|
43928
45117
|
Examples:
|
|
43929
45118
|
hyperline quotes download --id <id>
|
|
@@ -43945,10 +45134,11 @@ Examples:
|
|
|
43945
45134
|
queryParamKeys: ["locale"]
|
|
43946
45135
|
});
|
|
43947
45136
|
});
|
|
43948
|
-
resource.command("
|
|
45137
|
+
resource.command("finalize").description(`Finalize a draft quote. The quote is submitted for approval when approval is required, otherwise it becomes approved and ready to be sent for signature.`).requiredOption("--id <value>", `id parameter`).option("--requester-comment <value>", `Internal comment supplied by the requester for approvers; not displayed on the customer-facing quote.`).addHelpText("after", `
|
|
43949
45138
|
Examples:
|
|
43950
|
-
hyperline quotes
|
|
43951
|
-
hyperline quotes
|
|
45139
|
+
hyperline quotes finalize --id <id>
|
|
45140
|
+
hyperline quotes finalize --id <id> --requester-comment <requester_comment>
|
|
45141
|
+
hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
|
|
43952
45142
|
const ctx = resource.parent?.opts()._ctx;
|
|
43953
45143
|
if (!ctx) {
|
|
43954
45144
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -43957,17 +45147,19 @@ Examples:
|
|
|
43957
45147
|
const args = {};
|
|
43958
45148
|
if (opts.id !== void 0)
|
|
43959
45149
|
args.id = opts.id;
|
|
45150
|
+
if (opts.requesterComment !== void 0)
|
|
45151
|
+
args.requester_comment = opts.requesterComment;
|
|
43960
45152
|
await ctx.execute({
|
|
43961
45153
|
method: "POST",
|
|
43962
|
-
path: "/v1/quotes/{id}/
|
|
45154
|
+
path: "/v1/quotes/{id}/finalize",
|
|
43963
45155
|
args,
|
|
43964
45156
|
queryParamKeys: []
|
|
43965
45157
|
});
|
|
43966
45158
|
});
|
|
43967
|
-
resource.command("
|
|
45159
|
+
resource.command("redraft").description(`Switch a quote back to draft so its subscription or invoice configuration can be updated. Works on quotes pending approval, with changes requested, approved, or awaiting signature. Cancels pending approval requests and the signature request; the quote must then be finalized again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
43968
45160
|
Examples:
|
|
43969
|
-
hyperline quotes
|
|
43970
|
-
hyperline quotes
|
|
45161
|
+
hyperline quotes redraft --id <id>
|
|
45162
|
+
hyperline quotes redraft --id <id> --output json`).action(async (opts) => {
|
|
43971
45163
|
const ctx = resource.parent?.opts()._ctx;
|
|
43972
45164
|
if (!ctx) {
|
|
43973
45165
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -43978,16 +45170,63 @@ Examples:
|
|
|
43978
45170
|
args.id = opts.id;
|
|
43979
45171
|
await ctx.execute({
|
|
43980
45172
|
method: "POST",
|
|
43981
|
-
path: "/v1/quotes/{id}/
|
|
45173
|
+
path: "/v1/quotes/{id}/redraft",
|
|
45174
|
+
args,
|
|
45175
|
+
queryParamKeys: []
|
|
45176
|
+
});
|
|
45177
|
+
});
|
|
45178
|
+
resource.command("send").description(`Send a quote by email for customer signature. Requires the quote to be approved first.`).requiredOption("--id <value>", `id parameter`).option("--email <value>", `Email address to which the quote will be sent for signature. Required unless the quote has signers, in which case the email goes to the signers of the current step and this field is ignored.`).option("--message <value>", `Custom message used in the email content.`).addHelpText("after", `
|
|
45179
|
+
Examples:
|
|
45180
|
+
hyperline quotes send --id <id>
|
|
45181
|
+
hyperline quotes send --id <id> --email <email> --message <message>
|
|
45182
|
+
hyperline quotes send --id <id> --output json`).action(async (opts) => {
|
|
45183
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45184
|
+
if (!ctx) {
|
|
45185
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45186
|
+
process.exit(1);
|
|
45187
|
+
}
|
|
45188
|
+
const args = {};
|
|
45189
|
+
if (opts.id !== void 0)
|
|
45190
|
+
args.id = opts.id;
|
|
45191
|
+
if (opts.email !== void 0)
|
|
45192
|
+
args.email = opts.email;
|
|
45193
|
+
if (opts.message !== void 0)
|
|
45194
|
+
args.message = opts.message;
|
|
45195
|
+
await ctx.execute({
|
|
45196
|
+
method: "POST",
|
|
45197
|
+
path: "/v1/quotes/{id}/send",
|
|
45198
|
+
args,
|
|
45199
|
+
queryParamKeys: []
|
|
45200
|
+
});
|
|
45201
|
+
});
|
|
45202
|
+
resource.command("list-quote-signers").description(`List the signers of a quote in signing order, with each signer's status (pending, notified, viewed, signed, declined). An empty list means the quote uses the single-signer flow of \`send_quote\`.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45203
|
+
Examples:
|
|
45204
|
+
hyperline quotes list-quote-signers --id <id>`).action(async (opts) => {
|
|
45205
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45206
|
+
if (!ctx) {
|
|
45207
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45208
|
+
process.exit(1);
|
|
45209
|
+
}
|
|
45210
|
+
const args = {};
|
|
45211
|
+
if (opts.id !== void 0)
|
|
45212
|
+
args.id = opts.id;
|
|
45213
|
+
await ctx.execute({
|
|
45214
|
+
method: "GET",
|
|
45215
|
+
path: "/v1/quotes/{id}/signers",
|
|
43982
45216
|
args,
|
|
43983
45217
|
queryParamKeys: []
|
|
43984
45218
|
});
|
|
43985
45219
|
});
|
|
43986
|
-
resource.command("
|
|
45220
|
+
resource.command("set-quote-signers").description(`Replace the full list of signers of a quote. Signers with the same \`step_order\` sign in parallel; steps sign in ascending order. Requires at least one \`external\` signer, and a \`countersigner\` must sign after an external step. Set signers before calling \`send_quote\`, which then emails the signers of the first step and no longer needs \`email\`. Pass an empty list to go back to the single-signer flow.`).requiredOption("--id <value>", `id parameter`).requiredOption("--signers <json>", `
|
|
45221
|
+
Signature workflow of the quote, replaced as a whole.
|
|
45222
|
+
|
|
45223
|
+
Signers sign step by step, in ascending \`step_order\`. Signers sharing a step sign in parallel, and the next step opens once all of them have signed. The workflow needs at least one \`external\` signer, and a \`countersigner\` must sign after the first external step.
|
|
45224
|
+
|
|
45225
|
+
Signers who already signed cannot be removed or moved. Once the quote is out for signature at an electronic signature provider, the workflow can no longer be changed.
|
|
45226
|
+
`).addHelpText("after", `
|
|
43987
45227
|
Examples:
|
|
43988
|
-
hyperline quotes
|
|
43989
|
-
hyperline quotes
|
|
43990
|
-
hyperline quotes send --id <id> --email <email> --output json`).action(async (opts) => {
|
|
45228
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers>
|
|
45229
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers> --output json`).action(async (opts) => {
|
|
43991
45230
|
const ctx = resource.parent?.opts()._ctx;
|
|
43992
45231
|
if (!ctx) {
|
|
43993
45232
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -43996,13 +45235,11 @@ Examples:
|
|
|
43996
45235
|
const args = {};
|
|
43997
45236
|
if (opts.id !== void 0)
|
|
43998
45237
|
args.id = opts.id;
|
|
43999
|
-
if (opts.
|
|
44000
|
-
args.
|
|
44001
|
-
if (opts.message !== void 0)
|
|
44002
|
-
args.message = opts.message;
|
|
45238
|
+
if (opts.signers !== void 0)
|
|
45239
|
+
args.signers = JSON.parse(opts.signers);
|
|
44003
45240
|
await ctx.execute({
|
|
44004
|
-
method: "
|
|
44005
|
-
path: "/v1/quotes/{id}/
|
|
45241
|
+
method: "PUT",
|
|
45242
|
+
path: "/v1/quotes/{id}/signers",
|
|
44006
45243
|
args,
|
|
44007
45244
|
queryParamKeys: []
|
|
44008
45245
|
});
|
|
@@ -44090,6 +45327,48 @@ Examples:
|
|
|
44090
45327
|
});
|
|
44091
45328
|
}
|
|
44092
45329
|
|
|
45330
|
+
// build/commands/generated/quotes-approvals.js
|
|
45331
|
+
function registerQuotes_ApprovalsCommands(parent) {
|
|
45332
|
+
const resource = parent.command("quotes-approvals").description("Manage quotes > approvals");
|
|
45333
|
+
resource.command("approve-quote").description(`Approve a quote as the account owner. This is a prerequisite before sending the quote for customer signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45334
|
+
Examples:
|
|
45335
|
+
hyperline quotes-approvals approve-quote --id <id>
|
|
45336
|
+
hyperline quotes-approvals approve-quote --id <id> --output json`).action(async (opts) => {
|
|
45337
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45338
|
+
if (!ctx) {
|
|
45339
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45340
|
+
process.exit(1);
|
|
45341
|
+
}
|
|
45342
|
+
const args = {};
|
|
45343
|
+
if (opts.id !== void 0)
|
|
45344
|
+
args.id = opts.id;
|
|
45345
|
+
await ctx.execute({
|
|
45346
|
+
method: "POST",
|
|
45347
|
+
path: "/v1/quotes/{id}/approve",
|
|
45348
|
+
args,
|
|
45349
|
+
queryParamKeys: []
|
|
45350
|
+
});
|
|
45351
|
+
});
|
|
45352
|
+
resource.command("get-quote-approvals").description(`Read quote approvals without submitting the quote. Returns a newest-first array, currently containing one element. Draft and changes-requested quotes return current approval routing in preview mode; other statuses return the recorded request, ordered steps and decisions in execution mode. A null request means no workflow execution was recorded, including automatic and legacy approval.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45353
|
+
Examples:
|
|
45354
|
+
hyperline quotes-approvals get-quote-approvals --id <id>`).action(async (opts) => {
|
|
45355
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45356
|
+
if (!ctx) {
|
|
45357
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45358
|
+
process.exit(1);
|
|
45359
|
+
}
|
|
45360
|
+
const args = {};
|
|
45361
|
+
if (opts.id !== void 0)
|
|
45362
|
+
args.id = opts.id;
|
|
45363
|
+
await ctx.execute({
|
|
45364
|
+
method: "GET",
|
|
45365
|
+
path: "/v1/quotes/{id}/approvals",
|
|
45366
|
+
args,
|
|
45367
|
+
queryParamKeys: []
|
|
45368
|
+
});
|
|
45369
|
+
});
|
|
45370
|
+
}
|
|
45371
|
+
|
|
44093
45372
|
// build/commands/generated/quotes-templates.js
|
|
44094
45373
|
function registerQuotes_TemplatesCommands(parent) {
|
|
44095
45374
|
const resource = parent.command("quotes-templates").description("Manage quotes > templates");
|
|
@@ -44289,7 +45568,7 @@ Examples:
|
|
|
44289
45568
|
queryParamKeys: []
|
|
44290
45569
|
});
|
|
44291
45570
|
});
|
|
44292
|
-
resource.command("cancel").description(`Cancel a subscription. Supports immediate or end-of-period cancellation. Optionally specify a cancellation reason.`).requiredOption("--id <value>", `id parameter`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--reason <value>", `Reason for the cancellation.`).option("--pro-rata", `Indicates if the cancel should refund the customer using a pro rata strategy.`).option("--refund-method <value>", `Override the refund destination for the resulting credit note. When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).addHelpText("after", `
|
|
45571
|
+
resource.command("cancel").description(`Cancel a subscription. Supports immediate or end-of-period cancellation. Optionally specify a cancellation reason. On a cancelled subscription with a scheduled reinstatement, call it with an empty body to remove that reinstatement; the subscription stays cancelled.`).requiredOption("--id <value>", `id parameter`).option("--cancel-at <value>", `Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--reason <value>", `Reason for the cancellation.`).option("--pro-rata", `Indicates if the cancel should refund the customer using a pro rata strategy.`).option("--refund-method <value>", `Override the refund destination for the resulting credit note. When omitted, falls back to the invoicing entity's \`creditNoteWalletRefundEnabled\` setting.`).addHelpText("after", `
|
|
44293
45572
|
Examples:
|
|
44294
45573
|
hyperline subscriptions cancel --id <id>
|
|
44295
45574
|
hyperline subscriptions cancel --id <id> --cancel-at <cancel_at> --reason <reason>
|
|
@@ -44317,9 +45596,10 @@ Examples:
|
|
|
44317
45596
|
queryParamKeys: []
|
|
44318
45597
|
});
|
|
44319
45598
|
});
|
|
44320
|
-
resource.command("reinstate").description(`Reinstate a subscription
|
|
45599
|
+
resource.command("reinstate").description(`Reinstate a subscription, reverting it to active status. Works for a subscription scheduled for cancellation and for a fully-cancelled one. For a fully-cancelled subscription, optionally pass reactivate_at (may be in the past, after the cancellation date; a future date schedules it) and invoicing_mode (or charge_line_items for a custom charge) to control how the cancelled gap is invoiced.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date a fully-cancelled subscription resumes from. May be in the past (after the cancellation date). Defaults to now. A future date schedules the reinstatement; calling again with another date reschedules it, and cancelling the subscription removes it. Ignored for scheduled-cancellation reinstatement.`).option("--invoicing-mode <value>", `How the paused/cancelled gap is invoiced when the subscription resumes. \`charge_full_period\`: bill the frozen periods as if never paused. \`prorate_remaining_period\`: skip the gap and bill the prorated remainder from the resume date. \`resume_at_next_cycle\` (default): skip the gap with no catch-up invoice.`).option("--charge-line-items <json>", `Custom charge: bill exactly these lines on an immediate resume instead of applying \`invoicing_mode\`. The lines cover the stopped period (pause or cancellation date to resume date). Requires the \`invoices_create\` permission. Fully-cancelled subscriptions only. Not allowed with a future \`reactivate_at\`.`).addHelpText("after", `
|
|
44321
45600
|
Examples:
|
|
44322
45601
|
hyperline subscriptions reinstate --id <id>
|
|
45602
|
+
hyperline subscriptions reinstate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
44323
45603
|
hyperline subscriptions reinstate --id <id> --output json`).action(async (opts) => {
|
|
44324
45604
|
const ctx = resource.parent?.opts()._ctx;
|
|
44325
45605
|
if (!ctx) {
|
|
@@ -44329,6 +45609,12 @@ Examples:
|
|
|
44329
45609
|
const args = {};
|
|
44330
45610
|
if (opts.id !== void 0)
|
|
44331
45611
|
args.id = opts.id;
|
|
45612
|
+
if (opts.reactivateAt !== void 0)
|
|
45613
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45614
|
+
if (opts.invoicingMode !== void 0)
|
|
45615
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45616
|
+
if (opts.chargeLineItems !== void 0)
|
|
45617
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
44332
45618
|
await ctx.execute({
|
|
44333
45619
|
method: "POST",
|
|
44334
45620
|
path: "/v1/subscriptions/{id}/reinstate",
|
|
@@ -44336,7 +45622,7 @@ Examples:
|
|
|
44336
45622
|
queryParamKeys: []
|
|
44337
45623
|
});
|
|
44338
45624
|
});
|
|
44339
|
-
resource.command("pause").description(`Pause a subscription. Billing stops while paused. Optionally specify a reactivate_at date for automatic resumption. If the subscription is already paused, updates (or clears) its reactivation date.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date when the subscription will be automatically reactivated.
|
|
45625
|
+
resource.command("pause").description(`Pause a subscription. Billing stops while paused. Optionally specify a reactivate_at date for automatic resumption. If the subscription is already paused, updates (or clears) its reactivation date.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date when the subscription will be automatically reactivated. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. A date on or before the pause date resumes it at the next scheduled run.`).addHelpText("after", `
|
|
44340
45626
|
Examples:
|
|
44341
45627
|
hyperline subscriptions pause --id <id>
|
|
44342
45628
|
hyperline subscriptions pause --id <id> --reactivate-at <reactivate_at>
|
|
@@ -44377,9 +45663,10 @@ Examples:
|
|
|
44377
45663
|
queryParamKeys: []
|
|
44378
45664
|
});
|
|
44379
45665
|
});
|
|
44380
|
-
resource.command("reactivate").description(`Resume a paused subscription,
|
|
45666
|
+
resource.command("reactivate").description(`Resume a paused subscription. Optionally pass reactivate_at (may be in the past, after the pause date; a future date schedules it) and invoicing_mode (or charge_line_items for a custom charge) to control how the paused gap is invoiced.`).requiredOption("--id <value>", `id parameter`).option("--reactivate-at <value>", `Date the subscription resumes from. May be in the past (after the pause date). Defaults to now. A future date schedules the reactivation.`).option("--invoicing-mode <value>", `How the paused/cancelled gap is invoiced when the subscription resumes. \`charge_full_period\`: bill the frozen periods as if never paused. \`prorate_remaining_period\`: skip the gap and bill the prorated remainder from the resume date. \`resume_at_next_cycle\` (default): skip the gap with no catch-up invoice.`).option("--charge-line-items <json>", `Custom charge: bill exactly these lines on an immediate resume instead of applying \`invoicing_mode\`. The lines cover the stopped period (pause or cancellation date to resume date). Requires the \`invoices_create\` permission. Not allowed with a future \`reactivate_at\`.`).addHelpText("after", `
|
|
44381
45667
|
Examples:
|
|
44382
45668
|
hyperline subscriptions reactivate --id <id>
|
|
45669
|
+
hyperline subscriptions reactivate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
44383
45670
|
hyperline subscriptions reactivate --id <id> --output json`).action(async (opts) => {
|
|
44384
45671
|
const ctx = resource.parent?.opts()._ctx;
|
|
44385
45672
|
if (!ctx) {
|
|
@@ -44389,6 +45676,12 @@ Examples:
|
|
|
44389
45676
|
const args = {};
|
|
44390
45677
|
if (opts.id !== void 0)
|
|
44391
45678
|
args.id = opts.id;
|
|
45679
|
+
if (opts.reactivateAt !== void 0)
|
|
45680
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45681
|
+
if (opts.invoicingMode !== void 0)
|
|
45682
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45683
|
+
if (opts.chargeLineItems !== void 0)
|
|
45684
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
44392
45685
|
await ctx.execute({
|
|
44393
45686
|
method: "POST",
|
|
44394
45687
|
path: "/v1/subscriptions/{id}/reactivate",
|
|
@@ -44575,7 +45868,7 @@ Examples:
|
|
|
44575
45868
|
queryParamKeys: []
|
|
44576
45869
|
});
|
|
44577
45870
|
});
|
|
44578
|
-
resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, custom_properties. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
|
|
45871
|
+
resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, cancel_at, custom_properties, and the active contract: contract_start__gte/__lte, contract_end__gte/__lte, renew_automatically. For upcoming renewals, combine contract_end__gte/__lte with renew_automatically, plus cancel_at for scheduled cancellations. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
|
|
44579
45872
|
Subscription status filter.
|
|
44580
45873
|
|
|
44581
45874
|
- \`active\`, \`pending\`, \`paused\`, \`errored\`, \`cancelled\`, \`draft\`, \`voided\`, \`archived\`: match that status.
|
|
@@ -44584,7 +45877,7 @@ Subscription status filter.
|
|
|
44584
45877
|
- \`any\`: every status, no exclusion.
|
|
44585
45878
|
|
|
44586
45879
|
Use \`status__in\` with comma-separated values to combine statuses. When the filter is omitted, \`draft\`, \`voided\`, \`cancelled\` and \`archived\` subscriptions are excluded.
|
|
44587
|
-
`).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--custom-properties <value>", `custom_properties`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
45880
|
+
`).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--custom-properties <value>", `custom_properties`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).option("--cancel-at <value>", `cancel_at`).option("--cancel-at.not <value>", `cancel_at__not`).option("--cancel-at.is-null <value>", `cancel_at__isNull`).option("--cancel-at.is-not-null <value>", `cancel_at__isNotNull`).option("--cancel-at.equals <value>", `cancel_at__equals`).option("--cancel-at.lt <value>", `cancel_at__lt`).option("--cancel-at.lte <value>", `cancel_at__lte`).option("--cancel-at.gt <value>", `cancel_at__gt`).option("--cancel-at.gte <value>", `cancel_at__gte`).option("--contract-start.gte <value>", `Return only subscriptions whose active contract starts on or after this date.`).option("--contract-start.lte <value>", `Return only subscriptions whose active contract starts on or before this date.`).option("--contract-end.gte <value>", `Return only subscriptions whose active contract ends on or after this date.`).option("--contract-end.lte <value>", `Return only subscriptions whose active contract ends on or before this date.`).option("--renew-automatically <value>", `Return only subscriptions whose active contract renews automatically (\`true\`) or not (\`false\`).`).addHelpText("after", `
|
|
44588
45881
|
Examples:
|
|
44589
45882
|
hyperline subscriptions list
|
|
44590
45883
|
hyperline subscriptions list --take <take> --activation-strategy <activation_strategy>`).action(async (opts) => {
|
|
@@ -44708,6 +46001,34 @@ Examples:
|
|
|
44708
46001
|
args.updated_at__gt = opts["updatedAt.gt"];
|
|
44709
46002
|
if (opts["updatedAt.gte"] !== void 0)
|
|
44710
46003
|
args.updated_at__gte = opts["updatedAt.gte"];
|
|
46004
|
+
if (opts.cancelAt !== void 0)
|
|
46005
|
+
args.cancel_at = opts.cancelAt;
|
|
46006
|
+
if (opts["cancelAt.not"] !== void 0)
|
|
46007
|
+
args.cancel_at__not = opts["cancelAt.not"];
|
|
46008
|
+
if (opts["cancelAt.isNull"] !== void 0)
|
|
46009
|
+
args.cancel_at__isNull = opts["cancelAt.isNull"];
|
|
46010
|
+
if (opts["cancelAt.isNotNull"] !== void 0)
|
|
46011
|
+
args.cancel_at__isNotNull = opts["cancelAt.isNotNull"];
|
|
46012
|
+
if (opts["cancelAt.equals"] !== void 0)
|
|
46013
|
+
args.cancel_at__equals = opts["cancelAt.equals"];
|
|
46014
|
+
if (opts["cancelAt.lt"] !== void 0)
|
|
46015
|
+
args.cancel_at__lt = opts["cancelAt.lt"];
|
|
46016
|
+
if (opts["cancelAt.lte"] !== void 0)
|
|
46017
|
+
args.cancel_at__lte = opts["cancelAt.lte"];
|
|
46018
|
+
if (opts["cancelAt.gt"] !== void 0)
|
|
46019
|
+
args.cancel_at__gt = opts["cancelAt.gt"];
|
|
46020
|
+
if (opts["cancelAt.gte"] !== void 0)
|
|
46021
|
+
args.cancel_at__gte = opts["cancelAt.gte"];
|
|
46022
|
+
if (opts["contractStart.gte"] !== void 0)
|
|
46023
|
+
args.contract_start__gte = opts["contractStart.gte"];
|
|
46024
|
+
if (opts["contractStart.lte"] !== void 0)
|
|
46025
|
+
args.contract_start__lte = opts["contractStart.lte"];
|
|
46026
|
+
if (opts["contractEnd.gte"] !== void 0)
|
|
46027
|
+
args.contract_end__gte = opts["contractEnd.gte"];
|
|
46028
|
+
if (opts["contractEnd.lte"] !== void 0)
|
|
46029
|
+
args.contract_end__lte = opts["contractEnd.lte"];
|
|
46030
|
+
if (opts.renewAutomatically !== void 0)
|
|
46031
|
+
args.renew_automatically = opts.renewAutomatically;
|
|
44711
46032
|
if (opts.take !== void 0)
|
|
44712
46033
|
args.take = Number(opts.take);
|
|
44713
46034
|
if (opts.skip !== void 0)
|
|
@@ -44775,7 +46096,21 @@ Examples:
|
|
|
44775
46096
|
"updated_at__lt",
|
|
44776
46097
|
"updated_at__lte",
|
|
44777
46098
|
"updated_at__gt",
|
|
44778
|
-
"updated_at__gte"
|
|
46099
|
+
"updated_at__gte",
|
|
46100
|
+
"cancel_at",
|
|
46101
|
+
"cancel_at__not",
|
|
46102
|
+
"cancel_at__isNull",
|
|
46103
|
+
"cancel_at__isNotNull",
|
|
46104
|
+
"cancel_at__equals",
|
|
46105
|
+
"cancel_at__lt",
|
|
46106
|
+
"cancel_at__lte",
|
|
46107
|
+
"cancel_at__gt",
|
|
46108
|
+
"cancel_at__gte",
|
|
46109
|
+
"contract_start__gte",
|
|
46110
|
+
"contract_start__lte",
|
|
46111
|
+
"contract_end__gte",
|
|
46112
|
+
"contract_end__lte",
|
|
46113
|
+
"renew_automatically"
|
|
44779
46114
|
]
|
|
44780
46115
|
});
|
|
44781
46116
|
});
|
|
@@ -45975,6 +47310,8 @@ function registerAllCommands(program2) {
|
|
|
45975
47310
|
registerCustom_PropertiesCommands(program2);
|
|
45976
47311
|
registerAggregatorsCommands(program2);
|
|
45977
47312
|
registerAggregators_UsageCommands(program2);
|
|
47313
|
+
registerAi_BillingCommands(program2);
|
|
47314
|
+
registerAi_CostsCommands(program2);
|
|
45978
47315
|
registerAnalyticsCommands(program2);
|
|
45979
47316
|
registerBank_AccountsCommands(program2);
|
|
45980
47317
|
registerCompaniesCommands(program2);
|
|
@@ -45993,11 +47330,13 @@ function registerAllCommands(program2) {
|
|
|
45993
47330
|
registerInvoicesCommands(program2);
|
|
45994
47331
|
registerInvoices_TransactionsCommands(program2);
|
|
45995
47332
|
registerInvoicing_EntitiesCommands(program2);
|
|
47333
|
+
registerAi_MonitoringCommands(program2);
|
|
45996
47334
|
registerPaymentsCommands(program2);
|
|
45997
47335
|
registerProductsCommands(program2);
|
|
45998
47336
|
registerPrice_ConfigurationsCommands(program2);
|
|
45999
47337
|
registerQuotesCommands(program2);
|
|
46000
47338
|
registerQuotes_TemplatesCommands(program2);
|
|
47339
|
+
registerQuotes_ApprovalsCommands(program2);
|
|
46001
47340
|
registerSubscriptions_TemplatesCommands(program2);
|
|
46002
47341
|
registerSubscriptionsCommands(program2);
|
|
46003
47342
|
registerSubscriptions_TransitionsCommands(program2);
|
|
@@ -61945,12 +63284,41 @@ var DateTimeSchema = external_exports.iso.datetime({
|
|
|
61945
63284
|
example: "2024-12-20T16:04:11Z"
|
|
61946
63285
|
});
|
|
61947
63286
|
|
|
63287
|
+
// ../hyperline-lib/build/http/dto/decimal.js
|
|
63288
|
+
var DecimalStringSchema = external_exports.string().regex(/^-?\d+(\.\d+)?(e[+-]?\d+)?$/i).openapi({
|
|
63289
|
+
description: "Exact decimal string. Interpret the unit using the field description and denomination.",
|
|
63290
|
+
example: "0.0021"
|
|
63291
|
+
});
|
|
63292
|
+
var NonNegativeDecimalStringSchema = external_exports.string().regex(/^\d+(\.\d+)?$/).max(40).openapi({
|
|
63293
|
+
description: "Non-negative exact decimal string, at most 40 characters.",
|
|
63294
|
+
example: "0.0021"
|
|
63295
|
+
});
|
|
63296
|
+
|
|
61948
63297
|
// ../hyperline-lib/build/http/dto/domain.js
|
|
61949
63298
|
var DomainSchema = external_exports.string().trim().toLowerCase().regex(/^(?!:\/\/)(?=.{1,253}$)(?!-)([a-z0-9-]{1,63}\.)+[a-z]{2,63}$/, "Invalid domain").openapi({
|
|
61950
63299
|
description: "Domain name.",
|
|
61951
63300
|
example: "acme.com"
|
|
61952
63301
|
});
|
|
61953
63302
|
|
|
63303
|
+
// ../hyperline-lib/build/http/dto/emailStatus.js
|
|
63304
|
+
var EmailStatusSchema = external_exports.enum([
|
|
63305
|
+
"sent",
|
|
63306
|
+
"delivered",
|
|
63307
|
+
"opened",
|
|
63308
|
+
"clicked",
|
|
63309
|
+
"spammed",
|
|
63310
|
+
"bounced",
|
|
63311
|
+
"queued",
|
|
63312
|
+
"drafted",
|
|
63313
|
+
"attempted",
|
|
63314
|
+
"failed",
|
|
63315
|
+
"undeliverable",
|
|
63316
|
+
"converted",
|
|
63317
|
+
"suppressed",
|
|
63318
|
+
"unsubscribed",
|
|
63319
|
+
"dropped"
|
|
63320
|
+
]);
|
|
63321
|
+
|
|
61954
63322
|
// ../hyperline-lib/build/http/dto/error.js
|
|
61955
63323
|
var ErrorSchema = external_exports.object({
|
|
61956
63324
|
message: external_exports.string()
|
|
@@ -61979,23 +63347,26 @@ var languages = [
|
|
|
61979
63347
|
|
|
61980
63348
|
// ../hyperline-i18n/build/locales/de.js
|
|
61981
63349
|
var de = {
|
|
61982
|
-
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
61983
|
-
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
61984
|
-
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
61985
63350
|
"accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
|
|
61986
|
-
"accounting.
|
|
63351
|
+
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
63352
|
+
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
61987
63353
|
"accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
61988
63354
|
"accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
61989
63355
|
"accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
61990
|
-
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
61991
63356
|
"accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
61992
63357
|
"accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
|
|
63358
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
|
|
63359
|
+
"accounting.transactionChargedBack.entryDescription": "R\xFCckbuchung f\xFCr Rechnung {{invoiceId}}",
|
|
63360
|
+
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
63361
|
+
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
61993
63362
|
"creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
|
|
61994
63363
|
"credits.bundleOf": "{{productName}} - Paket mit {{creditCount}} Guthaben",
|
|
61995
63364
|
"credits.unitsOf": "{{productName}} - {{creditCount}} Guthaben",
|
|
61996
63365
|
"einvoicing.paymentFromWallet": "Zahlung aus Guthaben",
|
|
61997
63366
|
"einvoicing.paymentProcessed": "Zahlung verarbeitet",
|
|
61998
63367
|
"einvoicing.paymentReceived": "Zahlung erhalten",
|
|
63368
|
+
"invoices.minimumFee.adjustmentName": "Anpassung der Mindestgeb\xFChr",
|
|
63369
|
+
"invoices.minimumFee.name": "Mindestgeb\xFChr",
|
|
61999
63370
|
"invoices.outstandingProduct.description": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{date}}",
|
|
62000
63371
|
"invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
|
|
62001
63372
|
"invoices.outstandingProduct.name": "Offener Saldo",
|
|
@@ -62003,9 +63374,9 @@ var de = {
|
|
|
62003
63374
|
"invoices.prorata.paymentForItemFullPeriod": "Zahlung f\xFCr",
|
|
62004
63375
|
"invoices.prorata.refundForItem": "Anteilig erstatteter Betrag f\xFCr",
|
|
62005
63376
|
"invoices.prorata.refundForItemFullPeriod": "Erstattung f\xFCr",
|
|
62006
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben",
|
|
62007
63377
|
"subscriptions.closingChargeName": "Abschlussgeb\xFChr f\xFCr das Abonnement",
|
|
62008
63378
|
"subscriptions.correction": "Vorperiodische Anpassung",
|
|
63379
|
+
"subscriptions.reinstatementRechargeName": "Wiederherstellungsgeb\xFChr f\xFCr den stornierten Zeitraum",
|
|
62009
63380
|
"subscriptions.updates.addCoupon": "Gutschein hinzuf\xFCgen {{couponName}}",
|
|
62010
63381
|
"subscriptions.updates.addProduct": "{{productName}} hinzuf\xFCgen",
|
|
62011
63382
|
"subscriptions.updates.removeCoupon": "Gutschein entfernen {{couponName}}",
|
|
@@ -62020,7 +63391,8 @@ var de = {
|
|
|
62020
63391
|
"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",
|
|
62021
63392
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Diese Position wurde f\xFCr den anteiligen Zeitraum in Rechnung gestellt",
|
|
62022
63393
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Betrag von {{amount}} f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
|
|
62023
|
-
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren"
|
|
63394
|
+
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren",
|
|
63395
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben"
|
|
62024
63396
|
};
|
|
62025
63397
|
|
|
62026
63398
|
// ../hyperline-i18n/build/locales/en.js
|
|
@@ -62028,6 +63400,8 @@ var en = {
|
|
|
62028
63400
|
"creditNotes.refundChargeName": "Refund for invoice",
|
|
62029
63401
|
"credits.bundleOf": "{{productName}} - Pack of {{creditCount}} credits",
|
|
62030
63402
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
63403
|
+
"invoices.minimumFee.adjustmentName": "Minimum fee adjustment",
|
|
63404
|
+
"invoices.minimumFee.name": "Minimum fee",
|
|
62031
63405
|
"invoices.outstandingProduct.description": "Unpaid amount from the invoice{{invoiceNumber}} emitted on {{date}}",
|
|
62032
63406
|
"invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
|
|
62033
63407
|
"invoices.outstandingProduct.name": "Outstanding balance",
|
|
@@ -62037,6 +63411,7 @@ var en = {
|
|
|
62037
63411
|
"invoices.prorata.refundForItemFullPeriod": "Refund for",
|
|
62038
63412
|
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 expired balance",
|
|
62039
63413
|
"subscriptions.closingChargeName": "Closing fee for subscription",
|
|
63414
|
+
"subscriptions.reinstatementRechargeName": "Reinstatement recharge of canceled period",
|
|
62040
63415
|
"subscriptions.correction": "Adjustment previous period",
|
|
62041
63416
|
"subscriptions.updates.addCoupon": "Add coupon {{couponName}}",
|
|
62042
63417
|
"subscriptions.updates.addProduct": "Add {{productName}}",
|
|
@@ -62056,6 +63431,7 @@ var en = {
|
|
|
62056
63431
|
"accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
|
|
62057
63432
|
"accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
|
|
62058
63433
|
"accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
|
|
63434
|
+
"accounting.transactionChargedBack.entryDescription": "Chargeback for Invoice {{invoiceId}}",
|
|
62059
63435
|
"accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
|
|
62060
63436
|
"accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
|
|
62061
63437
|
"accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
|
|
@@ -62071,23 +63447,26 @@ var en = {
|
|
|
62071
63447
|
|
|
62072
63448
|
// ../hyperline-i18n/build/locales/es.js
|
|
62073
63449
|
var es = {
|
|
62074
|
-
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
62075
|
-
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62076
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
62077
63450
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
|
|
62078
|
-
"accounting.
|
|
63451
|
+
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
63452
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62079
63453
|
"accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62080
63454
|
"accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62081
63455
|
"accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62082
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62083
63456
|
"accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62084
63457
|
"accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63458
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63459
|
+
"accounting.transactionChargedBack.entryDescription": "Contracargo de la factura {{invoiceId}}",
|
|
63460
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
63461
|
+
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62085
63462
|
"creditNotes.refundChargeName": "Reembolso por factura",
|
|
62086
63463
|
"credits.bundleOf": "{{productName}} - Paquete de {{creditCount}} cr\xE9ditos",
|
|
62087
63464
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
62088
63465
|
"einvoicing.paymentFromWallet": "Pago desde el monedero",
|
|
62089
63466
|
"einvoicing.paymentProcessed": "Pago procesado",
|
|
62090
63467
|
"einvoicing.paymentReceived": "Pago recibido",
|
|
63468
|
+
"invoices.minimumFee.adjustmentName": "Ajuste del cargo m\xEDnimo",
|
|
63469
|
+
"invoices.minimumFee.name": "Cargo m\xEDnimo",
|
|
62091
63470
|
"invoices.outstandingProduct.description": "Monto pendiente de la factura{{invoiceNumber}} emitida el {{date}}",
|
|
62092
63471
|
"invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
|
|
62093
63472
|
"invoices.outstandingProduct.name": "Saldo pendiente",
|
|
@@ -62095,9 +63474,9 @@ var es = {
|
|
|
62095
63474
|
"invoices.prorata.paymentForItemFullPeriod": "Pago por",
|
|
62096
63475
|
"invoices.prorata.refundForItem": "Reembolso prorrateado por",
|
|
62097
63476
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
62098
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado",
|
|
62099
63477
|
"subscriptions.closingChargeName": "Cargo por cierre de suscripci\xF3n",
|
|
62100
63478
|
"subscriptions.correction": "Ajuste del periodo anterior",
|
|
63479
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reinstalaci\xF3n del per\xEDodo cancelado",
|
|
62101
63480
|
"subscriptions.updates.addCoupon": "A\xF1adir cup\xF3n {{couponName}}",
|
|
62102
63481
|
"subscriptions.updates.addProduct": "A\xF1adir {{productName}}",
|
|
62103
63482
|
"subscriptions.updates.removeCoupon": "Eliminar cup\xF3n {{couponName}}",
|
|
@@ -62112,28 +63491,32 @@ var es = {
|
|
|
62112
63491
|
"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",
|
|
62113
63492
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta l\xEDnea ha sido facturada para el per\xEDodo prorrateado",
|
|
62114
63493
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importe de {{amount}} no facturado para el per\xEDodo prorrateado",
|
|
62115
|
-
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}"
|
|
63494
|
+
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}",
|
|
63495
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado"
|
|
62116
63496
|
};
|
|
62117
63497
|
|
|
62118
63498
|
// ../hyperline-i18n/build/locales/fr.js
|
|
62119
63499
|
var fr = {
|
|
63500
|
+
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
63501
|
+
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
63502
|
+
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62120
63503
|
"accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62121
63504
|
"accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62122
63505
|
"accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62123
|
-
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62124
63506
|
"accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62125
|
-
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
62126
|
-
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62127
|
-
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
62128
|
-
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
62129
|
-
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
62130
63507
|
"accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
|
|
63508
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
63509
|
+
"accounting.transactionChargedBack.entryDescription": "R\xE9trofacturation de la facture {{invoiceId}}",
|
|
63510
|
+
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
63511
|
+
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62131
63512
|
"creditNotes.refundChargeName": "Remboursement pour facture",
|
|
62132
63513
|
"credits.bundleOf": "{{productName}} - Pack de {{creditCount}} cr\xE9dits",
|
|
62133
63514
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9dits",
|
|
62134
63515
|
"einvoicing.paymentFromWallet": "Paiement depuis le portefeuille",
|
|
62135
63516
|
"einvoicing.paymentProcessed": "Paiement effectu\xE9",
|
|
62136
63517
|
"einvoicing.paymentReceived": "Paiement re\xE7u",
|
|
63518
|
+
"invoices.minimumFee.adjustmentName": "Ajustement des frais minimums",
|
|
63519
|
+
"invoices.minimumFee.name": "Frais minimums",
|
|
62137
63520
|
"invoices.outstandingProduct.description": "Montant impay\xE9 de la facture{{invoiceNumber}} \xE9mise le {{date}}",
|
|
62138
63521
|
"invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
|
|
62139
63522
|
"invoices.outstandingProduct.name": "Solde impay\xE9",
|
|
@@ -62141,9 +63524,9 @@ var fr = {
|
|
|
62141
63524
|
"invoices.prorata.paymentForItemFullPeriod": "Paiement pour",
|
|
62142
63525
|
"invoices.prorata.refundForItem": "Remboursement au prorata pour",
|
|
62143
63526
|
"invoices.prorata.refundForItemFullPeriod": "Remboursement pour",
|
|
62144
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9",
|
|
62145
63527
|
"subscriptions.closingChargeName": "Frais de cl\xF4ture pour abonnement",
|
|
62146
63528
|
"subscriptions.correction": "Ajustement p\xE9riode pr\xE9c\xE9dente",
|
|
63529
|
+
"subscriptions.reinstatementRechargeName": "Recharge de r\xE9tablissement de la p\xE9riode annul\xE9e",
|
|
62147
63530
|
"subscriptions.updates.addCoupon": "Ajout du coupon {{couponName}}",
|
|
62148
63531
|
"subscriptions.updates.addProduct": "Ajout {{productName}}",
|
|
62149
63532
|
"subscriptions.updates.removeCoupon": "Retrait du coupon {{couponName}}",
|
|
@@ -62158,28 +63541,32 @@ var fr = {
|
|
|
62158
63541
|
"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",
|
|
62159
63542
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Cette ligne a \xE9t\xE9 factur\xE9e pour la p\xE9riode proratis\xE9e",
|
|
62160
63543
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Montant de {{amount}} non factur\xE9 pour la p\xE9riode proratis\xE9e",
|
|
62161
|
-
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}"
|
|
63544
|
+
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}",
|
|
63545
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9"
|
|
62162
63546
|
};
|
|
62163
63547
|
|
|
62164
63548
|
// ../hyperline-i18n/build/locales/it.js
|
|
62165
63549
|
var it = {
|
|
62166
|
-
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
62167
|
-
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62168
|
-
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
62169
63550
|
"accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
|
|
62170
|
-
"accounting.
|
|
63551
|
+
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
63552
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62171
63553
|
"accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62172
63554
|
"accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62173
63555
|
"accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62174
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62175
63556
|
"accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62176
63557
|
"accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
|
|
63558
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
|
|
63559
|
+
"accounting.transactionChargedBack.entryDescription": "Riaddebito per la fattura {{invoiceId}}",
|
|
63560
|
+
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
63561
|
+
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62177
63562
|
"creditNotes.refundChargeName": "Rimborso per fattura",
|
|
62178
63563
|
"credits.bundleOf": "{{productName}} - Pacchetto di {{creditCount}} crediti",
|
|
62179
63564
|
"credits.unitsOf": "{{productName}} - {{creditCount}} crediti",
|
|
62180
63565
|
"einvoicing.paymentFromWallet": "Pagamento dal portafoglio",
|
|
62181
63566
|
"einvoicing.paymentProcessed": "Pagamento elaborato",
|
|
62182
63567
|
"einvoicing.paymentReceived": "Pagamento ricevuto",
|
|
63568
|
+
"invoices.minimumFee.adjustmentName": "Adeguamento all\u2019importo minimo",
|
|
63569
|
+
"invoices.minimumFee.name": "Importo minimo",
|
|
62183
63570
|
"invoices.outstandingProduct.description": "Importo insoluto della fattura{{invoiceNumber}} emessa il {{date}}",
|
|
62184
63571
|
"invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
|
|
62185
63572
|
"invoices.outstandingProduct.name": "Saldo insoluto",
|
|
@@ -62187,9 +63574,9 @@ var it = {
|
|
|
62187
63574
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento per",
|
|
62188
63575
|
"invoices.prorata.refundForItem": "Rimborso proporzionale per",
|
|
62189
63576
|
"invoices.prorata.refundForItemFullPeriod": "Rimborso per",
|
|
62190
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto",
|
|
62191
63577
|
"subscriptions.closingChargeName": "Costo di chiusura per abbonamento",
|
|
62192
63578
|
"subscriptions.correction": "Correzione periodo precedente",
|
|
63579
|
+
"subscriptions.reinstatementRechargeName": "Ricarica di reintegrazione del periodo annullato",
|
|
62193
63580
|
"subscriptions.updates.addCoupon": "Aggiungi coupon {{couponName}}",
|
|
62194
63581
|
"subscriptions.updates.addProduct": "Aggiungi {{productName}}",
|
|
62195
63582
|
"subscriptions.updates.removeCoupon": "Rimuovi coupon {{couponName}}",
|
|
@@ -62204,14 +63591,32 @@ var it = {
|
|
|
62204
63591
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Importo di {{amount}} (con un minimo impegnato di {{committedCount}}) non fatturato per il periodo proporzionato",
|
|
62205
63592
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Questa voce \xE8 stata fatturata per il periodo proporzionato",
|
|
62206
63593
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importo di {{amount}} non fatturato per il periodo proporzionato",
|
|
62207
|
-
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}"
|
|
63594
|
+
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}",
|
|
63595
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto"
|
|
62208
63596
|
};
|
|
62209
63597
|
|
|
62210
63598
|
// ../hyperline-i18n/build/locales/lt.js
|
|
62211
63599
|
var lt = {
|
|
63600
|
+
"accounting.creditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}} s\u0105skaitai fakt\u016Brai {{invoiceId}}",
|
|
63601
|
+
"accounting.invoicePosted.entryDescription": "I\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros {{invoiceId}} registravimo \u012Fra\u0161as",
|
|
63602
|
+
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63603
|
+
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63604
|
+
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63605
|
+
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63606
|
+
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63607
|
+
"accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
|
|
63608
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
|
|
63609
|
+
"accounting.transactionChargedBack.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} u\u017Egin\u010Dyto mok\u0117jimo gr\u0105\u017Einimas",
|
|
63610
|
+
"accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
|
|
63611
|
+
"accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
|
|
62212
63612
|
"creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
|
|
62213
63613
|
"credits.bundleOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173 paketas",
|
|
62214
63614
|
"credits.unitsOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173",
|
|
63615
|
+
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
|
|
63616
|
+
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63617
|
+
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63618
|
+
"invoices.minimumFee.adjustmentName": "Minimalaus mokes\u010Dio koregavimas",
|
|
63619
|
+
"invoices.minimumFee.name": "Minimalus mokestis",
|
|
62215
63620
|
"invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
|
|
62216
63621
|
"invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
|
|
62217
63622
|
"invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
|
|
@@ -62219,59 +63624,49 @@ var lt = {
|
|
|
62219
63624
|
"invoices.prorata.paymentForItemFullPeriod": "Mok\u0117jimas u\u017E",
|
|
62220
63625
|
"invoices.prorata.refundForItem": "Proporcingas gr\u0105\u017Einimas u\u017E",
|
|
62221
63626
|
"invoices.prorata.refundForItemFullPeriod": "Gr\u0105\u017Einimas u\u017E",
|
|
62222
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis",
|
|
62223
63627
|
"subscriptions.closingChargeName": "Prenumeratos u\u017Ebaigimo mokestis",
|
|
62224
63628
|
"subscriptions.correction": "Ankstesnio laikotarpio koregavimas",
|
|
63629
|
+
"subscriptions.reinstatementRechargeName": "Atnaujinimo \u012Fmokos u\u017E nutraukt\u0105 laikotarp\u012F",
|
|
62225
63630
|
"subscriptions.updates.addCoupon": "Prid\u0117ti kupon\u0105 {{couponName}}",
|
|
62226
63631
|
"subscriptions.updates.addProduct": "Prid\u0117ti {{productName}}",
|
|
62227
63632
|
"subscriptions.updates.removeCoupon": "Pa\u0161alinti kupon\u0105 {{couponName}}",
|
|
62228
63633
|
"subscriptions.updates.removeProduct": "Pa\u0161alinti {{productName}}",
|
|
62229
63634
|
"subscriptions.updates.unit": "vnt.",
|
|
62230
|
-
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
62231
63635
|
"subscriptions.updates.updateCount": "Atnaujinti {{productName}} kiek\u012F ({{previousCount}} \u2192 {{newCount}} {{unit}})",
|
|
62232
|
-
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
62233
|
-
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
62234
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
62235
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
62236
63636
|
"subscriptions.updates.updateCount.description.full.committed.invoiced": "Visam laikotarpiui pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
62237
63637
|
"subscriptions.updates.updateCount.description.full.committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
62238
63638
|
"subscriptions.updates.updateCount.description.full.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 visam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
62239
63639
|
"subscriptions.updates.updateCount.description.full.not_committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
62240
|
-
"
|
|
62241
|
-
"
|
|
62242
|
-
"
|
|
62243
|
-
"
|
|
62244
|
-
"
|
|
62245
|
-
"
|
|
62246
|
-
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
62247
|
-
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
62248
|
-
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
62249
|
-
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
62250
|
-
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
62251
|
-
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
62252
|
-
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
62253
|
-
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s"
|
|
63640
|
+
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63641
|
+
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63642
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63643
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63644
|
+
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
63645
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis"
|
|
62254
63646
|
};
|
|
62255
63647
|
|
|
62256
63648
|
// ../hyperline-i18n/build/locales/nl.js
|
|
62257
63649
|
var nl = {
|
|
62258
|
-
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
62259
|
-
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
62260
|
-
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
62261
63650
|
"accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
|
|
62262
|
-
"accounting.
|
|
63651
|
+
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63652
|
+
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
62263
63653
|
"accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
62264
63654
|
"accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
62265
63655
|
"accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
62266
|
-
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
62267
63656
|
"accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
62268
63657
|
"accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
|
|
63658
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
|
|
63659
|
+
"accounting.transactionChargedBack.entryDescription": "Terugboeking voor factuur {{invoiceId}}",
|
|
63660
|
+
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63661
|
+
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
62269
63662
|
"creditNotes.refundChargeName": "Terugbetaling voor factuur",
|
|
62270
63663
|
"credits.bundleOf": "{{productName}} - Bundel van {{creditCount}} credits",
|
|
62271
63664
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
62272
63665
|
"einvoicing.paymentFromWallet": "Betaling uit tegoed",
|
|
62273
63666
|
"einvoicing.paymentProcessed": "Betaling verwerkt",
|
|
62274
63667
|
"einvoicing.paymentReceived": "Betaling ontvangen",
|
|
63668
|
+
"invoices.minimumFee.adjustmentName": "Aanpassing minimumbedrag",
|
|
63669
|
+
"invoices.minimumFee.name": "Minimumbedrag",
|
|
62275
63670
|
"invoices.outstandingProduct.description": "Onbetaald bedrag van de factuur{{invoiceNumber}} uitgegeven op {{date}}",
|
|
62276
63671
|
"invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
|
|
62277
63672
|
"invoices.outstandingProduct.name": "Openstaand saldo",
|
|
@@ -62279,9 +63674,9 @@ var nl = {
|
|
|
62279
63674
|
"invoices.prorata.paymentForItemFullPeriod": "Betaling voor",
|
|
62280
63675
|
"invoices.prorata.refundForItem": "Gedeeltelijke terugbetaling voor",
|
|
62281
63676
|
"invoices.prorata.refundForItemFullPeriod": "Terugbetaling voor",
|
|
62282
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo",
|
|
62283
63677
|
"subscriptions.closingChargeName": "Afsluitkosten voor abonnement",
|
|
62284
63678
|
"subscriptions.correction": "Aanpassing vorige periode",
|
|
63679
|
+
"subscriptions.reinstatementRechargeName": "Herstelkosten van geannuleerde periode",
|
|
62285
63680
|
"subscriptions.updates.addCoupon": "Coupon toevoegen {{couponName}}",
|
|
62286
63681
|
"subscriptions.updates.addProduct": "{{productName}} toevoegen",
|
|
62287
63682
|
"subscriptions.updates.removeCoupon": "Coupon verwijderen {{couponName}}",
|
|
@@ -62296,28 +63691,32 @@ var nl = {
|
|
|
62296
63691
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Bedrag van {{amount}} (met een minimaal toegezegd aantal van {{committedCount}}) niet gefactureerd voor de geproportioneerde periode",
|
|
62297
63692
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Deze regel is gefactureerd voor de geproportioneerde periode",
|
|
62298
63693
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Bedrag van {{amount}} niet gefactureerd voor de geproportioneerde periode",
|
|
62299
|
-
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}"
|
|
63694
|
+
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}",
|
|
63695
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo"
|
|
62300
63696
|
};
|
|
62301
63697
|
|
|
62302
63698
|
// ../hyperline-i18n/build/locales/pl.js
|
|
62303
63699
|
var pl = {
|
|
62304
|
-
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
62305
|
-
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
62306
|
-
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
62307
63700
|
"accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
|
|
62308
|
-
"accounting.
|
|
63701
|
+
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63702
|
+
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
62309
63703
|
"accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
62310
63704
|
"accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
62311
63705
|
"accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
62312
|
-
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
62313
63706
|
"accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
62314
63707
|
"accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
|
|
63708
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
|
|
63709
|
+
"accounting.transactionChargedBack.entryDescription": "Obci\u0105\u017Cenie zwrotne za faktur\u0119 {{invoiceId}}",
|
|
63710
|
+
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63711
|
+
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
62315
63712
|
"creditNotes.refundChargeName": "Zwrot za faktur\u0119",
|
|
62316
63713
|
"credits.bundleOf": "{{productName}} - Pakiet {{creditCount}} kredyt\xF3w",
|
|
62317
63714
|
"credits.unitsOf": "{{productName}} - {{creditCount}} kredyt\xF3w",
|
|
62318
63715
|
"einvoicing.paymentFromWallet": "P\u0142atno\u015B\u0107 z portfela",
|
|
62319
63716
|
"einvoicing.paymentProcessed": "P\u0142atno\u015B\u0107 przetworzona",
|
|
62320
63717
|
"einvoicing.paymentReceived": "P\u0142atno\u015B\u0107 otrzymana",
|
|
63718
|
+
"invoices.minimumFee.adjustmentName": "Wyr\xF3wnanie do op\u0142aty minimalnej",
|
|
63719
|
+
"invoices.minimumFee.name": "Op\u0142ata minimalna",
|
|
62321
63720
|
"invoices.outstandingProduct.description": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} wystawionej {{date}}",
|
|
62322
63721
|
"invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
|
|
62323
63722
|
"invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
|
|
@@ -62325,9 +63724,9 @@ var pl = {
|
|
|
62325
63724
|
"invoices.prorata.paymentForItemFullPeriod": "P\u0142atno\u015B\u0107 za",
|
|
62326
63725
|
"invoices.prorata.refundForItem": "Zwrot proporcjonalny za",
|
|
62327
63726
|
"invoices.prorata.refundForItemFullPeriod": "Zwrot za",
|
|
62328
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo",
|
|
62329
63727
|
"subscriptions.closingChargeName": "Op\u0142ata za zamkni\u0119cie subskrypcji",
|
|
62330
63728
|
"subscriptions.correction": "Korekta poprzedniego okresu",
|
|
63729
|
+
"subscriptions.reinstatementRechargeName": "Op\u0142ata za przywr\xF3cenie anulowanego okresu",
|
|
62331
63730
|
"subscriptions.updates.addCoupon": "Dodaj kupon {{couponName}}",
|
|
62332
63731
|
"subscriptions.updates.addProduct": "Dodaj {{productName}}",
|
|
62333
63732
|
"subscriptions.updates.removeCoupon": "Usu\u0144 kupon {{couponName}}",
|
|
@@ -62342,28 +63741,32 @@ var pl = {
|
|
|
62342
63741
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Kwota {{amount}} (z minimaln\u0105 zobowi\u0105zan\u0105 ilo\u015Bci\u0105 {{committedCount}}) niefakturowana za okres proporcjonalny",
|
|
62343
63742
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Ta pozycja zosta\u0142a zafakturowana za okres proporcjonalny",
|
|
62344
63743
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Kwota {{amount}} niefakturowana za okres proporcjonalny",
|
|
62345
|
-
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}"
|
|
63744
|
+
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}",
|
|
63745
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo"
|
|
62346
63746
|
};
|
|
62347
63747
|
|
|
62348
63748
|
// ../hyperline-i18n/build/locales/pt.js
|
|
62349
63749
|
var pt = {
|
|
62350
|
-
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
62351
|
-
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
62352
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
62353
63750
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
|
|
62354
|
-
"accounting.
|
|
63751
|
+
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63752
|
+
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
62355
63753
|
"accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62356
63754
|
"accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62357
63755
|
"accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62358
|
-
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
62359
63756
|
"accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62360
63757
|
"accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63758
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63759
|
+
"accounting.transactionChargedBack.entryDescription": "Estorno da fatura {{invoiceId}}",
|
|
63760
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63761
|
+
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
62361
63762
|
"creditNotes.refundChargeName": "Reembolso pela fatura",
|
|
62362
63763
|
"credits.bundleOf": "{{productName}} - Pacote de {{creditCount}} cr\xE9ditos",
|
|
62363
63764
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
62364
63765
|
"einvoicing.paymentFromWallet": "Pagamento da carteira",
|
|
62365
63766
|
"einvoicing.paymentProcessed": "Pagamento processado",
|
|
62366
63767
|
"einvoicing.paymentReceived": "Pagamento recebido",
|
|
63768
|
+
"invoices.minimumFee.adjustmentName": "Ajuste do valor m\xEDnimo",
|
|
63769
|
+
"invoices.minimumFee.name": "Valor m\xEDnimo",
|
|
62367
63770
|
"invoices.outstandingProduct.description": "Valor em aberto da fatura{{invoiceNumber}} emitida em {{date}}",
|
|
62368
63771
|
"invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
|
|
62369
63772
|
"invoices.outstandingProduct.name": "Saldo em aberto",
|
|
@@ -62371,9 +63774,9 @@ var pt = {
|
|
|
62371
63774
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento por",
|
|
62372
63775
|
"invoices.prorata.refundForItem": "Reembolso proporcional por",
|
|
62373
63776
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
62374
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado",
|
|
62375
63777
|
"subscriptions.closingChargeName": "Taxa de encerramento da assinatura",
|
|
62376
63778
|
"subscriptions.correction": "Ajuste do per\xEDodo anterior",
|
|
63779
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reintegra\xE7\xE3o do per\xEDodo cancelado",
|
|
62377
63780
|
"subscriptions.updates.addCoupon": "Adicionar cupom {{couponName}}",
|
|
62378
63781
|
"subscriptions.updates.addProduct": "Adicionar {{productName}}",
|
|
62379
63782
|
"subscriptions.updates.removeCoupon": "Remover cupom {{couponName}}",
|
|
@@ -62388,7 +63791,8 @@ var pt = {
|
|
|
62388
63791
|
"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",
|
|
62389
63792
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta linha foi faturada para o per\xEDodo proporcional",
|
|
62390
63793
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Valor de {{amount}} n\xE3o faturado para o per\xEDodo proporcional",
|
|
62391
|
-
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}"
|
|
63794
|
+
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}",
|
|
63795
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado"
|
|
62392
63796
|
};
|
|
62393
63797
|
|
|
62394
63798
|
// ../hyperline-i18n/build/language.js
|
|
@@ -62551,6 +63955,223 @@ import * as winston from "winston";
|
|
|
62551
63955
|
|
|
62552
63956
|
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
62553
63957
|
import prune from "json-prune";
|
|
63958
|
+
|
|
63959
|
+
// ../hyperline-monitoring/build/logger/formatting/logRedaction.js
|
|
63960
|
+
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
63961
|
+
"accesstoken",
|
|
63962
|
+
"apitoken",
|
|
63963
|
+
"assertion",
|
|
63964
|
+
"authorization",
|
|
63965
|
+
"authtoken",
|
|
63966
|
+
"cardnumber",
|
|
63967
|
+
"clientassertion",
|
|
63968
|
+
"codeverifier",
|
|
63969
|
+
"connectionurl",
|
|
63970
|
+
"consumerkey",
|
|
63971
|
+
"cookie",
|
|
63972
|
+
"credential",
|
|
63973
|
+
"credentials",
|
|
63974
|
+
"iban",
|
|
63975
|
+
"idtoken",
|
|
63976
|
+
"privatekey",
|
|
63977
|
+
"publictoken",
|
|
63978
|
+
"refreshtoken",
|
|
63979
|
+
"sessiontoken",
|
|
63980
|
+
"token",
|
|
63981
|
+
"tokenid",
|
|
63982
|
+
"verificationcode"
|
|
63983
|
+
]);
|
|
63984
|
+
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password|passphrase|apikey)$/;
|
|
63985
|
+
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
|
|
63986
|
+
var URL_ONLY_REDACTED_KEYS = /* @__PURE__ */ new Set(["key"]);
|
|
63987
|
+
var OAUTH_CODE_KEY = "code";
|
|
63988
|
+
var OAUTH_CODE_CONTEXT_KEYS = ["state", "grant_type"];
|
|
63989
|
+
var REDACTED_VALUE = "<redacted>";
|
|
63990
|
+
var TRUNCATED_VALUE = "[TRUNCATED: not redacted]";
|
|
63991
|
+
var TRUNCATED_KEY = "[TRUNCATED]";
|
|
63992
|
+
var MAX_REDACTION_DEPTH = 6;
|
|
63993
|
+
var MAX_ARRAY_ENTRIES = 50;
|
|
63994
|
+
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
63995
|
+
var MAX_VISITED_NODES = 5e3;
|
|
63996
|
+
var MAX_CONTAINER_ENTRIES = 1e3;
|
|
63997
|
+
var MAX_STRING_CHARACTERS = 256e3;
|
|
63998
|
+
function redactLogBody({ body }) {
|
|
63999
|
+
return redactValue({
|
|
64000
|
+
value: body,
|
|
64001
|
+
depth: MAX_REDACTION_DEPTH,
|
|
64002
|
+
budget: {
|
|
64003
|
+
remainingNodes: MAX_VISITED_NODES,
|
|
64004
|
+
remainingChars: MAX_STRING_CHARACTERS
|
|
64005
|
+
}
|
|
64006
|
+
});
|
|
64007
|
+
}
|
|
64008
|
+
function redactLogUrl({ url: url2 }) {
|
|
64009
|
+
const queryIndex = url2.indexOf("?");
|
|
64010
|
+
if (queryIndex === -1) {
|
|
64011
|
+
return url2;
|
|
64012
|
+
}
|
|
64013
|
+
if (url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
64014
|
+
return `${url2.slice(0, queryIndex)}?${TRUNCATED_VALUE}`;
|
|
64015
|
+
}
|
|
64016
|
+
const redactedQuery = redactFormEncoded({
|
|
64017
|
+
text: url2.slice(queryIndex + 1),
|
|
64018
|
+
extraRedactedKeys: URL_ONLY_REDACTED_KEYS
|
|
64019
|
+
});
|
|
64020
|
+
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
64021
|
+
}
|
|
64022
|
+
function redactValue({ value, depth, budget }) {
|
|
64023
|
+
if (isOpaqueObject({ value })) {
|
|
64024
|
+
return replaceOpaqueObject({ value });
|
|
64025
|
+
}
|
|
64026
|
+
if (typeof value === "string") {
|
|
64027
|
+
if (value.length > budget.remainingChars) {
|
|
64028
|
+
return TRUNCATED_VALUE;
|
|
64029
|
+
}
|
|
64030
|
+
budget.remainingChars -= value.length;
|
|
64031
|
+
}
|
|
64032
|
+
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
64033
|
+
return isInspectable({ value }) ? TRUNCATED_VALUE : value;
|
|
64034
|
+
}
|
|
64035
|
+
budget.remainingNodes -= 1;
|
|
64036
|
+
if (typeof value === "string") {
|
|
64037
|
+
return redactString({ text: value, budget });
|
|
64038
|
+
}
|
|
64039
|
+
if (value instanceof URLSearchParams) {
|
|
64040
|
+
return redactValue({ value: value.toString(), depth, budget });
|
|
64041
|
+
}
|
|
64042
|
+
if (Array.isArray(value)) {
|
|
64043
|
+
return redactArray({ items: value, depth, budget });
|
|
64044
|
+
}
|
|
64045
|
+
if (isPlainObject2(value)) {
|
|
64046
|
+
return redactObject({ record: value, depth, budget });
|
|
64047
|
+
}
|
|
64048
|
+
return value;
|
|
64049
|
+
}
|
|
64050
|
+
function isOpaqueObject({ value }) {
|
|
64051
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && !isPlainObject2(value) && !(value instanceof URLSearchParams);
|
|
64052
|
+
}
|
|
64053
|
+
function replaceOpaqueObject({ value }) {
|
|
64054
|
+
if (typeof value !== "object" || value === null || value instanceof Date) {
|
|
64055
|
+
return value;
|
|
64056
|
+
}
|
|
64057
|
+
if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
64058
|
+
return `[BINARY ${value.byteLength} bytes]`;
|
|
64059
|
+
}
|
|
64060
|
+
if (value instanceof Blob) {
|
|
64061
|
+
return `[BINARY ${value.size} bytes]`;
|
|
64062
|
+
}
|
|
64063
|
+
if (value instanceof FormData || typeof Reflect.get(value, "pipe") === "function") {
|
|
64064
|
+
return "[BINARY stream]";
|
|
64065
|
+
}
|
|
64066
|
+
return TRUNCATED_VALUE;
|
|
64067
|
+
}
|
|
64068
|
+
function redactArray({ items, depth, budget }) {
|
|
64069
|
+
const isTruncated = items.length > MAX_ARRAY_ENTRIES;
|
|
64070
|
+
const keptItems = isTruncated ? items.slice(0, MAX_ARRAY_ENTRIES) : items;
|
|
64071
|
+
let redactedItems;
|
|
64072
|
+
for (const [index, item] of keptItems.entries()) {
|
|
64073
|
+
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
64074
|
+
if (redactedItem !== item) {
|
|
64075
|
+
redactedItems ??= [...keptItems];
|
|
64076
|
+
redactedItems[index] = redactedItem;
|
|
64077
|
+
}
|
|
64078
|
+
}
|
|
64079
|
+
const result = redactedItems ?? keptItems;
|
|
64080
|
+
return isTruncated ? [...result, TRUNCATED_VALUE] : result;
|
|
64081
|
+
}
|
|
64082
|
+
function redactObject({ record: record2, depth, budget }) {
|
|
64083
|
+
const redactedEntries = /* @__PURE__ */ new Map();
|
|
64084
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => Object.hasOwn(record2, contextKey));
|
|
64085
|
+
const keptKeys = [];
|
|
64086
|
+
let isTruncated = false;
|
|
64087
|
+
for (const key in record2) {
|
|
64088
|
+
if (!Object.hasOwn(record2, key)) {
|
|
64089
|
+
continue;
|
|
64090
|
+
}
|
|
64091
|
+
if (keptKeys.length >= MAX_CONTAINER_ENTRIES || key.length > budget.remainingChars) {
|
|
64092
|
+
isTruncated = true;
|
|
64093
|
+
break;
|
|
64094
|
+
}
|
|
64095
|
+
budget.remainingChars -= key.length;
|
|
64096
|
+
keptKeys.push(key);
|
|
64097
|
+
const nestedValue = record2[key];
|
|
64098
|
+
const isSensitiveKey = isRedactedKey({ key }) || carriesOAuthCode && key === OAUTH_CODE_KEY;
|
|
64099
|
+
const shouldRedact = isSensitiveKey && nestedValue != null && typeof nestedValue !== "boolean";
|
|
64100
|
+
if (shouldRedact) {
|
|
64101
|
+
budget.remainingNodes -= 1;
|
|
64102
|
+
}
|
|
64103
|
+
const redactedNestedValue = shouldRedact ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
64104
|
+
if (redactedNestedValue !== nestedValue) {
|
|
64105
|
+
redactedEntries.set(key, redactedNestedValue);
|
|
64106
|
+
}
|
|
64107
|
+
}
|
|
64108
|
+
if (isTruncated) {
|
|
64109
|
+
const keptRecord = {};
|
|
64110
|
+
for (const key of keptKeys) {
|
|
64111
|
+
keptRecord[key] = redactedEntries.has(key) ? redactedEntries.get(key) : record2[key];
|
|
64112
|
+
}
|
|
64113
|
+
keptRecord[TRUNCATED_KEY] = TRUNCATED_VALUE;
|
|
64114
|
+
return keptRecord;
|
|
64115
|
+
}
|
|
64116
|
+
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
64117
|
+
}
|
|
64118
|
+
function redactString({ text, budget }) {
|
|
64119
|
+
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
64120
|
+
return TRUNCATED_VALUE;
|
|
64121
|
+
}
|
|
64122
|
+
if (!isInspectable({ value: text })) {
|
|
64123
|
+
return text;
|
|
64124
|
+
}
|
|
64125
|
+
const trimmedText = text.trim();
|
|
64126
|
+
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
64127
|
+
try {
|
|
64128
|
+
const parsedValue = JSON.parse(trimmedText);
|
|
64129
|
+
const redactedValue = redactValue({
|
|
64130
|
+
value: parsedValue,
|
|
64131
|
+
depth: MAX_REDACTION_DEPTH,
|
|
64132
|
+
budget
|
|
64133
|
+
});
|
|
64134
|
+
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
64135
|
+
} catch {
|
|
64136
|
+
return REDACTED_KEY_CANDIDATE_PATTERN.test(text) ? TRUNCATED_VALUE : redactFormEncoded({ text }) ?? text;
|
|
64137
|
+
}
|
|
64138
|
+
}
|
|
64139
|
+
return redactFormEncoded({ text }) ?? text;
|
|
64140
|
+
}
|
|
64141
|
+
function redactFormEncoded({ text, extraRedactedKeys }) {
|
|
64142
|
+
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
64143
|
+
return void 0;
|
|
64144
|
+
}
|
|
64145
|
+
const params = new URLSearchParams(text);
|
|
64146
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => params.has(contextKey));
|
|
64147
|
+
let hasRedactedParam = false;
|
|
64148
|
+
for (const key of new Set(params.keys())) {
|
|
64149
|
+
if (isRedactedKey({ key }) || extraRedactedKeys?.has(key.toLowerCase()) || carriesOAuthCode && key === OAUTH_CODE_KEY) {
|
|
64150
|
+
params.set(key, REDACTED_VALUE);
|
|
64151
|
+
hasRedactedParam = true;
|
|
64152
|
+
}
|
|
64153
|
+
}
|
|
64154
|
+
return hasRedactedParam ? params.toString() : void 0;
|
|
64155
|
+
}
|
|
64156
|
+
function isRedactedKey({ key }) {
|
|
64157
|
+
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
64158
|
+
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
64159
|
+
}
|
|
64160
|
+
function isInspectable({ value }) {
|
|
64161
|
+
if (typeof value === "string") {
|
|
64162
|
+
return value.length > MAX_PARSED_STRING_LENGTH || /^\s*[{[]/.test(value) || value.includes("=") && REDACTED_KEY_CANDIDATE_PATTERN.test(value);
|
|
64163
|
+
}
|
|
64164
|
+
return value instanceof URLSearchParams || Array.isArray(value) || isPlainObject2(value);
|
|
64165
|
+
}
|
|
64166
|
+
function isPlainObject2(value) {
|
|
64167
|
+
if (typeof value !== "object" || value === null) {
|
|
64168
|
+
return false;
|
|
64169
|
+
}
|
|
64170
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64171
|
+
return prototype === Object.prototype || prototype === null;
|
|
64172
|
+
}
|
|
64173
|
+
|
|
64174
|
+
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
62554
64175
|
var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
|
|
62555
64176
|
function jsonFormat(info) {
|
|
62556
64177
|
const prunedInfo = JSON.parse(prune(info));
|
|
@@ -62611,14 +64232,106 @@ function transformPrune(info) {
|
|
|
62611
64232
|
});
|
|
62612
64233
|
return info;
|
|
62613
64234
|
}
|
|
64235
|
+
var MAX_AXIOS_ERROR_DEPTH = 5;
|
|
64236
|
+
var MAX_AXIOS_ERROR_CONTAINER_ENTRIES = 1e3;
|
|
64237
|
+
var MAX_AXIOS_ERROR_VISITED_NODES = 5e3;
|
|
64238
|
+
var REDACTED_BODY_KEYS = /* @__PURE__ */ new Set(["requestBody", "responseBody"]);
|
|
62614
64239
|
function transformAxiosError(info) {
|
|
62615
|
-
|
|
62616
|
-
|
|
62617
|
-
|
|
64240
|
+
let walk;
|
|
64241
|
+
for (const [key, value] of Object.entries(info)) {
|
|
64242
|
+
if (typeof value !== "object" || value === null || REDACTED_BODY_KEYS.has(key)) {
|
|
64243
|
+
continue;
|
|
62618
64244
|
}
|
|
62619
|
-
|
|
64245
|
+
walk ??= {
|
|
64246
|
+
formatted: /* @__PURE__ */ new Map(),
|
|
64247
|
+
remainingNodes: MAX_AXIOS_ERROR_VISITED_NODES
|
|
64248
|
+
};
|
|
64249
|
+
const formattedValue = formatNestedAxiosErrors({
|
|
64250
|
+
value,
|
|
64251
|
+
depth: MAX_AXIOS_ERROR_DEPTH,
|
|
64252
|
+
walk
|
|
64253
|
+
});
|
|
64254
|
+
if (formattedValue !== value) {
|
|
64255
|
+
info[key] = formattedValue;
|
|
64256
|
+
}
|
|
64257
|
+
}
|
|
62620
64258
|
return info;
|
|
62621
64259
|
}
|
|
64260
|
+
function formatNestedAxiosErrors({ value, depth, walk }) {
|
|
64261
|
+
if (typeof value !== "object" || value === null) {
|
|
64262
|
+
return value;
|
|
64263
|
+
}
|
|
64264
|
+
if (walk.formatted.has(value)) {
|
|
64265
|
+
return walk.formatted.get(value);
|
|
64266
|
+
}
|
|
64267
|
+
if (Reflect.get(value, "name") === "AxiosError") {
|
|
64268
|
+
const formattedError = walk.remainingNodes > 0 ? formatAxiosError(value) : summarizeAxiosError({ error: value });
|
|
64269
|
+
walk.remainingNodes -= 1;
|
|
64270
|
+
walk.formatted.set(value, formattedError);
|
|
64271
|
+
return formattedError;
|
|
64272
|
+
}
|
|
64273
|
+
const isWalkable = Array.isArray(value) || value instanceof Error || isPlainRecord(value);
|
|
64274
|
+
if (!isWalkable || depth <= 0 || walk.remainingNodes <= 0) {
|
|
64275
|
+
return value;
|
|
64276
|
+
}
|
|
64277
|
+
walk.formatted.set(value, "[Circular]");
|
|
64278
|
+
walk.remainingNodes -= 1;
|
|
64279
|
+
const formattedValue = formatWalkableValue({ value, depth, walk });
|
|
64280
|
+
walk.formatted.set(value, formattedValue);
|
|
64281
|
+
return formattedValue;
|
|
64282
|
+
}
|
|
64283
|
+
function summarizeAxiosError({ error: error48 }) {
|
|
64284
|
+
return {
|
|
64285
|
+
name: Reflect.get(error48, "name"),
|
|
64286
|
+
message: Reflect.get(error48, "message"),
|
|
64287
|
+
code: Reflect.get(error48, "code")
|
|
64288
|
+
};
|
|
64289
|
+
}
|
|
64290
|
+
function formatWalkableValue({ value, depth, walk }) {
|
|
64291
|
+
if (Array.isArray(value)) {
|
|
64292
|
+
if (value.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64293
|
+
return value;
|
|
64294
|
+
}
|
|
64295
|
+
let formattedItems;
|
|
64296
|
+
for (const [index, item] of value.entries()) {
|
|
64297
|
+
const formattedItem = formatNestedAxiosErrors({
|
|
64298
|
+
value: item,
|
|
64299
|
+
depth: depth - 1,
|
|
64300
|
+
walk
|
|
64301
|
+
});
|
|
64302
|
+
if (formattedItem !== item) {
|
|
64303
|
+
formattedItems ??= [...value];
|
|
64304
|
+
formattedItems[index] = formattedItem;
|
|
64305
|
+
}
|
|
64306
|
+
}
|
|
64307
|
+
return formattedItems ?? value;
|
|
64308
|
+
}
|
|
64309
|
+
const keys = Object.keys(value);
|
|
64310
|
+
if (keys.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64311
|
+
return value;
|
|
64312
|
+
}
|
|
64313
|
+
const formattedEntries = /* @__PURE__ */ new Map();
|
|
64314
|
+
for (const key of keys) {
|
|
64315
|
+
const nestedValue = Reflect.get(value, key);
|
|
64316
|
+
const formattedNestedValue = formatNestedAxiosErrors({
|
|
64317
|
+
value: nestedValue,
|
|
64318
|
+
depth: depth - 1,
|
|
64319
|
+
walk
|
|
64320
|
+
});
|
|
64321
|
+
if (formattedNestedValue !== nestedValue) {
|
|
64322
|
+
formattedEntries.set(key, formattedNestedValue);
|
|
64323
|
+
}
|
|
64324
|
+
}
|
|
64325
|
+
if (formattedEntries.size === 0) {
|
|
64326
|
+
return value;
|
|
64327
|
+
}
|
|
64328
|
+
return {
|
|
64329
|
+
...value,
|
|
64330
|
+
// Error properties are not enumerable, so the spread would drop them.
|
|
64331
|
+
...value instanceof Error ? { name: value.name, message: value.message, stack: value.stack } : {},
|
|
64332
|
+
...Object.fromEntries(formattedEntries)
|
|
64333
|
+
};
|
|
64334
|
+
}
|
|
62622
64335
|
function formatAxiosError(error48) {
|
|
62623
64336
|
if (!isRecord(error48) || error48.name !== "AxiosError") {
|
|
62624
64337
|
return error48;
|
|
@@ -62631,9 +64344,9 @@ function formatAxiosError(error48) {
|
|
|
62631
64344
|
code: error48.code,
|
|
62632
64345
|
request: {
|
|
62633
64346
|
method: request?.method,
|
|
62634
|
-
url: request?.url,
|
|
64347
|
+
url: typeof request?.url === "string" ? redactLogUrl({ url: request.url }) : request?.url,
|
|
62635
64348
|
baseURL: request?.baseURL,
|
|
62636
|
-
params: request?.params,
|
|
64349
|
+
params: redactLogBody({ body: request?.params }),
|
|
62637
64350
|
headers: redactHeaders({ headers: request?.headers }),
|
|
62638
64351
|
"axios-retry": request?.["axios-retry"]
|
|
62639
64352
|
},
|
|
@@ -62641,7 +64354,7 @@ function formatAxiosError(error48) {
|
|
|
62641
64354
|
status: response?.status,
|
|
62642
64355
|
statusText: response?.statusText,
|
|
62643
64356
|
headers: redactHeaders({ headers: response?.headers }),
|
|
62644
|
-
data: response?.data
|
|
64357
|
+
data: redactLogBody({ body: response?.data })
|
|
62645
64358
|
}
|
|
62646
64359
|
};
|
|
62647
64360
|
}
|
|
@@ -62654,6 +64367,10 @@ function redactHeaders({ headers }) {
|
|
|
62654
64367
|
REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
|
|
62655
64368
|
]));
|
|
62656
64369
|
}
|
|
64370
|
+
function isPlainRecord(value) {
|
|
64371
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64372
|
+
return prototype === Object.prototype || prototype === null;
|
|
64373
|
+
}
|
|
62657
64374
|
function isRecord(value) {
|
|
62658
64375
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
62659
64376
|
}
|
|
@@ -62683,7 +64400,7 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
62683
64400
|
const responseMetadata = {
|
|
62684
64401
|
statusCode,
|
|
62685
64402
|
responseTime,
|
|
62686
|
-
responseBody,
|
|
64403
|
+
responseBody: redactLogBody({ body: responseBody }),
|
|
62687
64404
|
// Redacted so secrets (authorization/cookie/token/…) never reach the logs
|
|
62688
64405
|
// while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
|
|
62689
64406
|
responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
|
|
@@ -62696,14 +64413,15 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
62696
64413
|
}
|
|
62697
64414
|
function transform2(request) {
|
|
62698
64415
|
const method = request.method.toUpperCase();
|
|
62699
|
-
const
|
|
64416
|
+
const originalUrl = redactLogUrl({ url: request.originalUrl });
|
|
64417
|
+
const message = `${method} ${originalUrl}`;
|
|
62700
64418
|
const metadata = {};
|
|
62701
64419
|
metadata.method = method;
|
|
62702
|
-
metadata.url = request.url;
|
|
62703
|
-
metadata.path = request.path;
|
|
64420
|
+
metadata.url = redactLogUrl({ url: request.url });
|
|
64421
|
+
metadata.path = redactLogUrl({ url: request.path });
|
|
62704
64422
|
metadata.hostname = request.hostname;
|
|
62705
|
-
metadata.originalUrl =
|
|
62706
|
-
metadata.requestBody =
|
|
64423
|
+
metadata.originalUrl = originalUrl;
|
|
64424
|
+
metadata.requestBody = redactLogBody({ body: request.body });
|
|
62707
64425
|
metadata.routePath = transformUrlIntoRoutePath(request);
|
|
62708
64426
|
metadata.apiKeyEnd = request.headers["authorization"]?.slice(-6);
|
|
62709
64427
|
return { message, metadata };
|
|
@@ -62750,7 +64468,16 @@ function buildLoggerFactory({ config: config4, context }) {
|
|
|
62750
64468
|
const internalLogger = winston.createLogger({
|
|
62751
64469
|
transports: transports2,
|
|
62752
64470
|
defaultMeta,
|
|
62753
|
-
format: winston.format.combine(
|
|
64471
|
+
format: winston.format.combine(
|
|
64472
|
+
winston.format.splat(),
|
|
64473
|
+
winston.format(addMetadata({ getCorrelationId, getExecutionContext }))(),
|
|
64474
|
+
// Before pruning: json-prune would otherwise serialize a binary
|
|
64475
|
+
// `response.data` byte by byte before it is summarised (#6006).
|
|
64476
|
+
winston.format(transformAxiosError)(),
|
|
64477
|
+
winston.format(transformErrorEnrich)({ depth: 5 }),
|
|
64478
|
+
winston.format(transformPrune)(),
|
|
64479
|
+
winston.format.timestamp()
|
|
64480
|
+
),
|
|
62754
64481
|
exitOnError: false
|
|
62755
64482
|
});
|
|
62756
64483
|
function createLogger3({ serviceName }) {
|
|
@@ -65082,6 +66809,8 @@ var usStates = [
|
|
|
65082
66809
|
|
|
65083
66810
|
// ../hyperline-lib/build/utils/dates.js
|
|
65084
66811
|
var import_shared2 = __toESM(require_shared(), 1);
|
|
66812
|
+
var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
|
|
66813
|
+
var DST_SHIFT_MS = 60 * 60 * 1e3;
|
|
65085
66814
|
|
|
65086
66815
|
// ../hyperline-lib/build/utils/document.js
|
|
65087
66816
|
var import_shared3 = __toESM(require_shared(), 1);
|
|
@@ -65093,6 +66822,24 @@ import * as https from "node:https";
|
|
|
65093
66822
|
import { createHash as createHash2 } from "node:crypto";
|
|
65094
66823
|
import { deepEqual } from "fast-equals";
|
|
65095
66824
|
|
|
66825
|
+
// ../hyperline-lib/build/utils/realignDatesToTimezone.js
|
|
66826
|
+
var import_shared4 = __toESM(require_shared(), 1);
|
|
66827
|
+
var MILLISECONDS_PER_HOUR = 60 * 60 * 1e3;
|
|
66828
|
+
var MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;
|
|
66829
|
+
var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
|
|
66830
|
+
var dateRealignmentModeSchema = external_exports.enum([
|
|
66831
|
+
"utc_midnight_import",
|
|
66832
|
+
"dst_hour_drift",
|
|
66833
|
+
"month_start_drift",
|
|
66834
|
+
"manual_phase_end_midnight"
|
|
66835
|
+
]).default("utc_midnight_import");
|
|
66836
|
+
var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
|
|
66837
|
+
[23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66838
|
+
[LAST_MILLISECOND_OF_DAY - MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66839
|
+
[MILLISECONDS_PER_HOUR, -MILLISECONDS_PER_HOUR],
|
|
66840
|
+
[MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
|
|
66841
|
+
]);
|
|
66842
|
+
|
|
65096
66843
|
// ../hyperline-lib/build/utils/api/filterBuilder.js
|
|
65097
66844
|
var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
|
|
65098
66845
|
var booleanAuthorizedOperators = [
|
|
@@ -65159,7 +66906,7 @@ var isAxiosError = axios.isAxiosError;
|
|
|
65159
66906
|
|
|
65160
66907
|
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
65161
66908
|
import axios2 from "axios";
|
|
65162
|
-
import axiosRetry, { isNetworkOrIdempotentRequestError } from "axios-retry";
|
|
66909
|
+
import axiosRetry, { isNetworkOrIdempotentRequestError, retryAfter } from "axios-retry";
|
|
65163
66910
|
import { AxiosError } from "axios";
|
|
65164
66911
|
var recommendedRetryConfig = {
|
|
65165
66912
|
retries: 3,
|
|
@@ -65227,12 +66974,13 @@ function isTooManyRequestsError(error48) {
|
|
|
65227
66974
|
return error48.response?.status === 429;
|
|
65228
66975
|
}
|
|
65229
66976
|
var toLogRequest = (config4) => {
|
|
66977
|
+
const url2 = config4.url ?? "";
|
|
65230
66978
|
return {
|
|
65231
66979
|
method: config4.method ?? "",
|
|
65232
|
-
url:
|
|
65233
|
-
path:
|
|
66980
|
+
url: url2,
|
|
66981
|
+
path: url2,
|
|
65234
66982
|
hostname: config4.baseURL ?? "",
|
|
65235
|
-
originalUrl: `${config4.baseURL ?? ""}${
|
|
66983
|
+
originalUrl: `${config4.baseURL ?? ""}${url2}`,
|
|
65236
66984
|
body: config4.data,
|
|
65237
66985
|
headers: {}
|
|
65238
66986
|
};
|
|
@@ -65253,9 +67001,13 @@ import multer2 from "multer";
|
|
|
65253
67001
|
// ../hyperline-lib/build/httpRouter/file.js
|
|
65254
67002
|
import helmet from "helmet";
|
|
65255
67003
|
|
|
65256
|
-
// ../hyperline-lib/build/publicApi/auth/
|
|
67004
|
+
// ../hyperline-lib/build/publicApi/auth/apiKey.js
|
|
65257
67005
|
import { randomBytes as randomBytes2, scryptSync } from "node:crypto";
|
|
65258
67006
|
|
|
67007
|
+
// ../hyperline-lib/build/publicApi/auth/apiKeyHashCache.js
|
|
67008
|
+
import { createHash as createHash4 } from "node:crypto";
|
|
67009
|
+
var TTL_MS = 5 * 6e4;
|
|
67010
|
+
|
|
65259
67011
|
// ../hyperline-mcp/build/requestBuilder.js
|
|
65260
67012
|
function buildRequestConfig(path2, args, method, queryParamKeys = []) {
|
|
65261
67013
|
const { url: url2, usedKeys } = replacePathParams(path2, args);
|