openapi: 3.1.0 info: title: HEVN 2FA invoices API description: Backend API for HEVN mobile neobank version: 0.1.2 servers: - url: https://api.hevn.finance description: Production tags: - name: invoices paths: /api/v1/documents/contracts/invoices: post: tags: - invoices summary: Create invoice operationId: create_invoice_api_v1_documents_contracts_invoices_post security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateInvoiceRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - invoices summary: List invoices for current user operationId: list_invoices_api_v1_documents_contracts_invoices_get security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/documents/contracts/invoices/uploaded: post: tags: - invoices summary: Create incoming invoice from uploaded document operationId: create_uploaded_invoice_api_v1_documents_contracts_invoices_uploaded_post security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUploadedInvoiceRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/documents/contracts/invoices/share_link: post: tags: - invoices summary: Generate a share link for invoice creation operationId: invoice_share_link_api_v1_documents_contracts_invoices_share_link_post security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceShareLinkResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/documents/contracts/invoices/batch_invoicing: post: tags: - invoices summary: Generate invoices for multiple contracts operationId: batch_invoicing_api_v1_documents_contracts_invoices_batch_invoicing_post security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchInvoicingRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BatchInvoicingResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/documents/contracts/invoices/{invoice_id}: get: tags: - invoices summary: Get invoice by ID operationId: get_invoice_api_v1_documents_contracts_invoices__invoice_id__get security: - HTTPBearer: [] parameters: - name: invoice_id in: path required: true schema: type: string format: uuid title: Invoice Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - invoices summary: Update invoice (set transaction_hash) operationId: update_invoice_api_v1_documents_contracts_invoices__invoice_id__put security: - HTTPBearer: [] parameters: - name: invoice_id in: path required: true schema: type: string format: uuid title: Invoice Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateInvoiceRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/documents/contracts/{contract_id}/create-invoice: post: tags: - invoices summary: Create invoice from contract operationId: create_invoice_from_contract_api_v1_documents_contracts__contract_id__create_invoice_post security: - HTTPBearer: [] parameters: - name: contract_id in: path required: true schema: type: string format: uuid title: Contract Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateInvoiceFromContractRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/documents/contracts/invoices/ai_parse: post: tags: - invoices summary: AI parse invoice PDF and return invoice preview operationId: ai_parse_invoice_api_v1_documents_contracts_invoices_ai_parse_post security: - HTTPBearer: [] parameters: - name: document_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Document Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PublicInvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/invoices/documents/contracts/invoices: post: tags: - invoices summary: Create invoice operationId: create_invoice_package_alias_api_v1_invoices_documents_contracts_invoices_post security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateInvoiceRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - invoices summary: List invoices for current user operationId: list_invoices_package_alias_api_v1_invoices_documents_contracts_invoices_get security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/invoices/documents/contracts/invoices/uploaded: post: tags: - invoices summary: Create incoming invoice from uploaded document operationId: create_uploaded_invoice_package_alias_api_v1_invoices_documents_contracts_invoices_uploaded_post security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUploadedInvoiceRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/invoices/documents/contracts/invoices/share_link: post: tags: - invoices summary: Generate a share link for invoice creation operationId: invoice_share_link_package_alias_api_v1_invoices_documents_contracts_invoices_share_link_post security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceShareLinkResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/invoices/documents/contracts/invoices/batch_invoicing: post: tags: - invoices summary: Generate invoices for multiple contracts operationId: batch_invoicing_package_alias_api_v1_invoices_documents_contracts_invoices_batch_invoicing_post security: - HTTPBearer: [] parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchInvoicingRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BatchInvoicingResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/invoices/documents/contracts/invoices/{invoice_id}: get: tags: - invoices summary: Get invoice by ID operationId: get_invoice_package_alias_api_v1_invoices_documents_contracts_invoices__invoice_id__get security: - HTTPBearer: [] parameters: - name: invoice_id in: path required: true schema: type: string format: uuid title: Invoice Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - invoices summary: Update invoice (set transaction_hash) operationId: update_invoice_package_alias_api_v1_invoices_documents_contracts_invoices__invoice_id__put security: - HTTPBearer: [] parameters: - name: invoice_id in: path required: true schema: type: string format: uuid title: Invoice Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateInvoiceRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/invoices/documents/contracts/{contract_id}/create-invoice: post: tags: - invoices summary: Create invoice from contract operationId: create_invoice_from_contract_package_alias_api_v1_invoices_documents_contracts__contract_id__create_invoice_post security: - HTTPBearer: [] parameters: - name: contract_id in: path required: true schema: type: string format: uuid title: Contract Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateInvoiceFromContractRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/invoices/documents/contracts/invoices/ai_parse: post: tags: - invoices summary: AI parse invoice PDF and return invoice preview operationId: ai_parse_invoice_package_alias_api_v1_invoices_documents_contracts_invoices_ai_parse_post security: - HTTPBearer: [] parameters: - name: document_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Document Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PublicInvoiceResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ContactWalletResponse: properties: address: type: string title: Address chainId: anyOf: - type: string - type: 'null' title: Chainid currency: type: string title: Currency default: EUR internal: type: boolean title: Internal default: false type: object required: - address title: ContactWalletResponse description: Wallet payment method block used by invoice/payment method schemas. InvoiceDocumentInfo: properties: id: type: string format: uuid title: Id name: type: string title: Name key: type: string title: Key type: object required: - id - name - key title: InvoiceDocumentInfo description: 'Document attached to an invoice. `key` is a short-lived signed token. To download call GET /documents/download/{id}?key={key}.' app__schemas__base__ContactRelationship: type: string enum: - charity - commercial_investment - corporate_card - credit_card - dividend - family - financial_services - good_sold - goods_bought - government - insurance - intergroup_transfer - intra_group_dividends - information_technology - leasing - loan_charges - merchant_settlement - mobile_wallet - none - non_resident_transfer_between_accounts - pension - personal_expenses - prepaid_cards - professional - rental - resident_transfer_between_accounts - salaries - telecommunications - travel - utility_bill title: ContactRelationship description: 'Unified contact relationship / transfer purpose. Values match Align AlignTransferPurpose (the more granular set). Mapped to Swipelux AccountHolderRelationship via ``swipelux_relationship``.' ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError BatchInvoiceResult: properties: contractId: type: string format: uuid title: Contractid counterpartyId: anyOf: - type: string format: uuid - type: 'null' title: Counterpartyid periodNumber: anyOf: - type: integer - type: 'null' title: Periodnumber status: type: string title: Status invoice: anyOf: - $ref: '#/components/schemas/InvoiceResponse' - type: 'null' detail: anyOf: - type: string - type: 'null' title: Detail type: object required: - contractId - status title: BatchInvoiceResult InvoiceShareLinkResponse: properties: link: type: string title: Link key: type: string title: Key keyPreview: type: string title: Keypreview type: object required: - link - key - keyPreview title: InvoiceShareLinkResponse description: Response with a share link for invoice creation. HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ContractStatus: type: string enum: - pending_approval_by_contractor - pending_approval_by_client - active - completed - cancelled - paused title: ContractStatus description: Contract status. Currency: type: string enum: - USD - EUR - GBP - JPY - CHF - CAD - AUD - NZD - SEK - NOK - AED - HKD title: Currency description: Supported invoice/contract currencies. G10 majors + AED/HKD. BatchInvoicingResponse: properties: results: items: $ref: '#/components/schemas/BatchInvoiceResult' type: array title: Results type: object title: BatchInvoicingResponse InvoiceResponse: properties: id: type: string format: uuid title: Id onchainTransactionId: anyOf: - type: string - type: 'null' title: Onchaintransactionid transaction: anyOf: - $ref: '#/components/schemas/InvoiceTransactionInfo' - type: 'null' amount: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Amount discount: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Discount currency: $ref: '#/components/schemas/Currency' comment: anyOf: - type: string - type: 'null' title: Comment emailMessage: anyOf: - type: string - type: 'null' title: Emailmessage invoiceNumber: anyOf: - type: string - type: 'null' title: Invoicenumber periodNumber: anyOf: - type: integer - type: 'null' title: Periodnumber issuedDate: anyOf: - type: string format: date - type: 'null' title: Issueddate dueDate: anyOf: - type: string format: date - type: 'null' title: Duedate items: items: additionalProperties: true type: object type: array title: Items paymentMethods: items: anyOf: - $ref: '#/components/schemas/IBANAccountDetails-Output' - $ref: '#/components/schemas/USExternalAccountDetails-Output' - $ref: '#/components/schemas/SwiftAccountDetails-Output' - $ref: '#/components/schemas/ContactWalletResponse' - $ref: '#/components/schemas/EmailAccountInput' type: array title: Paymentmethods status: $ref: '#/components/schemas/InvoiceStatus' client: anyOf: - $ref: '#/components/schemas/InvoiceParticipant' - type: 'null' contractor: anyOf: - $ref: '#/components/schemas/InvoiceParticipant' - type: 'null' contract: anyOf: - $ref: '#/components/schemas/InvoiceContractInfo' - type: 'null' invoiceLink: anyOf: - type: string - type: 'null' title: Invoicelink documents: items: $ref: '#/components/schemas/InvoiceDocumentInfo' type: array title: Documents paidAt: anyOf: - type: string format: date-time - type: 'null' title: Paidat createdAt: type: string format: date-time title: Createdat updatedAt: type: string format: date-time title: Updatedat type: object required: - id - amount - currency - status - createdAt - updatedAt title: InvoiceResponse description: Invoice response. InvoiceStatus: type: string enum: - draft - sent - paid - cancelled - client_paid - client_declined title: InvoiceStatus description: Invoice status. CreateInvoiceFromContractRequest: properties: amount: anyOf: - type: number - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Amount comment: anyOf: - type: string - type: 'null' title: Comment invoicePrefix: type: string maxLength: 16 minLength: 1 pattern: ^[A-Za-z0-9_-]+$ title: Invoiceprefix description: Prefix for auto-generated invoice_number, e.g. "INV" → "INV-0001". default: INV contractorAddress: anyOf: - $ref: '#/components/schemas/UserAddress' - type: 'null' periodStart: anyOf: - type: string format: date - type: 'null' title: Periodstart addItems: items: additionalProperties: true type: object type: array title: Additems type: object title: CreateInvoiceFromContractRequest description: 'Request to create an invoice from a contract. Either party (client or contractor) of the contract may create the invoice; attribution always flows from ``contract.contractor`` to ``contract.client``. Amount defaults to the contract amount when not provided. ``contractor_address`` is optional — when omitted, the snapshot stored on the contract (or the linked contact''s address) is used. ``invoice_number`` is auto-generated per (contractor, client) pair as e.g. ``"INV-0001"``.' USExternalAccountDetails-Output: properties: bankName: type: string title: Bankname bankAddress: anyOf: - type: string - type: 'null' title: Bankaddress currency: anyOf: - type: string - type: 'null' title: Currency accountHolderType: $ref: '#/components/schemas/AlignAccountHolderType' accountHolderFirstName: anyOf: - type: string - type: 'null' title: Accountholderfirstname accountHolderLastName: anyOf: - type: string - type: 'null' title: Accountholderlastname accountHolderBusinessName: anyOf: - type: string - type: 'null' title: Accountholderbusinessname accountHolderAddress: anyOf: - $ref: '#/components/schemas/UserAddress' - type: 'null' relationship: anyOf: - $ref: '#/components/schemas/app__schemas__base__ContactRelationship' - type: 'null' paymentReference: anyOf: - type: string - type: 'null' title: Paymentreference accountType: type: string enum: - ach - fedwire title: Accounttype default: ach us: $ref: '#/components/schemas/USAccountDetails' beneficiaryName: anyOf: - type: string - type: 'null' title: Beneficiaryname description: Frontend-only alias derived from account holder fields. readOnly: true type: object required: - bankName - accountHolderType - us - beneficiaryName title: USExternalAccountDetails description: US domestic (ACH) external account. InvoiceTransactionInfo: properties: onchainTransactionId: type: string title: Onchaintransactionid amount: type: number title: Amount txHash: type: string title: Txhash type: type: string title: Type createdAt: type: string format: date-time title: Createdat type: object required: - onchainTransactionId - amount - txHash - type - createdAt title: InvoiceTransactionInfo description: Minimal transaction info embedded in invoice response. UpdateInvoiceRequest: properties: onchainTransactionId: anyOf: - type: string - type: 'null' title: Onchaintransactionid status: $ref: '#/components/schemas/InvoiceStatus' type: object required: - status title: UpdateInvoiceRequest description: Request to update an invoice. PublicInvoiceResponse: properties: id: type: string format: uuid title: Id amount: type: number title: Amount currency: type: string title: Currency comment: anyOf: - type: string - type: 'null' title: Comment invoiceNumber: anyOf: - type: string - type: 'null' title: Invoicenumber issuedDate: anyOf: - type: string format: date - type: 'null' title: Issueddate dueDate: anyOf: - type: string format: date - type: 'null' title: Duedate status: $ref: '#/components/schemas/InvoiceStatus' client: anyOf: - $ref: '#/components/schemas/InvoiceParticipant' - type: 'null' contractor: anyOf: - $ref: '#/components/schemas/InvoiceParticipant' - type: 'null' items: items: $ref: '#/components/schemas/PublicInvoiceItem' type: array title: Items paymentMethods: items: anyOf: - $ref: '#/components/schemas/IBANAccountDetails-Output' - $ref: '#/components/schemas/USExternalAccountDetails-Output' - $ref: '#/components/schemas/SwiftAccountDetails-Output' - $ref: '#/components/schemas/ContactWalletResponse' - $ref: '#/components/schemas/EmailAccountInput' type: array title: Paymentmethods default: [] contract: anyOf: - $ref: '#/components/schemas/PublicInvoiceContractInfo' - type: 'null' invoiceLink: anyOf: - type: string - type: 'null' title: Invoicelink documents: items: $ref: '#/components/schemas/InvoiceDocumentInfo' type: array title: Documents default: [] createdAt: type: string format: date-time title: Createdat type: object required: - id - amount - currency - status - items - createdAt title: PublicInvoiceResponse USAccountDetails: properties: accountNumber: type: string title: Accountnumber routingNumber: type: string title: Routingnumber type: object required: - accountNumber - routingNumber title: USAccountDetails description: US domestic account details (ACH). SwiftDetails: properties: accountNumber: type: string title: Accountnumber routingNumber: anyOf: - type: string - type: 'null' title: Routingnumber bic: type: string title: Bic type: object required: - accountNumber - bic title: SwiftDetails description: SWIFT (international wire) account details. AlignAccountHolderType: type: string enum: - individual - business title: AlignAccountHolderType description: Account holder type. UserAddress: properties: streetAddress: anyOf: - type: string - type: 'null' title: Streetaddress addressLine2: anyOf: - type: string - type: 'null' title: Addressline2 city: anyOf: - type: string - type: 'null' title: City state: anyOf: - type: string - type: 'null' title: State country: anyOf: - $ref: '#/components/schemas/CountryCode' - type: 'null' zip: anyOf: - type: string - type: 'null' title: Zip type: object title: UserAddress description: 'Address schema for user. Canonical field names: street_address, address_line_2, city, state, country, zip. Accepts legacy Align/IBAN field names (street_line_1, street_line_2, postal_code) for backward compatibility with existing JSONB data.' ContractType: type: string enum: - service - employment - nda - contractor - default_contractor - custom - vendor - milestone - msa - other title: ContractType description: Contract type. EmailAccountInput: properties: accountType: type: string const: email title: Accounttype default: email email: type: string title: Email type: object required: - email title: EmailAccountInput description: Email contact input. IBANAccountDetails-Output: properties: bankName: type: string title: Bankname bankAddress: anyOf: - type: string - type: 'null' title: Bankaddress currency: anyOf: - type: string - type: 'null' title: Currency accountHolderType: $ref: '#/components/schemas/AlignAccountHolderType' accountHolderFirstName: anyOf: - type: string - type: 'null' title: Accountholderfirstname accountHolderLastName: anyOf: - type: string - type: 'null' title: Accountholderlastname accountHolderBusinessName: anyOf: - type: string - type: 'null' title: Accountholderbusinessname accountHolderAddress: anyOf: - $ref: '#/components/schemas/UserAddress' - type: 'null' relationship: anyOf: - $ref: '#/components/schemas/app__schemas__base__ContactRelationship' - type: 'null' paymentReference: anyOf: - type: string - type: 'null' title: Paymentreference accountType: type: string enum: - sepa - uaefts title: Accounttype default: sepa ibanNumber: type: string title: Ibannumber bic: anyOf: - type: string - type: 'null' title: Bic beneficiaryName: anyOf: - type: string - type: 'null' title: Beneficiaryname description: Frontend-only alias derived from account holder fields. readOnly: true type: object required: - bankName - accountHolderType - ibanNumber - beneficiaryName title: IBANAccountDetails description: IBAN (SEPA) external account. PublicInvoiceItem: properties: name: anyOf: - type: string - type: 'null' title: Name quantity: anyOf: - type: number - type: 'null' title: Quantity price: anyOf: - type: number - type: 'null' title: Price type: object title: PublicInvoiceItem PublicInvoiceContractInfo: properties: id: type: string format: uuid title: Id documentName: anyOf: - type: string - type: 'null' title: Documentname documentLink: anyOf: - type: string - type: 'null' title: Documentlink type: object required: - id title: PublicInvoiceContractInfo CreateInvoiceRequest: properties: currency: $ref: '#/components/schemas/Currency' default: USD comment: anyOf: - type: string - type: 'null' title: Comment emailMessage: anyOf: - type: string maxLength: 2000 - type: 'null' title: Emailmessage invoicePrefix: type: string maxLength: 16 minLength: 1 pattern: ^[A-Za-z0-9_-]+$ title: Invoiceprefix description: Prefix for auto-generated invoice_number, e.g. "INV" → "INV-0001". default: INV issuedDate: anyOf: - type: string format: date - type: 'null' title: Issueddate dueDate: anyOf: - type: string format: date - type: 'null' title: Duedate items: items: additionalProperties: true type: object type: array title: Items discount: anyOf: - type: number minimum: 0 - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Discount description: Fixed discount in invoice currency. Subtracted from sum of items. documentIds: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Documentids contractorEmail: type: string title: Contractoremail contractorDisplayName: type: string title: Contractordisplayname contractorAddress: anyOf: - $ref: '#/components/schemas/UserAddress' - type: 'null' clientEmail: type: string title: Clientemail clientDisplayName: type: string title: Clientdisplayname clientAddress: anyOf: - $ref: '#/components/schemas/UserAddress' - type: 'null' banks: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Banks onchain: type: boolean title: Onchain default: false type: object required: - contractorEmail - contractorDisplayName - clientEmail - clientDisplayName title: CreateInvoiceRequest description: 'Request to create an invoice. Participant data (email, display_name, address) is snapshotted at creation time. Amount is computed as sum of items[].price * items[].quantity. invoice_number is auto-generated per (contractor, client) pair.' InvoiceContractInfo: properties: id: type: string format: uuid title: Id type: $ref: '#/components/schemas/ContractType' status: $ref: '#/components/schemas/ContractStatus' period: anyOf: - type: string - type: 'null' title: Period isRecurring: type: boolean title: Isrecurring activationAt: anyOf: - type: string format: date-time - type: 'null' title: Activationat expirationAt: anyOf: - type: string format: date-time - type: 'null' title: Expirationat type: object required: - id - type - status - isRecurring title: InvoiceContractInfo description: Minimal contract info embedded in invoice response. BatchContractInvoiceRequest: properties: contractId: type: string format: uuid title: Contractid items: items: additionalProperties: true type: object type: array minItems: 1 title: Items period: type: integer minimum: 0 title: Period memo: anyOf: - type: string - type: 'null' title: Memo finalize: type: boolean title: Finalize default: false type: object required: - contractId - items - period title: BatchContractInvoiceRequest description: 'Per-contract invoice options for batch invoicing. A call without ``finalize`` creates the period invoice as a DRAFT (or updates its items if a DRAFT already exists). Both the client and the contractor may edit a DRAFT. Setting ``finalize=True`` additionally moves the invoice to SENT, generates the PDF and emails the client — only the client (contract owner) is allowed to finalize.' CreateUploadedInvoiceRequest: properties: amount: anyOf: - type: number exclusiveMinimum: 0 - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Amount currency: $ref: '#/components/schemas/Currency' default: USD comment: anyOf: - type: string - type: 'null' title: Comment emailMessage: anyOf: - type: string maxLength: 2000 - type: 'null' title: Emailmessage issuedDate: anyOf: - type: string format: date - type: 'null' title: Issueddate dueDate: anyOf: - type: string format: date - type: 'null' title: Duedate items: items: additionalProperties: true type: object type: array title: Items documentIds: items: type: string format: uuid type: array title: Documentids contractorEmail: type: string title: Contractoremail contractorDisplayName: anyOf: - type: string - type: 'null' title: Contractordisplayname contractorAddress: anyOf: - $ref: '#/components/schemas/UserAddress' - type: 'null' contactIds: items: type: string format: uuid type: array title: Contactids type: object required: - amount - contractorEmail title: CreateUploadedInvoiceRequest description: 'Create an incoming invoice from a manually uploaded/local document. Current user is the client/payer. Payment methods are resolved from saved contacts; direct paymentMethods input is intentionally not accepted.' CountryCode: type: string enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW title: CountryCode description: ISO 3166-1 alpha-2 country codes. InvoiceParticipant: properties: email: type: string title: Email displayName: anyOf: - type: string - type: 'null' title: Displayname address: anyOf: - $ref: '#/components/schemas/UserAddress' - type: 'null' type: object required: - email title: InvoiceParticipant description: Minimal participant info for invoice response. BatchInvoicingRequest: items: $ref: '#/components/schemas/BatchContractInvoiceRequest' type: array minItems: 1 title: BatchInvoicingRequest description: Generate invoices for multiple contracts. SwiftAccountDetails-Output: properties: bankName: type: string title: Bankname bankAddress: anyOf: - type: string - type: 'null' title: Bankaddress currency: anyOf: - type: string - type: 'null' title: Currency accountHolderType: $ref: '#/components/schemas/AlignAccountHolderType' accountHolderFirstName: anyOf: - type: string - type: 'null' title: Accountholderfirstname accountHolderLastName: anyOf: - type: string - type: 'null' title: Accountholderlastname accountHolderBusinessName: anyOf: - type: string - type: 'null' title: Accountholderbusinessname accountHolderAddress: anyOf: - $ref: '#/components/schemas/UserAddress' - type: 'null' relationship: anyOf: - $ref: '#/components/schemas/app__schemas__base__ContactRelationship' - type: 'null' paymentReference: anyOf: - type: string - type: 'null' title: Paymentreference accountType: type: string const: swift title: Accounttype default: swift swift: $ref: '#/components/schemas/SwiftDetails' beneficiaryName: anyOf: - type: string - type: 'null' title: Beneficiaryname description: Frontend-only alias derived from account holder fields. readOnly: true type: object required: - bankName - accountHolderType - swift - beneficiaryName title: SwiftAccountDetails description: SWIFT (international wire) external account. InvoiceListResponse: properties: invoices: items: $ref: '#/components/schemas/InvoiceResponse' type: array title: Invoices type: object required: - invoices title: InvoiceListResponse description: List of invoices. securitySchemes: HTTPBearer: type: http scheme: bearer x-default: Bearer ApiKeyAuth: type: apiKey in: header name: x-api-key description: Alternative HEVN API key header. The CLI defaults to Authorization Bearer unless configured with HEVN_API_KEY_HEADER=X-Api-Key.