@hyperline/cli 0.1.0-build.1.bef67b8 → 0.1.0-build.1.bf5f2bb
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 +506 -319
- package/package.json +1 -1
|
@@ -37739,10 +37739,9 @@ Examples:
|
|
|
37739
37739
|
baseUrlOverride: resolveIngestBaseUrl(ctx.baseUrl)
|
|
37740
37740
|
});
|
|
37741
37741
|
});
|
|
37742
|
-
resource.command("send").description(`Send a single billable event.`).requiredOption("--customer-id <value>", `Customer ID or external ID`).requiredOption("--event-type <value>", `Event type`).requiredOption("--timestamp <value>", `ISO8601 timestamp`).requiredOption("--record <value>", `Event record as JSON (must include "id" key)`).
|
|
37742
|
+
resource.command("send").description(`Send a single billable event.`).requiredOption("--customer-id <value>", `Customer ID or external ID`).requiredOption("--event-type <value>", `Event type`).requiredOption("--timestamp <value>", `ISO8601 timestamp`).requiredOption("--record <value>", `Event record as JSON (must include "id" key)`).addHelpText("after", `
|
|
37743
37743
|
Examples:
|
|
37744
|
-
hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1","duration":32}'
|
|
37745
|
-
hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1"}' --with-price-calculation`).action(async (opts) => {
|
|
37744
|
+
hyperline events send --customer-id cus_xyz --event-type api_call --timestamp 2024-01-15T10:00:00Z --record '{"id":"evt_1","duration":32}'`).action(async (opts) => {
|
|
37746
37745
|
const ctx = resource.parent?.opts()._ctx;
|
|
37747
37746
|
if (!ctx) {
|
|
37748
37747
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -37762,14 +37761,10 @@ Examples:
|
|
|
37762
37761
|
timestamp: opts.timestamp,
|
|
37763
37762
|
record: record2
|
|
37764
37763
|
};
|
|
37765
|
-
const args = {};
|
|
37766
|
-
if (opts.withPriceCalculation !== void 0)
|
|
37767
|
-
args.with_price_calculation = true;
|
|
37768
37764
|
await ctx.execute({
|
|
37769
37765
|
method: "POST",
|
|
37770
37766
|
path: "/v1/events",
|
|
37771
|
-
args,
|
|
37772
|
-
queryParamKeys: ["with_price_calculation"],
|
|
37767
|
+
args: {},
|
|
37773
37768
|
body,
|
|
37774
37769
|
baseUrlOverride: resolveIngestBaseUrl(ctx.baseUrl)
|
|
37775
37770
|
});
|
|
@@ -38285,7 +38280,7 @@ Examples:
|
|
|
38285
38280
|
queryParamKeys: []
|
|
38286
38281
|
});
|
|
38287
38282
|
});
|
|
38288
|
-
resource.command("preview-manual-journal-entry-recognition").description(`Preview revenue-recognition slices for a manual journal entry without writing data.`).requiredOption("--ledger-id <value>", `Ledger identifier.`).requiredOption("--amount <
|
|
38283
|
+
resource.command("preview-manual-journal-entry-recognition").description(`Preview revenue-recognition slices for a manual journal entry without writing data.`).requiredOption("--ledger-id <value>", `Ledger identifier.`).requiredOption("--amount <number>", `Deferred amount in minor ledger-currency units.`).requiredOption("--method <value>", `Recognition method to preview.`).option("--recognition-date <value>", `Recognition date for point-in-time recognition.`).option("--window <json>", `Service window for over-time recognition.`).option("--granularity <value>", `Slice granularity for over-time recognition.`).addHelpText("after", `
|
|
38289
38284
|
Examples:
|
|
38290
38285
|
hyperline accounting-journal-entries preview-manual-journal-entry-recognition --ledger-id <ledger_id> --amount <amount> --method <method>
|
|
38291
38286
|
hyperline accounting-journal-entries preview-manual-journal-entry-recognition --ledger-id <ledger_id> --amount <amount> --method <method> --recognition-date <recognition_date> --window <window>
|
|
@@ -38298,14 +38293,14 @@ Examples:
|
|
|
38298
38293
|
const args = {};
|
|
38299
38294
|
if (opts.ledgerId !== void 0)
|
|
38300
38295
|
args.ledger_id = opts.ledgerId;
|
|
38301
|
-
if (opts.amount !== void 0)
|
|
38302
|
-
args.amount = opts.amount;
|
|
38303
38296
|
if (opts.method !== void 0)
|
|
38304
38297
|
args.method = opts.method;
|
|
38305
38298
|
if (opts.recognitionDate !== void 0)
|
|
38306
38299
|
args.recognition_date = opts.recognitionDate;
|
|
38307
38300
|
if (opts.granularity !== void 0)
|
|
38308
38301
|
args.granularity = opts.granularity;
|
|
38302
|
+
if (opts.amount !== void 0)
|
|
38303
|
+
args.amount = Number(opts.amount);
|
|
38309
38304
|
if (opts.window !== void 0)
|
|
38310
38305
|
args.window = JSON.parse(opts.window);
|
|
38311
38306
|
await ctx.execute({
|
|
@@ -38583,7 +38578,7 @@ Examples:
|
|
|
38583
38578
|
// build/commands/generated/accounting-revenue-recognition.js
|
|
38584
38579
|
function registerAccounting_Revenue_RecognitionCommands(parent) {
|
|
38585
38580
|
const resource = parent.command("accounting-revenue-recognition").description("Manage accounting > revenue recognition");
|
|
38586
|
-
resource.command("get-rev-rec-waterfall").description(`Aggregate revenue-recognition schedules into a booked-by-recognition month matrix.`).option("--ledger-id <value>", `Ledger identifier.`).option("--year <number>", `Booked calendar year.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search
|
|
38581
|
+
resource.command("get-rev-rec-waterfall").description(`Aggregate revenue-recognition schedules into a booked-by-recognition month matrix.`).option("--ledger-id <value>", `Ledger identifier.`).option("--year <number>", `Booked calendar year.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search by invoice ID or number, customer name or ID, or subscription ID.`).addHelpText("after", `
|
|
38587
38582
|
Examples:
|
|
38588
38583
|
hyperline accounting-revenue-recognition get-rev-rec-waterfall
|
|
38589
38584
|
hyperline accounting-revenue-recognition get-rev-rec-waterfall --ledger-id <ledger_id> --year <year>`).action(async (opts) => {
|
|
@@ -38616,7 +38611,7 @@ Examples:
|
|
|
38616
38611
|
]
|
|
38617
38612
|
});
|
|
38618
38613
|
});
|
|
38619
|
-
resource.command("get-rev-rec-waterfall-cell").description(`List the schedules and slices contributing to a waterfall cell.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--ledger-id <value>", `Ledger identifier.`).option("--booked-month <value>", `Booked month formatted YYYY-MM; required if year is absent.`).option("--year <number>", `Booked year; required if booked_month is absent.`).option("--recognition-month <value>", `Recognition month formatted YYYY-MM.`).option("--cell-type <value>", `Waterfall cell category.`).option("--status <value>", `Recognition status filter.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search
|
|
38614
|
+
resource.command("get-rev-rec-waterfall-cell").description(`List the schedules and slices contributing to a waterfall cell.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--ledger-id <value>", `Ledger identifier.`).option("--booked-month <value>", `Booked month formatted YYYY-MM; required if year is absent.`).option("--year <number>", `Booked year; required if booked_month is absent.`).option("--recognition-month <value>", `Recognition month formatted YYYY-MM.`).option("--cell-type <value>", `Waterfall cell category.`).option("--status <value>", `Recognition status filter.`).option("--customer-id.in <value>", `Comma-separated customer identifiers.`).option("--product-id.in <value>", `Comma-separated product identifiers.`).option("--search <value>", `Search by invoice ID or number, customer name or ID, or subscription ID.`).addHelpText("after", `
|
|
38620
38615
|
Examples:
|
|
38621
38616
|
hyperline accounting-revenue-recognition get-rev-rec-waterfall-cell
|
|
38622
38617
|
hyperline accounting-revenue-recognition get-rev-rec-waterfall-cell --take <take> --ledger-id <ledger_id>`).action(async (opts) => {
|
|
@@ -38794,7 +38789,7 @@ Examples:
|
|
|
38794
38789
|
queryParamKeys: []
|
|
38795
38790
|
});
|
|
38796
38791
|
});
|
|
38797
|
-
resource.command("reshape-rev-rec-schedule").description(`Recognize an amount now and optionally spread the remainder over a new window.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <
|
|
38792
|
+
resource.command("reshape-rev-rec-schedule").description(`Recognize an amount now and optionally spread the remainder over a new window.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <number>", `Amount to recognize immediately in ledger currency. Expressed in currency's smallest unit.`).option("--window <json>", `Window over which to spread the remaining amount.`).requiredOption("--reason-code <value>", `Stable reason code for the adjustment.`).option("--reason-detail <value>", `Required explanation when reason_code is \`other\`.`).addHelpText("after", `
|
|
38798
38793
|
Examples:
|
|
38799
38794
|
hyperline accounting-revenue-recognition reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --reason-code <reason_code>
|
|
38800
38795
|
hyperline accounting-revenue-recognition reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --reason-code <reason_code> --window <window> --reason-detail <reason_detail>
|
|
@@ -38807,12 +38802,12 @@ Examples:
|
|
|
38807
38802
|
const args = {};
|
|
38808
38803
|
if (opts.scheduleId !== void 0)
|
|
38809
38804
|
args.schedule_id = opts.scheduleId;
|
|
38810
|
-
if (opts.recognizeNowAmount !== void 0)
|
|
38811
|
-
args.recognize_now_amount = opts.recognizeNowAmount;
|
|
38812
38805
|
if (opts.reasonCode !== void 0)
|
|
38813
38806
|
args.reason_code = opts.reasonCode;
|
|
38814
38807
|
if (opts.reasonDetail !== void 0)
|
|
38815
38808
|
args.reason_detail = opts.reasonDetail;
|
|
38809
|
+
if (opts.recognizeNowAmount !== void 0)
|
|
38810
|
+
args.recognize_now_amount = Number(opts.recognizeNowAmount);
|
|
38816
38811
|
if (opts.window !== void 0)
|
|
38817
38812
|
args.window = JSON.parse(opts.window);
|
|
38818
38813
|
await ctx.execute({
|
|
@@ -38822,7 +38817,7 @@ Examples:
|
|
|
38822
38817
|
queryParamKeys: []
|
|
38823
38818
|
});
|
|
38824
38819
|
});
|
|
38825
|
-
resource.command("preview-reshape-rev-rec-schedule").description(`Preview the exact reshape plan without writing data.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <
|
|
38820
|
+
resource.command("preview-reshape-rev-rec-schedule").description(`Preview the exact reshape plan without writing data.`).requiredOption("--schedule-id <value>", `schedule_id parameter`).requiredOption("--recognize-now-amount <number>", `Amount to recognize immediately in ledger currency. Expressed in currency's smallest unit.`).option("--window <json>", `Window over which to spread the remaining amount.`).addHelpText("after", `
|
|
38826
38821
|
Examples:
|
|
38827
38822
|
hyperline accounting-revenue-recognition preview-reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount>
|
|
38828
38823
|
hyperline accounting-revenue-recognition preview-reshape-rev-rec-schedule --schedule-id <schedule_id> --recognize-now-amount <recognize_now_amount> --window <window>
|
|
@@ -38836,7 +38831,7 @@ Examples:
|
|
|
38836
38831
|
if (opts.scheduleId !== void 0)
|
|
38837
38832
|
args.schedule_id = opts.scheduleId;
|
|
38838
38833
|
if (opts.recognizeNowAmount !== void 0)
|
|
38839
|
-
args.recognize_now_amount = opts.recognizeNowAmount;
|
|
38834
|
+
args.recognize_now_amount = Number(opts.recognizeNowAmount);
|
|
38840
38835
|
if (opts.window !== void 0)
|
|
38841
38836
|
args.window = JSON.parse(opts.window);
|
|
38842
38837
|
await ctx.execute({
|
|
@@ -39603,34 +39598,27 @@ Examples:
|
|
|
39603
39598
|
queryParamKeys: []
|
|
39604
39599
|
});
|
|
39605
39600
|
});
|
|
39606
|
-
resource.command("get-agent-plan").description(`Get
|
|
39601
|
+
resource.command("get-agent-default-plan").description(`Get the workspace's default AI agent billing plan marker (plan id and auto_apply flag). 404 when none is set.`).addHelpText("after", `
|
|
39607
39602
|
Examples:
|
|
39608
|
-
hyperline ai-billing get-agent-plan
|
|
39603
|
+
hyperline ai-billing get-agent-default-plan`).action(async (_opts) => {
|
|
39609
39604
|
const ctx = resource.parent?.opts()._ctx;
|
|
39610
39605
|
if (!ctx) {
|
|
39611
39606
|
process.stderr.write("Error: Not authenticated\n");
|
|
39612
39607
|
process.exit(1);
|
|
39613
39608
|
}
|
|
39614
39609
|
const args = {};
|
|
39615
|
-
if (opts.planId !== void 0)
|
|
39616
|
-
args.plan_id = opts.planId;
|
|
39617
39610
|
await ctx.execute({
|
|
39618
39611
|
method: "GET",
|
|
39619
|
-
path: "/v1/ai/billing/plans/
|
|
39612
|
+
path: "/v1/ai/billing/plans/default",
|
|
39620
39613
|
args,
|
|
39621
39614
|
queryParamKeys: []
|
|
39622
39615
|
});
|
|
39623
39616
|
});
|
|
39624
|
-
resource.command("
|
|
39625
|
-
|
|
39626
|
-
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39627
|
-
- 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.
|
|
39628
|
-
|
|
39629
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39617
|
+
resource.command("set-agent-default-plan").description(`Mark one plan as the workspace's default AI agent billing plan (body: plan_id, optional auto_apply). Replaces the previous marker; 404 when the plan is not this workspace's.`).requiredOption("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).option("--auto-apply", `Whether eligible newly ingested customers receive the default plan automatically.`).addHelpText("after", `
|
|
39630
39618
|
Examples:
|
|
39631
|
-
hyperline ai-billing
|
|
39632
|
-
hyperline ai-billing
|
|
39633
|
-
hyperline ai-billing
|
|
39619
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id>
|
|
39620
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --auto-apply
|
|
39621
|
+
hyperline ai-billing set-agent-default-plan --plan-id <plan_id> --output json`).action(async (opts) => {
|
|
39634
39622
|
const ctx = resource.parent?.opts()._ctx;
|
|
39635
39623
|
if (!ctx) {
|
|
39636
39624
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -39639,47 +39627,25 @@ Examples:
|
|
|
39639
39627
|
const args = {};
|
|
39640
39628
|
if (opts.planId !== void 0)
|
|
39641
39629
|
args.plan_id = opts.planId;
|
|
39642
|
-
if (opts.
|
|
39643
|
-
args.
|
|
39644
|
-
if (opts.rateCardId !== void 0)
|
|
39645
|
-
args.rate_card_id = opts.rateCardId;
|
|
39646
|
-
if (opts.overageMode !== void 0)
|
|
39647
|
-
args.overage_mode = opts.overageMode;
|
|
39648
|
-
if (opts.markupPercent !== void 0)
|
|
39649
|
-
args.markup_percent = opts.markupPercent;
|
|
39650
|
-
if (opts.overageMarkupPercent !== void 0)
|
|
39651
|
-
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39652
|
-
if (opts.overageRateCardId !== void 0)
|
|
39653
|
-
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39654
|
-
if (opts.perSeatCredits !== void 0)
|
|
39655
|
-
args.per_seat_credits = opts.perSeatCredits;
|
|
39656
|
-
if (opts.settlementSchedule !== void 0)
|
|
39657
|
-
args.settlement_schedule = opts.settlementSchedule;
|
|
39658
|
-
if (opts.settlementIntervalMinutes !== void 0)
|
|
39659
|
-
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39660
|
-
if (opts.grantRolloverEnabled !== void 0)
|
|
39661
|
-
args.grant_rollover_enabled = true;
|
|
39662
|
-
if (opts.windows !== void 0)
|
|
39663
|
-
args.windows = JSON.parse(opts.windows);
|
|
39630
|
+
if (opts.autoApply !== void 0)
|
|
39631
|
+
args.auto_apply = true;
|
|
39664
39632
|
await ctx.execute({
|
|
39665
39633
|
method: "PUT",
|
|
39666
|
-
path: "/v1/ai/billing/plans/
|
|
39634
|
+
path: "/v1/ai/billing/plans/default",
|
|
39667
39635
|
args,
|
|
39668
39636
|
queryParamKeys: []
|
|
39669
39637
|
});
|
|
39670
39638
|
});
|
|
39671
|
-
resource.command("
|
|
39639
|
+
resource.command("clear-agent-default-plan").description(`Clear the workspace's default AI agent billing plan marker. The plan itself is untouched. 404 when none is set.`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39672
39640
|
Examples:
|
|
39673
|
-
hyperline ai-billing
|
|
39674
|
-
hyperline ai-billing
|
|
39641
|
+
hyperline ai-billing clear-agent-default-plan
|
|
39642
|
+
hyperline ai-billing clear-agent-default-plan --output json`).action(async (opts) => {
|
|
39675
39643
|
const ctx = resource.parent?.opts()._ctx;
|
|
39676
39644
|
if (!ctx) {
|
|
39677
39645
|
process.stderr.write("Error: Not authenticated\n");
|
|
39678
39646
|
process.exit(1);
|
|
39679
39647
|
}
|
|
39680
39648
|
const args = {};
|
|
39681
|
-
if (opts.planId !== void 0)
|
|
39682
|
-
args.plan_id = opts.planId;
|
|
39683
39649
|
if (!opts.yes) {
|
|
39684
39650
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39685
39651
|
if (!confirmed) {
|
|
@@ -39689,59 +39655,88 @@ Examples:
|
|
|
39689
39655
|
}
|
|
39690
39656
|
await ctx.execute({
|
|
39691
39657
|
method: "DELETE",
|
|
39692
|
-
path: "/v1/ai/billing/plans/
|
|
39658
|
+
path: "/v1/ai/billing/plans/default",
|
|
39693
39659
|
args,
|
|
39694
39660
|
queryParamKeys: []
|
|
39695
39661
|
});
|
|
39696
39662
|
});
|
|
39697
|
-
resource.command("get-agent-
|
|
39663
|
+
resource.command("get-agent-plan").description(`Get one AI agent billing plan by id, with its embedded rate card, window definitions, markups, per-seat grants and minted catalog object ids.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39698
39664
|
Examples:
|
|
39699
|
-
hyperline ai-billing get-agent-
|
|
39665
|
+
hyperline ai-billing get-agent-plan --id <id>`).action(async (opts) => {
|
|
39700
39666
|
const ctx = resource.parent?.opts()._ctx;
|
|
39701
39667
|
if (!ctx) {
|
|
39702
39668
|
process.stderr.write("Error: Not authenticated\n");
|
|
39703
39669
|
process.exit(1);
|
|
39704
39670
|
}
|
|
39705
39671
|
const args = {};
|
|
39672
|
+
if (opts.id !== void 0)
|
|
39673
|
+
args.id = opts.id;
|
|
39706
39674
|
await ctx.execute({
|
|
39707
39675
|
method: "GET",
|
|
39708
|
-
path: "/v1/ai/billing/
|
|
39676
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39709
39677
|
args,
|
|
39710
39678
|
queryParamKeys: []
|
|
39711
39679
|
});
|
|
39712
39680
|
});
|
|
39713
|
-
resource.command("
|
|
39681
|
+
resource.command("replace-agent-plan").description(`Replace an AI agent billing plan (whole-row semantics). Changes take effect on the next call for every customer on the plan; mode is immutable. Overage is priced by overage_markup_percent or by overage_rate_card_id, never both.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Human-readable resource name.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--overage-mode <value>", `Behavior when credits or an allowance are exhausted. Policy values may inherit the attached plan.
|
|
39682
|
+
|
|
39683
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39684
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--markup-percent <value>", `Percentage added to resolved cost. Null on writes means no override; an attached plan may supply the value.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--per-seat-credits <value>", `Credits granted per seat per billing period. Null grants no credits.`).option("--grant-rollover-enabled", `Whether granted credits survive renewal. Purchased credits always roll over.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39685
|
+
|
|
39686
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).addHelpText("after", `
|
|
39714
39687
|
Examples:
|
|
39715
|
-
hyperline ai-billing
|
|
39716
|
-
hyperline ai-billing
|
|
39717
|
-
hyperline ai-billing
|
|
39688
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name>
|
|
39689
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --rate-card-id <rate_card_id> --overage-mode <overage_mode>
|
|
39690
|
+
hyperline ai-billing replace-agent-plan --id <id> --name <name> --output json`).action(async (opts) => {
|
|
39718
39691
|
const ctx = resource.parent?.opts()._ctx;
|
|
39719
39692
|
if (!ctx) {
|
|
39720
39693
|
process.stderr.write("Error: Not authenticated\n");
|
|
39721
39694
|
process.exit(1);
|
|
39722
39695
|
}
|
|
39723
39696
|
const args = {};
|
|
39724
|
-
if (opts.
|
|
39725
|
-
args.
|
|
39726
|
-
if (opts.
|
|
39727
|
-
args.
|
|
39697
|
+
if (opts.id !== void 0)
|
|
39698
|
+
args.id = opts.id;
|
|
39699
|
+
if (opts.name !== void 0)
|
|
39700
|
+
args.name = opts.name;
|
|
39701
|
+
if (opts.rateCardId !== void 0)
|
|
39702
|
+
args.rate_card_id = opts.rateCardId;
|
|
39703
|
+
if (opts.overageMode !== void 0)
|
|
39704
|
+
args.overage_mode = opts.overageMode;
|
|
39705
|
+
if (opts.markupPercent !== void 0)
|
|
39706
|
+
args.markup_percent = opts.markupPercent;
|
|
39707
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39708
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39709
|
+
if (opts.overageRateCardId !== void 0)
|
|
39710
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39711
|
+
if (opts.perSeatCredits !== void 0)
|
|
39712
|
+
args.per_seat_credits = opts.perSeatCredits;
|
|
39713
|
+
if (opts.settlementSchedule !== void 0)
|
|
39714
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39715
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39716
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39717
|
+
if (opts.grantRolloverEnabled !== void 0)
|
|
39718
|
+
args.grant_rollover_enabled = true;
|
|
39719
|
+
if (opts.windows !== void 0)
|
|
39720
|
+
args.windows = JSON.parse(opts.windows);
|
|
39728
39721
|
await ctx.execute({
|
|
39729
39722
|
method: "PUT",
|
|
39730
|
-
path: "/v1/ai/billing/
|
|
39723
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39731
39724
|
args,
|
|
39732
39725
|
queryParamKeys: []
|
|
39733
39726
|
});
|
|
39734
39727
|
});
|
|
39735
|
-
resource.command("
|
|
39728
|
+
resource.command("delete-agent-plan").description(`Delete an AI agent billing plan. Refused (409, plan_in_use) while any customer is still attached to it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39736
39729
|
Examples:
|
|
39737
|
-
hyperline ai-billing
|
|
39738
|
-
hyperline ai-billing
|
|
39730
|
+
hyperline ai-billing delete-agent-plan --id <id>
|
|
39731
|
+
hyperline ai-billing delete-agent-plan --id <id> --output json`).action(async (opts) => {
|
|
39739
39732
|
const ctx = resource.parent?.opts()._ctx;
|
|
39740
39733
|
if (!ctx) {
|
|
39741
39734
|
process.stderr.write("Error: Not authenticated\n");
|
|
39742
39735
|
process.exit(1);
|
|
39743
39736
|
}
|
|
39744
39737
|
const args = {};
|
|
39738
|
+
if (opts.id !== void 0)
|
|
39739
|
+
args.id = opts.id;
|
|
39745
39740
|
if (!opts.yes) {
|
|
39746
39741
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39747
39742
|
if (!confirmed) {
|
|
@@ -39751,7 +39746,7 @@ Examples:
|
|
|
39751
39746
|
}
|
|
39752
39747
|
await ctx.execute({
|
|
39753
39748
|
method: "DELETE",
|
|
39754
|
-
path: "/v1/ai/billing/
|
|
39749
|
+
path: "/v1/ai/billing/plans/{id}",
|
|
39755
39750
|
args,
|
|
39756
39751
|
queryParamKeys: []
|
|
39757
39752
|
});
|
|
@@ -39819,37 +39814,37 @@ Examples:
|
|
|
39819
39814
|
queryParamKeys: []
|
|
39820
39815
|
});
|
|
39821
39816
|
});
|
|
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("--
|
|
39817
|
+
resource.command("get-agent-rate-card").description(`Get one AI rate card by id with all its pricing rows and usage counts (plans, policies, credit product).`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39823
39818
|
Examples:
|
|
39824
|
-
hyperline ai-billing get-agent-rate-card --
|
|
39819
|
+
hyperline ai-billing get-agent-rate-card --id <id>`).action(async (opts) => {
|
|
39825
39820
|
const ctx = resource.parent?.opts()._ctx;
|
|
39826
39821
|
if (!ctx) {
|
|
39827
39822
|
process.stderr.write("Error: Not authenticated\n");
|
|
39828
39823
|
process.exit(1);
|
|
39829
39824
|
}
|
|
39830
39825
|
const args = {};
|
|
39831
|
-
if (opts.
|
|
39832
|
-
args.
|
|
39826
|
+
if (opts.id !== void 0)
|
|
39827
|
+
args.id = opts.id;
|
|
39833
39828
|
await ctx.execute({
|
|
39834
39829
|
method: "GET",
|
|
39835
|
-
path: "/v1/ai/billing/rate-cards/{
|
|
39830
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39836
39831
|
args,
|
|
39837
39832
|
queryParamKeys: []
|
|
39838
39833
|
});
|
|
39839
39834
|
});
|
|
39840
|
-
resource.command("replace-agent-rate-card").description(`Replace an AI rate card's rows, name
|
|
39835
|
+
resource.command("replace-agent-rate-card").description(`Replace an AI rate card's rows, name and USD fallback (whole-card semantics). Denomination and currency are immutable.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Human-readable resource name.`).option("--fallback-per-usd <value>", `Credits, allowance units, or major currency units per USD of provider cost. Null leaves unmatched usage unpriced.`).requiredOption("--rows <json>", `All pricing rows on the card; replacement replaces the complete list.`).addHelpText("after", `
|
|
39841
39836
|
Examples:
|
|
39842
|
-
hyperline ai-billing replace-agent-rate-card --
|
|
39843
|
-
hyperline ai-billing replace-agent-rate-card --
|
|
39844
|
-
hyperline ai-billing replace-agent-rate-card --
|
|
39837
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows>
|
|
39838
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --fallback-per-usd <fallback_per_usd>
|
|
39839
|
+
hyperline ai-billing replace-agent-rate-card --id <id> --name <name> --rows <rows> --output json`).action(async (opts) => {
|
|
39845
39840
|
const ctx = resource.parent?.opts()._ctx;
|
|
39846
39841
|
if (!ctx) {
|
|
39847
39842
|
process.stderr.write("Error: Not authenticated\n");
|
|
39848
39843
|
process.exit(1);
|
|
39849
39844
|
}
|
|
39850
39845
|
const args = {};
|
|
39851
|
-
if (opts.
|
|
39852
|
-
args.
|
|
39846
|
+
if (opts.id !== void 0)
|
|
39847
|
+
args.id = opts.id;
|
|
39853
39848
|
if (opts.name !== void 0)
|
|
39854
39849
|
args.name = opts.name;
|
|
39855
39850
|
if (opts.fallbackPerUsd !== void 0)
|
|
@@ -39858,23 +39853,23 @@ Examples:
|
|
|
39858
39853
|
args.rows = JSON.parse(opts.rows);
|
|
39859
39854
|
await ctx.execute({
|
|
39860
39855
|
method: "PUT",
|
|
39861
|
-
path: "/v1/ai/billing/rate-cards/{
|
|
39856
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39862
39857
|
args,
|
|
39863
39858
|
queryParamKeys: []
|
|
39864
39859
|
});
|
|
39865
39860
|
});
|
|
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("--
|
|
39861
|
+
resource.command("delete-agent-rate-card").description(`Delete an AI rate card. Refused (409, rate_card_in_use) while any plan, credit product or customer policy still uses it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39867
39862
|
Examples:
|
|
39868
|
-
hyperline ai-billing delete-agent-rate-card --
|
|
39869
|
-
hyperline ai-billing delete-agent-rate-card --
|
|
39863
|
+
hyperline ai-billing delete-agent-rate-card --id <id>
|
|
39864
|
+
hyperline ai-billing delete-agent-rate-card --id <id> --output json`).action(async (opts) => {
|
|
39870
39865
|
const ctx = resource.parent?.opts()._ctx;
|
|
39871
39866
|
if (!ctx) {
|
|
39872
39867
|
process.stderr.write("Error: Not authenticated\n");
|
|
39873
39868
|
process.exit(1);
|
|
39874
39869
|
}
|
|
39875
39870
|
const args = {};
|
|
39876
|
-
if (opts.
|
|
39877
|
-
args.
|
|
39871
|
+
if (opts.id !== void 0)
|
|
39872
|
+
args.id = opts.id;
|
|
39878
39873
|
if (!opts.yes) {
|
|
39879
39874
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39880
39875
|
if (!confirmed) {
|
|
@@ -39884,139 +39879,123 @@ Examples:
|
|
|
39884
39879
|
}
|
|
39885
39880
|
await ctx.execute({
|
|
39886
39881
|
method: "DELETE",
|
|
39887
|
-
path: "/v1/ai/billing/rate-cards/{
|
|
39882
|
+
path: "/v1/ai/billing/rate-cards/{id}",
|
|
39888
39883
|
args,
|
|
39889
39884
|
queryParamKeys: []
|
|
39890
39885
|
});
|
|
39891
39886
|
});
|
|
39892
|
-
resource.command("list-agent-
|
|
39887
|
+
resource.command("list-agent-customer-policies").description(`List all AI billing policies (scopes) for one customer: the default shared pool plus per-agent overrides. Accepts Hyperline or external customer ids.`).requiredOption("--id <value>", `id parameter`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
39893
39888
|
Examples:
|
|
39894
|
-
hyperline ai-billing list-agent-
|
|
39889
|
+
hyperline ai-billing list-agent-customer-policies --id <id>
|
|
39890
|
+
hyperline ai-billing list-agent-customer-policies --id <id> --take <take>`).action(async (opts) => {
|
|
39895
39891
|
const ctx = resource.parent?.opts()._ctx;
|
|
39896
39892
|
if (!ctx) {
|
|
39897
39893
|
process.stderr.write("Error: Not authenticated\n");
|
|
39898
39894
|
process.exit(1);
|
|
39899
39895
|
}
|
|
39900
39896
|
const args = {};
|
|
39897
|
+
if (opts.id !== void 0)
|
|
39898
|
+
args.id = opts.id;
|
|
39899
|
+
if (opts.take !== void 0)
|
|
39900
|
+
args.take = Number(opts.take);
|
|
39901
|
+
if (opts.skip !== void 0)
|
|
39902
|
+
args.skip = Number(opts.skip);
|
|
39901
39903
|
await ctx.execute({
|
|
39902
39904
|
method: "GET",
|
|
39903
|
-
path: "/v1/ai/billing/
|
|
39905
|
+
path: "/v1/ai/billing/customers/{id}/policies",
|
|
39904
39906
|
args,
|
|
39905
|
-
queryParamKeys: []
|
|
39907
|
+
queryParamKeys: ["take", "skip"]
|
|
39906
39908
|
});
|
|
39907
39909
|
});
|
|
39908
|
-
resource.command("
|
|
39910
|
+
resource.command("get-default-customer-billing-policy").description(`Get the exact customer billing policy addressed by this resource; agent policies never fall back to the shared pool.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
39909
39911
|
Examples:
|
|
39910
|
-
hyperline ai-billing
|
|
39911
|
-
hyperline ai-billing list-agent-cost-catalog --enabled-only <enabled_only>`).action(async (opts) => {
|
|
39912
|
+
hyperline ai-billing get-default-customer-billing-policy --id <id>`).action(async (opts) => {
|
|
39912
39913
|
const ctx = resource.parent?.opts()._ctx;
|
|
39913
39914
|
if (!ctx) {
|
|
39914
39915
|
process.stderr.write("Error: Not authenticated\n");
|
|
39915
39916
|
process.exit(1);
|
|
39916
39917
|
}
|
|
39917
39918
|
const args = {};
|
|
39918
|
-
if (opts.
|
|
39919
|
-
args.
|
|
39919
|
+
if (opts.id !== void 0)
|
|
39920
|
+
args.id = opts.id;
|
|
39920
39921
|
await ctx.execute({
|
|
39921
39922
|
method: "GET",
|
|
39922
|
-
path: "/v1/ai/billing/
|
|
39923
|
-
args,
|
|
39924
|
-
queryParamKeys: ["enabled_only"]
|
|
39925
|
-
});
|
|
39926
|
-
});
|
|
39927
|
-
resource.command("create-agent-cost-catalog-item").description(`Create a custom AI cost item so a non-LLM vendor call is priced instead of landing unpriced at $0. provider/item must match hyperline.cost({ vendor, item }) verbatim and each dimensions[].key must match the unit the SDK sends. Re-creating an existing open item returns it unchanged (200); a pair the global registry already prices is refused \u2014 use the overrides endpoint for that.`).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", `
|
|
39928
|
-
Examples:
|
|
39929
|
-
hyperline ai-billing create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions>
|
|
39930
|
-
hyperline ai-billing create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
39931
|
-
const ctx = resource.parent?.opts()._ctx;
|
|
39932
|
-
if (!ctx) {
|
|
39933
|
-
process.stderr.write("Error: Not authenticated\n");
|
|
39934
|
-
process.exit(1);
|
|
39935
|
-
}
|
|
39936
|
-
const args = {};
|
|
39937
|
-
if (opts.provider !== void 0)
|
|
39938
|
-
args.provider = opts.provider;
|
|
39939
|
-
if (opts.item !== void 0)
|
|
39940
|
-
args.item = opts.item;
|
|
39941
|
-
if (opts.dimensions !== void 0)
|
|
39942
|
-
args.dimensions = JSON.parse(opts.dimensions);
|
|
39943
|
-
await ctx.execute({
|
|
39944
|
-
method: "POST",
|
|
39945
|
-
path: "/v1/ai/billing/cost-catalog/items",
|
|
39946
|
-
args,
|
|
39947
|
-
queryParamKeys: []
|
|
39948
|
-
});
|
|
39949
|
-
});
|
|
39950
|
-
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("--item-id <value>", `item_id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
39951
|
-
Examples:
|
|
39952
|
-
hyperline ai-billing delete-agent-cost-catalog-item --item-id <item_id>
|
|
39953
|
-
hyperline ai-billing delete-agent-cost-catalog-item --item-id <item_id> --output json`).action(async (opts) => {
|
|
39954
|
-
const ctx = resource.parent?.opts()._ctx;
|
|
39955
|
-
if (!ctx) {
|
|
39956
|
-
process.stderr.write("Error: Not authenticated\n");
|
|
39957
|
-
process.exit(1);
|
|
39958
|
-
}
|
|
39959
|
-
const args = {};
|
|
39960
|
-
if (opts.itemId !== void 0)
|
|
39961
|
-
args.item_id = opts.itemId;
|
|
39962
|
-
if (!opts.yes) {
|
|
39963
|
-
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
39964
|
-
if (!confirmed) {
|
|
39965
|
-
process.stdout.write("Aborted.\n");
|
|
39966
|
-
return;
|
|
39967
|
-
}
|
|
39968
|
-
}
|
|
39969
|
-
await ctx.execute({
|
|
39970
|
-
method: "DELETE",
|
|
39971
|
-
path: "/v1/ai/billing/cost-catalog/items/{item_id}",
|
|
39923
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
39972
39924
|
args,
|
|
39973
39925
|
queryParamKeys: []
|
|
39974
39926
|
});
|
|
39975
39927
|
});
|
|
39976
|
-
resource.command("upsert-
|
|
39928
|
+
resource.command("upsert-default-customer-billing-policy").description(`Replace customer billing settings while preserving omitted plan_id and rate_card_id references; null detaches them, and a shared policy enables automatic telemetry billing.`).requiredOption("--id <value>", `id parameter`).requiredOption("--mode <value>", `Billing mode.
|
|
39929
|
+
|
|
39930
|
+
- wallet: Charges a monetary wallet.
|
|
39931
|
+
- credits: Consumes a credit balance.
|
|
39932
|
+
- 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.
|
|
39933
|
+
|
|
39934
|
+
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
39935
|
+
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--overage-wallet-id <value>", `Wallet charged for overage. Null bills overage in arrears.`).option("--floor <value>", `Minimum available balance a spend check requires, in the policy's denomination.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
39936
|
+
|
|
39937
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).requiredOption("--blocked", `Whether spending is disabled for this billing scope.`).addHelpText("after", `
|
|
39977
39938
|
Examples:
|
|
39978
|
-
hyperline ai-billing upsert-
|
|
39979
|
-
hyperline ai-billing upsert-
|
|
39980
|
-
hyperline ai-billing upsert-
|
|
39939
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked
|
|
39940
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --wallet-id <wallet_id> --credit-product-id <credit_product_id>
|
|
39941
|
+
hyperline ai-billing upsert-default-customer-billing-policy --id <id> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
39981
39942
|
const ctx = resource.parent?.opts()._ctx;
|
|
39982
39943
|
if (!ctx) {
|
|
39983
39944
|
process.stderr.write("Error: Not authenticated\n");
|
|
39984
39945
|
process.exit(1);
|
|
39985
39946
|
}
|
|
39986
39947
|
const 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.
|
|
40000
|
-
args.
|
|
39948
|
+
if (opts.id !== void 0)
|
|
39949
|
+
args.id = opts.id;
|
|
39950
|
+
if (opts.mode !== void 0)
|
|
39951
|
+
args.mode = opts.mode;
|
|
39952
|
+
if (opts.walletId !== void 0)
|
|
39953
|
+
args.wallet_id = opts.walletId;
|
|
39954
|
+
if (opts.creditProductId !== void 0)
|
|
39955
|
+
args.credit_product_id = opts.creditProductId;
|
|
39956
|
+
if (opts.markupPercent !== void 0)
|
|
39957
|
+
args.markup_percent = opts.markupPercent;
|
|
39958
|
+
if (opts.overageMode !== void 0)
|
|
39959
|
+
args.overage_mode = opts.overageMode;
|
|
39960
|
+
if (opts.overageMarkupPercent !== void 0)
|
|
39961
|
+
args.overage_markup_percent = opts.overageMarkupPercent;
|
|
39962
|
+
if (opts.overageRateCardId !== void 0)
|
|
39963
|
+
args.overage_rate_card_id = opts.overageRateCardId;
|
|
39964
|
+
if (opts.overageWalletId !== void 0)
|
|
39965
|
+
args.overage_wallet_id = opts.overageWalletId;
|
|
39966
|
+
if (opts.floor !== void 0)
|
|
39967
|
+
args.floor = opts.floor;
|
|
39968
|
+
if (opts.settlementSchedule !== void 0)
|
|
39969
|
+
args.settlement_schedule = opts.settlementSchedule;
|
|
39970
|
+
if (opts.rateCardId !== void 0)
|
|
39971
|
+
args.rate_card_id = opts.rateCardId;
|
|
39972
|
+
if (opts.planId !== void 0)
|
|
39973
|
+
args.plan_id = opts.planId;
|
|
39974
|
+
if (opts.settlementIntervalMinutes !== void 0)
|
|
39975
|
+
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
39976
|
+
if (opts.blocked !== void 0)
|
|
39977
|
+
args.blocked = true;
|
|
39978
|
+
if (opts.windows !== void 0)
|
|
39979
|
+
args.windows = JSON.parse(opts.windows);
|
|
40001
39980
|
await ctx.execute({
|
|
40002
39981
|
method: "PUT",
|
|
40003
|
-
path: "/v1/ai/billing/
|
|
39982
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
40004
39983
|
args,
|
|
40005
39984
|
queryParamKeys: []
|
|
40006
39985
|
});
|
|
40007
39986
|
});
|
|
40008
|
-
resource.command("delete-
|
|
39987
|
+
resource.command("delete-default-customer-billing-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40009
39988
|
Examples:
|
|
40010
|
-
hyperline ai-billing delete-
|
|
40011
|
-
hyperline ai-billing delete-
|
|
39989
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id>
|
|
39990
|
+
hyperline ai-billing delete-default-customer-billing-policy --id <id> --output json`).action(async (opts) => {
|
|
40012
39991
|
const ctx = resource.parent?.opts()._ctx;
|
|
40013
39992
|
if (!ctx) {
|
|
40014
39993
|
process.stderr.write("Error: Not authenticated\n");
|
|
40015
39994
|
process.exit(1);
|
|
40016
39995
|
}
|
|
40017
39996
|
const args = {};
|
|
40018
|
-
if (opts.
|
|
40019
|
-
args.
|
|
39997
|
+
if (opts.id !== void 0)
|
|
39998
|
+
args.id = opts.id;
|
|
40020
39999
|
if (!opts.yes) {
|
|
40021
40000
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40022
40001
|
if (!confirmed) {
|
|
@@ -40026,51 +40005,32 @@ Examples:
|
|
|
40026
40005
|
}
|
|
40027
40006
|
await ctx.execute({
|
|
40028
40007
|
method: "DELETE",
|
|
40029
|
-
path: "/v1/ai/billing/
|
|
40008
|
+
path: "/v1/ai/billing/customers/{id}/policies/default",
|
|
40030
40009
|
args,
|
|
40031
40010
|
queryParamKeys: []
|
|
40032
40011
|
});
|
|
40033
40012
|
});
|
|
40034
|
-
resource.command("
|
|
40013
|
+
resource.command("get-agent-customer-billing-policy").description(`Get the exact customer billing policy addressed by this resource; agent policies never fall back to the shared pool.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).addHelpText("after", `
|
|
40035
40014
|
Examples:
|
|
40036
|
-
hyperline ai-billing
|
|
40015
|
+
hyperline ai-billing get-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
40037
40016
|
const ctx = resource.parent?.opts()._ctx;
|
|
40038
40017
|
if (!ctx) {
|
|
40039
40018
|
process.stderr.write("Error: Not authenticated\n");
|
|
40040
40019
|
process.exit(1);
|
|
40041
40020
|
}
|
|
40042
40021
|
const args = {};
|
|
40043
|
-
if (opts.
|
|
40044
|
-
args.
|
|
40022
|
+
if (opts.id !== void 0)
|
|
40023
|
+
args.id = opts.id;
|
|
40024
|
+
if (opts.agentSlug !== void 0)
|
|
40025
|
+
args.agent_slug = opts.agentSlug;
|
|
40045
40026
|
await ctx.execute({
|
|
40046
40027
|
method: "GET",
|
|
40047
|
-
path: "/v1/ai/billing/customers/{
|
|
40028
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
40048
40029
|
args,
|
|
40049
40030
|
queryParamKeys: []
|
|
40050
40031
|
});
|
|
40051
40032
|
});
|
|
40052
|
-
resource.command("
|
|
40053
|
-
Examples:
|
|
40054
|
-
hyperline ai-billing get-agent-customer-policy --customer-id <customer_id>
|
|
40055
|
-
hyperline ai-billing get-agent-customer-policy --customer-id <customer_id> --agent <agent>`).action(async (opts) => {
|
|
40056
|
-
const ctx = resource.parent?.opts()._ctx;
|
|
40057
|
-
if (!ctx) {
|
|
40058
|
-
process.stderr.write("Error: Not authenticated\n");
|
|
40059
|
-
process.exit(1);
|
|
40060
|
-
}
|
|
40061
|
-
const args = {};
|
|
40062
|
-
if (opts.customerId !== void 0)
|
|
40063
|
-
args.customer_id = opts.customerId;
|
|
40064
|
-
if (opts.agent !== void 0)
|
|
40065
|
-
args.agent = opts.agent;
|
|
40066
|
-
await ctx.execute({
|
|
40067
|
-
method: "GET",
|
|
40068
|
-
path: "/v1/ai/billing/customers/{customer_id}/policy",
|
|
40069
|
-
args,
|
|
40070
|
-
queryParamKeys: ["agent"]
|
|
40071
|
-
});
|
|
40072
|
-
});
|
|
40073
|
-
resource.command("upsert-agent-customer-policy").description(`Create or replace one customer's AI billing policy (whole-row). Pass plan_id to attach the customer to a billing plan \u2014 this also attaches the plan's overage invoice container to their subscription. Past-limit usage is priced by overage_markup_percent over the base rates, or by overage_rate_card_id (a currency rate card whose rates ARE the overage price) \u2014 never both. Wallet/credit pots are auto-opened empty.`).requiredOption("--customer-id <value>", `customer_id parameter`).option("--agent <value>", `Agent scope identifier. Null on scoped results denotes the customer's shared pool.`).requiredOption("--mode <value>", `Billing mode.
|
|
40033
|
+
resource.command("upsert-agent-customer-billing-policy").description(`Replace customer billing settings while preserving omitted plan_id and rate_card_id references; null detaches them, and a shared policy enables automatic telemetry billing.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).requiredOption("--mode <value>", `Billing mode.
|
|
40074
40034
|
|
|
40075
40035
|
- wallet: Charges a monetary wallet.
|
|
40076
40036
|
- credits: Consumes a credit balance.
|
|
@@ -40079,21 +40039,21 @@ Examples:
|
|
|
40079
40039
|
- refuse: Rejects the call that crosses the boundary without deducting usage.
|
|
40080
40040
|
- metered: Prices the whole call as monetary overage, using the overage card or USD provider cost plus markup.`).option("--overage-markup-percent <value>", `Percentage added to provider cost for overage. Mutually exclusive with overage_rate_card_id.`).option("--overage-rate-card-id <value>", `Currency rate card used to price overage directly. Null means provider cost plus the resolved overage markup.`).option("--overage-wallet-id <value>", `Wallet charged for overage. Null bills overage in arrears.`).option("--floor <value>", `Minimum available balance a spend check requires, in the policy's denomination.`).option("--settlement-interval-minutes <number>", `Settlement interval in minutes. Null means no interval override. Mutually exclusive with settlement_schedule.`).option("--settlement-schedule <value>", `Calendar settlement schedule. Null clears the override; mutually exclusive with settlement_interval_minutes.
|
|
40081
40041
|
|
|
40082
|
-
- calendar_month: Settles at the end of each UTC calendar month.`).option("--
|
|
40042
|
+
- calendar_month: Settles at the end of each UTC calendar month.`).option("--windows <json>", `Rolling allowances. Required for windows plans; each window meters every call. A plan replacement replaces the entire array.`).option("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).option("--plan-id <value>", `Billing plan reference. On policy writes, omission preserves the current plan and null detaches it.`).requiredOption("--blocked", `Whether spending is disabled for this billing scope.`).addHelpText("after", `
|
|
40083
40043
|
Examples:
|
|
40084
|
-
hyperline ai-billing upsert-agent-customer-policy --
|
|
40085
|
-
hyperline ai-billing upsert-agent-customer-policy --
|
|
40086
|
-
hyperline ai-billing upsert-agent-customer-policy --
|
|
40044
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked
|
|
40045
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked --wallet-id <wallet_id> --credit-product-id <credit_product_id>
|
|
40046
|
+
hyperline ai-billing upsert-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --mode <mode> --blocked --output json`).action(async (opts) => {
|
|
40087
40047
|
const ctx = resource.parent?.opts()._ctx;
|
|
40088
40048
|
if (!ctx) {
|
|
40089
40049
|
process.stderr.write("Error: Not authenticated\n");
|
|
40090
40050
|
process.exit(1);
|
|
40091
40051
|
}
|
|
40092
40052
|
const args = {};
|
|
40093
|
-
if (opts.
|
|
40094
|
-
args.
|
|
40095
|
-
if (opts.
|
|
40096
|
-
args.
|
|
40053
|
+
if (opts.id !== void 0)
|
|
40054
|
+
args.id = opts.id;
|
|
40055
|
+
if (opts.agentSlug !== void 0)
|
|
40056
|
+
args.agent_slug = opts.agentSlug;
|
|
40097
40057
|
if (opts.mode !== void 0)
|
|
40098
40058
|
args.mode = opts.mode;
|
|
40099
40059
|
if (opts.walletId !== void 0)
|
|
@@ -40122,32 +40082,29 @@ Examples:
|
|
|
40122
40082
|
args.settlement_interval_minutes = Number(opts.settlementIntervalMinutes);
|
|
40123
40083
|
if (opts.blocked !== void 0)
|
|
40124
40084
|
args.blocked = true;
|
|
40125
|
-
if (opts.
|
|
40126
|
-
args.
|
|
40127
|
-
if (opts.windowRates !== void 0)
|
|
40128
|
-
args.window_rates = JSON.parse(opts.windowRates);
|
|
40085
|
+
if (opts.windows !== void 0)
|
|
40086
|
+
args.windows = JSON.parse(opts.windows);
|
|
40129
40087
|
await ctx.execute({
|
|
40130
40088
|
method: "PUT",
|
|
40131
|
-
path: "/v1/ai/billing/customers/{
|
|
40089
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
40132
40090
|
args,
|
|
40133
|
-
queryParamKeys: [
|
|
40091
|
+
queryParamKeys: []
|
|
40134
40092
|
});
|
|
40135
40093
|
});
|
|
40136
|
-
resource.command("delete-agent-customer-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--
|
|
40094
|
+
resource.command("delete-agent-customer-billing-policy").description(`Delete one customer's AI billing policy scope. Refused (409) while it owes unsettled consumption or while agent overrides still depend on it.`).requiredOption("--id <value>", `id parameter`).requiredOption("--agent-slug <value>", `agent_slug parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40137
40095
|
Examples:
|
|
40138
|
-
hyperline ai-billing delete-agent-customer-policy --
|
|
40139
|
-
hyperline ai-billing delete-agent-customer-policy --
|
|
40140
|
-
hyperline ai-billing delete-agent-customer-policy --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
40096
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug>
|
|
40097
|
+
hyperline ai-billing delete-agent-customer-billing-policy --id <id> --agent-slug <agent_slug> --output json`).action(async (opts) => {
|
|
40141
40098
|
const ctx = resource.parent?.opts()._ctx;
|
|
40142
40099
|
if (!ctx) {
|
|
40143
40100
|
process.stderr.write("Error: Not authenticated\n");
|
|
40144
40101
|
process.exit(1);
|
|
40145
40102
|
}
|
|
40146
40103
|
const args = {};
|
|
40147
|
-
if (opts.
|
|
40148
|
-
args.
|
|
40149
|
-
if (opts.
|
|
40150
|
-
args.
|
|
40104
|
+
if (opts.id !== void 0)
|
|
40105
|
+
args.id = opts.id;
|
|
40106
|
+
if (opts.agentSlug !== void 0)
|
|
40107
|
+
args.agent_slug = opts.agentSlug;
|
|
40151
40108
|
if (!opts.yes) {
|
|
40152
40109
|
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40153
40110
|
if (!confirmed) {
|
|
@@ -40157,87 +40114,87 @@ Examples:
|
|
|
40157
40114
|
}
|
|
40158
40115
|
await ctx.execute({
|
|
40159
40116
|
method: "DELETE",
|
|
40160
|
-
path: "/v1/ai/billing/customers/{
|
|
40117
|
+
path: "/v1/ai/billing/customers/{id}/policies/agents/{agent_slug}",
|
|
40161
40118
|
args,
|
|
40162
|
-
queryParamKeys: [
|
|
40119
|
+
queryParamKeys: []
|
|
40163
40120
|
});
|
|
40164
40121
|
});
|
|
40165
|
-
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("--
|
|
40122
|
+
resource.command("apply-agent-default-plan").description(`Apply the workspace's default AI agent billing plan to one customer (by id or external id). Idempotent; refuses (409) if the customer already has a different billing policy, 404 when no default plan is set.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40166
40123
|
Examples:
|
|
40167
|
-
hyperline ai-billing apply-agent-default-plan --
|
|
40168
|
-
hyperline ai-billing apply-agent-default-plan --
|
|
40124
|
+
hyperline ai-billing apply-agent-default-plan --id <id>
|
|
40125
|
+
hyperline ai-billing apply-agent-default-plan --id <id> --output json`).action(async (opts) => {
|
|
40169
40126
|
const ctx = resource.parent?.opts()._ctx;
|
|
40170
40127
|
if (!ctx) {
|
|
40171
40128
|
process.stderr.write("Error: Not authenticated\n");
|
|
40172
40129
|
process.exit(1);
|
|
40173
40130
|
}
|
|
40174
40131
|
const args = {};
|
|
40175
|
-
if (opts.
|
|
40176
|
-
args.
|
|
40132
|
+
if (opts.id !== void 0)
|
|
40133
|
+
args.id = opts.id;
|
|
40177
40134
|
await ctx.execute({
|
|
40178
40135
|
method: "POST",
|
|
40179
|
-
path: "/v1/ai/billing/customers/{
|
|
40136
|
+
path: "/v1/ai/billing/customers/{id}/apply-default-plan",
|
|
40180
40137
|
args,
|
|
40181
40138
|
queryParamKeys: []
|
|
40182
40139
|
});
|
|
40183
40140
|
});
|
|
40184
|
-
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("--
|
|
40141
|
+
resource.command("get-agent-customer-balance").description(`Get one customer's live AI balance, shaped by their billing mode: wallet shadow balance, credit pot, or rolling window meters with reset times. Includes per-agent scopes and overage state.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Agent scope identifier. Null is the customer's shared pool.`).addHelpText("after", `
|
|
40185
40142
|
Examples:
|
|
40186
|
-
hyperline ai-billing get-agent-customer-balance --
|
|
40187
|
-
hyperline ai-billing get-agent-customer-balance --
|
|
40143
|
+
hyperline ai-billing get-agent-customer-balance --id <id>
|
|
40144
|
+
hyperline ai-billing get-agent-customer-balance --id <id> --agent-slug <agent_slug>`).action(async (opts) => {
|
|
40188
40145
|
const ctx = resource.parent?.opts()._ctx;
|
|
40189
40146
|
if (!ctx) {
|
|
40190
40147
|
process.stderr.write("Error: Not authenticated\n");
|
|
40191
40148
|
process.exit(1);
|
|
40192
40149
|
}
|
|
40193
40150
|
const args = {};
|
|
40194
|
-
if (opts.
|
|
40195
|
-
args.
|
|
40196
|
-
if (opts.
|
|
40197
|
-
args.
|
|
40151
|
+
if (opts.id !== void 0)
|
|
40152
|
+
args.id = opts.id;
|
|
40153
|
+
if (opts.agentSlug !== void 0)
|
|
40154
|
+
args.agent_slug = opts.agentSlug;
|
|
40198
40155
|
await ctx.execute({
|
|
40199
40156
|
method: "GET",
|
|
40200
|
-
path: "/v1/ai/billing/customers/{
|
|
40157
|
+
path: "/v1/ai/billing/customers/{id}/balance",
|
|
40201
40158
|
args,
|
|
40202
|
-
queryParamKeys: ["
|
|
40159
|
+
queryParamKeys: ["agent_slug"]
|
|
40203
40160
|
});
|
|
40204
40161
|
});
|
|
40205
|
-
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("--
|
|
40162
|
+
resource.command("reset-agent-customer-windows").description(`Reset one customer's open AI allowance windows so their next call starts a fresh full allowance. Windows-mode scopes only.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Agent scope identifier. Null is the customer's shared pool.`).addHelpText("after", `
|
|
40206
40163
|
Examples:
|
|
40207
|
-
hyperline ai-billing reset-agent-customer-windows --
|
|
40208
|
-
hyperline ai-billing reset-agent-customer-windows --
|
|
40209
|
-
hyperline ai-billing reset-agent-customer-windows --
|
|
40164
|
+
hyperline ai-billing reset-agent-customer-windows --id <id>
|
|
40165
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --agent-slug <agent_slug>
|
|
40166
|
+
hyperline ai-billing reset-agent-customer-windows --id <id> --output json`).action(async (opts) => {
|
|
40210
40167
|
const ctx = resource.parent?.opts()._ctx;
|
|
40211
40168
|
if (!ctx) {
|
|
40212
40169
|
process.stderr.write("Error: Not authenticated\n");
|
|
40213
40170
|
process.exit(1);
|
|
40214
40171
|
}
|
|
40215
40172
|
const args = {};
|
|
40216
|
-
if (opts.
|
|
40217
|
-
args.
|
|
40218
|
-
if (opts.
|
|
40219
|
-
args.
|
|
40173
|
+
if (opts.id !== void 0)
|
|
40174
|
+
args.id = opts.id;
|
|
40175
|
+
if (opts.agentSlug !== void 0)
|
|
40176
|
+
args.agent_slug = opts.agentSlug;
|
|
40220
40177
|
await ctx.execute({
|
|
40221
40178
|
method: "POST",
|
|
40222
|
-
path: "/v1/ai/billing/customers/{
|
|
40179
|
+
path: "/v1/ai/billing/customers/{id}/windows/reset",
|
|
40223
40180
|
args,
|
|
40224
|
-
queryParamKeys: ["
|
|
40181
|
+
queryParamKeys: ["agent_slug"]
|
|
40225
40182
|
});
|
|
40226
40183
|
});
|
|
40227
|
-
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("--
|
|
40184
|
+
resource.command("list-agent-customer-consumption").description(`List one customer's AI consumption ledger entries, newest first, with amounts, denominations and overage flags. Filter by agent scope, overage, and from/to time range; paginated with take/skip.`).requiredOption("--id <value>", `id parameter`).option("--agent-slug <value>", `Billing scope: an empty string selects the shared pool; omission includes all scopes.`).option("--overage <value>", `Filter by overage status; omission includes both ordinary and overage entries.`).option("--from <value>", `UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--to <value>", `UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
40228
40185
|
Examples:
|
|
40229
|
-
hyperline ai-billing list-agent-customer-consumption --
|
|
40230
|
-
hyperline ai-billing list-agent-customer-consumption --
|
|
40186
|
+
hyperline ai-billing list-agent-customer-consumption --id <id>
|
|
40187
|
+
hyperline ai-billing list-agent-customer-consumption --id <id> --agent-slug <agent_slug> --overage <overage>`).action(async (opts) => {
|
|
40231
40188
|
const ctx = resource.parent?.opts()._ctx;
|
|
40232
40189
|
if (!ctx) {
|
|
40233
40190
|
process.stderr.write("Error: Not authenticated\n");
|
|
40234
40191
|
process.exit(1);
|
|
40235
40192
|
}
|
|
40236
40193
|
const args = {};
|
|
40237
|
-
if (opts.
|
|
40238
|
-
args.
|
|
40239
|
-
if (opts.
|
|
40240
|
-
args.
|
|
40194
|
+
if (opts.id !== void 0)
|
|
40195
|
+
args.id = opts.id;
|
|
40196
|
+
if (opts.agentSlug !== void 0)
|
|
40197
|
+
args.agent_slug = opts.agentSlug;
|
|
40241
40198
|
if (opts.overage !== void 0)
|
|
40242
40199
|
args.overage = opts.overage;
|
|
40243
40200
|
if (opts.from !== void 0)
|
|
@@ -40250,25 +40207,232 @@ Examples:
|
|
|
40250
40207
|
args.skip = Number(opts.skip);
|
|
40251
40208
|
await ctx.execute({
|
|
40252
40209
|
method: "GET",
|
|
40253
|
-
path: "/v1/ai/billing/customers/{
|
|
40210
|
+
path: "/v1/ai/billing/customers/{id}/consumption",
|
|
40254
40211
|
args,
|
|
40255
|
-
queryParamKeys: ["
|
|
40212
|
+
queryParamKeys: ["agent_slug", "overage", "from", "to", "take", "skip"]
|
|
40256
40213
|
});
|
|
40257
40214
|
});
|
|
40258
|
-
resource.command("get-
|
|
40215
|
+
resource.command("get-product-ai-rate-card").description(`Get the default AI rate-card reference for a credit product, or 404 when none is attached.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40259
40216
|
Examples:
|
|
40260
|
-
hyperline ai-billing get-
|
|
40217
|
+
hyperline ai-billing get-product-ai-rate-card --id <id>`).action(async (opts) => {
|
|
40261
40218
|
const ctx = resource.parent?.opts()._ctx;
|
|
40262
40219
|
if (!ctx) {
|
|
40263
40220
|
process.stderr.write("Error: Not authenticated\n");
|
|
40264
40221
|
process.exit(1);
|
|
40265
40222
|
}
|
|
40266
40223
|
const args = {};
|
|
40267
|
-
if (opts.
|
|
40268
|
-
args.
|
|
40224
|
+
if (opts.id !== void 0)
|
|
40225
|
+
args.id = opts.id;
|
|
40269
40226
|
await ctx.execute({
|
|
40270
40227
|
method: "GET",
|
|
40271
|
-
path: "/v1/ai/billing/
|
|
40228
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40229
|
+
args,
|
|
40230
|
+
queryParamKeys: []
|
|
40231
|
+
});
|
|
40232
|
+
});
|
|
40233
|
+
resource.command("set-product-ai-rate-card").description(`Attach a credits-denominated AI rate card with complete fallback pricing as the credit product's default.`).requiredOption("--id <value>", `id parameter`).requiredOption("--rate-card-id <value>", `Rate card reference. On policy writes, omission preserves the current reference and null detaches it; on plan replacement omission clears it.`).addHelpText("after", `
|
|
40234
|
+
Examples:
|
|
40235
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id>
|
|
40236
|
+
hyperline ai-billing set-product-ai-rate-card --id <id> --rate-card-id <rate_card_id> --output json`).action(async (opts) => {
|
|
40237
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40238
|
+
if (!ctx) {
|
|
40239
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40240
|
+
process.exit(1);
|
|
40241
|
+
}
|
|
40242
|
+
const args = {};
|
|
40243
|
+
if (opts.id !== void 0)
|
|
40244
|
+
args.id = opts.id;
|
|
40245
|
+
if (opts.rateCardId !== void 0)
|
|
40246
|
+
args.rate_card_id = opts.rateCardId;
|
|
40247
|
+
await ctx.execute({
|
|
40248
|
+
method: "PUT",
|
|
40249
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40250
|
+
args,
|
|
40251
|
+
queryParamKeys: []
|
|
40252
|
+
});
|
|
40253
|
+
});
|
|
40254
|
+
resource.command("clear-product-ai-rate-card").description(`Detach a credit product's default AI rate card without deleting the card, or return 404 when none is attached.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40255
|
+
Examples:
|
|
40256
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id>
|
|
40257
|
+
hyperline ai-billing clear-product-ai-rate-card --id <id> --output json`).action(async (opts) => {
|
|
40258
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40259
|
+
if (!ctx) {
|
|
40260
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40261
|
+
process.exit(1);
|
|
40262
|
+
}
|
|
40263
|
+
const args = {};
|
|
40264
|
+
if (opts.id !== void 0)
|
|
40265
|
+
args.id = opts.id;
|
|
40266
|
+
if (!opts.yes) {
|
|
40267
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40268
|
+
if (!confirmed) {
|
|
40269
|
+
process.stdout.write("Aborted.\n");
|
|
40270
|
+
return;
|
|
40271
|
+
}
|
|
40272
|
+
}
|
|
40273
|
+
await ctx.execute({
|
|
40274
|
+
method: "DELETE",
|
|
40275
|
+
path: "/v1/ai/billing/products/{id}/rate-card",
|
|
40276
|
+
args,
|
|
40277
|
+
queryParamKeys: []
|
|
40278
|
+
});
|
|
40279
|
+
});
|
|
40280
|
+
}
|
|
40281
|
+
|
|
40282
|
+
// build/commands/generated/ai-costs.js
|
|
40283
|
+
function registerAi_CostsCommands(parent) {
|
|
40284
|
+
const resource = parent.command("ai-costs").description("Manage ai > costs");
|
|
40285
|
+
resource.command("list-agent-cost-catalog").description(`List the AI cost catalog: registry model prices merged with this workspace's negotiated overrides, its own custom cost items (source custom), and the unpriced pairs its telemetry has carried (source unlisted). Rates are USD decimal strings. Pass enabled_only=true for just the enabled catalog.`).option("--take <number>", `Maximum catalog entries to return.`).option("--skip <number>", `skip`).option("--enabled-only <value>", `enabled_only`).addHelpText("after", `
|
|
40286
|
+
Examples:
|
|
40287
|
+
hyperline ai-costs list-agent-cost-catalog
|
|
40288
|
+
hyperline ai-costs list-agent-cost-catalog --take <take> --enabled-only <enabled_only>`).action(async (opts) => {
|
|
40289
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40290
|
+
if (!ctx) {
|
|
40291
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40292
|
+
process.exit(1);
|
|
40293
|
+
}
|
|
40294
|
+
const args = {};
|
|
40295
|
+
if (opts.enabledOnly !== void 0)
|
|
40296
|
+
args.enabled_only = opts.enabledOnly;
|
|
40297
|
+
if (opts.take !== void 0)
|
|
40298
|
+
args.take = Number(opts.take);
|
|
40299
|
+
if (opts.skip !== void 0)
|
|
40300
|
+
args.skip = Number(opts.skip);
|
|
40301
|
+
await ctx.execute({
|
|
40302
|
+
method: "GET",
|
|
40303
|
+
path: "/v1/ai/billing/costs",
|
|
40304
|
+
args,
|
|
40305
|
+
queryParamKeys: ["take", "skip", "enabled_only"]
|
|
40306
|
+
});
|
|
40307
|
+
});
|
|
40308
|
+
resource.command("create-agent-cost-catalog-item").description(`Create a custom provider/item cost; an existing pair returns 200 with its unchanged rates, so use PUT /v1/ai/billing/costs/items/:id to edit it.`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--item <value>", `Custom item name matching the usage payload.`).requiredOption("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40309
|
+
Examples:
|
|
40310
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions>
|
|
40311
|
+
hyperline ai-costs create-agent-cost-catalog-item --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40312
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40313
|
+
if (!ctx) {
|
|
40314
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40315
|
+
process.exit(1);
|
|
40316
|
+
}
|
|
40317
|
+
const args = {};
|
|
40318
|
+
if (opts.provider !== void 0)
|
|
40319
|
+
args.provider = opts.provider;
|
|
40320
|
+
if (opts.item !== void 0)
|
|
40321
|
+
args.item = opts.item;
|
|
40322
|
+
if (opts.dimensions !== void 0)
|
|
40323
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40324
|
+
await ctx.execute({
|
|
40325
|
+
method: "POST",
|
|
40326
|
+
path: "/v1/ai/billing/costs/items",
|
|
40327
|
+
args,
|
|
40328
|
+
queryParamKeys: []
|
|
40329
|
+
});
|
|
40330
|
+
});
|
|
40331
|
+
resource.command("delete-agent-cost-catalog-item").description(`Close a custom AI cost item by its custom_item_id. History is kept; new calls on that pair go back to unpriced. An override id passed here is a 404.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40332
|
+
Examples:
|
|
40333
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id>
|
|
40334
|
+
hyperline ai-costs delete-agent-cost-catalog-item --id <id> --output json`).action(async (opts) => {
|
|
40335
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40336
|
+
if (!ctx) {
|
|
40337
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40338
|
+
process.exit(1);
|
|
40339
|
+
}
|
|
40340
|
+
const args = {};
|
|
40341
|
+
if (opts.id !== void 0)
|
|
40342
|
+
args.id = opts.id;
|
|
40343
|
+
if (!opts.yes) {
|
|
40344
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40345
|
+
if (!confirmed) {
|
|
40346
|
+
process.stdout.write("Aborted.\n");
|
|
40347
|
+
return;
|
|
40348
|
+
}
|
|
40349
|
+
}
|
|
40350
|
+
await ctx.execute({
|
|
40351
|
+
method: "DELETE",
|
|
40352
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40353
|
+
args,
|
|
40354
|
+
queryParamKeys: []
|
|
40355
|
+
});
|
|
40356
|
+
});
|
|
40357
|
+
resource.command("upsert-agent-cost-catalog-override").description(`Set this workspace's negotiated price for a registry AI model (input/output/cached/cache-write USD per 1M tokens, plus optional dimensions). Replaces any open override immediately; historical calls keep their original rate. A pair the registry does not know is refused \u2014 create a custom cost item instead.`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--model <value>", `Model identifier, or custom item identifier. Null on wildcard pricing rows.`).requiredOption("--input-per-m-tokens <value>", `Provider cost in USD per million input tokens, as an exact decimal string.`).requiredOption("--output-per-m-tokens <value>", `Provider cost in USD per million output tokens, as an exact decimal string.`).option("--cached-input-per-m-tokens <value>", `Provider cost in USD per million cached input tokens, as an exact decimal string.`).option("--cache-write-per-m-tokens <value>", `Provider cost in USD per million cache write tokens, as an exact decimal string.`).option("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40358
|
+
Examples:
|
|
40359
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens>
|
|
40360
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens> --cached-input-per-m-tokens <cached_input_per_m_tokens> --cache-write-per-m-tokens <cache_write_per_m_tokens>
|
|
40361
|
+
hyperline ai-costs upsert-agent-cost-catalog-override --provider <provider> --model <model> --input-per-m-tokens <input_per_m_tokens> --output-per-m-tokens <output_per_m_tokens> --output json`).action(async (opts) => {
|
|
40362
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40363
|
+
if (!ctx) {
|
|
40364
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40365
|
+
process.exit(1);
|
|
40366
|
+
}
|
|
40367
|
+
const args = {};
|
|
40368
|
+
if (opts.provider !== void 0)
|
|
40369
|
+
args.provider = opts.provider;
|
|
40370
|
+
if (opts.model !== void 0)
|
|
40371
|
+
args.model = opts.model;
|
|
40372
|
+
if (opts.inputPerMTokens !== void 0)
|
|
40373
|
+
args.input_per_m_tokens = opts.inputPerMTokens;
|
|
40374
|
+
if (opts.outputPerMTokens !== void 0)
|
|
40375
|
+
args.output_per_m_tokens = opts.outputPerMTokens;
|
|
40376
|
+
if (opts.cachedInputPerMTokens !== void 0)
|
|
40377
|
+
args.cached_input_per_m_tokens = opts.cachedInputPerMTokens;
|
|
40378
|
+
if (opts.cacheWritePerMTokens !== void 0)
|
|
40379
|
+
args.cache_write_per_m_tokens = opts.cacheWritePerMTokens;
|
|
40380
|
+
if (opts.dimensions !== void 0)
|
|
40381
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40382
|
+
await ctx.execute({
|
|
40383
|
+
method: "PUT",
|
|
40384
|
+
path: "/v1/ai/billing/costs/overrides",
|
|
40385
|
+
args,
|
|
40386
|
+
queryParamKeys: []
|
|
40387
|
+
});
|
|
40388
|
+
});
|
|
40389
|
+
resource.command("delete-agent-cost-catalog-override").description(`Close this workspace's negotiated price override by its override.id; pricing falls back to the global registry rate. A custom cost item id passed here is a 404.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
40390
|
+
Examples:
|
|
40391
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id>
|
|
40392
|
+
hyperline ai-costs delete-agent-cost-catalog-override --id <id> --output json`).action(async (opts) => {
|
|
40393
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40394
|
+
if (!ctx) {
|
|
40395
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40396
|
+
process.exit(1);
|
|
40397
|
+
}
|
|
40398
|
+
const args = {};
|
|
40399
|
+
if (opts.id !== void 0)
|
|
40400
|
+
args.id = opts.id;
|
|
40401
|
+
if (!opts.yes) {
|
|
40402
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
40403
|
+
if (!confirmed) {
|
|
40404
|
+
process.stdout.write("Aborted.\n");
|
|
40405
|
+
return;
|
|
40406
|
+
}
|
|
40407
|
+
}
|
|
40408
|
+
await ctx.execute({
|
|
40409
|
+
method: "DELETE",
|
|
40410
|
+
path: "/v1/ai/billing/costs/overrides/{id}",
|
|
40411
|
+
args,
|
|
40412
|
+
queryParamKeys: []
|
|
40413
|
+
});
|
|
40414
|
+
});
|
|
40415
|
+
resource.command("replace-agent-cost-catalog-item").description(`Replace a custom item's provider, item and dimensions, preserving historical prices and returning the new active custom_item_id.`).requiredOption("--id <value>", `id parameter`).requiredOption("--provider <value>", `AI model provider, or the vendor of a custom cost item. This is not an integration connection.`).requiredOption("--item <value>", `Custom item name matching the usage payload.`).requiredOption("--dimensions <json>", `Additional billable dimensions; each key matches a usage_extra key and rates use the owning card's units or USD for cost-catalog dimensions.`).addHelpText("after", `
|
|
40416
|
+
Examples:
|
|
40417
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions>
|
|
40418
|
+
hyperline ai-costs replace-agent-cost-catalog-item --id <id> --provider <provider> --item <item> --dimensions <dimensions> --output json`).action(async (opts) => {
|
|
40419
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40420
|
+
if (!ctx) {
|
|
40421
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40422
|
+
process.exit(1);
|
|
40423
|
+
}
|
|
40424
|
+
const args = {};
|
|
40425
|
+
if (opts.id !== void 0)
|
|
40426
|
+
args.id = opts.id;
|
|
40427
|
+
if (opts.provider !== void 0)
|
|
40428
|
+
args.provider = opts.provider;
|
|
40429
|
+
if (opts.item !== void 0)
|
|
40430
|
+
args.item = opts.item;
|
|
40431
|
+
if (opts.dimensions !== void 0)
|
|
40432
|
+
args.dimensions = JSON.parse(opts.dimensions);
|
|
40433
|
+
await ctx.execute({
|
|
40434
|
+
method: "PUT",
|
|
40435
|
+
path: "/v1/ai/billing/costs/items/{id}",
|
|
40272
40436
|
args,
|
|
40273
40437
|
queryParamKeys: []
|
|
40274
40438
|
});
|
|
@@ -41945,7 +42109,7 @@ Examples:
|
|
|
41945
42109
|
queryParamKeys: []
|
|
41946
42110
|
});
|
|
41947
42111
|
});
|
|
41948
|
-
resource.command("purchase-customer-credits").description(`Purchase credits for a customer. This generates an invoice and charges the customer. Returns the invoice ID and new balance.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--credit-count <number>", `Value indicating a number of credits to add. If \`price_id\` is defined, this value must correspond to a full credit pack for the price.`).option("--amount-excluding-tax <number>", `Custom amount for the added credits. Either \`amount_excluding_tax\` or \`price_id\` must be defined. Expressed in currency's smallest unit.`).option("--price-id <value>", `Price ID used to add credits. The price must be of type \`bundle\`. Either \`amount_excluding_tax\` or \`price_id\` must be defined.`).option("--expires-at <value>", `Expiration date for credits linked to this transaction. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
|
|
42112
|
+
resource.command("purchase-customer-credits").description(`Purchase credits for a customer. This generates an invoice and charges the customer's card immediately, granting the credits only once paid. Requires a card payment method (otherwise fails with reason \`payment_method_not_supported\`). Returns the invoice ID and new balance.`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--credit-count <number>", `Value indicating a number of credits to add. If \`price_id\` is defined, this value must correspond to a full credit pack for the price.`).option("--amount-excluding-tax <number>", `Custom amount for the added credits. Either \`amount_excluding_tax\` or \`price_id\` must be defined. Expressed in currency's smallest unit.`).option("--price-id <value>", `Price ID used to add credits. The price must be of type \`bundle\`. Either \`amount_excluding_tax\` or \`price_id\` must be defined.`).option("--expires-at <value>", `Expiration date for credits linked to this transaction. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).addHelpText("after", `
|
|
41949
42113
|
Examples:
|
|
41950
42114
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count>
|
|
41951
42115
|
hyperline customers-credits purchase-customer-credits --id <id> --product-id <productId> --credit-count <credit_count> --amount-excluding-tax <amount_excluding_tax> --price-id <price_id>
|
|
@@ -42047,7 +42211,7 @@ Examples:
|
|
|
42047
42211
|
queryParamKeys: []
|
|
42048
42212
|
});
|
|
42049
42213
|
});
|
|
42050
|
-
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.`).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", `
|
|
42214
|
+
resource.command("update-customer-credit-portal-settings").description(`Enable or disable customer portal credit top-ups for a customer and credit product, with the price configuration (or a custom price) the customer pays. Enabling requires the customer's credit balance for the product: create it first (createCustomerCredit, a 0 balance is fine).`).requiredOption("--id <value>", `id parameter`).requiredOption("--product-id <value>", `productId parameter`).requiredOption("--enabled", `Whether the customer can buy this credit product from the customer portal. Enabling requires a price: \`price_configuration_id\`, \`custom_price_configuration\`, or the price already set. Disabling clears the price and removes the customer's own price.`).option("--price-configuration-id <value>", `ID of one of the credit product's price configurations, in the customer's price book and currency, of type \`bundle\`, \`volume\` or \`bulk\`. Mutually exclusive with \`custom_price_configuration\`.`).option("--custom-price-configuration <json>", `A price of the customer's own, in the customer's currency, replacing any previous one. Same shape as a credit product price configuration. Mutually exclusive with \`price_configuration_id\`. It needs at least one price; \`unit_count\` is a whole number of at least 1; \`amount\` is never negative, a \`bundle\` pack is never free, and the price is not free altogether; volume tiers start at 0 and each starts where the previous one ends; bulk tiers are in increasing \`to\` order; only the last tier has \`to: null\`. Otherwise the request fails with reason \`invalid_custom_price\`.`).addHelpText("after", `
|
|
42051
42215
|
Examples:
|
|
42052
42216
|
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled
|
|
42053
42217
|
hyperline customers-credits update-customer-credit-portal-settings --id <id> --product-id <productId> --enabled --price-configuration-id <price_configuration_id> --custom-price-configuration <custom_price_configuration>
|
|
@@ -43204,7 +43368,7 @@ Examples:
|
|
|
43204
43368
|
queryParamKeys: []
|
|
43205
43369
|
});
|
|
43206
43370
|
});
|
|
43207
|
-
resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
|
|
43371
|
+
resource.command("void").description(`Void an invoice in to_pay status. Automatically generates a corresponding credit note. A zero-priced paid invoice can also be voided, without a credit note. Optionally send an email notification.`).requiredOption("--id <value>", `id parameter`).option("--send-email", `Indicates if an email for the generated credit note should be sent to the customer.`).addHelpText("after", `
|
|
43208
43372
|
Examples:
|
|
43209
43373
|
hyperline invoices void --id <id>
|
|
43210
43374
|
hyperline invoices void --id <id> --send-email
|
|
@@ -43513,7 +43677,7 @@ Examples:
|
|
|
43513
43677
|
queryParamKeys: []
|
|
43514
43678
|
});
|
|
43515
43679
|
});
|
|
43516
|
-
resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity
|
|
43680
|
+
resource.command("create-invoicing-entity").description(`Create a new invoicing entity with company details, address, and tax configuration. Used as the sender on invoices.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).requiredOption("--name <value>", `The name of the invoicing entity.`).option("--trade-name <value>", `The trade name of the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).requiredOption("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).requiredOption("--currency <value>", `The currency code that the invoicing entity operates in.`).requiredOption("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--next-invoice-number <number>", `The next invoice number to be used.`).option("--next-credit-note-number <number>", `The next credit note number to be used.`).option("--next-document-number <number>", `The next document number to be used.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--quote-footer <value>", `The footer text to be used in quotes.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
|
|
43517
43681
|
Examples:
|
|
43518
43682
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
43519
43683
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -43596,6 +43760,8 @@ Examples:
|
|
|
43596
43760
|
args.credit_note_wallet_refund_enabled = true;
|
|
43597
43761
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43598
43762
|
args.standalone_credit_note_creation_enabled = true;
|
|
43763
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43764
|
+
args.fx_conversion_display_enabled = true;
|
|
43599
43765
|
await ctx.execute({
|
|
43600
43766
|
method: "POST",
|
|
43601
43767
|
path: "/v1/invoicing-entities",
|
|
@@ -43603,7 +43769,7 @@ Examples:
|
|
|
43603
43769
|
queryParamKeys: []
|
|
43604
43770
|
});
|
|
43605
43771
|
});
|
|
43606
|
-
resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity
|
|
43772
|
+
resource.command("update-invoicing-entity").description(`Update an existing invoicing entity's details (address, tax ID, branding, etc.).`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `The name of the invoicing entity.`).option("--registration-number <value>", `The registration number of the invoicing entity.`).option("--tax-id <value>", `The tax identification number of the invoicing entity.`).option("--billing-email <value>", `The billing email address for the invoicing entity.`).option("--timezone <value>", `The timezone the invoicing entity operates in.`).option("--language <value>", `The default language of the invoicing entity.`).option("--is-default", `Flag to indicate if this is the default invoicing entity. If true, it will switch the other existing invoicing entities to non-default.`).option("--address-line1 <value>", `The first line of the address for the invoicing entity.`).option("--address-line2 <value>", `The second line of the address for the invoicing entity.`).option("--zip-code <value>", `The postal code for the invoicing entity's address.`).option("--state <value>", `The state or province of the invoicing entity.`).option("--city <value>", `The city of the invoicing entity.`).option("--country <value>", `The country in which the invoicing entity is registered. It cannot be changed after creation.`).option("--currency <value>", `The currency code that the invoicing entity operates in.`).option("--accounting-currency <value>", `The currency used for accounting purposes.`).option("--invoice-number-pattern <value>", `The pattern used for generating invoice numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--credit-note-number-pattern <value>", `The pattern used for generating credit note numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--document-number-pattern <value>", `The pattern used for generating document numbers. Available dynamic elements: number {number} (mandatory), year {YYYY}, month {MM} and day {DD}.`).option("--default-payment-delay <number>", `The default payment term in days.`).option("--invoice-grace-period-duration <number>", `The grace period duration in days.`).option("--invoice-payment-initiation-delay <number>", `The payment initiation delay in days for the invoices.`).option("--document-payment-initiation-delay <number>", `The payment initiation delay in days for the custom documents.`).option("--invoice-late-fees <value>", `The late fees applicable to the invoices.`).option("--invoice-footer <value>", `The footer text to be used in invoices.`).option("--document-footer <value>", `The footer text to be used in documents. If not specified, the invoice footer will be used.`).option("--logo-url <value>", `URL of the logo to be used in invoices.`).option("--favicon-url <value>", `URL of the logo to be used as favicon.`).option("--brand-color <value>", `Brand color to be used in invoices (hexadecimal color code).`).option("--forced-customer-type <value>", `Forces all customers created under this invoicing entity to have this type. Set to null to allow users to choose.`).option("--credit-note-wallet-refund-enabled", `When enabled and no \`refund_method\` is specified, credit note refunds default to the customer's wallet, including credit notes generated by subscription updates, cancellations, and transitions. An explicit \`refund_method\` always wins. Requires wallets to be enabled at the workspace level.`).option("--standalone-credit-note-creation-enabled", `Whether credit notes without an original invoice can be created under this invoicing entity. Defaults to \`true\`.`).option("--fx-conversion-display-enabled", `Whether the exchange rate and converted amount in the accounting currency are displayed on the invoice PDF when the invoice currency differs from the accounting currency. The conversion data is still stored and returned by the API when disabled. Defaults to \`true\`.`).addHelpText("after", `
|
|
43607
43773
|
Examples:
|
|
43608
43774
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
43609
43775
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -43678,6 +43844,8 @@ Examples:
|
|
|
43678
43844
|
args.credit_note_wallet_refund_enabled = true;
|
|
43679
43845
|
if (opts.standaloneCreditNoteCreationEnabled !== void 0)
|
|
43680
43846
|
args.standalone_credit_note_creation_enabled = true;
|
|
43847
|
+
if (opts.fxConversionDisplayEnabled !== void 0)
|
|
43848
|
+
args.fx_conversion_display_enabled = true;
|
|
43681
43849
|
await ctx.execute({
|
|
43682
43850
|
method: "PUT",
|
|
43683
43851
|
path: "/v1/invoicing-entities/{id}",
|
|
@@ -43755,20 +43923,20 @@ Examples:
|
|
|
43755
43923
|
]
|
|
43756
43924
|
});
|
|
43757
43925
|
});
|
|
43758
|
-
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("--
|
|
43926
|
+
resource.command("get-monitoring-analysis").description(`Get one customer health analysis by ID: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
43759
43927
|
Examples:
|
|
43760
|
-
hyperline monitoring get-monitoring-analysis --
|
|
43928
|
+
hyperline monitoring get-monitoring-analysis --id <id>`).action(async (opts) => {
|
|
43761
43929
|
const ctx = resource.parent?.opts()._ctx;
|
|
43762
43930
|
if (!ctx) {
|
|
43763
43931
|
process.stderr.write("Error: Not authenticated\n");
|
|
43764
43932
|
process.exit(1);
|
|
43765
43933
|
}
|
|
43766
43934
|
const args = {};
|
|
43767
|
-
if (opts.
|
|
43768
|
-
args.
|
|
43935
|
+
if (opts.id !== void 0)
|
|
43936
|
+
args.id = opts.id;
|
|
43769
43937
|
await ctx.execute({
|
|
43770
43938
|
method: "GET",
|
|
43771
|
-
path: "/v1/agents/monitoring/analyses/{
|
|
43939
|
+
path: "/v1/agents/monitoring/analyses/{id}",
|
|
43772
43940
|
args,
|
|
43773
43941
|
queryParamKeys: []
|
|
43774
43942
|
});
|
|
@@ -44492,7 +44660,7 @@ Quote status.
|
|
|
44492
44660
|
- \`draft\`: The quote is a draft.
|
|
44493
44661
|
- \`approved\`: The quote is approved and ready to be sent to the customer.
|
|
44494
44662
|
- \`pending_signature\`: The quote is awaiting the customer's signature.
|
|
44495
|
-
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44663
|
+
`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation. If not specified, the Hyperline account owner will be assigned.`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity attached to the quote.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. For subscription quotes, defaults to the computed subscription value if not specified. For one-off quotes, this field is ignored \u2014 the amount is always derived from the linked invoice's \`amount_excluding_tax\`.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44496
44664
|
|
|
44497
44665
|
- \`all\`: Display all pricing tiers.
|
|
44498
44666
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
@@ -44784,7 +44952,7 @@ Examples:
|
|
|
44784
44952
|
queryParamKeys: []
|
|
44785
44953
|
});
|
|
44786
44954
|
});
|
|
44787
|
-
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44955
|
+
resource.command("update").description(`Update quote-level fields before a quote is finalized. On draft quotes, pass \`subscription\` inline \u2014 the full configuration, not a reference to an existing subscription \u2014 to create or replace the draft subscription configuration, or pass \`invoice\` on a one-off quote to replace the linked draft invoice. For quotes created from \`template_id\`, use this tool for subscription overrides such as dates, contract terms, products, phases, coupons, discounts, prices, seats, and subscription custom properties. Omit \`terms\`, \`comments\`, and \`contract_clause_ids\` unless deliberately overriding template content. Discover product and price configuration IDs with \`get_catalog_context\`.`).requiredOption("--id <value>", `id parameter`).option("--owner-email <value>", `Email address of the Hyperline user acting as the quote owner. The owner requests approval when the quote is finalized using an API key or finalized during creation.`).option("--catalog-version-id <value>", `ID of a published catalog version to price every product of the quote from, instead of the live products catalog. A product's own \`catalog_version_id\` takes precedence, and explicit \`prices\` always win over both.`).option("--comments <value>", `Custom comments displayed on the quote.`).option("--terms <value>", `Custom quotation terms.`).option("--amount <number>", `Estimated contract value. Set to \`null\` to clear the manually set value.`).option("--collect-payment-details <value>", `Collect customer payment method mandate during signature flow or not.`).option("--collect-custom-property-ids <json>", `IDs of the customer custom properties required to be filled during the signature flow.`).option("--contract-clause-ids <json>", `IDs of the contract clauses used in the quote terms.`).option("--require-tax-id <value>", `Require the customer to provide a tax ID during the signature flow.`).option("--display-quote-value <value>", `Display the total quote value on the quote.`).option("--display-quote-value-with-tax <value>", `Display the total quote value including tax on the quote. Only applies to \`one_off\` quotes.`).option("--display-taxes <value>", `Display tax breakdown on the quote.`).option("--display-price-tiers <value>", `Controls which price tiers are displayed on the quote.
|
|
44788
44956
|
|
|
44789
44957
|
- \`all\`: Display all pricing tiers.
|
|
44790
44958
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
@@ -44893,46 +45061,10 @@ Examples:
|
|
|
44893
45061
|
queryParamKeys: ["locale"]
|
|
44894
45062
|
});
|
|
44895
45063
|
});
|
|
44896
|
-
resource.command("
|
|
44897
|
-
Examples:
|
|
44898
|
-
hyperline quotes approve --id <id>
|
|
44899
|
-
hyperline quotes approve --id <id> --output json`).action(async (opts) => {
|
|
44900
|
-
const ctx = resource.parent?.opts()._ctx;
|
|
44901
|
-
if (!ctx) {
|
|
44902
|
-
process.stderr.write("Error: Not authenticated\n");
|
|
44903
|
-
process.exit(1);
|
|
44904
|
-
}
|
|
44905
|
-
const args = {};
|
|
44906
|
-
if (opts.id !== void 0)
|
|
44907
|
-
args.id = opts.id;
|
|
44908
|
-
await ctx.execute({
|
|
44909
|
-
method: "POST",
|
|
44910
|
-
path: "/v1/quotes/{id}/approve",
|
|
44911
|
-
args,
|
|
44912
|
-
queryParamKeys: []
|
|
44913
|
-
});
|
|
44914
|
-
});
|
|
44915
|
-
resource.command("get-quote-approval").description(`Read quote approval without submitting it. 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", `
|
|
44916
|
-
Examples:
|
|
44917
|
-
hyperline quotes get-quote-approval --id <id>`).action(async (opts) => {
|
|
44918
|
-
const ctx = resource.parent?.opts()._ctx;
|
|
44919
|
-
if (!ctx) {
|
|
44920
|
-
process.stderr.write("Error: Not authenticated\n");
|
|
44921
|
-
process.exit(1);
|
|
44922
|
-
}
|
|
44923
|
-
const args = {};
|
|
44924
|
-
if (opts.id !== void 0)
|
|
44925
|
-
args.id = opts.id;
|
|
44926
|
-
await ctx.execute({
|
|
44927
|
-
method: "GET",
|
|
44928
|
-
path: "/v1/quotes/{id}/approval",
|
|
44929
|
-
args,
|
|
44930
|
-
queryParamKeys: []
|
|
44931
|
-
});
|
|
44932
|
-
});
|
|
44933
|
-
resource.command("finalize").description(`Finalize a draft quote. The quote is submitted for approval when approval is required, otherwise it becomes approved and ready to be sent for signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45064
|
+
resource.command("finalize").description(`Finalize a draft quote. The quote is submitted for approval when approval is required, otherwise it becomes approved and ready to be sent for signature.`).requiredOption("--id <value>", `id parameter`).option("--requester-comment <value>", `Internal comment supplied by the requester for approvers; not displayed on the customer-facing quote.`).addHelpText("after", `
|
|
44934
45065
|
Examples:
|
|
44935
45066
|
hyperline quotes finalize --id <id>
|
|
45067
|
+
hyperline quotes finalize --id <id> --requester-comment <requester_comment>
|
|
44936
45068
|
hyperline quotes finalize --id <id> --output json`).action(async (opts) => {
|
|
44937
45069
|
const ctx = resource.parent?.opts()._ctx;
|
|
44938
45070
|
if (!ctx) {
|
|
@@ -44942,6 +45074,8 @@ Examples:
|
|
|
44942
45074
|
const args = {};
|
|
44943
45075
|
if (opts.id !== void 0)
|
|
44944
45076
|
args.id = opts.id;
|
|
45077
|
+
if (opts.requesterComment !== void 0)
|
|
45078
|
+
args.requester_comment = opts.requesterComment;
|
|
44945
45079
|
await ctx.execute({
|
|
44946
45080
|
method: "POST",
|
|
44947
45081
|
path: "/v1/quotes/{id}/finalize",
|
|
@@ -45101,6 +45235,48 @@ Examples:
|
|
|
45101
45235
|
});
|
|
45102
45236
|
}
|
|
45103
45237
|
|
|
45238
|
+
// build/commands/generated/quotes-approvals.js
|
|
45239
|
+
function registerQuotes_ApprovalsCommands(parent) {
|
|
45240
|
+
const resource = parent.command("quotes-approvals").description("Manage quotes > approvals");
|
|
45241
|
+
resource.command("approve-quote").description(`Approve a quote as the account owner. This is a prerequisite before sending the quote for customer signature.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45242
|
+
Examples:
|
|
45243
|
+
hyperline quotes-approvals approve-quote --id <id>
|
|
45244
|
+
hyperline quotes-approvals approve-quote --id <id> --output json`).action(async (opts) => {
|
|
45245
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45246
|
+
if (!ctx) {
|
|
45247
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45248
|
+
process.exit(1);
|
|
45249
|
+
}
|
|
45250
|
+
const args = {};
|
|
45251
|
+
if (opts.id !== void 0)
|
|
45252
|
+
args.id = opts.id;
|
|
45253
|
+
await ctx.execute({
|
|
45254
|
+
method: "POST",
|
|
45255
|
+
path: "/v1/quotes/{id}/approve",
|
|
45256
|
+
args,
|
|
45257
|
+
queryParamKeys: []
|
|
45258
|
+
});
|
|
45259
|
+
});
|
|
45260
|
+
resource.command("get-quote-approvals").description(`Read quote approvals without submitting the quote. Returns a newest-first array, currently containing one element. Draft and changes-requested quotes return current approval routing in preview mode; other statuses return the recorded request, ordered steps and decisions in execution mode. A null request means no workflow execution was recorded, including automatic and legacy approval.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45261
|
+
Examples:
|
|
45262
|
+
hyperline quotes-approvals get-quote-approvals --id <id>`).action(async (opts) => {
|
|
45263
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45264
|
+
if (!ctx) {
|
|
45265
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45266
|
+
process.exit(1);
|
|
45267
|
+
}
|
|
45268
|
+
const args = {};
|
|
45269
|
+
if (opts.id !== void 0)
|
|
45270
|
+
args.id = opts.id;
|
|
45271
|
+
await ctx.execute({
|
|
45272
|
+
method: "GET",
|
|
45273
|
+
path: "/v1/quotes/{id}/approvals",
|
|
45274
|
+
args,
|
|
45275
|
+
queryParamKeys: []
|
|
45276
|
+
});
|
|
45277
|
+
});
|
|
45278
|
+
}
|
|
45279
|
+
|
|
45104
45280
|
// build/commands/generated/quotes-templates.js
|
|
45105
45281
|
function registerQuotes_TemplatesCommands(parent) {
|
|
45106
45282
|
const resource = parent.command("quotes-templates").description("Manage quotes > templates");
|
|
@@ -47001,6 +47177,7 @@ function registerAllCommands(program2) {
|
|
|
47001
47177
|
registerAggregatorsCommands(program2);
|
|
47002
47178
|
registerAggregators_UsageCommands(program2);
|
|
47003
47179
|
registerAi_BillingCommands(program2);
|
|
47180
|
+
registerAi_CostsCommands(program2);
|
|
47004
47181
|
registerAnalyticsCommands(program2);
|
|
47005
47182
|
registerBank_AccountsCommands(program2);
|
|
47006
47183
|
registerCompaniesCommands(program2);
|
|
@@ -47025,6 +47202,7 @@ function registerAllCommands(program2) {
|
|
|
47025
47202
|
registerPrice_ConfigurationsCommands(program2);
|
|
47026
47203
|
registerQuotesCommands(program2);
|
|
47027
47204
|
registerQuotes_TemplatesCommands(program2);
|
|
47205
|
+
registerQuotes_ApprovalsCommands(program2);
|
|
47028
47206
|
registerSubscriptions_TemplatesCommands(program2);
|
|
47029
47207
|
registerSubscriptionsCommands(program2);
|
|
47030
47208
|
registerSubscriptions_TransitionsCommands(program2);
|
|
@@ -63044,6 +63222,7 @@ var de = {
|
|
|
63044
63222
|
"accounting.revrec.discountDebitLineDescription": "Abgegrenzten Rabatt reduzieren \u2013 Zeitplan {{scheduleId}}, Zeitraum {{periodDate}}",
|
|
63045
63223
|
"accounting.revrec.entryDescription": "Umsatzrealisierung f\xFCr Zeitplan {{scheduleId}}, Zeitraum {{periodStart}} - {{periodEnd}}",
|
|
63046
63224
|
"accounting.standaloneCreditNotePosted.entryDescription": "Gutschrift {{creditNoteId}}",
|
|
63225
|
+
"accounting.transactionChargedBack.entryDescription": "R\xFCckbuchung f\xFCr Rechnung {{invoiceId}}",
|
|
63047
63226
|
"accounting.transactionRefunded.entryDescription": "R\xFCckerstattung f\xFCr Rechnung {{invoiceId}}",
|
|
63048
63227
|
"accounting.transactionSettled.entryDescription": "Zahlungsabwicklung f\xFCr Rechnung {{invoiceId}}",
|
|
63049
63228
|
"creditNotes.refundChargeName": "R\xFCckerstattung f\xFCr die Rechnung",
|
|
@@ -63114,6 +63293,7 @@ var en = {
|
|
|
63114
63293
|
"accounting.invoicePosted.entryDescription": "Posting entry for Invoice {{invoiceId}} issued",
|
|
63115
63294
|
"accounting.transactionSettled.entryDescription": "Payment settlement for Invoice {{invoiceId}}",
|
|
63116
63295
|
"accounting.transactionRefunded.entryDescription": "Refund for Invoice {{invoiceId}}",
|
|
63296
|
+
"accounting.transactionChargedBack.entryDescription": "Chargeback for Invoice {{invoiceId}}",
|
|
63117
63297
|
"accounting.creditNotePosted.entryDescription": "Credit note {{creditNoteId}} for Invoice {{invoiceId}}",
|
|
63118
63298
|
"accounting.standaloneCreditNotePosted.entryDescription": "Credit note {{creditNoteId}}",
|
|
63119
63299
|
"accounting.revrec.entryDescription": "Revenue recognition for schedule {{scheduleId}}, period {{periodStart}} - {{periodEnd}}",
|
|
@@ -63138,6 +63318,7 @@ var es = {
|
|
|
63138
63318
|
"accounting.revrec.discountDebitLineDescription": "Disminuci\xF3n de descuento diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63139
63319
|
"accounting.revrec.entryDescription": "Reconocimiento de ingresos para el cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63140
63320
|
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63321
|
+
"accounting.transactionChargedBack.entryDescription": "Contracargo de la factura {{invoiceId}}",
|
|
63141
63322
|
"accounting.transactionRefunded.entryDescription": "Reembolso de la factura {{invoiceId}}",
|
|
63142
63323
|
"accounting.transactionSettled.entryDescription": "Liquidaci\xF3n de pago para la factura {{invoiceId}}",
|
|
63143
63324
|
"creditNotes.refundChargeName": "Reembolso por factura",
|
|
@@ -63185,6 +63366,7 @@ var fr = {
|
|
|
63185
63366
|
"accounting.revrec.discountDebitLineDescription": "Diminution des remises diff\xE9r\xE9es \u2013 \xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodDate}}",
|
|
63186
63367
|
"accounting.revrec.entryDescription": "Reconnaissance du chiffre d'affaires pour l'\xE9ch\xE9ancier {{scheduleId}}, p\xE9riode {{periodStart}} - {{periodEnd}}",
|
|
63187
63368
|
"accounting.standaloneCreditNotePosted.entryDescription": "Avoir {{creditNoteId}}",
|
|
63369
|
+
"accounting.transactionChargedBack.entryDescription": "R\xE9trofacturation de la facture {{invoiceId}}",
|
|
63188
63370
|
"accounting.transactionRefunded.entryDescription": "Remboursement de la facture {{invoiceId}}",
|
|
63189
63371
|
"accounting.transactionSettled.entryDescription": "R\xE8glement de la facture {{invoiceId}}",
|
|
63190
63372
|
"creditNotes.refundChargeName": "Remboursement pour facture",
|
|
@@ -63232,6 +63414,7 @@ var it = {
|
|
|
63232
63414
|
"accounting.revrec.discountDebitLineDescription": "Diminuzione dello sconto differito \u2013 programma {{scheduleId}}, periodo {{periodDate}}",
|
|
63233
63415
|
"accounting.revrec.entryDescription": "Riconoscimento dei ricavi per il programma {{scheduleId}}, periodo {{periodStart}} - {{periodEnd}}",
|
|
63234
63416
|
"accounting.standaloneCreditNotePosted.entryDescription": "Nota di credito {{creditNoteId}}",
|
|
63417
|
+
"accounting.transactionChargedBack.entryDescription": "Riaddebito per la fattura {{invoiceId}}",
|
|
63235
63418
|
"accounting.transactionRefunded.entryDescription": "Rimborso per la fattura {{invoiceId}}",
|
|
63236
63419
|
"accounting.transactionSettled.entryDescription": "Regolamento pagamento per la fattura {{invoiceId}}",
|
|
63237
63420
|
"creditNotes.refundChargeName": "Rimborso per fattura",
|
|
@@ -63279,6 +63462,7 @@ var lt = {
|
|
|
63279
63462
|
"accounting.revrec.discountDebitLineDescription": "Atid\u0117tosios nuolaidos suma\u017Einimas \u2013 grafikas {{scheduleId}}, laikotarpis {{periodDate}}",
|
|
63280
63463
|
"accounting.revrec.entryDescription": "Pajam\u0173 pripa\u017Einimas pagal grafik\u0105 {{scheduleId}}, laikotarpis {{periodStart}}\u2013{{periodEnd}}",
|
|
63281
63464
|
"accounting.standaloneCreditNotePosted.entryDescription": "Kreditin\u0117 s\u0105skaita {{creditNoteId}}",
|
|
63465
|
+
"accounting.transactionChargedBack.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} u\u017Egin\u010Dyto mok\u0117jimo gr\u0105\u017Einimas",
|
|
63282
63466
|
"accounting.transactionRefunded.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} gr\u0105\u017Einimas",
|
|
63283
63467
|
"accounting.transactionSettled.entryDescription": "S\u0105skaitos fakt\u016Bros {{invoiceId}} mok\u0117jimo sudengimas",
|
|
63284
63468
|
"creditNotes.refundChargeName": "S\u0105skaitos fakt\u016Bros gr\u0105\u017Einimas",
|
|
@@ -63326,6 +63510,7 @@ var nl = {
|
|
|
63326
63510
|
"accounting.revrec.discountDebitLineDescription": "Uitgestelde korting verlagen \u2013 schema {{scheduleId}}, periode {{periodDate}}",
|
|
63327
63511
|
"accounting.revrec.entryDescription": "Omzeterkenning voor schema {{scheduleId}}, periode {{periodStart}} - {{periodEnd}}",
|
|
63328
63512
|
"accounting.standaloneCreditNotePosted.entryDescription": "Creditnota {{creditNoteId}}",
|
|
63513
|
+
"accounting.transactionChargedBack.entryDescription": "Terugboeking voor factuur {{invoiceId}}",
|
|
63329
63514
|
"accounting.transactionRefunded.entryDescription": "Terugbetaling voor factuur {{invoiceId}}",
|
|
63330
63515
|
"accounting.transactionSettled.entryDescription": "Betalingsafwikkeling voor factuur {{invoiceId}}",
|
|
63331
63516
|
"creditNotes.refundChargeName": "Terugbetaling voor factuur",
|
|
@@ -63373,6 +63558,7 @@ var pl = {
|
|
|
63373
63558
|
"accounting.revrec.discountDebitLineDescription": "Zmniejszenie odroczonego rabatu \u2013 harmonogram {{scheduleId}}, okres {{periodDate}}",
|
|
63374
63559
|
"accounting.revrec.entryDescription": "Rozpoznanie przychodu dla harmonogramu {{scheduleId}}, okres {{periodStart}} - {{periodEnd}}",
|
|
63375
63560
|
"accounting.standaloneCreditNotePosted.entryDescription": "Nota kredytowa {{creditNoteId}}",
|
|
63561
|
+
"accounting.transactionChargedBack.entryDescription": "Obci\u0105\u017Cenie zwrotne za faktur\u0119 {{invoiceId}}",
|
|
63376
63562
|
"accounting.transactionRefunded.entryDescription": "Zwrot za faktur\u0119 {{invoiceId}}",
|
|
63377
63563
|
"accounting.transactionSettled.entryDescription": "Rozliczenie p\u0142atno\u015Bci dla faktury {{invoiceId}}",
|
|
63378
63564
|
"creditNotes.refundChargeName": "Zwrot za faktur\u0119",
|
|
@@ -63420,6 +63606,7 @@ var pt = {
|
|
|
63420
63606
|
"accounting.revrec.discountDebitLineDescription": "Diminui\xE7\xE3o do desconto diferido \u2013 cronograma {{scheduleId}}, per\xEDodo {{periodDate}}",
|
|
63421
63607
|
"accounting.revrec.entryDescription": "Reconhecimento de receita para o cronograma {{scheduleId}}, per\xEDodo {{periodStart}} - {{periodEnd}}",
|
|
63422
63608
|
"accounting.standaloneCreditNotePosted.entryDescription": "Nota de cr\xE9dito {{creditNoteId}}",
|
|
63609
|
+
"accounting.transactionChargedBack.entryDescription": "Estorno da fatura {{invoiceId}}",
|
|
63423
63610
|
"accounting.transactionRefunded.entryDescription": "Reembolso da fatura {{invoiceId}}",
|
|
63424
63611
|
"accounting.transactionSettled.entryDescription": "Liquida\xE7\xE3o de pagamento para a fatura {{invoiceId}}",
|
|
63425
63612
|
"creditNotes.refundChargeName": "Reembolso pela fatura",
|