openapi: 3.1.0 info: title: HEVN 2FA Public API description: Backend API for HEVN mobile neobank version: 0.1.2 servers: - url: https://api.hevn.finance description: Production tags: - name: Public paths: /api/v1/public/time: get: tags: - Public summary: Server Time operationId: server_time_api_v1_public_time_get responses: '200': description: Successful Response content: application/json: schema: additionalProperties: true type: object title: Response Server Time Api V1 Public Time Get /api/v1/public/waitlist: post: tags: - Public summary: Join Waitlist operationId: join_waitlist_api_v1_public_waitlist_post requestBody: content: application/json: schema: $ref: '#/components/schemas/WaitlistRequest' required: true responses: '200': description: Successful Response content: application/json: schema: additionalProperties: true type: object title: Response Join Waitlist Api V1 Public Waitlist Post '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/public/rates/{currency}: get: tags: - Public summary: Get public FX rates operationId: get_public_rate_api_v1_public_rates__currency__get parameters: - name: currency in: path required: true schema: type: string title: Currency responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RateResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/public/invoices/user_details: get: tags: - Public summary: Get contractor details by invoice share key description: Return the user details of the share-link owner so a third party can invoice them. operationId: invoice_user_details_api_v1_public_invoices_user_details_get parameters: - name: key in: query required: true schema: type: string title: Key responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InvoiceUserDetailsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/public/invoices/{invoice_id}: get: tags: - Public summary: Get Public Invoice description: Public invoice details — no auth required. operationId: get_public_invoice_api_v1_public_invoices__invoice_id__get parameters: - name: invoice_id in: path required: true schema: type: string format: uuid title: Invoice Id 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/public/products/{product_id}: get: tags: - Public summary: Get Public Product description: Public product details — no auth required. operationId: get_public_product_api_v1_public_products__product_id__get parameters: - name: product_id in: path required: true schema: type: string format: uuid title: Product Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PublicProductResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/public/products/{product_id}/pay: post: tags: - Public summary: Pay Product description: Create one_click quote for product payment. No auth required. operationId: pay_product_api_v1_public_products__product_id__pay_post parameters: - name: product_id in: path required: true schema: type: string format: uuid title: Product Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PayProductRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UniversalQuoteResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/public/{payment_id}/submit: post: tags: - Public summary: Submit Product Deposit description: Submit deposit tx_hash to speed up settlement. No auth required. operationId: submit_product_deposit_api_v1_public__payment_id__submit_post security: - HTTPBearer: [] parameters: - name: payment_id in: path required: true schema: type: string format: uuid title: Payment 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/SubmitDepositRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PaymentTransactionResponse' '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``.' InvoiceUserDetailsResponse: properties: client: $ref: '#/components/schemas/InvoiceParticipant' clientId: type: string format: uuid title: Clientid type: object required: - client - clientId title: InvoiceUserDetailsResponse description: Contractor details returned by a share link. 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 HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError WaitlistRequest: properties: email: type: string format: email title: Email website: type: string title: Website type: object required: - email - website title: WaitlistRequest PayProductRequest: properties: originChain: type: string title: Originchain originToken: type: string title: Origintoken amount: anyOf: - type: number - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Amount buyerEmail: anyOf: - type: string - type: 'null' title: Buyeremail memo: anyOf: - type: string - type: 'null' title: Memo clientReferenceId: anyOf: - type: string - type: 'null' title: Clientreferenceid invoiceId: anyOf: - type: string format: uuid - type: 'null' title: Invoiceid metadata: additionalProperties: true type: object title: Metadata default: {} type: object required: - originChain - originToken title: PayProductRequest InvoiceStatus: type: string enum: - draft - sent - paid - cancelled - client_paid - client_declined title: InvoiceStatus description: Invoice status. RateResponse: properties: bankTransfer: anyOf: - type: string - type: 'null' title: Banktransfer card: anyOf: - type: string - type: 'null' title: Card usdRate: anyOf: - type: string - type: 'null' title: Usdrate type: object title: RateResponse description: Combined FX rate response. 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. 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). AlignAccountHolderType: type: string enum: - individual - business title: AlignAccountHolderType description: Account holder type. 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. UniversalQuoteResponse: properties: quoteId: type: string title: Quoteid provider: anyOf: - type: string - type: 'null' title: Provider paymentChannel: type: string title: Paymentchannel fromAmount: type: number title: Fromamount fromCurrency: type: string title: Fromcurrency toAmount: type: number title: Toamount depositMemo: anyOf: - type: string - type: 'null' title: Depositmemo toCurrency: type: string title: Tocurrency feeAmount: anyOf: - type: number - type: 'null' title: Feeamount feeCurrency: anyOf: - type: string - type: 'null' title: Feecurrency rate: anyOf: - type: number - type: 'null' title: Rate expiresAt: anyOf: - type: string format: date-time - type: 'null' title: Expiresat maskedIban: anyOf: - type: string - type: 'null' title: Maskediban depositAddress: anyOf: - type: string - type: 'null' title: Depositaddress recipientAddress: anyOf: - type: string - type: 'null' title: Recipientaddress originChainId: anyOf: - type: string - type: 'null' title: Originchainid destinationChainId: anyOf: - type: string - type: 'null' title: Destinationchainid transactionRequest: anyOf: - additionalProperties: true type: object - type: 'null' title: Transactionrequest type: object required: - quoteId - paymentChannel - fromAmount - fromCurrency - toAmount - toCurrency title: UniversalQuoteResponse description: Universal quote response. 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.' PublicProductResponse: properties: id: type: string format: uuid title: Id name: type: string title: Name description: anyOf: - type: string - type: 'null' title: Description images: items: type: string type: array title: Images default: [] url: anyOf: - type: string - type: 'null' title: Url price: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Price currency: type: string title: Currency minAmount: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Minamount maxAmount: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Maxamount presetAmount: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Presetamount merchantName: type: string title: Merchantname available: type: boolean title: Available successUrl: anyOf: - type: string - type: 'null' title: Successurl cancelUrl: anyOf: - type: string - type: 'null' title: Cancelurl type: object required: - id - name - currency - merchantName - available title: PublicProductResponse description: Product info for anonymous buyers. 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. 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 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 SubmitDepositRequest: properties: txHash: type: string title: Txhash chainId: type: string title: Chainid type: object required: - txHash - chainId title: SubmitDepositRequest 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. 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. PaymentTransactionResponse: properties: id: type: string format: uuid title: Id productId: type: string format: uuid title: Productid ocQuoteId: type: string title: Ocquoteid clientReferenceId: anyOf: - type: string - type: 'null' title: Clientreferenceid memo: anyOf: - type: string - type: 'null' title: Memo usdAmount: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Usdamount transactionId: anyOf: - type: string - type: 'null' title: Transactionid buyerEmail: anyOf: - type: string - type: 'null' title: Buyeremail invoiceId: anyOf: - type: string format: uuid - type: 'null' title: Invoiceid metadata: additionalProperties: true type: object title: Metadata default: {} expiresAt: anyOf: - type: string format: date-time - type: 'null' title: Expiresat status: type: string title: Status createdAt: type: string format: date-time title: Createdat type: object required: - id - productId - ocQuoteId - usdAmount - status - createdAt title: PaymentTransactionResponse 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.