@hyperline/cli 0.1.0-build.1.194f983 → 0.1.0-build.1.1a16c74
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 +686 -125
- package/dist/external-deps.json +2 -2
- package/package.json +3 -3
|
@@ -39087,7 +39087,7 @@ Examples:
|
|
|
39087
39087
|
queryParamKeys: []
|
|
39088
39088
|
});
|
|
39089
39089
|
});
|
|
39090
|
-
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.)
|
|
39090
|
+
resource.command("create").description(`Create a new accounting rule for account code routing or journal posting, with the filters, accounts and required fields the rule editor applies to its category.`).option("--ledger-id <value>", `Identifier of the ledger this rule belongs to.`).option("--name <value>", `Optional user-defined name for the rule.`).requiredOption("--category <value>", `Rule category (e.g. accounting_software, invoice_posted).`).requiredOption("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.). \`recurring\` matches every interval except \`once\` and requires a null \`interval_count\`. \`null\` matches every interval, including \`once\`.`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39091
39091
|
Examples:
|
|
39092
39092
|
hyperline accounting-rules create --category <category> --priority <priority>
|
|
39093
39093
|
hyperline accounting-rules create --category <category> --priority <priority> --ledger-id <ledger_id> --name <name>
|
|
@@ -39187,7 +39187,7 @@ Examples:
|
|
|
39187
39187
|
queryParamKeys: []
|
|
39188
39188
|
});
|
|
39189
39189
|
});
|
|
39190
|
-
resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.)
|
|
39190
|
+
resource.command("update").description(`Update an existing accounting rule, with the filters, accounts and required fields the rule editor applies to its category.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Optional user-defined name for the rule.`).option("--category <value>", `Rule category. Cannot be changed after creation, must match the current category when sent.`).option("--priority <number>", `Override order. Higher priority wins when multiple rules match.`).option("--product-ids <json>", `Product IDs to match. Empty means match all.`).option("--product-types <json>", `Product types to match. Allowed values: flat_fee, dynamic, seat, credit. Empty means match all.`).option("--customer-ids <json>", `Customer IDs for customer-specific overrides.`).option("--currencies <json>", `Currency codes to match (e.g. EUR, USD).`).option("--countries <json>", `Country codes for jurisdiction-based overrides.`).option("--tax-schemes <json>", `Tax schemes to match. A context without a tax scheme never matches a rule that sets this filter. Empty means match all.`).option("--tax-territories <json>", `Tax territory country codes to match. A context without a tax territory never matches a rule that sets this filter. Empty means match all.`).option("--tax-rate-classes <json>", `Tax rate classes to match. A context without a tax rate class never matches a rule that sets this filter. Empty means match all.`).option("--coupon-ids <json>", `Coupon IDs to match. Empty means match all.`).option("--client-provider-ids <json>", `Client provider IDs to match. Empty means match all.`).option("--payment-method-types <json>", `Payment method types to match. Empty means match all.`).option("--bank-account-ids <json>", `Bank account IDs to match. Empty means match all.`).option("--invoice-types <json>", `Invoice kinds to match: \`invoice\` or \`document\`. Refunds and other standard invoices match as \`invoice\`. A context without an invoice, such as a PSP payout, never matches a rule that sets this filter. Empty means match all.`).option("--interval-period <value>", `Billing interval period filter (months, years, etc.). \`recurring\` matches every interval except \`once\` and requires a null \`interval_count\`. \`null\` matches every interval, including \`once\`.`).option("--interval-count <number>", `Billing interval count filter.`).option("--custom-property-filters <json>", `Invoice custom property filters. A rule matches only when every entry matches (AND across entries), and an entry matches when the invoice value is one of its \`values\` (any-of). Matching is strict: an invoice without a value for the property never matches. Each entry adds 10 to the \`suggested_priority\` returned by the rule defaults endpoint. Allowed on invoice_posted, invoice_settled, revenue_recognition, credit_note_created and accounting_software (invoice side) rules. An invoice_settled rule with filters cannot set \`payments_clearing_ledger_account_id\`, as PSP payouts are booked without the invoice. Empty means match all.`).option("--revenue-ledger-account-id <value>", `Revenue ledger account ID used for invoice line revenue routing. Must be a \`revenue\` account. On accounting_software rules, a \`revenue\` or \`contra_revenue\` account with entity_type invoice, an \`asset\` or \`contra_asset\` account with entity_type payment.`).option("--deferred-revenue-ledger-account-id <value>", `Deferred revenue ledger account ID used before revenue is recognized. Must be a \`liability\` account.`).option("--deferred-discount-ledger-account-id <value>", `Deferred discount ledger account ID used before discounts are recognized. Must be an \`asset\` or \`contra_liability\` account.`).option("--contra-revenue-ledger-account-id <value>", `Contra revenue ledger account ID used for amounts that reduce revenue. Must be a \`contra_revenue\` account.`).option("--discount-ledger-account-id <value>", `Discount ledger account ID used for recognized discounts. Must be a \`contra_revenue\` account.`).option("--ar-ledger-account-id <value>", `Accounts receivable ledger account ID used for invoice posting. Must be an \`asset\` account.`).option("--cash-ledger-account-id <value>", `Cash ledger account ID used for payment settlement. Must be an \`asset\` account.`).option("--payments-clearing-ledger-account-id <value>", `Payments clearing ledger account ID used while payments settle. Must be an \`asset\` account.`).option("--output-tax-ledger-account-id <value>", `Output tax ledger account ID used for tax liability. Must be a \`liability\` account.`).option("--uncollectible-debit-ledger-account-id <value>", `Ledger account ID debited when an invoice becomes uncollectible. Must be an \`asset\` account, for doubtful-receivable reclassification, or an \`expense\` account, for direct write-off.`).option("--allowance-for-doubtful-accounts-id <value>", `Allowance for doubtful accounts ledger account ID, set on credit_note_created rules. Must be a \`contra_asset\` account.`).option("--provider-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment provider fees when a payment settles. Must be an \`expense\` account.`).option("--payment-processing-fees-expense-ledger-account-id <value>", `Expense ledger account ID debited for payment processing fees when a payment settles. Takes precedence over \`provider_fees_expense_ledger_account_id\` when set by the same or a higher priority rule. Must be an \`expense\` account.`).option("--payment-processing-fees-revenue-ledger-account-id <value>", `Payment processing fees revenue ledger account ID, set on invoice_settled rules. Must be a \`revenue\` account.`).option("--customer-credits-ledger-account-id <value>", `Customer credits ledger account ID used for credit balances. Must be a \`liability\` account.`).option("--rev-rec-method <value>", `Revenue recognition method.`).option("--rev-rec-granularity <value>", `Recognition period granularity. Used when \`rev_rec_method\` is \`over_time\`.`).option("--rev-rec-point-in-time-basis <value>", `Date revenue is recognized on. Used when \`rev_rec_method\` is \`point_in_time\`.`).option("--discount-recognition-method <value>", `Method used to recognize discounts.`).option("--journal-id <value>", `Journal ID used to route entries in the accounting provider.`).option("--entity-type <value>", `Entity type the rule applies to.`).addHelpText("after", `
|
|
39191
39191
|
Examples:
|
|
39192
39192
|
hyperline accounting-rules update --id <id>
|
|
39193
39193
|
hyperline accounting-rules update --id <id> --name <name> --category <category>
|
|
@@ -40673,9 +40673,88 @@ Examples:
|
|
|
40673
40673
|
});
|
|
40674
40674
|
}
|
|
40675
40675
|
|
|
40676
|
+
// build/commands/generated/approval-requests.js
|
|
40677
|
+
function registerApproval_RequestsCommands(parent) {
|
|
40678
|
+
const resource = parent.command("approval-requests").description("Manage approval > requests");
|
|
40679
|
+
resource.command("get").description(`Retrieve an approval request and its decisions.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
40680
|
+
Examples:
|
|
40681
|
+
hyperline approval-requests get --id <id>`).action(async (opts) => {
|
|
40682
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40683
|
+
if (!ctx) {
|
|
40684
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40685
|
+
process.exit(1);
|
|
40686
|
+
}
|
|
40687
|
+
const args = {};
|
|
40688
|
+
if (opts.id !== void 0)
|
|
40689
|
+
args.id = opts.id;
|
|
40690
|
+
await ctx.execute({
|
|
40691
|
+
method: "GET",
|
|
40692
|
+
path: "/v1/approvals/requests/{id}",
|
|
40693
|
+
args,
|
|
40694
|
+
queryParamKeys: []
|
|
40695
|
+
});
|
|
40696
|
+
});
|
|
40697
|
+
resource.command("approve").description(`Approve the current step of an approval request.`).requiredOption("--id <value>", `id parameter`).requiredOption("--step-id <value>", `Expected current workflow step ID. A stale step is rejected instead of deciding the next step.`).option("--approver-id <value>", `Identifier of the account member making the decision. Supply exactly one of approver_id or approver_email. With a user token, this must be the authenticated user.`).option("--comment <value>", `Decision comment. Required and nonblank when rejecting; optional when approving. Trimmed, with a maximum of 2000 characters.`).option("--approver-email <value>", `Email of the account member making the decision, matched case-insensitively. Supply exactly one of approver_id or approver_email. With a user token, this must be the authenticated user.`).addHelpText("after", `
|
|
40698
|
+
Examples:
|
|
40699
|
+
hyperline approval-requests approve --id <id> --step-id <step_id>
|
|
40700
|
+
hyperline approval-requests approve --id <id> --step-id <step_id> --approver-id <approver_id> --comment <comment>
|
|
40701
|
+
hyperline approval-requests approve --id <id> --step-id <step_id> --output json`).action(async (opts) => {
|
|
40702
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40703
|
+
if (!ctx) {
|
|
40704
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40705
|
+
process.exit(1);
|
|
40706
|
+
}
|
|
40707
|
+
const args = {};
|
|
40708
|
+
if (opts.id !== void 0)
|
|
40709
|
+
args.id = opts.id;
|
|
40710
|
+
if (opts.stepId !== void 0)
|
|
40711
|
+
args.step_id = opts.stepId;
|
|
40712
|
+
if (opts.approverId !== void 0)
|
|
40713
|
+
args.approver_id = opts.approverId;
|
|
40714
|
+
if (opts.comment !== void 0)
|
|
40715
|
+
args.comment = opts.comment;
|
|
40716
|
+
if (opts.approverEmail !== void 0)
|
|
40717
|
+
args.approver_email = opts.approverEmail;
|
|
40718
|
+
await ctx.execute({
|
|
40719
|
+
method: "POST",
|
|
40720
|
+
path: "/v1/approvals/requests/{id}/approve",
|
|
40721
|
+
args,
|
|
40722
|
+
queryParamKeys: []
|
|
40723
|
+
});
|
|
40724
|
+
});
|
|
40725
|
+
resource.command("reject").description(`Reject an approval request with a required comment.`).requiredOption("--id <value>", `id parameter`).requiredOption("--step-id <value>", `Expected current workflow step ID. A stale step is rejected instead of deciding the next step.`).option("--approver-id <value>", `Identifier of the account member making the decision. Supply exactly one of approver_id or approver_email. With a user token, this must be the authenticated user.`).requiredOption("--comment <value>", `Decision comment. Required and nonblank when rejecting; optional when approving. Trimmed, with a maximum of 2000 characters.`).option("--approver-email <value>", `Email of the account member making the decision, matched case-insensitively. Supply exactly one of approver_id or approver_email. With a user token, this must be the authenticated user.`).addHelpText("after", `
|
|
40726
|
+
Examples:
|
|
40727
|
+
hyperline approval-requests reject --id <id> --step-id <step_id> --comment <comment>
|
|
40728
|
+
hyperline approval-requests reject --id <id> --step-id <step_id> --comment <comment> --approver-id <approver_id> --approver-email <approver_email>
|
|
40729
|
+
hyperline approval-requests reject --id <id> --step-id <step_id> --comment <comment> --output json`).action(async (opts) => {
|
|
40730
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40731
|
+
if (!ctx) {
|
|
40732
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
40733
|
+
process.exit(1);
|
|
40734
|
+
}
|
|
40735
|
+
const args = {};
|
|
40736
|
+
if (opts.id !== void 0)
|
|
40737
|
+
args.id = opts.id;
|
|
40738
|
+
if (opts.stepId !== void 0)
|
|
40739
|
+
args.step_id = opts.stepId;
|
|
40740
|
+
if (opts.approverId !== void 0)
|
|
40741
|
+
args.approver_id = opts.approverId;
|
|
40742
|
+
if (opts.comment !== void 0)
|
|
40743
|
+
args.comment = opts.comment;
|
|
40744
|
+
if (opts.approverEmail !== void 0)
|
|
40745
|
+
args.approver_email = opts.approverEmail;
|
|
40746
|
+
await ctx.execute({
|
|
40747
|
+
method: "POST",
|
|
40748
|
+
path: "/v1/approvals/requests/{id}/reject",
|
|
40749
|
+
args,
|
|
40750
|
+
queryParamKeys: []
|
|
40751
|
+
});
|
|
40752
|
+
});
|
|
40753
|
+
}
|
|
40754
|
+
|
|
40676
40755
|
// build/commands/generated/approval-workflows.js
|
|
40677
40756
|
function registerApproval_WorkflowsCommands(parent) {
|
|
40678
|
-
const resource = parent.command("approval-workflows").description("Manage approval workflows");
|
|
40757
|
+
const resource = parent.command("approval-workflows").description("Manage approval > workflows");
|
|
40679
40758
|
resource.command("list").description(`List approval workflows with their steps and approvers. Those whose \`applicable_flows\` include \`workflow_step\` can be picked as the \`approvalWorkflowId\` of a workflow's Request approval step (\`hyperline.request_approval\`). Filter with \`is_active\`; paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--is-active <value>", `Only return workflows matching this active state.`).addHelpText("after", `
|
|
40680
40759
|
Examples:
|
|
40681
40760
|
hyperline approval-workflows list
|
|
@@ -40908,6 +40987,332 @@ Examples:
|
|
|
40908
40987
|
});
|
|
40909
40988
|
}
|
|
40910
40989
|
|
|
40990
|
+
// build/commands/generated/contracts-clauses.js
|
|
40991
|
+
function registerContracts_ClausesCommands(parent) {
|
|
40992
|
+
const resource = parent.command("contracts-clauses").description("Manage contracts > clauses");
|
|
40993
|
+
resource.command("list-contract-clauses").description(`List the contract clauses of the contract library, with their texts and translations. Use the returned IDs in \`contract_clause_ids\` when creating a quote. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
40994
|
+
Examples:
|
|
40995
|
+
hyperline contracts-clauses list-contract-clauses
|
|
40996
|
+
hyperline contracts-clauses list-contract-clauses --take <take>`).action(async (opts) => {
|
|
40997
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
40998
|
+
if (!ctx) {
|
|
40999
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41000
|
+
process.exit(1);
|
|
41001
|
+
}
|
|
41002
|
+
const args = {};
|
|
41003
|
+
if (opts.take !== void 0)
|
|
41004
|
+
args.take = Number(opts.take);
|
|
41005
|
+
if (opts.skip !== void 0)
|
|
41006
|
+
args.skip = Number(opts.skip);
|
|
41007
|
+
await ctx.execute({
|
|
41008
|
+
method: "GET",
|
|
41009
|
+
path: "/v1/contracts/clauses",
|
|
41010
|
+
args,
|
|
41011
|
+
queryParamKeys: ["take", "skip"]
|
|
41012
|
+
});
|
|
41013
|
+
});
|
|
41014
|
+
resource.command("create-contract-clause").description(`Create a contract clause in the contract library, with a default text and optional translations keyed by language code.`).requiredOption("--name <value>", `Name of the contract clause, displayed in the contract library.`).requiredOption("--text <value>", `Default text of the clause, used when no translation exists for the customer language. Plain text, line breaks are preserved.`).option("--translations <json>", `Translations of the clause, keyed by language code. The translation matching the customer language is used instead of \`text\`.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the clause is available when building a quote.`).addHelpText("after", `
|
|
41015
|
+
Examples:
|
|
41016
|
+
hyperline contracts-clauses create-contract-clause --name <name> --text <text>
|
|
41017
|
+
hyperline contracts-clauses create-contract-clause --name <name> --text <text> --translations <translations> --invoicing-entity-ids <invoicing_entity_ids>
|
|
41018
|
+
hyperline contracts-clauses create-contract-clause --name <name> --text <text> --output json`).action(async (opts) => {
|
|
41019
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41020
|
+
if (!ctx) {
|
|
41021
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41022
|
+
process.exit(1);
|
|
41023
|
+
}
|
|
41024
|
+
const args = {};
|
|
41025
|
+
if (opts.name !== void 0)
|
|
41026
|
+
args.name = opts.name;
|
|
41027
|
+
if (opts.text !== void 0)
|
|
41028
|
+
args.text = opts.text;
|
|
41029
|
+
if (opts.translations !== void 0)
|
|
41030
|
+
args.translations = JSON.parse(opts.translations);
|
|
41031
|
+
if (opts.invoicingEntityIds !== void 0)
|
|
41032
|
+
args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
|
|
41033
|
+
await ctx.execute({
|
|
41034
|
+
method: "POST",
|
|
41035
|
+
path: "/v1/contracts/clauses",
|
|
41036
|
+
args,
|
|
41037
|
+
queryParamKeys: []
|
|
41038
|
+
});
|
|
41039
|
+
});
|
|
41040
|
+
resource.command("get-contract-clause").description(`Retrieve a contract clause by ID.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
41041
|
+
Examples:
|
|
41042
|
+
hyperline contracts-clauses get-contract-clause --id <id>`).action(async (opts) => {
|
|
41043
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41044
|
+
if (!ctx) {
|
|
41045
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41046
|
+
process.exit(1);
|
|
41047
|
+
}
|
|
41048
|
+
const args = {};
|
|
41049
|
+
if (opts.id !== void 0)
|
|
41050
|
+
args.id = opts.id;
|
|
41051
|
+
await ctx.execute({
|
|
41052
|
+
method: "GET",
|
|
41053
|
+
path: "/v1/contracts/clauses/{id}",
|
|
41054
|
+
args,
|
|
41055
|
+
queryParamKeys: []
|
|
41056
|
+
});
|
|
41057
|
+
});
|
|
41058
|
+
resource.command("update-contract-clause").description(`Update the name, text, translations or invoicing entities of a contract clause. Sending \`translations\` replaces all existing translations.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Name of the contract clause, displayed in the contract library.`).option("--text <value>", `Default text of the clause, used when no translation exists for the customer language. Plain text, line breaks are preserved.`).option("--translations <json>", `Translations of the clause, keyed by language code. Replaces all existing translations: omitted languages are removed.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the clause is available when building a quote.`).addHelpText("after", `
|
|
41059
|
+
Examples:
|
|
41060
|
+
hyperline contracts-clauses update-contract-clause --id <id>
|
|
41061
|
+
hyperline contracts-clauses update-contract-clause --id <id> --name <name> --text <text>
|
|
41062
|
+
hyperline contracts-clauses update-contract-clause --id <id> --output json`).action(async (opts) => {
|
|
41063
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41064
|
+
if (!ctx) {
|
|
41065
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41066
|
+
process.exit(1);
|
|
41067
|
+
}
|
|
41068
|
+
const args = {};
|
|
41069
|
+
if (opts.id !== void 0)
|
|
41070
|
+
args.id = opts.id;
|
|
41071
|
+
if (opts.name !== void 0)
|
|
41072
|
+
args.name = opts.name;
|
|
41073
|
+
if (opts.text !== void 0)
|
|
41074
|
+
args.text = opts.text;
|
|
41075
|
+
if (opts.translations !== void 0)
|
|
41076
|
+
args.translations = JSON.parse(opts.translations);
|
|
41077
|
+
if (opts.invoicingEntityIds !== void 0)
|
|
41078
|
+
args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
|
|
41079
|
+
await ctx.execute({
|
|
41080
|
+
method: "PUT",
|
|
41081
|
+
path: "/v1/contracts/clauses/{id}",
|
|
41082
|
+
args,
|
|
41083
|
+
queryParamKeys: []
|
|
41084
|
+
});
|
|
41085
|
+
});
|
|
41086
|
+
resource.command("delete-contract-clause").description(`Delete a contract clause from the contract library. Existing quotes keep their copy of the clause.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
41087
|
+
Examples:
|
|
41088
|
+
hyperline contracts-clauses delete-contract-clause --id <id>
|
|
41089
|
+
hyperline contracts-clauses delete-contract-clause --id <id> --output json`).action(async (opts) => {
|
|
41090
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41091
|
+
if (!ctx) {
|
|
41092
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41093
|
+
process.exit(1);
|
|
41094
|
+
}
|
|
41095
|
+
const args = {};
|
|
41096
|
+
if (opts.id !== void 0)
|
|
41097
|
+
args.id = opts.id;
|
|
41098
|
+
if (!opts.yes) {
|
|
41099
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
41100
|
+
if (!confirmed) {
|
|
41101
|
+
process.stdout.write("Aborted.\n");
|
|
41102
|
+
return;
|
|
41103
|
+
}
|
|
41104
|
+
}
|
|
41105
|
+
await ctx.execute({
|
|
41106
|
+
method: "DELETE",
|
|
41107
|
+
path: "/v1/contracts/clauses/{id}",
|
|
41108
|
+
args,
|
|
41109
|
+
queryParamKeys: []
|
|
41110
|
+
});
|
|
41111
|
+
});
|
|
41112
|
+
}
|
|
41113
|
+
|
|
41114
|
+
// build/commands/generated/contracts-documents.js
|
|
41115
|
+
function registerContracts_DocumentsCommands(parent) {
|
|
41116
|
+
const resource = parent.command("contracts-documents").description("Manage contracts > documents");
|
|
41117
|
+
resource.command("list-contract-documents").description(`List the contract documents of the contract library (terms of service, DPA, SLA...), with their contents per language and countries and the files of each content. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
41118
|
+
Examples:
|
|
41119
|
+
hyperline contracts-documents list-contract-documents
|
|
41120
|
+
hyperline contracts-documents list-contract-documents --take <take>`).action(async (opts) => {
|
|
41121
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41122
|
+
if (!ctx) {
|
|
41123
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41124
|
+
process.exit(1);
|
|
41125
|
+
}
|
|
41126
|
+
const args = {};
|
|
41127
|
+
if (opts.take !== void 0)
|
|
41128
|
+
args.take = Number(opts.take);
|
|
41129
|
+
if (opts.skip !== void 0)
|
|
41130
|
+
args.skip = Number(opts.skip);
|
|
41131
|
+
await ctx.execute({
|
|
41132
|
+
method: "GET",
|
|
41133
|
+
path: "/v1/contracts/documents",
|
|
41134
|
+
args,
|
|
41135
|
+
queryParamKeys: ["take", "skip"]
|
|
41136
|
+
});
|
|
41137
|
+
});
|
|
41138
|
+
resource.command("create-contract-document").description(`Create a contract document in the contract library. Its files are added afterwards per language with \`create_contract_document_content\`.`).requiredOption("--name <value>", `Name of the contract document, displayed in the contract library.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the contract document is available when building a quote.`).addHelpText("after", `
|
|
41139
|
+
Examples:
|
|
41140
|
+
hyperline contracts-documents create-contract-document --name <name>
|
|
41141
|
+
hyperline contracts-documents create-contract-document --name <name> --invoicing-entity-ids <invoicing_entity_ids>
|
|
41142
|
+
hyperline contracts-documents create-contract-document --name <name> --output json`).action(async (opts) => {
|
|
41143
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41144
|
+
if (!ctx) {
|
|
41145
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41146
|
+
process.exit(1);
|
|
41147
|
+
}
|
|
41148
|
+
const args = {};
|
|
41149
|
+
if (opts.name !== void 0)
|
|
41150
|
+
args.name = opts.name;
|
|
41151
|
+
if (opts.invoicingEntityIds !== void 0)
|
|
41152
|
+
args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
|
|
41153
|
+
await ctx.execute({
|
|
41154
|
+
method: "POST",
|
|
41155
|
+
path: "/v1/contracts/documents",
|
|
41156
|
+
args,
|
|
41157
|
+
queryParamKeys: []
|
|
41158
|
+
});
|
|
41159
|
+
});
|
|
41160
|
+
resource.command("get-contract-document").description(`Retrieve a contract document by ID, with its contents and their files.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
41161
|
+
Examples:
|
|
41162
|
+
hyperline contracts-documents get-contract-document --id <id>`).action(async (opts) => {
|
|
41163
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41164
|
+
if (!ctx) {
|
|
41165
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41166
|
+
process.exit(1);
|
|
41167
|
+
}
|
|
41168
|
+
const args = {};
|
|
41169
|
+
if (opts.id !== void 0)
|
|
41170
|
+
args.id = opts.id;
|
|
41171
|
+
await ctx.execute({
|
|
41172
|
+
method: "GET",
|
|
41173
|
+
path: "/v1/contracts/documents/{id}",
|
|
41174
|
+
args,
|
|
41175
|
+
queryParamKeys: []
|
|
41176
|
+
});
|
|
41177
|
+
});
|
|
41178
|
+
resource.command("update-contract-document").description(`Update the name or invoicing entities of a contract document. Its files are updated per content with \`update_contract_document_content\`.`).requiredOption("--id <value>", `id parameter`).option("--name <value>", `Name of the contract document, displayed in the contract library.`).option("--invoicing-entity-ids <json>", `IDs of the invoicing entities for which the contract document is available when building a quote.`).addHelpText("after", `
|
|
41179
|
+
Examples:
|
|
41180
|
+
hyperline contracts-documents update-contract-document --id <id>
|
|
41181
|
+
hyperline contracts-documents update-contract-document --id <id> --name <name> --invoicing-entity-ids <invoicing_entity_ids>
|
|
41182
|
+
hyperline contracts-documents update-contract-document --id <id> --output json`).action(async (opts) => {
|
|
41183
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41184
|
+
if (!ctx) {
|
|
41185
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41186
|
+
process.exit(1);
|
|
41187
|
+
}
|
|
41188
|
+
const args = {};
|
|
41189
|
+
if (opts.id !== void 0)
|
|
41190
|
+
args.id = opts.id;
|
|
41191
|
+
if (opts.name !== void 0)
|
|
41192
|
+
args.name = opts.name;
|
|
41193
|
+
if (opts.invoicingEntityIds !== void 0)
|
|
41194
|
+
args.invoicing_entity_ids = JSON.parse(opts.invoicingEntityIds);
|
|
41195
|
+
await ctx.execute({
|
|
41196
|
+
method: "PUT",
|
|
41197
|
+
path: "/v1/contracts/documents/{id}",
|
|
41198
|
+
args,
|
|
41199
|
+
queryParamKeys: []
|
|
41200
|
+
});
|
|
41201
|
+
});
|
|
41202
|
+
resource.command("delete-contract-document").description(`Delete a contract document from the contract library. Existing quotes keep their copy of the files.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
41203
|
+
Examples:
|
|
41204
|
+
hyperline contracts-documents delete-contract-document --id <id>
|
|
41205
|
+
hyperline contracts-documents delete-contract-document --id <id> --output json`).action(async (opts) => {
|
|
41206
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41207
|
+
if (!ctx) {
|
|
41208
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41209
|
+
process.exit(1);
|
|
41210
|
+
}
|
|
41211
|
+
const args = {};
|
|
41212
|
+
if (opts.id !== void 0)
|
|
41213
|
+
args.id = opts.id;
|
|
41214
|
+
if (!opts.yes) {
|
|
41215
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
41216
|
+
if (!confirmed) {
|
|
41217
|
+
process.stdout.write("Aborted.\n");
|
|
41218
|
+
return;
|
|
41219
|
+
}
|
|
41220
|
+
}
|
|
41221
|
+
await ctx.execute({
|
|
41222
|
+
method: "DELETE",
|
|
41223
|
+
path: "/v1/contracts/documents/{id}",
|
|
41224
|
+
args,
|
|
41225
|
+
queryParamKeys: []
|
|
41226
|
+
});
|
|
41227
|
+
});
|
|
41228
|
+
resource.command("create-contract-document-content").description(`Add a content to a contract document: its files for one language (\`default\` as fallback) and optional countries, sent as a comma-separated list. At least one PDF or Word file is required.`).requiredOption("--id <value>", `id parameter`).requiredOption("--language <value>", `Language of the content. \`default\` is used when no content exists for the customer language.`).option("--countries <value>", `Countries the content applies to, as ISO 3166-1 alpha-2 codes. Empty means all countries. In a multipart request, send a comma-separated list.`).requiredOption("--files <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
|
|
41229
|
+
Examples:
|
|
41230
|
+
hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path>
|
|
41231
|
+
hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path> --countries <countries>
|
|
41232
|
+
hyperline contracts-documents create-contract-document-content --id <id> --language <language> --files <path> --output json`).action(async (opts) => {
|
|
41233
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41234
|
+
if (!ctx) {
|
|
41235
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41236
|
+
process.exit(1);
|
|
41237
|
+
}
|
|
41238
|
+
const args = {};
|
|
41239
|
+
if (opts.id !== void 0)
|
|
41240
|
+
args.id = opts.id;
|
|
41241
|
+
if (opts.language !== void 0)
|
|
41242
|
+
args.language = opts.language;
|
|
41243
|
+
if (opts.countries !== void 0)
|
|
41244
|
+
args.countries = opts.countries;
|
|
41245
|
+
const files = {};
|
|
41246
|
+
if (opts.files !== void 0)
|
|
41247
|
+
files.files = [opts.files].flat();
|
|
41248
|
+
await ctx.execute({
|
|
41249
|
+
method: "POST",
|
|
41250
|
+
path: "/v1/contracts/documents/{id}/contents",
|
|
41251
|
+
args,
|
|
41252
|
+
queryParamKeys: [],
|
|
41253
|
+
files
|
|
41254
|
+
});
|
|
41255
|
+
});
|
|
41256
|
+
resource.command("update-contract-document-content").description(`Update a contract document content. Sent files replace all its existing files: use it to publish a new version of a document. Existing quotes keep their copy of the previous files.`).requiredOption("--id <value>", `id parameter`).requiredOption("--content-id <value>", `contentId parameter`).option("--language <value>", `Language of the content. \`default\` is used when no content exists for the customer language.`).option("--countries <value>", `Countries the content applies to, as ISO 3166-1 alpha-2 codes. Empty means all countries. In a multipart request, send a comma-separated list, or an empty value for all countries.`).option("--files <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
|
|
41257
|
+
Examples:
|
|
41258
|
+
hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId>
|
|
41259
|
+
hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId> --language <language> --countries <countries>
|
|
41260
|
+
hyperline contracts-documents update-contract-document-content --id <id> --content-id <contentId> --output json`).action(async (opts) => {
|
|
41261
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41262
|
+
if (!ctx) {
|
|
41263
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41264
|
+
process.exit(1);
|
|
41265
|
+
}
|
|
41266
|
+
const args = {};
|
|
41267
|
+
if (opts.id !== void 0)
|
|
41268
|
+
args.id = opts.id;
|
|
41269
|
+
if (opts.contentId !== void 0)
|
|
41270
|
+
args.contentId = opts.contentId;
|
|
41271
|
+
if (opts.language !== void 0)
|
|
41272
|
+
args.language = opts.language;
|
|
41273
|
+
if (opts.countries !== void 0)
|
|
41274
|
+
args.countries = opts.countries;
|
|
41275
|
+
const files = {};
|
|
41276
|
+
if (opts.files !== void 0)
|
|
41277
|
+
files.files = [opts.files].flat();
|
|
41278
|
+
await ctx.execute({
|
|
41279
|
+
method: "PUT",
|
|
41280
|
+
path: "/v1/contracts/documents/{id}/contents/{contentId}",
|
|
41281
|
+
args,
|
|
41282
|
+
queryParamKeys: [],
|
|
41283
|
+
files
|
|
41284
|
+
});
|
|
41285
|
+
});
|
|
41286
|
+
resource.command("delete-contract-document-content").description(`Delete a content (one language and countries version) of a contract document.`).requiredOption("--id <value>", `id parameter`).requiredOption("--content-id <value>", `contentId parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
41287
|
+
Examples:
|
|
41288
|
+
hyperline contracts-documents delete-contract-document-content --id <id> --content-id <contentId>
|
|
41289
|
+
hyperline contracts-documents delete-contract-document-content --id <id> --content-id <contentId> --output json`).action(async (opts) => {
|
|
41290
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
41291
|
+
if (!ctx) {
|
|
41292
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
41293
|
+
process.exit(1);
|
|
41294
|
+
}
|
|
41295
|
+
const args = {};
|
|
41296
|
+
if (opts.id !== void 0)
|
|
41297
|
+
args.id = opts.id;
|
|
41298
|
+
if (opts.contentId !== void 0)
|
|
41299
|
+
args.contentId = opts.contentId;
|
|
41300
|
+
if (!opts.yes) {
|
|
41301
|
+
const confirmed = await confirmPrompt("Are you sure? Pass --yes to skip. [y/N] ");
|
|
41302
|
+
if (!confirmed) {
|
|
41303
|
+
process.stdout.write("Aborted.\n");
|
|
41304
|
+
return;
|
|
41305
|
+
}
|
|
41306
|
+
}
|
|
41307
|
+
await ctx.execute({
|
|
41308
|
+
method: "DELETE",
|
|
41309
|
+
path: "/v1/contracts/documents/{id}/contents/{contentId}",
|
|
41310
|
+
args,
|
|
41311
|
+
queryParamKeys: []
|
|
41312
|
+
});
|
|
41313
|
+
});
|
|
41314
|
+
}
|
|
41315
|
+
|
|
40911
41316
|
// build/commands/generated/coupons.js
|
|
40912
41317
|
function registerCouponsCommands(parent) {
|
|
40913
41318
|
const resource = parent.command("coupons").description("Manage coupons");
|
|
@@ -41665,13 +42070,13 @@ Customer type.
|
|
|
41665
42070
|
|
|
41666
42071
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
41667
42072
|
- \`exempt\`: The customer is exempt from tax.
|
|
41668
|
-
`).option("--registration-number <value>", `Customer registration number.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
|
|
42073
|
+
`).option("--registration-number <value>", `Customer registration number.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline. When external ID uniqueness is enforced for your account, two active customers cannot share the same external ID.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
|
|
41669
42074
|
How customer invoices are issued from the parent organisation.
|
|
41670
42075
|
|
|
41671
42076
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
41672
42077
|
- \`every_invoice\`: Customer invoices will be issued from the organisation individually.
|
|
41673
42078
|
- \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
|
|
41674
|
-
`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--force-invoice-draft <value>", `Indicates if customer invoices should be created as draft invoices.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <json>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
|
|
42079
|
+
`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--consolidated-invoicing-enabled <value>", `Indicates if consolidated invoicing is enabled for the customer. When enabled, subscription invoices billed on the same day are grouped into a single invoice. Cannot be disabled while invoices are pending consolidation.`).option("--force-invoice-draft <value>", `Indicates if customer invoices should be created as draft invoices.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <json>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
|
|
41675
42080
|
Examples:
|
|
41676
42081
|
hyperline customers create-customer
|
|
41677
42082
|
hyperline customers create-customer --name <name> --type <type>
|
|
@@ -41716,6 +42121,8 @@ Examples:
|
|
|
41716
42121
|
args.organisation_invoicing = opts.organisationInvoicing;
|
|
41717
42122
|
if (opts.invoiceRemindersEnabled !== void 0)
|
|
41718
42123
|
args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
|
|
42124
|
+
if (opts.consolidatedInvoicingEnabled !== void 0)
|
|
42125
|
+
args.consolidated_invoicing_enabled = opts.consolidatedInvoicingEnabled;
|
|
41719
42126
|
if (opts.forceInvoiceDraft !== void 0)
|
|
41720
42127
|
args.force_invoice_draft = opts.forceInvoiceDraft;
|
|
41721
42128
|
if (opts.priceBookId !== void 0)
|
|
@@ -41802,13 +42209,13 @@ Customer type.
|
|
|
41802
42209
|
|
|
41803
42210
|
- \`taxable\`: Taxes are automatically determined for the customer.
|
|
41804
42211
|
- \`exempt\`: The customer is exempt from tax.
|
|
41805
|
-
`).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
|
|
42212
|
+
`).option("--registration-number <value>", `Customer registration number.`).option("--is-government-affiliated", `Indicates if the customer is affiliated with a government entity.`).option("--einvoicing-code <value>", `Customer electronic invoicing code, used to route their e-invoices to the relevant platform (e.g. Chorus Pro routing code or Peppol identifier).`).option("--external-id <value>", `ID of the customer in your system. This helps matching your customer with the one on Hyperline. When external ID uniqueness is enforced for your account, two active customers cannot share the same external ID.`).option("--domain <value>", `Customer domain. If not defined, it is inferred from the billing email.`).option("--invoicing-entity-id <value>", `ID of the invoicing entity this customer will be attached to.`).option("--billing-address <json>", `Customer billing address.`).option("--shipping-address <json>", `Customer shipping address.`).option("--billing-email <value>", `Email to which all communications will be sent.`).option("--invoice-emails <json>", `Emails to which invoices will be sent (e.g. payer, finance team, accounting firm). If not defined, invoices will be sent to the \`billing_email\`; otherwise, they won't be sent to the \`billing_email\`.`).option("--language <value>", `Language used for invoices, emails, and hosted pages.`).option("--timezone <value>", `Customer timezone.`).option("--available-payment-methods <json>", `List of payment methods you allow your customer to pay with. You customer will be able to select one of them in their portal page and those will be the default options when creating a checkout session.`).option("--payment-method-type <value>", `Default payment method type used to pay subscriptions and one-off invoices.`).option("--payment-method-id <value>", `ID of the default payment method of the customer. Only applies to card and direct debit.`).option("--bank-account <json>", `Custom bank account for the customer. If not defined and customer paying by bank transfer, the bank accounts configured in your account settings will be used.`).option("--custom-payment-delay <number>", `Custom payment terms in days. If not defined, the default one defined on the related invoicing entity will be used.`).option("--custom-payment-initiation-delay <number>", `Custom initiation delay in days before triggering payment. If not defined, the default one defined on the related invoicing entity will be used.`).option("--organisation-id <value>", `Parent organization ID to which the client is attached.`).option("--organisation-invoicing <value>", `
|
|
41806
42213
|
How customer invoices are issued from the parent organisation.
|
|
41807
42214
|
|
|
41808
42215
|
- \`none\`: Invoices will keep being issued from this customer.
|
|
41809
42216
|
- \`every_invoice\`: Customer invoices will be issued from the organisation individually.
|
|
41810
42217
|
- \`concat\`: Customer invoices will be grouped into a global parent invoice at a regular schedule (configured on the organisation).
|
|
41811
|
-
`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--force-invoice-draft <value>", `Indicates if customer invoices should be created as draft invoices.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <json>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
|
|
42218
|
+
`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `A list of key value with the slug of the custom property as the key and the custom property value as value.`).option("--invoice-reminders-enabled <value>", `Indicates if invoice reminders are enabled for the customer.`).option("--consolidated-invoicing-enabled <value>", `Indicates if consolidated invoicing is enabled for the customer. When enabled, subscription invoices billed on the same day are grouped into a single invoice. Cannot be disabled while invoices are pending consolidation.`).option("--force-invoice-draft <value>", `Indicates if customer invoices should be created as draft invoices.`).option("--price-book-id <value>", `Default price book ID assigned to the customer.`).option("--owner-id <value>", `ID of the Hyperline user responsible for this customer and targeted by customer agent notifications.`).option("--follower-ids <json>", `IDs of Hyperline users following this customer.`).addHelpText("after", `
|
|
41812
42219
|
Examples:
|
|
41813
42220
|
hyperline customers update --id <id>
|
|
41814
42221
|
hyperline customers update --id <id> --name <name> --type <type>
|
|
@@ -41857,6 +42264,8 @@ Examples:
|
|
|
41857
42264
|
args.organisation_invoicing = opts.organisationInvoicing;
|
|
41858
42265
|
if (opts.invoiceRemindersEnabled !== void 0)
|
|
41859
42266
|
args.invoice_reminders_enabled = opts.invoiceRemindersEnabled;
|
|
42267
|
+
if (opts.consolidatedInvoicingEnabled !== void 0)
|
|
42268
|
+
args.consolidated_invoicing_enabled = opts.consolidatedInvoicingEnabled;
|
|
41860
42269
|
if (opts.forceInvoiceDraft !== void 0)
|
|
41861
42270
|
args.force_invoice_draft = opts.forceInvoiceDraft;
|
|
41862
42271
|
if (opts.priceBookId !== void 0)
|
|
@@ -42088,7 +42497,13 @@ Examples:
|
|
|
42088
42497
|
queryParamKeys: []
|
|
42089
42498
|
});
|
|
42090
42499
|
});
|
|
42091
|
-
resource.command("create-customer-address").description(`Create a shipping address with type shipping; billing creation is rejected because a customer can have at most one billing address, managed through the customer endpoint.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--type <value>", `Only shipping addresses can be created here. A customer has at most one active billing address, managed through the customer or by updating its address ID.`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `
|
|
42500
|
+
resource.command("create-customer-address").description(`Create a shipping address with type shipping; billing creation is rejected because a customer can have at most one billing address, managed through the customer endpoint.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--type <value>", `Only shipping addresses can be created here. A customer has at most one active billing address, managed through the customer or by updating its address ID.`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
42501
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
42502
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
42503
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
42504
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
42505
|
+
|
|
42506
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).option("--tax-id <value>", `Tax ID override for a shipping address. Null or blank inherits the customer's tax ID; omission on update preserves the override. Billing addresses cannot have an override.`).addHelpText("after", `
|
|
42092
42507
|
Examples:
|
|
42093
42508
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type>
|
|
42094
42509
|
hyperline customers-address create-customer-address --customer-id <customerId> --type <type> --name <name> --line1 <line1>
|
|
@@ -42126,7 +42541,13 @@ Examples:
|
|
|
42126
42541
|
queryParamKeys: []
|
|
42127
42542
|
});
|
|
42128
42543
|
});
|
|
42129
|
-
resource.command("update-customer-address").description(`Update a billing or shipping address by ID; billing changes also update the customer billing-address projection.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `
|
|
42544
|
+
resource.command("update-customer-address").description(`Update a billing or shipping address by ID; billing changes also update the customer billing-address projection.`).requiredOption("--customer-id <value>", `customerId parameter`).requiredOption("--address-id <value>", `addressId parameter`).option("--name <value>", `Address name.`).option("--line1 <value>", `Address first line.`).option("--line2 <value>", `Address second line (optional).`).option("--city <value>", `Address city.`).option("--zip <value>", `Address ZIP code.`).option("--state <value>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
42545
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
42546
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
42547
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
42548
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
42549
|
+
|
|
42550
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).option("--country <value>", `Two-letter country code in ISO format. See [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).`).option("--tax-id <value>", `Tax ID override for a shipping address. Null or blank inherits the customer's tax ID; omission on update preserves the override. Billing addresses cannot have an override.`).addHelpText("after", `
|
|
42130
42551
|
Examples:
|
|
42131
42552
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId>
|
|
42132
42553
|
hyperline customers-address update-customer-address --customer-id <customerId> --address-id <addressId> --name <name> --line1 <line1>
|
|
@@ -43376,10 +43797,10 @@ Examples:
|
|
|
43376
43797
|
]
|
|
43377
43798
|
});
|
|
43378
43799
|
});
|
|
43379
|
-
resource.command("create").description(`Upload a new file (max 10MB). Requires multipart form data with a file field and metadata (name and customer_id).`).requiredOption("--name <value>", `Name of the file to be uploaded.`).requiredOption("--customer-id <value>", `ID of the customer to link the file to.`).addHelpText("after", `
|
|
43800
|
+
resource.command("create").description(`Upload a new file (max 10MB). Requires multipart form data with a file field and metadata (name and customer_id).`).requiredOption("--name <value>", `Name of the file to be uploaded.`).requiredOption("--customer-id <value>", `ID of the customer to link the file to.`).requiredOption("--file <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
|
|
43380
43801
|
Examples:
|
|
43381
|
-
hyperline files create --name <name> --customer-id <customer_id>
|
|
43382
|
-
hyperline files create --name <name> --customer-id <customer_id> --output json`).action(async (opts) => {
|
|
43802
|
+
hyperline files create --name <name> --customer-id <customer_id> --file <path>
|
|
43803
|
+
hyperline files create --name <name> --customer-id <customer_id> --file <path> --output json`).action(async (opts) => {
|
|
43383
43804
|
const ctx = resource.parent?.opts()._ctx;
|
|
43384
43805
|
if (!ctx) {
|
|
43385
43806
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -43390,11 +43811,15 @@ Examples:
|
|
|
43390
43811
|
args.name = opts.name;
|
|
43391
43812
|
if (opts.customerId !== void 0)
|
|
43392
43813
|
args.customer_id = opts.customerId;
|
|
43814
|
+
const files = {};
|
|
43815
|
+
if (opts.file !== void 0)
|
|
43816
|
+
files.file = [opts.file].flat();
|
|
43393
43817
|
await ctx.execute({
|
|
43394
43818
|
method: "POST",
|
|
43395
43819
|
path: "/v1/files",
|
|
43396
43820
|
args,
|
|
43397
|
-
queryParamKeys: []
|
|
43821
|
+
queryParamKeys: [],
|
|
43822
|
+
files
|
|
43398
43823
|
});
|
|
43399
43824
|
});
|
|
43400
43825
|
resource.command("delete").description(`Permanently delete a file by ID.`).requiredOption("--id <value>", `id parameter`).option("--yes", "Skip confirmation").addHelpText("after", `
|
|
@@ -43428,7 +43853,7 @@ Examples:
|
|
|
43428
43853
|
// build/commands/generated/invoices.js
|
|
43429
43854
|
function registerInvoicesCommands(parent) {
|
|
43430
43855
|
const resource = parent.command("invoices").description("Manage invoices");
|
|
43431
|
-
resource.command("list").description(`List invoices with filters for type, status, customer_id, customer_external_id, subscription_id, invoicing_entity_id, invoice_number, period dates, emission_date, due_date, and updated_at. Sortable by created_at or emitted_at. By default, open invoices are excluded. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--customer-external-id <value>", `customer_external_id`).option("--subscription-id <value>", `subscription_id`).option("--subscription-id.not <value>", `subscription_id__not`).option("--subscription-id.equals <value>", `subscription_id__equals`).option("--subscription-id.contains <value>", `subscription_id__contains`).option("--subscription-id.starts-with <value>", `subscription_id__startsWith`).option("--subscription-id.end-with <value>", `subscription_id__endWith`).option("--subscription-id.is-null <value>", `subscription_id__isNull`).option("--subscription-id.is-not-null <value>", `subscription_id__isNotNull`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--invoice-number <value>", `invoice_number`).option("--invoice-number.not <value>", `invoice_number__not`).option("--invoice-number.equals <value>", `invoice_number__equals`).option("--invoice-number.contains <value>", `invoice_number__contains`).option("--invoice-number.starts-with <value>", `invoice_number__startsWith`).option("--invoice-number.end-with <value>", `invoice_number__endWith`).option("--original-invoice-id <value>", `original_invoice_id`).option("--original-invoice-id.not <value>", `original_invoice_id__not`).option("--original-invoice-id.equals <value>", `original_invoice_id__equals`).option("--original-invoice-id.contains <value>", `original_invoice_id__contains`).option("--original-invoice-id.starts-with <value>", `original_invoice_id__startsWith`).option("--original-invoice-id.end-with <value>", `original_invoice_id__endWith`).option("--original-invoice-id.is-null <value>", `original_invoice_id__isNull`).option("--original-invoice-id.is-not-null <value>", `original_invoice_id__isNotNull`).option("--original-invoice-number <value>", `original_invoice_number`).option("--original-invoice-number.not <value>", `original_invoice_number__not`).option("--original-invoice-number.equals <value>", `original_invoice_number__equals`).option("--original-invoice-number.contains <value>", `original_invoice_number__contains`).option("--original-invoice-number.starts-with <value>", `original_invoice_number__startsWith`).option("--original-invoice-number.end-with <value>", `original_invoice_number__endWith`).option("--original-invoice-number.is-null <value>", `original_invoice_number__isNull`).option("--original-invoice-number.is-not-null <value>", `original_invoice_number__isNotNull`).option("--line-item-id <value>", `line_item_id`).option("--period-start <value>", `period_start`).option("--period-start.not <value>", `period_start__not`).option("--period-start.equals <value>", `period_start__equals`).option("--period-start.lt <value>", `period_start__lt`).option("--period-start.lte <value>", `period_start__lte`).option("--period-start.gt <value>", `period_start__gt`).option("--period-start.gte <value>", `period_start__gte`).option("--period-start.is-null <value>", `period_start__isNull`).option("--period-start.is-not-null <value>", `period_start__isNotNull`).option("--period-end <value>", `period_end`).option("--period-end.not <value>", `period_end__not`).option("--period-end.equals <value>", `period_end__equals`).option("--period-end.lt <value>", `period_end__lt`).option("--period-end.lte <value>", `period_end__lte`).option("--period-end.gt <value>", `period_end__gt`).option("--period-end.gte <value>", `period_end__gte`).option("--period-end.is-null <value>", `period_end__isNull`).option("--period-end.is-not-null <value>", `period_end__isNotNull`).option("--issued-at <value>", `issued_at`).option("--issued-at.not <value>", `issued_at__not`).option("--issued-at.equals <value>", `issued_at__equals`).option("--issued-at.lt <value>", `issued_at__lt`).option("--issued-at.lte <value>", `issued_at__lte`).option("--issued-at.gt <value>", `issued_at__gt`).option("--issued-at.gte <value>", `issued_at__gte`).option("--due-at <value>", `due_at`).option("--due-at.not <value>", `due_at__not`).option("--due-at.equals <value>", `due_at__equals`).option("--due-at.lt <value>", `due_at__lt`).option("--due-at.lte <value>", `due_at__lte`).option("--due-at.gt <value>", `due_at__gt`).option("--due-at.gte <value>", `due_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
43856
|
+
resource.command("list").description(`List invoices with filters for type, status, customer_id, customer_external_id, subscription_id, invoicing_entity_id, invoice_number, period dates, emission_date, due_date, and updated_at. Sortable by created_at or emitted_at. By default, open invoices are excluded. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--origin <value>", `origin`).option("--origin.in <value>", `origin__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--customer-external-id <value>", `customer_external_id`).option("--subscription-id <value>", `subscription_id`).option("--subscription-id.not <value>", `subscription_id__not`).option("--subscription-id.equals <value>", `subscription_id__equals`).option("--subscription-id.contains <value>", `subscription_id__contains`).option("--subscription-id.starts-with <value>", `subscription_id__startsWith`).option("--subscription-id.end-with <value>", `subscription_id__endWith`).option("--subscription-id.is-null <value>", `subscription_id__isNull`).option("--subscription-id.is-not-null <value>", `subscription_id__isNotNull`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--invoice-number <value>", `invoice_number`).option("--invoice-number.not <value>", `invoice_number__not`).option("--invoice-number.equals <value>", `invoice_number__equals`).option("--invoice-number.contains <value>", `invoice_number__contains`).option("--invoice-number.starts-with <value>", `invoice_number__startsWith`).option("--invoice-number.end-with <value>", `invoice_number__endWith`).option("--original-invoice-id <value>", `original_invoice_id`).option("--original-invoice-id.not <value>", `original_invoice_id__not`).option("--original-invoice-id.equals <value>", `original_invoice_id__equals`).option("--original-invoice-id.contains <value>", `original_invoice_id__contains`).option("--original-invoice-id.starts-with <value>", `original_invoice_id__startsWith`).option("--original-invoice-id.end-with <value>", `original_invoice_id__endWith`).option("--original-invoice-id.is-null <value>", `original_invoice_id__isNull`).option("--original-invoice-id.is-not-null <value>", `original_invoice_id__isNotNull`).option("--original-invoice-number <value>", `original_invoice_number`).option("--original-invoice-number.not <value>", `original_invoice_number__not`).option("--original-invoice-number.equals <value>", `original_invoice_number__equals`).option("--original-invoice-number.contains <value>", `original_invoice_number__contains`).option("--original-invoice-number.starts-with <value>", `original_invoice_number__startsWith`).option("--original-invoice-number.end-with <value>", `original_invoice_number__endWith`).option("--original-invoice-number.is-null <value>", `original_invoice_number__isNull`).option("--original-invoice-number.is-not-null <value>", `original_invoice_number__isNotNull`).option("--line-item-id <value>", `line_item_id`).option("--period-start <value>", `period_start`).option("--period-start.not <value>", `period_start__not`).option("--period-start.equals <value>", `period_start__equals`).option("--period-start.lt <value>", `period_start__lt`).option("--period-start.lte <value>", `period_start__lte`).option("--period-start.gt <value>", `period_start__gt`).option("--period-start.gte <value>", `period_start__gte`).option("--period-start.is-null <value>", `period_start__isNull`).option("--period-start.is-not-null <value>", `period_start__isNotNull`).option("--period-end <value>", `period_end`).option("--period-end.not <value>", `period_end__not`).option("--period-end.equals <value>", `period_end__equals`).option("--period-end.lt <value>", `period_end__lt`).option("--period-end.lte <value>", `period_end__lte`).option("--period-end.gt <value>", `period_end__gt`).option("--period-end.gte <value>", `period_end__gte`).option("--period-end.is-null <value>", `period_end__isNull`).option("--period-end.is-not-null <value>", `period_end__isNotNull`).option("--issued-at <value>", `issued_at`).option("--issued-at.not <value>", `issued_at__not`).option("--issued-at.equals <value>", `issued_at__equals`).option("--issued-at.lt <value>", `issued_at__lt`).option("--issued-at.lte <value>", `issued_at__lte`).option("--issued-at.gt <value>", `issued_at__gt`).option("--issued-at.gte <value>", `issued_at__gte`).option("--due-at <value>", `due_at`).option("--due-at.not <value>", `due_at__not`).option("--due-at.equals <value>", `due_at__equals`).option("--due-at.lt <value>", `due_at__lt`).option("--due-at.lte <value>", `due_at__lte`).option("--due-at.gt <value>", `due_at__gt`).option("--due-at.gte <value>", `due_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
43432
43857
|
Examples:
|
|
43433
43858
|
hyperline invoices list
|
|
43434
43859
|
hyperline invoices list --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
@@ -43454,6 +43879,10 @@ Examples:
|
|
|
43454
43879
|
args.status = opts.status;
|
|
43455
43880
|
if (opts["status.in"] !== void 0)
|
|
43456
43881
|
args.status__in = opts["status.in"];
|
|
43882
|
+
if (opts.origin !== void 0)
|
|
43883
|
+
args.origin = opts.origin;
|
|
43884
|
+
if (opts["origin.in"] !== void 0)
|
|
43885
|
+
args.origin__in = opts["origin.in"];
|
|
43457
43886
|
if (opts.customerId !== void 0)
|
|
43458
43887
|
args.customer_id = opts.customerId;
|
|
43459
43888
|
if (opts["customerId.not"] !== void 0)
|
|
@@ -43636,6 +44065,8 @@ Examples:
|
|
|
43636
44065
|
"type__in",
|
|
43637
44066
|
"status",
|
|
43638
44067
|
"status__in",
|
|
44068
|
+
"origin",
|
|
44069
|
+
"origin__in",
|
|
43639
44070
|
"customer_id",
|
|
43640
44071
|
"customer_id__not",
|
|
43641
44072
|
"customer_id__equals",
|
|
@@ -43751,7 +44182,7 @@ Payment method strategy used to charge the invoice. Only applies to \`to_pay\` s
|
|
|
43751
44182
|
|
|
43752
44183
|
- \`current\`: Use the current default payment method of the customer.
|
|
43753
44184
|
- \`external\`: Manage the payment of the invoice outside of Hyperline.
|
|
43754
|
-
`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--emitted-at <value>", `Issue date of the invoice.`).option("--due-at <value>", `Due date of the invoice. Computed from the issue date and the payment delay configured in your settings.`).option("--settled-at <value>", `Date the invoice was fully paid.`).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), resolved to the start of that day in the customer timezone. Requires \`status\` to be \`draft\` and an issue date after today. Default to \`manual\`.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).requiredOption("--line-items <json>", `line_items`).option("--transactions <json>", `transactions`).option("--coupons <json>", `coupons`).addHelpText("after", `
|
|
44185
|
+
`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--emitted-at <value>", `Issue date of the invoice.`).option("--due-at <value>", `Due date of the invoice. Computed from the issue date and the payment delay configured in your settings.`).option("--settled-at <value>", `Date the invoice was fully paid.`).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), resolved to the start of that day in the customer timezone. Requires \`status\` to be \`draft\` and an issue date after today. Default to \`manual\`.`).option("--send-email", `Whether to send the paid invoice or credit note email when creating with \`status: paid\` (the default status). Defaults to true and respects existing email settings. Set to false to suppress this email without suppressing lifecycle events or webhooks. Does not affect invoices created as \`draft\` or \`to_pay\`, or later email requests.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).option("--original-invoice-id <value>", `Reference invoice for a credit note, including an imported invoice. Must belong to the same customer, currency and invoicing entity. This reference does not apply credit; use \`allocations\` separately.`).requiredOption("--line-items <json>", `line_items`).option("--allocations <json>", `Invoice applications for a credit note, independent of \`original_invoice_id\`. Omit or send an empty array to apply no credit. Created atomically with the credit note. Amounts must fit the available credit and target balances. For \`paid\` credit notes, non-empty allocations and explicit transactions must settle the full amount; no refund transaction is inferred.`).option("--transactions <json>", `transactions`).option("--coupons <json>", `coupons`).addHelpText("after", `
|
|
43755
44186
|
Examples:
|
|
43756
44187
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items>
|
|
43757
44188
|
hyperline invoices create-invoice --customer-id <customer_id> --line-items <line_items> --currency <currency> --status <status>
|
|
@@ -43804,6 +44235,10 @@ Examples:
|
|
|
43804
44235
|
args.settled_at = opts.settledAt;
|
|
43805
44236
|
if (opts.issuingMethod !== void 0)
|
|
43806
44237
|
args.issuing_method = opts.issuingMethod;
|
|
44238
|
+
if (opts.originalInvoiceId !== void 0)
|
|
44239
|
+
args.original_invoice_id = opts.originalInvoiceId;
|
|
44240
|
+
if (opts.sendEmail !== void 0)
|
|
44241
|
+
args.send_email = true;
|
|
43807
44242
|
if (opts.properties !== void 0)
|
|
43808
44243
|
args.properties = JSON.parse(opts.properties);
|
|
43809
44244
|
if (opts.customProperties !== void 0)
|
|
@@ -43812,6 +44247,8 @@ Examples:
|
|
|
43812
44247
|
args.additional_display_fields = JSON.parse(opts.additionalDisplayFields);
|
|
43813
44248
|
if (opts.lineItems !== void 0)
|
|
43814
44249
|
args.line_items = JSON.parse(opts.lineItems);
|
|
44250
|
+
if (opts.allocations !== void 0)
|
|
44251
|
+
args.allocations = JSON.parse(opts.allocations);
|
|
43815
44252
|
if (opts.transactions !== void 0)
|
|
43816
44253
|
args.transactions = JSON.parse(opts.transactions);
|
|
43817
44254
|
if (opts.coupons !== void 0)
|
|
@@ -43947,6 +44384,36 @@ Examples:
|
|
|
43947
44384
|
queryParamKeys: []
|
|
43948
44385
|
});
|
|
43949
44386
|
});
|
|
44387
|
+
resource.command("send-invoice-emails").description(`Send a specific email (\`email_type\`, e.g. \`invoice_ready\` for the to-pay email) to the customer for a list of invoice IDs, asynchronously in batch. Returns a batch_id only; outcomes arrive via webhooks (invoice.batch.email_succeeded / invoice.batch.email_skipped / invoice.batch.email_failed). An invoice whose status doesn't match the email (e.g. a draft or an invoice still pending approval after validate_invoice) is skipped, so check each invoice's status with get_invoice first. Every call sends the emails again: never re-call it to retry or check status.`).option("--batch-id <value>", `Optional client-supplied identifier for the batch. Echoed back in the response and on the emitted webhook events. Generated if omitted.`).requiredOption("--email-type <value>", `The email to send. The invoice's status must resolve to this email, otherwise it is skipped with reason \`email_type_mismatch\`.
|
|
44388
|
+
|
|
44389
|
+
- \`invoice_ready\`: The to-pay invoice email (for \`to_pay\`, \`partially_paid\`, \`late\` invoices).
|
|
44390
|
+
- \`invoice_settled\`: The paid-invoice email (for \`paid\` invoices).
|
|
44391
|
+
- \`invoice_errored\`: The failed-payment email (for \`error\` invoices with a payment method).
|
|
44392
|
+
- \`credit_note_ready\`: The issued-credit-note email (for \`to_pay\`, \`partially_paid\` refunds).
|
|
44393
|
+
- \`credit_note_settled\`: The credit-note email (for paid refunds).`).requiredOption("--ids <json>", `IDs of the invoices to send the email for. Processed asynchronously; each outcome is reported via webhook events.`).addHelpText("after", `
|
|
44394
|
+
Examples:
|
|
44395
|
+
hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids>
|
|
44396
|
+
hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids> --batch-id <batch_id>
|
|
44397
|
+
hyperline invoices send-invoice-emails --email-type <email_type> --ids <ids> --output json`).action(async (opts) => {
|
|
44398
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44399
|
+
if (!ctx) {
|
|
44400
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44401
|
+
process.exit(1);
|
|
44402
|
+
}
|
|
44403
|
+
const args = {};
|
|
44404
|
+
if (opts.batchId !== void 0)
|
|
44405
|
+
args.batch_id = opts.batchId;
|
|
44406
|
+
if (opts.emailType !== void 0)
|
|
44407
|
+
args.email_type = opts.emailType;
|
|
44408
|
+
if (opts.ids !== void 0)
|
|
44409
|
+
args.ids = JSON.parse(opts.ids);
|
|
44410
|
+
await ctx.execute({
|
|
44411
|
+
method: "POST",
|
|
44412
|
+
path: "/v1/invoices/send-email",
|
|
44413
|
+
args,
|
|
44414
|
+
queryParamKeys: []
|
|
44415
|
+
});
|
|
44416
|
+
});
|
|
43950
44417
|
resource.command("mark-invoice-as-uncollectible").description(`Mark an invoice as uncollectible for accounting write-off purposes. The invoice remains in the system for record keeping.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
43951
44418
|
Examples:
|
|
43952
44419
|
hyperline invoices mark-invoice-as-uncollectible --id <id>
|
|
@@ -43984,7 +44451,28 @@ Examples:
|
|
|
43984
44451
|
queryParamKeys: []
|
|
43985
44452
|
});
|
|
43986
44453
|
});
|
|
43987
|
-
resource.command("update").description(`
|
|
44454
|
+
resource.command("update-credit-note-allocations").description(`Replace a credit note's invoice allocations, including imported invoices, without changing its original invoice reference.`).requiredOption("--id <value>", `id parameter`).requiredOption("--allocations <json>", `Complete replacement of this credit note's invoice applications. An empty array removes all applications, preserving the original invoice reference. Targets must share the customer, currency and invoicing entity. Amounts exceeding available credit or invoice balances are rejected.`).addHelpText("after", `
|
|
44455
|
+
Examples:
|
|
44456
|
+
hyperline invoices update-credit-note-allocations --id <id> --allocations <allocations>
|
|
44457
|
+
hyperline invoices update-credit-note-allocations --id <id> --allocations <allocations> --output json`).action(async (opts) => {
|
|
44458
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
44459
|
+
if (!ctx) {
|
|
44460
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
44461
|
+
process.exit(1);
|
|
44462
|
+
}
|
|
44463
|
+
const args = {};
|
|
44464
|
+
if (opts.id !== void 0)
|
|
44465
|
+
args.id = opts.id;
|
|
44466
|
+
if (opts.allocations !== void 0)
|
|
44467
|
+
args.allocations = JSON.parse(opts.allocations);
|
|
44468
|
+
await ctx.execute({
|
|
44469
|
+
method: "PUT",
|
|
44470
|
+
path: "/v1/invoices/{id}/allocations",
|
|
44471
|
+
args,
|
|
44472
|
+
queryParamKeys: []
|
|
44473
|
+
});
|
|
44474
|
+
});
|
|
44475
|
+
resource.command("update").description(`Update an invoice. Send original_invoice_id alone to fill a missing reference on an imported credit note without changing allocations. Draft/grace_period allow modifying line items, dates, and metadata before finalization. Finalized invoices allow updating product and price links and revenue classification on existing line items by ID, with unchanged amounts/taxes and automatic accounting reposting, plus metadata (paid/partially_paid: custom_note/purchase_order/custom_properties/additional_display_fields/subscription_id; uncollectible: properties/custom_note/custom_properties/additional_display_fields/subscription_id).`).requiredOption("--id <value>", `id parameter`).option("--type <value>", `Type of the invoice.
|
|
43988
44476
|
|
|
43989
44477
|
- \`invoice\`: Legal invoice to be paid by your customer.
|
|
43990
44478
|
- \`credit_note\`: Legal credit note cancelling an invoice and refunding your customer.
|
|
@@ -43993,7 +44481,7 @@ Examples:
|
|
|
43993
44481
|
|
|
43994
44482
|
- \`auto\`: Tax is automatically computed and applied.
|
|
43995
44483
|
- \`not_eligible\`: Tax collection is disabled for the invoice.
|
|
43996
|
-
`).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), in the invoice timezone. The issue date must be after today. Set to \`manual\` to unschedule the invoice.`).option("--emitted-at <value>", `Issue date of the draft invoice. For a scheduled invoice, the day on which it is automatically finalized.`).option("--line-items <json>", `
|
|
44484
|
+
`).option("--issuing-method <value>", `Set to \`scheduled\` to finalize the draft invoice automatically on its issue date (\`emitted_at\`), in the invoice timezone. The issue date must be after today. Set to \`manual\` to unschedule the invoice.`).option("--emitted-at <value>", `Issue date of the draft invoice. For a scheduled invoice, the day on which it is automatically finalized.`).option("--line-items <json>", `Draft edits replace the line list. Finalized invoice line updates accept up to 100 lines per request and update only the specified existing line IDs and allow product and price links and revenue classification; amounts and taxes stay unchanged. Accounting postings are rebuilt atomically; updates affecting closed accounting periods are rejected.`).option("--coupons <json>", `coupons`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-id <value>", `ID of the default payment method used to pay the invoice. Transactions related to the invoice may use different payment methods.`).option("--bank-account-id <value>", `ID of the bank account displayed on the invoice. Transactions related to the invoice may use different bank accounts.`).option("--subscription-id <value>", `ID of the subscription related to the invoice.`).option("--original-invoice-id <value>", `Fill a missing reference invoice on an imported credit note. Cannot replace or clear an existing reference. Does not change allocations. Send this field alone.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).option("--custom-properties <json>", `Values for custom properties defined for the \`invoice\` entity, keyed by slug.`).option("--additional-display-fields <json>", `Ordered additional fields displayed on the invoice PDF. Invoice and customer custom properties are referenced by slug.`).option("--customer <json>", `Override customer details on the invoice. Only allowed for draft or grace period invoices.`).addHelpText("after", `
|
|
43997
44485
|
Examples:
|
|
43998
44486
|
hyperline invoices update --id <id>
|
|
43999
44487
|
hyperline invoices update --id <id> --type <type> --document-name <document_name>
|
|
@@ -44034,6 +44522,8 @@ Examples:
|
|
|
44034
44522
|
args.bank_account_id = opts.bankAccountId;
|
|
44035
44523
|
if (opts.subscriptionId !== void 0)
|
|
44036
44524
|
args.subscription_id = opts.subscriptionId;
|
|
44525
|
+
if (opts.originalInvoiceId !== void 0)
|
|
44526
|
+
args.original_invoice_id = opts.originalInvoiceId;
|
|
44037
44527
|
if (opts.lineItems !== void 0)
|
|
44038
44528
|
args.line_items = JSON.parse(opts.lineItems);
|
|
44039
44529
|
if (opts.coupons !== void 0)
|
|
@@ -44079,10 +44569,10 @@ Examples:
|
|
|
44079
44569
|
queryParamKeys: []
|
|
44080
44570
|
});
|
|
44081
44571
|
});
|
|
44082
|
-
resource.command("upload-pdf-to").description(`Upload a custom PDF file (max 5MB) to attach to an existing invoice, replacing the auto-generated PDF.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
44572
|
+
resource.command("upload-pdf-to").description(`Upload a custom PDF file (max 5MB) to attach to an existing invoice, replacing the auto-generated PDF.`).requiredOption("--id <value>", `id parameter`).requiredOption("--file <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
|
|
44083
44573
|
Examples:
|
|
44084
|
-
hyperline invoices upload-pdf-to --id <id>
|
|
44085
|
-
hyperline invoices upload-pdf-to --id <id> --output json`).action(async (opts) => {
|
|
44574
|
+
hyperline invoices upload-pdf-to --id <id> --file <path>
|
|
44575
|
+
hyperline invoices upload-pdf-to --id <id> --file <path> --output json`).action(async (opts) => {
|
|
44086
44576
|
const ctx = resource.parent?.opts()._ctx;
|
|
44087
44577
|
if (!ctx) {
|
|
44088
44578
|
process.stderr.write("Error: Not authenticated\n");
|
|
@@ -44091,11 +44581,15 @@ Examples:
|
|
|
44091
44581
|
const args = {};
|
|
44092
44582
|
if (opts.id !== void 0)
|
|
44093
44583
|
args.id = opts.id;
|
|
44584
|
+
const files = {};
|
|
44585
|
+
if (opts.file !== void 0)
|
|
44586
|
+
files.file = [opts.file].flat();
|
|
44094
44587
|
await ctx.execute({
|
|
44095
44588
|
method: "POST",
|
|
44096
44589
|
path: "/v1/invoices/{id}/upload",
|
|
44097
44590
|
args,
|
|
44098
|
-
queryParamKeys: []
|
|
44591
|
+
queryParamKeys: [],
|
|
44592
|
+
files
|
|
44099
44593
|
});
|
|
44100
44594
|
});
|
|
44101
44595
|
resource.command("download").description(`Download the PDF of an invoice as a downloadable file. The HTTP client must follow redirects. Supports lang/locale params for localization.`).requiredOption("--id <value>", `id parameter`).option("--lang <value>", `lang`).option("--locale <value>", `Locale as a supported language code and an uppercase ISO 3166-1 alpha-2 country code, separated by a hyphen.`).addHelpText("after", `
|
|
@@ -44234,7 +44728,13 @@ Examples:
|
|
|
44234
44728
|
queryParamKeys: []
|
|
44235
44729
|
});
|
|
44236
44730
|
});
|
|
44237
|
-
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>", `
|
|
44731
|
+
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>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
44732
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
44733
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
44734
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
44735
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
44736
|
+
|
|
44737
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).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", `
|
|
44238
44738
|
Examples:
|
|
44239
44739
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency>
|
|
44240
44740
|
hyperline invoicing-entities create-invoicing-entity --name <name> --country <country> --currency <currency> --accounting-currency <accounting_currency> --is-default --trade-name <trade_name>
|
|
@@ -44326,7 +44826,13 @@ Examples:
|
|
|
44326
44826
|
queryParamKeys: []
|
|
44327
44827
|
});
|
|
44328
44828
|
});
|
|
44329
|
-
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>", `
|
|
44829
|
+
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>", `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
44830
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
44831
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
44832
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
44833
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
44834
|
+
|
|
44835
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`).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", `
|
|
44330
44836
|
Examples:
|
|
44331
44837
|
hyperline invoicing-entities update-invoicing-entity --id <id>
|
|
44332
44838
|
hyperline invoicing-entities update-invoicing-entity --id <id> --name <name> --registration-number <registration_number>
|
|
@@ -44573,7 +45079,7 @@ function registerPaymentsCommands(parent) {
|
|
|
44573
45079
|
Payment type.
|
|
44574
45080
|
|
|
44575
45081
|
- \`one_time\`: One-time payment, generating one-off invoice.
|
|
44576
|
-
`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--products <json>", `Products composing the related invoice.`).option("--purchase-order <value>", `Purchase order added on the generated invoice.`).option("--custom-note <value>", `Custom note added on the generated invoice.`).requiredOption("--charging-method <value>", `
|
|
45082
|
+
`).requiredOption("--customer-id <value>", `ID of the customer.`).option("--products <json>", `Products composing the related invoice.`).option("--purchase-order <value>", `Purchase order added on the generated invoice.`).option("--custom-note <value>", `Custom note added on the generated invoice.`).option("--coupons <json>", `Coupons applied to the generated invoice before the checkout is created, so the checkout email already shows the discounted amount. \`line_item_indexes\` refer to the position of the products in \`products\`. Only supported with the \`checkout\` charging method.`).requiredOption("--charging-method <value>", `
|
|
44577
45083
|
Charging method.
|
|
44578
45084
|
|
|
44579
45085
|
- \`immediately\`: Customer's payment method will be charged directly to pay the invoice.
|
|
@@ -44605,6 +45111,8 @@ Examples:
|
|
|
44605
45111
|
args.payment_method_id = opts.paymentMethodId;
|
|
44606
45112
|
if (opts.products !== void 0)
|
|
44607
45113
|
args.products = JSON.parse(opts.products);
|
|
45114
|
+
if (opts.coupons !== void 0)
|
|
45115
|
+
args.coupons = JSON.parse(opts.coupons);
|
|
44608
45116
|
if (opts.availablePaymentMethods !== void 0)
|
|
44609
45117
|
args.available_payment_methods = JSON.parse(opts.availablePaymentMethods);
|
|
44610
45118
|
if (opts.checkoutSession !== void 0)
|
|
@@ -44809,7 +45317,7 @@ Examples:
|
|
|
44809
45317
|
// build/commands/generated/products.js
|
|
44810
45318
|
function registerProductsCommands(parent) {
|
|
44811
45319
|
const resource = parent.command("products").description("Manage products");
|
|
44812
|
-
resource.command("list").description(`List products with optional filters for id, status, name, description, type, price_book_id, and custom_properties (JSON object of slug to exact value, e.g. {"my_slug":"value"}; slugs matching no custom property are rejected). Products define what is being sold (flat fee, per-unit, usage-based, etc.). Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--description <value>", `description`).option("--description.not <value>", `description__not`).option("--description.equals <value>", `description__equals`).option("--description.contains <value>", `description__contains`).option("--description.starts-with <value>", `description__startsWith`).option("--description.end-with <value>", `description__endWith`).option("--description.is-null <value>", `description__isNull`).option("--description.is-not-null <value>", `description__isNotNull`).option("--type <value>", `type`).option("--type.not <value>", `type__not`).option("--type.equals <value>", `type__equals`).option("--type.contains <value>", `type__contains`).option("--type.starts-with <value>", `type__startsWith`).option("--type.end-with <value>", `type__endWith`).option("--price-book-id <value>", `price_book_id`).option("--custom-properties <value>", `Filter by custom property values, as a JSON object mapping a custom property slug to the exact value to match. Suffix a slug with \`__contains\` for a case-sensitive substring match on text values. Several entries are combined with AND. A slug that matches no custom property returns a \`400\` error.`).addHelpText("after", `
|
|
45320
|
+
resource.command("list").description(`List products with optional filters for id, status, name, description, type, price_book_id, and custom_properties (JSON object of slug to exact value, e.g. {"my_slug":"value"}; slugs matching no custom property are rejected). Products define what is being sold (flat fee, per-unit, usage-based, etc.). Paginated with take/skip. Includes bundle items and the first 50 price configurations per product. Use list_price_configurations filtered by product_id for the complete list.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--description <value>", `description`).option("--description.not <value>", `description__not`).option("--description.equals <value>", `description__equals`).option("--description.contains <value>", `description__contains`).option("--description.starts-with <value>", `description__startsWith`).option("--description.end-with <value>", `description__endWith`).option("--description.is-null <value>", `description__isNull`).option("--description.is-not-null <value>", `description__isNotNull`).option("--type <value>", `type`).option("--type.not <value>", `type__not`).option("--type.equals <value>", `type__equals`).option("--type.contains <value>", `type__contains`).option("--type.starts-with <value>", `type__startsWith`).option("--type.end-with <value>", `type__endWith`).option("--price-book-id <value>", `price_book_id`).option("--custom-properties <value>", `Filter by custom property values, as a JSON object mapping a custom property slug to the exact value to match. Suffix a slug with \`__contains\` for a case-sensitive substring match on text values. Several entries are combined with AND. A slug that matches no custom property returns a \`400\` error.`).addHelpText("after", `
|
|
44813
45321
|
Examples:
|
|
44814
45322
|
hyperline products list
|
|
44815
45323
|
hyperline products list --take <take> --id <id>`).action(async (opts) => {
|
|
@@ -45203,7 +45711,7 @@ Quote status.
|
|
|
45203
45711
|
- \`all\`: Display all pricing tiers.
|
|
45204
45712
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
45205
45713
|
- \`none\`: Hide all pricing tiers.
|
|
45206
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
45714
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).option("--attachments <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
|
|
45207
45715
|
Examples:
|
|
45208
45716
|
hyperline quotes create --customer-id <customer_id>
|
|
45209
45717
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -45268,11 +45776,15 @@ Examples:
|
|
|
45268
45776
|
args.subscription = JSON.parse(opts.subscription);
|
|
45269
45777
|
if (opts.invoice !== void 0)
|
|
45270
45778
|
args.invoice = JSON.parse(opts.invoice);
|
|
45779
|
+
const files = {};
|
|
45780
|
+
if (opts.attachments !== void 0)
|
|
45781
|
+
files.attachments = [opts.attachments].flat();
|
|
45271
45782
|
await ctx.execute({
|
|
45272
45783
|
method: "POST",
|
|
45273
45784
|
path: "/v1/quotes",
|
|
45274
45785
|
args,
|
|
45275
|
-
queryParamKeys: []
|
|
45786
|
+
queryParamKeys: [],
|
|
45787
|
+
files
|
|
45276
45788
|
});
|
|
45277
45789
|
});
|
|
45278
45790
|
resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--type <value>", `type`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
@@ -45454,7 +45966,7 @@ Examples:
|
|
|
45454
45966
|
- \`all\`: Display all pricing tiers.
|
|
45455
45967
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
45456
45968
|
- \`none\`: Hide all pricing tiers.
|
|
45457
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
45969
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).option("--attachments <paths...>", `Paths of the local files to upload (space-separated, sends a multipart request)`).addHelpText("after", `
|
|
45458
45970
|
Examples:
|
|
45459
45971
|
hyperline quotes update --id <id>
|
|
45460
45972
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -45515,11 +46027,15 @@ Examples:
|
|
|
45515
46027
|
args.subscription = JSON.parse(opts.subscription);
|
|
45516
46028
|
if (opts.invoice !== void 0)
|
|
45517
46029
|
args.invoice = JSON.parse(opts.invoice);
|
|
46030
|
+
const files = {};
|
|
46031
|
+
if (opts.attachments !== void 0)
|
|
46032
|
+
files.attachments = [opts.attachments].flat();
|
|
45518
46033
|
await ctx.execute({
|
|
45519
46034
|
method: "PATCH",
|
|
45520
46035
|
path: "/v1/quotes/{id}",
|
|
45521
46036
|
args,
|
|
45522
|
-
queryParamKeys: []
|
|
46037
|
+
queryParamKeys: [],
|
|
46038
|
+
files
|
|
45523
46039
|
});
|
|
45524
46040
|
});
|
|
45525
46041
|
resource.command("duplicate").description(`Create a draft duplicate of an existing quote, including its linked invoice or subscription configuration.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
@@ -45672,9 +46188,10 @@ Examples:
|
|
|
45672
46188
|
queryParamKeys: []
|
|
45673
46189
|
});
|
|
45674
46190
|
});
|
|
45675
|
-
resource.command("sign").description(`Manually mark a quote as signed externally. Optionally upload a signed PDF. Bypasses the built-in Hyperline signature flow.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
46191
|
+
resource.command("sign").description(`Manually mark a quote as signed externally. Optionally upload a signed PDF. Bypasses the built-in Hyperline signature flow.`).requiredOption("--id <value>", `id parameter`).option("--signed-quote <path>", `Path of the local file to upload (sends a multipart request)`).addHelpText("after", `
|
|
45676
46192
|
Examples:
|
|
45677
46193
|
hyperline quotes sign --id <id>
|
|
46194
|
+
hyperline quotes sign --id <id> --signed-quote <path>
|
|
45678
46195
|
hyperline quotes sign --id <id> --output json`).action(async (opts) => {
|
|
45679
46196
|
const ctx = resource.parent?.opts()._ctx;
|
|
45680
46197
|
if (!ctx) {
|
|
@@ -45684,11 +46201,15 @@ Examples:
|
|
|
45684
46201
|
const args = {};
|
|
45685
46202
|
if (opts.id !== void 0)
|
|
45686
46203
|
args.id = opts.id;
|
|
46204
|
+
const files = {};
|
|
46205
|
+
if (opts.signedQuote !== void 0)
|
|
46206
|
+
files.signed_quote = [opts.signedQuote].flat();
|
|
45687
46207
|
await ctx.execute({
|
|
45688
46208
|
method: "POST",
|
|
45689
46209
|
path: "/v1/quotes/{id}/sign",
|
|
45690
46210
|
args,
|
|
45691
|
-
queryParamKeys: []
|
|
46211
|
+
queryParamKeys: [],
|
|
46212
|
+
files
|
|
45692
46213
|
});
|
|
45693
46214
|
});
|
|
45694
46215
|
resource.command("void").description(`Void an existing quote, canceling it and preventing further actions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--reason <value>", `Quote voiding reason.`).addHelpText("after", `
|
|
@@ -45800,7 +46321,7 @@ Examples:
|
|
|
45800
46321
|
// build/commands/generated/quotes-templates.js
|
|
45801
46322
|
function registerQuotes_TemplatesCommands(parent) {
|
|
45802
46323
|
const resource = parent.command("quotes-templates").description("Manage quotes > templates");
|
|
45803
|
-
resource.command("list-quote-templates").description(`List quote templates with pagination and optional filters for id, name, subscription_template_id, and search. Use template IDs to create quotes from reusable quote defaults.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--subscription-template-id <value>", `subscription_template_id`).option("--
|
|
46324
|
+
resource.command("list-quote-templates").description(`List quote templates with pagination and optional filters for id, name, subscription_template_id, and search. Use template IDs to create quotes from reusable quote defaults.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--subscription-template-id <value>", `subscription_template_id`).option("--search <value>", `search`).addHelpText("after", `
|
|
45804
46325
|
Examples:
|
|
45805
46326
|
hyperline quotes-templates list-quote-templates
|
|
45806
46327
|
hyperline quotes-templates list-quote-templates --take <take> --id <id>`).action(async (opts) => {
|
|
@@ -45836,20 +46357,6 @@ Examples:
|
|
|
45836
46357
|
args.name__endWith = opts["name.endWith"];
|
|
45837
46358
|
if (opts.subscriptionTemplateId !== void 0)
|
|
45838
46359
|
args.subscription_template_id = opts.subscriptionTemplateId;
|
|
45839
|
-
if (opts["subscriptionTemplateId.not"] !== void 0)
|
|
45840
|
-
args.subscription_template_id__not = opts["subscriptionTemplateId.not"];
|
|
45841
|
-
if (opts["subscriptionTemplateId.equals"] !== void 0)
|
|
45842
|
-
args.subscription_template_id__equals = opts["subscriptionTemplateId.equals"];
|
|
45843
|
-
if (opts["subscriptionTemplateId.contains"] !== void 0)
|
|
45844
|
-
args.subscription_template_id__contains = opts["subscriptionTemplateId.contains"];
|
|
45845
|
-
if (opts["subscriptionTemplateId.startsWith"] !== void 0)
|
|
45846
|
-
args.subscription_template_id__startsWith = opts["subscriptionTemplateId.startsWith"];
|
|
45847
|
-
if (opts["subscriptionTemplateId.endWith"] !== void 0)
|
|
45848
|
-
args.subscription_template_id__endWith = opts["subscriptionTemplateId.endWith"];
|
|
45849
|
-
if (opts["subscriptionTemplateId.isNull"] !== void 0)
|
|
45850
|
-
args.subscription_template_id__isNull = opts["subscriptionTemplateId.isNull"];
|
|
45851
|
-
if (opts["subscriptionTemplateId.isNotNull"] !== void 0)
|
|
45852
|
-
args.subscription_template_id__isNotNull = opts["subscriptionTemplateId.isNotNull"];
|
|
45853
46360
|
if (opts.search !== void 0)
|
|
45854
46361
|
args.search = opts.search;
|
|
45855
46362
|
if (opts.take !== void 0)
|
|
@@ -45876,13 +46383,6 @@ Examples:
|
|
|
45876
46383
|
"name__startsWith",
|
|
45877
46384
|
"name__endWith",
|
|
45878
46385
|
"subscription_template_id",
|
|
45879
|
-
"subscription_template_id__not",
|
|
45880
|
-
"subscription_template_id__equals",
|
|
45881
|
-
"subscription_template_id__contains",
|
|
45882
|
-
"subscription_template_id__startsWith",
|
|
45883
|
-
"subscription_template_id__endWith",
|
|
45884
|
-
"subscription_template_id__isNull",
|
|
45885
|
-
"subscription_template_id__isNotNull",
|
|
45886
46386
|
"search"
|
|
45887
46387
|
]
|
|
45888
46388
|
});
|
|
@@ -46940,7 +47440,7 @@ Examples:
|
|
|
46940
47440
|
]
|
|
46941
47441
|
});
|
|
46942
47442
|
});
|
|
46943
|
-
resource.command("create-subscription-transition").description(`Submit a transition from one subscription to another. The result may be pending approval, applied immediately, or scheduled.`).requiredOption("--source-subscription-id <value>", `The ID of the subscription to transition from`).option("--name <value>", `An optional name for the transition`).option("--calculation-method <value>", `The calculation method to use for the transition. 'do_not_charge' will not generate any transition invoice. 'pro_rata' will generate a prorated invoice for the remaining period. 'pro_rata_separate_documents' issues a credit note for the current period (the amount invoiced when 'last_renewal', otherwise a prorated cancellation credit) and a separate invoice for the new configuration.`).option("--billing-cycle-transition-method <value>", `The billing cycle transition method to use. 'keep_current_billing_cycle' (the default) keeps the current billing cycle dates; the request is rejected when the phases share no product billing periodicity, as the cycle cannot then be preserved \u2014 use 'align_to_new_billing_cycle' in that case. 'align_to_new_billing_cycle' aligns the billing cycle to the transition date.`).requiredOption("--application-schedule <value>", `When the transition should be applied: 'immediately', 'scheduled' for a specific date, or 'last_renewal' to apply it retroactively to the start of the current billing period (refunding what was already invoiced for that period and re-charging the new configuration). Past dates within the current billing period are supported and will be applied immediately.`).option("--transition-date <value>", `The date at which the transition should occur. Only applicable if the application schedule is 'scheduled'. Can be a past date within the current billing period. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).requiredOption("--target-subscription <json>", `The configuration of the subscription to transition to
|
|
47443
|
+
resource.command("create-subscription-transition").description(`Submit a transition from one subscription to another. The result may be pending approval, applied immediately, or scheduled.`).requiredOption("--source-subscription-id <value>", `The ID of the subscription to transition from`).option("--name <value>", `An optional name for the transition`).option("--calculation-method <value>", `The calculation method to use for the transition. 'do_not_charge' will not generate any transition invoice. 'pro_rata' will generate a prorated invoice for the remaining period. 'pro_rata_separate_documents' issues a credit note for the current period (the amount invoiced when 'last_renewal', otherwise a prorated cancellation credit) and a separate invoice for the new configuration.`).option("--billing-cycle-transition-method <value>", `The billing cycle transition method to use. 'keep_current_billing_cycle' (the default) keeps the current billing cycle dates; the request is rejected when the phases share no product billing periodicity, as the cycle cannot then be preserved \u2014 use 'align_to_new_billing_cycle' in that case. 'align_to_new_billing_cycle' aligns the billing cycle to the transition date.`).requiredOption("--application-schedule <value>", `When the transition should be applied: 'immediately', 'scheduled' for a specific date, or 'last_renewal' to apply it retroactively to the start of the current billing period (refunding what was already invoiced for that period and re-charging the new configuration). Past dates within the current billing period are supported and will be applied immediately.`).option("--transition-date <value>", `The date at which the transition should occur. Only applicable if the application schedule is 'scheduled'. Can be a past date within the current billing period. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).requiredOption("--target-subscription <json>", `The configuration of the subscription to transition to. It is billed in the source subscription's currency, even when the customer's currency has changed: a template configuration in another currency is refused.`).addHelpText("after", `
|
|
46944
47444
|
Examples:
|
|
46945
47445
|
hyperline subscriptions-transitions create-subscription-transition --source-subscription-id <source_subscription_id> --application-schedule <application_schedule> --target-subscription <target_subscription>
|
|
46946
47446
|
hyperline subscriptions-transitions create-subscription-transition --source-subscription-id <source_subscription_id> --application-schedule <application_schedule> --target-subscription <target_subscription> --name <name> --calculation-method <calculation_method>
|
|
@@ -47205,16 +47705,44 @@ Examples:
|
|
|
47205
47705
|
queryParamKeys: []
|
|
47206
47706
|
});
|
|
47207
47707
|
});
|
|
47208
|
-
resource.command("list").description(`List transactions across all invoices, including transactions without an invoice allocation. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).addHelpText("after", `
|
|
47708
|
+
resource.command("list").description(`List transactions across all invoices, including transactions without an invoice allocation. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
47209
47709
|
Examples:
|
|
47210
47710
|
hyperline transactions list
|
|
47211
|
-
hyperline transactions list --take <take>`).action(async (opts) => {
|
|
47711
|
+
hyperline transactions list --take <take> --created-at <created_at>`).action(async (opts) => {
|
|
47212
47712
|
const ctx = resource.parent?.opts()._ctx;
|
|
47213
47713
|
if (!ctx) {
|
|
47214
47714
|
process.stderr.write("Error: Not authenticated\n");
|
|
47215
47715
|
process.exit(1);
|
|
47216
47716
|
}
|
|
47217
47717
|
const args = {};
|
|
47718
|
+
if (opts.createdAt !== void 0)
|
|
47719
|
+
args.created_at = opts.createdAt;
|
|
47720
|
+
if (opts["createdAt.not"] !== void 0)
|
|
47721
|
+
args.created_at__not = opts["createdAt.not"];
|
|
47722
|
+
if (opts["createdAt.equals"] !== void 0)
|
|
47723
|
+
args.created_at__equals = opts["createdAt.equals"];
|
|
47724
|
+
if (opts["createdAt.lt"] !== void 0)
|
|
47725
|
+
args.created_at__lt = opts["createdAt.lt"];
|
|
47726
|
+
if (opts["createdAt.lte"] !== void 0)
|
|
47727
|
+
args.created_at__lte = opts["createdAt.lte"];
|
|
47728
|
+
if (opts["createdAt.gt"] !== void 0)
|
|
47729
|
+
args.created_at__gt = opts["createdAt.gt"];
|
|
47730
|
+
if (opts["createdAt.gte"] !== void 0)
|
|
47731
|
+
args.created_at__gte = opts["createdAt.gte"];
|
|
47732
|
+
if (opts.updatedAt !== void 0)
|
|
47733
|
+
args.updated_at = opts.updatedAt;
|
|
47734
|
+
if (opts["updatedAt.not"] !== void 0)
|
|
47735
|
+
args.updated_at__not = opts["updatedAt.not"];
|
|
47736
|
+
if (opts["updatedAt.equals"] !== void 0)
|
|
47737
|
+
args.updated_at__equals = opts["updatedAt.equals"];
|
|
47738
|
+
if (opts["updatedAt.lt"] !== void 0)
|
|
47739
|
+
args.updated_at__lt = opts["updatedAt.lt"];
|
|
47740
|
+
if (opts["updatedAt.lte"] !== void 0)
|
|
47741
|
+
args.updated_at__lte = opts["updatedAt.lte"];
|
|
47742
|
+
if (opts["updatedAt.gt"] !== void 0)
|
|
47743
|
+
args.updated_at__gt = opts["updatedAt.gt"];
|
|
47744
|
+
if (opts["updatedAt.gte"] !== void 0)
|
|
47745
|
+
args.updated_at__gte = opts["updatedAt.gte"];
|
|
47218
47746
|
if (opts.take !== void 0)
|
|
47219
47747
|
args.take = Number(opts.take);
|
|
47220
47748
|
if (opts.skip !== void 0)
|
|
@@ -47223,7 +47751,24 @@ Examples:
|
|
|
47223
47751
|
method: "GET",
|
|
47224
47752
|
path: "/v1/transactions",
|
|
47225
47753
|
args,
|
|
47226
|
-
queryParamKeys: [
|
|
47754
|
+
queryParamKeys: [
|
|
47755
|
+
"take",
|
|
47756
|
+
"skip",
|
|
47757
|
+
"created_at",
|
|
47758
|
+
"created_at__not",
|
|
47759
|
+
"created_at__equals",
|
|
47760
|
+
"created_at__lt",
|
|
47761
|
+
"created_at__lte",
|
|
47762
|
+
"created_at__gt",
|
|
47763
|
+
"created_at__gte",
|
|
47764
|
+
"updated_at",
|
|
47765
|
+
"updated_at__not",
|
|
47766
|
+
"updated_at__equals",
|
|
47767
|
+
"updated_at__lt",
|
|
47768
|
+
"updated_at__lte",
|
|
47769
|
+
"updated_at__gt",
|
|
47770
|
+
"updated_at__gte"
|
|
47771
|
+
]
|
|
47227
47772
|
});
|
|
47228
47773
|
});
|
|
47229
47774
|
resource.command("get").description(`Retrieve a transaction by ID, including its current invoice allocations.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
@@ -47693,10 +48238,13 @@ function registerAllCommands(program2) {
|
|
|
47693
48238
|
registerAi_BillingCommands(program2);
|
|
47694
48239
|
registerAi_CostsCommands(program2);
|
|
47695
48240
|
registerAnalyticsCommands(program2);
|
|
48241
|
+
registerApproval_RequestsCommands(program2);
|
|
47696
48242
|
registerApproval_WorkflowsCommands(program2);
|
|
47697
48243
|
registerBank_AccountsCommands(program2);
|
|
47698
48244
|
registerCatalogCommands(program2);
|
|
47699
48245
|
registerCompaniesCommands(program2);
|
|
48246
|
+
registerContracts_ClausesCommands(program2);
|
|
48247
|
+
registerContracts_DocumentsCommands(program2);
|
|
47700
48248
|
registerCouponsCommands(program2);
|
|
47701
48249
|
registerCoupons_Promotion_CodesCommands(program2);
|
|
47702
48250
|
registerCustomers_CreditsCommands(program2);
|
|
@@ -63793,6 +64341,7 @@ var de = {
|
|
|
63793
64341
|
"quotes.blockers.quote_configuration_not_subscription_update": "W\xE4hlen Sie eine Konfiguration f\xFCr eine Abonnement\xE4nderung",
|
|
63794
64342
|
"quotes.blockers.quote_configuration_not_new_subscription": "W\xE4hlen Sie eine Konfiguration f\xFCr ein neues Abonnement",
|
|
63795
64343
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "Ein Abonnement kann in einem Angebot nur einmal ge\xE4ndert werden",
|
|
64344
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Jedes Produkt muss aus dem Konto des Abrechnungsanbieters des ge\xE4nderten Abonnements stammen",
|
|
63796
64345
|
"quotes.blockers.quote_draft_invoice_missing": "Das Angebot muss eine Rechnung im Entwurf haben, um abgeschlossen zu werden",
|
|
63797
64346
|
"quotes.blockers.quote_draft_subscription_missing": "Das Angebot muss ein Abonnement im Entwurf haben, um abgeschlossen zu werden",
|
|
63798
64347
|
"quotes.blockers.quote_expiry_after_transition_date": "Das Ablaufdatum des Angebots muss sp\xE4testens am Ende des aktuellen Abrechnungszeitraums liegen, oder am geplanten \xDCbergangsdatum, wenn dieses sp\xE4ter liegt"
|
|
@@ -63861,6 +64410,7 @@ var en = {
|
|
|
63861
64410
|
"quotes.blockers.quote_configuration_not_subscription_update": "Select a subscription update configuration",
|
|
63862
64411
|
"quotes.blockers.quote_configuration_not_new_subscription": "Select a new subscription configuration",
|
|
63863
64412
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "A subscription can only be updated once in a quote",
|
|
64413
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Every product must come from the billing provider account of the subscription being updated",
|
|
63864
64414
|
"quotes.blockers.quote_draft_invoice_missing": "Quote must have a draft invoice to be finalized",
|
|
63865
64415
|
"quotes.blockers.quote_draft_subscription_missing": "Quote must have a draft subscription to be finalized",
|
|
63866
64416
|
"quotes.blockers.quote_expiry_after_transition_date": "The quote expiration date must be on or before the end of the current billing period, or the scheduled transition date when it falls later"
|
|
@@ -63929,6 +64479,7 @@ var es = {
|
|
|
63929
64479
|
"quotes.blockers.quote_configuration_not_subscription_update": "Selecciona una configuraci\xF3n de actualizaci\xF3n de suscripci\xF3n",
|
|
63930
64480
|
"quotes.blockers.quote_configuration_not_new_subscription": "Selecciona una configuraci\xF3n de nueva suscripci\xF3n",
|
|
63931
64481
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "Una suscripci\xF3n solo puede actualizarse una vez en un presupuesto",
|
|
64482
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Cada producto debe provenir de la cuenta del proveedor de facturaci\xF3n de la suscripci\xF3n actualizada",
|
|
63932
64483
|
"quotes.blockers.quote_draft_invoice_missing": "El presupuesto debe tener una factura en borrador para finalizarse",
|
|
63933
64484
|
"quotes.blockers.quote_draft_subscription_missing": "El presupuesto debe tener una suscripci\xF3n en borrador para finalizarse",
|
|
63934
64485
|
"quotes.blockers.quote_expiry_after_transition_date": "La fecha de vencimiento del presupuesto debe ser, como m\xE1ximo, el final del periodo de facturaci\xF3n actual, o la fecha de transici\xF3n programada si es posterior"
|
|
@@ -63997,6 +64548,7 @@ var fr = {
|
|
|
63997
64548
|
"quotes.blockers.quote_configuration_not_subscription_update": "S\xE9lectionnez une configuration de mise \xE0 jour d'abonnement",
|
|
63998
64549
|
"quotes.blockers.quote_configuration_not_new_subscription": "S\xE9lectionnez une configuration de nouvel abonnement",
|
|
63999
64550
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "Un abonnement ne peut \xEAtre mis \xE0 jour qu'une seule fois dans un devis",
|
|
64551
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Chaque produit doit provenir du compte du fournisseur de facturation de l'abonnement mis \xE0 jour",
|
|
64000
64552
|
"quotes.blockers.quote_draft_invoice_missing": "Le devis doit avoir une facture en brouillon pour \xEAtre finalis\xE9",
|
|
64001
64553
|
"quotes.blockers.quote_draft_subscription_missing": "Le devis doit avoir un abonnement en brouillon pour \xEAtre finalis\xE9",
|
|
64002
64554
|
"quotes.blockers.quote_expiry_after_transition_date": "La date d'expiration du devis doit \xEAtre au plus tard la fin de la p\xE9riode de facturation en cours, ou la date de transition planifi\xE9e si elle est post\xE9rieure"
|
|
@@ -64065,6 +64617,7 @@ var it = {
|
|
|
64065
64617
|
"quotes.blockers.quote_configuration_not_subscription_update": "Seleziona una configurazione di aggiornamento dell'abbonamento",
|
|
64066
64618
|
"quotes.blockers.quote_configuration_not_new_subscription": "Seleziona una configurazione di nuovo abbonamento",
|
|
64067
64619
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "Un abbonamento pu\xF2 essere aggiornato una sola volta in un preventivo",
|
|
64620
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Ogni prodotto deve provenire dall'account del provider di fatturazione dell'abbonamento aggiornato",
|
|
64068
64621
|
"quotes.blockers.quote_draft_invoice_missing": "Il preventivo deve avere una fattura in bozza per essere finalizzato",
|
|
64069
64622
|
"quotes.blockers.quote_draft_subscription_missing": "Il preventivo deve avere un abbonamento in bozza per essere finalizzato",
|
|
64070
64623
|
"quotes.blockers.quote_expiry_after_transition_date": "La data di scadenza del preventivo deve essere entro la fine del periodo di fatturazione corrente, o la data di transizione pianificata se successiva"
|
|
@@ -64133,6 +64686,7 @@ var lt = {
|
|
|
64133
64686
|
"quotes.blockers.quote_configuration_not_subscription_update": "Pasirinkite prenumeratos atnaujinimo konfig\u016Bracij\u0105",
|
|
64134
64687
|
"quotes.blockers.quote_configuration_not_new_subscription": "Pasirinkite naujos prenumeratos konfig\u016Bracij\u0105",
|
|
64135
64688
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "Prenumerat\u0105 pasi\u016Blyme galima atnaujinti tik vien\u0105 kart\u0105",
|
|
64689
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Kiekvienas produktas turi b\u016Bti i\u0161 atnaujinamos prenumeratos atsiskaitymo teik\u0117jo paskyros",
|
|
64136
64690
|
"quotes.blockers.quote_draft_invoice_missing": "Pasi\u016Blymas turi tur\u0117ti s\u0105skaitos fakt\u016Bros juodra\u0161t\u012F, kad b\u016Bt\u0173 u\u017Ebaigtas",
|
|
64137
64691
|
"quotes.blockers.quote_draft_subscription_missing": "Pasi\u016Blymas turi tur\u0117ti prenumeratos juodra\u0161t\u012F, kad b\u016Bt\u0173 u\u017Ebaigtas",
|
|
64138
64692
|
"quotes.blockers.quote_expiry_after_transition_date": "Pasi\u016Blymo galiojimo pabaigos data turi b\u016Bti ne v\u0117lesn\u0117 nei dabartinio atsiskaitymo laikotarpio pabaiga arba suplanuota per\u0117jimo data, jei ji v\u0117lesn\u0117"
|
|
@@ -64201,6 +64755,7 @@ var nl = {
|
|
|
64201
64755
|
"quotes.blockers.quote_configuration_not_subscription_update": "Selecteer een configuratie voor een abonnementswijziging",
|
|
64202
64756
|
"quotes.blockers.quote_configuration_not_new_subscription": "Selecteer een configuratie voor een nieuw abonnement",
|
|
64203
64757
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "Een abonnement kan maar \xE9\xE9n keer per offerte worden gewijzigd",
|
|
64758
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Elk product moet afkomstig zijn van het account van de factureringsprovider van het gewijzigde abonnement",
|
|
64204
64759
|
"quotes.blockers.quote_draft_invoice_missing": "De offerte moet een conceptfactuur hebben om te worden afgerond",
|
|
64205
64760
|
"quotes.blockers.quote_draft_subscription_missing": "De offerte moet een conceptabonnement hebben om te worden afgerond",
|
|
64206
64761
|
"quotes.blockers.quote_expiry_after_transition_date": "De vervaldatum van de offerte moet uiterlijk het einde van de huidige factuurperiode zijn, of de geplande overgangsdatum als die later valt"
|
|
@@ -64269,6 +64824,7 @@ var pl = {
|
|
|
64269
64824
|
"quotes.blockers.quote_configuration_not_subscription_update": "Wybierz konfiguracj\u0119 aktualizacji subskrypcji",
|
|
64270
64825
|
"quotes.blockers.quote_configuration_not_new_subscription": "Wybierz konfiguracj\u0119 nowej subskrypcji",
|
|
64271
64826
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "Subskrypcj\u0119 mo\u017Cna zaktualizowa\u0107 w ofercie tylko raz",
|
|
64827
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Ka\u017Cdy produkt musi pochodzi\u0107 z konta dostawcy rozlicze\u0144 aktualizowanej subskrypcji",
|
|
64272
64828
|
"quotes.blockers.quote_draft_invoice_missing": "Oferta musi mie\u0107 faktur\u0119 w wersji roboczej, aby zosta\u0142a sfinalizowana",
|
|
64273
64829
|
"quotes.blockers.quote_draft_subscription_missing": "Oferta musi mie\u0107 subskrypcj\u0119 w wersji roboczej, aby zosta\u0142a sfinalizowana",
|
|
64274
64830
|
"quotes.blockers.quote_expiry_after_transition_date": "Data wyga\u015Bni\u0119cia oferty musi przypada\u0107 najp\xF3\u017Aniej na koniec bie\u017C\u0105cego okresu rozliczeniowego lub na zaplanowan\u0105 dat\u0119 przej\u015Bcia, je\u015Bli jest p\xF3\u017Aniejsza"
|
|
@@ -64337,6 +64893,7 @@ var pt = {
|
|
|
64337
64893
|
"quotes.blockers.quote_configuration_not_subscription_update": "Selecione uma configura\xE7\xE3o de atualiza\xE7\xE3o de subscri\xE7\xE3o",
|
|
64338
64894
|
"quotes.blockers.quote_configuration_not_new_subscription": "Selecione uma configura\xE7\xE3o de nova subscri\xE7\xE3o",
|
|
64339
64895
|
"quotes.blockers.quote_configuration_duplicate_subscription_update": "Uma subscri\xE7\xE3o s\xF3 pode ser atualizada uma vez num or\xE7amento",
|
|
64896
|
+
"quotes.blockers.quote_configuration_billing_provider_mismatch": "Cada produto deve vir da conta do fornecedor de fatura\xE7\xE3o da subscri\xE7\xE3o atualizada",
|
|
64340
64897
|
"quotes.blockers.quote_draft_invoice_missing": "O or\xE7amento deve ter uma fatura em rascunho para ser finalizado",
|
|
64341
64898
|
"quotes.blockers.quote_draft_subscription_missing": "O or\xE7amento deve ter uma subscri\xE7\xE3o em rascunho para ser finalizado",
|
|
64342
64899
|
"quotes.blockers.quote_expiry_after_transition_date": "A data de expira\xE7\xE3o do or\xE7amento deve ser, no m\xE1ximo, o fim do per\xEDodo de fatura\xE7\xE3o atual, ou a data de transi\xE7\xE3o agendada se for posterior"
|
|
@@ -67294,69 +67851,6 @@ var Decimal = P.constructor = clone2(DEFAULTS);
|
|
|
67294
67851
|
LN10 = new Decimal(LN10);
|
|
67295
67852
|
PI = new Decimal(PI);
|
|
67296
67853
|
|
|
67297
|
-
// ../hyperline-lib/build/utils/config/usStates.js
|
|
67298
|
-
var usStates = [
|
|
67299
|
-
"AA",
|
|
67300
|
-
"AE",
|
|
67301
|
-
"AK",
|
|
67302
|
-
"AL",
|
|
67303
|
-
"AP",
|
|
67304
|
-
"AR",
|
|
67305
|
-
"AS",
|
|
67306
|
-
"AZ",
|
|
67307
|
-
"CA",
|
|
67308
|
-
"CO",
|
|
67309
|
-
"CT",
|
|
67310
|
-
"DC",
|
|
67311
|
-
"DE",
|
|
67312
|
-
"FL",
|
|
67313
|
-
"GA",
|
|
67314
|
-
"GU",
|
|
67315
|
-
"HI",
|
|
67316
|
-
"IA",
|
|
67317
|
-
"ID",
|
|
67318
|
-
"IL",
|
|
67319
|
-
"IN",
|
|
67320
|
-
"KS",
|
|
67321
|
-
"KY",
|
|
67322
|
-
"LA",
|
|
67323
|
-
"MA",
|
|
67324
|
-
"MD",
|
|
67325
|
-
"ME",
|
|
67326
|
-
"MI",
|
|
67327
|
-
"MN",
|
|
67328
|
-
"MO",
|
|
67329
|
-
"MP",
|
|
67330
|
-
"MS",
|
|
67331
|
-
"MT",
|
|
67332
|
-
"NC",
|
|
67333
|
-
"ND",
|
|
67334
|
-
"NE",
|
|
67335
|
-
"NH",
|
|
67336
|
-
"NJ",
|
|
67337
|
-
"NM",
|
|
67338
|
-
"NV",
|
|
67339
|
-
"NY",
|
|
67340
|
-
"OH",
|
|
67341
|
-
"OK",
|
|
67342
|
-
"OR",
|
|
67343
|
-
"PA",
|
|
67344
|
-
"PR",
|
|
67345
|
-
"RI",
|
|
67346
|
-
"SC",
|
|
67347
|
-
"SD",
|
|
67348
|
-
"TN",
|
|
67349
|
-
"TX",
|
|
67350
|
-
"UT",
|
|
67351
|
-
"VA",
|
|
67352
|
-
"VI",
|
|
67353
|
-
"VT",
|
|
67354
|
-
"WA",
|
|
67355
|
-
"WI",
|
|
67356
|
-
"WV",
|
|
67357
|
-
"WY"
|
|
67358
|
-
];
|
|
67359
|
-
|
|
67360
67854
|
// ../hyperline-lib/build/utils/dates.js
|
|
67361
67855
|
var import_shared2 = __toESM(require_shared(), 1);
|
|
67362
67856
|
var PERIOD_BOUND_DRIFT_TOLERANCE_MS = 2 * 60 * 1e3;
|
|
@@ -67381,7 +67875,8 @@ var dateRealignmentModeSchema = external_exports.enum([
|
|
|
67381
67875
|
"utc_midnight_import",
|
|
67382
67876
|
"dst_hour_drift",
|
|
67383
67877
|
"month_start_drift",
|
|
67384
|
-
"manual_phase_end_midnight"
|
|
67878
|
+
"manual_phase_end_midnight",
|
|
67879
|
+
"customer_timezone_change"
|
|
67385
67880
|
]).default("utc_midnight_import");
|
|
67386
67881
|
var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
|
|
67387
67882
|
[23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
@@ -67431,8 +67926,14 @@ var authorizedOperators = [
|
|
|
67431
67926
|
var NullFilterValueSchema = BooleanSchema.or(external_exports.literal("")).optional();
|
|
67432
67927
|
|
|
67433
67928
|
// ../hyperline-lib/build/http/dto/state.js
|
|
67434
|
-
var StateSchema = external_exports.
|
|
67435
|
-
description:
|
|
67929
|
+
var StateSchema = external_exports.string().openapi({
|
|
67930
|
+
description: `State or province of the address, stored as its code (the second part of the ISO 3166-2 code, e.g. \`CA\` for \`US-CA\`) for:
|
|
67931
|
+
- United States: state, see [ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)
|
|
67932
|
+
- Canada: province or territory, see [ISO 3166-2:CA](https://en.wikipedia.org/wiki/ISO_3166-2:CA)
|
|
67933
|
+
- Italy: province, see [ISO 3166-2:IT](https://en.wikipedia.org/wiki/ISO_3166-2:IT)
|
|
67934
|
+
- Brazil: state, see [ISO 3166-2:BR](https://en.wikipedia.org/wiki/ISO_3166-2:BR)
|
|
67935
|
+
|
|
67936
|
+
A code or a name is accepted (e.g. \`ON\` or \`Ontario\`); a value that matches neither for these countries is rejected. For any other country, the state is ignored.`,
|
|
67436
67937
|
example: "CA"
|
|
67437
67938
|
});
|
|
67438
67939
|
|
|
@@ -67634,6 +68135,62 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
|
|
|
67634
68135
|
// ../hyperline-mcp/build/server/server.js
|
|
67635
68136
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
67636
68137
|
|
|
68138
|
+
// build/multipart.js
|
|
68139
|
+
import { readFile as readFile2 } from "node:fs/promises";
|
|
68140
|
+
import { basename, extname } from "node:path";
|
|
68141
|
+
var MIMETYPES_BY_EXTENSION = {
|
|
68142
|
+
".csv": "text/csv",
|
|
68143
|
+
".doc": "application/msword",
|
|
68144
|
+
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
68145
|
+
".gif": "image/gif",
|
|
68146
|
+
".jpeg": "image/jpeg",
|
|
68147
|
+
".jpg": "image/jpeg",
|
|
68148
|
+
".json": "application/json",
|
|
68149
|
+
".pdf": "application/pdf",
|
|
68150
|
+
".png": "image/png",
|
|
68151
|
+
".svg": "image/svg+xml",
|
|
68152
|
+
".txt": "text/plain",
|
|
68153
|
+
".xls": "application/vnd.ms-excel",
|
|
68154
|
+
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
68155
|
+
".xml": "application/xml"
|
|
68156
|
+
};
|
|
68157
|
+
function getMimetypeFromPath(filePath) {
|
|
68158
|
+
return MIMETYPES_BY_EXTENSION[extname(filePath).toLowerCase()] ?? "application/octet-stream";
|
|
68159
|
+
}
|
|
68160
|
+
function appendFormValue({ formData, key, value }) {
|
|
68161
|
+
if (value === void 0) {
|
|
68162
|
+
return;
|
|
68163
|
+
}
|
|
68164
|
+
if (value === null) {
|
|
68165
|
+
formData.append(key, "");
|
|
68166
|
+
return;
|
|
68167
|
+
}
|
|
68168
|
+
if (Array.isArray(value)) {
|
|
68169
|
+
for (const [index, item] of value.entries()) {
|
|
68170
|
+
appendFormValue({ formData, key: `${key}[${index}]`, value: item });
|
|
68171
|
+
}
|
|
68172
|
+
return;
|
|
68173
|
+
}
|
|
68174
|
+
if (typeof value === "object") {
|
|
68175
|
+
throw new Error(`--${key} cannot be sent alongside files: a multipart request only carries scalar fields.`);
|
|
68176
|
+
}
|
|
68177
|
+
formData.append(key, String(value));
|
|
68178
|
+
}
|
|
68179
|
+
async function buildMultipartBody({ data, files }) {
|
|
68180
|
+
const formData = new FormData();
|
|
68181
|
+
for (const [key, value] of Object.entries(data)) {
|
|
68182
|
+
appendFormValue({ formData, key, value });
|
|
68183
|
+
}
|
|
68184
|
+
const fileUploads = Object.entries(files).flatMap(([fieldName, filePaths]) => filePaths.map((filePath) => ({ fieldName, filePath })));
|
|
68185
|
+
const fileContents = await Promise.all(fileUploads.map(({ filePath }) => readFile2(filePath)));
|
|
68186
|
+
for (const [index, { fieldName, filePath }] of fileUploads.entries()) {
|
|
68187
|
+
formData.append(fieldName, new Blob([new Uint8Array(fileContents[index])], {
|
|
68188
|
+
type: getMimetypeFromPath(filePath)
|
|
68189
|
+
}), basename(filePath));
|
|
68190
|
+
}
|
|
68191
|
+
return formData;
|
|
68192
|
+
}
|
|
68193
|
+
|
|
67637
68194
|
// build/output.js
|
|
67638
68195
|
function formatOutput({ data, format: format2 }) {
|
|
67639
68196
|
if (format2 === "json") {
|
|
@@ -67693,7 +68250,7 @@ function createCLIContext({ apiKey, baseUrl, outputFormat, source, companyId })
|
|
|
67693
68250
|
return {
|
|
67694
68251
|
baseUrl,
|
|
67695
68252
|
outputFormat,
|
|
67696
|
-
async execute({ method, path: path2, args, queryParamKeys = [], body, baseUrlOverride }) {
|
|
68253
|
+
async execute({ method, path: path2, args, queryParamKeys = [], body, files, baseUrlOverride }) {
|
|
67697
68254
|
const { url: url2, params, data } = buildRequestConfig({
|
|
67698
68255
|
path: path2,
|
|
67699
68256
|
args,
|
|
@@ -67702,12 +68259,16 @@ function createCLIContext({ apiKey, baseUrl, outputFormat, source, companyId })
|
|
|
67702
68259
|
});
|
|
67703
68260
|
const requestData = body ?? data;
|
|
67704
68261
|
const hasData = Array.isArray(requestData) ? requestData.length > 0 : requestData != null && Object.keys(requestData).length > 0;
|
|
68262
|
+
const hasFiles = Object.values(files ?? {}).some((filePaths) => filePaths.length > 0);
|
|
67705
68263
|
try {
|
|
67706
68264
|
const response = await httpClient.request({
|
|
67707
68265
|
method,
|
|
67708
68266
|
url: url2,
|
|
67709
68267
|
params,
|
|
67710
|
-
data:
|
|
68268
|
+
data: hasFiles ? await buildMultipartBody({
|
|
68269
|
+
data: requestData ?? {},
|
|
68270
|
+
files: files ?? {}
|
|
68271
|
+
}) : hasData ? requestData : void 0,
|
|
67711
68272
|
...baseUrlOverride ? { baseURL: baseUrlOverride } : {},
|
|
67712
68273
|
headers: {
|
|
67713
68274
|
"Hyperline-Source": source,
|