@hyperline/cli 0.1.0-build.1.ed8c065 → 0.1.0-build.1.ee01a0a
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 +1271 -605
- package/package.json +1 -1
|
@@ -33833,7 +33833,7 @@ var require_shared = __commonJS({
|
|
|
33833
33833
|
getNameForCurrency: () => getNameForCurrency,
|
|
33834
33834
|
getNaturalNumber: () => getNaturalNumber,
|
|
33835
33835
|
getSymbolForCurrency: () => getSymbolForCurrency,
|
|
33836
|
-
getTimezoneByName: () =>
|
|
33836
|
+
getTimezoneByName: () => getTimezoneByName2,
|
|
33837
33837
|
getTimezoneOffsetName: () => getTimezoneOffsetName,
|
|
33838
33838
|
getTimezones: () => getTimezones2,
|
|
33839
33839
|
getValidTimezonesNames: () => getValidTimezonesNames,
|
|
@@ -33850,7 +33850,7 @@ var require_shared = __commonJS({
|
|
|
33850
33850
|
subtract: () => subtract,
|
|
33851
33851
|
sum: () => sum2,
|
|
33852
33852
|
toLocalTime: () => toLocalTime3,
|
|
33853
|
-
toUtc: () =>
|
|
33853
|
+
toUtc: () => toUtc3,
|
|
33854
33854
|
useDebounce: () => useDebounce
|
|
33855
33855
|
});
|
|
33856
33856
|
module.exports = __toCommonJS(shared_exports);
|
|
@@ -34985,10 +34985,10 @@ var require_shared = __commonJS({
|
|
|
34985
34985
|
ZodId: () => ZodId,
|
|
34986
34986
|
ZodTranslationsSchemaFn: () => ZodTranslationsSchemaFn
|
|
34987
34987
|
});
|
|
34988
|
-
var
|
|
34988
|
+
var import_zod22 = require_lib();
|
|
34989
34989
|
var countryIds2 = ["all", ...countries.map(({ id }) => id)];
|
|
34990
|
-
var ZodId =
|
|
34991
|
-
var ZodTranslationsSchemaFn = (schema) =>
|
|
34990
|
+
var ZodId = import_zod22.z.enum(countryIds2);
|
|
34991
|
+
var ZodTranslationsSchemaFn = (schema) => import_zod22.z.record(import_zod22.z.string(), schema.optional());
|
|
34992
34992
|
var UsStates = [
|
|
34993
34993
|
{ id: "AA", name: "Armed Forces Americas" },
|
|
34994
34994
|
{ id: "AE", name: "Armed Forces Europe" },
|
|
@@ -36287,14 +36287,14 @@ var require_shared = __commonJS({
|
|
|
36287
36287
|
ZodNumberCurrencyPositiveValue: () => ZodNumberCurrencyPositiveValue,
|
|
36288
36288
|
ZodNumberCurrencyPositiveValueExcludingZero: () => ZodNumberCurrencyPositiveValueExcludingZero
|
|
36289
36289
|
});
|
|
36290
|
-
var
|
|
36291
|
-
var ZodCurrencyId =
|
|
36290
|
+
var import_zod23 = require_lib();
|
|
36291
|
+
var ZodCurrencyId = import_zod23.z.enum(
|
|
36292
36292
|
all_default.map(({ id }) => id)
|
|
36293
36293
|
);
|
|
36294
|
-
var ZodNumberCurrency =
|
|
36295
|
-
var ZodNumberCurrencyPositiveValue =
|
|
36296
|
-
var ZodNumberCurrencyPositiveValueExcludingZero =
|
|
36297
|
-
var ZodCurrencyMap =
|
|
36294
|
+
var ZodNumberCurrency = import_zod23.z.string().or(import_zod23.z.number().transform((number4) => number4)).transform((number4) => number4);
|
|
36295
|
+
var ZodNumberCurrencyPositiveValue = import_zod23.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
|
|
36296
|
+
var ZodNumberCurrencyPositiveValueExcludingZero = import_zod23.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
|
|
36297
|
+
var ZodCurrencyMap = import_zod23.z.record(ZodNumberCurrency).refine(
|
|
36298
36298
|
(data) => Object.keys(data).every((key) => ZodCurrencyId.safeParse(key).success),
|
|
36299
36299
|
{
|
|
36300
36300
|
message: "Invalid currency key.",
|
|
@@ -36557,14 +36557,14 @@ var require_shared = __commonJS({
|
|
|
36557
36557
|
function getTimezones2() {
|
|
36558
36558
|
return timezones;
|
|
36559
36559
|
}
|
|
36560
|
-
function
|
|
36560
|
+
function getTimezoneByName2(tz) {
|
|
36561
36561
|
var _a2;
|
|
36562
36562
|
if (tz === "UTC") {
|
|
36563
36563
|
return timezones.find(({ name }) => name === "Etc/UTC");
|
|
36564
36564
|
}
|
|
36565
36565
|
return (_a2 = timezones.find(({ name }) => name === tz)) != null ? _a2 : timezones.find(({ group }) => group.includes(tz));
|
|
36566
36566
|
}
|
|
36567
|
-
function
|
|
36567
|
+
function toUtc3(date5, timezone) {
|
|
36568
36568
|
return (0, import_date_fns_tz.fromZonedTime)(date5, timezone);
|
|
36569
36569
|
}
|
|
36570
36570
|
function toLocalTime3(date5, localTimezone) {
|
|
@@ -36575,7 +36575,7 @@ var require_shared = __commonJS({
|
|
|
36575
36575
|
);
|
|
36576
36576
|
var constructDateFromTimezoneToLocal = (date5, timezone) => {
|
|
36577
36577
|
if (!timezone) return date5;
|
|
36578
|
-
const timezoneObj =
|
|
36578
|
+
const timezoneObj = getTimezoneByName2(timezone);
|
|
36579
36579
|
if (!timezoneObj) return date5;
|
|
36580
36580
|
const dateAtTimezone = new Date(
|
|
36581
36581
|
date5.getFullYear(),
|
|
@@ -38483,7 +38483,7 @@ Examples:
|
|
|
38483
38483
|
queryParamKeys: []
|
|
38484
38484
|
});
|
|
38485
38485
|
});
|
|
38486
|
-
resource.command("delete-ledger").description(`
|
|
38486
|
+
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
38487
|
Examples:
|
|
38488
38488
|
hyperline accounting-ledgers delete-ledger --id <id>
|
|
38489
38489
|
hyperline accounting-ledgers delete-ledger --id <id> --output json`).action(async (opts) => {
|
|
@@ -38941,7 +38941,7 @@ Examples:
|
|
|
38941
38941
|
]
|
|
38942
38942
|
});
|
|
38943
38943
|
});
|
|
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", `
|
|
38944
|
+
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
38945
|
Examples:
|
|
38946
38946
|
hyperline accounting-rules get-accounting-rule-tree
|
|
38947
38947
|
hyperline accounting-rules get-accounting-rule-tree --ledger-id <ledger_id> --invoicing-entity-id <invoicing_entity_id>`).action(async (opts) => {
|
|
@@ -39013,7 +39013,7 @@ Examples:
|
|
|
39013
39013
|
queryParamKeys: []
|
|
39014
39014
|
});
|
|
39015
39015
|
});
|
|
39016
|
-
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Use an asset account for doubtful-receivable reclassification or an expense account for direct write-off.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39016
|
+
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Use an asset account for doubtful-receivable reclassification or an expense account for direct write-off.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39017
39017
|
Examples:
|
|
39018
39018
|
hyperline accounting-rules create --category <category> --priority <priority>
|
|
39019
39019
|
hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
|
|
@@ -39078,6 +39078,8 @@ Examples:
|
|
|
39078
39078
|
args.client_provider_ids = JSON.parse(opts.clientProviderIds);
|
|
39079
39079
|
if (opts.paymentMethodTypes !== void 0)
|
|
39080
39080
|
args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
|
|
39081
|
+
if (opts.customPropertyFilters !== void 0)
|
|
39082
|
+
args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
|
|
39081
39083
|
await ctx.execute({
|
|
39082
39084
|
method: "POST",
|
|
39083
39085
|
path: "/v1/accounting/rules",
|
|
@@ -39085,7 +39087,7 @@ Examples:
|
|
|
39085
39087
|
queryParamKeys: []
|
|
39086
39088
|
});
|
|
39087
39089
|
});
|
|
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
|
|
39090
|
+
resource.command("update").description(`Update an existing accounting rule.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Use an asset account for doubtful-receivable reclassification or an expense account for direct write-off.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39089
39091
|
Examples:
|
|
39090
39092
|
hyperline accounting-rules update --id <id>
|
|
39091
39093
|
hyperline accounting-rules update --id <id> --name <name> --category <category>
|
|
@@ -39150,6 +39152,8 @@ Examples:
|
|
|
39150
39152
|
args.client_provider_ids = JSON.parse(opts.clientProviderIds);
|
|
39151
39153
|
if (opts.paymentMethodTypes !== void 0)
|
|
39152
39154
|
args.payment_method_types = JSON.parse(opts.paymentMethodTypes);
|
|
39155
|
+
if (opts.customPropertyFilters !== void 0)
|
|
39156
|
+
args.custom_property_filters = JSON.parse(opts.customPropertyFilters);
|
|
39153
39157
|
await ctx.execute({
|
|
39154
39158
|
method: "PUT",
|
|
39155
39159
|
path: "/v1/accounting/rules/{id}",
|
|
@@ -39183,7 +39187,7 @@ Examples:
|
|
|
39183
39187
|
queryParamKeys: []
|
|
39184
39188
|
});
|
|
39185
39189
|
});
|
|
39186
|
-
resource.command("resolve").description(`Preview which account codes would be resolved for a given context.`).requiredOption("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).option("--product-id <value>", `Product ID to resolve against.`).option("--product-type <value>", `Product type to resolve against.`).option("--currency <value>", `Currency code to resolve against.`).option("--country <value>", `Country code to resolve against.`).option("--customer-id <value>", `Customer ID to resolve against.`).option("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).addHelpText("after", `
|
|
39190
|
+
resource.command("resolve").description(`Preview which account codes would be resolved for a given context.`).requiredOption("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).option("--product-id <value>", `Product ID to resolve against.`).option("--product-type <value>", `Product type to resolve against.`).option("--currency <value>", `Currency code to resolve against.`).option("--country <value>", `Country code to resolve against.`).option("--customer-id <value>", `Customer ID to resolve against.`).option("--invoice-type <value>", `Invoice kind to resolve against. Accepts \`invoice\` or \`document\`; any other invoice kind is matched as \`invoice\`.`).option("--interval-period <value>", `Billing interval period filter (month, year, etc.).`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-properties <json>", `Invoice custom property values to resolve against, keyed by custom property slug. Unknown slugs and null values are ignored. Rules with custom property filters never match without them.`).addHelpText("after", `
|
|
39187
39191
|
Examples:
|
|
39188
39192
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category>
|
|
39189
39193
|
hyperline accounting-rules resolve --ledger-id <ledger_id> --category <category> --product-id <product_id> --product-type <product_type>
|
|
@@ -39214,6 +39218,8 @@ Examples:
|
|
|
39214
39218
|
args.interval_period = opts.intervalPeriod;
|
|
39215
39219
|
if (opts.intervalCount !== void 0)
|
|
39216
39220
|
args.interval_count = Number(opts.intervalCount);
|
|
39221
|
+
if (opts.customProperties !== void 0)
|
|
39222
|
+
args.custom_properties = JSON.parse(opts.customProperties);
|
|
39217
39223
|
await ctx.execute({
|
|
39218
39224
|
method: "POST",
|
|
39219
39225
|
path: "/v1/accounting/rules/resolve",
|
|
@@ -39223,146 +39229,158 @@ Examples:
|
|
|
39223
39229
|
});
|
|
39224
39230
|
}
|
|
39225
39231
|
|
|
39226
|
-
// build/commands/generated/
|
|
39227
|
-
function
|
|
39228
|
-
const resource = parent.command("
|
|
39229
|
-
resource.command("list
|
|
39232
|
+
// build/commands/generated/aggregators.js
|
|
39233
|
+
function registerAggregatorsCommands(parent) {
|
|
39234
|
+
const resource = parent.command("aggregators").description("Manage aggregators");
|
|
39235
|
+
resource.command("list").description(`List all aggregators with pagination. Aggregators define how billable events are counted or summed to compute usage.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39230
39236
|
Examples:
|
|
39231
|
-
hyperline
|
|
39232
|
-
hyperline
|
|
39237
|
+
hyperline aggregators list
|
|
39238
|
+
hyperline aggregators list --take <take>`).action(async (opts) => {
|
|
39233
39239
|
const ctx = resource.parent?.opts()._ctx;
|
|
39234
39240
|
if (!ctx) {
|
|
39235
39241
|
process.stderr.write("Error: Not authenticated\n");
|
|
39236
39242
|
process.exit(1);
|
|
39237
39243
|
}
|
|
39238
39244
|
const args = {};
|
|
39239
|
-
if (opts.mode !== void 0)
|
|
39240
|
-
args.mode = opts.mode;
|
|
39241
39245
|
if (opts.take !== void 0)
|
|
39242
39246
|
args.take = Number(opts.take);
|
|
39243
39247
|
if (opts.skip !== void 0)
|
|
39244
39248
|
args.skip = Number(opts.skip);
|
|
39245
39249
|
await ctx.execute({
|
|
39246
39250
|
method: "GET",
|
|
39247
|
-
path: "/v1/
|
|
39251
|
+
path: "/v1/aggregators",
|
|
39248
39252
|
args,
|
|
39249
|
-
queryParamKeys: ["
|
|
39253
|
+
queryParamKeys: ["take", "skip"]
|
|
39250
39254
|
});
|
|
39251
39255
|
});
|
|
39252
|
-
resource.command("create
|
|
39256
|
+
resource.command("create").description(`Create a new aggregator that counts or sums billable events. Aggregators can then be linked to products via aggregator_id.`).requiredOption("--entity <value>", `The billable event entity to aggregate.`).option("--type <value>", `The type of aggregator.`).option("--where <json>", `Filter conditions for the aggregation.`).option("--name <value>", `Name of the aggregator.`).option("--description <value>", `Description of the aggregator.`).option("--allow-negative-values", `Whether the aggregator can produce negative values.`).option("--aggregate-on-customers-enabled", `Whether the aggregator should aggregate on customers.`).option("--custom-event-name <value>", `Custom event name for the aggregator.`).option("--exposed-event-keys <json>", `Event keys exposed by the aggregator.`).option("--unit-name <value>", `Display name of the unit being measured (e.g. 'user', 'request'). Used as fallback for products attached to this aggregator.`).option("--default-interval-count <number>", `Default interval count for usage periods.`).option("--default-interval-period <value>", `Default interval period for usage periods.`).option("--thresholds <json>", `Thresholds for the aggregator.`).requiredOption("--operation <value>", `The aggregation operation to perform.`).option("--property <value>", `The property to sum.`).addHelpText("after", `
|
|
39253
39257
|
Examples:
|
|
39254
|
-
hyperline
|
|
39255
|
-
hyperline
|
|
39256
|
-
hyperline
|
|
39258
|
+
hyperline aggregators create --entity <entity> --operation <operation>
|
|
39259
|
+
hyperline aggregators create --entity <entity> --operation <operation> --type <type> --where <where>
|
|
39260
|
+
hyperline aggregators create --entity <entity> --operation <operation> --output json`).action(async (opts) => {
|
|
39257
39261
|
const ctx = resource.parent?.opts()._ctx;
|
|
39258
39262
|
if (!ctx) {
|
|
39259
39263
|
process.stderr.write("Error: Not authenticated\n");
|
|
39260
39264
|
process.exit(1);
|
|
39261
39265
|
}
|
|
39262
39266
|
const args = {};
|
|
39267
|
+
if (opts.entity !== void 0)
|
|
39268
|
+
args.entity = opts.entity;
|
|
39269
|
+
if (opts.type !== void 0)
|
|
39270
|
+
args.type = opts.type;
|
|
39263
39271
|
if (opts.name !== void 0)
|
|
39264
39272
|
args.name = opts.name;
|
|
39265
|
-
if (opts.
|
|
39266
|
-
args.
|
|
39267
|
-
if (opts.
|
|
39268
|
-
args.
|
|
39269
|
-
if (opts.
|
|
39270
|
-
args.
|
|
39271
|
-
if (opts.
|
|
39272
|
-
args.
|
|
39273
|
-
if (opts.
|
|
39274
|
-
args.
|
|
39275
|
-
if (opts.
|
|
39276
|
-
args.
|
|
39277
|
-
if (opts.
|
|
39278
|
-
args.
|
|
39279
|
-
if (opts.
|
|
39280
|
-
args.
|
|
39281
|
-
if (opts.
|
|
39282
|
-
args.
|
|
39283
|
-
if (opts.
|
|
39284
|
-
args.
|
|
39285
|
-
if (opts.
|
|
39286
|
-
args.
|
|
39273
|
+
if (opts.description !== void 0)
|
|
39274
|
+
args.description = opts.description;
|
|
39275
|
+
if (opts.customEventName !== void 0)
|
|
39276
|
+
args.custom_event_name = opts.customEventName;
|
|
39277
|
+
if (opts.unitName !== void 0)
|
|
39278
|
+
args.unit_name = opts.unitName;
|
|
39279
|
+
if (opts.defaultIntervalPeriod !== void 0)
|
|
39280
|
+
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
39281
|
+
if (opts.operation !== void 0)
|
|
39282
|
+
args.operation = opts.operation;
|
|
39283
|
+
if (opts.property !== void 0)
|
|
39284
|
+
args.property = opts.property;
|
|
39285
|
+
if (opts.defaultIntervalCount !== void 0)
|
|
39286
|
+
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
39287
|
+
if (opts.allowNegativeValues !== void 0)
|
|
39288
|
+
args.allow_negative_values = true;
|
|
39289
|
+
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
39290
|
+
args.aggregate_on_customers_enabled = true;
|
|
39291
|
+
if (opts.where !== void 0)
|
|
39292
|
+
args.where = JSON.parse(opts.where);
|
|
39293
|
+
if (opts.exposedEventKeys !== void 0)
|
|
39294
|
+
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
39295
|
+
if (opts.thresholds !== void 0)
|
|
39296
|
+
args.thresholds = JSON.parse(opts.thresholds);
|
|
39287
39297
|
await ctx.execute({
|
|
39288
39298
|
method: "POST",
|
|
39289
|
-
path: "/v1/
|
|
39299
|
+
path: "/v1/aggregators",
|
|
39290
39300
|
args,
|
|
39291
39301
|
queryParamKeys: []
|
|
39292
39302
|
});
|
|
39293
39303
|
});
|
|
39294
|
-
resource.command("get
|
|
39304
|
+
resource.command("get").description(`Retrieve a specific aggregator by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39295
39305
|
Examples:
|
|
39296
|
-
hyperline
|
|
39306
|
+
hyperline aggregators get --id <id>`).action(async (opts) => {
|
|
39297
39307
|
const ctx = resource.parent?.opts()._ctx;
|
|
39298
39308
|
if (!ctx) {
|
|
39299
39309
|
process.stderr.write("Error: Not authenticated\n");
|
|
39300
39310
|
process.exit(1);
|
|
39301
39311
|
}
|
|
39302
39312
|
const args = {};
|
|
39303
|
-
if (opts.
|
|
39304
|
-
args.
|
|
39313
|
+
if (opts.id !== void 0)
|
|
39314
|
+
args.id = opts.id;
|
|
39305
39315
|
await ctx.execute({
|
|
39306
39316
|
method: "GET",
|
|
39307
|
-
path: "/v1/
|
|
39317
|
+
path: "/v1/aggregators/{id}",
|
|
39308
39318
|
args,
|
|
39309
39319
|
queryParamKeys: []
|
|
39310
39320
|
});
|
|
39311
39321
|
});
|
|
39312
|
-
resource.command("
|
|
39322
|
+
resource.command("update").description(`Update an existing aggregator's configuration.`).requiredOption("--id <value>", `id parameter`).option("--entity <value>", `The billable event entity to aggregate.`).option("--type <value>", `The type of aggregator.`).option("--where <json>", `Filter conditions for the aggregation.`).option("--name <value>", `Name of the aggregator.`).option("--description <value>", `Description of the aggregator.`).option("--allow-negative-values", `Whether the aggregator can produce negative values.`).option("--aggregate-on-customers-enabled", `Whether the aggregator should aggregate on customers.`).option("--custom-event-name <value>", `Custom event name for the aggregator.`).option("--exposed-event-keys <json>", `Event keys exposed by the aggregator.`).option("--unit-name <value>", `Display name of the unit being measured (e.g. 'user', 'request'). Used as fallback for products attached to this aggregator.`).option("--default-interval-count <number>", `Default interval count for usage periods.`).option("--default-interval-period <value>", `Default interval period for usage periods.`).option("--thresholds <json>", `Thresholds for the aggregator. Replaces existing thresholds.`).option("--operation <value>", `The aggregation operation to perform.`).option("--property <value>", `The property to sum. Required when operation is 'sum'.`).addHelpText("after", `
|
|
39313
39323
|
Examples:
|
|
39314
|
-
hyperline
|
|
39315
|
-
hyperline
|
|
39316
|
-
hyperline
|
|
39324
|
+
hyperline aggregators update --id <id>
|
|
39325
|
+
hyperline aggregators update --id <id> --entity <entity> --type <type>
|
|
39326
|
+
hyperline aggregators update --id <id> --output json`).action(async (opts) => {
|
|
39317
39327
|
const ctx = resource.parent?.opts()._ctx;
|
|
39318
39328
|
if (!ctx) {
|
|
39319
39329
|
process.stderr.write("Error: Not authenticated\n");
|
|
39320
39330
|
process.exit(1);
|
|
39321
39331
|
}
|
|
39322
39332
|
const args = {};
|
|
39323
|
-
if (opts.
|
|
39324
|
-
args.
|
|
39333
|
+
if (opts.id !== void 0)
|
|
39334
|
+
args.id = opts.id;
|
|
39335
|
+
if (opts.entity !== void 0)
|
|
39336
|
+
args.entity = opts.entity;
|
|
39337
|
+
if (opts.type !== void 0)
|
|
39338
|
+
args.type = opts.type;
|
|
39325
39339
|
if (opts.name !== void 0)
|
|
39326
39340
|
args.name = opts.name;
|
|
39327
|
-
if (opts.
|
|
39328
|
-
args.
|
|
39329
|
-
if (opts.
|
|
39330
|
-
args.
|
|
39331
|
-
if (opts.
|
|
39332
|
-
args.
|
|
39333
|
-
if (opts.
|
|
39334
|
-
args.
|
|
39335
|
-
if (opts.
|
|
39336
|
-
args.
|
|
39337
|
-
if (opts.
|
|
39338
|
-
args.
|
|
39339
|
-
if (opts.
|
|
39340
|
-
args.
|
|
39341
|
-
if (opts.
|
|
39342
|
-
args.
|
|
39343
|
-
if (opts.
|
|
39344
|
-
args.
|
|
39345
|
-
if (opts.
|
|
39346
|
-
args.
|
|
39341
|
+
if (opts.description !== void 0)
|
|
39342
|
+
args.description = opts.description;
|
|
39343
|
+
if (opts.customEventName !== void 0)
|
|
39344
|
+
args.custom_event_name = opts.customEventName;
|
|
39345
|
+
if (opts.unitName !== void 0)
|
|
39346
|
+
args.unit_name = opts.unitName;
|
|
39347
|
+
if (opts.defaultIntervalPeriod !== void 0)
|
|
39348
|
+
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
39349
|
+
if (opts.operation !== void 0)
|
|
39350
|
+
args.operation = opts.operation;
|
|
39351
|
+
if (opts.property !== void 0)
|
|
39352
|
+
args.property = opts.property;
|
|
39353
|
+
if (opts.defaultIntervalCount !== void 0)
|
|
39354
|
+
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
39355
|
+
if (opts.allowNegativeValues !== void 0)
|
|
39356
|
+
args.allow_negative_values = true;
|
|
39357
|
+
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
39358
|
+
args.aggregate_on_customers_enabled = true;
|
|
39359
|
+
if (opts.where !== void 0)
|
|
39360
|
+
args.where = JSON.parse(opts.where);
|
|
39361
|
+
if (opts.exposedEventKeys !== void 0)
|
|
39362
|
+
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
39363
|
+
if (opts.thresholds !== void 0)
|
|
39364
|
+
args.thresholds = JSON.parse(opts.thresholds);
|
|
39347
39365
|
await ctx.execute({
|
|
39348
39366
|
method: "PUT",
|
|
39349
|
-
path: "/v1/
|
|
39367
|
+
path: "/v1/aggregators/{id}",
|
|
39350
39368
|
args,
|
|
39351
39369
|
queryParamKeys: []
|
|
39352
39370
|
});
|
|
39353
39371
|
});
|
|
39354
|
-
resource.command("delete
|
|
39372
|
+
resource.command("delete").description(`Delete an aggregator by ID. Will fail if the aggregator is linked to a product.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39355
39373
|
Examples:
|
|
39356
|
-
hyperline
|
|
39357
|
-
hyperline
|
|
39374
|
+
hyperline aggregators delete --id <id>
|
|
39375
|
+
hyperline aggregators delete --id <id> --output json`).action(async (opts) => {
|
|
39358
39376
|
const ctx = resource.parent?.opts()._ctx;
|
|
39359
39377
|
if (!ctx) {
|
|
39360
39378
|
process.stderr.write("Error: Not authenticated\n");
|
|
39361
39379
|
process.exit(1);
|
|
39362
39380
|
}
|
|
39363
39381
|
const args = {};
|
|
39364
|
-
if (opts.
|
|
39365
|
-
args.
|
|
39382
|
+
if (opts.id !== void 0)
|
|
39383
|
+
args.id = opts.id;
|
|
39366
39384
|
if (!opts.yes) {
|
|
39367
39385
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39368
39386
|
if (!confirmed) {
|
|
@@ -39372,188 +39390,267 @@ Examples:
|
|
|
39372
39390
|
}
|
|
39373
39391
|
await ctx.execute({
|
|
39374
39392
|
method: "DELETE",
|
|
39375
|
-
path: "/v1/
|
|
39393
|
+
path: "/v1/aggregators/{id}",
|
|
39376
39394
|
args,
|
|
39377
39395
|
queryParamKeys: []
|
|
39378
39396
|
});
|
|
39379
39397
|
});
|
|
39380
|
-
|
|
39398
|
+
}
|
|
39399
|
+
|
|
39400
|
+
// build/commands/generated/aggregators-usage.js
|
|
39401
|
+
function registerAggregators_UsageCommands(parent) {
|
|
39402
|
+
const resource = parent.command("aggregators-usage").description("Manage aggregators > usage");
|
|
39403
|
+
resource.command("get-aggregator-usage").description(`Retrieve a usage row for an aggregator. Use the timeseries, group-by-customer or events endpoints to query metering data.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39381
39404
|
Examples:
|
|
39382
|
-
hyperline
|
|
39405
|
+
hyperline aggregators-usage get-aggregator-usage --id <id>`).action(async (opts) => {
|
|
39383
39406
|
const ctx = resource.parent?.opts()._ctx;
|
|
39384
39407
|
if (!ctx) {
|
|
39385
39408
|
process.stderr.write("Error: Not authenticated\n");
|
|
39386
39409
|
process.exit(1);
|
|
39387
39410
|
}
|
|
39388
39411
|
const args = {};
|
|
39412
|
+
if (opts.id !== void 0)
|
|
39413
|
+
args.id = opts.id;
|
|
39389
39414
|
await ctx.execute({
|
|
39390
39415
|
method: "GET",
|
|
39391
|
-
path: "/v1/
|
|
39416
|
+
path: "/v1/aggregators/{id}/usage",
|
|
39392
39417
|
args,
|
|
39393
39418
|
queryParamKeys: []
|
|
39394
39419
|
});
|
|
39395
39420
|
});
|
|
39396
|
-
resource.command("
|
|
39421
|
+
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", `
|
|
39397
39422
|
Examples:
|
|
39398
|
-
hyperline
|
|
39399
|
-
hyperline
|
|
39400
|
-
hyperline agents set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39423
|
+
hyperline aggregators-usage get-aggregator-usage-timeseries --id <id>
|
|
39424
|
+
hyperline aggregators-usage get-aggregator-usage-timeseries --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39401
39425
|
const ctx = resource.parent?.opts()._ctx;
|
|
39402
39426
|
if (!ctx) {
|
|
39403
39427
|
process.stderr.write("Error: Not authenticated\n");
|
|
39404
39428
|
process.exit(1);
|
|
39405
39429
|
}
|
|
39406
39430
|
const args = {};
|
|
39407
|
-
if (opts.
|
|
39408
|
-
args.
|
|
39409
|
-
if (opts.
|
|
39410
|
-
args.
|
|
39431
|
+
if (opts.id !== void 0)
|
|
39432
|
+
args.id = opts.id;
|
|
39433
|
+
if (opts.startDate !== void 0)
|
|
39434
|
+
args.start_date = opts.startDate;
|
|
39435
|
+
if (opts.endDate !== void 0)
|
|
39436
|
+
args.end_date = opts.endDate;
|
|
39437
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39438
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39439
|
+
if (opts.groupBy !== void 0)
|
|
39440
|
+
args.group_by = opts.groupBy;
|
|
39411
39441
|
await ctx.execute({
|
|
39412
|
-
method: "
|
|
39413
|
-
path: "/v1/
|
|
39442
|
+
method: "GET",
|
|
39443
|
+
path: "/v1/aggregators/{id}/usage/timeseries",
|
|
39414
39444
|
args,
|
|
39415
|
-
queryParamKeys: [
|
|
39445
|
+
queryParamKeys: [
|
|
39446
|
+
"start_date",
|
|
39447
|
+
"end_date",
|
|
39448
|
+
"aggregator_filter_id",
|
|
39449
|
+
"group_by"
|
|
39450
|
+
]
|
|
39416
39451
|
});
|
|
39417
39452
|
});
|
|
39418
|
-
resource.command("
|
|
39453
|
+
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", `
|
|
39419
39454
|
Examples:
|
|
39420
|
-
hyperline
|
|
39421
|
-
hyperline
|
|
39455
|
+
hyperline aggregators-usage get-aggregator-usage-group-by-customer --id <id>
|
|
39456
|
+
hyperline aggregators-usage get-aggregator-usage-group-by-customer --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39422
39457
|
const ctx = resource.parent?.opts()._ctx;
|
|
39423
39458
|
if (!ctx) {
|
|
39424
39459
|
process.stderr.write("Error: Not authenticated\n");
|
|
39425
39460
|
process.exit(1);
|
|
39426
39461
|
}
|
|
39427
39462
|
const args = {};
|
|
39428
|
-
if (
|
|
39429
|
-
|
|
39430
|
-
|
|
39431
|
-
|
|
39432
|
-
|
|
39433
|
-
|
|
39434
|
-
|
|
39463
|
+
if (opts.id !== void 0)
|
|
39464
|
+
args.id = opts.id;
|
|
39465
|
+
if (opts.startDate !== void 0)
|
|
39466
|
+
args.start_date = opts.startDate;
|
|
39467
|
+
if (opts.endDate !== void 0)
|
|
39468
|
+
args.end_date = opts.endDate;
|
|
39469
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39470
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39471
|
+
if (opts.take !== void 0)
|
|
39472
|
+
args.take = Number(opts.take);
|
|
39473
|
+
if (opts.skip !== void 0)
|
|
39474
|
+
args.skip = Number(opts.skip);
|
|
39435
39475
|
await ctx.execute({
|
|
39436
|
-
method: "
|
|
39437
|
-
path: "/v1/
|
|
39476
|
+
method: "GET",
|
|
39477
|
+
path: "/v1/aggregators/{id}/usage/group-by-customer",
|
|
39438
39478
|
args,
|
|
39439
|
-
queryParamKeys: [
|
|
39479
|
+
queryParamKeys: [
|
|
39480
|
+
"start_date",
|
|
39481
|
+
"end_date",
|
|
39482
|
+
"aggregator_filter_id",
|
|
39483
|
+
"take",
|
|
39484
|
+
"skip"
|
|
39485
|
+
]
|
|
39440
39486
|
});
|
|
39441
39487
|
});
|
|
39442
|
-
resource.command("
|
|
39488
|
+
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", `
|
|
39443
39489
|
Examples:
|
|
39444
|
-
hyperline
|
|
39445
|
-
hyperline
|
|
39490
|
+
hyperline aggregators-usage get-aggregator-usage-events --id <id>
|
|
39491
|
+
hyperline aggregators-usage get-aggregator-usage-events --id <id> --start-date <start_date> --end-date <end_date>`).action(async (opts) => {
|
|
39446
39492
|
const ctx = resource.parent?.opts()._ctx;
|
|
39447
39493
|
if (!ctx) {
|
|
39448
39494
|
process.stderr.write("Error: Not authenticated\n");
|
|
39449
39495
|
process.exit(1);
|
|
39450
39496
|
}
|
|
39451
39497
|
const args = {};
|
|
39452
|
-
if (opts.
|
|
39453
|
-
args.
|
|
39454
|
-
if (opts.
|
|
39455
|
-
args.
|
|
39456
|
-
if (opts.
|
|
39457
|
-
args.
|
|
39498
|
+
if (opts.id !== void 0)
|
|
39499
|
+
args.id = opts.id;
|
|
39500
|
+
if (opts.startDate !== void 0)
|
|
39501
|
+
args.start_date = opts.startDate;
|
|
39502
|
+
if (opts.endDate !== void 0)
|
|
39503
|
+
args.end_date = opts.endDate;
|
|
39504
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
39505
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
39458
39506
|
if (opts.take !== void 0)
|
|
39459
39507
|
args.take = Number(opts.take);
|
|
39460
39508
|
if (opts.skip !== void 0)
|
|
39461
39509
|
args.skip = Number(opts.skip);
|
|
39462
39510
|
await ctx.execute({
|
|
39463
39511
|
method: "GET",
|
|
39464
|
-
path: "/v1/
|
|
39512
|
+
path: "/v1/aggregators/{id}/usage/events",
|
|
39465
39513
|
args,
|
|
39466
|
-
queryParamKeys: [
|
|
39514
|
+
queryParamKeys: [
|
|
39515
|
+
"start_date",
|
|
39516
|
+
"end_date",
|
|
39517
|
+
"aggregator_filter_id",
|
|
39518
|
+
"take",
|
|
39519
|
+
"skip"
|
|
39520
|
+
]
|
|
39467
39521
|
});
|
|
39468
39522
|
});
|
|
39469
|
-
|
|
39523
|
+
}
|
|
39524
|
+
|
|
39525
|
+
// build/commands/generated/ai-billing.js
|
|
39526
|
+
function registerAi_BillingCommands(parent) {
|
|
39527
|
+
const resource = parent.command("ai-billing").description("Manage ai > billing");
|
|
39528
|
+
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.
|
|
39529
|
+
|
|
39530
|
+
- wallet: Charges a monetary wallet.
|
|
39531
|
+
- credits: Consumes a credit balance.
|
|
39532
|
+
- windows: Meters weighted units against rolling allowances.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39470
39533
|
Examples:
|
|
39471
|
-
hyperline
|
|
39472
|
-
hyperline
|
|
39473
|
-
hyperline agents create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --output json`).action(async (opts) => {
|
|
39534
|
+
hyperline ai-billing list-agent-plans
|
|
39535
|
+
hyperline ai-billing list-agent-plans --mode <mode> --take <take>`).action(async (opts) => {
|
|
39474
39536
|
const ctx = resource.parent?.opts()._ctx;
|
|
39475
39537
|
if (!ctx) {
|
|
39476
39538
|
process.stderr.write("Error: Not authenticated\n");
|
|
39477
39539
|
process.exit(1);
|
|
39478
39540
|
}
|
|
39479
39541
|
const args = {};
|
|
39480
|
-
if (opts.
|
|
39481
|
-
args.
|
|
39482
|
-
if (opts.
|
|
39483
|
-
args.
|
|
39484
|
-
if (opts.
|
|
39485
|
-
args.
|
|
39486
|
-
|
|
39487
|
-
|
|
39488
|
-
|
|
39489
|
-
args.currency = opts.currency;
|
|
39490
|
-
if (opts.rows !== void 0)
|
|
39491
|
-
args.rows = JSON.parse(opts.rows);
|
|
39492
|
-
await ctx.execute({
|
|
39493
|
-
method: "POST",
|
|
39494
|
-
path: "/v1/agents/rate-cards",
|
|
39542
|
+
if (opts.mode !== void 0)
|
|
39543
|
+
args.mode = opts.mode;
|
|
39544
|
+
if (opts.take !== void 0)
|
|
39545
|
+
args.take = Number(opts.take);
|
|
39546
|
+
if (opts.skip !== void 0)
|
|
39547
|
+
args.skip = Number(opts.skip);
|
|
39548
|
+
await ctx.execute({
|
|
39549
|
+
method: "GET",
|
|
39550
|
+
path: "/v1/ai/billing/plans",
|
|
39495
39551
|
args,
|
|
39496
|
-
queryParamKeys: []
|
|
39552
|
+
queryParamKeys: ["mode", "take", "skip"]
|
|
39497
39553
|
});
|
|
39498
39554
|
});
|
|
39499
|
-
resource.command("
|
|
39555
|
+
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.
|
|
39556
|
+
|
|
39557
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39558
|
+
- 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.
|
|
39559
|
+
|
|
39560
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).requiredOption("--mode <value>", `Billing mode.
|
|
39561
|
+
|
|
39562
|
+
- wallet: Charges a monetary wallet.
|
|
39563
|
+
- credits: Consumes a credit balance.
|
|
39564
|
+
- windows: Meters weighted units against rolling allowances.`).addHelpText("after", `
|
|
39500
39565
|
Examples:
|
|
39501
|
-
hyperline
|
|
39566
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode>
|
|
39567
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39568
|
+
hyperline ai-billing create-agent-plan --name <name> --mode <mode> --output json`).action(async (opts) => {
|
|
39502
39569
|
const ctx = resource.parent?.opts()._ctx;
|
|
39503
39570
|
if (!ctx) {
|
|
39504
39571
|
process.stderr.write("Error: Not authenticated\n");
|
|
39505
39572
|
process.exit(1);
|
|
39506
39573
|
}
|
|
39507
39574
|
const args = {};
|
|
39575
|
+
if (opts.name !== void 0)
|
|
39576
|
+
args.name = opts.name;
|
|
39508
39577
|
if (opts.rateCardId !== void 0)
|
|
39509
39578
|
args.rate_card_id = opts.rateCardId;
|
|
39579
|
+
if (opts.overageMode !== void 0)
|
|
39580
|
+
args.overage_mode = opts.overageMode;
|
|
39581
|
+
if (opts.markupPercent !== void 0)
|
|
39582
|
+
args.markup_percent = opts.markupPercent;
|
|
39583
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39584
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39585
|
+
if (opts.overageRateCardId !== void 0)
|
|
39586
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39587
|
+
if (opts.perSeatCredits !== void 0)
|
|
39588
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39589
|
+
if (opts.settlementSchedule !== void 0)
|
|
39590
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39591
|
+
if (opts.mode !== void 0)
|
|
39592
|
+
args.mode = opts.mode;
|
|
39593
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39594
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39595
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39596
|
+
args.grant_rollover_enabled = true;
|
|
39597
|
+
if (opts.windows !== void 0)
|
|
39598
|
+
args.windows = JSON.parse(opts.windows);
|
|
39599
|
+
await ctx.execute({
|
|
39600
|
+
method: "POST",
|
|
39601
|
+
path: "/v1/ai/billing/plans",
|
|
39602
|
+
args,
|
|
39603
|
+
queryParamKeys: []
|
|
39604
|
+
});
|
|
39605
|
+
});
|
|
39606
|
+
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", `
|
|
39607
|
+
Examples:
|
|
39608
|
+
hyperline ai-billing get-agent-default-plan`).action(async (_opts) => {
|
|
39609
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39610
|
+
if (!ctx) {
|
|
39611
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39612
|
+
process.exit(1);
|
|
39613
|
+
}
|
|
39614
|
+
const args = {};
|
|
39510
39615
|
await ctx.execute({
|
|
39511
39616
|
method: "GET",
|
|
39512
|
-
path: "/v1/
|
|
39617
|
+
path: "/v1/ai/billing/plans/default",
|
|
39513
39618
|
args,
|
|
39514
39619
|
queryParamKeys: []
|
|
39515
39620
|
});
|
|
39516
39621
|
});
|
|
39517
|
-
resource.command("
|
|
39622
|
+
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", `
|
|
39518
39623
|
Examples:
|
|
39519
|
-
hyperline
|
|
39520
|
-
hyperline
|
|
39521
|
-
hyperline
|
|
39624
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id>
|
|
39625
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --auto-apply
|
|
39626
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39522
39627
|
const ctx = resource.parent?.opts()._ctx;
|
|
39523
39628
|
if (!ctx) {
|
|
39524
39629
|
process.stderr.write("Error: Not authenticated\n");
|
|
39525
39630
|
process.exit(1);
|
|
39526
39631
|
}
|
|
39527
39632
|
const args = {};
|
|
39528
|
-
if (opts.
|
|
39529
|
-
args.
|
|
39530
|
-
if (opts.
|
|
39531
|
-
args.
|
|
39532
|
-
if (opts.description !== void 0)
|
|
39533
|
-
args.description = opts.description;
|
|
39534
|
-
if (opts.fallbackPerUsd !== void 0)
|
|
39535
|
-
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39536
|
-
if (opts.rows !== void 0)
|
|
39537
|
-
args.rows = JSON.parse(opts.rows);
|
|
39633
|
+
if (opts.planId !== void 0)
|
|
39634
|
+
args.plan_id = opts.planId;
|
|
39635
|
+
if (opts.autoApply !== void 0)
|
|
39636
|
+
args.auto_apply = true;
|
|
39538
39637
|
await ctx.execute({
|
|
39539
39638
|
method: "PUT",
|
|
39540
|
-
path: "/v1/
|
|
39639
|
+
path: "/v1/ai/billing/plans/default",
|
|
39541
39640
|
args,
|
|
39542
39641
|
queryParamKeys: []
|
|
39543
39642
|
});
|
|
39544
39643
|
});
|
|
39545
|
-
resource.command("
|
|
39644
|
+
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", `
|
|
39546
39645
|
Examples:
|
|
39547
|
-
hyperline
|
|
39548
|
-
hyperline
|
|
39646
|
+
hyperline ai-billing clear-agent-default-plan
|
|
39647
|
+
hyperline ai-billing clear-agent-default-plan --output json`).action(async (opts) => {
|
|
39549
39648
|
const ctx = resource.parent?.opts()._ctx;
|
|
39550
39649
|
if (!ctx) {
|
|
39551
39650
|
process.stderr.write("Error: Not authenticated\n");
|
|
39552
39651
|
process.exit(1);
|
|
39553
39652
|
}
|
|
39554
39653
|
const args = {};
|
|
39555
|
-
if (opts.rateCardId !== void 0)
|
|
39556
|
-
args.rate_card_id = opts.rateCardId;
|
|
39557
39654
|
if (!opts.yes) {
|
|
39558
39655
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39559
39656
|
if (!confirmed) {
|
|
@@ -39563,139 +39660,221 @@ Examples:
|
|
|
39563
39660
|
}
|
|
39564
39661
|
await ctx.execute({
|
|
39565
39662
|
method: "DELETE",
|
|
39566
|
-
path: "/v1/
|
|
39663
|
+
path: "/v1/ai/billing/plans/default",
|
|
39567
39664
|
args,
|
|
39568
39665
|
queryParamKeys: []
|
|
39569
39666
|
});
|
|
39570
39667
|
});
|
|
39571
|
-
resource.command("
|
|
39668
|
+
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", `
|
|
39572
39669
|
Examples:
|
|
39573
|
-
hyperline
|
|
39670
|
+
hyperline ai-billing get-agent-plan --id <id>`).action(async (opts) => {
|
|
39574
39671
|
const ctx = resource.parent?.opts()._ctx;
|
|
39575
39672
|
if (!ctx) {
|
|
39576
39673
|
process.stderr.write("Error: Not authenticated\n");
|
|
39577
39674
|
process.exit(1);
|
|
39578
39675
|
}
|
|
39579
39676
|
const args = {};
|
|
39677
|
+
if (opts.id !== void 0)
|
|
39678
|
+
args.id = opts.id;
|
|
39580
39679
|
await ctx.execute({
|
|
39581
39680
|
method: "GET",
|
|
39582
|
-
path: "/v1/
|
|
39681
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39583
39682
|
args,
|
|
39584
39683
|
queryParamKeys: []
|
|
39585
39684
|
});
|
|
39586
39685
|
});
|
|
39587
|
-
resource.command("
|
|
39686
|
+
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.
|
|
39687
|
+
|
|
39688
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39689
|
+
- 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.
|
|
39690
|
+
|
|
39691
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39588
39692
|
Examples:
|
|
39589
|
-
hyperline
|
|
39590
|
-
hyperline
|
|
39693
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name>
|
|
39694
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39695
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --output json`).action(async (opts) => {
|
|
39591
39696
|
const ctx = resource.parent?.opts()._ctx;
|
|
39592
39697
|
if (!ctx) {
|
|
39593
39698
|
process.stderr.write("Error: Not authenticated\n");
|
|
39594
39699
|
process.exit(1);
|
|
39595
39700
|
}
|
|
39596
39701
|
const args = {};
|
|
39597
|
-
if (opts.
|
|
39598
|
-
args.
|
|
39702
|
+
if (opts.id !== void 0)
|
|
39703
|
+
args.id = opts.id;
|
|
39704
|
+
if (opts.name !== void 0)
|
|
39705
|
+
args.name = opts.name;
|
|
39706
|
+
if (opts.rateCardId !== void 0)
|
|
39707
|
+
args.rate_card_id = opts.rateCardId;
|
|
39708
|
+
if (opts.overageMode !== void 0)
|
|
39709
|
+
args.overage_mode = opts.overageMode;
|
|
39710
|
+
if (opts.markupPercent !== void 0)
|
|
39711
|
+
args.markup_percent = opts.markupPercent;
|
|
39712
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39713
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39714
|
+
if (opts.overageRateCardId !== void 0)
|
|
39715
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39716
|
+
if (opts.perSeatCredits !== void 0)
|
|
39717
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39718
|
+
if (opts.settlementSchedule !== void 0)
|
|
39719
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39720
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39721
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39722
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39723
|
+
args.grant_rollover_enabled = true;
|
|
39724
|
+
if (opts.windows !== void 0)
|
|
39725
|
+
args.windows = JSON.parse(opts.windows);
|
|
39726
|
+
await ctx.execute({
|
|
39727
|
+
method: "PUT",
|
|
39728
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39729
|
+
args,
|
|
39730
|
+
queryParamKeys: []
|
|
39731
|
+
});
|
|
39732
|
+
});
|
|
39733
|
+
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", `
|
|
39734
|
+
Examples:
|
|
39735
|
+
hyperline ai-billing delete-agent-plan --id <id>
|
|
39736
|
+
hyperline ai-billing delete-agent-plan --id <id> --output json`).action(async (opts) => {
|
|
39737
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39738
|
+
if (!ctx) {
|
|
39739
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39740
|
+
process.exit(1);
|
|
39741
|
+
}
|
|
39742
|
+
const args = {};
|
|
39743
|
+
if (opts.id !== void 0)
|
|
39744
|
+
args.id = opts.id;
|
|
39745
|
+
if (!opts.yes) {
|
|
39746
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39747
|
+
if (!confirmed) {
|
|
39748
|
+
process.stdout.write("Aborted.\n");
|
|
39749
|
+
return;
|
|
39750
|
+
}
|
|
39751
|
+
}
|
|
39752
|
+
await ctx.execute({
|
|
39753
|
+
method: "DELETE",
|
|
39754
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39755
|
+
args,
|
|
39756
|
+
queryParamKeys: []
|
|
39757
|
+
});
|
|
39758
|
+
});
|
|
39759
|
+
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.
|
|
39760
|
+
|
|
39761
|
+
- credits: Credit counts.
|
|
39762
|
+
- units: Weighted rolling-allowance units.
|
|
39763
|
+
- 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", `
|
|
39764
|
+
Examples:
|
|
39765
|
+
hyperline ai-billing list-agent-rate-cards
|
|
39766
|
+
hyperline ai-billing list-agent-rate-cards --denomination <denomination> --currency <currency>`).action(async (opts) => {
|
|
39767
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
39768
|
+
if (!ctx) {
|
|
39769
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
39770
|
+
process.exit(1);
|
|
39771
|
+
}
|
|
39772
|
+
const args = {};
|
|
39773
|
+
if (opts.denomination !== void 0)
|
|
39774
|
+
args.denomination = opts.denomination;
|
|
39775
|
+
if (opts.currency !== void 0)
|
|
39776
|
+
args.currency = opts.currency;
|
|
39777
|
+
if (opts.search !== void 0)
|
|
39778
|
+
args.search = opts.search;
|
|
39779
|
+
if (opts.take !== void 0)
|
|
39780
|
+
args.take = Number(opts.take);
|
|
39781
|
+
if (opts.skip !== void 0)
|
|
39782
|
+
args.skip = Number(opts.skip);
|
|
39599
39783
|
await ctx.execute({
|
|
39600
39784
|
method: "GET",
|
|
39601
|
-
path: "/v1/
|
|
39785
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39602
39786
|
args,
|
|
39603
|
-
queryParamKeys: ["
|
|
39787
|
+
queryParamKeys: ["denomination", "currency", "search", "take", "skip"]
|
|
39604
39788
|
});
|
|
39605
39789
|
});
|
|
39606
|
-
resource.command("create-agent-
|
|
39790
|
+
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.
|
|
39791
|
+
|
|
39792
|
+
- credits: Credit counts.
|
|
39793
|
+
- units: Weighted rolling-allowance units.
|
|
39794
|
+
- 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", `
|
|
39607
39795
|
Examples:
|
|
39608
|
-
hyperline
|
|
39609
|
-
hyperline
|
|
39796
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination>
|
|
39797
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --fallback-per-usd <fallback_per_usd> --currency <currency>
|
|
39798
|
+
hyperline ai-billing create-agent-rate-card --name <name> --rows <rows> --denomination <denomination> --output json`).action(async (opts) => {
|
|
39610
39799
|
const ctx = resource.parent?.opts()._ctx;
|
|
39611
39800
|
if (!ctx) {
|
|
39612
39801
|
process.stderr.write("Error: Not authenticated\n");
|
|
39613
39802
|
process.exit(1);
|
|
39614
39803
|
}
|
|
39615
39804
|
const args = {};
|
|
39616
|
-
if (opts.
|
|
39617
|
-
args.
|
|
39618
|
-
if (opts.
|
|
39619
|
-
args.
|
|
39620
|
-
if (opts.
|
|
39621
|
-
args.
|
|
39805
|
+
if (opts.name !== void 0)
|
|
39806
|
+
args.name = opts.name;
|
|
39807
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39808
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39809
|
+
if (opts.denomination !== void 0)
|
|
39810
|
+
args.denomination = opts.denomination;
|
|
39811
|
+
if (opts.currency !== void 0)
|
|
39812
|
+
args.currency = opts.currency;
|
|
39813
|
+
if (opts.rows !== void 0)
|
|
39814
|
+
args.rows = JSON.parse(opts.rows);
|
|
39622
39815
|
await ctx.execute({
|
|
39623
39816
|
method: "POST",
|
|
39624
|
-
path: "/v1/
|
|
39817
|
+
path: "/v1/ai/billing/rate-cards",
|
|
39625
39818
|
args,
|
|
39626
39819
|
queryParamKeys: []
|
|
39627
39820
|
});
|
|
39628
39821
|
});
|
|
39629
|
-
resource.command("
|
|
39822
|
+
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", `
|
|
39630
39823
|
Examples:
|
|
39631
|
-
hyperline
|
|
39632
|
-
hyperline agents delete-agent-cost-catalog-item --item-id <item_id> --output json`).action(async (opts) => {
|
|
39824
|
+
hyperline ai-billing get-agent-rate-card --id <id>`).action(async (opts) => {
|
|
39633
39825
|
const ctx = resource.parent?.opts()._ctx;
|
|
39634
39826
|
if (!ctx) {
|
|
39635
39827
|
process.stderr.write("Error: Not authenticated\n");
|
|
39636
39828
|
process.exit(1);
|
|
39637
39829
|
}
|
|
39638
39830
|
const args = {};
|
|
39639
|
-
if (opts.
|
|
39640
|
-
args.
|
|
39641
|
-
if (!opts.yes) {
|
|
39642
|
-
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39643
|
-
if (!confirmed) {
|
|
39644
|
-
process.stdout.write("Aborted.\n");
|
|
39645
|
-
return;
|
|
39646
|
-
}
|
|
39647
|
-
}
|
|
39831
|
+
if (opts.id !== void 0)
|
|
39832
|
+
args.id = opts.id;
|
|
39648
39833
|
await ctx.execute({
|
|
39649
|
-
method: "
|
|
39650
|
-
path: "/v1/
|
|
39834
|
+
method: "GET",
|
|
39835
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39651
39836
|
args,
|
|
39652
39837
|
queryParamKeys: []
|
|
39653
39838
|
});
|
|
39654
39839
|
});
|
|
39655
|
-
resource.command("
|
|
39840
|
+
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", `
|
|
39656
39841
|
Examples:
|
|
39657
|
-
hyperline
|
|
39658
|
-
hyperline
|
|
39659
|
-
hyperline
|
|
39842
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows>
|
|
39843
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --fallback-per-usd <fallback_per_usd>
|
|
39844
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --output json`).action(async (opts) => {
|
|
39660
39845
|
const ctx = resource.parent?.opts()._ctx;
|
|
39661
39846
|
if (!ctx) {
|
|
39662
39847
|
process.stderr.write("Error: Not authenticated\n");
|
|
39663
39848
|
process.exit(1);
|
|
39664
39849
|
}
|
|
39665
39850
|
const args = {};
|
|
39666
|
-
if (opts.
|
|
39667
|
-
args.
|
|
39668
|
-
if (opts.
|
|
39669
|
-
args.
|
|
39670
|
-
if (opts.
|
|
39671
|
-
args.
|
|
39672
|
-
if (opts.
|
|
39673
|
-
args.
|
|
39674
|
-
if (opts.cachedInputPerMTokens !== void 0)
|
|
39675
|
-
args.cached_input_per_m_tokens = opts.cachedInputPerMTokens;
|
|
39676
|
-
if (opts.cacheWritePerMTokens !== void 0)
|
|
39677
|
-
args.cache_write_per_m_tokens = opts.cacheWritePerMTokens;
|
|
39678
|
-
if (opts.dimensions !== void 0)
|
|
39679
|
-
args.dimensions = JSON.parse(opts.dimensions);
|
|
39851
|
+
if (opts.id !== void 0)
|
|
39852
|
+
args.id = opts.id;
|
|
39853
|
+
if (opts.name !== void 0)
|
|
39854
|
+
args.name = opts.name;
|
|
39855
|
+
if (opts.fallbackPerUsd !== void 0)
|
|
39856
|
+
args.fallback_per_usd = opts.fallbackPerUsd;
|
|
39857
|
+
if (opts.rows !== void 0)
|
|
39858
|
+
args.rows = JSON.parse(opts.rows);
|
|
39680
39859
|
await ctx.execute({
|
|
39681
39860
|
method: "PUT",
|
|
39682
|
-
path: "/v1/
|
|
39861
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39683
39862
|
args,
|
|
39684
39863
|
queryParamKeys: []
|
|
39685
39864
|
});
|
|
39686
39865
|
});
|
|
39687
|
-
resource.command("delete-agent-
|
|
39866
|
+
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", `
|
|
39688
39867
|
Examples:
|
|
39689
|
-
hyperline
|
|
39690
|
-
hyperline
|
|
39868
|
+
hyperline ai-billing delete-agent-rate-card --id <id>
|
|
39869
|
+
hyperline ai-billing delete-agent-rate-card --id <id> --output json`).action(async (opts) => {
|
|
39691
39870
|
const ctx = resource.parent?.opts()._ctx;
|
|
39692
39871
|
if (!ctx) {
|
|
39693
39872
|
process.stderr.write("Error: Not authenticated\n");
|
|
39694
39873
|
process.exit(1);
|
|
39695
39874
|
}
|
|
39696
39875
|
const args = {};
|
|
39697
|
-
if (opts.
|
|
39698
|
-
args.
|
|
39876
|
+
if (opts.id !== void 0)
|
|
39877
|
+
args.id = opts.id;
|
|
39699
39878
|
if (!opts.yes) {
|
|
39700
39879
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39701
39880
|
if (!confirmed) {
|
|
@@ -39705,67 +39884,74 @@ Examples:
|
|
|
39705
39884
|
}
|
|
39706
39885
|
await ctx.execute({
|
|
39707
39886
|
method: "DELETE",
|
|
39708
|
-
path: "/v1/
|
|
39887
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39709
39888
|
args,
|
|
39710
39889
|
queryParamKeys: []
|
|
39711
39890
|
});
|
|
39712
39891
|
});
|
|
39713
|
-
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("--
|
|
39892
|
+
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", `
|
|
39714
39893
|
Examples:
|
|
39715
|
-
hyperline
|
|
39894
|
+
hyperline ai-billing list-agent-customer-policies --id <id>
|
|
39895
|
+
hyperline ai-billing list-agent-customer-policies --id <id> --take <take>`).action(async (opts) => {
|
|
39716
39896
|
const ctx = resource.parent?.opts()._ctx;
|
|
39717
39897
|
if (!ctx) {
|
|
39718
39898
|
process.stderr.write("Error: Not authenticated\n");
|
|
39719
39899
|
process.exit(1);
|
|
39720
39900
|
}
|
|
39721
39901
|
const args = {};
|
|
39722
|
-
if (opts.
|
|
39723
|
-
args.
|
|
39902
|
+
if (opts.id !== void 0)
|
|
39903
|
+
args.id = opts.id;
|
|
39904
|
+
if (opts.take !== void 0)
|
|
39905
|
+
args.take = Number(opts.take);
|
|
39906
|
+
if (opts.skip !== void 0)
|
|
39907
|
+
args.skip = Number(opts.skip);
|
|
39724
39908
|
await ctx.execute({
|
|
39725
39909
|
method: "GET",
|
|
39726
|
-
path: "/v1/
|
|
39910
|
+
path: "/v1/ai/billing/customers/{id}/policies",
|
|
39727
39911
|
args,
|
|
39728
|
-
queryParamKeys: []
|
|
39912
|
+
queryParamKeys: ["take", "skip"]
|
|
39729
39913
|
});
|
|
39730
39914
|
});
|
|
39731
|
-
resource.command("get-
|
|
39915
|
+
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", `
|
|
39732
39916
|
Examples:
|
|
39733
|
-
hyperline
|
|
39734
|
-
hyperline agents get-agent-customer-policy --customer-id <customer_id> --agent <agent>`).action(async (opts) => {
|
|
39917
|
+
hyperline ai-billing get-default-customer-billing-policy --id <id>`).action(async (opts) => {
|
|
39735
39918
|
const ctx = resource.parent?.opts()._ctx;
|
|
39736
39919
|
if (!ctx) {
|
|
39737
39920
|
process.stderr.write("Error: Not authenticated\n");
|
|
39738
39921
|
process.exit(1);
|
|
39739
39922
|
}
|
|
39740
39923
|
const args = {};
|
|
39741
|
-
if (opts.
|
|
39742
|
-
args.
|
|
39743
|
-
if (opts.agent !== void 0)
|
|
39744
|
-
args.agent = opts.agent;
|
|
39924
|
+
if (opts.id !== void 0)
|
|
39925
|
+
args.id = opts.id;
|
|
39745
39926
|
await ctx.execute({
|
|
39746
39927
|
method: "GET",
|
|
39747
|
-
path: "/v1/
|
|
39928
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39748
39929
|
args,
|
|
39749
|
-
queryParamKeys: [
|
|
39930
|
+
queryParamKeys: []
|
|
39750
39931
|
});
|
|
39751
39932
|
});
|
|
39752
|
-
resource.command("upsert-
|
|
39933
|
+
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.
|
|
39934
|
+
|
|
39935
|
+
- wallet: Charges a monetary wallet.
|
|
39936
|
+
- credits: Consumes a credit balance.
|
|
39937
|
+
- 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.
|
|
39938
|
+
|
|
39939
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39940
|
+
- 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.
|
|
39941
|
+
|
|
39942
|
+
- 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", `
|
|
39753
39943
|
Examples:
|
|
39754
|
-
hyperline
|
|
39755
|
-
hyperline
|
|
39756
|
-
hyperline
|
|
39944
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked
|
|
39945
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --wallet-id <wallet_id> --credit-product-id <credit_product_id>
|
|
39946
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39757
39947
|
const ctx = resource.parent?.opts()._ctx;
|
|
39758
39948
|
if (!ctx) {
|
|
39759
39949
|
process.stderr.write("Error: Not authenticated\n");
|
|
39760
39950
|
process.exit(1);
|
|
39761
39951
|
}
|
|
39762
39952
|
const args = {};
|
|
39763
|
-
if (opts.
|
|
39764
|
-
args.
|
|
39765
|
-
if (opts.agent !== void 0)
|
|
39766
|
-
args.agent = opts.agent;
|
|
39767
|
-
if (opts.internalDescription !== void 0)
|
|
39768
|
-
args.internal_description = opts.internalDescription;
|
|
39953
|
+
if (opts.id !== void 0)
|
|
39954
|
+
args.id = opts.id;
|
|
39769
39955
|
if (opts.mode !== void 0)
|
|
39770
39956
|
args.mode = opts.mode;
|
|
39771
39957
|
if (opts.walletId !== void 0)
|
|
@@ -39794,32 +39980,27 @@ Examples:
|
|
|
39794
39980
|
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39795
39981
|
if (opts.blocked !== void 0)
|
|
39796
39982
|
args.blocked = true;
|
|
39797
|
-
if (opts.
|
|
39798
|
-
args.
|
|
39799
|
-
if (opts.windowRates !== void 0)
|
|
39800
|
-
args.window_rates = JSON.parse(opts.windowRates);
|
|
39983
|
+
if (opts.windows !== void 0)
|
|
39984
|
+
args.windows = JSON.parse(opts.windows);
|
|
39801
39985
|
await ctx.execute({
|
|
39802
39986
|
method: "PUT",
|
|
39803
|
-
path: "/v1/
|
|
39987
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39804
39988
|
args,
|
|
39805
|
-
queryParamKeys: [
|
|
39989
|
+
queryParamKeys: []
|
|
39806
39990
|
});
|
|
39807
39991
|
});
|
|
39808
|
-
resource.command("delete-
|
|
39992
|
+
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", `
|
|
39809
39993
|
Examples:
|
|
39810
|
-
hyperline
|
|
39811
|
-
hyperline
|
|
39812
|
-
hyperline agents delete-agent-customer-policy --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
39994
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id>
|
|
39995
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id> --output json`).action(async (opts) => {
|
|
39813
39996
|
const ctx = resource.parent?.opts()._ctx;
|
|
39814
39997
|
if (!ctx) {
|
|
39815
39998
|
process.stderr.write("Error: Not authenticated\n");
|
|
39816
39999
|
process.exit(1);
|
|
39817
40000
|
}
|
|
39818
40001
|
const args = {};
|
|
39819
|
-
if (opts.
|
|
39820
|
-
args.
|
|
39821
|
-
if (opts.agent !== void 0)
|
|
39822
|
-
args.agent = opts.agent;
|
|
40002
|
+
if (opts.id !== void 0)
|
|
40003
|
+
args.id = opts.id;
|
|
39823
40004
|
if (!opts.yes) {
|
|
39824
40005
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39825
40006
|
if (!confirmed) {
|
|
@@ -39829,199 +40010,216 @@ Examples:
|
|
|
39829
40010
|
}
|
|
39830
40011
|
await ctx.execute({
|
|
39831
40012
|
method: "DELETE",
|
|
39832
|
-
path: "/v1/
|
|
40013
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39833
40014
|
args,
|
|
39834
|
-
queryParamKeys: [
|
|
40015
|
+
queryParamKeys: []
|
|
39835
40016
|
});
|
|
39836
40017
|
});
|
|
39837
|
-
resource.command("
|
|
40018
|
+
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", `
|
|
39838
40019
|
Examples:
|
|
39839
|
-
hyperline
|
|
39840
|
-
hyperline agents apply-agent-default-plan --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
40020
|
+
hyperline ai-billing get-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
39841
40021
|
const ctx = resource.parent?.opts()._ctx;
|
|
39842
40022
|
if (!ctx) {
|
|
39843
40023
|
process.stderr.write("Error: Not authenticated\n");
|
|
39844
40024
|
process.exit(1);
|
|
39845
40025
|
}
|
|
39846
40026
|
const args = {};
|
|
39847
|
-
if (opts.
|
|
39848
|
-
args.
|
|
40027
|
+
if (opts.id !== void 0)
|
|
40028
|
+
args.id = opts.id;
|
|
40029
|
+
if (opts.agentSlug !== void 0)
|
|
40030
|
+
args.agent_slug = opts.agentSlug;
|
|
39849
40031
|
await ctx.execute({
|
|
39850
|
-
method: "
|
|
39851
|
-
path: "/v1/
|
|
40032
|
+
method: "GET",
|
|
40033
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39852
40034
|
args,
|
|
39853
40035
|
queryParamKeys: []
|
|
39854
40036
|
});
|
|
39855
40037
|
});
|
|
39856
|
-
resource.command("
|
|
40038
|
+
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.
|
|
40039
|
+
|
|
40040
|
+
- wallet: Charges a monetary wallet.
|
|
40041
|
+
- credits: Consumes a credit balance.
|
|
40042
|
+
- 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.
|
|
40043
|
+
|
|
40044
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
40045
|
+
- 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.
|
|
40046
|
+
|
|
40047
|
+
- 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", `
|
|
39857
40048
|
Examples:
|
|
39858
|
-
hyperline
|
|
39859
|
-
hyperline
|
|
40049
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked
|
|
40050
|
+
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>
|
|
40051
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39860
40052
|
const ctx = resource.parent?.opts()._ctx;
|
|
39861
40053
|
if (!ctx) {
|
|
39862
40054
|
process.stderr.write("Error: Not authenticated\n");
|
|
39863
40055
|
process.exit(1);
|
|
39864
40056
|
}
|
|
39865
40057
|
const args = {};
|
|
39866
|
-
if (opts.
|
|
39867
|
-
args.
|
|
39868
|
-
if (opts.
|
|
39869
|
-
args.
|
|
40058
|
+
if (opts.id !== void 0)
|
|
40059
|
+
args.id = opts.id;
|
|
40060
|
+
if (opts.agentSlug !== void 0)
|
|
40061
|
+
args.agent_slug = opts.agentSlug;
|
|
40062
|
+
if (opts.mode !== void 0)
|
|
40063
|
+
args.mode = opts.mode;
|
|
40064
|
+
if (opts.walletId !== void 0)
|
|
40065
|
+
args.wallet_id = opts.walletId;
|
|
40066
|
+
if (opts.creditProductId !== void 0)
|
|
40067
|
+
args.credit_product_id = opts.creditProductId;
|
|
40068
|
+
if (opts.markupPercent !== void 0)
|
|
40069
|
+
args.markup_percent = opts.markupPercent;
|
|
40070
|
+
if (opts.overageMode !== void 0)
|
|
40071
|
+
args.overage_mode = opts.overageMode;
|
|
40072
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
40073
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
40074
|
+
if (opts.overageRateCardId !== void 0)
|
|
40075
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
40076
|
+
if (opts.overageWalletId !== void 0)
|
|
40077
|
+
args.overage_wallet_id = opts.overageWalletId;
|
|
40078
|
+
if (opts.floor !== void 0)
|
|
40079
|
+
args.floor = opts.floor;
|
|
40080
|
+
if (opts.settlementSchedule !== void 0)
|
|
40081
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
40082
|
+
if (opts.rateCardId !== void 0)
|
|
40083
|
+
args.rate_card_id = opts.rateCardId;
|
|
40084
|
+
if (opts.planId !== void 0)
|
|
40085
|
+
args.plan_id = opts.planId;
|
|
40086
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
40087
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
40088
|
+
if (opts.blocked !== void 0)
|
|
40089
|
+
args.blocked = true;
|
|
40090
|
+
if (opts.windows !== void 0)
|
|
40091
|
+
args.windows = JSON.parse(opts.windows);
|
|
39870
40092
|
await ctx.execute({
|
|
39871
|
-
method: "
|
|
39872
|
-
path: "/v1/
|
|
40093
|
+
method: "PUT",
|
|
40094
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39873
40095
|
args,
|
|
39874
|
-
queryParamKeys: [
|
|
40096
|
+
queryParamKeys: []
|
|
39875
40097
|
});
|
|
39876
40098
|
});
|
|
39877
|
-
resource.command("
|
|
40099
|
+
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", `
|
|
39878
40100
|
Examples:
|
|
39879
|
-
hyperline
|
|
39880
|
-
hyperline
|
|
39881
|
-
hyperline agents reset-agent-customer-windows --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
40101
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>
|
|
40102
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --output json`).action(async (opts) => {
|
|
39882
40103
|
const ctx = resource.parent?.opts()._ctx;
|
|
39883
40104
|
if (!ctx) {
|
|
39884
40105
|
process.stderr.write("Error: Not authenticated\n");
|
|
39885
40106
|
process.exit(1);
|
|
39886
40107
|
}
|
|
39887
40108
|
const args = {};
|
|
39888
|
-
if (opts.
|
|
39889
|
-
args.
|
|
39890
|
-
if (opts.
|
|
39891
|
-
args.
|
|
40109
|
+
if (opts.id !== void 0)
|
|
40110
|
+
args.id = opts.id;
|
|
40111
|
+
if (opts.agentSlug !== void 0)
|
|
40112
|
+
args.agent_slug = opts.agentSlug;
|
|
40113
|
+
if (!opts.yes) {
|
|
40114
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40115
|
+
if (!confirmed) {
|
|
40116
|
+
process.stdout.write("Aborted.\n");
|
|
40117
|
+
return;
|
|
40118
|
+
}
|
|
40119
|
+
}
|
|
39892
40120
|
await ctx.execute({
|
|
39893
|
-
method: "
|
|
39894
|
-
path: "/v1/
|
|
40121
|
+
method: "DELETE",
|
|
40122
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
39895
40123
|
args,
|
|
39896
|
-
queryParamKeys: [
|
|
40124
|
+
queryParamKeys: []
|
|
39897
40125
|
});
|
|
39898
40126
|
});
|
|
39899
|
-
resource.command("
|
|
40127
|
+
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", `
|
|
39900
40128
|
Examples:
|
|
39901
|
-
hyperline
|
|
39902
|
-
hyperline
|
|
40129
|
+
hyperline ai-billing apply-agent-default-plan --id <id>
|
|
40130
|
+
hyperline ai-billing apply-agent-default-plan --id <id> --output json`).action(async (opts) => {
|
|
39903
40131
|
const ctx = resource.parent?.opts()._ctx;
|
|
39904
40132
|
if (!ctx) {
|
|
39905
40133
|
process.stderr.write("Error: Not authenticated\n");
|
|
39906
40134
|
process.exit(1);
|
|
39907
40135
|
}
|
|
39908
40136
|
const args = {};
|
|
39909
|
-
if (opts.
|
|
39910
|
-
args.
|
|
39911
|
-
if (opts.agent !== void 0)
|
|
39912
|
-
args.agent = opts.agent;
|
|
39913
|
-
if (opts.from !== void 0)
|
|
39914
|
-
args.from = opts.from;
|
|
39915
|
-
if (opts.to !== void 0)
|
|
39916
|
-
args.to = opts.to;
|
|
39917
|
-
if (opts.take !== void 0)
|
|
39918
|
-
args.take = Number(opts.take);
|
|
39919
|
-
if (opts.skip !== void 0)
|
|
39920
|
-
args.skip = Number(opts.skip);
|
|
39921
|
-
if (opts.overage !== void 0)
|
|
39922
|
-
args.overage = true;
|
|
40137
|
+
if (opts.id !== void 0)
|
|
40138
|
+
args.id = opts.id;
|
|
39923
40139
|
await ctx.execute({
|
|
39924
|
-
method: "
|
|
39925
|
-
path: "/v1/
|
|
40140
|
+
method: "POST",
|
|
40141
|
+
path: "/v1/ai/billing/customers/{id}/apply-default-plan",
|
|
39926
40142
|
args,
|
|
39927
|
-
queryParamKeys: [
|
|
40143
|
+
queryParamKeys: []
|
|
39928
40144
|
});
|
|
39929
40145
|
});
|
|
39930
|
-
resource.command("get-agent-customer-
|
|
40146
|
+
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", `
|
|
39931
40147
|
Examples:
|
|
39932
|
-
hyperline
|
|
40148
|
+
hyperline ai-billing get-agent-customer-balance --id <id>
|
|
40149
|
+
hyperline ai-billing get-agent-customer-balance --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
39933
40150
|
const ctx = resource.parent?.opts()._ctx;
|
|
39934
40151
|
if (!ctx) {
|
|
39935
40152
|
process.stderr.write("Error: Not authenticated\n");
|
|
39936
40153
|
process.exit(1);
|
|
39937
40154
|
}
|
|
39938
40155
|
const args = {};
|
|
39939
|
-
if (opts.
|
|
39940
|
-
args.
|
|
40156
|
+
if (opts.id !== void 0)
|
|
40157
|
+
args.id = opts.id;
|
|
40158
|
+
if (opts.agentSlug !== void 0)
|
|
40159
|
+
args.agent_slug = opts.agentSlug;
|
|
39941
40160
|
await ctx.execute({
|
|
39942
40161
|
method: "GET",
|
|
39943
|
-
path: "/v1/
|
|
40162
|
+
path: "/v1/ai/billing/customers/{id}/balance",
|
|
39944
40163
|
args,
|
|
39945
|
-
queryParamKeys: []
|
|
40164
|
+
queryParamKeys: ["agent_slug"]
|
|
39946
40165
|
});
|
|
39947
40166
|
});
|
|
39948
|
-
|
|
39949
|
-
|
|
39950
|
-
// build/commands/generated/aggregators.js
|
|
39951
|
-
function registerAggregatorsCommands(parent) {
|
|
39952
|
-
const resource = parent.command("aggregators").description("Manage aggregators");
|
|
39953
|
-
resource.command("list").description(`List all aggregators with pagination. Aggregators define how billable events are counted or summed to compute usage.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
40167
|
+
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", `
|
|
39954
40168
|
Examples:
|
|
39955
|
-
hyperline
|
|
39956
|
-
hyperline
|
|
40169
|
+
hyperline ai-billing reset-agent-customer-windows --id <id>
|
|
40170
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --agent-slug <agent_slug>
|
|
40171
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --output json`).action(async (opts) => {
|
|
39957
40172
|
const ctx = resource.parent?.opts()._ctx;
|
|
39958
40173
|
if (!ctx) {
|
|
39959
40174
|
process.stderr.write("Error: Not authenticated\n");
|
|
39960
40175
|
process.exit(1);
|
|
39961
40176
|
}
|
|
39962
40177
|
const args = {};
|
|
39963
|
-
if (opts.
|
|
39964
|
-
args.
|
|
39965
|
-
if (opts.
|
|
39966
|
-
args.
|
|
40178
|
+
if (opts.id !== void 0)
|
|
40179
|
+
args.id = opts.id;
|
|
40180
|
+
if (opts.agentSlug !== void 0)
|
|
40181
|
+
args.agent_slug = opts.agentSlug;
|
|
39967
40182
|
await ctx.execute({
|
|
39968
|
-
method: "
|
|
39969
|
-
path: "/v1/
|
|
40183
|
+
method: "POST",
|
|
40184
|
+
path: "/v1/ai/billing/customers/{id}/windows/reset",
|
|
39970
40185
|
args,
|
|
39971
|
-
queryParamKeys: ["
|
|
40186
|
+
queryParamKeys: ["agent_slug"]
|
|
39972
40187
|
});
|
|
39973
40188
|
});
|
|
39974
|
-
resource.command("
|
|
40189
|
+
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", `
|
|
39975
40190
|
Examples:
|
|
39976
|
-
hyperline
|
|
39977
|
-
hyperline
|
|
39978
|
-
hyperline aggregators create --entity <entity> --operation <operation> --output json`).action(async (opts) => {
|
|
40191
|
+
hyperline ai-billing list-agent-customer-consumption --id <id>
|
|
40192
|
+
hyperline ai-billing list-agent-customer-consumption --id <id> --agent-slug <agent_slug> --overage <overage>`).action(async (opts) => {
|
|
39979
40193
|
const ctx = resource.parent?.opts()._ctx;
|
|
39980
40194
|
if (!ctx) {
|
|
39981
40195
|
process.stderr.write("Error: Not authenticated\n");
|
|
39982
40196
|
process.exit(1);
|
|
39983
40197
|
}
|
|
39984
40198
|
const args = {};
|
|
39985
|
-
if (opts.
|
|
39986
|
-
args.
|
|
39987
|
-
if (opts.
|
|
39988
|
-
args.
|
|
39989
|
-
if (opts.
|
|
39990
|
-
args.
|
|
39991
|
-
if (opts.
|
|
39992
|
-
args.
|
|
39993
|
-
if (opts.
|
|
39994
|
-
args.
|
|
39995
|
-
if (opts.
|
|
39996
|
-
args.
|
|
39997
|
-
if (opts.
|
|
39998
|
-
args.
|
|
39999
|
-
if (opts.operation !== void 0)
|
|
40000
|
-
args.operation = opts.operation;
|
|
40001
|
-
if (opts.property !== void 0)
|
|
40002
|
-
args.property = opts.property;
|
|
40003
|
-
if (opts.defaultIntervalCount !== void 0)
|
|
40004
|
-
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
40005
|
-
if (opts.allowNegativeValues !== void 0)
|
|
40006
|
-
args.allow_negative_values = true;
|
|
40007
|
-
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
40008
|
-
args.aggregate_on_customers_enabled = true;
|
|
40009
|
-
if (opts.where !== void 0)
|
|
40010
|
-
args.where = JSON.parse(opts.where);
|
|
40011
|
-
if (opts.exposedEventKeys !== void 0)
|
|
40012
|
-
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
40013
|
-
if (opts.thresholds !== void 0)
|
|
40014
|
-
args.thresholds = JSON.parse(opts.thresholds);
|
|
40199
|
+
if (opts.id !== void 0)
|
|
40200
|
+
args.id = opts.id;
|
|
40201
|
+
if (opts.agentSlug !== void 0)
|
|
40202
|
+
args.agent_slug = opts.agentSlug;
|
|
40203
|
+
if (opts.overage !== void 0)
|
|
40204
|
+
args.overage = opts.overage;
|
|
40205
|
+
if (opts.from !== void 0)
|
|
40206
|
+
args.from = opts.from;
|
|
40207
|
+
if (opts.to !== void 0)
|
|
40208
|
+
args.to = opts.to;
|
|
40209
|
+
if (opts.take !== void 0)
|
|
40210
|
+
args.take = Number(opts.take);
|
|
40211
|
+
if (opts.skip !== void 0)
|
|
40212
|
+
args.skip = Number(opts.skip);
|
|
40015
40213
|
await ctx.execute({
|
|
40016
|
-
method: "
|
|
40017
|
-
path: "/v1/
|
|
40214
|
+
method: "GET",
|
|
40215
|
+
path: "/v1/ai/billing/customers/{id}/consumption",
|
|
40018
40216
|
args,
|
|
40019
|
-
queryParamKeys: []
|
|
40217
|
+
queryParamKeys: ["agent_slug", "overage", "from", "to", "take", "skip"]
|
|
40020
40218
|
});
|
|
40021
40219
|
});
|
|
40022
|
-
resource.command("get").description(`
|
|
40220
|
+
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", `
|
|
40023
40221
|
Examples:
|
|
40024
|
-
hyperline
|
|
40222
|
+
hyperline ai-billing get-product-ai-rate-card --id <id>`).action(async (opts) => {
|
|
40025
40223
|
const ctx = resource.parent?.opts()._ctx;
|
|
40026
40224
|
if (!ctx) {
|
|
40027
40225
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40032,65 +40230,36 @@ Examples:
|
|
|
40032
40230
|
args.id = opts.id;
|
|
40033
40231
|
await ctx.execute({
|
|
40034
40232
|
method: "GET",
|
|
40035
|
-
path: "/v1/
|
|
40233
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40036
40234
|
args,
|
|
40037
40235
|
queryParamKeys: []
|
|
40038
40236
|
});
|
|
40039
40237
|
});
|
|
40040
|
-
resource.command("
|
|
40238
|
+
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", `
|
|
40041
40239
|
Examples:
|
|
40042
|
-
hyperline
|
|
40043
|
-
hyperline
|
|
40044
|
-
hyperline aggregators update --id <id> --output json`).action(async (opts) => {
|
|
40240
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id>
|
|
40241
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id> --output json`).action(async (opts) => {
|
|
40045
40242
|
const ctx = resource.parent?.opts()._ctx;
|
|
40046
40243
|
if (!ctx) {
|
|
40047
40244
|
process.stderr.write("Error: Not authenticated\n");
|
|
40048
40245
|
process.exit(1);
|
|
40049
40246
|
}
|
|
40050
40247
|
const args = {};
|
|
40051
|
-
if (opts.id !== void 0)
|
|
40052
|
-
args.id = opts.id;
|
|
40053
|
-
if (opts.
|
|
40054
|
-
args.
|
|
40055
|
-
if (opts.type !== void 0)
|
|
40056
|
-
args.type = opts.type;
|
|
40057
|
-
if (opts.name !== void 0)
|
|
40058
|
-
args.name = opts.name;
|
|
40059
|
-
if (opts.description !== void 0)
|
|
40060
|
-
args.description = opts.description;
|
|
40061
|
-
if (opts.customEventName !== void 0)
|
|
40062
|
-
args.custom_event_name = opts.customEventName;
|
|
40063
|
-
if (opts.unitName !== void 0)
|
|
40064
|
-
args.unit_name = opts.unitName;
|
|
40065
|
-
if (opts.defaultIntervalPeriod !== void 0)
|
|
40066
|
-
args.default_interval_period = opts.defaultIntervalPeriod;
|
|
40067
|
-
if (opts.operation !== void 0)
|
|
40068
|
-
args.operation = opts.operation;
|
|
40069
|
-
if (opts.property !== void 0)
|
|
40070
|
-
args.property = opts.property;
|
|
40071
|
-
if (opts.defaultIntervalCount !== void 0)
|
|
40072
|
-
args.default_interval_count = Number(opts.defaultIntervalCount);
|
|
40073
|
-
if (opts.allowNegativeValues !== void 0)
|
|
40074
|
-
args.allow_negative_values = true;
|
|
40075
|
-
if (opts.aggregateOnCustomersEnabled !== void 0)
|
|
40076
|
-
args.aggregate_on_customers_enabled = true;
|
|
40077
|
-
if (opts.where !== void 0)
|
|
40078
|
-
args.where = JSON.parse(opts.where);
|
|
40079
|
-
if (opts.exposedEventKeys !== void 0)
|
|
40080
|
-
args.exposed_event_keys = JSON.parse(opts.exposedEventKeys);
|
|
40081
|
-
if (opts.thresholds !== void 0)
|
|
40082
|
-
args.thresholds = JSON.parse(opts.thresholds);
|
|
40248
|
+
if (opts.id !== void 0)
|
|
40249
|
+
args.id = opts.id;
|
|
40250
|
+
if (opts.rateCardId !== void 0)
|
|
40251
|
+
args.rate_card_id = opts.rateCardId;
|
|
40083
40252
|
await ctx.execute({
|
|
40084
40253
|
method: "PUT",
|
|
40085
|
-
path: "/v1/
|
|
40254
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40086
40255
|
args,
|
|
40087
40256
|
queryParamKeys: []
|
|
40088
40257
|
});
|
|
40089
40258
|
});
|
|
40090
|
-
resource.command("
|
|
40259
|
+
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", `
|
|
40091
40260
|
Examples:
|
|
40092
|
-
hyperline
|
|
40093
|
-
hyperline
|
|
40261
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id>
|
|
40262
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id> --output json`).action(async (opts) => {
|
|
40094
40263
|
const ctx = resource.parent?.opts()._ctx;
|
|
40095
40264
|
if (!ctx) {
|
|
40096
40265
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40108,38 +40277,66 @@ Examples:
|
|
|
40108
40277
|
}
|
|
40109
40278
|
await ctx.execute({
|
|
40110
40279
|
method: "DELETE",
|
|
40111
|
-
path: "/v1/
|
|
40280
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40112
40281
|
args,
|
|
40113
40282
|
queryParamKeys: []
|
|
40114
40283
|
});
|
|
40115
40284
|
});
|
|
40116
40285
|
}
|
|
40117
40286
|
|
|
40118
|
-
// build/commands/generated/
|
|
40119
|
-
function
|
|
40120
|
-
const resource = parent.command("
|
|
40121
|
-
resource.command("
|
|
40287
|
+
// build/commands/generated/ai-costs.js
|
|
40288
|
+
function registerAi_CostsCommands(parent) {
|
|
40289
|
+
const resource = parent.command("ai-costs").description("Manage ai > costs");
|
|
40290
|
+
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", `
|
|
40122
40291
|
Examples:
|
|
40123
|
-
hyperline
|
|
40292
|
+
hyperline ai-costs list-agent-cost-catalog
|
|
40293
|
+
hyperline ai-costs list-agent-cost-catalog --take <take> --enabled-only <enabled_only>`).action(async (opts) => {
|
|
40124
40294
|
const ctx = resource.parent?.opts()._ctx;
|
|
40125
40295
|
if (!ctx) {
|
|
40126
40296
|
process.stderr.write("Error: Not authenticated\n");
|
|
40127
40297
|
process.exit(1);
|
|
40128
40298
|
}
|
|
40129
40299
|
const args = {};
|
|
40130
|
-
if (opts.
|
|
40131
|
-
args.
|
|
40300
|
+
if (opts.enabledOnly !== void 0)
|
|
40301
|
+
args.enabled_only = opts.enabledOnly;
|
|
40302
|
+
if (opts.take !== void 0)
|
|
40303
|
+
args.take = Number(opts.take);
|
|
40304
|
+
if (opts.skip !== void 0)
|
|
40305
|
+
args.skip = Number(opts.skip);
|
|
40132
40306
|
await ctx.execute({
|
|
40133
40307
|
method: "GET",
|
|
40134
|
-
path: "/v1/
|
|
40308
|
+
path: "/v1/ai/billing/costs",
|
|
40309
|
+
args,
|
|
40310
|
+
queryParamKeys: ["take", "skip", "enabled_only"]
|
|
40311
|
+
});
|
|
40312
|
+
});
|
|
40313
|
+
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", `
|
|
40314
|
+
Examples:
|
|
40315
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions>
|
|
40316
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40317
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40318
|
+
if (!ctx) {
|
|
40319
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40320
|
+
process.exit(1);
|
|
40321
|
+
}
|
|
40322
|
+
const args = {};
|
|
40323
|
+
if (opts.provider !== void 0)
|
|
40324
|
+
args.provider = opts.provider;
|
|
40325
|
+
if (opts.item !== void 0)
|
|
40326
|
+
args.item = opts.item;
|
|
40327
|
+
if (opts.dimensions !== void 0)
|
|
40328
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40329
|
+
await ctx.execute({
|
|
40330
|
+
method: "POST",
|
|
40331
|
+
path: "/v1/ai/billing/costs/items",
|
|
40135
40332
|
args,
|
|
40136
40333
|
queryParamKeys: []
|
|
40137
40334
|
});
|
|
40138
40335
|
});
|
|
40139
|
-
resource.command("
|
|
40336
|
+
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", `
|
|
40140
40337
|
Examples:
|
|
40141
|
-
hyperline
|
|
40142
|
-
hyperline
|
|
40338
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id>
|
|
40339
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id> --output json`).action(async (opts) => {
|
|
40143
40340
|
const ctx = resource.parent?.opts()._ctx;
|
|
40144
40341
|
if (!ctx) {
|
|
40145
40342
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40148,30 +40345,56 @@ Examples:
|
|
|
40148
40345
|
const args = {};
|
|
40149
40346
|
if (opts.id !== void 0)
|
|
40150
40347
|
args.id = opts.id;
|
|
40151
|
-
if (opts.
|
|
40152
|
-
|
|
40153
|
-
|
|
40154
|
-
|
|
40155
|
-
|
|
40156
|
-
|
|
40157
|
-
|
|
40158
|
-
args.group_by = opts.groupBy;
|
|
40348
|
+
if (!opts.yes) {
|
|
40349
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40350
|
+
if (!confirmed) {
|
|
40351
|
+
process.stdout.write("Aborted.\n");
|
|
40352
|
+
return;
|
|
40353
|
+
}
|
|
40354
|
+
}
|
|
40159
40355
|
await ctx.execute({
|
|
40160
|
-
method: "
|
|
40161
|
-
path: "/v1/
|
|
40356
|
+
method: "DELETE",
|
|
40357
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40162
40358
|
args,
|
|
40163
|
-
queryParamKeys: [
|
|
40164
|
-
"start_date",
|
|
40165
|
-
"end_date",
|
|
40166
|
-
"aggregator_filter_id",
|
|
40167
|
-
"group_by"
|
|
40168
|
-
]
|
|
40359
|
+
queryParamKeys: []
|
|
40169
40360
|
});
|
|
40170
40361
|
});
|
|
40171
|
-
resource.command("
|
|
40362
|
+
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", `
|
|
40172
40363
|
Examples:
|
|
40173
|
-
hyperline
|
|
40174
|
-
hyperline
|
|
40364
|
+
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>
|
|
40365
|
+
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>
|
|
40366
|
+
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) => {
|
|
40367
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40368
|
+
if (!ctx) {
|
|
40369
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40370
|
+
process.exit(1);
|
|
40371
|
+
}
|
|
40372
|
+
const args = {};
|
|
40373
|
+
if (opts.provider !== void 0)
|
|
40374
|
+
args.provider = opts.provider;
|
|
40375
|
+
if (opts.model !== void 0)
|
|
40376
|
+
args.model = opts.model;
|
|
40377
|
+
if (opts.inputPerMTokens !== void 0)
|
|
40378
|
+
args.input_per_m_tokens = opts.inputPerMTokens;
|
|
40379
|
+
if (opts.outputPerMTokens !== void 0)
|
|
40380
|
+
args.output_per_m_tokens = opts.outputPerMTokens;
|
|
40381
|
+
if (opts.cachedInputPerMTokens !== void 0)
|
|
40382
|
+
args.cached_input_per_m_tokens = opts.cachedInputPerMTokens;
|
|
40383
|
+
if (opts.cacheWritePerMTokens !== void 0)
|
|
40384
|
+
args.cache_write_per_m_tokens = opts.cacheWritePerMTokens;
|
|
40385
|
+
if (opts.dimensions !== void 0)
|
|
40386
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40387
|
+
await ctx.execute({
|
|
40388
|
+
method: "PUT",
|
|
40389
|
+
path: "/v1/ai/billing/costs/overrides",
|
|
40390
|
+
args,
|
|
40391
|
+
queryParamKeys: []
|
|
40392
|
+
});
|
|
40393
|
+
});
|
|
40394
|
+
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", `
|
|
40395
|
+
Examples:
|
|
40396
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id>
|
|
40397
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id> --output json`).action(async (opts) => {
|
|
40175
40398
|
const ctx = resource.parent?.opts()._ctx;
|
|
40176
40399
|
if (!ctx) {
|
|
40177
40400
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40180,33 +40403,24 @@ Examples:
|
|
|
40180
40403
|
const args = {};
|
|
40181
40404
|
if (opts.id !== void 0)
|
|
40182
40405
|
args.id = opts.id;
|
|
40183
|
-
if (opts.
|
|
40184
|
-
|
|
40185
|
-
|
|
40186
|
-
|
|
40187
|
-
|
|
40188
|
-
|
|
40189
|
-
|
|
40190
|
-
args.take = Number(opts.take);
|
|
40191
|
-
if (opts.skip !== void 0)
|
|
40192
|
-
args.skip = Number(opts.skip);
|
|
40406
|
+
if (!opts.yes) {
|
|
40407
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40408
|
+
if (!confirmed) {
|
|
40409
|
+
process.stdout.write("Aborted.\n");
|
|
40410
|
+
return;
|
|
40411
|
+
}
|
|
40412
|
+
}
|
|
40193
40413
|
await ctx.execute({
|
|
40194
|
-
method: "
|
|
40195
|
-
path: "/v1/
|
|
40414
|
+
method: "DELETE",
|
|
40415
|
+
path: "/v1/ai/billing/costs/overrides/{id}",
|
|
40196
40416
|
args,
|
|
40197
|
-
queryParamKeys: [
|
|
40198
|
-
"start_date",
|
|
40199
|
-
"end_date",
|
|
40200
|
-
"aggregator_filter_id",
|
|
40201
|
-
"take",
|
|
40202
|
-
"skip"
|
|
40203
|
-
]
|
|
40417
|
+
queryParamKeys: []
|
|
40204
40418
|
});
|
|
40205
40419
|
});
|
|
40206
|
-
resource.command("
|
|
40420
|
+
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", `
|
|
40207
40421
|
Examples:
|
|
40208
|
-
hyperline
|
|
40209
|
-
hyperline
|
|
40422
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions>
|
|
40423
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40210
40424
|
const ctx = resource.parent?.opts()._ctx;
|
|
40211
40425
|
if (!ctx) {
|
|
40212
40426
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -40215,27 +40429,17 @@ Examples:
|
|
|
40215
40429
|
const args = {};
|
|
40216
40430
|
if (opts.id !== void 0)
|
|
40217
40431
|
args.id = opts.id;
|
|
40218
|
-
if (opts.
|
|
40219
|
-
args.
|
|
40220
|
-
if (opts.
|
|
40221
|
-
args.
|
|
40222
|
-
if (opts.
|
|
40223
|
-
args.
|
|
40224
|
-
if (opts.take !== void 0)
|
|
40225
|
-
args.take = Number(opts.take);
|
|
40226
|
-
if (opts.skip !== void 0)
|
|
40227
|
-
args.skip = Number(opts.skip);
|
|
40432
|
+
if (opts.provider !== void 0)
|
|
40433
|
+
args.provider = opts.provider;
|
|
40434
|
+
if (opts.item !== void 0)
|
|
40435
|
+
args.item = opts.item;
|
|
40436
|
+
if (opts.dimensions !== void 0)
|
|
40437
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40228
40438
|
await ctx.execute({
|
|
40229
|
-
method: "
|
|
40230
|
-
path: "/v1/
|
|
40439
|
+
method: "PUT",
|
|
40440
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40231
40441
|
args,
|
|
40232
|
-
queryParamKeys: [
|
|
40233
|
-
"start_date",
|
|
40234
|
-
"end_date",
|
|
40235
|
-
"aggregator_filter_id",
|
|
40236
|
-
"take",
|
|
40237
|
-
"skip"
|
|
40238
|
-
]
|
|
40442
|
+
queryParamKeys: []
|
|
40239
40443
|
});
|
|
40240
40444
|
});
|
|
40241
40445
|
}
|
|
@@ -40399,7 +40603,7 @@ Examples:
|
|
|
40399
40603
|
queryParamKeys: ["take", "skip"]
|
|
40400
40604
|
});
|
|
40401
40605
|
});
|
|
40402
|
-
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40606
|
+
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40403
40607
|
Examples:
|
|
40404
40608
|
hyperline coupons create --name <name> --type <type>
|
|
40405
40609
|
hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40432,6 +40636,8 @@ Examples:
|
|
|
40432
40636
|
args.product_ids = JSON.parse(opts.productIds);
|
|
40433
40637
|
if (opts.duration !== void 0)
|
|
40434
40638
|
args.duration = JSON.parse(opts.duration);
|
|
40639
|
+
if (opts.properties !== void 0)
|
|
40640
|
+
args.properties = JSON.parse(opts.properties);
|
|
40435
40641
|
await ctx.execute({
|
|
40436
40642
|
method: "POST",
|
|
40437
40643
|
path: "/v1/coupons",
|
|
@@ -40457,7 +40663,7 @@ Examples:
|
|
|
40457
40663
|
queryParamKeys: []
|
|
40458
40664
|
});
|
|
40459
40665
|
});
|
|
40460
|
-
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40666
|
+
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `List of product IDs the coupon can be applied to. If empty, the coupon can be applied to any product.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40461
40667
|
Examples:
|
|
40462
40668
|
hyperline coupons update --id <id> --name <name> --type <type>
|
|
40463
40669
|
hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40492,6 +40698,8 @@ Examples:
|
|
|
40492
40698
|
args.product_ids = JSON.parse(opts.productIds);
|
|
40493
40699
|
if (opts.duration !== void 0)
|
|
40494
40700
|
args.duration = JSON.parse(opts.duration);
|
|
40701
|
+
if (opts.properties !== void 0)
|
|
40702
|
+
args.properties = JSON.parse(opts.properties);
|
|
40495
40703
|
await ctx.execute({
|
|
40496
40704
|
method: "PUT",
|
|
40497
40705
|
path: "/v1/coupons/{id}",
|
|
@@ -40723,7 +40931,7 @@ Examples:
|
|
|
40723
40931
|
queryParamKeys: []
|
|
40724
40932
|
});
|
|
40725
40933
|
});
|
|
40726
|
-
resource.command("create-custom-property").description(`Create a new custom property definition with a name, type (
|
|
40934
|
+
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", `
|
|
40727
40935
|
Examples:
|
|
40728
40936
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities>
|
|
40729
40937
|
hyperline custom-properties create-custom-property --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -40748,6 +40956,8 @@ Examples:
|
|
|
40748
40956
|
args.entities = JSON.parse(opts.entities);
|
|
40749
40957
|
if (opts.authorizedValues !== void 0)
|
|
40750
40958
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
40959
|
+
if (opts.defaultValue !== void 0)
|
|
40960
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
40751
40961
|
await ctx.execute({
|
|
40752
40962
|
method: "POST",
|
|
40753
40963
|
path: "/v1/custom-properties",
|
|
@@ -40755,7 +40965,7 @@ Examples:
|
|
|
40755
40965
|
queryParamKeys: []
|
|
40756
40966
|
});
|
|
40757
40967
|
});
|
|
40758
|
-
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", `
|
|
40968
|
+
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", `
|
|
40759
40969
|
Examples:
|
|
40760
40970
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities>
|
|
40761
40971
|
hyperline custom-properties update-custom-property --id <id> --name <name> --type <type> --slug <slug> --entities <entities> --api-only --required
|
|
@@ -40782,6 +40992,8 @@ Examples:
|
|
|
40782
40992
|
args.entities = JSON.parse(opts.entities);
|
|
40783
40993
|
if (opts.authorizedValues !== void 0)
|
|
40784
40994
|
args.authorized_values = JSON.parse(opts.authorizedValues);
|
|
40995
|
+
if (opts.defaultValue !== void 0)
|
|
40996
|
+
args.default_value = JSON.parse(opts.defaultValue);
|
|
40785
40997
|
await ctx.execute({
|
|
40786
40998
|
method: "PUT",
|
|
40787
40999
|
path: "/v1/custom-properties/{id}",
|
|
@@ -41139,7 +41351,7 @@ Customer type.
|
|
|
41139
41351
|
|
|
41140
41352
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
41141
41353
|
- \`exempt\`: The customer is exempt from tax.
|
|
41142
|
-
`).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>", `
|
|
41354
|
+
`).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>", `
|
|
41143
41355
|
How customer invoices are issued from the parent organisation.
|
|
41144
41356
|
|
|
41145
41357
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
@@ -41168,6 +41380,8 @@ Examples:
|
|
|
41168
41380
|
args.taxability = opts.taxability;
|
|
41169
41381
|
if (opts.registrationNumber !== void 0)
|
|
41170
41382
|
args.registration_number = opts.registrationNumber;
|
|
41383
|
+
if (opts.einvoicingCode !== void 0)
|
|
41384
|
+
args.einvoicing_code = opts.einvoicingCode;
|
|
41171
41385
|
if (opts.externalId !== void 0)
|
|
41172
41386
|
args.external_id = opts.externalId;
|
|
41173
41387
|
if (opts.domain !== void 0)
|
|
@@ -41274,7 +41488,7 @@ Customer type.
|
|
|
41274
41488
|
|
|
41275
41489
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
41276
41490
|
- \`exempt\`: The customer is exempt from tax.
|
|
41277
|
-
`).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>", `
|
|
41491
|
+
`).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>", `
|
|
41278
41492
|
How customer invoices are issued from the parent organisation.
|
|
41279
41493
|
|
|
41280
41494
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
@@ -41305,6 +41519,8 @@ Examples:
|
|
|
41305
41519
|
args.taxability = opts.taxability;
|
|
41306
41520
|
if (opts.registrationNumber !== void 0)
|
|
41307
41521
|
args.registration_number = opts.registrationNumber;
|
|
41522
|
+
if (opts.einvoicingCode !== void 0)
|
|
41523
|
+
args.einvoicing_code = opts.einvoicingCode;
|
|
41308
41524
|
if (opts.externalId !== void 0)
|
|
41309
41525
|
args.external_id = opts.externalId;
|
|
41310
41526
|
if (opts.domain !== void 0)
|
|
@@ -41558,7 +41774,7 @@ Examples:
|
|
|
41558
41774
|
queryParamKeys: []
|
|
41559
41775
|
});
|
|
41560
41776
|
});
|
|
41561
|
-
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).`).
|
|
41777
|
+
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", `
|
|
41562
41778
|
Examples:
|
|
41563
41779
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
|
|
41564
41780
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
|
|
@@ -41571,6 +41787,8 @@ Examples:
|
|
|
41571
41787
|
const args = {};
|
|
41572
41788
|
if (opts.customerId !== void 0)
|
|
41573
41789
|
args.customerId = opts.customerId;
|
|
41790
|
+
if (opts.type !== void 0)
|
|
41791
|
+
args.type = opts.type;
|
|
41574
41792
|
if (opts.name !== void 0)
|
|
41575
41793
|
args.name = opts.name;
|
|
41576
41794
|
if (opts.line1 !== void 0)
|
|
@@ -41585,8 +41803,8 @@ Examples:
|
|
|
41585
41803
|
args.state = opts.state;
|
|
41586
41804
|
if (opts.country !== void 0)
|
|
41587
41805
|
args.country = opts.country;
|
|
41588
|
-
if (opts.
|
|
41589
|
-
args.
|
|
41806
|
+
if (opts.taxId !== void 0)
|
|
41807
|
+
args.tax_id = opts.taxId;
|
|
41590
41808
|
await ctx.execute({
|
|
41591
41809
|
method: "POST",
|
|
41592
41810
|
path: "/v1/customers/{customerId}/addresses",
|
|
@@ -41594,7 +41812,7 @@ Examples:
|
|
|
41594
41812
|
queryParamKeys: []
|
|
41595
41813
|
});
|
|
41596
41814
|
});
|
|
41597
|
-
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", `
|
|
41815
|
+
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", `
|
|
41598
41816
|
Examples:
|
|
41599
41817
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
|
|
41600
41818
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
|
|
@@ -41623,6 +41841,8 @@ Examples:
|
|
|
41623
41841
|
args.state = opts.state;
|
|
41624
41842
|
if (opts.country !== void 0)
|
|
41625
41843
|
args.country = opts.country;
|
|
41844
|
+
if (opts.taxId !== void 0)
|
|
41845
|
+
args.tax_id = opts.taxId;
|
|
41626
41846
|
await ctx.execute({
|
|
41627
41847
|
method: "PATCH",
|
|
41628
41848
|
path: "/v1/customers/{customerId}/addresses/{addressId}",
|
|
@@ -41805,7 +42025,7 @@ Examples:
|
|
|
41805
42025
|
queryParamKeys: []
|
|
41806
42026
|
});
|
|
41807
42027
|
});
|
|
41808
|
-
resource.command("list-customer-credit-transactions").description(`List all transactions (
|
|
42028
|
+
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", `
|
|
41809
42029
|
Examples:
|
|
41810
42030
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId>
|
|
41811
42031
|
hyperline customers-credits list-customer-credit-transactions --id <id> --product-id <productId> --take <take> --type <type>`).action(async (opts) => {
|
|
@@ -41976,6 +42196,54 @@ Examples:
|
|
|
41976
42196
|
queryParamKeys: []
|
|
41977
42197
|
});
|
|
41978
42198
|
});
|
|
42199
|
+
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", `
|
|
42200
|
+
Examples:
|
|
42201
|
+
hyperline customers-credits get-customer-credit-portal-settings --id <id> --product-id <productId>`).action(async (opts) => {
|
|
42202
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42203
|
+
if (!ctx) {
|
|
42204
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42205
|
+
process.exit(1);
|
|
42206
|
+
}
|
|
42207
|
+
const args = {};
|
|
42208
|
+
if (opts.id !== void 0)
|
|
42209
|
+
args.id = opts.id;
|
|
42210
|
+
if (opts.productId !== void 0)
|
|
42211
|
+
args.productId = opts.productId;
|
|
42212
|
+
await ctx.execute({
|
|
42213
|
+
method: "GET",
|
|
42214
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42215
|
+
args,
|
|
42216
|
+
queryParamKeys: []
|
|
42217
|
+
});
|
|
42218
|
+
});
|
|
42219
|
+
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\`.`).addHelpText("after", `
|
|
42220
|
+
Examples:
|
|
42221
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
|
|
42222
|
+
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>
|
|
42223
|
+
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --output json`).action(async (opts) => {
|
|
42224
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
42225
|
+
if (!ctx) {
|
|
42226
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
42227
|
+
process.exit(1);
|
|
42228
|
+
}
|
|
42229
|
+
const args = {};
|
|
42230
|
+
if (opts.id !== void 0)
|
|
42231
|
+
args.id = opts.id;
|
|
42232
|
+
if (opts.productId !== void 0)
|
|
42233
|
+
args.productId = opts.productId;
|
|
42234
|
+
if (opts.priceConfigurationId !== void 0)
|
|
42235
|
+
args.price_configuration_id = opts.priceConfigurationId;
|
|
42236
|
+
if (opts.enabled !== void 0)
|
|
42237
|
+
args.enabled = true;
|
|
42238
|
+
if (opts.customPriceConfiguration !== void 0)
|
|
42239
|
+
args.custom_price_configuration = JSON.parse(opts.customPriceConfiguration);
|
|
42240
|
+
await ctx.execute({
|
|
42241
|
+
method: "PUT",
|
|
42242
|
+
path: "/v1/customers/{id}/credits/{productId}/portal-settings",
|
|
42243
|
+
args,
|
|
42244
|
+
queryParamKeys: []
|
|
42245
|
+
});
|
|
42246
|
+
});
|
|
41979
42247
|
}
|
|
41980
42248
|
|
|
41981
42249
|
// build/commands/generated/customers-payment-methods.js
|
|
@@ -42931,7 +43199,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
|
|
|
42931
43199
|
|
|
42932
43200
|
- \`current\`: Use the current default payment method of the customer.
|
|
42933
43201
|
- \`external\`: Manage the payment of the invoice outside of Hyperline.
|
|
42934
|
-
`).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", `
|
|
43202
|
+
`).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", `
|
|
42935
43203
|
Examples:
|
|
42936
43204
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
|
|
42937
43205
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
|
|
@@ -42982,6 +43250,8 @@ Examples:
|
|
|
42982
43250
|
args.due_at = opts.dueAt;
|
|
42983
43251
|
if (opts.settledAt !== void 0)
|
|
42984
43252
|
args.settled_at = opts.settledAt;
|
|
43253
|
+
if (opts.issuingMethod !== void 0)
|
|
43254
|
+
args.issuing_method = opts.issuingMethod;
|
|
42985
43255
|
if (opts.properties !== void 0)
|
|
42986
43256
|
args.properties = JSON.parse(opts.properties);
|
|
42987
43257
|
if (opts.customProperties !== void 0)
|
|
@@ -43171,7 +43441,7 @@ Examples:
|
|
|
43171
43441
|
|
|
43172
43442
|
- \`auto\`: Tax is automatically computed and applied.
|
|
43173
43443
|
- \`not_eligible\`: Tax collection is disabled for the invoice.
|
|
43174
|
-
`).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", `
|
|
43444
|
+
`).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", `
|
|
43175
43445
|
Examples:
|
|
43176
43446
|
hyperline invoices update --id <id>
|
|
43177
43447
|
hyperline invoices update --id <id> --type <type> --document-name <document_name>
|
|
@@ -43200,6 +43470,10 @@ Examples:
|
|
|
43200
43470
|
args.footer = opts.footer;
|
|
43201
43471
|
if (opts.taxScheme !== void 0)
|
|
43202
43472
|
args.tax_scheme = opts.taxScheme;
|
|
43473
|
+
if (opts.issuingMethod !== void 0)
|
|
43474
|
+
args.issuing_method = opts.issuingMethod;
|
|
43475
|
+
if (opts.emittedAt !== void 0)
|
|
43476
|
+
args.emitted_at = opts.emittedAt;
|
|
43203
43477
|
if (opts.paymentMethodType !== void 0)
|
|
43204
43478
|
args.payment_method_type = opts.paymentMethodType;
|
|
43205
43479
|
if (opts.paymentMethodId !== void 0)
|
|
@@ -43408,7 +43682,7 @@ Examples:
|
|
|
43408
43682
|
queryParamKeys: []
|
|
43409
43683
|
});
|
|
43410
43684
|
});
|
|
43411
|
-
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
|
|
43685
|
+
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", `
|
|
43412
43686
|
Examples:
|
|
43413
43687
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
43414
43688
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -43491,6 +43765,8 @@ Examples:
|
|
|
43491
43765
|
args.credit_note_wallet_refund_enabled = true;
|
|
43492
43766
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43493
43767
|
args.standalone_credit_note_creation_enabled = true;
|
|
43768
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43769
|
+
args.fx_conversion_display_enabled = true;
|
|
43494
43770
|
await ctx.execute({
|
|
43495
43771
|
method: "POST",
|
|
43496
43772
|
path: "/v1/invoicing-entities",
|
|
@@ -43498,7 +43774,7 @@ Examples:
|
|
|
43498
43774
|
queryParamKeys: []
|
|
43499
43775
|
});
|
|
43500
43776
|
});
|
|
43501
|
-
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
|
|
43777
|
+
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", `
|
|
43502
43778
|
Examples:
|
|
43503
43779
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
43504
43780
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -43573,6 +43849,8 @@ Examples:
|
|
|
43573
43849
|
args.credit_note_wallet_refund_enabled = true;
|
|
43574
43850
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43575
43851
|
args.standalone_credit_note_creation_enabled = true;
|
|
43852
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43853
|
+
args.fx_conversion_display_enabled = true;
|
|
43576
43854
|
await ctx.execute({
|
|
43577
43855
|
method: "PUT",
|
|
43578
43856
|
path: "/v1/invoicing-entities/{id}",
|
|
@@ -43600,8 +43878,70 @@ Examples:
|
|
|
43600
43878
|
}
|
|
43601
43879
|
}
|
|
43602
43880
|
await ctx.execute({
|
|
43603
|
-
method: "DELETE",
|
|
43604
|
-
path: "/v1/invoicing-entities/{id}",
|
|
43881
|
+
method: "DELETE",
|
|
43882
|
+
path: "/v1/invoicing-entities/{id}",
|
|
43883
|
+
args,
|
|
43884
|
+
queryParamKeys: []
|
|
43885
|
+
});
|
|
43886
|
+
});
|
|
43887
|
+
}
|
|
43888
|
+
|
|
43889
|
+
// build/commands/generated/monitoring.js
|
|
43890
|
+
function registerMonitoringCommands(parent) {
|
|
43891
|
+
const resource = parent.command("monitoring").description("Manage monitoring");
|
|
43892
|
+
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score. Only completed analyses unless status is set.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
|
|
43893
|
+
Examples:
|
|
43894
|
+
hyperline monitoring list-monitoring-analyses
|
|
43895
|
+
hyperline monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
43896
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
43897
|
+
if (!ctx) {
|
|
43898
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
43899
|
+
process.exit(1);
|
|
43900
|
+
}
|
|
43901
|
+
const args = {};
|
|
43902
|
+
if (opts.cursor !== void 0)
|
|
43903
|
+
args.cursor = opts.cursor;
|
|
43904
|
+
if (opts.includeTotal !== void 0)
|
|
43905
|
+
args.include_total = opts.includeTotal;
|
|
43906
|
+
if (opts.customerId !== void 0)
|
|
43907
|
+
args.customer_id = opts.customerId;
|
|
43908
|
+
if (opts.status !== void 0)
|
|
43909
|
+
args.status = opts.status;
|
|
43910
|
+
if (opts["createdAt.gte"] !== void 0)
|
|
43911
|
+
args.created_at__gte = opts["createdAt.gte"];
|
|
43912
|
+
if (opts["createdAt.lte"] !== void 0)
|
|
43913
|
+
args.created_at__lte = opts["createdAt.lte"];
|
|
43914
|
+
if (opts.limit !== void 0)
|
|
43915
|
+
args.limit = Number(opts.limit);
|
|
43916
|
+
await ctx.execute({
|
|
43917
|
+
method: "GET",
|
|
43918
|
+
path: "/v1/agents/monitoring/analyses",
|
|
43919
|
+
args,
|
|
43920
|
+
queryParamKeys: [
|
|
43921
|
+
"limit",
|
|
43922
|
+
"cursor",
|
|
43923
|
+
"include_total",
|
|
43924
|
+
"customer_id",
|
|
43925
|
+
"status",
|
|
43926
|
+
"created_at__gte",
|
|
43927
|
+
"created_at__lte"
|
|
43928
|
+
]
|
|
43929
|
+
});
|
|
43930
|
+
});
|
|
43931
|
+
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", `
|
|
43932
|
+
Examples:
|
|
43933
|
+
hyperline monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
|
|
43934
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
43935
|
+
if (!ctx) {
|
|
43936
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
43937
|
+
process.exit(1);
|
|
43938
|
+
}
|
|
43939
|
+
const args = {};
|
|
43940
|
+
if (opts.id !== void 0)
|
|
43941
|
+
args.id = opts.id;
|
|
43942
|
+
await ctx.execute({
|
|
43943
|
+
method: "GET",
|
|
43944
|
+
path: "/v1/agents/monitoring/analyses/{id}",
|
|
43605
43945
|
args,
|
|
43606
43946
|
queryParamKeys: []
|
|
43607
43947
|
});
|
|
@@ -43893,6 +44233,44 @@ Examples:
|
|
|
43893
44233
|
queryParamKeys: []
|
|
43894
44234
|
});
|
|
43895
44235
|
});
|
|
44236
|
+
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44237
|
+
Examples:
|
|
44238
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
|
|
44239
|
+
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>
|
|
44240
|
+
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --output json`).action(async (opts) => {
|
|
44241
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44242
|
+
if (!ctx) {
|
|
44243
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44244
|
+
process.exit(1);
|
|
44245
|
+
}
|
|
44246
|
+
const args = {};
|
|
44247
|
+
if (opts.currency !== void 0)
|
|
44248
|
+
args.currency = opts.currency;
|
|
44249
|
+
if (opts.priceBookId !== void 0)
|
|
44250
|
+
args.price_book_id = opts.priceBookId;
|
|
44251
|
+
if (opts.type !== void 0)
|
|
44252
|
+
args.type = opts.type;
|
|
44253
|
+
if (opts.productId !== void 0)
|
|
44254
|
+
args.product_id = opts.productId;
|
|
44255
|
+
if (opts.allowOnPortal !== void 0)
|
|
44256
|
+
args.allow_on_portal = true;
|
|
44257
|
+
if (opts.countries !== void 0)
|
|
44258
|
+
args.countries = JSON.parse(opts.countries);
|
|
44259
|
+
if (opts.billingInterval !== void 0)
|
|
44260
|
+
args.billing_interval = JSON.parse(opts.billingInterval);
|
|
44261
|
+
if (opts.commitmentInterval !== void 0)
|
|
44262
|
+
args.commitment_interval = JSON.parse(opts.commitmentInterval);
|
|
44263
|
+
if (opts.prices !== void 0)
|
|
44264
|
+
args.prices = JSON.parse(opts.prices);
|
|
44265
|
+
if (opts.meteringFilter !== void 0)
|
|
44266
|
+
args.metering_filter = JSON.parse(opts.meteringFilter);
|
|
44267
|
+
await ctx.execute({
|
|
44268
|
+
method: "POST",
|
|
44269
|
+
path: "/v1/price-configurations",
|
|
44270
|
+
args,
|
|
44271
|
+
queryParamKeys: []
|
|
44272
|
+
});
|
|
44273
|
+
});
|
|
43896
44274
|
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", `
|
|
43897
44275
|
Examples:
|
|
43898
44276
|
hyperline price-configurations update-prices --id <id>
|
|
@@ -44287,12 +44665,12 @@ Quote status.
|
|
|
44287
44665
|
- \`draft\`: The quote is a draft.
|
|
44288
44666
|
- \`approved\`: The quote is approved and ready to be sent to the customer.
|
|
44289
44667
|
- \`pending_signature\`: The quote is awaiting the customer's signature.
|
|
44290
|
-
`).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.
|
|
44668
|
+
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44291
44669
|
|
|
44292
44670
|
- \`all\`: Display all pricing tiers.
|
|
44293
44671
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
44294
44672
|
- \`none\`: Hide all pricing tiers.
|
|
44295
|
-
`).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("--
|
|
44673
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
44296
44674
|
Examples:
|
|
44297
44675
|
hyperline quotes create --customer-id <customer_id>
|
|
44298
44676
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -44335,8 +44713,8 @@ Examples:
|
|
|
44335
44713
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
44336
44714
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
44337
44715
|
args.display_documents_in_preview = opts.displayDocumentsInPreview;
|
|
44338
|
-
if (opts.
|
|
44339
|
-
args.
|
|
44716
|
+
if (opts.subscriptionUpdateDisplay !== void 0)
|
|
44717
|
+
args.subscription_update_display = opts.subscriptionUpdateDisplay;
|
|
44340
44718
|
if (opts.generateDraftInvoices !== void 0)
|
|
44341
44719
|
args.generate_draft_invoices = opts.generateDraftInvoices;
|
|
44342
44720
|
if (opts.templateId !== void 0)
|
|
@@ -44579,12 +44957,12 @@ Examples:
|
|
|
44579
44957
|
queryParamKeys: []
|
|
44580
44958
|
});
|
|
44581
44959
|
});
|
|
44582
|
-
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.
|
|
44960
|
+
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44583
44961
|
|
|
44584
44962
|
- \`all\`: Display all pricing tiers.
|
|
44585
44963
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
44586
44964
|
- \`none\`: Hide all pricing tiers.
|
|
44587
|
-
`).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("--
|
|
44965
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
44588
44966
|
Examples:
|
|
44589
44967
|
hyperline quotes update --id <id>
|
|
44590
44968
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -44623,8 +45001,8 @@ Examples:
|
|
|
44623
45001
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
44624
45002
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
44625
45003
|
args.display_documents_in_preview = opts.displayDocumentsInPreview;
|
|
44626
|
-
if (opts.
|
|
44627
|
-
args.
|
|
45004
|
+
if (opts.subscriptionUpdateDisplay !== void 0)
|
|
45005
|
+
args.subscription_update_display = opts.subscriptionUpdateDisplay;
|
|
44628
45006
|
if (opts.generateDraftInvoices !== void 0)
|
|
44629
45007
|
args.generate_draft_invoices = opts.generateDraftInvoices;
|
|
44630
45008
|
if (opts.crmOpportunityId !== void 0)
|
|
@@ -44648,6 +45026,25 @@ Examples:
|
|
|
44648
45026
|
queryParamKeys: []
|
|
44649
45027
|
});
|
|
44650
45028
|
});
|
|
45029
|
+
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", `
|
|
45030
|
+
Examples:
|
|
45031
|
+
hyperline quotes duplicate --id <id>
|
|
45032
|
+
hyperline quotes duplicate --id <id> --output json`).action(async (opts) => {
|
|
45033
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45034
|
+
if (!ctx) {
|
|
45035
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45036
|
+
process.exit(1);
|
|
45037
|
+
}
|
|
45038
|
+
const args = {};
|
|
45039
|
+
if (opts.id !== void 0)
|
|
45040
|
+
args.id = opts.id;
|
|
45041
|
+
await ctx.execute({
|
|
45042
|
+
method: "POST",
|
|
45043
|
+
path: "/v1/quotes/{id}/duplicate",
|
|
45044
|
+
args,
|
|
45045
|
+
queryParamKeys: []
|
|
45046
|
+
});
|
|
45047
|
+
});
|
|
44651
45048
|
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", `
|
|
44652
45049
|
Examples:
|
|
44653
45050
|
hyperline quotes download --id <id>
|
|
@@ -44688,6 +45085,24 @@ Examples:
|
|
|
44688
45085
|
queryParamKeys: []
|
|
44689
45086
|
});
|
|
44690
45087
|
});
|
|
45088
|
+
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", `
|
|
45089
|
+
Examples:
|
|
45090
|
+
hyperline quotes get-quote-approvals --id <id>`).action(async (opts) => {
|
|
45091
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45092
|
+
if (!ctx) {
|
|
45093
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45094
|
+
process.exit(1);
|
|
45095
|
+
}
|
|
45096
|
+
const args = {};
|
|
45097
|
+
if (opts.id !== void 0)
|
|
45098
|
+
args.id = opts.id;
|
|
45099
|
+
await ctx.execute({
|
|
45100
|
+
method: "GET",
|
|
45101
|
+
path: "/v1/quotes/{id}/approvals",
|
|
45102
|
+
args,
|
|
45103
|
+
queryParamKeys: []
|
|
45104
|
+
});
|
|
45105
|
+
});
|
|
44691
45106
|
resource.command("finalize").description(`Finalize a draft quote. The quote is submitted for approval when approval is required, otherwise it becomes approved and ready to be sent for signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
44692
45107
|
Examples:
|
|
44693
45108
|
hyperline quotes finalize --id <id>
|
|
@@ -44707,11 +45122,11 @@ Examples:
|
|
|
44707
45122
|
queryParamKeys: []
|
|
44708
45123
|
});
|
|
44709
45124
|
});
|
|
44710
|
-
resource.command("send").description(`Send a quote by email for customer signature. Requires the quote to be approved first.`).requiredOption("--id <value>", `id parameter`).
|
|
45125
|
+
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", `
|
|
44711
45126
|
Examples:
|
|
44712
|
-
hyperline quotes send --id <id>
|
|
45127
|
+
hyperline quotes send --id <id>
|
|
44713
45128
|
hyperline quotes send --id <id> --email <email> --message <message>
|
|
44714
|
-
hyperline quotes send --id <id> --
|
|
45129
|
+
hyperline quotes send --id <id> --output json`).action(async (opts) => {
|
|
44715
45130
|
const ctx = resource.parent?.opts()._ctx;
|
|
44716
45131
|
if (!ctx) {
|
|
44717
45132
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44731,6 +45146,51 @@ Examples:
|
|
|
44731
45146
|
queryParamKeys: []
|
|
44732
45147
|
});
|
|
44733
45148
|
});
|
|
45149
|
+
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", `
|
|
45150
|
+
Examples:
|
|
45151
|
+
hyperline quotes list-quote-signers --id <id>`).action(async (opts) => {
|
|
45152
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45153
|
+
if (!ctx) {
|
|
45154
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45155
|
+
process.exit(1);
|
|
45156
|
+
}
|
|
45157
|
+
const args = {};
|
|
45158
|
+
if (opts.id !== void 0)
|
|
45159
|
+
args.id = opts.id;
|
|
45160
|
+
await ctx.execute({
|
|
45161
|
+
method: "GET",
|
|
45162
|
+
path: "/v1/quotes/{id}/signers",
|
|
45163
|
+
args,
|
|
45164
|
+
queryParamKeys: []
|
|
45165
|
+
});
|
|
45166
|
+
});
|
|
45167
|
+
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>", `
|
|
45168
|
+
Signature workflow of the quote, replaced as a whole.
|
|
45169
|
+
|
|
45170
|
+
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.
|
|
45171
|
+
|
|
45172
|
+
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.
|
|
45173
|
+
`).addHelpText("after", `
|
|
45174
|
+
Examples:
|
|
45175
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers>
|
|
45176
|
+
hyperline quotes set-quote-signers --id <id> --signers <signers> --output json`).action(async (opts) => {
|
|
45177
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45178
|
+
if (!ctx) {
|
|
45179
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45180
|
+
process.exit(1);
|
|
45181
|
+
}
|
|
45182
|
+
const args = {};
|
|
45183
|
+
if (opts.id !== void 0)
|
|
45184
|
+
args.id = opts.id;
|
|
45185
|
+
if (opts.signers !== void 0)
|
|
45186
|
+
args.signers = JSON.parse(opts.signers);
|
|
45187
|
+
await ctx.execute({
|
|
45188
|
+
method: "PUT",
|
|
45189
|
+
path: "/v1/quotes/{id}/signers",
|
|
45190
|
+
args,
|
|
45191
|
+
queryParamKeys: []
|
|
45192
|
+
});
|
|
45193
|
+
});
|
|
44734
45194
|
resource.command("sign").description(`Manually mark a quote as signed externally. Optionally upload a signed PDF. Bypasses the built-in Hyperline signature flow.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
44735
45195
|
Examples:
|
|
44736
45196
|
hyperline quotes sign --id <id>
|
|
@@ -45013,7 +45473,7 @@ Examples:
|
|
|
45013
45473
|
queryParamKeys: []
|
|
45014
45474
|
});
|
|
45015
45475
|
});
|
|
45016
|
-
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", `
|
|
45476
|
+
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", `
|
|
45017
45477
|
Examples:
|
|
45018
45478
|
hyperline subscriptions cancel --id <id>
|
|
45019
45479
|
hyperline subscriptions cancel --id <id> --cancel-at <cancel_at> --reason <reason>
|
|
@@ -45041,9 +45501,10 @@ Examples:
|
|
|
45041
45501
|
queryParamKeys: []
|
|
45042
45502
|
});
|
|
45043
45503
|
});
|
|
45044
|
-
resource.command("reinstate").description(`Reinstate a subscription
|
|
45504
|
+
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", `
|
|
45045
45505
|
Examples:
|
|
45046
45506
|
hyperline subscriptions reinstate --id <id>
|
|
45507
|
+
hyperline subscriptions reinstate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
45047
45508
|
hyperline subscriptions reinstate --id <id> --output json`).action(async (opts) => {
|
|
45048
45509
|
const ctx = resource.parent?.opts()._ctx;
|
|
45049
45510
|
if (!ctx) {
|
|
@@ -45053,6 +45514,12 @@ Examples:
|
|
|
45053
45514
|
const args = {};
|
|
45054
45515
|
if (opts.id !== void 0)
|
|
45055
45516
|
args.id = opts.id;
|
|
45517
|
+
if (opts.reactivateAt !== void 0)
|
|
45518
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45519
|
+
if (opts.invoicingMode !== void 0)
|
|
45520
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45521
|
+
if (opts.chargeLineItems !== void 0)
|
|
45522
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
45056
45523
|
await ctx.execute({
|
|
45057
45524
|
method: "POST",
|
|
45058
45525
|
path: "/v1/subscriptions/{id}/reinstate",
|
|
@@ -45060,7 +45527,7 @@ Examples:
|
|
|
45060
45527
|
queryParamKeys: []
|
|
45061
45528
|
});
|
|
45062
45529
|
});
|
|
45063
|
-
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.
|
|
45530
|
+
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", `
|
|
45064
45531
|
Examples:
|
|
45065
45532
|
hyperline subscriptions pause --id <id>
|
|
45066
45533
|
hyperline subscriptions pause --id <id> --reactivate-at <reactivate_at>
|
|
@@ -45101,9 +45568,10 @@ Examples:
|
|
|
45101
45568
|
queryParamKeys: []
|
|
45102
45569
|
});
|
|
45103
45570
|
});
|
|
45104
|
-
resource.command("reactivate").description(`Resume a paused subscription,
|
|
45571
|
+
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", `
|
|
45105
45572
|
Examples:
|
|
45106
45573
|
hyperline subscriptions reactivate --id <id>
|
|
45574
|
+
hyperline subscriptions reactivate --id <id> --reactivate-at <reactivate_at> --invoicing-mode <invoicing_mode>
|
|
45107
45575
|
hyperline subscriptions reactivate --id <id> --output json`).action(async (opts) => {
|
|
45108
45576
|
const ctx = resource.parent?.opts()._ctx;
|
|
45109
45577
|
if (!ctx) {
|
|
@@ -45113,6 +45581,12 @@ Examples:
|
|
|
45113
45581
|
const args = {};
|
|
45114
45582
|
if (opts.id !== void 0)
|
|
45115
45583
|
args.id = opts.id;
|
|
45584
|
+
if (opts.reactivateAt !== void 0)
|
|
45585
|
+
args.reactivate_at = opts.reactivateAt;
|
|
45586
|
+
if (opts.invoicingMode !== void 0)
|
|
45587
|
+
args.invoicing_mode = opts.invoicingMode;
|
|
45588
|
+
if (opts.chargeLineItems !== void 0)
|
|
45589
|
+
args.charge_line_items = JSON.parse(opts.chargeLineItems);
|
|
45116
45590
|
await ctx.execute({
|
|
45117
45591
|
method: "POST",
|
|
45118
45592
|
path: "/v1/subscriptions/{id}/reactivate",
|
|
@@ -46696,10 +47170,11 @@ function registerAllCommands(program2) {
|
|
|
46696
47170
|
registerAccounting_ReportsCommands(program2);
|
|
46697
47171
|
registerAccounting_Revenue_RecognitionCommands(program2);
|
|
46698
47172
|
registerAccounting_RulesCommands(program2);
|
|
46699
|
-
registerAgentsCommands(program2);
|
|
46700
47173
|
registerCustom_PropertiesCommands(program2);
|
|
46701
47174
|
registerAggregatorsCommands(program2);
|
|
46702
47175
|
registerAggregators_UsageCommands(program2);
|
|
47176
|
+
registerAi_BillingCommands(program2);
|
|
47177
|
+
registerAi_CostsCommands(program2);
|
|
46703
47178
|
registerAnalyticsCommands(program2);
|
|
46704
47179
|
registerBank_AccountsCommands(program2);
|
|
46705
47180
|
registerCompaniesCommands(program2);
|
|
@@ -46718,6 +47193,7 @@ function registerAllCommands(program2) {
|
|
|
46718
47193
|
registerInvoicesCommands(program2);
|
|
46719
47194
|
registerInvoices_TransactionsCommands(program2);
|
|
46720
47195
|
registerInvoicing_EntitiesCommands(program2);
|
|
47196
|
+
registerMonitoringCommands(program2);
|
|
46721
47197
|
registerPaymentsCommands(program2);
|
|
46722
47198
|
registerProductsCommands(program2);
|
|
46723
47199
|
registerPrice_ConfigurationsCommands(program2);
|
|
@@ -62670,12 +63146,41 @@ var DateTimeSchema = external_exports.iso.datetime({
|
|
|
62670
63146
|
example: "2024-12-20T16:04:11Z"
|
|
62671
63147
|
});
|
|
62672
63148
|
|
|
63149
|
+
// ../hyperline-lib/build/http/dto/decimal.js
|
|
63150
|
+
var DecimalStringSchema = external_exports.string().regex(/^-?\d+(\.\d+)?(e[+-]?\d+)?$/i).openapi({
|
|
63151
|
+
description: "Exact decimal string. Interpret the unit using the field description and denomination.",
|
|
63152
|
+
example: "0.0021"
|
|
63153
|
+
});
|
|
63154
|
+
var NonNegativeDecimalStringSchema = external_exports.string().regex(/^\d+(\.\d+)?$/).max(40).openapi({
|
|
63155
|
+
description: "Non-negative exact decimal string, at most 40 characters.",
|
|
63156
|
+
example: "0.0021"
|
|
63157
|
+
});
|
|
63158
|
+
|
|
62673
63159
|
// ../hyperline-lib/build/http/dto/domain.js
|
|
62674
63160
|
var DomainSchema = external_exports.string().trim().toLowerCase().regex(/^(?!:\/\/)(?=.{1,253}$)(?!-)([a-z0-9-]{1,63}\.)+[a-z]{2,63}$/, "Invalid domain").openapi({
|
|
62675
63161
|
description: "Domain name.",
|
|
62676
63162
|
example: "acme.com"
|
|
62677
63163
|
});
|
|
62678
63164
|
|
|
63165
|
+
// ../hyperline-lib/build/http/dto/emailStatus.js
|
|
63166
|
+
var EmailStatusSchema = external_exports.enum([
|
|
63167
|
+
"sent",
|
|
63168
|
+
"delivered",
|
|
63169
|
+
"opened",
|
|
63170
|
+
"clicked",
|
|
63171
|
+
"spammed",
|
|
63172
|
+
"bounced",
|
|
63173
|
+
"queued",
|
|
63174
|
+
"drafted",
|
|
63175
|
+
"attempted",
|
|
63176
|
+
"failed",
|
|
63177
|
+
"undeliverable",
|
|
63178
|
+
"converted",
|
|
63179
|
+
"suppressed",
|
|
63180
|
+
"unsubscribed",
|
|
63181
|
+
"dropped"
|
|
63182
|
+
]);
|
|
63183
|
+
|
|
62679
63184
|
// ../hyperline-lib/build/http/dto/error.js
|
|
62680
63185
|
var ErrorSchema = external_exports.object({
|
|
62681
63186
|
message: external_exports.string()
|
|
@@ -62704,17 +63209,17 @@ var languages = [
|
|
|
62704
63209
|
|
|
62705
63210
|
// ../hyperline-i18n/build/locales/de.js
|
|
62706
63211
|
var de = {
|
|
62707
|
-
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
62708
|
-
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
62709
|
-
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
62710
63212
|
"accounting.creditNotePosted.entryDescription": "Gutschrift {{creditNoteId}} f\xFCr Rechnung {{invoiceId}}",
|
|
62711
|
-
"accounting.
|
|
63213
|
+
"accounting.invoicePosted.entryDescription": "Buchungseintrag f\xFCr Rechnung {{invoiceId}}",
|
|
63214
|
+
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
62712
63215
|
"accounting.revrec.creditLineDescription": "Umsatz realisieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62713
63216
|
"accounting.revrec.debitLineDescription": "Abgrenzungsposten reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62714
63217
|
"accounting.revrec.discountCreditLineDescription": "Erl\xF6sminderung (Rabatt) erfassen \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62715
|
-
"accounting.revrec.closedPeriodFallbackNote": " (in die n\xE4chste offene Periode gebucht \u2013 Zielperiode geschlossen; urspr\xFCngliches Datum {{originalDate}})",
|
|
62716
63218
|
"accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
62717
63219
|
"accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
|
|
63220
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
|
|
63221
|
+
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
63222
|
+
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
62718
63223
|
"creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
|
|
62719
63224
|
"credits.bundleOf": "{{productName}} - Paket mit {{creditCount}} Guthaben",
|
|
62720
63225
|
"credits.unitsOf": "{{productName}} - {{creditCount}} Guthaben",
|
|
@@ -62728,9 +63233,9 @@ var de = {
|
|
|
62728
63233
|
"invoices.prorata.paymentForItemFullPeriod": "Zahlung f\xFCr",
|
|
62729
63234
|
"invoices.prorata.refundForItem": "Anteilig erstatteter Betrag f\xFCr",
|
|
62730
63235
|
"invoices.prorata.refundForItemFullPeriod": "Erstattung f\xFCr",
|
|
62731
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben",
|
|
62732
63236
|
"subscriptions.closingChargeName": "Abschlussgeb\xFChr f\xFCr das Abonnement",
|
|
62733
63237
|
"subscriptions.correction": "Vorperiodische Anpassung",
|
|
63238
|
+
"subscriptions.reinstatementRechargeName": "Wiederherstellungsgeb\xFChr f\xFCr den stornierten Zeitraum",
|
|
62734
63239
|
"subscriptions.updates.addCoupon": "Gutschein hinzuf\xFCgen {{couponName}}",
|
|
62735
63240
|
"subscriptions.updates.addProduct": "{{productName}} hinzuf\xFCgen",
|
|
62736
63241
|
"subscriptions.updates.removeCoupon": "Gutschein entfernen {{couponName}}",
|
|
@@ -62745,7 +63250,8 @@ var de = {
|
|
|
62745
63250
|
"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",
|
|
62746
63251
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Diese Position wurde f\xFCr den anteiligen Zeitraum in Rechnung gestellt",
|
|
62747
63252
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Betrag von {{amount}} f\xFCr den anteiligen Zeitraum nicht in Rechnung gestellt",
|
|
62748
|
-
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren"
|
|
63253
|
+
"subscriptions.updates.updatePrices": "Preise f\xFCr {{productName}} aktualisieren",
|
|
63254
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 abgelaufenes Guthaben"
|
|
62749
63255
|
};
|
|
62750
63256
|
|
|
62751
63257
|
// ../hyperline-i18n/build/locales/en.js
|
|
@@ -62762,6 +63268,7 @@ var en = {
|
|
|
62762
63268
|
"invoices.prorata.refundForItemFullPeriod": "Refund for",
|
|
62763
63269
|
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 expired balance",
|
|
62764
63270
|
"subscriptions.closingChargeName": "Closing fee for subscription",
|
|
63271
|
+
"subscriptions.reinstatementRechargeName": "Reinstatement recharge of canceled period",
|
|
62765
63272
|
"subscriptions.correction": "Adjustment previous period",
|
|
62766
63273
|
"subscriptions.updates.addCoupon": "Add coupon {{couponName}}",
|
|
62767
63274
|
"subscriptions.updates.addProduct": "Add {{productName}}",
|
|
@@ -62796,17 +63303,17 @@ var en = {
|
|
|
62796
63303
|
|
|
62797
63304
|
// ../hyperline-i18n/build/locales/es.js
|
|
62798
63305
|
var es = {
|
|
62799
|
-
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
62800
|
-
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62801
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
62802
63306
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para la factura {{invoiceId}}",
|
|
62803
|
-
"accounting.
|
|
63307
|
+
"accounting.invoicePosted.entryDescription": "Asiento contable para la factura {{invoiceId}}",
|
|
63308
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62804
63309
|
"accounting.revrec.creditLineDescription": "Reconocer ingresos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62805
63310
|
"accounting.revrec.debitLineDescription": "Disminuci\xF3n de ingresos diferidos \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62806
63311
|
"accounting.revrec.discountCreditLineDescription": "Reconocer contra-ingresos (descuento) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62807
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrado en el pr\xF3ximo per\xEDodo abierto \u2014 per\xEDodo contable de destino cerrado; fecha original {{originalDate}})",
|
|
62808
63312
|
"accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
62809
63313
|
"accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63314
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63315
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
63316
|
+
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
62810
63317
|
"creditNotes.refundChargeName": "Reembolso por factura",
|
|
62811
63318
|
"credits.bundleOf": "{{productName}} - Paquete de {{creditCount}} cr\xE9ditos",
|
|
62812
63319
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
@@ -62820,9 +63327,9 @@ var es = {
|
|
|
62820
63327
|
"invoices.prorata.paymentForItemFullPeriod": "Pago por",
|
|
62821
63328
|
"invoices.prorata.refundForItem": "Reembolso prorrateado por",
|
|
62822
63329
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
62823
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado",
|
|
62824
63330
|
"subscriptions.closingChargeName": "Cargo por cierre de suscripci\xF3n",
|
|
62825
63331
|
"subscriptions.correction": "Ajuste del periodo anterior",
|
|
63332
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reinstalaci\xF3n del per\xEDodo cancelado",
|
|
62826
63333
|
"subscriptions.updates.addCoupon": "A\xF1adir cup\xF3n {{couponName}}",
|
|
62827
63334
|
"subscriptions.updates.addProduct": "A\xF1adir {{productName}}",
|
|
62828
63335
|
"subscriptions.updates.removeCoupon": "Eliminar cup\xF3n {{couponName}}",
|
|
@@ -62837,22 +63344,23 @@ var es = {
|
|
|
62837
63344
|
"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",
|
|
62838
63345
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta l\xEDnea ha sido facturada para el per\xEDodo prorrateado",
|
|
62839
63346
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importe de {{amount}} no facturado para el per\xEDodo prorrateado",
|
|
62840
|
-
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}"
|
|
63347
|
+
"subscriptions.updates.updatePrices": "Actualizar precios para {{productName}}",
|
|
63348
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo caducado"
|
|
62841
63349
|
};
|
|
62842
63350
|
|
|
62843
63351
|
// ../hyperline-i18n/build/locales/fr.js
|
|
62844
63352
|
var fr = {
|
|
63353
|
+
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
63354
|
+
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
63355
|
+
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62845
63356
|
"accounting.revrec.creditLineDescription": "Reconnaissance du chiffre d'affaires \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62846
63357
|
"accounting.revrec.debitLineDescription": "Diminution des produits constat\xE9s d'avance \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62847
63358
|
"accounting.revrec.discountCreditLineDescription": "Reconnaissance du contre-revenu (remise) \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62848
|
-
"accounting.revrec.closedPeriodFallbackNote": " (comptabilis\xE9 sur la prochaine p\xE9riode ouverte \u2014 p\xE9riode comptable cible cl\xF4tur\xE9e ; date d'origine {{originalDate}})",
|
|
62849
63359
|
"accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
62850
|
-
"accounting.invoicePosted.entryDescription": "\xC9criture de comptabilisation pour la facture {{invoiceId}}",
|
|
62851
|
-
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62852
|
-
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
62853
|
-
"accounting.creditNotePosted.entryDescription": "Avoir {{creditNoteId}} pour la facture {{invoiceId}}",
|
|
62854
|
-
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
62855
63360
|
"accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
|
|
63361
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
63362
|
+
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
63363
|
+
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
62856
63364
|
"creditNotes.refundChargeName": "Remboursement pour facture",
|
|
62857
63365
|
"credits.bundleOf": "{{productName}} - Pack de {{creditCount}} cr\xE9dits",
|
|
62858
63366
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9dits",
|
|
@@ -62866,9 +63374,9 @@ var fr = {
|
|
|
62866
63374
|
"invoices.prorata.paymentForItemFullPeriod": "Paiement pour",
|
|
62867
63375
|
"invoices.prorata.refundForItem": "Remboursement au prorata pour",
|
|
62868
63376
|
"invoices.prorata.refundForItemFullPeriod": "Remboursement pour",
|
|
62869
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9",
|
|
62870
63377
|
"subscriptions.closingChargeName": "Frais de cl\xF4ture pour abonnement",
|
|
62871
63378
|
"subscriptions.correction": "Ajustement p\xE9riode pr\xE9c\xE9dente",
|
|
63379
|
+
"subscriptions.reinstatementRechargeName": "Recharge de r\xE9tablissement de la p\xE9riode annul\xE9e",
|
|
62872
63380
|
"subscriptions.updates.addCoupon": "Ajout du coupon {{couponName}}",
|
|
62873
63381
|
"subscriptions.updates.addProduct": "Ajout {{productName}}",
|
|
62874
63382
|
"subscriptions.updates.removeCoupon": "Retrait du coupon {{couponName}}",
|
|
@@ -62883,22 +63391,23 @@ var fr = {
|
|
|
62883
63391
|
"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",
|
|
62884
63392
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Cette ligne a \xE9t\xE9 factur\xE9e pour la p\xE9riode proratis\xE9e",
|
|
62885
63393
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Montant de {{amount}} non factur\xE9 pour la p\xE9riode proratis\xE9e",
|
|
62886
|
-
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}"
|
|
63394
|
+
"subscriptions.updates.updatePrices": "Mise \xE0 jour des prix pour {{productName}}",
|
|
63395
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 solde expir\xE9"
|
|
62887
63396
|
};
|
|
62888
63397
|
|
|
62889
63398
|
// ../hyperline-i18n/build/locales/it.js
|
|
62890
63399
|
var it = {
|
|
62891
|
-
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
62892
|
-
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62893
|
-
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
62894
63400
|
"accounting.creditNotePosted.entryDescription": "Nota di credito {{creditNoteId}} per la fattura {{invoiceId}}",
|
|
62895
|
-
"accounting.
|
|
63401
|
+
"accounting.invoicePosted.entryDescription": "Registrazione contabile per la fattura {{invoiceId}}",
|
|
63402
|
+
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62896
63403
|
"accounting.revrec.creditLineDescription": "Riconoscere i ricavi \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62897
63404
|
"accounting.revrec.debitLineDescription": "Diminuzione dei ricavi differiti \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62898
63405
|
"accounting.revrec.discountCreditLineDescription": "Riconoscere il contra-ricavo (sconto) \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62899
|
-
"accounting.revrec.closedPeriodFallbackNote": " (registrato nel prossimo periodo aperto \u2014 periodo contabile di destinazione chiuso; data originale {{originalDate}})",
|
|
62900
63406
|
"accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
62901
63407
|
"accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
|
|
63408
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
|
|
63409
|
+
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
63410
|
+
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
62902
63411
|
"creditNotes.refundChargeName": "Rimborso per fattura",
|
|
62903
63412
|
"credits.bundleOf": "{{productName}} - Pacchetto di {{creditCount}} crediti",
|
|
62904
63413
|
"credits.unitsOf": "{{productName}} - {{creditCount}} crediti",
|
|
@@ -62912,9 +63421,9 @@ var it = {
|
|
|
62912
63421
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento per",
|
|
62913
63422
|
"invoices.prorata.refundForItem": "Rimborso proporzionale per",
|
|
62914
63423
|
"invoices.prorata.refundForItemFullPeriod": "Rimborso per",
|
|
62915
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto",
|
|
62916
63424
|
"subscriptions.closingChargeName": "Costo di chiusura per abbonamento",
|
|
62917
63425
|
"subscriptions.correction": "Correzione periodo precedente",
|
|
63426
|
+
"subscriptions.reinstatementRechargeName": "Ricarica di reintegrazione del periodo annullato",
|
|
62918
63427
|
"subscriptions.updates.addCoupon": "Aggiungi coupon {{couponName}}",
|
|
62919
63428
|
"subscriptions.updates.addProduct": "Aggiungi {{productName}}",
|
|
62920
63429
|
"subscriptions.updates.removeCoupon": "Rimuovi coupon {{couponName}}",
|
|
@@ -62929,14 +63438,29 @@ var it = {
|
|
|
62929
63438
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Importo di {{amount}} (con un minimo impegnato di {{committedCount}}) non fatturato per il periodo proporzionato",
|
|
62930
63439
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Questa voce \xE8 stata fatturata per il periodo proporzionato",
|
|
62931
63440
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Importo di {{amount}} non fatturato per il periodo proporzionato",
|
|
62932
|
-
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}"
|
|
63441
|
+
"subscriptions.updates.updatePrices": "Aggiorna prezzi per {{productName}}",
|
|
63442
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo scaduto"
|
|
62933
63443
|
};
|
|
62934
63444
|
|
|
62935
63445
|
// ../hyperline-i18n/build/locales/lt.js
|
|
62936
63446
|
var lt = {
|
|
63447
|
+
"accounting.creditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}} s\u0105skaitai fakt\u016Brai {{invoiceId}}",
|
|
63448
|
+
"accounting.invoicePosted.entryDescription": "I\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros {{invoiceId}} registravimo \u012Fra\u0161as",
|
|
63449
|
+
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
63450
|
+
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63451
|
+
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63452
|
+
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63453
|
+
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63454
|
+
"accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
|
|
63455
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
|
|
63456
|
+
"accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
|
|
63457
|
+
"accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
|
|
62937
63458
|
"creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
|
|
62938
63459
|
"credits.bundleOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173 paketas",
|
|
62939
63460
|
"credits.unitsOf": "{{productName}} \u2013 {{creditCount}} kredit\u0173",
|
|
63461
|
+
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
|
|
63462
|
+
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63463
|
+
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
62940
63464
|
"invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
|
|
62941
63465
|
"invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
|
|
62942
63466
|
"invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
|
|
@@ -62944,53 +63468,40 @@ var lt = {
|
|
|
62944
63468
|
"invoices.prorata.paymentForItemFullPeriod": "Mok\u0117jimas u\u017E",
|
|
62945
63469
|
"invoices.prorata.refundForItem": "Proporcingas gr\u0105\u017Einimas u\u017E",
|
|
62946
63470
|
"invoices.prorata.refundForItemFullPeriod": "Gr\u0105\u017Einimas u\u017E",
|
|
62947
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis",
|
|
62948
63471
|
"subscriptions.closingChargeName": "Prenumeratos u\u017Ebaigimo mokestis",
|
|
62949
63472
|
"subscriptions.correction": "Ankstesnio laikotarpio koregavimas",
|
|
63473
|
+
"subscriptions.reinstatementRechargeName": "Atnaujinimo \u012Fmokos u\u017E nutraukt\u0105 laikotarp\u012F",
|
|
62950
63474
|
"subscriptions.updates.addCoupon": "Prid\u0117ti kupon\u0105 {{couponName}}",
|
|
62951
63475
|
"subscriptions.updates.addProduct": "Prid\u0117ti {{productName}}",
|
|
62952
63476
|
"subscriptions.updates.removeCoupon": "Pa\u0161alinti kupon\u0105 {{couponName}}",
|
|
62953
63477
|
"subscriptions.updates.removeProduct": "Pa\u0161alinti {{productName}}",
|
|
62954
63478
|
"subscriptions.updates.unit": "vnt.",
|
|
62955
|
-
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
62956
63479
|
"subscriptions.updates.updateCount": "Atnaujinti {{productName}} kiek\u012F ({{previousCount}} \u2192 {{newCount}} {{unit}})",
|
|
62957
|
-
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
62958
|
-
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
62959
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
62960
|
-
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
62961
63480
|
"subscriptions.updates.updateCount.description.full.committed.invoiced": "Visam laikotarpiui pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
62962
63481
|
"subscriptions.updates.updateCount.description.full.committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
62963
63482
|
"subscriptions.updates.updateCount.description.full.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 visam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
62964
63483
|
"subscriptions.updates.updateCount.description.full.not_committed.not_invoiced": "Visam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
62965
|
-
"
|
|
62966
|
-
"
|
|
62967
|
-
"
|
|
62968
|
-
"
|
|
62969
|
-
"
|
|
62970
|
-
"
|
|
62971
|
-
"accounting.revrec.debitLineDescription": "Atid\u0117t\u0173j\u0173 pajam\u0173 suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
62972
|
-
"accounting.revrec.creditLineDescription": "Pajam\u0173 pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
62973
|
-
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
62974
|
-
"accounting.revrec.discountCreditLineDescription": "Pajamas ma\u017Einan\u010Dios sumos (nuolaidos) pripa\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
62975
|
-
"accounting.revrec.closedPeriodFallbackNote": " (u\u017Eregistruota kitame atvirame laikotarpyje, nes tikslinis apskaitos laikotarpis u\u017Edarytas; pradin\u0117 data {{originalDate}})",
|
|
62976
|
-
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
62977
|
-
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
62978
|
-
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s"
|
|
63484
|
+
"subscriptions.updates.updateCount.description.prorata.committed.invoiced": "Pritaikytas minimalus \u012Fsipareigotas {{committedCount}} kiekis.",
|
|
63485
|
+
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma (minimalus \u012Fsipareigotas kiekis \u2013 {{committedCount}})",
|
|
63486
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "U\u017E \u0161i\u0105 eilut\u0119 proporcingam laikotarpiui s\u0105skaita fakt\u016Bra i\u0161ra\u0161yta",
|
|
63487
|
+
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Proporcingam laikotarpiui nei\u0161ra\u0161yta {{amount}} suma",
|
|
63488
|
+
"subscriptions.updates.updatePrices": "Atnaujinti {{productName}} kainas",
|
|
63489
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 nebegaliojantis likutis"
|
|
62979
63490
|
};
|
|
62980
63491
|
|
|
62981
63492
|
// ../hyperline-i18n/build/locales/nl.js
|
|
62982
63493
|
var nl = {
|
|
62983
|
-
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
62984
|
-
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
62985
|
-
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
62986
63494
|
"accounting.creditNotePosted.entryDescription": "Creditnota {{creditNoteId}} voor factuur {{invoiceId}}",
|
|
62987
|
-
"accounting.
|
|
63495
|
+
"accounting.invoicePosted.entryDescription": "Boekingsregel voor factuur {{invoiceId}}",
|
|
63496
|
+
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
62988
63497
|
"accounting.revrec.creditLineDescription": "Omzet erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
62989
63498
|
"accounting.revrec.debitLineDescription": "Uitgestelde omzet verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
62990
63499
|
"accounting.revrec.discountCreditLineDescription": "Omzetvermindering (korting) erkennen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
62991
|
-
"accounting.revrec.closedPeriodFallbackNote": " (geboekt in de volgende open periode \u2014 doelboekingsperiode gesloten; oorspronkelijke datum {{originalDate}})",
|
|
62992
63500
|
"accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
62993
63501
|
"accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
|
|
63502
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
|
|
63503
|
+
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63504
|
+
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
62994
63505
|
"creditNotes.refundChargeName": "Terugbetaling voor factuur",
|
|
62995
63506
|
"credits.bundleOf": "{{productName}} - Bundel van {{creditCount}} credits",
|
|
62996
63507
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
@@ -63004,9 +63515,9 @@ var nl = {
|
|
|
63004
63515
|
"invoices.prorata.paymentForItemFullPeriod": "Betaling voor",
|
|
63005
63516
|
"invoices.prorata.refundForItem": "Gedeeltelijke terugbetaling voor",
|
|
63006
63517
|
"invoices.prorata.refundForItemFullPeriod": "Terugbetaling voor",
|
|
63007
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo",
|
|
63008
63518
|
"subscriptions.closingChargeName": "Afsluitkosten voor abonnement",
|
|
63009
63519
|
"subscriptions.correction": "Aanpassing vorige periode",
|
|
63520
|
+
"subscriptions.reinstatementRechargeName": "Herstelkosten van geannuleerde periode",
|
|
63010
63521
|
"subscriptions.updates.addCoupon": "Coupon toevoegen {{couponName}}",
|
|
63011
63522
|
"subscriptions.updates.addProduct": "{{productName}} toevoegen",
|
|
63012
63523
|
"subscriptions.updates.removeCoupon": "Coupon verwijderen {{couponName}}",
|
|
@@ -63021,22 +63532,23 @@ var nl = {
|
|
|
63021
63532
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Bedrag van {{amount}} (met een minimaal toegezegd aantal van {{committedCount}}) niet gefactureerd voor de geproportioneerde periode",
|
|
63022
63533
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Deze regel is gefactureerd voor de geproportioneerde periode",
|
|
63023
63534
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Bedrag van {{amount}} niet gefactureerd voor de geproportioneerde periode",
|
|
63024
|
-
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}"
|
|
63535
|
+
"subscriptions.updates.updatePrices": "Prijzen bijwerken voor {{productName}}",
|
|
63536
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 verlopen saldo"
|
|
63025
63537
|
};
|
|
63026
63538
|
|
|
63027
63539
|
// ../hyperline-i18n/build/locales/pl.js
|
|
63028
63540
|
var pl = {
|
|
63029
|
-
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63030
|
-
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63031
|
-
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63032
63541
|
"accounting.creditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}} dla faktury {{invoiceId}}",
|
|
63033
|
-
"accounting.
|
|
63542
|
+
"accounting.invoicePosted.entryDescription": "Zapis ksi\u0119gowy dla faktury {{invoiceId}}",
|
|
63543
|
+
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
63034
63544
|
"accounting.revrec.creditLineDescription": "Rozpoznanie przychodu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63035
63545
|
"accounting.revrec.debitLineDescription": "Zmniejszenie przychod\xF3w przysz\u0142ych okres\xF3w \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63036
63546
|
"accounting.revrec.discountCreditLineDescription": "Rozpoznanie kontra-przychodu (rabat) \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63037
|
-
"accounting.revrec.closedPeriodFallbackNote": " (zaksi\u0119gowano w nast\u0119pnym otwartym okresie \u2014 docelowy okres ksi\u0119gowy zamkni\u0119ty; pierwotna data {{originalDate}})",
|
|
63038
63547
|
"accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63039
63548
|
"accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
|
|
63549
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
|
|
63550
|
+
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63551
|
+
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63040
63552
|
"creditNotes.refundChargeName": "Zwrot za faktur\u0119",
|
|
63041
63553
|
"credits.bundleOf": "{{productName}} - Pakiet {{creditCount}} kredyt\xF3w",
|
|
63042
63554
|
"credits.unitsOf": "{{productName}} - {{creditCount}} kredyt\xF3w",
|
|
@@ -63050,9 +63562,9 @@ var pl = {
|
|
|
63050
63562
|
"invoices.prorata.paymentForItemFullPeriod": "P\u0142atno\u015B\u0107 za",
|
|
63051
63563
|
"invoices.prorata.refundForItem": "Zwrot proporcjonalny za",
|
|
63052
63564
|
"invoices.prorata.refundForItemFullPeriod": "Zwrot za",
|
|
63053
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo",
|
|
63054
63565
|
"subscriptions.closingChargeName": "Op\u0142ata za zamkni\u0119cie subskrypcji",
|
|
63055
63566
|
"subscriptions.correction": "Korekta poprzedniego okresu",
|
|
63567
|
+
"subscriptions.reinstatementRechargeName": "Op\u0142ata za przywr\xF3cenie anulowanego okresu",
|
|
63056
63568
|
"subscriptions.updates.addCoupon": "Dodaj kupon {{couponName}}",
|
|
63057
63569
|
"subscriptions.updates.addProduct": "Dodaj {{productName}}",
|
|
63058
63570
|
"subscriptions.updates.removeCoupon": "Usu\u0144 kupon {{couponName}}",
|
|
@@ -63067,22 +63579,23 @@ var pl = {
|
|
|
63067
63579
|
"subscriptions.updates.updateCount.description.prorata.committed.not_invoiced": "Kwota {{amount}} (z minimaln\u0105 zobowi\u0105zan\u0105 ilo\u015Bci\u0105 {{committedCount}}) niefakturowana za okres proporcjonalny",
|
|
63068
63580
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Ta pozycja zosta\u0142a zafakturowana za okres proporcjonalny",
|
|
63069
63581
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Kwota {{amount}} niefakturowana za okres proporcjonalny",
|
|
63070
|
-
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}"
|
|
63582
|
+
"subscriptions.updates.updatePrices": "Aktualizuj ceny dla {{productName}}",
|
|
63583
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 wygas\u0142e saldo"
|
|
63071
63584
|
};
|
|
63072
63585
|
|
|
63073
63586
|
// ../hyperline-i18n/build/locales/pt.js
|
|
63074
63587
|
var pt = {
|
|
63075
|
-
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63076
|
-
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63077
|
-
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63078
63588
|
"accounting.creditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}} para a fatura {{invoiceId}}",
|
|
63079
|
-
"accounting.
|
|
63589
|
+
"accounting.invoicePosted.entryDescription": "Lan\xE7amento cont\xE1bil para a fatura {{invoiceId}}",
|
|
63590
|
+
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
63080
63591
|
"accounting.revrec.creditLineDescription": "Reconhecer receita \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63081
63592
|
"accounting.revrec.debitLineDescription": "Diminui\xE7\xE3o da receita diferida \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63082
63593
|
"accounting.revrec.discountCreditLineDescription": "Reconhecer contra-receita (desconto) \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63083
|
-
"accounting.revrec.closedPeriodFallbackNote": " (lan\xE7ado no pr\xF3ximo per\xEDodo aberto \u2014 per\xEDodo cont\xE1bil de destino fechado; data original {{originalDate}})",
|
|
63084
63594
|
"accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63085
63595
|
"accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63596
|
+
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63597
|
+
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63598
|
+
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63086
63599
|
"creditNotes.refundChargeName": "Reembolso pela fatura",
|
|
63087
63600
|
"credits.bundleOf": "{{productName}} - Pacote de {{creditCount}} cr\xE9ditos",
|
|
63088
63601
|
"credits.unitsOf": "{{productName}} - {{creditCount}} cr\xE9ditos",
|
|
@@ -63096,9 +63609,9 @@ var pt = {
|
|
|
63096
63609
|
"invoices.prorata.paymentForItemFullPeriod": "Pagamento por",
|
|
63097
63610
|
"invoices.prorata.refundForItem": "Reembolso proporcional por",
|
|
63098
63611
|
"invoices.prorata.refundForItemFullPeriod": "Reembolso por",
|
|
63099
|
-
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado",
|
|
63100
63612
|
"subscriptions.closingChargeName": "Taxa de encerramento da assinatura",
|
|
63101
63613
|
"subscriptions.correction": "Ajuste do per\xEDodo anterior",
|
|
63614
|
+
"subscriptions.reinstatementRechargeName": "Recarga de reintegra\xE7\xE3o do per\xEDodo cancelado",
|
|
63102
63615
|
"subscriptions.updates.addCoupon": "Adicionar cupom {{couponName}}",
|
|
63103
63616
|
"subscriptions.updates.addProduct": "Adicionar {{productName}}",
|
|
63104
63617
|
"subscriptions.updates.removeCoupon": "Remover cupom {{couponName}}",
|
|
@@ -63113,7 +63626,8 @@ var pt = {
|
|
|
63113
63626
|
"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",
|
|
63114
63627
|
"subscriptions.updates.updateCount.description.prorata.not_committed.invoiced": "Esta linha foi faturada para o per\xEDodo proporcional",
|
|
63115
63628
|
"subscriptions.updates.updateCount.description.prorata.not_committed.not_invoiced": "Valor de {{amount}} n\xE3o faturado para o per\xEDodo proporcional",
|
|
63116
|
-
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}"
|
|
63629
|
+
"subscriptions.updates.updatePrices": "Atualizar pre\xE7os para {{productName}}",
|
|
63630
|
+
"wallets.expiredBalanceInvoiceLineName": "{{walletName}} \u2013 saldo expirado"
|
|
63117
63631
|
};
|
|
63118
63632
|
|
|
63119
63633
|
// ../hyperline-i18n/build/language.js
|
|
@@ -65807,6 +66321,8 @@ var usStates = [
|
|
|
65807
66321
|
|
|
65808
66322
|
// ../hyperline-lib/build/utils/dates.js
|
|
65809
66323
|
var import_shared2 = __toESM(require_shared(), 1);
|
|
66324
|
+
var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
|
|
66325
|
+
var DST_SHIFT_MS = 60 * 60 * 1e3;
|
|
65810
66326
|
|
|
65811
66327
|
// ../hyperline-lib/build/utils/document.js
|
|
65812
66328
|
var import_shared3 = __toESM(require_shared(), 1);
|
|
@@ -65818,6 +66334,11 @@ import * as https from "node:https";
|
|
|
65818
66334
|
import { createHash as createHash2 } from "node:crypto";
|
|
65819
66335
|
import { deepEqual } from "fast-equals";
|
|
65820
66336
|
|
|
66337
|
+
// ../hyperline-lib/build/utils/realignDatesToTimezone.js
|
|
66338
|
+
var import_shared4 = __toESM(require_shared(), 1);
|
|
66339
|
+
var MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1e3;
|
|
66340
|
+
var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
|
|
66341
|
+
|
|
65821
66342
|
// ../hyperline-lib/build/utils/api/filterBuilder.js
|
|
65822
66343
|
var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
|
|
65823
66344
|
var booleanAuthorizedOperators = [
|
|
@@ -65884,7 +66405,151 @@ var isAxiosError = axios.isAxiosError;
|
|
|
65884
66405
|
|
|
65885
66406
|
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
65886
66407
|
import axios2 from "axios";
|
|
65887
|
-
import axiosRetry, { isNetworkOrIdempotentRequestError } from "axios-retry";
|
|
66408
|
+
import axiosRetry, { isNetworkOrIdempotentRequestError, retryAfter } from "axios-retry";
|
|
66409
|
+
|
|
66410
|
+
// ../hyperline-lib/build/httpClient/logRedaction.js
|
|
66411
|
+
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
66412
|
+
"accesstoken",
|
|
66413
|
+
"apikey",
|
|
66414
|
+
"apitoken",
|
|
66415
|
+
"assertion",
|
|
66416
|
+
"authtoken",
|
|
66417
|
+
"clientassertion",
|
|
66418
|
+
"codeverifier",
|
|
66419
|
+
"credentials",
|
|
66420
|
+
"idtoken",
|
|
66421
|
+
"privatekey",
|
|
66422
|
+
"refreshtoken",
|
|
66423
|
+
"sessiontoken",
|
|
66424
|
+
"token"
|
|
66425
|
+
]);
|
|
66426
|
+
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password)$/;
|
|
66427
|
+
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|password|assertion|verifier|credentials/i;
|
|
66428
|
+
var REDACTED_VALUE = "<redacted>";
|
|
66429
|
+
var MAX_REDACTION_DEPTH = 10;
|
|
66430
|
+
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
66431
|
+
var MAX_VISITED_NODES = 1e3;
|
|
66432
|
+
var MAX_CONTAINER_ENTRIES = MAX_VISITED_NODES;
|
|
66433
|
+
function redactLogBody({ body }) {
|
|
66434
|
+
return redactValue({
|
|
66435
|
+
value: body,
|
|
66436
|
+
depth: MAX_REDACTION_DEPTH,
|
|
66437
|
+
budget: { remainingNodes: MAX_VISITED_NODES }
|
|
66438
|
+
});
|
|
66439
|
+
}
|
|
66440
|
+
function redactLogUrl({ url: url2 }) {
|
|
66441
|
+
const queryIndex = url2.indexOf("?");
|
|
66442
|
+
if (queryIndex === -1 || url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
66443
|
+
return url2;
|
|
66444
|
+
}
|
|
66445
|
+
const redactedQuery = redactFormEncoded({ text: url2.slice(queryIndex + 1) });
|
|
66446
|
+
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
66447
|
+
}
|
|
66448
|
+
function redactValue({ value, depth, budget }) {
|
|
66449
|
+
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
66450
|
+
return value;
|
|
66451
|
+
}
|
|
66452
|
+
budget.remainingNodes -= 1;
|
|
66453
|
+
if (typeof value === "string") {
|
|
66454
|
+
return redactString({ text: value, budget });
|
|
66455
|
+
}
|
|
66456
|
+
if (value instanceof URLSearchParams) {
|
|
66457
|
+
return redactFormEncoded({ text: value.toString() }) ?? value;
|
|
66458
|
+
}
|
|
66459
|
+
if (Array.isArray(value)) {
|
|
66460
|
+
return redactArray({ items: value, depth, budget });
|
|
66461
|
+
}
|
|
66462
|
+
if (isPlainObject2(value)) {
|
|
66463
|
+
return redactObject({ record: value, depth, budget });
|
|
66464
|
+
}
|
|
66465
|
+
return value;
|
|
66466
|
+
}
|
|
66467
|
+
function redactArray({ items, depth, budget }) {
|
|
66468
|
+
if (items.length > MAX_CONTAINER_ENTRIES) {
|
|
66469
|
+
return items;
|
|
66470
|
+
}
|
|
66471
|
+
let redactedItems;
|
|
66472
|
+
for (const [index, item] of items.entries()) {
|
|
66473
|
+
if (budget.remainingNodes <= 0) {
|
|
66474
|
+
break;
|
|
66475
|
+
}
|
|
66476
|
+
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
66477
|
+
if (redactedItem !== item) {
|
|
66478
|
+
redactedItems ??= [...items];
|
|
66479
|
+
redactedItems[index] = redactedItem;
|
|
66480
|
+
}
|
|
66481
|
+
}
|
|
66482
|
+
return redactedItems ?? items;
|
|
66483
|
+
}
|
|
66484
|
+
function redactObject({ record: record2, depth, budget }) {
|
|
66485
|
+
const redactedEntries = /* @__PURE__ */ new Map();
|
|
66486
|
+
let entryCount = 0;
|
|
66487
|
+
for (const key in record2) {
|
|
66488
|
+
if (!Object.hasOwn(record2, key)) {
|
|
66489
|
+
continue;
|
|
66490
|
+
}
|
|
66491
|
+
entryCount += 1;
|
|
66492
|
+
if (entryCount > MAX_CONTAINER_ENTRIES) {
|
|
66493
|
+
return record2;
|
|
66494
|
+
}
|
|
66495
|
+
if (budget.remainingNodes <= 0) {
|
|
66496
|
+
break;
|
|
66497
|
+
}
|
|
66498
|
+
const nestedValue = record2[key];
|
|
66499
|
+
const redactedNestedValue = isRedactedKey({ key }) && nestedValue != null ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
66500
|
+
if (redactedNestedValue !== nestedValue) {
|
|
66501
|
+
redactedEntries.set(key, redactedNestedValue);
|
|
66502
|
+
}
|
|
66503
|
+
}
|
|
66504
|
+
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
66505
|
+
}
|
|
66506
|
+
function redactString({ text, budget }) {
|
|
66507
|
+
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
66508
|
+
return text;
|
|
66509
|
+
}
|
|
66510
|
+
const trimmedText = text.trim();
|
|
66511
|
+
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
66512
|
+
try {
|
|
66513
|
+
const parsedValue = JSON.parse(trimmedText);
|
|
66514
|
+
const redactedValue = redactValue({
|
|
66515
|
+
value: parsedValue,
|
|
66516
|
+
depth: MAX_REDACTION_DEPTH,
|
|
66517
|
+
budget
|
|
66518
|
+
});
|
|
66519
|
+
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
66520
|
+
} catch {
|
|
66521
|
+
return text;
|
|
66522
|
+
}
|
|
66523
|
+
}
|
|
66524
|
+
return redactFormEncoded({ text }) ?? text;
|
|
66525
|
+
}
|
|
66526
|
+
function redactFormEncoded({ text }) {
|
|
66527
|
+
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
66528
|
+
return void 0;
|
|
66529
|
+
}
|
|
66530
|
+
const params = new URLSearchParams(text);
|
|
66531
|
+
let hasRedactedParam = false;
|
|
66532
|
+
for (const key of new Set(params.keys())) {
|
|
66533
|
+
if (isRedactedKey({ key })) {
|
|
66534
|
+
params.set(key, REDACTED_VALUE);
|
|
66535
|
+
hasRedactedParam = true;
|
|
66536
|
+
}
|
|
66537
|
+
}
|
|
66538
|
+
return hasRedactedParam ? params.toString() : void 0;
|
|
66539
|
+
}
|
|
66540
|
+
function isRedactedKey({ key }) {
|
|
66541
|
+
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
66542
|
+
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
66543
|
+
}
|
|
66544
|
+
function isPlainObject2(value) {
|
|
66545
|
+
if (typeof value !== "object" || value === null) {
|
|
66546
|
+
return false;
|
|
66547
|
+
}
|
|
66548
|
+
const prototype = Object.getPrototypeOf(value);
|
|
66549
|
+
return prototype === Object.prototype || prototype === null;
|
|
66550
|
+
}
|
|
66551
|
+
|
|
66552
|
+
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
65888
66553
|
import { AxiosError } from "axios";
|
|
65889
66554
|
var recommendedRetryConfig = {
|
|
65890
66555
|
retries: 3,
|
|
@@ -65952,13 +66617,14 @@ function isTooManyRequestsError(error48) {
|
|
|
65952
66617
|
return error48.response?.status === 429;
|
|
65953
66618
|
}
|
|
65954
66619
|
var toLogRequest = (config4) => {
|
|
66620
|
+
const url2 = redactLogUrl({ url: config4.url ?? "" });
|
|
65955
66621
|
return {
|
|
65956
66622
|
method: config4.method ?? "",
|
|
65957
|
-
url:
|
|
65958
|
-
path:
|
|
66623
|
+
url: url2,
|
|
66624
|
+
path: url2,
|
|
65959
66625
|
hostname: config4.baseURL ?? "",
|
|
65960
|
-
originalUrl: `${config4.baseURL ?? ""}${
|
|
65961
|
-
body: config4.data,
|
|
66626
|
+
originalUrl: `${config4.baseURL ?? ""}${url2}`,
|
|
66627
|
+
body: redactLogBody({ body: config4.data }),
|
|
65962
66628
|
headers: {}
|
|
65963
66629
|
};
|
|
65964
66630
|
};
|