{"openapi":"3.1.0","info":{"title":"Slash Public API","description":"API description","version":"0.0.1","contact":{}},"servers":[{"url":"https://api.slash.com","description":"production"}],"components":{"schemas":{"AuthorizationRequestEvent":{"type":"object","description":"Card authorization request webhook event payload","properties":{"event":{"type":"object","properties":{"type":{"type":"string","enum":["authorization.request"]},"id":{"type":"string","description":"The ID of the event"}},"required":["type","id"]},"data":{"type":"object","description":"The authorization request event data","properties":{"transaction":{"type":"object","description":"Transaction details for the authorization request","properties":{"id":{"type":"string","description":"Unique identifier of the provider authorization id. This is the same as the `providerAuthorizationId` field in the `Transaction` object."},"timestamp":{"type":"string","format":"date-time","description":"ISO string for the timestamp of the transaction"}},"required":["id","timestamp"]},"card":{"type":"object","description":"Card information for the authorization request","properties":{"id":{"type":"string","description":"Unique identifier for the card"},"name":{"type":"string","description":"Name associated with the card"}},"required":["id"]},"account":{"type":"object","description":"Account information for the authorization request","properties":{"id":{"type":"string","description":"Unique identifier for the account"},"name":{"type":"string","description":"Name of the account"}},"required":["id","name"]},"virtualAccount":{"type":"object","description":"Virtual account information for the authorization request","properties":{"id":{"type":"string","description":"Unique identifier for the virtual account"},"name":{"type":"string","description":"Name of the virtual account"}},"required":["id","name"]},"merchant":{"type":"object","description":"Merchant information for the transaction","properties":{"name":{"type":"string","description":"Name of the merchant"},"categoryCode":{"type":"string","description":"Merchant category code (MCC)"},"location":{"type":"object","description":"Merchant location information","properties":{"city":{"type":"string","description":"City where the merchant is located"},"state":{"type":"string","description":"State/province where the merchant is located"},"country":{"type":"string","description":"Country where the merchant is located","format":"iso-3166-1-alpha-2","example":"US"},"zip":{"type":"string","description":"ZIP/postal code where the merchant is located"}},"required":["country"]}},"required":["name","categoryCode","location"]},"amount":{"$ref":"#/components/schemas/Money","description":"Transaction amount","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"currencyConversion":{"type":"object","description":"Currency conversion details if applicable","properties":{"conversionRate":{"type":"number","description":"The exchange rate used for currency conversion"},"originalAmountCents":{"type":"integer","description":"The original transaction amount in cents before conversion"},"originalCurrencyCode":{"type":"string","description":"The original currency code before conversion"}},"required":["conversionRate","originalAmountCents","originalCurrencyCode"]}},"required":["transaction","card","merchant","amount","account","virtualAccount"]}},"required":["event","data"],"x-entrypoint":{"origin":"./src/publicApi","sourcePath":"./src/publicApi/main.yaml","title":"AuthorizationRequestEvent","virtualPath":"components/AuthorizationRequestEvent"},"title":"AuthorizationRequestEvent"},"AuthorizationWebhookResponse":{"type":"object","description":"Response format for authorization webhook requests","properties":{"approved":{"type":"boolean","description":"Whether the transaction is approved or declined"},"reason":{"type":"string","description":"Optional reason for the authorization decision"}},"required":["approved"],"x-entrypoint":{"origin":"./src/publicApi","sourcePath":"./src/publicApi/main.yaml","title":"AuthorizationWebhookResponse","virtualPath":"components/AuthorizationWebhookResponse"},"title":"AuthorizationWebhookResponse"},"Error":{"type":"object","properties":{"message":{"type":"string"},"name":{"type":"string"},"identifier":{"type":"string"},"rawStatus":{"type":"number"},"meta":{"type":"object","additionalProperties":true}},"required":["message","name","identifier","rawStatus"],"x-entrypoint":{"origin":"./src/publicApi","sourcePath":"./src/publicApi/main.yaml","title":"Error","virtualPath":"components/Error"},"title":"Error"},"PartnerError":{"type":"object","description":"Error response returned by the Slash Partners (`/partner-program/*`)\nAPI. Always includes a stable, machine-readable `code` and a\n`reference_id` for support correlation, in addition to a\nhuman-readable `message`.\n","properties":{"code":{"type":"string","description":"Stable, machine-readable error code. Branch on this rather than\nparsing `message`. Unexpected server-side failures use\n`internal_error`.\n","enum":["missing_api_key","invalid_api_key","api_key_wrong_scope","invalid_request","missing_idempotency_key","invalid_idempotency_key","idempotency_key_conflict","hosted_checkout_not_available","payment_processing_not_enabled","invalid_mle_key","invalid_mle_payload","unsupported_currency","invalid_amount","no_approved_transaction_details","transaction_details_mismatch","source_account_not_linked","destination_account_not_found","destination_account_closed","invalid_destination","destination_account_not_owned","invalid_suggested_split","suggested_split_amount_mismatch","transfer_not_found","feature_not_enabled","internal_error"]},"message":{"type":"string","description":"Human-readable explanation of the failure. For known client-side\nerrors this is actionable; for unexpected failures it is generic\nand accompanied by `reference_id`.\n"},"reference_id":{"type":"string","description":"Opaque identifier for this specific failure. Include it when\ncontacting Slash support to correlate the request server-side.\n"},"name":{"type":"string"},"identifier":{"type":"string"},"rawStatus":{"type":"number"},"meta":{"type":"object","additionalProperties":true}},"required":["code","message","reference_id","name","identifier","rawStatus"],"x-entrypoint":{"origin":"./src/publicApi","sourcePath":"./src/publicApi/main.yaml","title":"PartnerError","virtualPath":"components/PartnerError"},"title":"PartnerError"},"WebhookEvent":{"description":"A webhook event is sent when an entity in our system changes state. Webhook events contain metadata about the change (entity ID, event type, event ID, and event timestamp) but do not include the actual entity data.\n\nTo get the current state of the entity that triggered the webhook, fetch it from the corresponding GET endpoint using the entityId. We send webhooks asynchronously, so by fetching the entity data separately, you always have the most up-to-date information from a single source of truth.\n\n`three_ds_challenge.requested` also carries the challenge details: the challenge must be answered within about five minutes, so the event alone is enough to decide it.\n","oneOf":[{"title":"card_creation.event","type":"object","description":"Emitted when a new card is created.","properties":{"event":{"type":"string","enum":["card_creation.event"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"card.delete","type":"object","description":"Emitted when a card is closed.","properties":{"event":{"type":"string","enum":["card.delete"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"card.update","type":"object","description":"Emitted when a card is activated, paused, or unpaused. A new card can emit this immediately after its creation event.","properties":{"event":{"type":"string","enum":["card.update"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"three_ds_challenge.requested","type":"object","description":"Emitted when a card purchase asks the cardholder to confirm it with 3D Secure, for legal entities that decide their own 3D Secure challenges. Approve or decline it before `expiresAt` (about five minutes); a challenge left unanswered is declined.","properties":{"event":{"type":"string","enum":["three_ds_challenge.requested"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"},"cardId":{"type":"string","description":"The card the purchase was made with, with the `c_` prefix."},"merchant":{"type":"object","properties":{"description":{"type":"string"},"location":{"type":"object","properties":{"country":{"type":"string"}},"required":["country"]}},"required":["description","location"],"description":"The merchant the cardholder is paying: `description` is its name and `location.country` its three-letter ISO 3166-1 alpha-3 country code, such as `USA` or `GBR`."},"amount":{"type":"object","properties":{"amount":{"type":"integer"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"The purchase amount: `amount` in the minor units of `currency` (cents for USD) and `currency` as an uppercase ISO 4217 code."},"expiresAt":{"format":"date-time","type":"string","description":"The deadline to approve or decline the challenge, about five minutes after it was requested. A challenge left unanswered is declined."}},"required":["amount","cardId","entityId","event","eventId","eventTimestamp","expiresAt","merchant"]},{"title":"aggregated_transaction.create","type":"object","description":"Emitted when a Transaction first appears in the transaction feed.","properties":{"event":{"type":"string","enum":["aggregated_transaction.create"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"aggregated_transaction.update","type":"object","description":"Emitted when an existing Transaction changes status or displayed details. The same Transaction can emit this event more than once.","properties":{"event":{"type":"string","enum":["aggregated_transaction.update"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"expense_report.create","type":"object","description":"Emitted when a new expense report is created.","properties":{"event":{"type":"string","enum":["expense_report.create"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"expense_report.update","type":"object","description":"Emitted when an existing expense report changes, including updates to its status or editable report details.","properties":{"event":{"type":"string","enum":["expense_report.update"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"checkout_session.completed","type":"object","description":"Emitted once when the payment for a checkout session succeeds.","properties":{"event":{"type":"string","enum":["checkout_session.completed"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"},"customMetadata":{"type":"object","additionalProperties":true,"description":"The customMetadata supplied when the checkout session was created, echoed for correlation. Absent when the session was created without customMetadata."}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"payments.refund.created","type":"object","description":"Emitted when a refund is created.","properties":{"event":{"type":"string","enum":["payments.refund.created"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"payments.refund.updated","type":"object","description":"Emitted when a refund changes status.","properties":{"event":{"type":"string","enum":["payments.refund.updated"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"payments.payment_intent.created","type":"object","description":"Emitted when a payment intent is created via `POST /payments/payment-intent`.","properties":{"event":{"type":"string","enum":["payments.payment_intent.created"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]},{"title":"payments.payment_intent.updated","type":"object","description":"Emitted whenever a payment intent changes `status`.","properties":{"event":{"type":"string","enum":["payments.payment_intent.updated"],"description":"The event type."},"eventId":{"type":"string","description":"The per-endpoint notification id. It remains stable across delivery retries; deduplicate deliveries by this value."},"entityId":{"description":"The id of the entity that triggered the event.","type":"string"},"eventTimestamp":{"format":"date-time","description":"When the event occurred.","type":"string"}},"required":["entityId","event","eventId","eventTimestamp"]}],"x-entrypoint":{"origin":"./src/publicApi","sourcePath":"./src/publicApi/main.yaml","title":"WebhookEvent","virtualPath":"components/WebhookEvent"},"title":"WebhookEvent"},"AgentRequest":{"type":"object","description":"A pending or completed agent request","properties":{"id":{"type":"string","description":"Unique identifier for the agent request"},"status":{"type":"string","enum":["pending","approved","rejected","expired","executed","failed","running"],"description":"Current status of the request"},"display":{"type":"object","description":"Human-readable display information","properties":{"title":{"type":"string","description":"A brief title describing the action"},"description":{"type":"string","description":"Detailed description of what the action will do"},"sections":{"type":"array","description":"Key-value details about the request","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"object","properties":{"oldValue":{"type":"string"},"newValue":{"type":"string"}},"required":["newValue"]}]}},"required":["label","value"]}}},"required":["title","sections"]},"result":{"type":"object","description":"The result of the executed action. Only present when status is \"executed\".","additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"When the request was created"}},"required":["id","status","display","createdAt"],"x-entrypoint":{"virtualPath":"schemas/AgentRequest","sourcePath":"schemas/AgentRequest.yaml","title":"AgentRequest","origin":"./src/publicApi"},"title":"AgentRequest"},"Pagination.PaginationResponse":{"type":"object","description":"Response sent when requesting a list of data","properties":{"nextCursor":{"type":"string","description":"The cursor to use to retrieve the next page of data. If this is not sent, there is no more data to retrieve."},"count":{"type":"number","description":"The number of items in the current page of data."}},"x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"},"title":"PaginationResponse"},"LegalEntity":{"type":"object","description":"A legal entity is an entity (either a person or a business) that can own accounts.\nIf you are using the API with an API key, your API key will only be associated with one legal entity, so you will not need to specify the legal entity ID in most endpoints.\nIf you are using the API with an OAuth2 access token, you can filter the results of most endpoints to only show data for a specific legal entity by specifying the legal entity ID in the URL.\n","properties":{"id":{"type":"string"},"name":{"type":"string"},"structure":{"type":"string","description":"Will be empty in rare cases where the legal entity has not yet been fully created.","enum":["person","llc","lp","llp","gp","partnership","cooperative","ccorp","scorp","other"]}},"required":["id","name"],"x-entrypoint":{"virtualPath":"schemas/LegalEntity","sourcePath":"schemas/LegalEntity.yaml","title":"LegalEntity","origin":"./src/publicApi"},"title":"LegalEntity"},"Account":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["open","closed"]},"name":{"type":"string"},"accountNumber":{"type":"string"},"routingNumber":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"type":{"type":"string","description":"The type of account. - \"debit\" represents a debit card account - \"charge_card\" represents a charge card account","enum":["debit","charge_card"]},"balances":{"type":"array","items":{"type":"string","description":"The balances on the account. See the Balance object for more details.\n","enum":["debit","cash","credit"]}}},"required":["id","type","status","name","accountNumber","routingNumber","createdAt","balances"],"x-entrypoint":{"virtualPath":"schemas/Account","sourcePath":"schemas/Account.yaml","title":"Account","origin":"./src/publicApi"},"title":"Account"},"Balance":{"type":"object","properties":{"accountId":{"type":"string","description":"The ID of the account associated with the balance."},"type":{"type":"string","description":"The type of balance.\n- \"cash\" represents the excess balance not used as collateral for the charge card. Not applicable to debit accounts.\n- \"credit\" represents the balance that can be spent on the charge card. Not applicable to debit accounts.\n- \"debit\" represents the balance that can be spent or withdrawn. Not applicable to charge card accounts.\n","enum":["cash","credit","debit"]},"available":{"allOf":[{"$ref":"#/components/schemas/Money","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},{"description":"The amount of money that is immediately available to use. \n- For \"credit\" balances, this is the immediately available amount that can be spent on the charge card.\n- For \"cash\" balances, this value represents the immediately available excess cash that is not being used as collateral for the charge card. You can choose to transfer more than these funds to your bank account, but any amount not coverable by the available balance will be removed from the charge card's collateral balance (the \"credit\" balance).\n- For \"debit\" balances, this is the amount of money available that can be spent or withdrawn immediately.\n"}]},"posted":{"allOf":[{"$ref":"#/components/schemas/Money","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},{"description":"The amount of money that has been posted to the account. This value does not include any pending transactions and instead represents the amount of money that has been posted to the balance.\n"}]},"timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp associated with the balance. Since the balance can change rapidly, the timestamp is included to indicate the time when the balance was computed."}},"required":["accountId","type","available","posted","timestamp"],"x-entrypoint":{"virtualPath":"schemas/Balance","sourcePath":"schemas/Balance.yaml","title":"Balance","origin":"./src/publicApi"},"title":"Balance"},"Money":{"type":"object","description":"Represents a monetary value","properties":{"amountCents":{"type":"integer","description":"The amount in cents"}},"required":["amountCents"],"x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"},"title":"Money"},"AuthorizationWebhook":{"type":"object","properties":{"webhookUrl":{"type":"string","description":"The URL where authorization webhook events will be sent"},"signingSecret":{"type":"string","description":"Secret used for signing webhook payloads"},"status":{"type":"string","enum":["active","inactive"],"description":"Current status of the webhook"},"timeoutDurationMs":{"type":"integer","description":"The timeout duration in milliseconds for webhook requests"},"config":{"$ref":"#/components/schemas/AuthorizationWebhookConfig","description":"Configuration specific to the authorization webhook","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhookConfig","sourcePath":"schemas/AuthorizationWebhookConfig.yaml","title":"AuthorizationWebhookConfig","origin":"./src/publicApi"}},"createdAt":{"type":"string","format":"date-time","description":"When the webhook was created"},"updatedAt":{"type":"string","format":"date-time","description":"When the webhook was last updated"}},"required":["webhookUrl","signingSecret","status","timeoutDurationMs","config","createdAt","updatedAt"],"x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhook","sourcePath":"schemas/AuthorizationWebhook.yaml","title":"AuthorizationWebhook","origin":"./src/publicApi"},"title":"AuthorizationWebhook"},"AuthorizationWebhookConfig":{"description":"Configuration specific to the authorization webhook, discriminated on `fallbackBehavior`.\n\nThe fallback behavior is used when the webhook cannot produce an answer — it fails to send a response in time, sends an invalid response, or cannot be reached (including while Slash is operating in a degraded mode where external webhooks cannot be consulted):\n- `reject`: the transaction is declined.\n- `default`: the transaction continues through Slash's standard authorization flow (balance and limit checks still apply). If a `when` condition is provided, only transactions matching the condition continue; non-matching transactions are declined.\n","oneOf":[{"type":"object","description":"Always decline the transaction when the webhook cannot produce an answer.","properties":{"fallbackBehavior":{"type":"string","enum":["reject"],"description":"The transaction will be declined."}},"required":["fallbackBehavior"]},{"type":"object","description":"Continue the transaction through the standard authorization flow when the webhook cannot produce an answer — for every transaction, or only for transactions matching the optional `when` condition.\n","properties":{"fallbackBehavior":{"type":"string","enum":["default"],"description":"The transaction will continue to run through the standard authorization flow (e.g. the balance check)."},"when":{"$ref":"#/components/schemas/AuthorizationWebhookCondition","description":"Optional condition restricting which transactions the `default` fallback applies to: matching transactions continue through the standard authorization flow, non-matching transactions are declined. Omit to apply the `default` fallback to every transaction.\n","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhookCondition","sourcePath":"schemas/AuthorizationWebhookCondition.yaml","title":"AuthorizationWebhookCondition","origin":"./src/publicApi"}}},"required":["fallbackBehavior"]}],"x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhookConfig","sourcePath":"schemas/AuthorizationWebhookConfig.yaml","title":"AuthorizationWebhookConfig","origin":"./src/publicApi"},"title":"AuthorizationWebhookConfig"},"AuthorizationWebhookCondition":{"description":"A condition expression evaluated against a card authorization, used to decide whether the `default` fallback behavior applies to that transaction.\n\nConditions form a small expression tree:\n- Logical nodes (`and` / `or`) combine two sub-conditions and can be nested.\n- Comparison leaves (`lte`, `lt`, `gte`, `gt`, `eq`) test the transaction amount (`amountCents`, the absolute amount in USD cents).\n- Set-membership leaves (`in`) test whether the transaction's `merchantCategoryCode` (4-digit MCC) or `merchantCountry` (ISO 3166-1 alpha-2, as delivered on the authorization request event's `merchant.location.country`) is one of the given values.\n\nA condition over a field the authorization request did not carry evaluates to false.\n","oneOf":[{"type":"object","description":"Logical node: combines two sub-conditions with `and` (both must match) or `or` (either must match). Sub-conditions may themselves be logical nodes.\n","properties":{"operator":{"type":"string","enum":["and","or"],"description":"How the two sub-conditions are combined."},"left":{"$ref":"#/components/schemas/AuthorizationWebhookCondition","description":"The first sub-condition.","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhookCondition","sourcePath":"schemas/AuthorizationWebhookCondition.yaml","title":"AuthorizationWebhookCondition","origin":"./src/publicApi"}},"right":{"$ref":"#/components/schemas/AuthorizationWebhookCondition","description":"The second sub-condition.","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhookCondition","sourcePath":"schemas/AuthorizationWebhookCondition.yaml","title":"AuthorizationWebhookCondition","origin":"./src/publicApi"}}},"required":["operator","left","right"]},{"type":"object","description":"Amount comparison leaf: tests the absolute transaction amount in USD cents against `value`.\n","properties":{"operator":{"type":"string","enum":["lte","lt","gte","gt","eq"],"description":"The comparison to apply: less-than-or-equal, less-than, greater-than-or-equal, greater-than, or equal."},"field":{"type":"string","enum":["amountCents"],"description":"The transaction field being compared. Amounts are compared as absolute values in USD cents."},"value":{"type":"integer","description":"The amount in USD cents to compare against."}},"required":["operator","field","value"]},{"type":"object","description":"Set-membership leaf: tests whether the transaction's merchant category code or merchant country is one of `values`.\n","properties":{"operator":{"type":"string","enum":["in"],"description":"Matches when the transaction's field value is one of `values`."},"field":{"type":"string","enum":["merchantCategoryCode","merchantCountry"],"description":"`merchantCategoryCode` is the 4-digit MCC; `merchantCountry` is the ISO 3166-1 alpha-2 merchant country."},"values":{"type":"array","items":{"type":"string"},"description":"The set of values to match against."}},"required":["operator","field","values"]}],"x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhookCondition","sourcePath":"schemas/AuthorizationWebhookCondition.yaml","title":"AuthorizationWebhookCondition","origin":"./src/publicApi"},"title":"AuthorizationWebhookCondition"},"VirtualAccount":{"type":"object","properties":{"virtualAccount":{"$ref":"#/components/schemas/VirtualAccountModel","description":"The virtual account itself","x-entrypoint":{"virtualPath":"schemas/VirtualAccountModel","sourcePath":"schemas/VirtualAccountModel.yaml","title":"VirtualAccountModel","origin":"./src/publicApi"}},"balance":{"$ref":"#/components/schemas/Money","description":"The total balance of the virtual account","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"spend":{"$ref":"#/components/schemas/Money","description":"The total spend of the virtual account","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"commissionRule":{"$ref":"#/components/schemas/VirtualAccountCommissionRule","description":"The commission rule applied to the virtual account, if any","x-entrypoint":{"virtualPath":"schemas/VirtualAccountCommissionRule","sourcePath":"schemas/VirtualAccountCommissionRule.yaml","title":"VirtualAccountCommissionRule","origin":"./src/publicApi"}}},"required":["virtualAccount","balance","spend"],"x-entrypoint":{"virtualPath":"schemas/VirtualAccount","sourcePath":"schemas/VirtualAccount.yaml","title":"VirtualAccount","origin":"./src/publicApi"},"title":"VirtualAccount"},"VirtualAccountModel":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the virtual account."},"name":{"type":"string","description":"The name of the virtual account."},"accountNumber":{"type":"string","description":"The account number of the virtual account."},"routingNumber":{"type":"string","description":"The routing number of the virtual account."},"accountId":{"type":"string","description":"The account ID of the Slash account the virtual account is associated with."},"closedAt":{"type":"string","description":"The date the virtual account was closed; will be null if account was never closed."},"accountType":{"type":"string","enum":["default","primary"],"description":"The account type of the virtual account. Since virtual accounts and Slash accounts exist at the same hierarchy level,\nan account type of 'primary' means it is the main Slash account, while an account type of 'default' means it is a virtual account\nunder the main account.\n"}},"description":"The virtual account object","required":["id","name","accountId","accountType"],"x-entrypoint":{"virtualPath":"schemas/VirtualAccountModel","sourcePath":"schemas/VirtualAccountModel.yaml","title":"VirtualAccountModel","origin":"./src/publicApi"},"title":"VirtualAccountModel"},"VirtualAccountCommissionRule":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the commission rule"},"virtualAccountId":{"type":"string","description":"The ID of the virtual account the commission rule is applied to"},"commissionDetails":{"$ref":"#/components/schemas/VirtualAccountCommissionDetails","description":"Describes details of the commission rule.","x-entrypoint":{"virtualPath":"schemas/VirtualAccountCommissionDetails","sourcePath":"schemas/VirtualAccountCommissionDetails.yaml","title":"VirtualAccountCommissionDetails","origin":"./src/publicApi"}}},"description":"The virtual account commission rule object","required":["id","virtualAccountId","commissionDetails"],"x-entrypoint":{"virtualPath":"schemas/VirtualAccountCommissionRule","sourcePath":"schemas/VirtualAccountCommissionRule.yaml","title":"VirtualAccountCommissionRule","origin":"./src/publicApi"},"title":"VirtualAccountCommissionRule"},"VirtualAccountCommissionDetails":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["flatFee"],"description":"The type of the commission rule. A type of flat_fee will take a flat fee from the virtual account and transfer it to the primary account\nwith the frequency of the collection defined as monthly or yearly.\n"},"amount":{"$ref":"#/components/schemas/Money","description":"The amount of money to be diverted from the virtual account if the type of rule is flat_fee.","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"frequency":{"type":"string","enum":["monthly","yearly"],"description":"The frequency from the start date that the rule will be applied. E.g. a start date of November 26, 2024 with a frequency of \"monthly\"\nwill have the rule applied on December 26, 2024. If the frequency was \"yearly\", the rule would be applied again on November 26, 2025.\n"},"startDate":{"type":"string","format":"date-time","description":"The date that the rule will begin to take effect."}},"required":["type","frequency","amount"]},{"type":"object","properties":{"type":{"type":"string","enum":["takeRate"],"description":"The type of the commission rule. A type of take_rate will take a percent of the virtual account's funds and divert them to\nthe primary account.\n"},"takeRate":{"type":"number","description":"The percentage of funds to divert from the virtual account to the primary account."}},"required":["type","takeRate"]}],"x-entrypoint":{"virtualPath":"schemas/VirtualAccountCommissionDetails","sourcePath":"schemas/VirtualAccountCommissionDetails.yaml","title":"VirtualAccountCommissionDetails","origin":"./src/publicApi"},"title":"VirtualAccountCommissionDetails"},"Transaction":{"type":"object","properties":{"id":{"type":"string"},"date":{"description":"The date in UTC time when the transaction was posted. If the transaction is pending or failed, this is the date the transaction was created.","type":"string"},"description":{"type":"string"},"memo":{"description":"The memo associated with the transaction. For virtual account transfers, this is the memo provided when creating the transfer. For ACH transactions, this is the company entry description. For wire transactions, this is the sender reference.","type":"string"},"merchantDescription":{"type":"string","description":"DEPRECATED. Use `merchantData.description` instead. For card transactions, the description of the transaction as reported by the merchant. For other transactions, this field is undefined.","deprecated":true},"merchantData":{"$ref":"#/components/schemas/TransactionMerchant","description":"For card transactions, contains description of the transaction as reported by the merchant, merchant category code, and location of the merchant or origin of the transaction.\nFor other transactions, this field is undefined.\n","x-entrypoint":{"virtualPath":"schemas/TransactionMerchant","sourcePath":"schemas/TransactionMerchant.yaml","title":"TransactionMerchant","origin":"./src/publicApi"}},"amountCents":{"description":"The amount of the transaction in cents in USD. If the transaction amount is negative, the transaction is a debit. If the transaction amount is positive, the transaction is a credit.","type":"number"},"status":{"$ref":"#/components/schemas/TransactionStatus","x-entrypoint":{"virtualPath":"schemas/TransactionStatus","sourcePath":"schemas/TransactionStatus.yaml","title":"TransactionStatus","origin":"./src/publicApi"}},"detailedStatus":{"$ref":"#/components/schemas/TransactionDetailedStatus","x-entrypoint":{"virtualPath":"schemas/TransactionDetailedStatus","sourcePath":"schemas/TransactionDetailedStatus.yaml","title":"TransactionDetailedStatus","origin":"./src/publicApi"}},"accountId":{"description":"The account ID associated with the transaction"},"virtualAccountId":{"description":"The virtual account ID where the transaction occurred","type":"string"},"accountSubtype":{"description":"For charge cards, specifies if the transaction belongs to the cash or credit account. For debit accounts, this field is always cash.","type":"string","enum":["cash","credit"]},"cardId":{"description":"The card ID associated with the transaction. If the transaction is not associated with a card, this field is not sent.","type":"string"},"cashbackInfo":{"$ref":"#/components/schemas/TransactionCashbackInfo","x-entrypoint":{"virtualPath":"schemas/TransactionCashbackInfo","sourcePath":"schemas/TransactionCashbackInfo.yaml","title":"TransactionCashbackInfo","origin":"./src/publicApi"}},"fxFeeInfo":{"$ref":"#/components/schemas/TransactionFxFeeInfo","x-entrypoint":{"virtualPath":"schemas/TransactionFxFeeInfo","sourcePath":"schemas/TransactionFxFeeInfo.yaml","title":"TransactionFxFeeInfo","origin":"./src/publicApi"}},"originalCurrency":{"$ref":"#/components/schemas/OriginalCurrency","x-entrypoint":{"virtualPath":"schemas/OriginalCurrency","sourcePath":"schemas/OriginalCurrency.yaml","title":"OriginalCurrency","origin":"./src/publicApi"}},"orderId":{"description":"The order ID, as reported by the merchant, associated with the specific transaction.","type":"string"},"referenceNumber":{"description":"The reference number provided by Visa for this transaction.","type":"string"},"authorizedAt":{"description":"The UTC timestamp of when the transaction was authorized. Only exists for card transactions.","type":"string"},"declineReason":{"type":"string","description":"The reason for the decline. Only exists for card transactions with `detailedStatus` = `declined`."},"approvalReason":{"type":"string","description":"The reason for the approval. Only exists for card transactions with `detailedStatus` = `pending` or `settled`."},"providerAuthorizationId":{"type":"string","description":"The provider authorization ID for the transaction. Only exists for card transactions."},"wireInfo":{"type":"object","description":"Information about the associated wire transfer if the transaction is a wire transfer.","properties":{"counterpartyBank":{"type":"string","description":"The name of the bank or financial institution of the counterparty in the wire transfer"},"typeCode":{"type":"string","description":"A code that identifies the type of wire transfer (e.g., domestic, international)"},"subtypeCode":{"type":"string","description":"A code that identifies the specific type or subtype of the wire transfer"},"omad":{"type":"string","description":"Outgoing Message Authentication Data - a unique identifier assigned by the originating bank for the outgoing wire transfer. If the other bank is an account with Column N.A., this field is empty."},"imad":{"type":"string","description":"Incoming Message Authentication Data - a unique identifier assigned by the receiving bank for the incoming wire transfer.  If the other bank is an account with Column N.A., this field is empty."},"senderReference":{"type":"string","description":"A reference number or identifier provided by the sender of the wire transfer for tracking purposes"},"messageFromSender":{"type":"string","description":"Free-text message the originator sent to the beneficiary (Fedwire originator-to-beneficiary information, or SWIFT remittance information). Omitted when the sender did not include one."},"businessFunctionCode":{"type":"string","description":"A code that identifies the business function or purpose of the wire transfer (e.g., customer transfer, bank transfer, etc.)"}},"required":["subtypeCode","omad","imad","senderReference","businessFunctionCode","typeCode"]},"achInfo":{"type":"object","description":"Information about the associated ACH transfer if the transaction is an ACH transfer.","properties":{"counterpartyBank":{"type":"string","description":"The name of the bank or financial institution of the counterparty in the ACH transfer"},"receiverId":{"type":"string","description":"The unique identifier for the receiver of the ACH transfer"},"companyId":{"type":"string","description":"The company identification number assigned by the originating depository financial institution"},"companyDiscretionaryData":{"type":"string","description":"Optional data field that can be used by the originating company for internal purposes"},"companyEntryDescription":{"type":"string","description":"An optional description of the purpose of the ACH entry as provided by the originating company"},"traceNumber":{"type":"string","description":"A unique number assigned by the originating depository financial institution to identify the ACH entry"},"entryClassCode":{"type":"string","description":"A three-character code that identifies the type of ACH entry (e.g., PPD for Prearranged Payment and Deposit, CCD for Corporate Credit or Debit)"},"paymentRelatedInfo":{"type":"string","description":"Additional information related to the payment, such as invoice numbers, payment references, or other payment-specific details"}},"required":["receiverId","companyId","companyDiscretionaryData","traceNumber","entryClassCode","paymentRelatedInfo"]},"rtpInfo":{"type":"object","description":"Information about the associated Real-Time Payment (RTP) transfer if the transaction is a real-time transfer.","properties":{"counterpartyBank":{"type":"string","description":"The name of the bank or financial institution of the counterparty in the real-time transfer"},"endToEndId":{"type":"string","description":"A unique end-to-end identifier for the real-time payment transaction that remains with the payment throughout its lifecycle"},"routingNumber":{"type":"string","description":"The routing number of the counterparty's bank"},"originatorName":{"type":"string","description":"The name of the originator of the real-time payment"},"description":{"type":"string","description":"Additional description or purpose of the real-time payment"}}},"sepaInfo":{"type":"object","description":"Information about the associated SEPA (Single Euro Payments Area) transfer if the transaction is a SEPA deposit into a Global USD account.","properties":{"senderName":{"type":"string","description":"The name of the originator of the SEPA transfer."},"recipientName":{"type":"string","description":"The name of the recipient of the SEPA transfer."},"reference":{"type":"string","description":"The free-form reference field set by the originator on the SEPA transfer."},"iban":{"type":"string","description":"The full IBAN of the counterparty on the SEPA transfer."},"ibanLast4":{"type":"string","description":"The last 4 characters of the IBAN of the counterparty on the SEPA transfer."},"bic":{"type":"string","description":"The BIC of the counterparty bank on the SEPA transfer."},"uetr":{"type":"string","description":"The unique end-to-end transaction reference (UETR) for the SEPA transfer."},"paymentScheme":{"type":"string","description":"The SEPA payment scheme used (e.g., `sepa_credit_transfer`, `sepa_instant`)."}}},"pixInfo":{"type":"object","description":"Information about the associated PIX (Brazilian instant-payment) transfer if the transaction is a PIX deposit into a Global USD account.","properties":{"senderName":{"type":"string","description":"The name of the originator of the PIX transfer."},"description":{"type":"string","description":"A description of the PIX transfer provided by the originator."},"reference":{"type":"string","description":"The free-form reference field set by the originator on the PIX transfer."},"trackingNumber":{"type":"string","description":"The PIX network tracking number (`endToEndId`) for the transfer."}}},"speiInfo":{"type":"object","description":"Information about the associated SPEI (Mexican real-time payment) transfer if the transaction is a SPEI deposit into a Global USD account.","properties":{"senderName":{"type":"string","description":"The name of the originator of the SPEI transfer."},"description":{"type":"string","description":"A description of the SPEI transfer provided by the originator."},"reference":{"type":"string","description":"The free-form reference field (concepto de pago) set by the originator on the SPEI transfer."},"clabe":{"type":"string","description":"The CLABE of the counterparty on the SPEI transfer."},"trackingNumber":{"type":"string","description":"The SPEI network tracking number (clave de rastreo) for the transfer."}}},"fpsInfo":{"type":"object","description":"Information about the associated Faster Payments transfer if the transaction is a Faster Payments deposit into a Global USD account.","properties":{"senderName":{"type":"string","description":"The name of the originator of the Faster Payments transfer."},"recipientName":{"type":"string","description":"The name of the recipient of the Faster Payments transfer."},"reference":{"type":"string","description":"The free-form reference field set by the originator on the Faster Payments transfer."},"accountNumber":{"type":"string","description":"The account number of the counterparty on the Faster Payments transfer."},"last4":{"type":"string","description":"The last 4 digits of the account number of the counterparty on the Faster Payments transfer."},"sortCode":{"type":"string","description":"The sort code of the counterparty bank on the Faster Payments transfer."},"uetr":{"type":"string","description":"The unique end-to-end transaction reference (UETR) for the Faster Payments transfer."}}},"feeInfo":{"type":"object","description":"Information populated if this transaction is a fee assessed by Slash.","properties":{"relatedTransaction":{"type":"object","required":["id","amount"],"properties":{"id":{"type":"string"},"amount":{"type":"number"}}}}},"cryptoInfo":{"type":"object","description":"Information populated if this transaction is a crypto on/off-ramp transaction.","properties":{"txHash":{"type":"string","description":"The transaction hash of the crypto on/off-ramp transaction."},"senderAddress":{"type":"string","description":"The sender address of the crypto on/off-ramp transaction."}}}},"required":["id","date","description","amountCents","status","detailedStatus","accountId","accountSubtype"],"x-entrypoint":{"virtualPath":"schemas/Transaction","sourcePath":"schemas/Transaction.yaml","title":"Transaction","origin":"./src/publicApi"},"title":"Transaction"},"TransactionMerchant":{"type":"object","properties":{"description":{"type":"string","description":"The raw description provided by the merchant for the transaction."},"categoryCode":{"type":"string","description":"The merchant's category code (MCC)"},"location":{"$ref":"#/components/schemas/TransactionMerchantLocation","description":"Location details for the merchant/transaction.","x-entrypoint":{"virtualPath":"schemas/TransactionMerchantLocation","sourcePath":"schemas/TransactionMerchantLocation.yaml","title":"TransactionMerchantLocation","origin":"./src/publicApi"}}},"required":["description","categoryCode"],"x-entrypoint":{"virtualPath":"schemas/TransactionMerchant","sourcePath":"schemas/TransactionMerchant.yaml","title":"TransactionMerchant","origin":"./src/publicApi"},"title":"TransactionMerchant"},"TransactionMerchantLocation":{"type":"object","properties":{"city":{"type":"string","description":"The city of the merchant."},"state":{"type":"string","description":"The state/province of the merchant."},"country":{"type":"string","description":"The country of the merchant."},"zip":{"type":"string","description":"The ZIP/postal code of the merchant."}},"required":["city","state","country","zip"],"x-entrypoint":{"virtualPath":"schemas/TransactionMerchantLocation","sourcePath":"schemas/TransactionMerchantLocation.yaml","title":"TransactionMerchantLocation","origin":"./src/publicApi"},"title":"TransactionMerchantLocation"},"TransactionStatus":{"type":"string","description":"- `pending`: The transaction is pending and has not been posted to the account yet (the account's posted balance doesn't reflect the transaction yet, but the account's available balance does).\n- `posted`: The transaction has been posted to the account and the account's posted balance and available balances both reflect the transaction.\n- `failed`: The transaction failed to post to the account and no longer affects the account's available or posted balances.\n","enum":["pending","posted","failed"],"x-entrypoint":{"virtualPath":"schemas/TransactionStatus","sourcePath":"schemas/TransactionStatus.yaml","title":"TransactionStatus","origin":"./src/publicApi"},"title":"TransactionStatus"},"TransactionDetailedStatus":{"type":"string","description":"- `pending_approval`: Used for any transaction type that is pending approval. This does not affect the account's available or posted balances.\n- `pending`: Used for any transaction type that has not posted to the account yet, but is affecting the account's available balance.\n- `canceled`: Used for any transaction that was canceled.\n- `failed`: Used for any transaction that failed to post to the account.\n- `settled`: Used for any transaction that has posted to the account, except for card refunds, which use the `refund` status, and ACH returns, which use the `returned` status.\n- `declined`: Used for card transactions that were declined.\n- `refund`: Used for card transactions that were refunded, increasing the account's available and posted balances.\n- `reversed`: Used for card transactions that were authorized, but reversed by the merchant.\n- `returned`: Used for ACH returns. In the case of an ACH return, there are two possibilities: (1) if the ACH settled and then returned, then there will be one transaction with status `settled` for the ACH settling, and one transaction with status `returned` for the ACH return. Both of these are posted transactions. (2) if the ACH returned before settling, then there will only be one transaction with status `canceled`.\n- `dispute`: Used for disputed card transactions.\n","enum":["pending","pending_approval","in_review","canceled","failed","settled","declined","refund","reversed","returned","dispute"],"x-entrypoint":{"virtualPath":"schemas/TransactionDetailedStatus","sourcePath":"schemas/TransactionDetailedStatus.yaml","title":"TransactionDetailedStatus","origin":"./src/publicApi"},"title":"TransactionDetailedStatus"},"TransactionCashbackInfo":{"type":"object","description":"Cashback earned for this transaction. This is only present when cashback is known and currently applies to eligible card transactions.","properties":{"amountCents":{"type":"number","description":"The cashback amount earned for this transaction, in cents."},"rate":{"type":"number","description":"The cashback rate applied to this transaction."}},"required":["amountCents","rate"],"x-entrypoint":{"virtualPath":"schemas/TransactionCashbackInfo","sourcePath":"schemas/TransactionCashbackInfo.yaml","title":"TransactionCashbackInfo","origin":"./src/publicApi"},"title":"TransactionCashbackInfo"},"TransactionFxFeeInfo":{"type":"object","description":"Foreign exchange fee charged for this transaction. This is only present when an FX fee has been created for the transaction.","properties":{"amountCents":{"type":"number","description":"The FX fee amount charged for this transaction, in USD cents."}},"required":["amountCents"],"x-entrypoint":{"virtualPath":"schemas/TransactionFxFeeInfo","sourcePath":"schemas/TransactionFxFeeInfo.yaml","title":"TransactionFxFeeInfo","origin":"./src/publicApi"},"title":"TransactionFxFeeInfo"},"OriginalCurrency":{"type":"object","description":"The original currency of the transaction. This is only applicable to transactions. If this field is not sent, the original currency is in USD.\n","properties":{"code":{"type":"string","description":"The original currency code of the transaction"},"amountCents":{"type":"number","description":"The amount of the transaction in its original currency in cents."},"conversionRate":{"type":"number","description":"The conversion rate used to convert the transaction amount from its original currency to the account currency. The currency rate is computed at the time of the transaction."}},"required":["code","amountCents","conversionRate"],"x-entrypoint":{"virtualPath":"schemas/OriginalCurrency","sourcePath":"schemas/OriginalCurrency.yaml","title":"OriginalCurrency","origin":"./src/publicApi"},"title":"OriginalCurrency"},"FeeTransaction":{"type":"object","properties":{"id":{"type":"string"},"dateCharged":{"type":"string"},"feeAmountCents":{"type":"number"},"feeType":{"type":"string"},"accountId":{"type":"string"},"originalTransaction":{"$ref":"#/components/schemas/Transaction","x-entrypoint":{"virtualPath":"schemas/Transaction","sourcePath":"schemas/Transaction.yaml","title":"Transaction","origin":"./src/publicApi"}},"card":{"$ref":"#/components/schemas/Card","x-entrypoint":{"virtualPath":"schemas/Card","sourcePath":"schemas/Card.yaml","title":"Card","origin":"./src/publicApi"}}},"required":["id","dateCharged","feeAmountCents","feeType","accountId"],"x-entrypoint":{"virtualPath":"schemas/FeeTransaction","sourcePath":"schemas/FeeTransaction.yaml","title":"FeeTransaction","origin":"./src/publicApi"},"title":"FeeTransaction"},"Card":{"type":"object","properties":{"id":{"type":"string"},"accountId":{"type":"string","description":"The account that this card is associated with"},"virtualAccountId":{"type":"string","description":"The virtual account that this card is associated with"},"last4":{"type":"string","description":"The last 4 digits of the card number"},"name":{"type":"string","description":"The name assigned to the card that appears on the user dashboard"},"expiryMonth":{"type":"string","description":"The month the card expires formatted as MM (01, 02, ..., 12)"},"expiryYear":{"type":"string","description":"The year the card expires formatted as YYYY (2024, 2025, ...)"},"status":{"allOf":[{"$ref":"#/components/schemas/CardStatus","x-entrypoint":{"virtualPath":"schemas/CardStatus","sourcePath":"schemas/CardStatus.yaml","title":"CardStatus","origin":"./src/publicApi"}},{"description":"The status of the card"}]},"isPhysical":{"type":"boolean","description":"When true, a physical card has been issued. Otherwise, this is a virtual card."},"isSingleUse":{"type":"boolean","description":"When true, the card will be automatically closed after a single authorization attempt. Note that the card will be closed even if the authorization declines or drops"},"pan":{"type":"string","description":"This field contains the full PAN which will only be sent on a request for a single card when you set the query param \"include_pan\" to \"true\""},"cvv":{"type":"string","description":"This field will contain full CVV which will only be sent on a request for a single card when you set the query param \"include_pan\" to \"true\""},"cardGroupId":{"type":"string","description":"The card group the card belongs to."},"cardGroupName":{"type":"string","description":"The name of the card group the card belongs to."},"createdAt":{"type":"string","format":"date-time"},"spendingConstraint":{"$ref":"#/components/schemas/SpendingConstraint","description":"The spending constraint applied to the card","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}},"userData":{"type":"object","description":"Arbitrary information that can be attached to the card. See the [`PATCH /card/{cardId}`](api-reference/card-patch) endpoint for more details on how to add user data."},"cardProductId":{"type":"string","description":"The ID of the card product this card was created with."},"modifiers":{"type":"array","items":{"$ref":"#/components/schemas/CardModifier","x-entrypoint":{"virtualPath":"schemas/CardModifier","sourcePath":"schemas/CardModifier.yaml","title":"CardModifier","origin":"./src/publicApi"}},"description":"The modifiers applied to this card. Modifiers control card behavior like restricting to recurring payments only."}},"required":["id","accountId","last4","name","expiryMonth","expiryYear","status","isPhysical"],"x-entrypoint":{"virtualPath":"schemas/Card","sourcePath":"schemas/Card.yaml","title":"Card","origin":"./src/publicApi"},"title":"Card"},"CardStatus":{"type":"string","enum":["active","paused","inactive","closed"],"x-entrypoint":{"virtualPath":"schemas/CardStatus","sourcePath":"schemas/CardStatus.yaml","title":"CardStatus","origin":"./src/publicApi"},"title":"CardStatus"},"SpendingConstraint":{"type":"object","description":"A constraint that can be applied to a CardGroupSpendingRule","properties":{"merchantCategoryRule":{"type":"object","nullable":true,"properties":{"merchantCategories":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/Restriction","x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"}}},"required":["merchantCategories","restriction"]},"merchantRule":{"type":"object","nullable":true,"properties":{"merchants":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/Restriction","x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"}}},"required":["merchants","restriction"]},"spendingRule":{"type":"object","nullable":true,"properties":{"utilizationLimit":{"type":"object","properties":{"timezone":{"type":"string","description":"Canonical IANA timezone identifier in `Area/Location` form, for example `America/New_York`, `Asia/Shanghai` or `Asia/Hong_Kong`. Limits always reset at midnight in the timezone specified. If no timezone is specified, UTC is used. Values that are not valid IANA identifiers are rejected with a 400 -- this includes language-level enum names such as `ASIA_SHANGHAI`, bare UTC offsets such as `+8`, and abbreviations such as `PST`. Note that some languages return the enum constant rather than the IANA id by default (for example Java/Kotlin `ZoneId` `.name()` instead of `.getId()`)."},"limitAmount":{"$ref":"#/components/schemas/Money","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"preset":{"type":"string","enum":["daily","weekly","monthly","yearly","collective"]},"startDate":{"type":"string","description":"Format ISO-8601. A day that equals today or the past. This is optional.If the `preset` is \"daily\", this value is ignored. If the `preset` is \"weekly\", \"monthly\" or \"yearly\", then the this value is used to compute when the limit should start limit."}},"required":["limitAmount","preset"]},"transactionSizeLimit":{"type":"object","properties":{"minimum":{"$ref":"#/components/schemas/Money","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"maximum":{"$ref":"#/components/schemas/Money","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}}}}}},"countryRule":{"type":"object","nullable":true,"properties":{"countries":{"description":"A 2 digit country code","type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/Restriction","x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"}}},"required":["countries","restriction"]},"merchantCategoryCodeRule":{"type":"object","nullable":true,"properties":{"merchantCategoryCodes":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/Restriction","x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"}}},"required":["merchantCategoryCodes","restriction"]}},"x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"},"title":"SpendingConstraint"},"Restriction":{"type":"string","enum":["allowlist","blacklist"],"x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"},"title":"Restriction"},"CardModifier":{"oneOf":[{"type":"object","required":["name","value"],"properties":{"name":{"type":"string","enum":["only_allow_recurring_payments"]},"value":{"description":"Whether to only allow recurring payments. The default value for newly created cards is false.","type":"boolean"}}}],"x-entrypoint":{"virtualPath":"schemas/CardModifier","sourcePath":"schemas/CardModifier.yaml","title":"CardModifier","origin":"./src/publicApi"},"title":"CardModifier"},"Cardholder":{"type":"object","description":"A cardholder that can be assigned to cards created for the legal entity.","properties":{"id":{"type":"string","description":"Unique identifier for the cardholder. Use this as `cardholderId` when creating a card."},"userId":{"type":"string","description":"Unique identifier for the user represented by this cardholder."},"legalEntityId":{"type":"string","description":"Unique identifier for the legal entity this cardholder belongs to."},"email":{"type":"string","description":"Email address for the cardholder."},"phoneNumber":{"type":"string","description":"Phone number for the cardholder."},"firstName":{"type":"string","description":"First name for the cardholder."},"lastName":{"type":"string","description":"Last name for the cardholder."},"displayText":{"type":"string","description":"Human-readable display text for the cardholder."}},"required":["id","userId","legalEntityId","displayText"],"x-entrypoint":{"virtualPath":"schemas/Cardholder","sourcePath":"schemas/Cardholder.yaml","title":"Cardholder","origin":"./src/publicApi"},"title":"Cardholder"},"CardGroupUtilization":{"type":"object","properties":{"nextResetDate":{"type":"string","format":"date-time","description":"The date the next reset will occur, undefined if collective"},"spend":{"$ref":"#/components/schemas/Money","description":"The amount of money spent in the current period","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"availableBalance":{"$ref":"#/components/schemas/Money","description":"The amount of money available in the current period. Only returned if the card or card group has a spend limit.","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}}},"required":["spend"],"x-entrypoint":{"virtualPath":"schemas/CardGroupUtilization","sourcePath":"schemas/CardGroupUtilization.yaml","title":"CardGroupUtilization","origin":"./src/publicApi"},"title":"CardGroupUtilization"},"PartialSpendingConstraint":{"type":"object","description":"A partial spending constraint update that can be applied to a CardGroupSpendingRule","properties":{"merchantCategoryRule":{"type":"object","nullable":true,"properties":{"merchantCategories":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/Restriction","x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"}}}},"merchantRule":{"type":"object","nullable":true,"properties":{"merchants":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/Restriction","x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"}}}},"spendingRule":{"type":"object","nullable":true,"properties":{"utilizationLimit":{"type":"object","properties":{"timezone":{"type":"string","description":"Canonical IANA timezone identifier in `Area/Location` form, for example `America/New_York`, `Asia/Shanghai` or `Asia/Hong_Kong`. Limits always reset at midnight in the timezone specified. If no timezone is specified, UTC is used. Values that are not valid IANA identifiers are rejected with a 400 -- this includes language-level enum names such as `ASIA_SHANGHAI`, bare UTC offsets such as `+8`, and abbreviations such as `PST`. Note that some languages return the enum constant rather than the IANA id by default (for example Java/Kotlin `ZoneId` `.name()` instead of `.getId()`)."},"limitAmount":{"$ref":"#/components/schemas/Money","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"preset":{"type":"string","enum":["daily","weekly","monthly","yearly","collective"]},"startDate":{"type":"string","description":"Format ISO-8601. A day that equals today or the past. This is optional.If the `preset` is \"daily\", this value is ignored. If the `preset` is \"weekly\", \"monthly\" or \"yearly\", then the this value is used to compute when the limit should start limit."}}},"transactionSizeLimit":{"type":"object","properties":{"minimum":{"$ref":"#/components/schemas/Money","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}},"maximum":{"$ref":"#/components/schemas/Money","x-entrypoint":{"virtualPath":"schemas/Money","sourcePath":"schemas/Money.yaml","title":"Money","origin":"./src/publicApi"}}}}}},"countryRule":{"type":"object","nullable":true,"properties":{"countries":{"description":"A 2 digit country code","type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/Restriction","x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"}}}},"merchantCategoryCodeRule":{"type":"object","nullable":true,"properties":{"merchantCategoryCodes":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/Restriction","x-entrypoint":{"virtualPath":"schemas/Restriction","sourcePath":"schemas/Restriction.yaml","title":"Restriction","origin":"./src/publicApi"}}}}},"x-entrypoint":{"virtualPath":"schemas/PartialSpendingConstraint","sourcePath":"schemas/PartialSpendingConstraint.yaml","title":"PartialSpendingConstraint","origin":"./src/publicApi"},"title":"PartialSpendingConstraint"},"CardGroup":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"virtualAccountId":{"type":"string","nullable":true,"deprecated":true,"description":"Deprecated. Card groups are owned by the legal entity and are not associated with a virtual account. Returns the legacy association where one exists, otherwise null. Will be removed in a future version."},"spendingConstraint":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}},"required":["id","name"],"x-entrypoint":{"virtualPath":"schemas/CardGroup","sourcePath":"schemas/CardGroup.yaml","title":"CardGroup","origin":"./src/publicApi"},"title":"CardGroup"},"CardProduct":{"type":"object","properties":{"id":{"type":"string"},"prefix":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]}},"required":["id","prefix","status"],"x-entrypoint":{"virtualPath":"schemas/CardProduct","sourcePath":"schemas/CardProduct.yaml","title":"CardProduct","origin":"./src/publicApi"},"title":"CardProduct"},"Webhook":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"archivedAt":{"type":"string"},"url":{"type":"string","description":"The URL that will receive the webhook payload"},"name":{"type":"string","description":"The name of the webhook"},"status":{"type":"string","description":"The current status of the webhook endpoint:\n- `active`: The webhook is enabled and receiving events normally.\n- `paused`: The webhook has been paused by the user. Events are queued and will be delivered when the endpoint is set back to `active`.\n- `backing-off`: The system is temporarily backing off due to delivery failures. Delivery will be automatically retried at `backingOffUntil`. You can also immediately re-enable by setting status to `active` via the PATCH endpoint.\n- `disabled`: The webhook has been automatically disabled due to repeated delivery failures. Re-enable by setting status to `active` via the PATCH endpoint.\n","enum":["active","paused","backing-off","disabled"]},"pausedAt":{"type":"string","description":"When the endpoint was paused by the user (ISO 8601 timestamp)"},"backingOffUntil":{"type":"string","description":"When the system will automatically retry delivery (ISO 8601 timestamp). Only present when status is `backing-off`."},"disabledAt":{"type":"string","description":"When the endpoint was automatically disabled due to repeated failures (ISO 8601 timestamp). Only present when status is `disabled`."},"enabledEvents":{"type":"array","description":"Public webhook event types this endpoint receives. Omitted means all events.","items":{"type":"string"}}},"required":["id","createdAt","url","name","status"],"x-entrypoint":{"virtualPath":"schemas/Webhook","sourcePath":"schemas/Webhook.yaml","title":"Webhook","origin":"./src/publicApi"},"title":"Webhook"},"Merchant":{"title":"Merchant","type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"}},"x-entrypoint":{"virtualPath":"schemas/Merchant","sourcePath":"schemas/Merchant.yaml","title":"Merchant","origin":"./src/publicApi"}},"MerchantCategory":{"title":"MerchantCategory","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"x-entrypoint":{"virtualPath":"schemas/MerchantCategory","sourcePath":"schemas/MerchantCategory.yaml","title":"MerchantCategory","origin":"./src/publicApi"}},"DeveloperApplication.DeveloperApplicationModel":{"type":"object","properties":{"id":{"type":"string"},"developerAccountId":{"type":"string"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationStatus","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationStatus","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationStatus.yaml","title":"DeveloperApplicationStatus","origin":"./src/publicApi"}},"type":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationType","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationType","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationType.yaml","title":"DeveloperApplicationType","origin":"./src/publicApi"}},"data":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationData","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationData","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationData.yaml","title":"DeveloperApplicationData","origin":"./src/publicApi"}},"timestamp":{"type":"string"},"oauthClientId":{"type":"string"},"oauthClientSecret":{"type":"string"}},"required":["id","developerAccountId","name","status","type","data","timestamp"],"x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationModel","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationModel.yaml","title":"DeveloperApplicationModel","origin":"./src/publicApi"},"title":"DeveloperApplicationModel"},"DeveloperApplication.DeveloperApplicationStatus":{"type":"string","enum":["test","under_review","production"],"x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationStatus","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationStatus.yaml","title":"DeveloperApplicationStatus","origin":"./src/publicApi"},"title":"DeveloperApplicationStatus"},"DeveloperApplication.DeveloperApplicationType":{"type":"string","enum":["service"],"x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationType","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationType.yaml","title":"DeveloperApplicationType","origin":"./src/publicApi"},"title":"DeveloperApplicationType"},"DeveloperApplication.DeveloperApplicationData":{"type":"object","properties":{"description":{"type":"string","description":"A short description of the application that will be shown to users when they authorize the application."},"logoUrl":{"type":"string","format":"uri","description":"The URL of the application's logo that will be shown to users when they authorize the application. Must be an https:// URL."},"termsOfServiceUrl":{"type":"string","format":"uri","description":"The URL of the application's terms of service that will be shown to users when they authorize the application. Must be an https:// URL."},"privacyPolicyUrl":{"type":"string","format":"uri","description":"The URL of the application's privacy policy that will be shown to users when they authorize the application. Must be an https:// URL."},"redirectUris":{"type":"array","items":{"type":"string"},"description":"The URLs of the application's redirect URIs that will be used when the application is authorized. The redirect URIs must match the ones registered here, or the authorization will fail."},"testUserEmails":{"type":"array","items":{"type":"string"},"description":"A list of users that are allowed to test the application before it is approved for production. Max 10 users."},"type":{"type":"string","enum":["service"]},"scopes":{"type":"array","description":"The scopes that the application will request access to.","items":{"$ref":"#/components/schemas/DeveloperApplication.PermissionKeyTypes.PermissionPolicyKey","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/PermissionKeyTypes/PermissionPolicyKey","sourcePath":"schemas/DeveloperApplication/PermissionKeyTypes/PermissionPolicyKey.yaml","title":"PermissionPolicyKey","origin":"./src/publicApi"}}},"allowedOrigins":{"type":"array","description":"The URLs or IP addresses that the application is allowed to make token exchange requests from. If the application makes a token exchange request from a URL that is not in this list, the request will be blocked.","items":{"type":"string"}}},"required":["description","type","scopes","allowedOrigins"],"x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationData","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationData.yaml","title":"DeveloperApplicationData","origin":"./src/publicApi"},"title":"DeveloperApplicationData"},"DeveloperApplication.PermissionKeyTypes.PermissionPolicyKey":{"oneOf":[{"$ref":"#/components/schemas/DeveloperApplication.PermissionKeyTypes.LegalEntityPermissionPolicyKey","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/PermissionKeyTypes/LegalEntityPermissionPolicyKey","sourcePath":"schemas/DeveloperApplication/PermissionKeyTypes/LegalEntityPermissionPolicyKey.yaml","title":"LegalEntityPermissionPolicyKey","origin":"./src/publicApi"}},{"$ref":"#/components/schemas/DeveloperApplication.PermissionKeyTypes.SlashAccountPermissionPolicyKey","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/PermissionKeyTypes/SlashAccountPermissionPolicyKey","sourcePath":"schemas/DeveloperApplication/PermissionKeyTypes/SlashAccountPermissionPolicyKey.yaml","title":"SlashAccountPermissionPolicyKey","origin":"./src/publicApi"}}],"x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/PermissionKeyTypes/PermissionPolicyKey","sourcePath":"schemas/DeveloperApplication/PermissionKeyTypes/PermissionPolicyKey.yaml","title":"PermissionPolicyKey","origin":"./src/publicApi"},"title":"PermissionPolicyKey"},"DeveloperApplication.PermissionKeyTypes.LegalEntityPermissionPolicyKey":{"type":"string","enum":["legal_entity.home.view","legal_entity.view","legal_entity.users.view","legal_entity.users.modify","legal_entity.users.card_groups.view","legal_entity.users.card_groups.modify","legal_entity.subscriptions.view","legal_entity.subscriptions.modify","legal_entity.accounting.view","legal_entity.accounting.modify","legal_entity.contacts.view","legal_entity.contacts.modify","legal_entity.third_party_credentials.view","legal_entity.third_party_credentials.modify","legal_entity.authorized_third_parties.view","legal_entity.authorized_third_parties.modify","legal_entity.api_key.view","legal_entity.api_key.modify","legal_entity.applications.view","legal_entity.applications.modify","legal_entity.permission_roles.view","legal_entity.automation_rules.view","legal_entity.automation_rules.modify","legal_entity.developer_account.view","legal_entity.developer_account.modify","legal_entity.cashback.view","legal_entity.cashback.modify","legal_entity.webhooks.view","legal_entity.webhooks.modify","legal_entity.ticket_reconciliation.view","legal_entity.analytics.view","legal_entity.transactions.crypto_deposit.accelerate"],"x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/PermissionKeyTypes/LegalEntityPermissionPolicyKey","sourcePath":"schemas/DeveloperApplication/PermissionKeyTypes/LegalEntityPermissionPolicyKey.yaml","title":"LegalEntityPermissionPolicyKey","origin":"./src/publicApi"},"title":"LegalEntityPermissionPolicyKey"},"DeveloperApplication.PermissionKeyTypes.SlashAccountPermissionPolicyKey":{"type":"string","enum":["slash_accounts.view","slash_accounts.home.view","slash_accounts.cards.physical.view","slash_accounts.cards.physical.modify","slash_accounts.cards.virtual.view","slash_accounts.cards.virtual.modify","slash_accounts.incoming_transactions.view","slash_accounts.transactions.view","slash_accounts.transactions.ach_pull.initiate","slash_accounts.transactions.ach_push.initiate","slash_accounts.transactions.wire.initiate","slash_accounts.transactions.between_accounts.initiate","slash_accounts.transactions.rtp.initiate","slash_accounts.balance.view","slash_accounts.subaccounts.view","slash_accounts.subaccounts.modify","slash_accounts.merchant_allowlist.view","slash_accounts.merchant_allowlist.modify","slash_accounts.integrations.view","slash_accounts.integrations.modify"],"x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/PermissionKeyTypes/SlashAccountPermissionPolicyKey","sourcePath":"schemas/DeveloperApplication/PermissionKeyTypes/SlashAccountPermissionPolicyKey.yaml","title":"SlashAccountPermissionPolicyKey","origin":"./src/publicApi"},"title":"SlashAccountPermissionPolicyKey"},"AuthorizationServerMetadata":{"type":"object","description":"OAuth 2.0 authorization server metadata (RFC 8414), also served as the OpenID Connect discovery document.","properties":{"issuer":{"type":"string","description":"The authorization server's identifier. Authorization responses carry it as `iss` (RFC 9207)."},"authorization_endpoint":{"type":"string"},"token_endpoint":{"type":"string"},"userinfo_endpoint":{"type":"string"},"token_endpoint_auth_methods_supported":{"type":"array","description":"`client_secret_basic` for confidential clients; `none` for public clients, which authenticate with PKCE alone.","items":{"type":"string","enum":["client_secret_post","client_secret_basic","client_secret_jwt","private_key_jwt","none"]}},"response_types_supported":{"type":"array","items":{"type":"string","enum":["code","token","id_token token"]}},"grant_types_supported":{"type":"array","items":{"type":"string","enum":["authorization_code","refresh_token"]}},"scopes_supported":{"type":"array","items":{"$ref":"#/components/schemas/DeveloperApplicationScope","x-entrypoint":{"virtualPath":"schemas/DeveloperApplicationScope","sourcePath":"schemas/DeveloperApplicationScope.yaml","title":"DeveloperApplicationScope","origin":"./src/publicApi"}}},"code_challenge_methods_supported":{"type":"array","items":{"type":"string","enum":["S256"]}},"authorization_response_iss_parameter_supported":{"type":"boolean"},"client_id_metadata_document_supported":{"type":"boolean","description":"Clients may use the HTTPS URL of their client metadata document as the client ID. Only client IDs Slash has registered are accepted."}},"required":["issuer","authorization_endpoint","token_endpoint","userinfo_endpoint","response_types_supported","scopes_supported"],"x-entrypoint":{"virtualPath":"schemas/AuthorizationServerMetadata","sourcePath":"schemas/AuthorizationServerMetadata.yaml","title":"AuthorizationServerMetadata","origin":"./src/publicApi"},"title":"AuthorizationServerMetadata"},"DeveloperApplicationScope":{"type":"string","enum":["openid","offline_access","profile","email","address","phone","user.identity.view"],"x-entrypoint":{"virtualPath":"schemas/DeveloperApplicationScope","sourcePath":"schemas/DeveloperApplicationScope.yaml","title":"DeveloperApplicationScope","origin":"./src/publicApi"},"title":"DeveloperApplicationScope"},"paths.oauth2.userinfo._dto.UserInfoResponse":{"type":"object","properties":{"sub":{"type":"string","description":"The user's ID"},"name":{"type":"string","description":"The user's full name"},"email":{"type":"string"},"phone_number":{"type":"string"}},"required":["sub","name","email"],"x-entrypoint":{"virtualPath":"paths/oauth2/userinfo/_dto/UserInfoResponse","sourcePath":"paths/oauth2/userinfo/_dto/UserInfoResponse.yaml","title":"UserInfoResponse","origin":"./src/publicApi"},"title":"UserInfoResponse"},"paths.fdx.accounts._dto.Account":{"oneOf":[{"type":"object","properties":{"depositAccount":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.DepositAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/DepositAccount","sourcePath":"paths/fdx/accounts/_dto/DepositAccount.yaml","title":"DepositAccount","origin":"./src/publicApi"}}},"required":["depositAccount"]},{"type":"object","properties":{"loanAccount":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.LoanAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LoanAccount","sourcePath":"paths/fdx/accounts/_dto/LoanAccount.yaml","title":"LoanAccount","origin":"./src/publicApi"}}},"required":["loanAccount"]},{"type":"object","properties":{"locAccount":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.LineOfCreditAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LineOfCreditAccount","sourcePath":"paths/fdx/accounts/_dto/LineOfCreditAccount.yaml","title":"LineOfCreditAccount","origin":"./src/publicApi"}}},"required":["locAccount"]},{"type":"object","properties":{"investmentAccount":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.InvestmentAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/InvestmentAccount","sourcePath":"paths/fdx/accounts/_dto/InvestmentAccount.yaml","title":"InvestmentAccount","origin":"./src/publicApi"}}},"required":["investmentAccount"]},{"type":"object","properties":{"insuranceAccount":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.InsuranceAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/InsuranceAccount","sourcePath":"paths/fdx/accounts/_dto/InsuranceAccount.yaml","title":"InsuranceAccount","origin":"./src/publicApi"}}},"required":["insuranceAccount"]},{"type":"object","properties":{"annuityAccount":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.AnnuityAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/AnnuityAccount","sourcePath":"paths/fdx/accounts/_dto/AnnuityAccount.yaml","title":"AnnuityAccount","origin":"./src/publicApi"}}},"required":["annuityAccount"]},{"type":"object","properties":{"commercialAccount":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.CommercialAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/CommercialAccount","sourcePath":"paths/fdx/accounts/_dto/CommercialAccount.yaml","title":"CommercialAccount","origin":"./src/publicApi"}}},"required":["commercialAccount"]}],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/Account","sourcePath":"paths/fdx/accounts/_dto/Account.yaml","title":"Account","origin":"./src/publicApi"},"title":"Account"},"paths.fdx.accounts._dto.DepositAccount":{"type":"object","description":"A deposit account. For example, a checking, savings or money market account.","properties":{"accountId":{"type":"string","description":"Long-term persistent identity of the account, though not an account number."},"accountNumberDisplay":{"type":"string","description":"A masked version of the account number, which includes the last 4 digits in plain text."},"productName":{"type":"string","description":"Marketed product name for this account. You can use this in UIs to assist in account selection. For example, \"Slash Platinum\"."},"nickname":{"type":"string","description":"A nickname or label for the account. This will be unique to the account, even if the user has multiple accounts with the same product name. You can use this in UIs to assist in account selection."},"status":{"type":"string","enum":["CLOSED","DELINQUENT","NEGATIVECURRENTBALANCE","OPEN","PAID","PENDINGCLOSE","PENDINGOPEN","RESTRICTED"]},"currency":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The ISO 4217 currency code for the currency that the account is denominated in. For example, \"USD\" for US Dollars."}},"required":["currencyCode"]},"accountType":{"type":"string","enum":["CHECKING","SAVINGS","CD","ESCROW","MONEYMARKET","OTHERDEPOSIT"]}},"required":["accountId","productName","status","currency","accountType"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/DepositAccount","sourcePath":"paths/fdx/accounts/_dto/DepositAccount.yaml","title":"DepositAccount","origin":"./src/publicApi"},"title":"DepositAccount"},"paths.fdx.accounts._dto.LoanAccount":{"type":"object","description":"A loan account. For example, mortgage, student loan or auto loan.","properties":{"accountId":{"type":"string","description":"Long-term persistent identity of the account, though not an account number."},"accountNumberDisplay":{"type":"string","description":"A masked version of the account number, which includes the last 4 digits in plain text."},"productName":{"type":"string","description":"Marketed product name for this account. You can use this in UIs to assist in account selection. For example, \"Slash Platinum\"."},"nickname":{"type":"string","description":"A nickname or label for the account. This will be unique to the account, even if the user has multiple accounts with the same product name. You can use this in UIs to assist in account selection."},"status":{"type":"string","enum":["CLOSED","DELINQUENT","NEGATIVECURRENTBALANCE","OPEN","PAID","PENDINGCLOSE","PENDINGOPEN","RESTRICTED"]},"currency":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The ISO 4217 currency code for the currency that the account is denominated in. For example, \"USD\" for US Dollars."}},"required":["currencyCode"]},"accountType":{"type":"string","enum":["AUTOLOAN","HOMEEQUITYLOAN","INSTALLMENT","LOAN","MILITARYLOAN","MORTGAGE","PERSONALLOAN","SMBLOAN","STUDENTLOAN"]}},"required":["accountId","productName","status","currency","accountType"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LoanAccount","sourcePath":"paths/fdx/accounts/_dto/LoanAccount.yaml","title":"LoanAccount","origin":"./src/publicApi"},"title":"LoanAccount"},"paths.fdx.accounts._dto.LineOfCreditAccount":{"type":"object","description":"A line-of-credit account. For example, a credit card or home equity line of credit.","properties":{"accountId":{"type":"string","description":"Long-term persistent identity of the account, though not an account number."},"accountNumberDisplay":{"type":"string","description":"A masked version of the account number, which includes the last 4 digits in plain text."},"productName":{"type":"string","description":"Marketed product name for this account. You can use this in UIs to assist in account selection. For example, \"Slash Platinum\"."},"nickname":{"type":"string","description":"A nickname or label for the account. This will be unique to the account, even if the user has multiple accounts with the same product name. You can use this in UIs to assist in account selection."},"status":{"type":"string","enum":["CLOSED","DELINQUENT","NEGATIVECURRENTBALANCE","OPEN","PAID","PENDINGCLOSE","PENDINGOPEN","RESTRICTED"]},"currency":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The ISO 4217 currency code for the currency that the account is denominated in. For example, \"USD\" for US Dollars."}},"required":["currencyCode"]},"accountType":{"type":"string","enum":["LINEOFCREDIT","CHARGE","CREDITCARD","HOMELINEOFCREDIT"]}},"required":["accountId","productName","status","currency","accountType"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LineOfCreditAccount","sourcePath":"paths/fdx/accounts/_dto/LineOfCreditAccount.yaml","title":"LineOfCreditAccount","origin":"./src/publicApi"},"title":"LineOfCreditAccount"},"paths.fdx.accounts._dto.InvestmentAccount":{"type":"object","description":"An investment account. For example, a 401K or IRA.","properties":{"accountId":{"type":"string","description":"Long-term persistent identity of the account, though not an account number."},"accountNumberDisplay":{"type":"string","description":"A masked version of the account number, which includes the last 4 digits in plain text."},"productName":{"type":"string","description":"Marketed product name for this account. You can use this in UIs to assist in account selection. For example, \"Slash Platinum\"."},"nickname":{"type":"string","description":"A nickname or label for the account. This will be unique to the account, even if the user has multiple accounts with the same product name. You can use this in UIs to assist in account selection."},"status":{"type":"string","enum":["CLOSED","DELINQUENT","NEGATIVECURRENTBALANCE","OPEN","PAID","PENDINGCLOSE","PENDINGOPEN","RESTRICTED"]},"currency":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The ISO 4217 currency code for the currency that the account is denominated in. For example, \"USD\" for US Dollars."}},"required":["currencyCode"]},"accountType":{"type":"string","enum":["401A","401K","403B","529","BROKERAGEPRODUCT","COVERDELL","DIGITALASSET","DEFINEDBENEFIT","ESOP","GUARDIAN","INSTITUTIONALTRUST","IRA","KEOGH","NONQUALIFIEDPLAN","OTHERINVESTMENT","ROLLOVER","ROTH","SARSEP","TAXABLE","TDA","TRUST","TERM","UGMA","UTMA"]}},"required":["accountId","productName","status","currency","accountType"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/InvestmentAccount","sourcePath":"paths/fdx/accounts/_dto/InvestmentAccount.yaml","title":"InvestmentAccount","origin":"./src/publicApi"},"title":"InvestmentAccount"},"paths.fdx.accounts._dto.InsuranceAccount":{"type":"object","description":"An insurance account. For example, whole life insurance or short-term disability.","properties":{"accountId":{"type":"string","description":"Long-term persistent identity of the account, though not an account number."},"accountNumberDisplay":{"type":"string","description":"A masked version of the account number, which includes the last 4 digits in plain text."},"productName":{"type":"string","description":"Marketed product name for this account. You can use this in UIs to assist in account selection. For example, \"Slash Platinum\"."},"nickname":{"type":"string","description":"A nickname or label for the account. This will be unique to the account, even if the user has multiple accounts with the same product name. You can use this in UIs to assist in account selection."},"status":{"type":"string","enum":["CLOSED","DELINQUENT","NEGATIVECURRENTBALANCE","OPEN","PAID","PENDINGCLOSE","PENDINGOPEN","RESTRICTED"]},"currency":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The ISO 4217 currency code for the currency that the account is denominated in. For example, \"USD\" for US Dollars."}},"required":["currencyCode"]},"accountType":{"type":"string","enum":["LONGTERMDISABILITY","SHORTTERMDISABILITY","UNIVERSALLIFE","WHOLELIFE"]}},"required":["accountId","productName","status","currency","accountType"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/InsuranceAccount","sourcePath":"paths/fdx/accounts/_dto/InsuranceAccount.yaml","title":"InsuranceAccount","origin":"./src/publicApi"},"title":"InsuranceAccount"},"paths.fdx.accounts._dto.AnnuityAccount":{"type":"object","description":"An annuity account. For example, a fixed or variable annuity account.","properties":{"accountId":{"type":"string","description":"Long-term persistent identity of the account, though not an account number."},"accountNumberDisplay":{"type":"string","description":"A masked version of the account number, which includes the last 4 digits in plain text."},"productName":{"type":"string","description":"Marketed product name for this account. You can use this in UIs to assist in account selection. For example, \"Slash Platinum\"."},"nickname":{"type":"string","description":"A nickname or label for the account. This will be unique to the account, even if the user has multiple accounts with the same product name. You can use this in UIs to assist in account selection."},"status":{"type":"string","enum":["CLOSED","DELINQUENT","NEGATIVECURRENTBALANCE","OPEN","PAID","PENDINGCLOSE","PENDINGOPEN","RESTRICTED"]},"currency":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The ISO 4217 currency code for the currency that the account is denominated in. For example, \"USD\" for US Dollars."}},"required":["currencyCode"]},"accountType":{"type":"string","enum":["ANNUITY","FIXEDANNUITY","VARIABLEANNUITY"]}},"required":["accountId","productName","status","currency","accountType"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/AnnuityAccount","sourcePath":"paths/fdx/accounts/_dto/AnnuityAccount.yaml","title":"AnnuityAccount","origin":"./src/publicApi"},"title":"AnnuityAccount"},"paths.fdx.accounts._dto.CommercialAccount":{"type":"object","description":"A commercial account. For example, a business deposit account.","properties":{"accountId":{"type":"string","description":"Long-term persistent identity of the account, though not an account number."},"accountNumberDisplay":{"type":"string","description":"A masked version of the account number, which includes the last 4 digits in plain text."},"productName":{"type":"string","description":"Marketed product name for this account. You can use this in UIs to assist in account selection. For example, \"Slash Platinum\"."},"nickname":{"type":"string","description":"A nickname or label for the account. This will be unique to the account, even if the user has multiple accounts with the same product name. You can use this in UIs to assist in account selection."},"status":{"type":"string","enum":["CLOSED","DELINQUENT","NEGATIVECURRENTBALANCE","OPEN","PAID","PENDINGCLOSE","PENDINGOPEN","RESTRICTED"]},"currency":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The ISO 4217 currency code for the currency that the account is denominated in. For example, \"USD\" for US Dollars."}},"required":["currencyCode"]},"accountType":{"type":"string","enum":["COMMERCIALDEPOSIT","COMMERCIALLOAN","COMMERCIALLINEOFCREDIT","COMMERCIALINVESTMENT"]}},"required":["accountId","productName","status","currency","accountType"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/CommercialAccount","sourcePath":"paths/fdx/accounts/_dto/CommercialAccount.yaml","title":"CommercialAccount","origin":"./src/publicApi"},"title":"CommercialAccount"},"paths.fdx.accounts._dto.AccountWithBalance":{"oneOf":[{"type":"object","properties":{"depositAccount":{"allOf":[{"$ref":"#/components/schemas/paths.fdx.accounts._dto.DepositAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/DepositAccount","sourcePath":"paths/fdx/accounts/_dto/DepositAccount.yaml","title":"DepositAccount","origin":"./src/publicApi"}},{"$ref":"#/components/schemas/paths.fdx.accounts._dto.DepositAccountBalance","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/DepositAccountBalance","sourcePath":"paths/fdx/accounts/_dto/DepositAccountBalance.yaml","title":"DepositAccountBalance","origin":"./src/publicApi"}}]}},"required":["depositAccount"]},{"type":"object","properties":{"loanAccount":{"allOf":[{"$ref":"#/components/schemas/paths.fdx.accounts._dto.LoanAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LoanAccount","sourcePath":"paths/fdx/accounts/_dto/LoanAccount.yaml","title":"LoanAccount","origin":"./src/publicApi"}},{"$ref":"#/components/schemas/paths.fdx.accounts._dto.LoanAccountBalance","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LoanAccountBalance","sourcePath":"paths/fdx/accounts/_dto/LoanAccountBalance.yaml","title":"LoanAccountBalance","origin":"./src/publicApi"}}]}},"required":["loanAccount"]},{"type":"object","properties":{"locAccount":{"allOf":[{"$ref":"#/components/schemas/paths.fdx.accounts._dto.LineOfCreditAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LineOfCreditAccount","sourcePath":"paths/fdx/accounts/_dto/LineOfCreditAccount.yaml","title":"LineOfCreditAccount","origin":"./src/publicApi"}},{"$ref":"#/components/schemas/paths.fdx.accounts._dto.LineOfCreditAccountBalance","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LineOfCreditAccountBalance","sourcePath":"paths/fdx/accounts/_dto/LineOfCreditAccountBalance.yaml","title":"LineOfCreditAccountBalance","origin":"./src/publicApi"}}]}},"required":["locAccount"]},{"type":"object","properties":{"investmentAccount":{"allOf":[{"$ref":"#/components/schemas/paths.fdx.accounts._dto.InvestmentAccount","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/InvestmentAccount","sourcePath":"paths/fdx/accounts/_dto/InvestmentAccount.yaml","title":"InvestmentAccount","origin":"./src/publicApi"}},{"$ref":"#/components/schemas/paths.fdx.accounts._dto.InvestmentAccountBalance","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/InvestmentAccountBalance","sourcePath":"paths/fdx/accounts/_dto/InvestmentAccountBalance.yaml","title":"InvestmentAccountBalance","origin":"./src/publicApi"}}]}},"required":["investmentAccount"]}],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/AccountWithBalance","sourcePath":"paths/fdx/accounts/_dto/AccountWithBalance.yaml","title":"AccountWithBalance","origin":"./src/publicApi"},"title":"AccountWithBalance"},"paths.fdx.accounts._dto.DepositAccountBalance":{"type":"object","properties":{"currentBalance":{"type":"number","description":"The current balance of the account in the standard unit of the currency (e.g., dollars for USD). Current balance is the balance that is currently in the account, including any pending transactions."},"availableBalance":{"type":"number","description":"The available balance of the account in the standard unit of the currency (e.g., dollars for USD). Available balance is the balance that is available to spend/withdraw."}},"required":["currentBalance","availableBalance"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/DepositAccountBalance","sourcePath":"paths/fdx/accounts/_dto/DepositAccountBalance.yaml","title":"DepositAccountBalance","origin":"./src/publicApi"},"title":"DepositAccountBalance"},"paths.fdx.accounts._dto.LoanAccountBalance":{"type":"object","properties":{"principalBalance":{"type":"number","description":"The principal balance of the loan account in the standard unit of the currency (e.g., dollars for USD). Principal balance is the amount of the loan that is still owed."},"escrowBalance":{"type":"number","description":"The escrow balance of the loan account in the standard unit of the currency (e.g., dollars for USD). Escrow balance is the amount of money held in escrow to pay for property taxes and insurance."},"originalPrincipal":{"type":"number","description":"The original principal balance of the loan account in the standard unit of the currency (e.g., dollars for USD). Original principal balance is the amount of the loan when it was first taken out."},"originatingDate":{"type":"string","description":"The date the loan was originated."},"loanTerm":{"type":"string","description":"The term of the loan in months."},"nextPaymentAmount":{"type":"number","description":"The amount of the next payment due on the loan in the standard unit of the currency (e.g., dollars for USD)."},"nextPaymentDate":{"type":"string","description":"The date the next payment is due."},"lastPaymentAmount":{"type":"number","description":"The amount of the last payment made on the loan in the standard unit of the currency (e.g., dollars for USD)."},"lastPaymentDate":{"type":"string","description":"The date the last payment was made."},"maturityDate":{"type":"string","description":"The date the loan is scheduled to be paid off."},"interestPaidYearToDate":{"type":"number","description":"The amount of interest paid on the loan year-to-date in the standard unit of the currency (e.g., dollars for USD)."},"interestRate":{"type":"number","description":"The interest rate on the loan as a floating point number. For example, 0.05 for 5%."},"interestRateType":{"type":"string","enum":["FIXED","VARIABLE"],"description":"The type of interest rate on the loan."}},"required":["principalBalance","interestRate","interestRateType"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LoanAccountBalance","sourcePath":"paths/fdx/accounts/_dto/LoanAccountBalance.yaml","title":"LoanAccountBalance","origin":"./src/publicApi"},"title":"LoanAccountBalance"},"paths.fdx.accounts._dto.LineOfCreditAccountBalance":{"type":"object","properties":{"creditLine":{"type":"number","description":"The total credit line available on the account in the standard unit of the currency (e.g., dollars for USD)."},"availableCredit":{"type":"number","description":"The currently available credit on the account in the standard unit of the currency (e.g., dollars for USD)."},"nextPaymentAmount":{"type":"number","description":"The amount of the next payment due on the account in the standard unit of the currency (e.g., dollars for USD)."},"nextPaymentDate":{"type":"string","description":"The date the next payment is due."},"principalBalance":{"type":"number","description":"The principal balance on the account in the standard unit of the currency (e.g., dollars for USD)."},"currentBalance":{"type":"number","description":"The current balance on the account in the standard unit of the currency (e.g., dollars for USD). This includes any outstanding charges, fees, and interest."},"minimumPaymentAmount":{"type":"number","description":"The minimum payment due on the account in the standard unit of the currency (e.g., dollars for USD)."},"lastPaymentAmount":{"type":"number","description":"The amount of the last payment made on the account in the standard unit of the currency (e.g., dollars for USD)."},"lastPaymentDate":{"type":"string","description":"The date the last payment was made."},"pastDueAmount":{"type":"number","description":"The amount past due on the account in the standard unit of the currency (e.g., dollars for USD)."},"lastStmtBalance":{"type":"number","description":"The balance on the account as of the last statement date in the standard unit of the currency (e.g., dollars for USD)."},"lastStmtDate":{"type":"string","description":"The date of the last statement."},"purchasesApr":{"type":"number","description":"The annual percentage rate (APR) for purchases on the account."},"advancesApr":{"type":"number","description":"The annual percentage rate (APR) for cash advances on the account."}},"required":["availableCredit","currentBalance"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/LineOfCreditAccountBalance","sourcePath":"paths/fdx/accounts/_dto/LineOfCreditAccountBalance.yaml","title":"LineOfCreditAccountBalance","origin":"./src/publicApi"},"title":"LineOfCreditAccountBalance"},"paths.fdx.accounts._dto.InvestmentAccountBalance":{"type":"object","properties":{"availableCashBalance":{"type":"number","description":"The amount of cash available in the account across all sub-accounts, including sweep funds, in the standard unit of the currency (e.g., dollars for USD)."},"balanceAsOf":{"type":"string","description":"The date and time the balance was last updated."},"currentValue":{"type":"number","description":"The total current value of all investments in the standard unit of the currency (e.g., dollars for USD)."},"holdings":{"type":"array","description":"The holdings in the account.","items":{"type":"object","properties":{"securityId":{"type":"string","description":"The unique identifier of the security. Either securityId and securityIdType or symbol will be provided."},"securityIdType":{"type":"string","description":"The type of the security identifier.","enum":["CINS","CMC","CME","CUSIP","ISIN","ITSA","NASDAQ","SEDOL","SICC","VALOR","WKN"]},"holdingName":{"type":"string","description":"The name of the security."},"holdingType":{"type":"string","description":"The type of the holding.","enum":["ANNUITY","BOND","CD","DIGITALASSET","MUTUALFUND","OPTION","OTHER","STOCK"]},"holdingSubType":{"type":"string","enum":["CASH","MONEYMARKET"]},"symbol":{"type":"string","description":"The symbol of the security. Either securityId and securityIdType or symbol will be provided."},"purchasedPrice":{"type":"number","description":"The price at which the security was purchased in the standard unit of the currency (e.g., dollars for USD)."},"currentUnitPrice":{"type":"number","description":"The current unit price of the security in the standard unit of the currency (e.g., dollars for USD)."},"currentUnitPriceDate":{"type":"string","format":"date","description":"The date (YYYY-MM-DD) the current unit price was last updated."},"units":{"type":"number","description":"The number of units of the security held."},"marketValue":{"type":"number","description":"The market value of the holding in the standard unit of the currency (e.g., dollars for USD)."},"faceValue":{"type":"number","description":"The face value of the holding in the standard unit of the currency (e.g., dollars for USD)."},"cashAccount":{"type":"boolean","description":"If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account."},"currency":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The ISO 4217 currency code."}},"required":["currencyCode"]},"fiAttributes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}},"required":["name","value"]}}},"required":["marketValue","cashAccount"]}}},"required":["availableCashBalance","currentValue"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/InvestmentAccountBalance","sourcePath":"paths/fdx/accounts/_dto/InvestmentAccountBalance.yaml","title":"InvestmentAccountBalance","origin":"./src/publicApi"},"title":"InvestmentAccountBalance"},"paths.fdx.accounts._param_accountId.transactions._dto.DepositTransaction":{"type":"object","properties":{"transactionId":{"type":"string","description":"Long-term persistent identity of the transaction."},"referenceTransactionId":{"type":"string","description":"For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction"},"postedTimestamp":{"type":"string","description":"The ISO 8601 date and time that the transaction was posted to the account. This will be included if status is POSTED."},"transactionTimestamp":{"type":"string","description":"The ISO 8601 date and time that the transaction was initiated."},"description":{"type":"string","description":"A description of the transaction."},"debitCreditMemo":{"type":"string","description":"The posting type of a transaction. The transaction amount is an absolute value, and this parameter indicates the direction of the transaction. This will always be DEBIT or CREDIT.","enum":["DEBIT","CREDIT","MEMO"]},"category":{"type":"string","description":"The merchant category code (MCC) of the transaction, if available."},"subCategory":{"type":"string","description":"Additional information about the transaction category, if available. For Treasury (MONEYMARKET) accounts, this is the activity type of the transaction (OTHER is reserved for future activity types). Omitted for other account types.","enum":["INTEREST","DIVIDEND","FEE","TRANSFER","OTHER"]},"status":{"type":"string","description":"The status of the transaction. This will always be PENDING or POSTED.","enum":["AUTHORIZATION","MEMO","PENDING","POSTED"]},"amount":{"type":"number","description":"The amount of money in the account currency in that currency's standard unit (e.g. dollars for USD). The amount is an absolute value. The debitCreditMemo parameter indicates the direction of the transaction."},"foreignAmount":{"type":"number","description":"This value is only included if the transaction's currency is different than the account's default currency."},"foreignCurrency":{"$ref":"#/components/schemas/paths.fdx.accounts._param_accountId.transactions._dto.Iso4217CurrencyCode","description":"ISO 4217 currency code. This value is only included if the transaction's currency is different than the account's default currency.","x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode.yaml","title":"Iso4217CurrencyCode","origin":"./src/publicApi"}},"payee":{"type":"string","maxLength":255},"checkNumber":{"type":"string","description":"The check number of the transaction, if available. Only included if this is a check transaction."}},"required":["transactionId","transactionTimestamp","description","debitCreditMemo","status","amount"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/DepositTransaction","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/DepositTransaction.yaml","title":"DepositTransaction","origin":"./src/publicApi"},"title":"DepositTransaction"},"paths.fdx.accounts._param_accountId.transactions._dto.Iso4217CurrencyCode":{"type":"string","description":"ISO 4217 currency code, per the FDX / Plaid Core Exchange specification.","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VED","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode.yaml","title":"Iso4217CurrencyCode","origin":"./src/publicApi"},"title":"Iso4217CurrencyCode"},"paths.fdx.accounts._param_accountId.transactions._dto.LoanTransaction":{"type":"object","properties":{"transactionId":{"type":"string","description":"Long-term persistent identity of the transaction."},"referenceTransactionId":{"type":"string","description":"For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction"},"postedTimestamp":{"type":"string","description":"The ISO 8601 date and time that the transaction was posted to the account. This will be included if status is POSTED."},"transactionTimestamp":{"type":"string","description":"The ISO 8601 date and time that the transaction was initiated."},"description":{"type":"string","description":"A description of the transaction."},"debitCreditMemo":{"type":"string","description":"The posting type of a transaction. The transaction amount is an absolute value, and this parameter indicates the direction of the transaction. This will always be DEBIT or CREDIT.","enum":["DEBIT","CREDIT","MEMO"]},"category":{"type":"string","description":"The merchant category code (MCC) of the transaction, if available."},"subCategory":{"type":"string","description":"Additional information about the transaction category, if available."},"status":{"type":"string","description":"The status of the transaction. This will always be PENDING or POSTED.","enum":["AUTHORIZATION","MEMO","PENDING","POSTED"]},"amount":{"type":"number","description":"The amount of money in the account currency in that currency's standard unit (e.g. dollars for USD). The amount is an absolute value. The debitCreditMemo parameter indicates the direction of the transaction."},"foreignAmount":{"type":"number","description":"This value is only included if the transaction's currency is different than the account's default currency."},"foreignCurrency":{"$ref":"#/components/schemas/paths.fdx.accounts._param_accountId.transactions._dto.Iso4217CurrencyCode","description":"ISO 4217 currency code. This value is only included if the transaction's currency is different than the account's default currency.","x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode.yaml","title":"Iso4217CurrencyCode","origin":"./src/publicApi"}},"transactionType":{"type":"string","enum":["ADJUSTMENT","FEE","INTEREST","PAYMENT","LUMP_SUM_PAYMENT","SKIP_PAYMENT","DOUBLE_UP_PAYMENT","PAYOFF"]}},"required":["transactionId","transactionTimestamp","description","debitCreditMemo","status","amount"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/LoanTransaction","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/LoanTransaction.yaml","title":"LoanTransaction","origin":"./src/publicApi"},"title":"LoanTransaction"},"paths.fdx.accounts._param_accountId.transactions._dto.LineOfCreditTransaction":{"type":"object","properties":{"transactionId":{"type":"string","description":"Long-term persistent identity of the transaction."},"referenceTransactionId":{"type":"string","description":"For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction"},"postedTimestamp":{"type":"string","description":"The ISO 8601 date and time that the transaction was posted to the account. This will be included if status is POSTED."},"transactionTimestamp":{"type":"string","description":"The ISO 8601 date and time that the transaction was initiated."},"description":{"type":"string","description":"A description of the transaction."},"debitCreditMemo":{"type":"string","description":"The posting type of a transaction. The transaction amount is an absolute value, and this parameter indicates the direction of the transaction. This will always be DEBIT or CREDIT.","enum":["DEBIT","CREDIT","MEMO"]},"category":{"type":"string","description":"The merchant category code (MCC) of the transaction, if available."},"subCategory":{"type":"string","description":"Additional information about the transaction category, if available."},"status":{"type":"string","description":"The status of the transaction. This will always be PENDING or POSTED.","enum":["AUTHORIZATION","MEMO","PENDING","POSTED"]},"amount":{"type":"number","description":"The amount of money in the account currency in that currency's standard unit (e.g. dollars for USD). The amount is an absolute value. The debitCreditMemo parameter indicates the direction of the transaction."},"foreignAmount":{"type":"number","description":"This value is only included if the transaction's currency is different than the account's default currency."},"foreignCurrency":{"$ref":"#/components/schemas/paths.fdx.accounts._param_accountId.transactions._dto.Iso4217CurrencyCode","description":"ISO 4217 currency code. This value is only included if the transaction's currency is different than the account's default currency.","x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode.yaml","title":"Iso4217CurrencyCode","origin":"./src/publicApi"}},"transactionType":{"type":"string","enum":["ADJUSTMENT","CHECK","FEE","INTEREST","PAYMENT","WITHDRAWAL"]},"checkNumber":{"type":"number","description":"The check number of the transaction, if available. Only included if transactionType is CHECK."}},"required":["transactionId","transactionTimestamp","description","debitCreditMemo","status","amount"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/LineOfCreditTransaction","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/LineOfCreditTransaction.yaml","title":"LineOfCreditTransaction","origin":"./src/publicApi"},"title":"LineOfCreditTransaction"},"paths.fdx.accounts._param_accountId.transactions._dto.InvestmentTransaction":{"type":"object","properties":{"transactionId":{"type":"string","description":"Long-term persistent identity of the transaction."},"referenceTransactionId":{"type":"string","description":"For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction"},"postedTimestamp":{"type":"string","description":"The ISO 8601 date and time that the transaction was posted to the account. This will be included if status is POSTED."},"transactionTimestamp":{"type":"string","description":"The ISO 8601 date and time that the transaction was initiated."},"description":{"type":"string","description":"A description of the transaction."},"debitCreditMemo":{"type":"string","description":"The posting type of a transaction. The transaction amount is an absolute value, and this parameter indicates the direction of the transaction. This will always be DEBIT or CREDIT.","enum":["DEBIT","CREDIT","MEMO"]},"category":{"type":"string","description":"The merchant category code (MCC) of the transaction, if available."},"subCategory":{"type":"string","description":"Additional information about the transaction category, if available."},"status":{"type":"string","description":"The status of the transaction. This will always be PENDING or POSTED.","enum":["AUTHORIZATION","MEMO","PENDING","POSTED"]},"amount":{"type":"number","description":"The amount of money in the account currency in that currency's standard unit (e.g. dollars for USD). The amount is an absolute value. The debitCreditMemo parameter indicates the direction of the transaction."},"foreignAmount":{"type":"number","description":"This value is only included if the transaction's currency is different than the account's default currency."},"foreignCurrency":{"$ref":"#/components/schemas/paths.fdx.accounts._param_accountId.transactions._dto.Iso4217CurrencyCode","description":"ISO 4217 currency code. This value is only included if the transaction's currency is different than the account's default currency.","x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/Iso4217CurrencyCode.yaml","title":"Iso4217CurrencyCode","origin":"./src/publicApi"}},"transactionType":{"type":"string","enum":["ADJUSTMENT","ATM","CASH","CHECK","CLOSURE","CLOSUREOPT","CONTRIBUTION","DEP","DEPOSIT","DIRECTDEBIT","DIRECTDEP","DIV","DIVIDEND","DIVIDENDREINVEST","EXPENSE","FEE","INCOME","INTEREST","INVEXPENSE","JRNLFUND","JRNLSEC","MARGININTEREST","OPTIONEXERCISE","OPTIONEXPIRATION","OTHER","PAYMENT","POS","PURCHASED","PURCHASEDTOCOVER","PURCHASETOCLOSE","PURCHASETOOPEN","REINVESTOFINCOME","REPEATPMT","RETURNOFCAPITAL","SOLD","SOLDTOCLOSE","SOLDTOOPEN","SPLIT","SRVCHG","TRANSFER","XFER"]},"securityId":{"type":"string","description":"The security identifier for the transaction, if applicable."},"securityIdType":{"type":"string","enum":["CINS","CMC","CME","CUSIP","ISIN","ITSA","NASDAQ","SEDOL","SICC","VALOR","WKN"]},"securityType":{"type":"string","enum":["BOND","DEBT","DIGITALASSET","MUTUALFUND","OPTION","OTHER","STOCK","SWEEP"]},"symbol":{"type":"string","description":"Ticker symbol"},"commission":{"type":"number"},"fees":{"type":"number"},"unitPrice":{"type":"number"},"units":{"type":"number"},"unitType":{"type":"string","enum":["CURRENCY","SHARES"]},"fiAttributes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}},"required":["name","value"]}}},"required":["transactionId","transactionTimestamp","description","debitCreditMemo","status","amount","fees"],"x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/InvestmentTransaction","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/InvestmentTransaction.yaml","title":"InvestmentTransaction","origin":"./src/publicApi"},"title":"InvestmentTransaction"},"slashfi.models.entity.Invoice.InvoiceAggregate.yaml":{"type":"object","description":"Aggregate model for an invoice","properties":{"invoice":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.Invoice.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/Invoice","sourcePath":"entity/Invoice/Invoice.yaml","title":"Invoice","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"invoiceDetails":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceDetails.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceDetails","sourcePath":"entity/Invoice/InvoiceDetails.yaml","title":"InvoiceDetails","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"invoiceAccount":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAccount.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAccount","sourcePath":"entity/Invoice/InvoiceAccount.yaml","title":"InvoiceAccount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["invoice","invoiceDetails","invoiceAccount"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceAggregate"},"slashfi.models.entity.Invoice.Invoice.yaml":{"type":"object","description":"Top-level invoice model","properties":{"id":{"type":"string"},"status":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.Status.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/Status","sourcePath":"entity/Invoice/Status.yaml","title":"Status","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"collectedAmountCents":{"type":"number"},"invoiceDetailsId":{"type":"string"},"accountId":{"type":"string"},"legalEntityContactId":{"type":"string"},"legalEntityCustomerId":{"type":"string"},"invoicePaymentMethods":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSlashPaymentMethodConfig.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSlashPaymentMethodConfig","sourcePath":"entity/Invoice/InvoiceSlashPaymentMethodConfig.yaml","title":"InvoiceSlashPaymentMethodConfig","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"invoiceTransactions":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceTransaction.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceTransaction","sourcePath":"entity/Invoice/InvoiceTransaction.yaml","title":"InvoiceTransaction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"closedAt":{"type":"string","format":"date-time","nullable":true},"invoiceSeriesId":{"type":"string","nullable":true},"scheduledSendDate":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","collectedAmountCents","invoiceDetailsId","accountId","invoiceTransactions"],"x-entrypoint":{"virtualPath":"entity/Invoice/Invoice","sourcePath":"entity/Invoice/Invoice.yaml","title":"Invoice","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"Invoice"},"slashfi.models.entity.Invoice.Status.yaml":{"type":"string","enum":["void","unpaid","overdue","paid_partially","paid","scheduled"],"x-entrypoint":{"virtualPath":"entity/Invoice/Status","sourcePath":"entity/Invoice/Status.yaml","title":"Status","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"Status"},"slashfi.models.entity.Invoice.InvoiceSlashPaymentMethodConfig.yaml":{"oneOf":[{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodAchDebit.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodAchDebit","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodAchDebit.yaml","title":"PaymentMethodAchDebit","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodCardPayment.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodCardPayment","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodCardPayment.yaml","title":"PaymentMethodCardPayment","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodCryptoDeposit.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodCryptoDeposit","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodCryptoDeposit.yaml","title":"PaymentMethodCryptoDeposit","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundAchTransfer.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundAchTransfer","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundAchTransfer.yaml","title":"PaymentMethodInboundAchTransfer","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundInternationalWire.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundInternationalWire","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundInternationalWire.yaml","title":"PaymentMethodInboundInternationalWire","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundRtp.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundRtp","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundRtp.yaml","title":"PaymentMethodInboundRtp","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundWireTransfer.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundWireTransfer","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundWireTransfer.yaml","title":"PaymentMethodInboundWireTransfer","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSlashPaymentMethodConfig","sourcePath":"entity/Invoice/InvoiceSlashPaymentMethodConfig.yaml","title":"InvoiceSlashPaymentMethodConfig","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSlashPaymentMethodConfig"},"slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodAchDebit.yaml":{"type":"object","properties":{"method":{"type":"string","enum":["ach_debit"]},"config":{"type":"object","properties":{"passFeeToPayer":{"type":"boolean"}},"required":["passFeeToPayer"],"additionalProperties":false}},"required":["method","config"],"x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodAchDebit","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodAchDebit.yaml","title":"PaymentMethodAchDebit","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PaymentMethodAchDebit"},"slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodCardPayment.yaml":{"type":"object","properties":{"method":{"type":"string","enum":["acquiring_payment"]},"config":{"type":"object","properties":{"passFeeToPayer":{"type":"boolean"}},"required":["passFeeToPayer"],"additionalProperties":false}},"required":["method","config"],"x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodCardPayment","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodCardPayment.yaml","title":"PaymentMethodCardPayment","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PaymentMethodCardPayment"},"slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodCryptoDeposit.yaml":{"type":"object","properties":{"method":{"type":"string","enum":["crypto_deposit"]},"config":{"type":"object","properties":{"passFeeToPayer":{"type":"boolean"},"fiatRail":{"description":"The settlement rail configured for the invoice's Bridge deposit addresses. `instant` (Column liquidation routes) is never offered here — Column options are always included for their pairs independently of this config. `fednow` is offered flag-gated during the beta and renders to payers as \"Instant\".\n","$ref":"#/components/schemas/slashfi.models.enums.OffRamp.Method.yaml","x-entrypoint":{"virtualPath":"enums/OffRamp/Method","sourcePath":"enums/OffRamp/Method.yaml","title":"Method","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["passFeeToPayer"],"additionalProperties":false}},"required":["method","config"],"x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodCryptoDeposit","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodCryptoDeposit.yaml","title":"PaymentMethodCryptoDeposit","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PaymentMethodCryptoDeposit"},"slashfi.models.enums.OffRamp.Method.yaml":{"type":"string","enum":["wire","ach","instant","fednow"],"x-entrypoint":{"virtualPath":"enums/OffRamp/Method","sourcePath":"enums/OffRamp/Method.yaml","title":"Method","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"Method"},"slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundAchTransfer.yaml":{"type":"object","properties":{"method":{"type":"string","enum":["inbound_ach_transfer"]},"config":{"type":"object","additionalProperties":false}},"required":["method","config"],"x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundAchTransfer","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundAchTransfer.yaml","title":"PaymentMethodInboundAchTransfer","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PaymentMethodInboundAchTransfer"},"slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundInternationalWire.yaml":{"type":"object","properties":{"method":{"type":"string","enum":["inbound_international_wire"]},"config":{"type":"object","additionalProperties":false}},"required":["method","config"],"x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundInternationalWire","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundInternationalWire.yaml","title":"PaymentMethodInboundInternationalWire","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PaymentMethodInboundInternationalWire"},"slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundRtp.yaml":{"type":"object","properties":{"method":{"type":"string","enum":["inbound_rtp"]},"config":{"type":"object","additionalProperties":false}},"required":["method","config"],"x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundRtp","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundRtp.yaml","title":"PaymentMethodInboundRtp","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PaymentMethodInboundRtp"},"slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundWireTransfer.yaml":{"type":"object","properties":{"method":{"type":"string","enum":["inbound_wire_transfer"]},"config":{"type":"object","additionalProperties":false}},"required":["method","config"],"x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundWireTransfer","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundWireTransfer.yaml","title":"PaymentMethodInboundWireTransfer","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PaymentMethodInboundWireTransfer"},"slashfi.models.entity.Invoice.InvoiceTransaction.yaml":{"oneOf":[{"type":"object","properties":{"transactionType":{"type":"string","enum":["external"]},"transaction":{"type":"object","properties":{"paymentMethod":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceReconciliationPaymentMethod.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceReconciliationPaymentMethod","sourcePath":"entity/Invoice/InvoiceReconciliationPaymentMethod.yaml","title":"InvoiceReconciliationPaymentMethod","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"paidAt":{"type":"string"}},"required":["paymentMethod","paidAt"]}},"required":["transactionType","transaction"]},{"type":"object","properties":{"transactionType":{"type":"string","enum":["internal"]},"transaction":{"type":"object","properties":{"aggregatedTransactionId":{"type":"string"}},"required":["aggregatedTransactionId"]}},"required":["transactionType","transaction"]}],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceTransaction","sourcePath":"entity/Invoice/InvoiceTransaction.yaml","title":"InvoiceTransaction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceTransaction"},"slashfi.models.entity.Invoice.InvoiceReconciliationPaymentMethod.yaml":{"description":"Payment methods for invoice reconciliation (includes Slash-trackable methods plus external-only options like 'other')","oneOf":[{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSlashPaymentMethodConfig.yaml.properties.method","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSlashPaymentMethodConfig","sourcePath":"entity/Invoice/InvoiceSlashPaymentMethodConfig.yaml","title":"InvoiceSlashPaymentMethodConfig","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"type":"string","enum":["other"]}],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceReconciliationPaymentMethod","sourcePath":"entity/Invoice/InvoiceReconciliationPaymentMethod.yaml","title":"InvoiceReconciliationPaymentMethod","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceReconciliationPaymentMethod"},"slashfi.models.entity.Invoice.InvoiceSlashPaymentMethodConfig.yaml.properties.method":{"oneOf":[{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodAchDebit.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodAchDebit","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodAchDebit.yaml","title":"PaymentMethodAchDebit","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodCardPayment.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodCardPayment","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodCardPayment.yaml","title":"PaymentMethodCardPayment","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodCryptoDeposit.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodCryptoDeposit","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodCryptoDeposit.yaml","title":"PaymentMethodCryptoDeposit","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundAchTransfer.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundAchTransfer","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundAchTransfer.yaml","title":"PaymentMethodInboundAchTransfer","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundInternationalWire.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundInternationalWire","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundInternationalWire.yaml","title":"PaymentMethodInboundInternationalWire","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundRtp.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundRtp","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundRtp.yaml","title":"PaymentMethodInboundRtp","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.PaymentMethod.PaymentMethodInboundWireTransfer.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/PaymentMethod/PaymentMethodInboundWireTransfer","sourcePath":"entity/Invoice/PaymentMethod/PaymentMethodInboundWireTransfer.yaml","title":"PaymentMethodInboundWireTransfer","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSlashPaymentMethodConfig","sourcePath":"entity/Invoice/InvoiceSlashPaymentMethodConfig.yaml","title":"InvoiceSlashPaymentMethodConfig","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSlashPaymentMethodConfig"},"slashfi.models.entity.Invoice.InvoiceDetails.yaml":{"type":"object","properties":{"id":{"type":"string"},"issuedAt":{"type":"string","format":"date-time"},"dueAt":{"type":"string","format":"date-time"},"invoiceTz":{"type":"string","description":"IANA timezone identifier used for interpreting invoice dates","example":"America/New_York"},"currency":{"type":"string"},"lineItemsAndTotals":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.LineItemsAndTotals.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/LineItemsAndTotals","sourcePath":"entity/Invoice/LineItemsAndTotals.yaml","title":"LineItemsAndTotals","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"invoiceNumber":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceNumber.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceNumber","sourcePath":"entity/Invoice/InvoiceNumber.yaml","title":"InvoiceNumber","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"memo":{"type":"string","minLength":1,"maxLength":500},"documentId":{"type":"string"},"billedTo":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"address":{"$ref":"#/components/schemas/slashfi.models.entity.IAddressModel.yaml","x-entrypoint":{"virtualPath":"entity/IAddressModel","sourcePath":"entity/IAddressModel.yaml","title":"IAddressModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"ccEmails":{"type":"array","items":{"type":"string"},"maxItems":10}},"required":["name","email"]},"version":{"type":"integer","minimum":1}},"required":["id","issuedAt","dueAt","invoiceTz","currency","lineItemsAndTotals","invoiceNumber","documentId","billedTo","version"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceDetails","sourcePath":"entity/Invoice/InvoiceDetails.yaml","title":"InvoiceDetails","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceDetails"},"slashfi.models.entity.Invoice.LineItemsAndTotals.yaml":{"type":"object","properties":{"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceLineItem.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceLineItem","sourcePath":"entity/Invoice/InvoiceLineItem.yaml","title":"InvoiceLineItem","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"minItems":1},"discount":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceDiscount.yaml","nullable":true,"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceDiscount","sourcePath":"entity/Invoice/InvoiceDiscount.yaml","title":"InvoiceDiscount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"tax":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceTax.yaml","nullable":true,"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceTax","sourcePath":"entity/Invoice/InvoiceTax.yaml","title":"InvoiceTax","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"subtotalCents":{"type":"number"},"totalAmountCents":{"type":"number"}},"required":["lineItems","subtotalCents","totalAmountCents"],"x-entrypoint":{"virtualPath":"entity/Invoice/LineItemsAndTotals","sourcePath":"entity/Invoice/LineItemsAndTotals.yaml","title":"LineItemsAndTotals","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"LineItemsAndTotals"},"slashfi.models.entity.Invoice.InvoiceLineItem.yaml":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"quantity":{"type":"number"},"priceCents":{"type":"number"},"catalogItemId":{"type":"string","description":"Optional provenance stamp indicating this line item was populated from a catalog item. Cleared if the user manually edits the name or price after selection."}},"required":["name","quantity","priceCents"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceLineItem","sourcePath":"entity/Invoice/InvoiceLineItem.yaml","title":"InvoiceLineItem","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceLineItem"},"slashfi.models.entity.Invoice.InvoiceDiscount.yaml":{"discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["percentage"]},"percent":{"type":"number"}},"required":["type","percent"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["fixed"]},"amountCents":{"type":"number"}},"required":["type","amountCents"]}],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceDiscount","sourcePath":"entity/Invoice/InvoiceDiscount.yaml","title":"InvoiceDiscount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceDiscount"},"slashfi.models.entity.Invoice.InvoiceTax.yaml":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["percentage"]},"percent":{"type":"number"}},"required":["type","percent"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceTax","sourcePath":"entity/Invoice/InvoiceTax.yaml","title":"InvoiceTax","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceTax"},"slashfi.models.entity.Invoice.InvoiceNumber.yaml":{"type":"string","pattern":"^[A-Z0-9-_]+$","minLength":1,"maxLength":50,"description":"A user-defined invoice identifier. Allows uppercase letters (A-Z), numbers (0-9), dashes (-), and underscores (_).\n","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceNumber","sourcePath":"entity/Invoice/InvoiceNumber.yaml","title":"InvoiceNumber","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceNumber"},"slashfi.models.entity.IAddressModel.yaml":{"title":"IAddressModel","type":"object","properties":{"addressLine":{"type":"string"},"addressLine2":{"type":"string"},"addressCity":{"type":"string"},"addressState":{"type":"string"},"addressZip":{"type":"string"},"addressCountry":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...)."}},"required":["addressLine","addressCity","addressState","addressZip"],"x-entrypoint":{"virtualPath":"entity/IAddressModel","sourcePath":"entity/IAddressModel.yaml","title":"IAddressModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"slashfi.models.entity.Invoice.InvoiceAccount.yaml":{"oneOf":[{"$ref":"#/components/schemas/slashfi.models.entity.Subaccount.Model.yaml","x-entrypoint":{"virtualPath":"entity/Subaccount/Model","sourcePath":"entity/Subaccount/Model.yaml","title":"Model","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.SlashAccount.Group.Model.yaml","x-entrypoint":{"virtualPath":"entity/SlashAccount/Group/Model","sourcePath":"entity/SlashAccount/Group/Model.yaml","title":"Model","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"$ref":"#/components/schemas/slashfi.models.entity.SlashWalletAccount.yaml","x-entrypoint":{"virtualPath":"entity/SlashWalletAccount","sourcePath":"entity/SlashWalletAccount.yaml","title":"SlashWalletAccount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAccount","sourcePath":"entity/Invoice/InvoiceAccount.yaml","title":"InvoiceAccount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceAccount"},"slashfi.models.entity.Subaccount.Model.yaml":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/slashfi.models.entity.Subaccount.Id.yaml","x-entrypoint":{"virtualPath":"entity/Subaccount/Id","sourcePath":"entity/Subaccount/Id.yaml","title":"Id","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"name":{"type":"string"},"accountNumber":{"type":"string"},"routingNumber":{"type":"string"},"slashAccountGroupId":{"type":"string"},"closedAt":{"type":"string"},"accountType":{"type":"string","enum":["default","primary"]}},"required":["id","name","slashAccountGroupId","accountType"],"x-entrypoint":{"virtualPath":"entity/Subaccount/Model","sourcePath":"entity/Subaccount/Model.yaml","title":"Model","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"Model"},"slashfi.models.entity.Subaccount.Id.yaml":{"type":"string","pattern":"^subaccount_[a-z0-9]*","x-typescript":{"typeLiteral":"subaccount_${string}"},"description":"Represent a Subaccount ID in the format of \"subaccount_102jifoij01\"","x-entrypoint":{"virtualPath":"entity/Subaccount/Id","sourcePath":"entity/Subaccount/Id.yaml","title":"Id","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"Id"},"slashfi.models.entity.SlashAccount.Group.Model.yaml":{"type":"object","properties":{"$entity":{"type":"string","enum":["slash_account_group"]},"id":{"type":"string"},"legalEntityId":{"type":"string"},"groupType":{"$ref":"#/components/schemas/slashfi.models.enums.SlashAccountGroupType.yaml","x-entrypoint":{"virtualPath":"enums/SlashAccountGroupType","sourcePath":"enums/SlashAccountGroupType.yaml","title":"SlashAccountGroupType","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"accountType":{"$ref":"#/components/schemas/slashfi.models.enums.SlashAccountType.yaml","x-entrypoint":{"virtualPath":"enums/SlashAccountType","sourcePath":"enums/SlashAccountType.yaml","title":"SlashAccountType","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"groupName":{"type":"string"},"provider":{"$ref":"#/components/schemas/slashfi.models.enums.SlashAccountProvider.yaml","x-entrypoint":{"virtualPath":"enums/SlashAccountProvider","sourcePath":"enums/SlashAccountProvider.yaml","title":"SlashAccountProvider","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"currency":{"type":"string"},"accountNumber":{"type":"string"},"routingNumber":{"type":"string"},"lockedAt":{"type":"string"},"closedAt":{"type":"string"},"pendingClosedAt":{"type":"string"},"timestamp":{"type":"string"},"additionalData":{"type":"object","properties":{"avsSettings":{"$ref":"#/components/schemas/slashfi.models.entity.SlashAccount.Group.Avs.AvsSettings.yaml","x-entrypoint":{"virtualPath":"entity/SlashAccount/Group/Avs/AvsSettings","sourcePath":"entity/SlashAccount/Group/Avs/AvsSettings.yaml","title":"AvsSettings","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}}}},"required":["$entity","id","legalEntityId","groupType","accountType","groupName","currency","timestamp"],"x-entrypoint":{"virtualPath":"entity/SlashAccount/Group/Model","sourcePath":"entity/SlashAccount/Group/Model.yaml","title":"Model","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"Model"},"slashfi.models.enums.SlashAccountGroupType.yaml":{"type":"string","enum":["checking","charge_card","unsecured_charge_card","business_debit_card_account","savings","global_usd","acquiring"],"x-entrypoint":{"virtualPath":"enums/SlashAccountGroupType","sourcePath":"enums/SlashAccountGroupType.yaml","title":"SlashAccountGroupType","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"SlashAccountGroupType"},"slashfi.models.enums.SlashAccountType.yaml":{"type":"string","enum":["consumer","commercial"],"x-entrypoint":{"virtualPath":"enums/SlashAccountType","sourcePath":"enums/SlashAccountType.yaml","title":"SlashAccountType","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"SlashAccountType"},"slashfi.models.enums.SlashAccountProvider.yaml":{"type":"string","enum":["bnk.dev","stripe","treasury_prime","orum","column","slash","privy","alchemy","bridge","rain"],"x-entrypoint":{"virtualPath":"enums/SlashAccountProvider","sourcePath":"enums/SlashAccountProvider.yaml","title":"SlashAccountProvider","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"SlashAccountProvider"},"slashfi.models.entity.SlashAccount.Group.Avs.AvsSettings.yaml":{"type":"object","properties":{"avsMode":{"type":"string","enum":["alwaysApprove","proper","custom"]},"constraints":{"deprecated":true,"$ref":"#/components/schemas/slashfi.models.entity.SlashAccount.Group.Avs.AvsConstraint.yaml","x-entrypoint":{"virtualPath":"entity/SlashAccount/Group/Avs/AvsConstraint","sourcePath":"entity/SlashAccount/Group/Avs/AvsConstraint.yaml","title":"AvsConstraint","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"avsAddress":{"type":"object","properties":{"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"}},"required":["addressLine1","city","state","zip","country"]}},"required":["avsMode"],"x-entrypoint":{"virtualPath":"entity/SlashAccount/Group/Avs/AvsSettings","sourcePath":"entity/SlashAccount/Group/Avs/AvsSettings.yaml","title":"AvsSettings","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"AvsSettings"},"slashfi.models.entity.SlashAccount.Group.Avs.AvsConstraint.yaml":{"type":"object","properties":{"merchantCategoryRule":{"type":"object","properties":{"merchantCategories":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/slashfi.models.entity.CardGroup.Restriction.yaml","x-entrypoint":{"virtualPath":"entity/CardGroup/Restriction","sourcePath":"entity/CardGroup/Restriction.yaml","title":"Restriction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["merchantCategories","restriction"]},"merchantRule":{"type":"object","properties":{"merchants":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/slashfi.models.entity.CardGroup.Restriction.yaml","x-entrypoint":{"virtualPath":"entity/CardGroup/Restriction","sourcePath":"entity/CardGroup/Restriction.yaml","title":"Restriction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["merchants","restriction"]},"countryRestriction":{"type":"object","properties":{"countries":{"type":"array","items":{"type":"string"}},"restriction":{"$ref":"#/components/schemas/slashfi.models.entity.CardGroup.Restriction.yaml","x-entrypoint":{"virtualPath":"entity/CardGroup/Restriction","sourcePath":"entity/CardGroup/Restriction.yaml","title":"Restriction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["restriction","countries"]},"merchantCategoryCodeRule":{"type":"object","properties":{"restriction":{"$ref":"#/components/schemas/slashfi.models.entity.CardGroup.Restriction.yaml","x-entrypoint":{"virtualPath":"entity/CardGroup/Restriction","sourcePath":"entity/CardGroup/Restriction.yaml","title":"Restriction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"merchantCategoryCodes":{"type":"array","items":{"type":"string"}}},"required":["restriction","merchantCategoryCodes"]}},"x-entrypoint":{"virtualPath":"entity/SlashAccount/Group/Avs/AvsConstraint","sourcePath":"entity/SlashAccount/Group/Avs/AvsConstraint.yaml","title":"AvsConstraint","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"AvsConstraint"},"slashfi.models.entity.CardGroup.Restriction.yaml":{"type":"string","enum":["allowlist","blacklist"],"x-entrypoint":{"virtualPath":"entity/CardGroup/Restriction","sourcePath":"entity/CardGroup/Restriction.yaml","title":"Restriction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"Restriction"},"slashfi.models.entity.SlashWalletAccount.yaml":{"type":"object","properties":{"$entity":{"type":"string","enum":["slash_wallet_account"]},"id":{"type":"string","description":"The ID of the slash wallet account"},"slashWalletId":{"type":"string","description":"The ID of the slash wallet associated with this account"},"chains":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.enums.Crypto.Chain.yaml","x-entrypoint":{"virtualPath":"enums/Crypto/Chain","sourcePath":"enums/Crypto/Chain.yaml","title":"Chain","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"protocol":{"type":"string","enum":["evm","solana"],"description":"The protocol that this wallet account supports"},"address":{"type":"string","description":"The blockchain address of the wallet account"},"provider":{"type":"string","enum":["privy","alchemy","bridge","rain"],"description":"The provider of the wallet account"},"providerId":{"type":"string","description":"The ID of the entity on the provider's end"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when this wallet account was created"},"timestamp":{"type":"string","format":"date-time","description":"The timestamp when this record was last modified"}},"required":["$entity","id","slashWalletId","chains","address","provider","providerId","timestamp"],"x-entrypoint":{"virtualPath":"entity/SlashWalletAccount","sourcePath":"entity/SlashWalletAccount.yaml","title":"SlashWalletAccount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"SlashWalletAccount"},"slashfi.models.enums.Crypto.Chain.yaml":{"type":"string","enum":["aptos","arbitrum","avalanche","base","celo","ethereum","hyperevm","optimism","plasma","polygon","solana","stellar","sui","tempo","tron"],"x-entrypoint":{"virtualPath":"enums/Crypto/Chain","sourcePath":"enums/Crypto/Chain.yaml","title":"Chain","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"Chain"},"slashfi.models.entity.Invoice.InvoiceDetailsInput.yaml":{"type":"object","additionalProperties":false,"properties":{"issuedAt":{"type":"string","format":"date"},"dueAt":{"type":"string","format":"date"},"invoiceTz":{"type":"string","description":"IANA timezone identifier used for interpreting invoice dates","example":"America/New_York"},"lineItemsAndTotals":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.LineItemsAndTotalsInput.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/LineItemsAndTotalsInput","sourcePath":"entity/Invoice/LineItemsAndTotalsInput.yaml","title":"LineItemsAndTotalsInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"invoiceNumber":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceNumber.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceNumber","sourcePath":"entity/Invoice/InvoiceNumber.yaml","title":"InvoiceNumber","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"memo":{"type":"string","minLength":1,"maxLength":500},"version":{"type":"integer","minimum":1,"description":"Current version of the invoice details for optimistic locking. Required on updates, ignored on create."},"ccEmails":{"type":"array","items":{"type":"string"},"maxItems":10}},"required":["issuedAt","dueAt","invoiceTz","lineItemsAndTotals","invoiceNumber"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceDetailsInput","sourcePath":"entity/Invoice/InvoiceDetailsInput.yaml","title":"InvoiceDetailsInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceDetailsInput"},"slashfi.models.entity.Invoice.LineItemsAndTotalsInput.yaml":{"type":"object","additionalProperties":false,"properties":{"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceLineItem.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceLineItem","sourcePath":"entity/Invoice/InvoiceLineItem.yaml","title":"InvoiceLineItem","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"minItems":1},"discount":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceDiscount.yaml","nullable":true,"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceDiscount","sourcePath":"entity/Invoice/InvoiceDiscount.yaml","title":"InvoiceDiscount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"tax":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceTax.yaml","nullable":true,"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceTax","sourcePath":"entity/Invoice/InvoiceTax.yaml","title":"InvoiceTax","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["lineItems"],"x-entrypoint":{"virtualPath":"entity/Invoice/LineItemsAndTotalsInput","sourcePath":"entity/Invoice/LineItemsAndTotalsInput.yaml","title":"LineItemsAndTotalsInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"LineItemsAndTotalsInput"},"slashfi.models.entity.Invoice.InvoiceSettings.yaml":{"type":"object","description":"Full invoice settings entity for a legal entity, including metadata.","properties":{"$entity":{"type":"string","enum":["invoice_settings"]},"id":{"type":"string"},"legalEntityId":{"type":"string"},"settings":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSettingsData.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSettingsData","sourcePath":"entity/Invoice/InvoiceSettingsData.yaml","title":"InvoiceSettingsData","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"timestamp":{"type":"string","format":"date-time"}},"required":["$entity","id","legalEntityId","settings","timestamp"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSettings","sourcePath":"entity/Invoice/InvoiceSettings.yaml","title":"InvoiceSettings","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSettings"},"slashfi.models.entity.Invoice.InvoiceSettingsData.yaml":{"type":"object","description":"Invoice display settings for a legal entity.","properties":{"companyName":{"type":"string","description":"The company name to display on invoices.","minLength":1},"email":{"type":"string","format":"email","description":"The email address to display on invoices.","minLength":1},"address":{"$ref":"#/components/schemas/slashfi.models.entity.IAddressModel.yaml","description":"The company address to display on invoices.","x-entrypoint":{"virtualPath":"entity/IAddressModel","sourcePath":"entity/IAddressModel.yaml","title":"IAddressModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"defaultMemo":{"type":"string","description":"Default memo text to pre-fill when creating new invoices.","maxLength":500},"invoiceTerms":{"type":"string","description":"Terms text to display on invoices. Only shown when INVOICE_TERMS_MAR_2026 feature flag is enabled.","maxLength":2000},"defaultPaymentTermsDays":{"type":"integer","description":"Default payment terms in days (Net N). Used to auto-calculate due date from issue date when creating invoices.","minimum":0},"logoDocumentId":{"type":"string","description":"Document ID of an invoice_logo document owned by this legal entity or its Slash accounts or account groups. Other document types are rejected."},"unitPriceDecimalPlaces":{"type":"integer","description":"Number of decimal places allowed for unit prices (in dollars). Defaults to 2 if not set.","minimum":2,"maximum":6},"branding":{"type":"object","description":"Custom branding settings for invoice styling. Extensible for future branding options.","properties":{"backgroundColor":{"type":"string","description":"Hex color code for header background and accent elements (e.g., pay button).","pattern":"^#[0-9A-Fa-f]{6}$"},"titleColor":{"type":"string","description":"Hex color code for title text, amounts, and section headings.","pattern":"^#[0-9A-Fa-f]{6}$"}}}},"required":["companyName","email","address"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSettingsData","sourcePath":"entity/Invoice/InvoiceSettingsData.yaml","title":"InvoiceSettingsData","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSettingsData"},"slashfi.models.entity.Invoice.InvoiceSeries.yaml":{"description":"Invoice series model for API responses","type":"object","properties":{"$entity":{"type":"string","enum":["invoice_series"]},"id":{"type":"string"},"status":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesStatus.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesStatus","sourcePath":"entity/Invoice/InvoiceSeriesStatus.yaml","title":"InvoiceSeriesStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"recurrenceRule":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesRecurrenceRule.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesRecurrenceRule","sourcePath":"entity/Invoice/InvoiceSeriesRecurrenceRule.yaml","title":"InvoiceSeriesRecurrenceRule","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"paymentTermsDays":{"type":"integer"},"invoiceTz":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"endCondition":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesEndCondition.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesEndCondition","sourcePath":"entity/Invoice/InvoiceSeriesEndCondition.yaml","title":"InvoiceSeriesEndCondition","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"nextScheduledDate":{"type":"string","format":"date-time","nullable":true},"template":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesTemplate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesTemplate","sourcePath":"entity/Invoice/InvoiceSeriesTemplate.yaml","title":"InvoiceSeriesTemplate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"paymentMethods":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSlashPaymentMethodConfig.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSlashPaymentMethodConfig","sourcePath":"entity/Invoice/InvoiceSlashPaymentMethodConfig.yaml","title":"InvoiceSlashPaymentMethodConfig","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"accountId":{"type":"string"},"legalEntityContactId":{"type":"string"},"legalEntityCustomerId":{"type":"string"}},"required":["$entity","id","status","recurrenceRule","paymentTermsDays","invoiceTz","startDate","endCondition","template","paymentMethods","accountId"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeries","sourcePath":"entity/Invoice/InvoiceSeries.yaml","title":"InvoiceSeries","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSeries"},"slashfi.models.entity.Invoice.InvoiceSeriesStatus.yaml":{"type":"string","enum":["active","ended","cancelled"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesStatus","sourcePath":"entity/Invoice/InvoiceSeriesStatus.yaml","title":"InvoiceSeriesStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSeriesStatus"},"slashfi.models.entity.Invoice.InvoiceSeriesRecurrenceRule.yaml":{"description":"Discriminated union defining when a recurring invoice series issues invoices","oneOf":[{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["weekly"]},"dayOfWeek":{"type":"integer","minimum":0,"maximum":6,"description":"Day of week (0 = Sunday, 6 = Saturday)"}},"required":["type","dayOfWeek"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["monthly_day_of_month"]},"dayOfMonth":{"type":"integer","minimum":1,"maximum":31,"description":"Day of month. Clamped to last day of month at generation time (e.g. 31 becomes 28 in February)."}},"required":["type","dayOfMonth"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["monthly_nth_weekday"]},"nth":{"oneOf":[{"type":"integer","minimum":1,"maximum":4},{"type":"string","enum":["last"]}],"description":"Which occurrence of the weekday in the month (1-4, or \"last\")"},"dayOfWeek":{"type":"integer","minimum":0,"maximum":6,"description":"Day of week (0 = Sunday, 6 = Saturday)"}},"required":["type","nth","dayOfWeek"]}],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesRecurrenceRule","sourcePath":"entity/Invoice/InvoiceSeriesRecurrenceRule.yaml","title":"InvoiceSeriesRecurrenceRule","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSeriesRecurrenceRule"},"slashfi.models.entity.Invoice.InvoiceSeriesEndCondition.yaml":{"description":"Discriminated union defining when a recurring invoice series stops generating invoices","oneOf":[{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["never"]}},"required":["type"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["after_count"]},"count":{"type":"integer","minimum":1,"description":"Number of invoices to generate before ending the series"}},"required":["type","count"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["on_date"]},"date":{"type":"string","format":"date","description":"ISO date string in the series timezone after which no more invoices are generated"}},"required":["type","date"]}],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesEndCondition","sourcePath":"entity/Invoice/InvoiceSeriesEndCondition.yaml","title":"InvoiceSeriesEndCondition","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSeriesEndCondition"},"slashfi.models.entity.Invoice.InvoiceSeriesTemplate.yaml":{"description":"Template data used to generate each invoice in a recurring series","type":"object","additionalProperties":false,"properties":{"lineItemsAndTotals":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.LineItemsAndTotalsInput.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/LineItemsAndTotalsInput","sourcePath":"entity/Invoice/LineItemsAndTotalsInput.yaml","title":"LineItemsAndTotalsInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"memo":{"type":"string","maxLength":500},"ccEmails":{"type":"array","items":{"type":"string"},"maxItems":10}},"required":["lineItemsAndTotals"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesTemplate","sourcePath":"entity/Invoice/InvoiceSeriesTemplate.yaml","title":"InvoiceSeriesTemplate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSeriesTemplate"},"slashfi.models.entity.Invoice.InvoiceSeriesInput.yaml":{"description":"Input for creating or editing a recurring invoice series","type":"object","additionalProperties":false,"properties":{"accountId":{"type":"string"},"legalEntityContactId":{"type":"string","description":"Immutable after creation. Ignored on edit."},"legalEntityCustomerId":{"type":"string","description":"The legal entity customer this series is for. Optional during transition."},"recurrenceRule":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesRecurrenceRule.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesRecurrenceRule","sourcePath":"entity/Invoice/InvoiceSeriesRecurrenceRule.yaml","title":"InvoiceSeriesRecurrenceRule","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"paymentTermsDays":{"type":"integer","minimum":0,"description":"Number of days after issuance that the invoice is due. 0 = Due on Receipt."},"invoiceTz":{"type":"string","description":"IANA timezone identifier used for date calculations","example":"America/New_York"},"startDate":{"type":"string","format":"date","description":"Date (in invoiceTz) from which to begin generating invoices"},"endCondition":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesEndCondition.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesEndCondition","sourcePath":"entity/Invoice/InvoiceSeriesEndCondition.yaml","title":"InvoiceSeriesEndCondition","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"template":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesTemplate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesTemplate","sourcePath":"entity/Invoice/InvoiceSeriesTemplate.yaml","title":"InvoiceSeriesTemplate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"paymentMethods":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSlashPaymentMethodConfig.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSlashPaymentMethodConfig","sourcePath":"entity/Invoice/InvoiceSlashPaymentMethodConfig.yaml","title":"InvoiceSlashPaymentMethodConfig","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}}},"required":["accountId","recurrenceRule","paymentTermsDays","invoiceTz","startDate","endCondition","template"],"x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesInput","sourcePath":"entity/Invoice/InvoiceSeriesInput.yaml","title":"InvoiceSeriesInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"InvoiceSeriesInput"},"slashfi.models.entity.ExpenseReport.PublicExpenseReportWithMetadata.yaml":{"type":"object","description":"An expense report with enriched metadata, stripped for public API consumption","allOf":[{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ExpenseReport.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ExpenseReport","sourcePath":"entity/ExpenseReport/ExpenseReport.yaml","title":"ExpenseReport","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"type":"object","properties":{"merchant":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ExpenseReportMerchant.yaml","description":"The merchant associated with this expense (enriched from merchantV2Id or customMerchantId)","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ExpenseReportMerchant","sourcePath":"entity/ExpenseReport/ExpenseReportMerchant.yaml","title":"ExpenseReportMerchant","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"documents":{"type":"array","description":"Documents/receipts attached to this expense report with presigned URLs","items":{"type":"object","properties":{"document":{"$ref":"#/components/schemas/slashfi.models.entity.Document.IDocumentModel.yaml","description":"The document metadata","x-entrypoint":{"virtualPath":"entity/Document/IDocumentModel","sourcePath":"entity/Document/IDocumentModel.yaml","title":"IDocumentModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"url":{"type":"string","description":"Presigned S3 URL for accessing the document"}},"required":["document","url"]}},"aggregatedTransaction":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicTransactionSummary.yaml","description":"Minimal transaction summary for the payout","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicTransactionSummary","sourcePath":"entity/ExpenseReport/PublicTransactionSummary.yaml","title":"PublicTransactionSummary","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"destination":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicReimbursementSource.yaml","description":"Minimal bank account info for the reimbursement destination","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicReimbursementSource","sourcePath":"entity/ExpenseReport/PublicReimbursementSource.yaml","title":"PublicReimbursementSource","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"submittedByUser":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicUserSummary.yaml","description":"The user who submitted the expense report","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicUserSummary","sourcePath":"entity/ExpenseReport/PublicUserSummary.yaml","title":"PublicUserSummary","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"reviewedByUser":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicUserSummary.yaml","description":"The admin who reviewed the expense report","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicUserSummary","sourcePath":"entity/ExpenseReport/PublicUserSummary.yaml","title":"PublicUserSummary","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"review":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ExpenseReportReview.yaml","description":"The review decision for this expense report (if reviewed)","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ExpenseReportReview","sourcePath":"entity/ExpenseReport/ExpenseReportReview.yaml","title":"ExpenseReportReview","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}}}],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicExpenseReportWithMetadata","sourcePath":"entity/ExpenseReport/PublicExpenseReportWithMetadata.yaml","title":"PublicExpenseReportWithMetadata","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PublicExpenseReportWithMetadata"},"slashfi.models.entity.ExpenseReport.ExpenseReport.yaml":{"type":"object","description":"An expense report submitted by an employee for reimbursement (matches database schema)","properties":{"id":{"$ref":"#/components/schemas/slashfi.models.id.ExpenseReport.ExpenseReportId.yaml","description":"The unique ID of the expense report","x-entrypoint":{"virtualPath":"id/ExpenseReport/ExpenseReportId","sourcePath":"id/ExpenseReport/ExpenseReportId.yaml","title":"ExpenseReportId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"legalEntityId":{"$ref":"#/components/schemas/slashfi.models.id.LegalEntityId.yaml","description":"The ID of the legal entity this expense report belongs to","x-entrypoint":{"virtualPath":"id/LegalEntityId","sourcePath":"id/LegalEntityId.yaml","title":"LegalEntityId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"submittedByUserId":{"$ref":"#/components/schemas/slashfi.models.id.User.yaml","description":"The ID of the user who submitted this expense report","x-entrypoint":{"virtualPath":"id/User","sourcePath":"id/User.yaml","title":"User","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"amountCents":{"type":"integer","description":"The expense amount in cents"},"currency":{"type":"string","description":"ISO currency code (e.g., 'USD')"},"transactionDate":{"type":"string","format":"date-time","description":"The date of the transaction being reimbursed"},"merchantV2Id":{"$ref":"#/components/schemas/slashfi.models.id.MerchantV2Id.yaml","nullable":true,"description":"Reference to MerchantV2 registry (mutually exclusive with customMerchantId)","x-entrypoint":{"virtualPath":"id/MerchantV2Id","sourcePath":"id/MerchantV2Id.yaml","title":"MerchantV2Id","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"customMerchantId":{"$ref":"#/components/schemas/slashfi.models.id.CustomMerchant.CustomMerchantId.yaml","nullable":true,"description":"Reference to custom merchant (mutually exclusive with merchantV2Id)","x-entrypoint":{"virtualPath":"id/CustomMerchant/CustomMerchantId","sourcePath":"id/CustomMerchant/CustomMerchantId.yaml","title":"CustomMerchantId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"memo":{"type":"string","nullable":true,"description":"Description or notes for the expense"},"destinationId":{"$ref":"#/components/schemas/slashfi.models.id.UserBankAccount.yaml","description":"The user's bank account ID for payout","x-entrypoint":{"virtualPath":"id/UserBankAccount","sourcePath":"id/UserBankAccount.yaml","title":"UserBankAccount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"submittedAt":{"type":"string","format":"date-time","description":"When the expense report was submitted"},"status":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ExpenseReportStatus.yaml","description":"Current status of the expense report","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ExpenseReportStatus","sourcePath":"entity/ExpenseReport/ExpenseReportStatus.yaml","title":"ExpenseReportStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"timestamp":{"type":"string","format":"date-time","description":"Metadata timestamp"},"fxRateToUsd":{"type":"string","nullable":true,"description":"FX rate at submission time in format \"1 USD = X foreign\" (e.g., \"7.0286\" for CNY means 100 CNY / 7.0286 = $14.23 USD)"},"fxRateUpdatedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the FX rate was captured"},"noReceiptReason":{"type":"string","description":"Reason for not having a receipt. Should only be set when this report has no receipt (expense report documents) associated with it."}},"required":["id","legalEntityId","submittedByUserId","amountCents","currency","transactionDate","destinationId","submittedAt","status","timestamp"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ExpenseReport","sourcePath":"entity/ExpenseReport/ExpenseReport.yaml","title":"ExpenseReport","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ExpenseReport"},"slashfi.models.id.ExpenseReport.ExpenseReportId.yaml":{"type":"string","pattern":"^expense_report_[a-z0-9]*","x-typescript":{"typeLiteral":"expense_report_${string}"},"description":"Represents an ExpenseReport ID in the format of \"expense_report_102jifoij01\"","x-entrypoint":{"virtualPath":"id/ExpenseReport/ExpenseReportId","sourcePath":"id/ExpenseReport/ExpenseReportId.yaml","title":"ExpenseReportId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ExpenseReportId"},"slashfi.models.id.LegalEntityId.yaml":{"type":"string","pattern":"^le_[a-z0-9]*","x-typescript":{"typeLiteral":"le_${string}"},"description":"Represent a Legal Entity ID in the format of \"le_102jifoij01\"","x-entrypoint":{"virtualPath":"id/LegalEntityId","sourcePath":"id/LegalEntityId.yaml","title":"LegalEntityId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"LegalEntityId"},"slashfi.models.id.User.yaml":{"type":"string","pattern":"^u_[a-z0-9]*","x-typescript":{"typeLiteral":"u_${string}"},"description":"Represent a User ID in the format of \"u_102jifoij01\"","x-entrypoint":{"virtualPath":"id/User","sourcePath":"id/User.yaml","title":"User","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"User"},"slashfi.models.id.MerchantV2Id.yaml":{"type":"string","x-typescript":{"typeLiteral":"merchant_v2_${string}"},"description":"Represent a Merchant V2 ID in the format of \"merchant_v2_102jifoij01\"","x-entrypoint":{"virtualPath":"id/MerchantV2Id","sourcePath":"id/MerchantV2Id.yaml","title":"MerchantV2Id","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"MerchantV2Id"},"slashfi.models.id.CustomMerchant.CustomMerchantId.yaml":{"type":"string","pattern":"^custom_merchant_[a-z0-9]*","x-typescript":{"typeLiteral":"custom_merchant_${string}"},"description":"Represent a Custom Merchant ID in the format of \"custom_merchant_102jifoij01\"","x-entrypoint":{"virtualPath":"id/CustomMerchant/CustomMerchantId","sourcePath":"id/CustomMerchant/CustomMerchantId.yaml","title":"CustomMerchantId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"CustomMerchantId"},"slashfi.models.id.UserBankAccount.yaml":{"type":"string","pattern":"^ub_[a-z0-9]*","x-typescript":{"typeLiteral":"ub_${string}"},"description":"Represent a UserBankAccount ID in the format of \"ub_102jifoij01\"","x-entrypoint":{"virtualPath":"id/UserBankAccount","sourcePath":"id/UserBankAccount.yaml","title":"UserBankAccount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"UserBankAccount"},"slashfi.models.entity.ExpenseReport.ExpenseReportStatus.yaml":{"type":"string","description":"The status of an expense report","enum":["pending_review","cancelled","rejected","payment_processing","payment_completed","payment_failed"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ExpenseReportStatus","sourcePath":"entity/ExpenseReport/ExpenseReportStatus.yaml","title":"ExpenseReportStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ExpenseReportStatus"},"slashfi.models.entity.ExpenseReport.ExpenseReportMerchant.yaml":{"description":"The merchant associated with an expense report (either a merchantV2 or customMerchant)","oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["merchantV2"]},"merchantV2":{"$ref":"#/components/schemas/slashfi.models.entity.Merchant.MerchantV2.yaml","x-entrypoint":{"virtualPath":"entity/Merchant/MerchantV2","sourcePath":"entity/Merchant/MerchantV2.yaml","title":"MerchantV2","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["type","merchantV2"]},{"type":"object","properties":{"type":{"type":"string","enum":["customMerchant"]},"customMerchant":{"$ref":"#/components/schemas/slashfi.models.entity.CustomMerchant.CustomMerchant.yaml","x-entrypoint":{"virtualPath":"entity/CustomMerchant/CustomMerchant","sourcePath":"entity/CustomMerchant/CustomMerchant.yaml","title":"CustomMerchant","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["type","customMerchant"]}],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ExpenseReportMerchant","sourcePath":"entity/ExpenseReport/ExpenseReportMerchant.yaml","title":"ExpenseReportMerchant","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ExpenseReportMerchant"},"slashfi.models.entity.Merchant.MerchantV2.yaml":{"title":"MerchantV2","type":"object","required":["$entity","id","name","metadata","isLive","isInstantCashback"],"properties":{"$entity":{"type":"string","enum":["merchant_v2"]},"id":{"type":"string"},"heronId":{"type":"string"},"name":{"type":"string"},"iconUrl":{"type":"string"},"logoUrl":{"type":"string"},"url":{"type":"string"},"isLive":{"type":"boolean"},"isInstantCashback":{"type":"boolean"},"merchantCategoryId":{"type":"string"},"metadata":{"$ref":"#/components/schemas/slashfi.models.entity.IMetadataModel.yaml","x-entrypoint":{"virtualPath":"entity/IMetadataModel","sourcePath":"entity/IMetadataModel.yaml","title":"IMetadataModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"x-entrypoint":{"virtualPath":"entity/Merchant/MerchantV2","sourcePath":"entity/Merchant/MerchantV2.yaml","title":"MerchantV2","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"slashfi.models.entity.IMetadataModel.yaml":{"type":"object","properties":{"timestamp":{"format":"date-time","type":"string"}},"required":["timestamp"],"x-entrypoint":{"virtualPath":"entity/IMetadataModel","sourcePath":"entity/IMetadataModel.yaml","title":"IMetadataModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"IMetadataModel"},"slashfi.models.entity.CustomMerchant.CustomMerchant.yaml":{"type":"object","description":"Custom merchant schema","properties":{"id":{"$ref":"#/components/schemas/slashfi.models.id.CustomMerchant.CustomMerchantId.yaml","description":"The ID of the custom merchant","x-entrypoint":{"virtualPath":"id/CustomMerchant/CustomMerchantId","sourcePath":"id/CustomMerchant/CustomMerchantId.yaml","title":"CustomMerchantId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"legalEntityId":{"$ref":"#/components/schemas/slashfi.models.id.LegalEntityId.yaml","description":"The ID of the legal entity this custom merchant belongs to","x-entrypoint":{"virtualPath":"id/LegalEntityId","sourcePath":"id/LegalEntityId.yaml","title":"LegalEntityId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"addedByUserId":{"$ref":"#/components/schemas/slashfi.models.id.User.yaml","description":"The ID of the user who added this custom merchant","x-entrypoint":{"virtualPath":"id/User","sourcePath":"id/User.yaml","title":"User","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"merchantName":{"type":"string","description":"The name of the custom merchant"},"timestamp":{"type":"string","format":"date-time","description":"Metadata timestamp"}},"required":["id","legalEntityId","addedByUserId","merchantName","timestamp"],"x-entrypoint":{"virtualPath":"entity/CustomMerchant/CustomMerchant","sourcePath":"entity/CustomMerchant/CustomMerchant.yaml","title":"CustomMerchant","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"CustomMerchant"},"slashfi.models.entity.Document.IDocumentModel.yaml":{"type":"object","properties":{"$entity":{"type":"string","enum":["document"]},"id":{"type":"string"},"accountType":{"type":"string","enum":["legalEntity","slashAccount","slashAccountGroup","loan","card","dispute","productApplication","ach","wire","adminNote","businessIdentity","subaccount","atomicInvestSleeve","atomicInvestAccount","accountingEntry","slashWalletAccount","slashWallet","affiliatePayoutProfile","user","resendEmail","notification","expenseReport","globalUsdAch","globalUsdWire","globalUsdSwift","globalUsdCrypto","featureAnnouncement"]},"accountId":{"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"},"filename":{"type":"string"},"status":{"$ref":"#/components/schemas/slashfi.models.entity.Document.DocumentStatus.yaml","x-entrypoint":{"virtualPath":"entity/Document/DocumentStatus","sourcePath":"entity/Document/DocumentStatus.yaml","title":"DocumentStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"error":{"type":"string"},"checksum":{"type":"string"},"accessLevel":{"type":"string"},"documentType":{"$ref":"#/components/schemas/slashfi.models.enums.Document.DocumentType.yaml","x-entrypoint":{"virtualPath":"enums/Document/DocumentType","sourcePath":"enums/Document/DocumentType.yaml","title":"DocumentType","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"tags":{"type":"array","items":{"type":"string"}},"category":{"type":"string","enum":["document","statement"]},"documentSource":{"$ref":"#/components/schemas/slashfi.models.enums.Document.DocumentSource.yaml","x-entrypoint":{"virtualPath":"enums/Document/DocumentSource","sourcePath":"enums/Document/DocumentSource.yaml","title":"DocumentSource","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"fileMetadata":{"type":"object","properties":{"size":{"type":"number"},"type":{"type":"string"}}},"timestamp":{"type":"string"}},"required":["$entity","id","accountType","accountId","startDate","endDate","status","category","documentType","accessLevel","timestamp"],"x-entrypoint":{"virtualPath":"entity/Document/IDocumentModel","sourcePath":"entity/Document/IDocumentModel.yaml","title":"IDocumentModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"IDocumentModel"},"slashfi.models.entity.Document.DocumentStatus.yaml":{"type":"string","enum":["uploaded","uploading","not_generated","generating","generated","error","deleted"],"x-entrypoint":{"virtualPath":"entity/Document/DocumentStatus","sourcePath":"entity/Document/DocumentStatus.yaml","title":"DocumentStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"DocumentStatus"},"slashfi.models.enums.Document.DocumentType.yaml":{"type":"string","enum":["business_entity","user_identity","admin","affiliate_tax_document","transaction_monitoring_incident","document_translation","slash_statement","wire_ach","wire_ach_instruction","wire_ach_receipt","international_wire_receipt","sepa_instruction","fps_instruction","spei_instruction","bre_b_instruction","pay_by_slash_avatar","transaction_receipt","acquiring_dispute_policy","acquiring_dispute_evidence","bank_letter","transactions_export","dispute_form","accounting_receipt","reimbursement_receipt","bill_invoice","carrier_payment_confirmation","approval_policy_document","legal_entity_contact_tax_document","atomic_invest_document","custom_question","personal_bank_or_brokerage_statement","balance_sheet","cash_flow_statement","ar_ap_aging","tax_return","debt_schedule","other_supporting_document","beneficial_ownership_certificate","invoice","invoice_logo","brand_logo","column_customer_file","feature_announcement_image","proof_of_tax_residence","sms_attachment","venezuela_mercantile_registry","venezuela_rif_certificate","compliance_review","rfi_response","articles_of_incorporation","certificate_of_incorporation","bank_statement","certificate_of_good_standing","commercial_contract","domain_ownership_proof","ein_letter_proof","ein_pending_proof","entity_formation","financial_statements","invoice","licensing_information","operating_agreement","profit_loss_statement","receipt","ubo_involvement_proof","utility_bill","check_deposit_front","check_deposit_back","dba_proof","business_plan","pitch_deck","prospectus","marketing_materials","government_id_front","government_id_back","selfie","address_proof","admin_note"],"x-entrypoint":{"virtualPath":"enums/Document/DocumentType","sourcePath":"enums/Document/DocumentType.yaml","title":"DocumentType","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"DocumentType"},"slashfi.models.enums.Document.DocumentSource.yaml":{"type":"string","enum":["uploaded","generated"],"x-entrypoint":{"virtualPath":"enums/Document/DocumentSource","sourcePath":"enums/Document/DocumentSource.yaml","title":"DocumentSource","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"DocumentSource"},"slashfi.models.entity.ExpenseReport.PublicTransactionSummary.yaml":{"type":"object","description":"A minimal transaction summary for public API responses","properties":{"id":{"type":"string"},"date":{"type":"string"},"amount":{"$ref":"#/components/schemas/slashfi.models.entity.IMoneyModel.yaml","x-entrypoint":{"virtualPath":"entity/IMoneyModel","sourcePath":"entity/IMoneyModel.yaml","title":"IMoneyModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"status":{"type":"string","enum":["pending","pending_approval","pending_destination","settled","failed","refund","declined","dispute","canceled","returned","reversed","scheduled","in_review"]}},"required":["id","date","amount","status"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicTransactionSummary","sourcePath":"entity/ExpenseReport/PublicTransactionSummary.yaml","title":"PublicTransactionSummary","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PublicTransactionSummary"},"slashfi.models.entity.IMoneyModel.yaml":{"title":"IMoneyModel","type":"object","properties":{"amount_cents":{"type":"number"},"currency":{"type":"string","enum":["USD","EUR"]}},"required":["amount_cents","currency"],"x-entrypoint":{"virtualPath":"entity/IMoneyModel","sourcePath":"entity/IMoneyModel.yaml","title":"IMoneyModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"slashfi.models.entity.ExpenseReport.PublicReimbursementSource.yaml":{"type":"object","description":"A minimal bank account summary for public API responses","properties":{"id":{"type":"string"},"accountName":{"type":"string"},"mask":{"type":"string"},"institution":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"institutionLogo":{"type":"string","description":"Base64 encoded institution logo"}},"required":["id","accountName","institution"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicReimbursementSource","sourcePath":"entity/ExpenseReport/PublicReimbursementSource.yaml","title":"PublicReimbursementSource","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PublicReimbursementSource"},"slashfi.models.entity.ExpenseReport.PublicUserSummary.yaml":{"type":"object","description":"A minimal user identity for public API responses (id and name only)","properties":{"id":{"type":"string"},"name":{"type":"object","required":["first","last","full"],"properties":{"first":{"type":"string"},"last":{"type":"string"},"full":{"type":"string"}}}},"required":["id","name"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicUserSummary","sourcePath":"entity/ExpenseReport/PublicUserSummary.yaml","title":"PublicUserSummary","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PublicUserSummary"},"slashfi.models.entity.ExpenseReport.ExpenseReportReview.yaml":{"type":"object","description":"Review decision for an expense report","properties":{"id":{"$ref":"#/components/schemas/slashfi.models.id.ExpenseReport.ExpenseReportReviewId.yaml","description":"The unique ID of the expense report review","x-entrypoint":{"virtualPath":"id/ExpenseReport/ExpenseReportReviewId","sourcePath":"id/ExpenseReport/ExpenseReportReviewId.yaml","title":"ExpenseReportReviewId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"expenseReportId":{"$ref":"#/components/schemas/slashfi.models.id.ExpenseReport.ExpenseReportId.yaml","description":"The ID of the expense report being reviewed","x-entrypoint":{"virtualPath":"id/ExpenseReport/ExpenseReportId","sourcePath":"id/ExpenseReport/ExpenseReportId.yaml","title":"ExpenseReportId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"decision":{"type":"string","enum":["approved","rejected"],"description":"The admin's decision on the expense report"},"reviewedByUserId":{"$ref":"#/components/schemas/slashfi.models.id.User.yaml","description":"The ID of the user who reviewed the expense report","x-entrypoint":{"virtualPath":"id/User","sourcePath":"id/User.yaml","title":"User","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"reviewedAt":{"type":"string","format":"date-time","description":"When the review was made"},"rejectionReason":{"type":"string","nullable":true,"description":"Reason for rejection (only set when decision is 'rejected')"},"timestamp":{"type":"string","format":"date-time","description":"Metadata timestamp"}},"required":["id","expenseReportId","decision","reviewedByUserId","reviewedAt","timestamp"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ExpenseReportReview","sourcePath":"entity/ExpenseReport/ExpenseReportReview.yaml","title":"ExpenseReportReview","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ExpenseReportReview"},"slashfi.models.id.ExpenseReport.ExpenseReportReviewId.yaml":{"type":"string","pattern":"^expense_report_review_[a-z0-9]*","x-typescript":{"typeLiteral":"expense_report_review_${string}"},"description":"Represents an ExpenseReportReview ID in the format of \"expense_report_review_102jifoij01\"","x-entrypoint":{"virtualPath":"id/ExpenseReport/ExpenseReportReviewId","sourcePath":"id/ExpenseReport/ExpenseReportReviewId.yaml","title":"ExpenseReportReviewId","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ExpenseReportReviewId"},"slashfi.models.entity.ExpenseReport.ParsedReceipt.yaml":{"type":"object","description":"AI-extracted data from a receipt image or PDF","properties":{"amount":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ParsedReceiptAmount.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptAmount","sourcePath":"entity/ExpenseReport/ParsedReceiptAmount.yaml","title":"ParsedReceiptAmount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"date":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ParsedReceiptDate.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptDate","sourcePath":"entity/ExpenseReport/ParsedReceiptDate.yaml","title":"ParsedReceiptDate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"merchant":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ParsedReceiptMerchant.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptMerchant","sourcePath":"entity/ExpenseReport/ParsedReceiptMerchant.yaml","title":"ParsedReceiptMerchant","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["amount","date","merchant"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceipt","sourcePath":"entity/ExpenseReport/ParsedReceipt.yaml","title":"ParsedReceipt","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ParsedReceipt"},"slashfi.models.entity.ExpenseReport.ParsedReceiptAmount.yaml":{"type":"object","description":"Extracted amount information from a receipt","properties":{"valueCents":{"type":"integer","nullable":true,"description":"Total amount in cents (e.g., 1846 for $18.46)"},"currency":{"type":"string","nullable":true,"description":"ISO 4217 currency code (defaults to USD)"},"confidence":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ParsedReceiptConfidence.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptConfidence","sourcePath":"entity/ExpenseReport/ParsedReceiptConfidence.yaml","title":"ParsedReceiptConfidence","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"rawText":{"type":"string","nullable":true,"description":"Raw text extracted from receipt for this field"}},"required":["confidence"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptAmount","sourcePath":"entity/ExpenseReport/ParsedReceiptAmount.yaml","title":"ParsedReceiptAmount","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ParsedReceiptAmount"},"slashfi.models.entity.ExpenseReport.ParsedReceiptConfidence.yaml":{"type":"string","enum":["high","medium","low","none"],"description":"Confidence level for an extracted field:\n- high: Clearly visible and unambiguous\n- medium: Readable but may have minor issues (blur, partial visibility)\n- low: Partially visible, ambiguous, or assumptions were made\n- none: Not found or completely unreadable\n","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptConfidence","sourcePath":"entity/ExpenseReport/ParsedReceiptConfidence.yaml","title":"ParsedReceiptConfidence","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ParsedReceiptConfidence"},"slashfi.models.entity.ExpenseReport.ParsedReceiptDate.yaml":{"type":"object","description":"Extracted date information from a receipt","properties":{"value":{"type":"string","format":"date","nullable":true,"description":"Transaction date in YYYY-MM-DD format"},"confidence":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ParsedReceiptConfidence.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptConfidence","sourcePath":"entity/ExpenseReport/ParsedReceiptConfidence.yaml","title":"ParsedReceiptConfidence","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"rawText":{"type":"string","nullable":true,"description":"Raw text extracted from receipt for this field"}},"required":["confidence"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptDate","sourcePath":"entity/ExpenseReport/ParsedReceiptDate.yaml","title":"ParsedReceiptDate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ParsedReceiptDate"},"slashfi.models.entity.ExpenseReport.ParsedReceiptMerchant.yaml":{"type":"object","description":"Extracted merchant information from a receipt","properties":{"name":{"type":"string","nullable":true,"description":"Merchant name as extracted from receipt"},"merchantV2Id":{"$ref":"#/components/schemas/slashfi.models.id.MerchantV2Id.yaml","nullable":true,"description":"ID of matched MerchantV2 entity (if found via similarity search)","x-entrypoint":{"virtualPath":"id/MerchantV2Id","sourcePath":"id/MerchantV2Id.yaml","title":"MerchantV2Id","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"merchantV2":{"$ref":"#/components/schemas/slashfi.models.entity.Merchant.MerchantV2.yaml","nullable":true,"description":"Full MerchantV2 entity (if found via similarity search) - used for frontend cache population","x-entrypoint":{"virtualPath":"entity/Merchant/MerchantV2","sourcePath":"entity/Merchant/MerchantV2.yaml","title":"MerchantV2","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"confidence":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ParsedReceiptConfidence.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptConfidence","sourcePath":"entity/ExpenseReport/ParsedReceiptConfidence.yaml","title":"ParsedReceiptConfidence","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"rawText":{"type":"string","nullable":true,"description":"Raw text extracted from receipt for this field"}},"required":["confidence"],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceiptMerchant","sourcePath":"entity/ExpenseReport/ParsedReceiptMerchant.yaml","title":"ParsedReceiptMerchant","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"ParsedReceiptMerchant"},"slashfi.models.entity.ExpenseReport.ReimbursementSource.yaml":{"title":"ReimbursementSource","description":"A user bank account enriched with institution logo for reimbursement flows","allOf":[{"$ref":"#/components/schemas/slashfi.models.entity.IUserBankAccountModel.yaml","x-entrypoint":{"virtualPath":"entity/IUserBankAccountModel","sourcePath":"entity/IUserBankAccountModel.yaml","title":"IUserBankAccountModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"type":"object","properties":{"institutionLogo":{"type":"string","description":"Base64 encoded institution logo (152x152 PNG). Not all institutions have logos available."}}}],"x-entrypoint":{"virtualPath":"entity/ExpenseReport/ReimbursementSource","sourcePath":"entity/ExpenseReport/ReimbursementSource.yaml","title":"ReimbursementSource","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"slashfi.models.entity.IUserBankAccountModel.yaml":{"title":"IUserBankAccountModel","type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string","description":"The owning user. Set only when associationType is 'user' (or absent on accounts that predate ownership scopes).\n"},"legalEntityId":{"type":"string","description":"The owning legal entity. Set only when associationType is 'legalEntity'."},"associationType":{"type":"string","enum":["user","legalEntity","slash"],"description":"Who owns the account. Absent on accounts that predate ownership scopes, which are personal.\n"},"latestStatus":{"$ref":"#/components/schemas/slashfi.models.enums.UserBankAccountStatus.yaml","x-entrypoint":{"virtualPath":"enums/UserBankAccountStatus","sourcePath":"enums/UserBankAccountStatus.yaml","title":"UserBankAccountStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"lastSyncedAt":{"type":"string"},"lastStatusChangeAt":{"type":"string"},"accountName":{"type":"string"},"officialAccountName":{"type":"string"},"accountOwnerName":{"type":"string"},"type":{"type":"string"},"subtype":{"type":"string"},"mask":{"type":"string"},"balance":{"type":"object","properties":{"amount":{"$ref":"#/components/schemas/slashfi.models.entity.IMoneyModel.yaml","x-entrypoint":{"virtualPath":"entity/IMoneyModel","sourcePath":"entity/IMoneyModel.yaml","title":"IMoneyModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"lastBalanceCheckDate":{"type":"string"}},"required":["amount","lastBalanceCheckDate"]},"latestBalanceCheck":{"type":"object","properties":{"availableAmount":{"$ref":"#/components/schemas/slashfi.models.entity.IMoneyModel.yaml","x-entrypoint":{"virtualPath":"entity/IMoneyModel","sourcePath":"entity/IMoneyModel.yaml","title":"IMoneyModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"currentAmount":{"$ref":"#/components/schemas/slashfi.models.entity.IMoneyModel.yaml","x-entrypoint":{"virtualPath":"entity/IMoneyModel","sourcePath":"entity/IMoneyModel.yaml","title":"IMoneyModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"limitAmount":{"$ref":"#/components/schemas/slashfi.models.entity.IMoneyModel.yaml","x-entrypoint":{"virtualPath":"entity/IMoneyModel","sourcePath":"entity/IMoneyModel.yaml","title":"IMoneyModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"required":["currentAmount"]},"institution":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"metadata":{"$ref":"#/components/schemas/slashfi.models.entity.IMetadataModel.yaml","x-entrypoint":{"virtualPath":"entity/IMetadataModel","sourcePath":"entity/IMetadataModel.yaml","title":"IMetadataModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"error":{"type":"object","properties":{"errorCode":{"type":"string"},"errorType":{"type":"string"},"actionMessage":{"type":"string"},"userActionCta":{"type":"string"}},"required":["errorCode","errorType","actionMessage"]}},"required":["id","latestStatus","accountName","type","subtype","institution","metadata"],"x-entrypoint":{"virtualPath":"entity/IUserBankAccountModel","sourcePath":"entity/IUserBankAccountModel.yaml","title":"IUserBankAccountModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"slashfi.models.enums.UserBankAccountStatus.yaml":{"description":"A bank account's status: its Plaid Item's status, or `pending_verification` for a manual account awaiting micro-deposit verification.\n","oneOf":[{"$ref":"#/components/schemas/slashfi.models.enums.PlaidItemStatus.yaml","x-entrypoint":{"virtualPath":"enums/PlaidItemStatus","sourcePath":"enums/PlaidItemStatus.yaml","title":"PlaidItemStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"type":"string","enum":["pending_verification"]}],"x-entrypoint":{"virtualPath":"enums/UserBankAccountStatus","sourcePath":"enums/UserBankAccountStatus.yaml","title":"UserBankAccountStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"UserBankAccountStatus"},"slashfi.models.enums.PlaidItemStatus.yaml":{"description":"A Plaid Item's (bank login's) health. `inactive` means the Item was removed (`/item/remove`). A Plaid bank account takes its Item's status.\n","type":"string","enum":["active","login_required","inactive","unknown_error"],"x-entrypoint":{"virtualPath":"enums/PlaidItemStatus","sourcePath":"enums/PlaidItemStatus.yaml","title":"PlaidItemStatus","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PlaidItemStatus"},"Contact":{"type":"object","description":"A contact represents a counterparty (customer, vendor, etc.) associated with a legal entity.","properties":{"id":{"type":"string","description":"Unique identifier for the contact."},"name":{"type":"string","description":"Display name of the contact."},"recipientType":{"type":"string","description":"The relationship type of the contact.","enum":["contact","vendor"]},"recipientLegalName":{"type":"string","description":"Legal name of the recipient."},"recipientEmail":{"type":"string","description":"Email address of the recipient."},"address":{"type":"object","description":"Address of the contact.","additionalProperties":true},"data":{"type":"object","description":"Payment destination data (bank account, crypto address, etc.).","additionalProperties":true},"archivedAt":{"type":"string","format":"date-time","description":"When the contact was archived. Null/absent when active."}},"required":["id","name"],"x-entrypoint":{"virtualPath":"schemas/Contact","sourcePath":"schemas/Contact.yaml","title":"Contact","origin":"./src/publicApi"},"title":"Contact"},"Customer":{"type":"object","description":"A customer represents a billing recipient associated with a legal entity.","properties":{"id":{"type":"string","description":"Unique identifier for the customer."},"name":{"type":"string","description":"Display name of the customer."},"email":{"type":"string","description":"Email address of the customer."},"phone":{"type":"string","description":"Phone number of the customer."},"address":{"type":"object","description":"Address of the customer.","additionalProperties":true},"customMetadata":{"type":"object","description":"Custom metadata associated with the customer.","additionalProperties":true},"status":{"type":"string","description":"Status of the customer.","enum":["active","archived"]}},"required":["id","name","email","status"],"x-entrypoint":{"virtualPath":"schemas/Customer","sourcePath":"schemas/Customer.yaml","title":"Customer","origin":"./src/publicApi"},"title":"Customer"},"PaymentIntent":{"type":"object","description":"The payment intent object. Its `status` tracks the payment from creation through settlement.","properties":{"id":{"type":"string","description":"Unique identifier for the payment intent."},"status":{"type":"string","description":"Status of the payment intent. `pending` intents have not been paid yet; `processing` intents have a payment in flight awaiting settlement; `succeeded` intents have a confirmed settled payment; `canceled` intents were canceled and can no longer be paid.","enum":["pending","processing","succeeded","canceled"]},"amount":{"type":"integer","description":"Payment amount in the smallest unit of `currency`."},"currency":{"type":"string","description":"ISO currency code for the payment. Supported currencies are `usd` and `eur`.","enum":["usd","eur"]},"metadata":{"type":"object","description":"Merchant-defined metadata stored on the payment intent and echoed in payment intent responses and the payment-intent success webhook.","additionalProperties":true},"clientSecret":{"type":"string","description":"Sensitive PaymentIntent-scoped browser capability. Do not log or store it in browser persistence."},"allowedPaymentMethods":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.enums.Acquiring.PaymentMethod.yaml","x-entrypoint":{"virtualPath":"enums/Acquiring/PaymentMethod","sourcePath":"enums/Acquiring/PaymentMethod.yaml","title":"PaymentMethod","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.enums.Acquiring.PaymentMethod","typeValue":"models.enums.Acquiring.PaymentMethod"}}},"description":"Payment methods the merchant allows, exactly as set on create or update. Omitted when all supported methods are allowed."},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp the payment intent was created at."},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp the payment intent last changed status."}},"required":["id","status","amount","currency","createdAt","updatedAt"],"x-entrypoint":{"virtualPath":"schemas/PaymentIntent","sourcePath":"schemas/PaymentIntent.yaml","title":"PaymentIntent","origin":"./src/publicApi"},"title":"PaymentIntent"},"slashfi.models.enums.Acquiring.PaymentMethod.yaml":{"type":"string","description":"Payment method available for an acquiring PaymentIntent checkout.","enum":["card","apple_pay","google_pay"],"x-entrypoint":{"virtualPath":"enums/Acquiring/PaymentMethod","sourcePath":"enums/Acquiring/PaymentMethod.yaml","title":"PaymentMethod","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true},"title":"PaymentMethod"},"paths.payments.payment-intent._dto.PostResponse":{"allOf":[{"$ref":"#/components/schemas/PaymentIntent","x-entrypoint":{"virtualPath":"schemas/PaymentIntent","sourcePath":"schemas/PaymentIntent.yaml","title":"PaymentIntent","origin":"./src/publicApi"}}],"x-entrypoint":{"virtualPath":"paths/payments/payment-intent/_dto/PostResponse","sourcePath":"paths/payments/payment-intent/_dto/PostResponse.yaml","title":"PostResponse","origin":"./src/publicApi"},"title":"PostResponse"},"Refund":{"type":"object","description":"The refund object. Its `status` tracks the refund from creation through completion.","properties":{"id":{"type":"string","description":"Unique identifier for the refund."},"status":{"type":"string","description":"Current refund processing status.","enum":["pending","processing","succeeded","failed"]},"amount":{"type":"integer","description":"Refund amount in the smallest unit of `currency`. Refunds are always in the currency of the payment intent being refunded."},"currency":{"type":"string","description":"ISO currency code for the refund. Supported currencies are `usd` and `eur`.","enum":["usd","eur"]},"paymentIntentId":{"type":"string","description":"The payment intent being refunded."},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp the refund was created at."},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp the refund last changed status."}},"required":["id","status","amount","currency","paymentIntentId","createdAt","updatedAt"],"x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"},"title":"Refund"},"CheckoutSession":{"type":"object","description":"A checkout session represents a single hosted payment attempt. Embed the session's `url` in your page (via the Slash checkout SDK or an iframe) to collect a card payment.","properties":{"id":{"type":"string","description":"Unique identifier for the checkout session."},"url":{"type":"string","description":"Hosted checkout URL to embed. Treat it as single-use and mint one session per buyer checkout."},"status":{"type":"string","description":"Status of the checkout session. `open` sessions are payable; `complete` sessions have a confirmed settled payment; `expired` sessions can no longer be paid.","enum":["open","complete","expired"]},"paymentIntentId":{"type":"string","description":"The payment intent created for this checkout session. Use this ID with `GET /payment-intent/{paymentIntentId}` or `POST /refund`."},"amount":{"type":"integer","description":"Payment amount in cents."},"currency":{"type":"string","description":"ISO currency code for the payment. Supported currencies are `usd` and `eur`.","enum":["usd","eur"]},"customMetadata":{"type":"object","description":"Custom metadata associated with the checkout session. Echoed on webhook events for this session.","additionalProperties":true},"config":{"type":"object","description":"Configuration for the hosted checkout page, editable while the session is open.","properties":{"prefillEmail":{"type":"string","description":"Email address the hosted checkout is prefilled with, if provided at creation."},"prefillName":{"type":"string","description":"Buyer name the hosted checkout is prefilled with, if provided at creation."},"hideEmail":{"type":"boolean","description":"Hides the email field in the hosted checkout entirely."},"disableEmail":{"type":"boolean","description":"Renders the email field read-only. Pairs with prefillEmail to show a fixed address the buyer cannot edit."},"prefillAddress":{"type":"object","description":"Billing address the hosted checkout is prefilled with, if provided at creation.","properties":{"name":{"type":"string","description":"Name on the billing address."},"country":{"type":"string","description":"Country for the billing address."},"line1":{"type":"string","description":"First billing address line."},"line2":{"type":"string","description":"Second billing address line."},"city":{"type":"string","description":"City for the billing address."},"state":{"type":"string","description":"State or region for the billing address."},"postalCode":{"type":"string","description":"Postal code for the billing address."}}},"paymentMethods":{"type":"object","description":"Wallet payment methods enabled for the hosted checkout. Card is always enabled.","properties":{"applePay":{"type":"boolean","description":"Whether Apple Pay is enabled."},"googlePay":{"type":"boolean","description":"Whether Google Pay is enabled."}}}}},"expiresAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp after which the session can no longer be paid."},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp the session was created at."}},"required":["id","url","status","paymentIntentId","amount","currency","expiresAt","createdAt"],"x-entrypoint":{"virtualPath":"schemas/CheckoutSession","sourcePath":"schemas/CheckoutSession.yaml","title":"CheckoutSession","origin":"./src/publicApi"},"title":"CheckoutSession"},"paths.analytics._dto.PostResponse":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string"},"description":"Ordered list of column names in the result set."},"rows":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Array of row objects keyed by column name."},"rowCount":{"type":"integer","description":"Total number of rows returned."},"error":{"type":"string","description":"SQL error message when the query fails."}},"required":["columns","rows","rowCount"],"x-entrypoint":{"virtualPath":"paths/analytics/_dto/PostResponse","sourcePath":"paths/analytics/_dto/PostResponse.yaml","title":"PostResponse","origin":"./src/publicApi"},"title":"PostResponse"},"paths.analytics._dto.PostRequest":{"type":"object","properties":{"query":{"type":"string","description":"SQL query to execute"}},"required":["query"],"x-entrypoint":{"virtualPath":"paths/analytics/_dto/PostRequest","sourcePath":"paths/analytics/_dto/PostRequest.yaml","title":"PostRequest","origin":"./src/publicApi"},"title":"PostRequest"},"Crypto.Wallet":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["off_ramp"]},"status":{"type":"string","enum":["pending_active","active","deactivated"]},"subaccountId":{"type":"string"},"slashAccountGroupId":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}},"required":["id","type","status","subaccountId","slashAccountGroupId","timestamp"],"x-entrypoint":{"virtualPath":"schemas/Crypto/Wallet","sourcePath":"schemas/Crypto/Wallet.yaml","title":"Wallet","origin":"./src/publicApi"},"title":"Wallet"},"Crypto.Address":{"type":"object","properties":{"id":{"type":"string"},"walletId":{"type":"string"},"status":{"type":"string","enum":["pending_active","active","deactivated"]},"currency":{"type":"string","enum":["usdc","usdt"]},"chain":{"type":"string","enum":["ethereum","avalanche","base","ethereum","optimism","polygon","arbitrum","solana","stellar","base","tron"]},"address":{"type":"string"},"method":{"type":"string","enum":["wire","ach"]},"blockchainMemo":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}},"required":["id","walletId","currency","chain","address","timestamp","status"],"x-entrypoint":{"virtualPath":"schemas/Crypto/Address","sourcePath":"schemas/Crypto/Address.yaml","title":"Address","origin":"./src/publicApi"},"title":"Address"},"paths.task._dto.TaskResponse":{"$ref":"#/components/schemas/slashfi.models.entity.Task.ITaskWithActionsModel.yaml","x-entrypoint":{"virtualPath":"entity/Task/ITaskWithActionsModel","sourcePath":"entity/Task/ITaskWithActionsModel.yaml","title":"ITaskWithActionsModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Task.ITaskWithActionsModel","typeValue":"models.entity.Task.ITaskWithActionsModel"}}},"slashfi.models.entity.Task.ITaskWithActionsModel.yaml":{"title":"ITaskWithActionsModel","description":"`ITaskModel` enriched with the caller's per-task action list. Returned by surfaces that do caller-specific authorization (today the internal app's GET /task, which resolves allowed actions from the current user's role on the task). Not emitted by the public API — external consumers receive the bare `ITaskModel` shape.\n","allOf":[{"$ref":"#/components/schemas/slashfi.models.entity.Task.ITaskModel.yaml","x-entrypoint":{"virtualPath":"entity/Task/ITaskModel","sourcePath":"entity/Task/ITaskModel.yaml","title":"ITaskModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},{"type":"object","properties":{"actions":{"type":"array","description":"Actions the current caller can perform on this task.","items":{"$ref":"#/components/schemas/slashfi.models.entity.Task.ITaskActionModel.yaml","x-entrypoint":{"virtualPath":"entity/Task/ITaskActionModel","sourcePath":"entity/Task/ITaskActionModel.yaml","title":"ITaskActionModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}}},"required":["actions"]}],"x-entrypoint":{"virtualPath":"entity/Task/ITaskWithActionsModel","sourcePath":"entity/Task/ITaskWithActionsModel.yaml","title":"ITaskWithActionsModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"slashfi.models.entity.Task.ITaskModel.yaml":{"title":"ITaskModel","type":"object","description":"Public shape of a task row on the wire. Serialized identically by every task-returning endpoint (list, single-task GET, etc.) so the same consumer type works across surfaces.\nConsumers that resolve per-caller action capability (today: the internal app's GET /task) extend this with the `actions` list via `ITaskWithActionsModel`. The public API only returns the base shape — it doesn't expose caller-specific state.\n","properties":{"id":{"type":"string","description":"Unique task ID."},"type":{"type":"string","description":"Task type key (e.g. `payment_approval`, `expense_submission`). The `data` and `meta` shapes vary by type — use GET /task/schema to discover the attribute shape per type.\n"},"status":{"type":"string","description":"Normalized task status.","enum":["action_required","pending","completed","rejected","expired","canceled"]},"data":{"type":"object","description":"Primitive attribute values for the task. Keys and value types vary by `type`; hidden/internal attributes are stripped before the response leaves the server.\n","additionalProperties":true},"meta":{"type":"object","description":"Per-instance attribute branding, keyed by attribute name. Today the only branding key is `isRequired`, which signals whether the attribute must be satisfied for the task to complete. Absent attribute keys mean the schema default applies.\n","additionalProperties":{"$ref":"#/components/schemas/slashfi.models.entity.Task.ITaskAttributeMetaModel.yaml","x-entrypoint":{"virtualPath":"entity/Task/ITaskAttributeMetaModel","sourcePath":"entity/Task/ITaskAttributeMetaModel.yaml","title":"ITaskAttributeMetaModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"timestamp":{"type":"string","format":"date-time","description":"ISO-8601 timestamp of when the task was created."},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp of the latest meaningful task status/data update."}},"required":["id","type","status","data","meta","timestamp","updatedAt"],"x-entrypoint":{"virtualPath":"entity/Task/ITaskModel","sourcePath":"entity/Task/ITaskModel.yaml","title":"ITaskModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"slashfi.models.entity.Task.ITaskAttributeMetaModel.yaml":{"title":"ITaskAttributeMetaModel","type":"object","properties":{"isRequired":{"type":"boolean","description":"True when this attribute must be set for this task instance."}},"x-entrypoint":{"virtualPath":"entity/Task/ITaskAttributeMetaModel","sourcePath":"entity/Task/ITaskAttributeMetaModel.yaml","title":"ITaskAttributeMetaModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}},"slashfi.models.entity.Task.ITaskActionModel.yaml":{"title":"ITaskActionModel","type":"object","description":"An action the current caller can perform on a task, resolved per task + caller by the internal app's GET /task endpoint.\n","properties":{"key":{"type":"string","description":"Stable action identifier used when dispatching via POST /task/{id}/act."},"label":{"type":"string","description":"Human-readable button label."},"style":{"type":"string","enum":["primary","danger"],"description":"UI button style hint."},"role":{"type":"string","enum":["actor","originator","observer"],"description":"Stakeholder role the action was resolved through."},"isDisabled":{"type":"boolean","description":"Whether the action can currently be executed. `true` means the task is in a state that blocks the action — e.g. a completion action whose task still has unsatisfied `meta.isRequired` attributes. Clients should render the button disabled (with `missingAttributes` explaining why) and avoid dispatching it; the act endpoint will also reject with a 400 if called.\n"},"missingAttributes":{"type":"array","description":"When `isDisabled` is `true` because required attributes aren't populated, the attribute keys that still need values. Empty when the action isn't gated or when all requirements are met.\n","items":{"type":"string"}}},"required":["key","label","isDisabled","missingAttributes"],"x-entrypoint":{"virtualPath":"entity/Task/ITaskActionModel","sourcePath":"entity/Task/ITaskActionModel.yaml","title":"ITaskActionModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true}}},"securitySchemes":{"api_key":{"type":"apiKey","description":"API key authentication for public API requests.\n\nKeys come in two flavors:\n\n- *Legal-entity-scoped keys* are pinned to a single legal entity.\n  Minted via the dashboard under a specific entity; every request\n  acts on that entity.\n- *User-scoped keys* are pinned to a user and span every legal\n  entity that user has access to. Every request made with a\n  user-scoped key (except `GET /legal-entity`, which lists the\n  legal entities the user can access) must include an\n  `x-legal-entity` header naming the legal entity the request is\n  operating on. Requests without the header are rejected with\n  `400`. The authenticated user must have an active permission\n  role on the supplied legal entity, otherwise the request is\n  rejected with `403`.\n","name":"X-API-Key","in":"header"},"partner_api_key":{"type":"apiKey","description":"Partner-program API key authentication.\n\nKeys are minted in the partner dashboard (Developers → API Keys),\nare scoped to a single partner program, and are prefixed with\n`sk_partner_`. Partner keys are only accepted by routes that\ndeclare this scheme; they are rejected by `api_key` routes and\nvice versa.\n","name":"X-API-Key","in":"header"},"bearer":{"type":"http","scheme":"bearer"},"developer_application":{"type":"http","scheme":"basic"}}},"security":[{"api_key":[]},{"partner_api_key":[]},{"bearer":[]},{"developer_application":[]}],"webhooks":{"payments.payment_intent.created":{"post":{"summary":"Payment Intent Created","description":"Sent when a payment intent is created via `POST /payments/payment-intent`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"event":{"type":"string","enum":["payments.payment_intent.created"],"description":"The event type."},"eventId":{"type":"string","description":"Unique id of the event. Use it as an idempotency key."},"entityId":{"type":"string","description":"The id of the payment intent that triggered the event."},"eventTimestamp":{"type":"string","format":"date-time","description":"When the event occurred."}},"required":["event","eventId","entityId","eventTimestamp"]}}}},"responses":{"200":{"description":"Return any `2xx` status to acknowledge receipt. Non-`2xx` responses are retried."}}}},"payments.payment_intent.updated":{"post":{"summary":"Payment Intent Updated","description":"Sent whenever a payment intent changes `status`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"event":{"type":"string","enum":["payments.payment_intent.updated"],"description":"The event type."},"eventId":{"type":"string","description":"Unique id of the event. Use it as an idempotency key."},"entityId":{"type":"string","description":"The id of the payment intent that triggered the event."},"eventTimestamp":{"type":"string","format":"date-time","description":"When the event occurred."}},"required":["event","eventId","entityId","eventTimestamp"]}}}},"responses":{"200":{"description":"Return any `2xx` status to acknowledge receipt. Non-`2xx` responses are retried."}}}},"payments.refund.created":{"post":{"summary":"Refund Created","description":"Sent when a refund is created via `POST /payments/refund`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"event":{"type":"string","enum":["payments.refund.created"],"description":"The event type."},"eventId":{"type":"string","description":"Unique id of the event. Use it as an idempotency key."},"entityId":{"type":"string","description":"The id of the refund that triggered the event."},"eventTimestamp":{"type":"string","format":"date-time","description":"When the event occurred."}},"required":["event","eventId","entityId","eventTimestamp"]}}}},"responses":{"200":{"description":"Return any `2xx` status to acknowledge receipt. Non-`2xx` responses are retried."}}}},"payments.refund.updated":{"post":{"summary":"Refund Updated","description":"Sent whenever a refund changes `status`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"event":{"type":"string","enum":["payments.refund.updated"],"description":"The event type."},"eventId":{"type":"string","description":"Unique id of the event. Use it as an idempotency key."},"entityId":{"type":"string","description":"The id of the refund that triggered the event."},"eventTimestamp":{"type":"string","format":"date-time","description":"When the event occurred."}},"required":["event","eventId","entityId","eventTimestamp"]}}}},"responses":{"200":{"description":"Return any `2xx` status to acknowledge receipt. Non-`2xx` responses are retried."}}}}},"paths":{"/agent-request":{"get":{"description":"List all agent requests created by this API key.\n\nAgent requests are created when a read-only API key makes a write request (POST, PUT, PATCH, DELETE) to the Public API. This endpoint returns all such requests, paginated.\n","summary":"List agent requests","tags":["Agent Requests"],"parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:status","in":"query","description":"Filter by request status","required":false,"schema":{"type":"string","enum":["pending","approved","rejected","expired","executed","failed","running"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AgentRequest","x-entrypoint":{"virtualPath":"schemas/AgentRequest","sourcePath":"schemas/AgentRequest.yaml","title":"AgentRequest","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]}]},"x-reference-path":"paths/agent-request/route.yaml"},"/agent-request/{agentRequestId}":{"parameters":[{"name":"agentRequestId","in":"path","schema":{"type":"string"},"required":true,"description":"The unique identifier of the agent request (returned in x-deferred-action-id header)"}],"get":{"description":"Get the status and details of an agent request by ID.\n\nAgent requests are created when a read-only API key makes a write request (POST, PUT, PATCH, DELETE) to the Public API. Instead of executing immediately, these requests are deferred and require approval from an authorized user.\n\nUse this endpoint to check the status of a pending request or retrieve the result after execution.\n","summary":"Get agent request","tags":["Agent Requests"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRequest","x-entrypoint":{"virtualPath":"schemas/AgentRequest","sourcePath":"schemas/AgentRequest.yaml","title":"AgentRequest","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]}]},"x-reference-path":"paths/agent-request/{agentRequestId}/route.yaml"},"/legal-entity":{"get":{"description":"List all legal entities you have access to","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/LegalEntity","x-entrypoint":{"virtualPath":"schemas/LegalEntity","sourcePath":"schemas/LegalEntity.yaml","title":"LegalEntity","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items","metadata"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/legal-entity/route.yaml"},"/account":{"get":{"parameters":[{"name":"filter:legalEntityId","in":"query","description":"Pass in a legal entity ID to filter for accounts under a specific legal entity.","required":false,"schema":{"type":"string"}}],"description":"List all accounts you have access to","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Account","x-entrypoint":{"virtualPath":"schemas/Account","sourcePath":"schemas/Account.yaml","title":"Account","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items","metadata"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/account/route.yaml"},"/account/{accountId}":{"parameters":[{"name":"accountId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Get a single account by Id","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account","x-entrypoint":{"virtualPath":"schemas/Account","sourcePath":"schemas/Account.yaml","title":"Account","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/account/{accountId}/route.yaml"},"/account/{accountId}/balance":{"parameters":[{"name":"accountId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Retrieve a list of balances for an account. \nThe balances are returned in an array, with each item representing a balance for that account.\n\nFor charge_card accounts, there will be two balances returned: \"cash\" and \"credit\".\nFor debit accounts, there will only be one balance returned: \"debit\".\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"balances":{"type":"array","items":{"$ref":"#/components/schemas/Balance","x-entrypoint":{"virtualPath":"schemas/Balance","sourcePath":"schemas/Balance.yaml","title":"Balance","origin":"./src/publicApi"}}}},"required":["balances"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/account/{accountId}/balance/route.yaml"},"/account/{accountId}/authorization-webhook":{"parameters":[{"name":"accountId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Retrieve the authorization webhook configuration for an account.\nThis webhook is called during card authorization requests to allow external systems\nto approve or reject transactions in real-time.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationWebhook","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhook","sourcePath":"schemas/AuthorizationWebhook.yaml","title":"AuthorizationWebhook","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"put":{"description":"Create or update the authorization webhook configuration for an account. This will upsert the webhook configuration, creating it if it doesn't exist or updating it if it does. \n\nThe secret for a webhook remains static after it is initially created. If you would like to retrieve the secret before sending requests,\ncreate the authorization webhook in status 'inactive' first and then update it to 'active' after.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"webhookUrl":{"type":"string","description":"The URL where authorization webhook events will be sent"},"status":{"type":"string","enum":["active","inactive"],"description":"Current status of the webhook"},"config":{"$ref":"#/components/schemas/AuthorizationWebhookConfig","description":"Configuration specific to the authorization webhook","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhookConfig","sourcePath":"schemas/AuthorizationWebhookConfig.yaml","title":"AuthorizationWebhookConfig","origin":"./src/publicApi"}}},"required":["webhookUrl","status","config"]}}}},"responses":{"200":{"description":"Authorization webhook created or updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationWebhook","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhook","sourcePath":"schemas/AuthorizationWebhook.yaml","title":"AuthorizationWebhook","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Partially update the authorization webhook configuration for an account.\nOnly the provided fields will be updated.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"webhookUrl":{"type":"string","description":"The URL where authorization webhook events will be sent"},"status":{"type":"string","enum":["active","inactive"],"description":"Current status of the webhook"},"config":{"$ref":"#/components/schemas/AuthorizationWebhookConfig","description":"Configuration specific to the authorization webhook","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhookConfig","sourcePath":"schemas/AuthorizationWebhookConfig.yaml","title":"AuthorizationWebhookConfig","origin":"./src/publicApi"}}}}}}},"responses":{"200":{"description":"Authorization webhook updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationWebhook","x-entrypoint":{"virtualPath":"schemas/AuthorizationWebhook","sourcePath":"schemas/AuthorizationWebhook.yaml","title":"AuthorizationWebhook","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/account/{accountId}/authorization-webhook/route.yaml"},"/virtual-account":{"get":{"description":"Retrieve a list of virtual accounts under an account.\nThe virtual accounts are returned in an array, with each item representing a virtual account under that account.\n\nThe primary account will also be returned as a virtual account, with an account type of 'primary' while actual subaccounts\nunder the primary account will have an account type of 'default'.\n","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:accountId","description":"Pass in an account ID to filter virtual accounts by account ID. This will return all virtual accounts that match the account ID passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:includeClosedAccounts","description":"Include virtual accounts that have been closed in the query results. By default, they will not be returned.","in":"query","schema":{"type":"string","enum":[true,false]},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/VirtualAccount","x-entrypoint":{"virtualPath":"schemas/VirtualAccount","sourcePath":"schemas/VirtualAccount.yaml","title":"VirtualAccount","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"summary":"Create a virtual account","tags":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","description":"The account ID the virtual account should be created under."},"name":{"type":"string","description":"The name of the virtual account"},"commissionDetails":{"$ref":"#/components/schemas/VirtualAccountCommissionDetails","description":"Specifies how much of the virtual account's incoming funds should be diverted to the primary account","x-entrypoint":{"virtualPath":"schemas/VirtualAccountCommissionDetails","sourcePath":"schemas/VirtualAccountCommissionDetails.yaml","title":"VirtualAccountCommissionDetails","origin":"./src/publicApi"}}},"required":["name","accountId"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"virtualAccount":{"$ref":"#/components/schemas/VirtualAccountModel","x-entrypoint":{"virtualPath":"schemas/VirtualAccountModel","sourcePath":"schemas/VirtualAccountModel.yaml","title":"VirtualAccountModel","origin":"./src/publicApi"}},"commissionRule":{"$ref":"#/components/schemas/VirtualAccountCommissionRule","x-entrypoint":{"virtualPath":"schemas/VirtualAccountCommissionRule","sourcePath":"schemas/VirtualAccountCommissionRule.yaml","title":"VirtualAccountCommissionRule","origin":"./src/publicApi"}}},"required":["virtualAccount"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/virtual-account/route.yaml"},"/virtual-account/{virtualAccountId}":{"parameters":[{"name":"virtualAccountId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Retrieve a single virtual account by its ID.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VirtualAccount","x-entrypoint":{"virtualPath":"schemas/VirtualAccount","sourcePath":"schemas/VirtualAccount.yaml","title":"VirtualAccount","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Update an existing virtual account","tags":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"action":{"type":"string","enum":["update"],"description":"The type of action to take. An action of type \"update\" will update the virtual account with the specified properties."},"name":{"type":"string","description":"The name to update the virtual account with."},"commissionDetails":{"$ref":"#/components/schemas/VirtualAccountCommissionDetails","x-entrypoint":{"virtualPath":"schemas/VirtualAccountCommissionDetails","sourcePath":"schemas/VirtualAccountCommissionDetails.yaml","title":"VirtualAccountCommissionDetails","origin":"./src/publicApi"}}},"required":["action"]},{"type":"object","properties":{"action":{"type":"string","enum":["close"],"description":"The type of action to take. An action of type \"close\" will close the virtual account."}},"required":["action"]}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"virtualAccount":{"$ref":"#/components/schemas/VirtualAccountModel","x-entrypoint":{"virtualPath":"schemas/VirtualAccountModel","sourcePath":"schemas/VirtualAccountModel.yaml","title":"VirtualAccountModel","origin":"./src/publicApi"}},"commissionRule":{"$ref":"#/components/schemas/VirtualAccountCommissionRule","x-entrypoint":{"virtualPath":"schemas/VirtualAccountCommissionRule","sourcePath":"schemas/VirtualAccountCommissionRule.yaml","title":"VirtualAccountCommissionRule","origin":"./src/publicApi"}}},"required":["virtualAccount"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/virtual-account/{virtualAccountId}/route.yaml"},"/transaction":{"get":{"description":"Get all transactions","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"accountId","deprecated":true,"description":"Use filter:accountId to filter by account ID","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:legalEntityId","in":"query","description":"Pass in a legal entity ID to filter transactions by accounts under a specific legal entity.","required":false,"schema":{"type":"string"}},{"name":"filter:accountId","description":"Pass in an account ID to filter transactions by account ID. This will return all transactions that match the account ID passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:virtualAccountId","description":"Pass in a virtual account ID to filter transactions by virtual account ID. This will return all transactions that match the virtual account ID passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:from_date","description":"Pass in a unix timestamp in milliseconds to filter transactions by date. This will return all transactions that occurred on or after the date passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:to_date","description":"Pass in a unix timestamp in milliseconds to filter transactions by date. This will return all transactions that occurred on or before the date passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:from_authorized_at","description":"Pass in a unix timestamp in milliseconds to filter transactions by authorization time. This will return all transactions that are authorized on or after the date passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:to_authorized_at","description":"Pass in a unix timestamp in milliseconds to filter transactions by authorization time. This will return all transactions that are authorized on or before the date passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:status","description":"Filter transactions by status","in":"query","schema":{"type":"string","description":"`pending` - The transaction is pending and has not been posted to the account yet (the balance doesn't reflect the transaction yet).\n`posted` - The transaction has been posted to the account and the balance reflects the transaction.\n`failed` - The transaction failed to post to the account\n","enum":["pending","posted","failed"]}},{"name":"filter:detailed_status","description":"Filter transactions by detailed status","in":"query","schema":{"type":"string","description":"- `pending`: Used for any transaction type that has not posted to the account yet, but is affecting the account's available balance.\n- `canceled`: Used for any transaction that was canceled.\n- `failed`: Used for any transaction that failed to post to the account.\n- `settled`: Used for any transaction that has posted to the account, except for card refunds, which use the `refund` status, and ACH returns, which use the `returned` status.\n- `declined`: Used for card transactions that were declined.\n- `refund`: Used for card transactions that were refunded, increasing the account's available and posted balances.\n- `reversed`: Used for card transactions that were authorized, but reversed by the merchant.\n- `returned`: Used for ACH returns. In the case of an ACH return, there are two possibilities: (1) if the ACH settled and then returned, then there will be one transaction with status `settled` for the ACH settling, and one transaction with status `returned` for the ACH return. Both of these are posted transactions. (2) if the ACH returned before settling, then there will only be one transaction with status `canceled`.\n- `dispute`: Used for disputed card transactions.\n","enum":["pending","canceled","failed","settled","declined","refund","reversed","returned","dispute"]}},{"name":"filter:cardId","description":"Filter transactions by cardId","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:category","description":"Filter transactions by category type","in":"query","schema":{"type":"string","description":"Filter by transaction category:\n- `card`: Card transactions (authorizations, purchases, refunds)\n- `ach`: ACH transfers (credits and debits)\n- `wire`: Domestic wire transfers\n- `international_wire`: International wire transfers\n- `rtp`: Real-time payments\n- `fee`: Fees (card fees, transfer fees, subscription fees)\n- `internal`: Internal transfers (between accounts, treasury transfers)\n","enum":["card","ach","wire","international_wire","rtp","fee","internal"]},"required":false},{"name":"filter:cardGroupId","description":"Filter transactions by card group ID. This will return all card transactions that belong to cards in the specified card group.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:providerAuthorizationId","description":"Filter transactions by provider authorization ID","in":"query","schema":{"type":"string"},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Transaction","x-entrypoint":{"virtualPath":"schemas/Transaction","sourcePath":"schemas/Transaction.yaml","title":"Transaction","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/transaction/route.yaml"},"/transaction/aggregation":{"get":{"description":"Get transaction aggregations","parameters":[{"name":"accountId","deprecated":true,"description":"Use filter:accountId to filter by account ID","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:legalEntityId","in":"query","description":"Pass in a legal entity ID to filter transactions by accounts under a specific legal entity.","required":false,"schema":{"type":"string"}},{"name":"filter:accountId","description":"Pass in an account ID to filter transactions by account ID. This will return all transactions that match the account ID passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:virtualAccountId","description":"Pass in a virtual account ID to filter transactions by virtual account ID. This will return all transactions that match the virtual account ID passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:from_date","description":"Pass in a unix timestamp in milliseconds to filter transactions by date. This will return all transactions that occurred on or after the date passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:to_date","description":"Pass in a unix timestamp in milliseconds to filter transactions by date. This will return all transactions that occurred on or before the date passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:from_authorized_at","description":"Pass in a unix timestamp in milliseconds to filter transactions by authorization time. This will return all transactions that are authorized on or after the date passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:to_authorized_at","description":"Pass in a unix timestamp in milliseconds to filter transactions by authorization time. This will return all transactions that are authorized on or before the date passed in.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:status","description":"Filter transactions by status","in":"query","schema":{"type":"string","description":"`pending` - The transaction is pending and has not been posted to the account yet (the balance doesn't reflect the transaction yet).\n`posted` - The transaction has been posted to the account and the balance reflects the transaction.\n`failed` - The transaction failed to post to the account\n","enum":["pending","posted","failed"]}},{"name":"filter:detailed_status","description":"Filter transactions by detailed status","in":"query","schema":{"type":"string","description":"- `pending`: Used for any transaction type that has not posted to the account yet, but is affecting the account's available balance.\n- `canceled`: Used for any transaction that was canceled.\n- `failed`: Used for any transaction that failed to post to the account.\n- `settled`: Used for any transaction that has posted to the account, except for card refunds, which use the `refund` status, and ACH returns, which use the `returned` status.\n- `declined`: Used for card transactions that were declined.\n- `refund`: Used for card transactions that were refunded, increasing the account's available and posted balances.\n- `reversed`: Used for card transactions that were authorized, but reversed by the merchant.\n- `returned`: Used for ACH returns. In the case of an ACH return, there are two possibilities: (1) if the ACH settled and then returned, then there will be one transaction with status `settled` for the ACH settling, and one transaction with status `returned` for the ACH return. Both of these are posted transactions. (2) if the ACH returned before settling, then there will only be one transaction with status `canceled`.\n- `dispute`: Used for disputed card transactions.\n","enum":["pending","canceled","failed","settled","declined","refund","reversed","returned","dispute"]}},{"name":"filter:cardId","description":"Filter transactions by cardId","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:category","description":"Filter transactions by category type","in":"query","schema":{"type":"string","description":"Filter by transaction category:\n- `card`: Card transactions (authorizations, purchases, refunds)\n- `ach`: ACH transfers (credits and debits)\n- `wire`: Domestic wire transfers\n- `international_wire`: International wire transfers\n- `rtp`: Real-time payments\n- `fee`: Fees (card fees, transfer fees, subscription fees)\n- `internal`: Internal transfers (between accounts, treasury transfers)\n","enum":["card","ach","wire","international_wire","rtp","fee","internal"]},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"The total count of transactions."},"totalIn":{"type":"number","description":"The total amount of money that arrived into the account, in cents."},"totalOut":{"type":"number","description":"The total amount of money that was sent out of the account, in cents."},"netChange":{"type":"number","description":"The net change, which is `totalIn` + `totalOut`."}},"required":["count","totalIn","totalOut","netChange"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/transaction/aggregation/route.yaml"},"/transaction/{transactionId}":{"parameters":[{"name":"transactionId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Fetch details for a single transaction by ID","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Transaction","x-entrypoint":{"virtualPath":"schemas/Transaction","sourcePath":"schemas/Transaction.yaml","title":"Transaction","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/transaction/{transactionId}/route.yaml"},"/transaction/{transactionId}/note":{"parameters":[{"name":"transactionId","required":true,"in":"path","schema":{"type":"string"}}],"patch":{"description":"Update note for a transaction","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"string"}},"required":["note"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/transaction/{transactionId}/note/route.yaml"},"/transaction/{transactionId}/fee-details":{"parameters":[{"name":"transactionId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Fetch breakdown of a fee transaction","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/FeeTransaction","x-entrypoint":{"virtualPath":"schemas/FeeTransaction","sourcePath":"schemas/FeeTransaction.yaml","title":"FeeTransaction","origin":"./src/publicApi"}}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/transaction/{transactionId}/fee-details/route.yaml"},"/transfer/virtual-account":{"post":{"description":"Transfer money between Virtual Accounts or fund a Virtual Account from a Primary Account","parameters":[{"name":"X-Idempotency-Key","in":"header","required":true,"schema":{"type":"string"},"description":"Unique key to ensure idempotency of the transfer."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","description":"The ID of the virtual account to transfer money from. Can also be the virtual account linked to a primary Slash account to fund a new\nvirtual account (Virtual account with the name 'Primary account').\n"},"destination":{"type":"string","description":"The ID of the virtual account to transfer money to."},"amountCents":{"type":"number","description":"The amount of money to send in cents."},"memo":{"type":"string","description":"Optional memo/description for the transfer to help differentiate transactions.","maxLength":255}},"required":["source","destination","amountCents"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"transferId":{"type":"string","description":"The ID of the transfer that was created."}},"required":["transferId"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/transfer/virtual-account/route.yaml"},"/transfers/book-transfer":{"post":{"description":"Initiate a *book transfer* — an instant, intra‐Slash money movement\nbetween two accounts the caller has access to.\n\n`from` and `to` accept any Slash account id the caller can address:\n  - `sa_group_*` — a Slash account group's primary cash account\n  - `sub_*`      — a virtual account inside a Slash account group\n\nThe legal entity owning `from` must equal the request's `x-legal-entity`\nheader (the source-scope guard for user-scoped API keys), and the caller\nmust be a member of both `from` and `to`'s legal entities. Cross-legal-\nentity transfers between entities you own are supported; sending to a\nthird party is not (see closed-loop-payment, coming soon).\n\nPayment is settled instantly on Slash's ledger — no banking-network rail\nis touched. For ACH/wire/RTP, use the rail-specific endpoint.\n","parameters":[{"name":"X-Idempotency-Key","in":"header","required":true,"schema":{"type":"string"},"description":"Unique key to ensure idempotency of the transfer."},{"name":"x-legal-entity","in":"header","required":true,"schema":{"type":"string"},"description":"The legal entity that owns the `from` account."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string","description":"The Slash account id to debit."},"to":{"type":"string","description":"The Slash account id to credit."},"amountCents":{"type":"number","description":"The amount of money to send in cents."},"memo":{"type":"string","description":"Optional memo/description for the transfer to help differentiate transactions.","maxLength":255}},"required":["from","to","amountCents"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"transferId":{"type":"string","description":"The ID of the transfer that was created."}},"required":["transferId"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The provided `X-Idempotency-Key` was already used for a different\nrequest body. Idempotency keys must be unique per request body —\nreplaying a previous key with mismatched parameters is rejected.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error","x-entrypoint":{"origin":"./src/publicApi","sourcePath":"src/publicApi/paths/transfers/book-transfer/route.yaml","title":"Error","virtualPath":"components/Error","globalImport":true}}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/transfers/book-transfer/route.yaml"},"/card":{"get":{"description":"List all cards you have access to.","parameters":[{"name":"filter:legalEntityId","in":"query","description":"Pass in a legal entity ID to filter for cards in accounts under a specific legal entity.","required":false,"schema":{"type":"string"}},{"name":"filter:accountId","in":"query","description":"Pass in an account ID to filter for cards under a specific account.","required":false,"schema":{"type":"string"}},{"name":"filter:virtualAccountId","in":"query","description":"Pass in a virtual account ID to filter for cards under a specific virtual account.","required":false,"schema":{"type":"string"}},{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:status","description":"Returns all cards matching the status passed in.","in":"query","schema":{"type":"string","enum":["active","paused","closed","inactive"]},"required":false},{"name":"filter:cardGroupId","description":"Pass in a card group ID, This will return all cards that belong to the card group ID passed in. Cannot be combined with filter:cardGroupName.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:cardGroupName","description":"Pass in a card group name, This will return all cards that belong to the card group name passed in. Cannot be combined with filter:cardGroupId.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:modifier","description":"Filter cards by modifier. Format is \"modifier_name:value\" (e.g., \"only_allow_recurring_payments:true\"). Returns cards where the specified modifier has the given value.","in":"query","schema":{"type":"string"},"required":false},{"name":"sort","description":"Sorts card by creation date or name.","in":"query","schema":{"type":"string","enum":["createdAt","name"]},"required":false},{"name":"sortDirection","description":"The direction to apply the sort filter by. Default ASC.","in":"query","schema":{"type":"string","enum":["ASC","DESC"]},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Card","x-entrypoint":{"virtualPath":"schemas/Card","sourcePath":"schemas/Card.yaml","title":"Card","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Create a card","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","description":"The ID of the account to create the card under. You can get this by calling `GET /account`. This field is required unless you are authenticating via API key, in which case it will default to your first commercial account. We recommend supplying this even if you are authenticating via API key."},"virtualAccountId":{"type":"string","description":"The ID of the virtual account to create the card under. Virtual accounts can be retrieved by calling `GET /virtual-account`."},"type":{"type":"string","description":"Specify the type of card you'd like to create. At the moment, only virtual cards are supported.","enum":["virtual"]},"name":{"type":"string"},"spendingConstraint":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}},"isSingleUse":{"type":"boolean","description":"Defaults to false. When set to true, the card will be automatically closed after a single authorization attempt. Note that the card will be closed even if the authorization declines or drops"},"userData":{"type":"object","description":"Arbitrary information that can be attached to the card. This should be a JSON object and cannot exceed 4kb.","additionalProperties":true},"cardGroupId":{"type":"string"},"cardholderId":{"type":"string","description":"The ID of the cardholder to assign to the card. You can get cardholder IDs by calling `GET /cardholder`."},"cardProductId":{"description":"The ID of the card product to use when creating this card, if not specified a random card product will be chosen.","type":"string"}},"required":["name","type"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Card","x-entrypoint":{"virtualPath":"schemas/Card","sourcePath":"schemas/Card.yaml","title":"Card","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card/route.yaml"},"/cardholder":{"get":{"description":"List cardholders for the caller's legal entity. Use the returned `id` as `cardholderId` when creating a card.","parameters":[{"name":"filter:legalEntityId","in":"query","description":"Pass in a legal entity ID to list cardholders for that legal entity. Required when authenticating with access to multiple legal entities.","required":false,"schema":{"type":"string"}},{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Cardholder","x-entrypoint":{"virtualPath":"schemas/Cardholder","sourcePath":"schemas/Cardholder.yaml","title":"Cardholder","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/cardholder/route.yaml"},"/card/{cardId}":{"parameters":[{"name":"cardId","in":"path","schema":{"type":"string"},"required":true}],"patch":{"description":"Update a card","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"status":{"$ref":"#/components/schemas/CardStatus","x-entrypoint":{"virtualPath":"schemas/CardStatus","sourcePath":"schemas/CardStatus.yaml","title":"CardStatus","origin":"./src/publicApi"}},"virtualAccountId":{"type":"string","description":"The virtual account to move this card to. The target virtual account must belong to the same account as the card. The move is processed asynchronously."},"cardGroupId":{"type":"string","nullable":true,"description":"Explicitly set this value to null to remove the card from a group. Omitting this field entirely will not affect the group the card belongs to."},"spendingConstraint":{"nullable":true,"description":"Explicitly set this value to null to remove all card level spending constraints.","$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}},"userData":{"nullable":true,"description":"Arbitrary information that can be attached to the card. This should be a JSON object and cannot exceed 4kb.","type":"object","additionalProperties":true}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Card","x-entrypoint":{"virtualPath":"schemas/Card","sourcePath":"schemas/Card.yaml","title":"Card","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"get":{"description":"Fetch details for a single card by card ID","parameters":[{"in":"query","name":"include_pan","schema":{"type":"string","enum":["true","false"]},"required":false},{"in":"query","name":"include_cvv","schema":{"type":"string","enum":["true","false"]},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Card","x-entrypoint":{"virtualPath":"schemas/Card","sourcePath":"schemas/Card.yaml","title":"Card","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card/{cardId}/route.yaml"},"/card/{cardId}/utilization":{"parameters":[{"name":"cardId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Get a card's current utilization","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardGroupUtilization","x-entrypoint":{"virtualPath":"schemas/CardGroupUtilization","sourcePath":"schemas/CardGroupUtilization.yaml","title":"CardGroupUtilization","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card/{cardId}/utilization/route.yaml"},"/card/{cardId}/modifier":{"parameters":[{"name":"cardId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Get all modifiers for a card.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"modifiers":{"type":"array","items":{"$ref":"#/components/schemas/CardModifier","x-entrypoint":{"virtualPath":"schemas/CardModifier","sourcePath":"schemas/CardModifier.yaml","title":"CardModifier","origin":"./src/publicApi"}}}},"required":["modifiers"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"put":{"description":"Set a modifier for a card.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardModifier","x-entrypoint":{"virtualPath":"schemas/CardModifier","sourcePath":"schemas/CardModifier.yaml","title":"CardModifier","origin":"./src/publicApi"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card/{cardId}/modifier/route.yaml"},"/card/{cardId}/spending-constraint":{"parameters":[{"name":"cardId","in":"path","schema":{"type":"string"},"required":true}],"patch":{"description":"Apply a partial update to a card's spending constraint while preserving current properties applied. Properties set to \"null\" will be removed from the spending constraint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialSpendingConstraint","x-entrypoint":{"virtualPath":"schemas/PartialSpendingConstraint","sourcePath":"schemas/PartialSpendingConstraint.yaml","title":"PartialSpendingConstraint","origin":"./src/publicApi"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"put":{"description":"Fully replace a card's spending constraint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card/{cardId}/spending-constraint/route.yaml"},"/card-group":{"get":{"description":"Retrieve the list of card groups that the user owns.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:name","description":"Pass in a name to filter for card groups with a matching name.","in":"query","schema":{"type":"string"},"required":false},{"name":"filter:virtualAccountId","description":"Deprecated. Card groups are owned by the legal entity and are not associated with a virtual account. Filters on the legacy association where one exists; card groups without one never match. Will be removed in a future version.","deprecated":true,"in":"query","schema":{"type":"string"},"required":false},{"name":"filter:status","description":"Filter card groups by status. Defaults to 'active' if not provided.","in":"query","schema":{"type":"string","enum":["active","archived"]},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CardGroup","x-entrypoint":{"virtualPath":"schemas/CardGroup","sourcePath":"schemas/CardGroup.yaml","title":"CardGroup","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Create a card group.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"virtualAccountId":{"type":"string","deprecated":true,"description":"Deprecated. Card groups are owned by the legal entity and are not associated with a virtual account. Ignored for legal entities on the legal-entity card group model; otherwise sets the legacy association (defaulting to the primary virtual account). Will be removed in a future version."},"spendingConstraint":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}},"required":["name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardGroup","x-entrypoint":{"virtualPath":"schemas/CardGroup","sourcePath":"schemas/CardGroup.yaml","title":"CardGroup","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card-group/route.yaml"},"/card-group/{cardGroupId}":{"parameters":[{"name":"cardGroupId","in":"path","schema":{"type":"string"},"required":true}],"patch":{"description":"Update a card group","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"spendingConstraint":{"$ref":"#/components/schemas/SpendingConstraint","nullable":true,"description":"Explicitly set this value to null to remove all card group level spending constraints.","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardGroup","x-entrypoint":{"virtualPath":"schemas/CardGroup","sourcePath":"schemas/CardGroup.yaml","title":"CardGroup","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"get":{"description":"Fetch details for a single card group by card group ID","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardGroup","x-entrypoint":{"virtualPath":"schemas/CardGroup","sourcePath":"schemas/CardGroup.yaml","title":"CardGroup","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card-group/{cardGroupId}/route.yaml"},"/card-group/{cardGroupId}/utilization":{"parameters":[{"name":"cardGroupId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Get a card group's current utilization","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardGroupUtilization","x-entrypoint":{"virtualPath":"schemas/CardGroupUtilization","sourcePath":"schemas/CardGroupUtilization.yaml","title":"CardGroupUtilization","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card-group/{cardGroupId}/utilization/route.yaml"},"/card-group/{cardGroupId}/spending-constraint":{"parameters":[{"name":"cardGroupId","in":"path","schema":{"type":"string"},"required":true}],"patch":{"description":"Apply a partial update to a card group's spending constraint while preserving current properties applied. Properties set to \"null\" will be removed from the spending constraint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialSpendingConstraint","x-entrypoint":{"virtualPath":"schemas/PartialSpendingConstraint","sourcePath":"schemas/PartialSpendingConstraint.yaml","title":"PartialSpendingConstraint","origin":"./src/publicApi"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"put":{"description":"Fully replace a card group's spending constraint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendingConstraint","x-entrypoint":{"virtualPath":"schemas/SpendingConstraint","sourcePath":"schemas/SpendingConstraint.yaml","title":"SpendingConstraint","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/card-group/{cardGroupId}/spending-constraint/route.yaml"},"/card-product":{"get":{"description":"Get all card products","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:accountId","in":"query","description":"Pass in an account ID to only return card products that cards on that account can be issued from.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CardProduct","x-entrypoint":{"virtualPath":"schemas/CardProduct","sourcePath":"schemas/CardProduct.yaml","title":"CardProduct","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]}]},"x-reference-path":"paths/card-product/route.yaml"},"/webhook":{"x-api-key-scopes":["revenue"],"get":{"description":"Get all webhooks","parameters":[{"name":"filter:legalEntityId","in":"query","description":"Pass in a legal entity ID to filter for webhooks under a specific legal entity.","required":false,"schema":{"type":"string"}},{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Webhook","x-entrypoint":{"virtualPath":"schemas/Webhook","sourcePath":"schemas/Webhook.yaml","title":"Webhook","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Create a new webhook endpoint","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"legalEntityId":{"type":"string","description":"The ID of the LegalEntity to create the webhook for. You can get this by calling `GET /legal-entity`. This field is required unless you are authenticating via API key."},"url":{"type":"string","description":"The URL that will receive the webhook payload"},"name":{"type":"string"}},"required":["url","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook","x-entrypoint":{"virtualPath":"schemas/Webhook","sourcePath":"schemas/Webhook.yaml","title":"Webhook","origin":"./src/publicApi"}}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook","x-entrypoint":{"virtualPath":"schemas/Webhook","sourcePath":"schemas/Webhook.yaml","title":"Webhook","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/webhook/route.yaml"},"/webhook/{webhookId}":{"x-api-key-scopes":["revenue"],"get":{"description":"Get a webhook endpoint by ID","parameters":[{"name":"webhookId","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook","x-entrypoint":{"virtualPath":"schemas/Webhook","sourcePath":"schemas/Webhook.yaml","title":"Webhook","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Update a webhook endpoint's status, enabled events, or both atomically.\n\nProvide at least one of `status` or `enabledEvents`. Omitted fields remain unchanged.\nSet `enabledEvents` to a nonempty array of recognized webhook event names to replace the current selection,\nor to `null` to receive all events. Omit it to keep the current selection.\n\n**Status transitions:**\n- `active`: Re-enables the endpoint. Use this to:\n  - Unpause a paused endpoint\n  - Re-enable an endpoint that is backing-off or disabled due to delivery failures\n  - When re-enabled, any queued notifications will be sent\n- `paused`: Pauses the endpoint. While paused:\n  - New notifications are queued (not lost)\n  - No delivery attempts are made\n  - Use `active` to resume and process queued notifications\n- `archived`: Permanently archives the endpoint (soft delete)\n\n**Note:** The `backing-off` and `disabled` statuses are system-managed and cannot be set directly.\nThese occur automatically when delivery failures are detected. Use `active` to re-enable.\n","parameters":[{"name":"webhookId","in":"path","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","x-optional":["status","reason","enabledEvents"],"properties":{"status":{"type":"string","enum":["active","paused","archived"],"description":"The desired status for the endpoint:\n- `active`: Enable/re-enable the endpoint\n- `paused`: Pause the endpoint (notifications are queued)\n- `archived`: Archive the endpoint (soft delete)\n"},"reason":{"type":"string","description":"Optional reason for the status change (for audit purposes)"},"enabledEvents":{"type":"array","nullable":true,"minItems":1,"items":{"type":"string"},"description":"Replaces the events this endpoint receives. Use recognized event names from the webhook event schema.\nSet to null to receive all events, or omit to keep the current selection. Empty arrays are not supported.\n","example":["payments.payment_intent.created","payments.payment_intent.updated"]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook","x-entrypoint":{"virtualPath":"schemas/Webhook","sourcePath":"schemas/Webhook.yaml","title":"Webhook","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/webhook/{webhookId}/route.yaml"},"/merchant":{"get":{"description":"Retrieve the list of available merchant ids","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"search:merchant_name","description":"Pass in a merchant name to filter merchants by name.","in":"query","schema":{"type":"string"},"required":false}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Merchant","x-entrypoint":{"virtualPath":"schemas/Merchant","sourcePath":"schemas/Merchant.yaml","title":"Merchant","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/merchant/route.yaml"},"/merchant/{merchantId}":{"parameters":[{"name":"merchantId","in":"path","schema":{"type":"string"},"required":true}],"get":{"description":"Fetch details for a single merchant by ID","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Merchant","x-entrypoint":{"virtualPath":"schemas/Merchant","sourcePath":"schemas/Merchant.yaml","title":"Merchant","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/merchant/{merchantId}/route.yaml"},"/merchant-category":{"get":{"description":"Retrieve the list of available merchant category ids","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/MerchantCategory","x-entrypoint":{"virtualPath":"schemas/MerchantCategory","sourcePath":"schemas/MerchantCategory.yaml","title":"MerchantCategory","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/merchant-category/route.yaml"},"/developer-account/{developerAccountId}/application":{"parameters":[{"name":"developerAccountId","in":"path","schema":{"type":"string"},"required":true}],"post":{"summary":"Create a DeveloperApplication","tags":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"type":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationType","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationType","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationType.yaml","title":"DeveloperApplicationType","origin":"./src/publicApi"}},"data":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationData","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationData","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationData.yaml","title":"DeveloperApplicationData","origin":"./src/publicApi"}}},"required":["name","type","data"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationModel","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationModel","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationModel.yaml","title":"DeveloperApplicationModel","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]}]},"x-reference-path":"paths/developer-account/{developerAccountId}/application/route.yaml"},"/developer-application/{developerApplicationId}":{"parameters":[{"name":"developerApplicationId","in":"path","schema":{"type":"string"},"required":true}],"get":{"summary":"Get a DeveloperApplication","tags":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationModel","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationModel","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationModel.yaml","title":"DeveloperApplicationModel","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]}]},"patch":{"summary":"Update a DeveloperApplication","tags":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"data":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationData","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationData","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationData.yaml","title":"DeveloperApplicationData","origin":"./src/publicApi"}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationModel","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationModel","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationModel.yaml","title":"DeveloperApplicationModel","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]}]},"x-reference-path":"paths/developer-application/{developerApplicationId}/route.yaml"},"/developer-application/{developerApplicationId}/secret":{"parameters":[{"name":"developerApplicationId","in":"path","schema":{"type":"string"},"required":true}],"post":{"summary":"Create or regenerate a DeveloperApplication's OAuthClientSecret","tags":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeveloperApplication.DeveloperApplicationModel","x-entrypoint":{"virtualPath":"schemas/DeveloperApplication/DeveloperApplicationModel","sourcePath":"schemas/DeveloperApplication/DeveloperApplicationModel.yaml","title":"DeveloperApplicationModel","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]}]},"x-reference-path":"paths/developer-application/{developerApplicationId}/secret/route.yaml"},"/.well-known/openid-configuration":{"get":{"description":"Get OpenID Configuration","tags":[],"security":[{}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationServerMetadata","x-entrypoint":{"virtualPath":"schemas/AuthorizationServerMetadata","sourcePath":"schemas/AuthorizationServerMetadata.yaml","title":"AuthorizationServerMetadata","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"x-reference-path":"paths/.well-known/openid-configuration/route.yaml"},"/.well-known/oauth-authorization-server":{"get":{"description":"Get OAuth 2.0 authorization server metadata (RFC 8414). The same document as the OpenID configuration; MCP clients look here first.","tags":[],"security":[{}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationServerMetadata","x-entrypoint":{"virtualPath":"schemas/AuthorizationServerMetadata","sourcePath":"schemas/AuthorizationServerMetadata.yaml","title":"AuthorizationServerMetadata","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"x-reference-path":"paths/.well-known/oauth-authorization-server/route.yaml"},"/oauth2/token":{"post":{"description":"Get or refresh an access token. Confidential clients authenticate with HTTP Basic (client ID and secret). Public clients, which have no secret, send `client_id` in the body instead; their authorization codes must have been requested with a PKCE challenge.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"oneOf":[{"type":"object","properties":{"grant_type":{"type":"string","enum":["authorization_code"]},"code":{"type":"string"},"client_id":{"description":"Required for public clients, which don't send HTTP Basic credentials. Ignored when HTTP Basic credentials are sent.","type":"string"},"code_verifier":{"description":"The PKCE code verifier. Required when the authorization code was requested with a code challenge.","type":"string"},"resource":{"description":"The protected resource the token is for (RFC 8707). MCP clients send it; it is accepted and not otherwise used.","type":"string"},"prompt":{"description":"Unused by Slash, but required in the OAuth spec.","type":"string"},"scope":{"description":"Unused by Slash, but required in the OAuth spec.","type":"string"},"redirect_uri":{"type":"string"}},"required":["grant_type","code","redirect_uri"]},{"type":"object","properties":{"grant_type":{"type":"string","enum":["refresh_token"]},"refresh_token":{"type":"string"},"client_id":{"description":"Required for public clients, which don't send HTTP Basic credentials. Ignored when HTTP Basic credentials are sent.","type":"string"},"resource":{"description":"The protected resource the token is for (RFC 8707). MCP clients send it; it is accepted and not otherwise used.","type":"string"},"scope":{"description":"Unused by Slash, but required in the OAuth spec.","type":"string"},"code":{"description":"Unused by Slash, but required in the OAuth spec.","type":"string"},"code_verifier":{"description":"Unused by Slash, but required in the OAuth spec.","type":"string"},"prompt":{"description":"Unused by Slash, but required in the OAuth spec.","type":"string"},"redirect_uri":{"description":"Unused by Slash, but required in the OAuth spec.","type":"string"}},"required":["grant_type","refresh_token"]}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"integer"},"id_token":{"type":"string"},"refresh_token":{"type":"string"}},"required":["access_token","token_type","expires_in","id_token","refresh_token"]}}}},"400":{"description":"The authorization code or refresh token can't be used: it's invalid, expired, already used, revoked, or was issued to another client. Send the user through authorization again (RFC 6749 section 5.2).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_grant"]}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"developer_application":[]}]},"x-reference-path":"paths/oauth2/token/route.yaml"},"/oauth2/userinfo":{"get":{"description":"Get userinfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/paths.oauth2.userinfo._dto.UserInfoResponse","x-entrypoint":{"virtualPath":"paths/oauth2/userinfo/_dto/UserInfoResponse","sourcePath":"paths/oauth2/userinfo/_dto/UserInfoResponse.yaml","title":"UserInfoResponse","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearer":[]}]},"post":{"description":"Get userinfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/paths.oauth2.userinfo._dto.UserInfoResponse","x-entrypoint":{"virtualPath":"paths/oauth2/userinfo/_dto/UserInfoResponse","sourcePath":"paths/oauth2/userinfo/_dto/UserInfoResponse.yaml","title":"UserInfoResponse","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearer":[]}]},"x-reference-path":"paths/oauth2/userinfo/route.yaml"},"/fdx/customers/current":{"get":{"description":"Get current authenticated customer ID","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string"}},"required":["customerId"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/fdx/customers/current/route.yaml"},"/fdx/accounts":{"get":{"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"string"},"description":"The number of items to skip before starting to collect the result set"},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"The number of items to return (default 100, max 1000)"}],"description":"List all accounts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"page":{"type":"object","properties":{"nextOffset":{"type":"string"}}},"accounts":{"type":"array","items":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.Account","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/Account","sourcePath":"paths/fdx/accounts/_dto/Account.yaml","title":"Account","origin":"./src/publicApi"}}}},"required":["accounts"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/fdx/accounts/route.yaml"},"/fdx/accounts/{accountId}":{"get":{"parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string"},"description":"Account ID"}],"description":"Get account balances and liabilities","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/paths.fdx.accounts._dto.AccountWithBalance","x-entrypoint":{"virtualPath":"paths/fdx/accounts/_dto/AccountWithBalance","sourcePath":"paths/fdx/accounts/_dto/AccountWithBalance.yaml","title":"AccountWithBalance","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/fdx/accounts/{accountId}/route.yaml"},"/fdx/accounts/{accountId}/contact":{"get":{"parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string"},"description":"Account ID"}],"description":"Get an account's contact information","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"holders":{"type":"array","items":{"type":"object","properties":{"name":{"type":"object","properties":{"first":{"type":"string"},"middle":{"type":"string"},"last":{"type":"string"},"suffix":{"type":"string"},"prefix":{"type":"string"}},"required":["first","middle","last"]}},"required":["name","relationship"]}},"emails":{"type":"array","items":{"type":"string"}},"addresses":{"type":"array","items":{"type":"object","properties":{"line1":{"type":"string"},"line2":{"type":"string"},"line3":{"type":"string"},"city":{"type":"string"},"region":{"type":"string","description":"State or province or territory."},"postalCode":{"type":"string"},"country":{"type":"string","description":"Iso3166CountryCode"}},"required":["line1","line2","city","country"]}},"telephones":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["HOME","BUSINESS","CELL","FAX"]},"country":{"type":"string","description":"Country calling codes defined by ITU-T recommendations E.123 and E.164"},"number":{"type":"string","description":"Telephone subscriber number defined by ITU-T recommendation E.164"}},"required":["type","number"]}}},"required":["holders","emails","addresses","telephones"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/fdx/accounts/{accountId}/contact/route.yaml"},"/fdx/accounts/{accountId}/statements":{"get":{"parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string"},"description":"Account ID"},{"name":"startTime","in":"query","required":false,"schema":{"type":"string"},"description":"Start time for use in retrieval of statements (ISO 8601)."},{"name":"endTime","in":"query","required":false,"schema":{"type":"string"},"description":"End time for use in retrieval of statements (ISO 8601)."},{"name":"offset","in":"query","required":false,"schema":{"type":"string"},"description":"The ID of the last item in the previous page of results"},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"The number of items to return (default 100, max 1000)"}],"description":"Search for statements","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"page":{"type":"object","properties":{"nextOffset":{"type":"string"}}},"statements":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","description":"Long-term persistent identity of the account, though not an account number."},"statementId":{"type":"string","description":"Long-term persistent identity of the statement."},"statementDate":{"type":"string","description":"The date of the statement."},"description":{"type":"string","description":"A description of the statement."},"links":{"type":"array","description":"Will only contain one element, which is a link to the /accounts/{accountId}/statements/{statementId} endpoint.","items":{"type":"object","properties":{"href":{"type":"string"},"rel":{"type":"string"},"action":{"type":"string","enum":["GET"]},"types":{"type":"array","items":{"type":"string","enum":["application/pdf"]}}},"required":["href"]}},"status":{"type":"string","enum":["AVAILABLE","PROCESSING","FAILED"]}},"required":["accountId","statementId","statementDate","description","links","status"]}}},"required":["statements"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/fdx/accounts/{accountId}/statements/route.yaml"},"/fdx/accounts/{accountId}/statements/{statementId}":{"get":{"parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string"},"description":"Account ID"},{"name":"statementId","in":"path","required":true,"schema":{"type":"string"},"description":"Statement ID returned by /accounts/{accountId}/statements"}],"description":"Get account statement PDF.","responses":{"200":{"description":"OK","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized","content":{"application/pdf":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/pdf":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/pdf":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/pdf":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/fdx/accounts/{accountId}/statements/{statementId}/route.yaml"},"/fdx/accounts/{accountId}/transactions":{"get":{"parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string"},"description":"Account ID"},{"name":"startTime","in":"query","required":false,"schema":{"type":"string"},"description":"Start time for use in retrieval of transactions (ISO 8601)."},{"name":"endTime","in":"query","required":false,"schema":{"type":"string"},"description":"End time for use in retrieval of transactions (ISO 8601)."},{"name":"offset","in":"query","required":false,"schema":{"type":"string"},"description":"The ID of the last item in the previous page of results"},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"The number of items to return (default 100, max 1000)"}],"description":"Search for transactions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"page":{"type":"object","properties":{"nextOffset":{"type":"string"}}},"transactions":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"depositTransaction":{"$ref":"#/components/schemas/paths.fdx.accounts._param_accountId.transactions._dto.DepositTransaction","x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/DepositTransaction","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/DepositTransaction.yaml","title":"DepositTransaction","origin":"./src/publicApi"}}},"required":["depositTransaction"]},{"type":"object","properties":{"loanTransaction":{"$ref":"#/components/schemas/paths.fdx.accounts._param_accountId.transactions._dto.LoanTransaction","x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/LoanTransaction","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/LoanTransaction.yaml","title":"LoanTransaction","origin":"./src/publicApi"}}},"required":["loanTransaction"]},{"type":"object","properties":{"locTransaction":{"$ref":"#/components/schemas/paths.fdx.accounts._param_accountId.transactions._dto.LineOfCreditTransaction","x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/LineOfCreditTransaction","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/LineOfCreditTransaction.yaml","title":"LineOfCreditTransaction","origin":"./src/publicApi"}}},"required":["locTransaction"]},{"type":"object","properties":{"investmentTransaction":{"$ref":"#/components/schemas/paths.fdx.accounts._param_accountId.transactions._dto.InvestmentTransaction","x-entrypoint":{"virtualPath":"paths/fdx/accounts/{accountId}/transactions/_dto/InvestmentTransaction","sourcePath":"paths/fdx/accounts/{accountId}/transactions/_dto/InvestmentTransaction.yaml","title":"InvestmentTransaction","origin":"./src/publicApi"}}},"required":["investmentTransaction"]}]}}},"required":["transactions"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/fdx/accounts/{accountId}/transactions/route.yaml"},"/fdx/accounts/{accountId}/payment-networks":{"get":{"parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string"},"description":"Account ID"},{"name":"offset","in":"query","required":false,"schema":{"type":"string"},"description":"The ID of the last item in the previous page of results"},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"The number of items to return (default 100, max 1000)"}],"description":"Get payment networks supported by the account","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"page":{"type":"object","properties":{"nextOffset":{"type":"string"}}},"paymentNetworks":{"type":"array","items":{"type":"object","properties":{"bankId":{"type":"string","description":"Bank identifier used by the payment network ie. Routing Number"},"identifier":{"type":"string","description":"The number used to identify the account within the payment network."},"type":{"type":"string","enum":["US_ACH","US_FEDWIRE","US_CHIPS","US_RTP","CA_ACSS","CA_LVTS"]},"transferIn":{"type":"boolean","description":"Indicates if the account can receive transfers from the payment network. If the account is closed or locked, this will be false."},"transferOut":{"type":"boolean","description":"Indicates if the account can send transfers to the payment network. If the account is closed or locked, this will be false."}},"required":["bankId","identifier","type","transferIn","transferOut"]}}},"required":["paymentNetworks"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/fdx/accounts/{accountId}/payment-networks/route.yaml"},"/invoice":{"x-api-key-scopes":["revenue"],"get":{"description":"List all invoices for your legal entity. Supports pagination and filtering by status, customer, and account.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"Filter invoices by legal entity ID. Required if authenticating via bearer token with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter invoices by status.","in":"query","required":false,"schema":{"type":"string","enum":["unpaid","paid","paid_partially","overdue","void"]}},{"name":"filter:legalEntityContactId","description":"Filter invoices by contact ID.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:legalEntityCustomerId","description":"Filter invoices by customer ID.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:accountId","description":"Filter invoices by receiving account ID.","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","description":"Sort invoices by a field. Default is by status then due date.","in":"query","required":false,"schema":{"type":"string","enum":["issuedAt","dueAt"]}},{"name":"sortDirection","description":"The direction to sort by. Defaults to DESC when sorting by issuedAt or dueAt, ASC otherwise.","in":"query","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Create a new invoice.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","description":"The ID of the account to receive payment. You can get this by calling `GET /account`."},"legalEntityContactId":{"type":"string","deprecated":true,"description":"DEPRECATED. No longer accepted as of the contact→customer migration. Pass `legalEntityCustomerId` instead."},"legalEntityCustomerId":{"type":"string","description":"The ID of the customer to bill. Create a customer first via `POST /customer`."},"details":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceDetailsInput.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceDetailsInput","sourcePath":"entity/Invoice/InvoiceDetailsInput.yaml","title":"InvoiceDetailsInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceDetailsInput","typeValue":"models.entity.Invoice.InvoiceDetailsInput"}}},"paymentMethods":{"type":"array","description":"Payment methods to enable on this invoice.","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSlashPaymentMethodConfig.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSlashPaymentMethodConfig","sourcePath":"entity/Invoice/InvoiceSlashPaymentMethodConfig.yaml","title":"InvoiceSlashPaymentMethodConfig","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSlashPaymentMethodConfig","typeValue":"models.entity.Invoice.InvoiceSlashPaymentMethodConfig"}}}}},"required":["accountId","legalEntityCustomerId","details"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/route.yaml"},"/invoice/{invoiceId}":{"x-api-key-scopes":["revenue"],"get":{"description":"Get a single invoice by ID.","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Update an existing invoice. You can update the account, details, payment methods, and auto-pull settings.","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","description":"The ID of the account to receive payment."},"details":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceDetailsInput.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceDetailsInput","sourcePath":"entity/Invoice/InvoiceDetailsInput.yaml","title":"InvoiceDetailsInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceDetailsInput","typeValue":"models.entity.Invoice.InvoiceDetailsInput"}}},"paymentMethods":{"type":"array","description":"Payment methods to enable on this invoice.","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSlashPaymentMethodConfig.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSlashPaymentMethodConfig","sourcePath":"entity/Invoice/InvoiceSlashPaymentMethodConfig.yaml","title":"InvoiceSlashPaymentMethodConfig","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSlashPaymentMethodConfig","typeValue":"models.entity.Invoice.InvoiceSlashPaymentMethodConfig"}}}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/{invoiceId}/route.yaml"},"/invoice/{invoiceId}/payment-details":{"x-api-key-scopes":["revenue"],"get":{"description":"Get payment details for a single invoice.","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["invoiceId","hostedInvoiceUrl","manualTransfer"],"properties":{"invoiceId":{"type":"string","description":"The invoice ID."},"hostedInvoiceUrl":{"type":"string","format":"uri","description":"The public payer page URL for this invoice."},"referenceIdentifier":{"type":"string","description":"The per-invoice wire or ACH reference identifier shown with manual transfer instructions. Omitted when the invoice has none."},"manualTransfer":{"type":"object","description":"Wire and ACH instructions for the invoice account.","required":["details"],"properties":{"details":{"type":"array","description":"International transfer instructions for the invoice account.","items":{"type":"object","required":["key","label","value"],"properties":{"key":{"type":"string","description":"Stable identifier for the payment detail."},"label":{"type":"string","description":"Human-readable payment detail label."},"value":{"type":"string","description":"Payment detail value."}}}}}},"cryptoDeposit":{"type":"object","description":"Cryptocurrency deposit instructions. Omitted when crypto deposit is not enabled for the invoice.","required":["addresses"],"properties":{"addresses":{"type":"array","description":"Deposit addresses available for the invoice.","items":{"type":"object","required":["chain","currency","address","memo"],"properties":{"chain":{"type":"string","description":"Blockchain network for the deposit address."},"currency":{"type":"string","description":"Cryptocurrency accepted at the deposit address."},"address":{"type":"string","description":"Deposit address."},"memo":{"type":"string","nullable":true,"description":"Deposit memo or tag, when required by the network."}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/{invoiceId}/payment-details/route.yaml"},"/invoice/{invoiceId}/void":{"x-api-key-scopes":["revenue"],"post":{"description":"Void an invoice. A voided invoice can no longer be paid.","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/{invoiceId}/void/route.yaml"},"/invoice/{invoiceId}/reconcile":{"x-api-key-scopes":["revenue"],"post":{"description":"Manually reconcile (link) transactions to an invoice. This marks the invoice as having received payment for the linked transactions.","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","description":"Array of transactions to link to the invoice.","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceTransaction.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceTransaction","sourcePath":"entity/Invoice/InvoiceTransaction.yaml","title":"InvoiceTransaction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceTransaction","typeValue":"models.entity.Invoice.InvoiceTransaction"}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/{invoiceId}/reconcile/route.yaml"},"/invoice/{invoiceId}/unreconcile":{"x-api-key-scopes":["revenue"],"post":{"description":"Unreconcile (unlink) transactions from an invoice. This removes the payment association for the specified transactions.","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","description":"Array of transactions to unlink from the invoice.","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceTransaction.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceTransaction","sourcePath":"entity/Invoice/InvoiceTransaction.yaml","title":"InvoiceTransaction","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceTransaction","typeValue":"models.entity.Invoice.InvoiceTransaction"}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/{invoiceId}/unreconcile/route.yaml"},"/invoice/{invoiceId}/send-reminder":{"x-api-key-scopes":["revenue"],"get":{"description":"Get the next scheduled automatic reminder date for an invoice","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"nextAutoReminderAt":{"type":"string","format":"date-time","description":"The scheduled date of the next automatic reminder. Absent if no future reminders are scheduled."}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Manually send a reminder email for an invoice. Rate limited to one reminder per invoice per 24 hours.","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"reason":{"type":"string","enum":["rate_limited"],"description":"Present when success is false. Indicates why the reminder was not sent."}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/{invoiceId}/send-reminder/route.yaml"},"/invoice/settings":{"x-api-key-scopes":["revenue"],"get":{"description":"Get the current invoice display settings for your legal entity.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"invoiceSettings":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSettings.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSettings","sourcePath":"entity/Invoice/InvoiceSettings.yaml","title":"InvoiceSettings","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSettings","typeValue":"models.entity.Invoice.InvoiceSettings"}}}},"required":["invoiceSettings"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"put":{"description":"Update invoice display settings for your legal entity. These settings control the branding and default values used when creating invoices.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSettingsData.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSettingsData","sourcePath":"entity/Invoice/InvoiceSettingsData.yaml","title":"InvoiceSettingsData","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSettingsData","typeValue":"models.entity.Invoice.InvoiceSettingsData"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"invoiceSettings":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSettings.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSettings","sourcePath":"entity/Invoice/InvoiceSettings.yaml","title":"InvoiceSettings","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSettings","typeValue":"models.entity.Invoice.InvoiceSettings"}}}},"required":["invoiceSettings"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/settings/route.yaml"},"/invoice/settings/logo":{"x-api-key-scopes":["revenue"],"post":{"description":"Upload a logo image for invoice branding. Accepts PNG, JPEG, SVG, and WebP formats up to 2MB.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The logo image file to upload."}}},"encoding":{"file":{"contentType":"image/svg+xml, image/png, image/jpeg, image/jpg, image/webp"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"The document ID of the uploaded logo. Use this in `PUT /invoice/settings` to set the logo."},"url":{"type":"string","description":"The URL of the uploaded logo."}},"required":["documentId","url"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/settings/logo/route.yaml"},"/invoice/validate-number":{"x-api-key-scopes":["revenue"],"get":{"description":"Check whether an invoice number is available (not already in use) for your legal entity.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID to check the invoice number against. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"invoiceNumber","in":"query","required":true,"description":"The invoice number to validate.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"isAvailable":{"type":"boolean","description":"Whether the invoice number is available for use."}},"required":["isAvailable"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/validate-number/route.yaml"},"/invoice/series":{"x-api-key-scopes":["revenue"],"get":{"description":"List all invoice series (recurring invoice configurations) for your legal entity. Supports pagination and filtering by status, customer, and account.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"Filter invoice series by legal entity ID. Required if authenticating via bearer token with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter invoice series by status.","in":"query","required":false,"schema":{"type":"string","enum":["active","ended","cancelled"]}},{"name":"filter:legalEntityContactId","description":"Filter invoice series by contact ID.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:legalEntityCustomerId","description":"Filter invoice series by customer ID.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:accountId","description":"Filter invoice series by receiving account ID.","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","description":"Sort invoice series by a field. Default is by status then start date.","in":"query","required":false,"schema":{"type":"string","enum":["startDate","nextScheduledDate"]}},{"name":"sortDirection","description":"The direction to sort by. Defaults to DESC when sorting by startDate or nextScheduledDate, ASC otherwise.","in":"query","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeries.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeries","sourcePath":"entity/Invoice/InvoiceSeries.yaml","title":"InvoiceSeries","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSeries","typeValue":"models.entity.Invoice.InvoiceSeries"}}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Create a new invoice series (recurring invoice). The series will automatically generate invoices according to the specified recurrence rule.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesInput.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesInput","sourcePath":"entity/Invoice/InvoiceSeriesInput.yaml","title":"InvoiceSeriesInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSeriesInput","typeValue":"models.entity.Invoice.InvoiceSeriesInput"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"invoiceSeries":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeries.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeries","sourcePath":"entity/Invoice/InvoiceSeries.yaml","title":"InvoiceSeries","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSeries","typeValue":"models.entity.Invoice.InvoiceSeries"}}},"invoiceAggregate":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}},"required":["invoiceSeries","invoiceAggregate"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/series/route.yaml"},"/invoice/series/{invoiceSeriesId}":{"x-api-key-scopes":["revenue"],"get":{"description":"Get a single invoice series by ID.","parameters":[{"name":"invoiceSeriesId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeries.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeries","sourcePath":"entity/Invoice/InvoiceSeries.yaml","title":"InvoiceSeries","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSeries","typeValue":"models.entity.Invoice.InvoiceSeries"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Update an existing invoice series. You can update the recurrence rule, payment terms, template, payment methods, and end condition. The contact cannot be changed after creation.","parameters":[{"name":"invoiceSeriesId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeriesInput.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeriesInput","sourcePath":"entity/Invoice/InvoiceSeriesInput.yaml","title":"InvoiceSeriesInput","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSeriesInput","typeValue":"models.entity.Invoice.InvoiceSeriesInput"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"invoiceSeries":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeries.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeries","sourcePath":"entity/Invoice/InvoiceSeries.yaml","title":"InvoiceSeries","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSeries","typeValue":"models.entity.Invoice.InvoiceSeries"}}},"invoiceAggregate":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}},"required":["invoiceSeries"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/series/{invoiceSeriesId}/route.yaml"},"/invoice/series/{invoiceSeriesId}/cancel":{"x-api-key-scopes":["revenue"],"post":{"description":"Cancel an invoice series. Already-generated invoices are not affected. The next scheduled (unpaid) invoice will be voided.","parameters":[{"name":"invoiceSeriesId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"invoiceSeries":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeries.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeries","sourcePath":"entity/Invoice/InvoiceSeries.yaml","title":"InvoiceSeries","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSeries","typeValue":"models.entity.Invoice.InvoiceSeries"}}},"voidedInvoice":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}},"required":["invoiceSeries"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/series/{invoiceSeriesId}/cancel/route.yaml"},"/invoice/series/{invoiceSeriesId}/skip-next":{"x-api-key-scopes":["revenue"],"post":{"description":"Skip the next scheduled occurrence in a series. The scheduled invoice is voided and the series advances to the following occurrence.","parameters":[{"name":"invoiceSeriesId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"invoiceSeries":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceSeries.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceSeries","sourcePath":"entity/Invoice/InvoiceSeries.yaml","title":"InvoiceSeries","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceSeries","typeValue":"models.entity.Invoice.InvoiceSeries"}}},"voidedInvoice":{"$ref":"#/components/schemas/slashfi.models.entity.Invoice.InvoiceAggregate.yaml","x-entrypoint":{"virtualPath":"entity/Invoice/InvoiceAggregate","sourcePath":"entity/Invoice/InvoiceAggregate.yaml","title":"InvoiceAggregate","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Invoice.InvoiceAggregate","typeValue":"models.entity.Invoice.InvoiceAggregate"}}}},"required":["invoiceSeries","voidedInvoice"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/invoice/series/{invoiceSeriesId}/skip-next/route.yaml"},"/expense-report":{"get":{"description":"List expense reports for your legal entity. Supports pagination, filtering by status and submitter, and sorting.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"Filter by legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter expense reports by status.","in":"query","required":false,"schema":{"type":"string","enum":["pending_review","cancelled","rejected","payment_processing","payment_completed","payment_failed"]}},{"name":"filter:submittedByUserId","description":"Filter expense reports by the user who submitted them.","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","description":"Sort expense reports by a field. Default is by `submittedAt` descending.","in":"query","required":false,"schema":{"type":"string","enum":["submittedAt","amountCents","transactionDate"]}},{"name":"sortDirection","description":"The direction to sort by. Defaults to DESC.","in":"query","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicExpenseReportWithMetadata.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicExpenseReportWithMetadata","sourcePath":"entity/ExpenseReport/PublicExpenseReportWithMetadata.yaml","title":"PublicExpenseReportWithMetadata","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata","typeValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata"}}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Submit a new expense report for reimbursement.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"submittedByUserId":{"type":"string","description":"The user ID of the employee submitting the expense report."},"amountCents":{"type":"integer","description":"The expense amount in cents."},"currency":{"type":"string","description":"ISO currency code (e.g., 'USD').","default":"USD"},"transactionDate":{"type":"string","format":"date-time","description":"The date of the transaction being reimbursed."},"memo":{"type":"string","nullable":true,"description":"Description or notes for the expense."},"destinationId":{"type":"string","description":"The user's bank account ID for payout."},"documentIds":{"type":"array","items":{"type":"string"},"description":"IDs of uploaded receipt documents to attach."},"merchant":{"type":"object","description":"Merchant reference for the expense.","properties":{"type":{"type":"string","enum":["merchantV2","customMerchant"],"description":"Type of merchant reference."},"id":{"type":"string","description":"ID of the merchant."}},"required":["type","id"]},"noReceiptReason":{"type":"string","nullable":true,"description":"Reason for not having a receipt. Required when no documentIds are provided."}},"required":["submittedByUserId","amountCents","transactionDate","destinationId","merchant"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"expenseReport":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicExpenseReportWithMetadata.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicExpenseReportWithMetadata","sourcePath":"entity/ExpenseReport/PublicExpenseReportWithMetadata.yaml","title":"PublicExpenseReportWithMetadata","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata","typeValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata"}}}},"required":["expenseReport"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/expense-report/route.yaml"},"/expense-report/{expenseReportId}":{"get":{"description":"Get a single expense report by ID.","parameters":[{"name":"expenseReportId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"expenseReport":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicExpenseReportWithMetadata.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicExpenseReportWithMetadata","sourcePath":"entity/ExpenseReport/PublicExpenseReportWithMetadata.yaml","title":"PublicExpenseReportWithMetadata","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata","typeValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata"}}}},"required":["expenseReport"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Update an existing expense report. Can only update reports with status `pending_review`. Set `status` to `cancelled` to cancel the report. The acting user is derived from your credentials. Bearer tokens and user-scoped API keys may update reports submitted by that user, or any report in the legal entity if that user holds the `reimbursements.approve` permission. Legal-entity API keys must hold `reimbursements.approve`.","parameters":[{"name":"expenseReportId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"updatedByUserId":{"type":"string","deprecated":true,"description":"Deprecated and ignored. The acting user is derived from your credentials. Retained for backwards compatibility with existing integrations."},"amountCents":{"type":"integer","description":"The expense amount in cents."},"currency":{"type":"string","description":"ISO currency code (e.g., 'USD')."},"transactionDate":{"type":"string","format":"date-time","description":"The date of the transaction being reimbursed."},"memo":{"type":"string","nullable":true,"description":"Description or notes for the expense."},"destinationId":{"type":"string","description":"The user's bank account ID for payout."},"documentIds":{"type":"array","items":{"type":"string"},"description":"IDs of uploaded receipt documents to attach."},"merchant":{"type":"object","description":"Merchant reference for the expense.","properties":{"type":{"type":"string","enum":["merchantV2","customMerchant"],"description":"Type of merchant reference."},"id":{"type":"string","description":"ID of the merchant."}},"required":["type","id"]},"status":{"type":"string","enum":["cancelled"],"description":"Set to `cancelled` to cancel the expense report."}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"expenseReport":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicExpenseReportWithMetadata.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicExpenseReportWithMetadata","sourcePath":"entity/ExpenseReport/PublicExpenseReportWithMetadata.yaml","title":"PublicExpenseReportWithMetadata","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata","typeValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata"}}}},"required":["expenseReport"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/expense-report/{expenseReportId}/route.yaml"},"/expense-report/{expenseReportId}/approve":{"post":{"description":"Approve an expense report and initiate payout.","parameters":[{"name":"expenseReportId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reviewedByUserId":{"type":"string","description":"The user ID of the admin approving the expense report."}},"required":["reviewedByUserId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"expenseReport":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicExpenseReportWithMetadata.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicExpenseReportWithMetadata","sourcePath":"entity/ExpenseReport/PublicExpenseReportWithMetadata.yaml","title":"PublicExpenseReportWithMetadata","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata","typeValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata"}}}},"required":["expenseReport"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/expense-report/{expenseReportId}/approve/route.yaml"},"/expense-report/{expenseReportId}/reject":{"post":{"description":"Reject an expense report.","parameters":[{"name":"expenseReportId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reviewedByUserId":{"type":"string","description":"The user ID of the admin rejecting the expense report."},"reason":{"type":"string","description":"The reason for rejecting the expense report."}},"required":["reviewedByUserId","reason"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"expenseReport":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.PublicExpenseReportWithMetadata.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/PublicExpenseReportWithMetadata","sourcePath":"entity/ExpenseReport/PublicExpenseReportWithMetadata.yaml","title":"PublicExpenseReportWithMetadata","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata","typeValue":"models.entity.ExpenseReport.PublicExpenseReportWithMetadata"}}}},"required":["expenseReport"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/expense-report/{expenseReportId}/reject/route.yaml"},"/expense-report/receipt":{"post":{"description":"Upload a receipt image for an expense report. The receipt will be parsed using AI to extract amount, date, and merchant information. Accepts PNG, JPEG, WebP, and PDF formats.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The receipt image file to upload."}}},"encoding":{"file":{"contentType":"image/png, image/jpeg, image/jpg, image/webp, application/pdf"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"The document ID of the uploaded receipt. Use this in `POST /expense-report` to attach the receipt."},"url":{"type":"string","description":"A presigned URL to access the uploaded receipt."},"expiresAt":{"type":"string","format":"date-time","description":"When the presigned URL expires."},"parsedReceipt":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ParsedReceipt.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ParsedReceipt","sourcePath":"entity/ExpenseReport/ParsedReceipt.yaml","title":"ParsedReceipt","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.ExpenseReport.ParsedReceipt","typeValue":"models.entity.ExpenseReport.ParsedReceipt"}}}},"required":["documentId","url","expiresAt","parsedReceipt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/expense-report/receipt/route.yaml"},"/expense-report/bulk-action":{"patch":{"description":"Perform bulk actions on expense reports.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["approve","reject","cancel"],"description":"The action to perform on the expense reports."},"expenseReportIds":{"type":"array","items":{"type":"string"},"description":"List of expense report IDs to act on."},"reviewedByUserId":{"type":"string","description":"Required for `approve` and `reject` actions. The user ID of the admin performing the action."},"cancelledByUserId":{"type":"string","deprecated":true,"description":"Deprecated and ignored. The acting user is derived from your credentials. For the `cancel` action, bearer tokens and user-scoped API keys can cancel only reports submitted by that user; legal-entity API keys must hold the `reimbursements.approve` permission and can cancel any pending report in the legal entity."},"reason":{"type":"string","description":"Required for `reject` action. The reason for rejecting."}},"required":["action","expenseReportIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"successCount":{"type":"integer","description":"The number of expense reports successfully acted on."},"failedIds":{"type":"array","items":{"type":"string"},"description":"IDs of expense reports that failed to be acted on."}},"required":["successCount","failedIds"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/expense-report/bulk-action/route.yaml"},"/expense-report/reimbursement-sources":{"get":{"description":"Get connected bank accounts for a user that can be used as reimbursement payout destinations. Pass the `userId` query parameter to specify which user's bank accounts to retrieve.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"userId","description":"The user ID to get reimbursement sources for. Required.","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/slashfi.models.entity.ExpenseReport.ReimbursementSource.yaml","x-entrypoint":{"virtualPath":"entity/ExpenseReport/ReimbursementSource","sourcePath":"entity/ExpenseReport/ReimbursementSource.yaml","title":"ReimbursementSource","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.ExpenseReport.ReimbursementSource","typeValue":"models.entity.ExpenseReport.ReimbursementSource"}}}}},"required":["data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/expense-report/reimbursement-sources/route.yaml"},"/contact":{"get":{"description":"List all contacts for your legal entity. Contacts represent counterparties (customers, vendors) that can be billed via invoices.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"Filter contacts by legal entity ID. Required if authenticating via bearer token with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:name","description":"Filter contacts by name (partial match).","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Contact","x-entrypoint":{"virtualPath":"schemas/Contact","sourcePath":"schemas/Contact.yaml","title":"Contact","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Create a new contact for your legal entity. Contacts are used as invoice recipients.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the contact."},"recipientType":{"type":"string","description":"The relationship type of the contact.","enum":["contact","vendor"]},"recipientLegalName":{"type":"string","description":"Legal name of the recipient."},"recipientEmail":{"type":"string","description":"Email address of the recipient."},"address":{"$ref":"#/components/schemas/slashfi.models.entity.IAddressModel.yaml","x-entrypoint":{"virtualPath":"entity/IAddressModel","sourcePath":"entity/IAddressModel.yaml","title":"IAddressModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.IAddressModel","typeValue":"models.entity.IAddressModel"}}}},"required":["name","recipientType","recipientLegalName"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"contact":{"$ref":"#/components/schemas/Contact","x-entrypoint":{"virtualPath":"schemas/Contact","sourcePath":"schemas/Contact.yaml","title":"Contact","origin":"./src/publicApi"}}},"required":["contact"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/contact/route.yaml"},"/contact/{contactId}":{"get":{"description":"Get a single contact by ID.","parameters":[{"name":"contactId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"contact":{"$ref":"#/components/schemas/Contact","x-entrypoint":{"virtualPath":"schemas/Contact","sourcePath":"schemas/Contact.yaml","title":"Contact","origin":"./src/publicApi"}}},"required":["contact"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Update a contact's information.","parameters":[{"name":"contactId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","recipientType","recipientLegalName","recipientEmail","address"],"properties":{"name":{"type":"string","description":"Updated display name."},"recipientType":{"type":"string","description":"The relationship type of the contact.","enum":["contact","vendor"]},"recipientLegalName":{"type":"string","description":"Updated legal name."},"recipientEmail":{"type":"string","description":"Updated email address."},"address":{"$ref":"#/components/schemas/slashfi.models.entity.IAddressModel.yaml","x-entrypoint":{"virtualPath":"entity/IAddressModel","sourcePath":"entity/IAddressModel.yaml","title":"IAddressModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.IAddressModel","typeValue":"models.entity.IAddressModel"}}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"contact":{"$ref":"#/components/schemas/Contact","x-entrypoint":{"virtualPath":"schemas/Contact","sourcePath":"schemas/Contact.yaml","title":"Contact","origin":"./src/publicApi"}}},"required":["contact"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/contact/{contactId}/route.yaml"},"/contact/{contactId}/ach-debit-recurring":{"get":{"description":"Check whether a contact has an active recurring ACH debit authorization. When active, the issuer can automatically debit the payer's bank account for future invoices with auto-pull enabled.","parameters":[{"name":"contactId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"hasActiveRecurringAuth":{"type":"boolean","description":"Whether the contact has authorized recurring ACH debits."}},"required":["hasActiveRecurringAuth"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/contact/{contactId}/ach-debit-recurring/route.yaml"},"/customer":{"x-api-key-scopes":["revenue"],"get":{"description":"List all customers for your legal entity. Customers represent billing recipients for invoices.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"Filter customers by legal entity ID. Required if authenticating via bearer token with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:name","description":"Filter customers by name (partial match).","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter customers by status.","in":"query","required":false,"schema":{"type":"string","enum":["active","archived"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Customer","x-entrypoint":{"virtualPath":"schemas/Customer","sourcePath":"schemas/Customer.yaml","title":"Customer","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Create a new customer for your legal entity. Customers are used as invoice recipients.","parameters":[{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the customer."},"email":{"type":"string","description":"Email address of the customer."},"phone":{"type":"string","description":"Phone number of the customer."},"address":{"$ref":"#/components/schemas/slashfi.models.entity.IAddressModel.yaml","x-entrypoint":{"virtualPath":"entity/IAddressModel","sourcePath":"entity/IAddressModel.yaml","title":"IAddressModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.IAddressModel","typeValue":"models.entity.IAddressModel"}}},"customMetadata":{"type":"object","description":"Custom metadata to associate with the customer.","additionalProperties":true}},"required":["name","email"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"customer":{"$ref":"#/components/schemas/Customer","x-entrypoint":{"virtualPath":"schemas/Customer","sourcePath":"schemas/Customer.yaml","title":"Customer","origin":"./src/publicApi"}}},"required":["customer"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/customer/route.yaml"},"/customer/{customerId}":{"x-api-key-scopes":["revenue"],"get":{"description":"Get a single customer by ID.","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"customer":{"$ref":"#/components/schemas/Customer","x-entrypoint":{"virtualPath":"schemas/Customer","sourcePath":"schemas/Customer.yaml","title":"Customer","origin":"./src/publicApi"}}},"required":["customer"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Update a customer's information.","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Updated display name."},"email":{"type":"string","description":"Updated email address."},"phone":{"type":"string","description":"Updated phone number."},"address":{"$ref":"#/components/schemas/slashfi.models.entity.IAddressModel.yaml","x-entrypoint":{"virtualPath":"entity/IAddressModel","sourcePath":"entity/IAddressModel.yaml","title":"IAddressModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.IAddressModel","typeValue":"models.entity.IAddressModel"}}},"customMetadata":{"type":"object","description":"Updated custom metadata.","additionalProperties":true},"status":{"type":"string","description":"Updated status.","enum":["active","archived"]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"customer":{"$ref":"#/components/schemas/Customer","x-entrypoint":{"virtualPath":"schemas/Customer","sourcePath":"schemas/Customer.yaml","title":"Customer","origin":"./src/publicApi"}}},"required":["customer"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/customer/{customerId}/route.yaml"},"/customer/{customerId}/ach-debit-recurring":{"x-api-key-scopes":["revenue"],"get":{"description":"Check whether a customer has an active recurring ACH debit authorization. When active, the issuer can automatically debit the payer's bank account for future invoices with auto-pull enabled.","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"hasActiveRecurringAuth":{"type":"boolean","description":"Whether the customer has authorized recurring ACH debits."}},"required":["hasActiveRecurringAuth"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/customer/{customerId}/ach-debit-recurring/route.yaml"},"/payments/payment-intent":{"x-api-key-scopes":["revenue"],"get":{"description":"List payment intents for your legal entity, newest first. Supports cursor pagination and filtering by status.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter payment intents by status.","in":"query","required":false,"schema":{"type":"string","enum":["pending","processing","succeeded","canceled"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PaymentIntent","x-entrypoint":{"virtualPath":"schemas/PaymentIntent","sourcePath":"schemas/PaymentIntent.yaml","title":"PaymentIntent","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Create a payment intent for collection with the Slash Checkout SDK. When returned, the client secret authorizes the browser to load and confirm only this payment intent and must not be logged or stored in browser persistence.","parameters":[{"name":"X-Idempotency-Key","description":"An optional unique key for this payment intent. Retrying the same request with the same key returns the previously created payment intent.","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"integer","minimum":1,"description":"Payment amount in the smallest unit of `currency`."},"currency":{"type":"string","description":"ISO currency code for the payment. Supported currencies are `usd` and `eur`.","enum":["usd","eur"]},"metadata":{"type":"object","description":"Merchant-defined metadata stored on the payment intent and returned in payment intent responses.","additionalProperties":true},"allowedPaymentMethods":{"type":"array","minItems":1,"uniqueItems":true,"items":{"$ref":"#/components/schemas/slashfi.models.enums.Acquiring.PaymentMethod.yaml","x-entrypoint":{"virtualPath":"enums/Acquiring/PaymentMethod","sourcePath":"enums/Acquiring/PaymentMethod.yaml","title":"PaymentMethod","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.enums.Acquiring.PaymentMethod","typeValue":"models.enums.Acquiring.PaymentMethod"}}},"description":"Payment methods the buyer may use. Omit to allow all supported methods."}},"required":["amount","currency"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/paths.payments.payment-intent._dto.PostResponse","x-entrypoint":{"virtualPath":"paths/payments/payment-intent/_dto/PostResponse","sourcePath":"paths/payments/payment-intent/_dto/PostResponse.yaml","title":"PostResponse","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/payments/payment-intent/route.yaml"},"/payments/payment-intent/{paymentIntentId}":{"x-api-key-scopes":["revenue"],"get":{"description":"Get a single payment intent by ID. Use this to check whether a payment has settled (`status` becomes `succeeded`) as an alternative or reconciliation fallback to webhooks.","parameters":[{"name":"paymentIntentId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaymentIntent","x-entrypoint":{"virtualPath":"schemas/PaymentIntent","sourcePath":"schemas/PaymentIntent.yaml","title":"PaymentIntent","origin":"./src/publicApi"}}]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"description":"Update the fields of a pending payment intent. Payment intents that are processing or in a terminal state cannot be updated.","parameters":[{"name":"paymentIntentId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","minProperties":1,"additionalProperties":false,"properties":{"amount":{"type":"integer","minimum":1,"description":"Payment amount in cents. Must be strictly positive."},"currency":{"type":"string","description":"ISO currency code for the payment.","enum":["usd","eur"]},"metadata":{"type":"object","description":"Merchant-defined metadata to shallow-merge into the existing metadata. Omitted keys remain unchanged. Set a top-level key to null to delete it.","additionalProperties":true},"allowedPaymentMethods":{"type":"array","nullable":true,"minItems":1,"uniqueItems":true,"items":{"$ref":"#/components/schemas/slashfi.models.enums.Acquiring.PaymentMethod.yaml","x-entrypoint":{"virtualPath":"enums/Acquiring/PaymentMethod","sourcePath":"enums/Acquiring/PaymentMethod.yaml","title":"PaymentMethod","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.enums.Acquiring.PaymentMethod","typeValue":"models.enums.Acquiring.PaymentMethod"}}},"description":"Omit to keep the current allowed payment methods, set to null to allow all supported methods, or provide a list to replace them."}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentIntent","x-entrypoint":{"virtualPath":"schemas/PaymentIntent","sourcePath":"schemas/PaymentIntent.yaml","title":"PaymentIntent","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The payment intent is no longer pending and cannot be updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error","x-entrypoint":{"origin":"./src/publicApi","sourcePath":"src/publicApi/paths/payments/payment-intent/{paymentIntentId}/route.yaml","title":"Error","virtualPath":"components/Error","globalImport":true}}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/payments/payment-intent/{paymentIntentId}/route.yaml"},"/payments/refund":{"x-api-key-scopes":["revenue"],"get":{"description":"List refunds for your legal entity, newest first. Supports cursor pagination and filtering by payment intent and status.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:paymentIntentId","description":"Filter refunds by payment intent ID.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter refunds by status.","in":"query","required":false,"schema":{"type":"string","enum":["pending","processing","succeeded","failed"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Refund","x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"description":"Refund all or part of a succeeded payment. Optionally provide an `X-Idempotency-Key` header so retries with the same key and request return the existing refund.","parameters":[{"name":"X-Idempotency-Key","description":"An optional unique key for this refund. Retrying the same request with the same key returns the previously created refund.","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentIntentId":{"type":"string","description":"The payment intent to refund."},"amount":{"type":"integer","minimum":1,"description":"Amount to refund, in the smallest unit of the payment intent's currency. The refund is always issued in the payment intent's currency."}},"required":["paymentIntentId","amount"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Refund","x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"}}]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/payments/refund/route.yaml"},"/payments/refund/{refundId}":{"x-api-key-scopes":["revenue"],"get":{"description":"Get a single refund by ID.","parameters":[{"name":"refundId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Refund","x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"}}]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/payments/refund/{refundId}/route.yaml"},"/checkout-session":{"x-api-key-scopes":["revenue"],"get":{"deprecated":true,"description":"**Deprecated:** Slash hosted checkout has been sunset. This endpoint stays reachable for a few more days but is no longer expected to work, so do not rely on it. Move to payment intents and [Payment Elements](/docs/payments/payment-elements) now\n\nList checkout sessions for your legal entity, newest first. Supports cursor pagination.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CheckoutSession","x-entrypoint":{"virtualPath":"schemas/CheckoutSession","sourcePath":"schemas/CheckoutSession.yaml","title":"CheckoutSession","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"deprecated":true,"description":"**Deprecated:** Slash hosted checkout has been sunset. This endpoint stays reachable for a few more days but is no longer expected to work, so do not rely on it. Move to payment intents and [Payment Elements](/docs/payments/payment-elements) now\n\nCreate a checkout session for collecting a card payment through the Slash hosted checkout. Returns a hosted checkout `url` to embed in your page. Requires an `X-Idempotency-Key` header; retries with the same key return the existing session.","parameters":[{"name":"X-Idempotency-Key","description":"A unique key for this checkout session. Retrying a request with the same key returns the previously created session instead of creating a new one.","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"integer","minimum":1,"description":"Payment amount in cents. Must be strictly positive."},"currency":{"type":"string","description":"ISO currency code for the payment. Supported currencies are `usd` and `eur`.","enum":["usd","eur"]},"customMetadata":{"type":"object","description":"Custom metadata to associate with the checkout session. Echoed on webhook events for this session.","additionalProperties":true},"config":{"type":"object","description":"Configuration for the hosted checkout page. Echoed on reads and editable while the session is open.","properties":{"prefillEmail":{"type":"string","format":"email","description":"Email address to prefill the hosted checkout with."},"prefillName":{"type":"string","description":"Buyer name to prefill the hosted checkout with."},"hideEmail":{"type":"boolean","description":"Hides the email field in the hosted checkout entirely."},"disableEmail":{"type":"boolean","description":"Renders the email field read-only. Pairs with prefillEmail to show a fixed address the buyer cannot edit."},"prefillAddress":{"type":"object","description":"Billing address to prefill the hosted checkout with.","properties":{"name":{"type":"string","description":"Name on the billing address."},"country":{"type":"string","description":"Country for the billing address."},"line1":{"type":"string","description":"First billing address line."},"line2":{"type":"string","description":"Second billing address line."},"city":{"type":"string","description":"City for the billing address."},"state":{"type":"string","description":"State or region for the billing address."},"postalCode":{"type":"string","description":"Postal code for the billing address."}}},"paymentMethods":{"type":"object","description":"Wallet payment methods to enable in the hosted checkout. Card is always enabled. Omitted fields default to enabled.","properties":{"applePay":{"type":"boolean","description":"Whether Apple Pay is enabled. Defaults to true."},"googlePay":{"type":"boolean","description":"Whether Google Pay is enabled. Defaults to true."}}}}},"expiresAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp after which the session can no longer be paid. Defaults to 24 hours after creation. Must be at least 30 minutes and at most 7 days in the future."}},"required":["amount","currency"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"checkoutSession":{"$ref":"#/components/schemas/CheckoutSession","x-entrypoint":{"virtualPath":"schemas/CheckoutSession","sourcePath":"schemas/CheckoutSession.yaml","title":"CheckoutSession","origin":"./src/publicApi"}}},"required":["checkoutSession"]}}}},"400":{"description":"Hosted checkout is unavailable or payment processing is not enabled for the legal entity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerError","x-entrypoint":{"origin":"./src/publicApi","sourcePath":"src/publicApi/paths/checkout-session/route.yaml","title":"PartnerError","virtualPath":"components/PartnerError","globalImport":true}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/checkout-session/route.yaml"},"/checkout-session/{checkoutSessionId}":{"x-api-key-scopes":["revenue"],"get":{"deprecated":true,"description":"**Deprecated:** Slash hosted checkout has been sunset. This endpoint stays reachable for a few more days but is no longer expected to work, so do not rely on it. Move to payment intents and [Payment Elements](/docs/payments/payment-elements) now\n\nGet a single checkout session by ID. Use this to check whether a session's payment has settled (`status` becomes `complete`) as an alternative or reconciliation fallback to webhooks.","parameters":[{"name":"checkoutSessionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"checkoutSession":{"$ref":"#/components/schemas/CheckoutSession","x-entrypoint":{"virtualPath":"schemas/CheckoutSession","sourcePath":"schemas/CheckoutSession.yaml","title":"CheckoutSession","origin":"./src/publicApi"}}},"required":["checkoutSession"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"patch":{"deprecated":true,"description":"**Deprecated:** Slash hosted checkout has been sunset. This endpoint stays reachable for a few more days but is no longer expected to work, so do not rely on it. Move to payment intents and [Payment Elements](/docs/payments/payment-elements) now\n\nUpdate an open checkout session before the buyer starts payment. The session keeps its id and hosted url, so a buyer with the checkout already open picks up a new amount without a new session being minted.","parameters":[{"name":"checkoutSessionId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"integer","minimum":1,"description":"Payment amount in cents. Must be strictly positive."},"expiresAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp after which the session can no longer be paid. Must be at least 30 minutes and at most 7 days in the future."}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"checkoutSession":{"$ref":"#/components/schemas/CheckoutSession","x-entrypoint":{"virtualPath":"schemas/CheckoutSession","sourcePath":"schemas/CheckoutSession.yaml","title":"CheckoutSession","origin":"./src/publicApi"}}},"required":["checkoutSession"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The checkout session can no longer be updated because payment is\nalready in progress or has reached a terminal state.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error","x-entrypoint":{"origin":"./src/publicApi","sourcePath":"src/publicApi/paths/checkout-session/{checkoutSessionId}/route.yaml","title":"Error","virtualPath":"components/Error","globalImport":true}}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/checkout-session/{checkoutSessionId}/route.yaml"},"/payment-intent":{"x-api-key-scopes":["revenue"],"get":{"deprecated":true,"description":"List payment intents for your legal entity, newest first. Supports cursor pagination and filtering by status.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter payment intents by status.","in":"query","required":false,"schema":{"type":"string","enum":["pending","processing","succeeded","failed","canceled"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PaymentIntent","x-entrypoint":{"virtualPath":"schemas/PaymentIntent","sourcePath":"schemas/PaymentIntent.yaml","title":"PaymentIntent","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/payment-intent/route.yaml"},"/payment-intent/{paymentIntentId}":{"x-api-key-scopes":["revenue"],"get":{"deprecated":true,"description":"Get a single payment intent by ID. Use this to check whether a payment has settled (`status` becomes `succeeded`) as an alternative or reconciliation fallback to webhooks.","parameters":[{"name":"paymentIntentId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaymentIntent","x-entrypoint":{"virtualPath":"schemas/PaymentIntent","sourcePath":"schemas/PaymentIntent.yaml","title":"PaymentIntent","origin":"./src/publicApi"}},{"type":"object","properties":{"paymentIntent":{"deprecated":true,"description":"Deprecated compatibility wrapper. Use the flattened payment intent fields on this response instead.","$ref":"#/components/schemas/PaymentIntent","x-entrypoint":{"virtualPath":"schemas/PaymentIntent","sourcePath":"schemas/PaymentIntent.yaml","title":"PaymentIntent","origin":"./src/publicApi"}}},"required":["paymentIntent"]}]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/payment-intent/{paymentIntentId}/route.yaml"},"/refund":{"x-api-key-scopes":["revenue"],"get":{"deprecated":true,"description":"List refunds for your legal entity, newest first. Supports cursor pagination and filtering by payment intent and status.","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:paymentIntentId","description":"Filter refunds by payment intent ID.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter refunds by status.","in":"query","required":false,"schema":{"type":"string","enum":["pending","processing","succeeded","failed"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Refund","x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"post":{"deprecated":true,"description":"Refund all or part of a succeeded payment. Optionally provide an `X-Idempotency-Key` header so retries with the same key and request return the existing refund.","parameters":[{"name":"X-Idempotency-Key","description":"An optional unique key for this refund. Retrying the same request with the same key returns the previously created refund.","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentIntentId":{"type":"string","description":"The payment intent to refund."},"amount":{"type":"integer","minimum":1,"description":"Required amount to refund in cents."}},"required":["paymentIntentId","amount"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Refund","x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"}},{"type":"object","properties":{"refund":{"deprecated":true,"description":"Deprecated compatibility wrapper. Use the flattened refund fields on this response instead.","$ref":"#/components/schemas/Refund","x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"}}},"required":["refund"]}]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/refund/route.yaml"},"/refund/{refundId}":{"x-api-key-scopes":["revenue"],"get":{"deprecated":true,"description":"Get a single refund by ID.","parameters":[{"name":"refundId","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter:legalEntityId","description":"The legal entity ID. Required if authenticating with access to multiple legal entities.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Refund","x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"}},{"type":"object","properties":{"refund":{"deprecated":true,"description":"Deprecated compatibility wrapper. Use the flattened refund fields on this response instead.","$ref":"#/components/schemas/Refund","x-entrypoint":{"virtualPath":"schemas/Refund","sourcePath":"schemas/Refund.yaml","title":"Refund","origin":"./src/publicApi"}}},"required":["refund"]}]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/refund/{refundId}/route.yaml"},"/analytics":{"post":{"x-hidden":true,"description":"Execute a SQL query against the user's data.\n\nThe endpoint provides read-only access to secure views (transactions, cards, accounts, etc.) scoped to the authenticated user's entities.\n\n**SQL Dialect**: Uses Snowflake SQL syntax.\n\n**Data Freshness**: Data may be up to 1 hour behind real-time.\n\nUse `SHOW TABLES` to list available tables and `DESCRIBE <table>` to see columns.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/paths.analytics._dto.PostRequest","x-entrypoint":{"virtualPath":"paths/analytics/_dto/PostRequest","sourcePath":"paths/analytics/_dto/PostRequest.yaml","title":"PostRequest","origin":"./src/publicApi"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/paths.analytics._dto.PostResponse","x-entrypoint":{"virtualPath":"paths/analytics/_dto/PostResponse","sourcePath":"paths/analytics/_dto/PostResponse.yaml","title":"PostResponse","origin":"./src/publicApi"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/analytics/route.yaml"},"/crypto/offramp":{"post":{"summary":"Retrieve a list of crypto offramp options","tags":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"virtualAccountId":{"type":"string","description":"The id of the virtual account to offramp funds to."},"paymentRail":{"type":"string","enum":["ach","wire"]},"currency":{"type":"string","enum":["usdt","usdc"]}},"required":["virtualAccountId","paymentRail","currency"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"wallet":{"$ref":"#/components/schemas/Crypto.Wallet","x-entrypoint":{"virtualPath":"schemas/Crypto/Wallet","sourcePath":"schemas/Crypto/Wallet.yaml","title":"Wallet","origin":"./src/publicApi"}},"addresses":{"type":"array","items":{"$ref":"#/components/schemas/Crypto.Address","x-entrypoint":{"virtualPath":"schemas/Crypto/Address","sourcePath":"schemas/Crypto/Address.yaml","title":"Address","origin":"./src/publicApi"}}}},"required":["wallet","addresses"]}}}},"400":{"description":"NOT ENROLLED","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["NOT_ENROLLED"]},"message":{"type":"string","enum":["You are not enrolled in crypto offramping. You can enroll by logging into your account, clicking “Move Money”, “Add Funds”, and selecting “USDC / USDT”."]}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]}]},"x-reference-path":"paths/crypto/offramp/route.yaml"},"/tokens/prices":{"get":{"summary":"Get Token Prices","description":"Returns real-time prices for major crypto tokens. This endpoint is publicly accessible without authentication.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Token symbol (e.g., BTC, ETH, SOL)"},"price":{"type":"object","properties":{"currency":{"type":"string","enum":["usd"],"description":"Currency code"},"value":{"type":"string","description":"Price value as a string rounded to 2 decimal places (e.g., \"178.14\")"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO datetime when the price was last updated"}},"required":["currency","value","lastUpdatedAt"]}},"required":["symbol","price"]}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]},"x-reference-path":"paths/tokens/prices/route.yaml"},"/task":{"get":{"description":"List tasks visible to the calling principal. User-scoped callers (OAuth bearer, user-scoped api keys) see tasks they're assigned to; entity-scoped api keys see all tasks in the legal entity the key is bound to. Each row carries an `actions` list describing what the caller can do on the task right now — an empty list means read-only. Supports filtering by type, status, and type-specific attributes via filter:attr.\n","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"type":"string"},"description":"A cursor string to fetch the next page of results","x-reference-path":"schemas/Pagination/CursorParameter.yaml"},{"name":"filter:type","description":"Filter by task type (e.g., payment_approval).","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter:status","description":"Filter by task status.","in":"query","required":false,"schema":{"type":"string","enum":["action_required","pending","completed","rejected","expired","canceled"]}},{"name":"filter:attr","description":"Type-specific attribute filters. Format: filter:attr[field]=value for equality, or filter:attr[field][op]=value for other operators (gte, lte, gt, lt, in, contains). Use GET /task/schema to discover available fields and operators per type.\n","in":"query","required":false,"style":"deepObject","schema":{"type":"object","additionalProperties":true}},{"name":"sort","description":"Sort field. Default is by timestamp descending.","in":"query","required":false,"schema":{"type":"string","enum":["timestamp","status","type"]}},{"name":"sortDirection","description":"Sort direction. Defaults to DESC.","in":"query","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/paths.task._dto.TaskResponse","x-entrypoint":{"virtualPath":"entity/Task/ITaskWithActionsModel","sourcePath":"entity/Task/ITaskWithActionsModel.yaml","title":"ITaskWithActionsModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Task.ITaskWithActionsModel","typeValue":"models.entity.Task.ITaskWithActionsModel"}}}},"metadata":{"$ref":"#/components/schemas/Pagination.PaginationResponse","x-entrypoint":{"virtualPath":"schemas/Pagination/PaginationResponse","sourcePath":"schemas/Pagination/PaginationResponse.yaml","title":"PaginationResponse","origin":"./src/publicApi"}}},"required":["items"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/task/route.yaml"},"/task/schema":{"get":{"description":"List registered task types with their attribute schemas, filterable fields, supported operators, and available actions. Use this to discover what can be filtered on via filter:attr.","parameters":[{"name":"filter:type","description":"Filter to a specific task type.","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The task type key."},"attributes":{"type":"object","description":"Attribute definitions keyed by field name.","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"The attribute data type.","enum":["string","number","boolean","enum","money","date","ref","refs"]},"options":{"type":"array","items":{"type":"string"},"description":"Valid values (for enum type only)."},"operators":{"type":"array","items":{"type":"string"},"description":"Supported filter operators for this field type."}},"required":["type","operators"]}},"actions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"}},"required":["key","label"]}}},"required":["type","attributes","actions"]}}},"required":["schemas"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/task/schema/route.yaml"},"/task/{taskId}":{"get":{"description":"Get a single task by ID.","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"task":{"$ref":"#/components/schemas/paths.task._dto.TaskResponse","x-entrypoint":{"virtualPath":"entity/Task/ITaskWithActionsModel","sourcePath":"entity/Task/ITaskWithActionsModel.yaml","title":"ITaskWithActionsModel","origin":"/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas","globalImport":true,"typescript":{"importPath":"import  * as models from '@slashfi/models';","symbolValue":"models.entity.Task.ITaskWithActionsModel","typeValue":"models.entity.Task.ITaskWithActionsModel"}}}},"required":["task"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/task/{taskId}/route.yaml"},"/task/{taskId}/act":{"post":{"description":"Execute an action on a task (e.g., approve, reject). Available actions depend on the task type — use GET /task/schema to discover them.","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","description":"The action key to execute (e.g., approve, reject)."},"payload":{"type":"object","additionalProperties":true,"description":"Optional action-specific payload. Schema is defined per-action by the task definition and exposed via GET /task/schema."}},"required":["action"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"TooManyRequests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"api_key":[]},{"bearer":[]}]},"x-reference-path":"paths/task/{taskId}/act/route.yaml"}}}