squarefi-bff-api-module 1.36.34 → 1.36.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1529,6 +1529,175 @@ export interface paths {
1529
1529
  patch?: never;
1530
1530
  trace?: never;
1531
1531
  };
1532
+ "/api/issuing/cardholder-documents": {
1533
+ parameters: {
1534
+ query?: never;
1535
+ header?: never;
1536
+ path?: never;
1537
+ cookie?: never;
1538
+ };
1539
+ get?: never;
1540
+ put?: never;
1541
+ /**
1542
+ * Upload KYC document files
1543
+ * @description Uploads KYC files against a wallet via `multipart/form-data`, with no
1544
+ * cardholder involved. The form field name is the document type
1545
+ * (`selfie`, `gov_id_front`, `gov_id_back`); one file per type, 5MB max
1546
+ * each, formats png/jpeg/pdf.
1547
+ *
1548
+ * Send one file per request to get per-file progress and retry a single
1549
+ * file, or send several at once. The response returns an `id` per file;
1550
+ * pass those to `POST /api/issuing/cardholders/{cardholder_id}/documents`
1551
+ * to attach them.
1552
+ *
1553
+ * An upload that is never attached is deleted by a cleanup sweep.
1554
+ *
1555
+ * **Authentication**: x-api-key header required
1556
+ *
1557
+ */
1558
+ post: {
1559
+ parameters: {
1560
+ query?: {
1561
+ /** @description Wallet ID (required for non-wallet-bound API keys) */
1562
+ wallet_id?: string;
1563
+ };
1564
+ header?: never;
1565
+ path?: never;
1566
+ cookie?: never;
1567
+ };
1568
+ requestBody: {
1569
+ content: {
1570
+ "multipart/form-data": {
1571
+ /**
1572
+ * Format: binary
1573
+ * @description Identity photo / selfie
1574
+ */
1575
+ selfie?: string;
1576
+ /**
1577
+ * Format: binary
1578
+ * @description Government ID, front side
1579
+ */
1580
+ gov_id_front?: string;
1581
+ /**
1582
+ * Format: binary
1583
+ * @description Government ID, back side
1584
+ */
1585
+ gov_id_back?: string;
1586
+ };
1587
+ };
1588
+ };
1589
+ responses: {
1590
+ /** @description Files stored; returns one upload per file */
1591
+ 201: {
1592
+ headers: {
1593
+ [name: string]: unknown;
1594
+ };
1595
+ content: {
1596
+ "application/json": {
1597
+ /** @example true */
1598
+ success?: boolean;
1599
+ /** @example Documents uploaded successfully */
1600
+ message?: string;
1601
+ data?: {
1602
+ documents?: components["schemas"]["CardholderDocumentUpload"][];
1603
+ };
1604
+ };
1605
+ };
1606
+ };
1607
+ /** @description No file parts, unsupported field/type, or a file exceeds 5MB */
1608
+ 400: {
1609
+ headers: {
1610
+ [name: string]: unknown;
1611
+ };
1612
+ content: {
1613
+ "application/json": components["schemas"]["ApiErrorResponse"];
1614
+ };
1615
+ };
1616
+ /** @description Access denied to this wallet */
1617
+ 403: {
1618
+ headers: {
1619
+ [name: string]: unknown;
1620
+ };
1621
+ content: {
1622
+ "application/json": components["schemas"]["ApiErrorResponse"];
1623
+ };
1624
+ };
1625
+ };
1626
+ };
1627
+ delete?: never;
1628
+ options?: never;
1629
+ head?: never;
1630
+ patch?: never;
1631
+ trace?: never;
1632
+ };
1633
+ "/api/issuing/cardholder-documents/{document_id}": {
1634
+ parameters: {
1635
+ query?: never;
1636
+ header?: never;
1637
+ path?: never;
1638
+ cookie?: never;
1639
+ };
1640
+ get?: never;
1641
+ put?: never;
1642
+ post?: never;
1643
+ /**
1644
+ * Discard an uploaded file
1645
+ * @description Deletes an upload that has not been attached to a cardholder yet — the
1646
+ * "remove this file" action of an upload form. Attached documents are
1647
+ * refused with 409; replace them by attaching a new file of the same type
1648
+ * instead.
1649
+ *
1650
+ * **Authentication**: x-api-key header required
1651
+ *
1652
+ */
1653
+ delete: {
1654
+ parameters: {
1655
+ query?: {
1656
+ /** @description Wallet ID (required for non-wallet-bound API keys) */
1657
+ wallet_id?: string;
1658
+ };
1659
+ header?: never;
1660
+ path: {
1661
+ document_id: string;
1662
+ };
1663
+ cookie?: never;
1664
+ };
1665
+ requestBody?: never;
1666
+ responses: {
1667
+ /** @description Upload discarded */
1668
+ 200: {
1669
+ headers: {
1670
+ [name: string]: unknown;
1671
+ };
1672
+ content: {
1673
+ "application/json": components["schemas"]["ApiSuccessResponse"];
1674
+ };
1675
+ };
1676
+ /** @description Upload not found for this wallet */
1677
+ 404: {
1678
+ headers: {
1679
+ [name: string]: unknown;
1680
+ };
1681
+ content: {
1682
+ "application/json": components["schemas"]["ApiErrorResponse"];
1683
+ };
1684
+ };
1685
+ /** @description Upload is already attached to a cardholder */
1686
+ 409: {
1687
+ headers: {
1688
+ [name: string]: unknown;
1689
+ };
1690
+ content: {
1691
+ "application/json": components["schemas"]["ApiErrorResponse"];
1692
+ };
1693
+ };
1694
+ };
1695
+ };
1696
+ options?: never;
1697
+ head?: never;
1698
+ patch?: never;
1699
+ trace?: never;
1700
+ };
1532
1701
  "/api/issuing/cardholders": {
1533
1702
  parameters: {
1534
1703
  query?: never;
@@ -1610,9 +1779,18 @@ export interface paths {
1610
1779
  };
1611
1780
  put?: never;
1612
1781
  /**
1613
- * Create cardholder
1614
- * @description Creates a new cardholder AND registers them at the vendor in one request.
1615
- * The `vendor_id` is resolved automatically from `issuing_program_id`.
1782
+ * Create cardholder draft
1783
+ * @description Creates a cardholder in `DRAFT` status. **No vendor is contacted here** — this is
1784
+ * step 1 of 3. The `vendor_id` is resolved automatically from `issuing_program_id`.
1785
+ *
1786
+ * **The three steps**:
1787
+ * 1. `POST /api/issuing/cardholders` — create the draft (this endpoint).
1788
+ * 2. `POST /api/issuing/cardholders/{cardholder_id}/documents` — upload the KYC files
1789
+ * as `multipart/form-data`.
1790
+ * 3. `POST /api/issuing/cardholders/{cardholder_id}/submit` — register at the vendor;
1791
+ * the cardholder becomes `ACTIVE`.
1792
+ *
1793
+ * A draft cannot hold a card: card creation refuses anything that is not `ACTIVE`.
1616
1794
  *
1617
1795
  * **Authentication**: x-api-key header required
1618
1796
  *
@@ -1621,6 +1799,13 @@ export interface paths {
1621
1799
  *
1622
1800
  * **Uniqueness**: `email + wallet_id + issuing_program_id` must be unique (soft-deleted records excluded).
1623
1801
  *
1802
+ * **Two modes**:
1803
+ * - `user_data_id` mode: personal data and KYC documents are seeded from an existing
1804
+ * verified user (requires an approved identity/face verification and a Sumsub applicant).
1805
+ * Manual fields only fill gaps. The Sumsub files are attached to the draft
1806
+ * immediately, so step 2 is usually unnecessary in this mode.
1807
+ * - Manual mode: `first_name`, `last_name`, `email`, `phone` are required.
1808
+ *
1624
1809
  * **Important**:
1625
1810
  * - For API key authentication: The wallet_id is determined by the API key itself (if the key is bound to a wallet)
1626
1811
  * - You cannot create cardholders for a wallet different from the one bound to your API key
@@ -1637,49 +1822,83 @@ export interface paths {
1637
1822
  content: {
1638
1823
  "application/json": {
1639
1824
  /**
1640
- * @description Cardholder's first name
1825
+ * Format: uuid
1826
+ * @description Seed personal data + KYC documents from this verified user (user_data.uuid).
1827
+ * When set, personal fields become optional and only fill gaps.
1828
+ *
1829
+ * @example c3d4e5f6-a7b8-9012-cdef-123456789012
1830
+ */
1831
+ user_data_id?: string;
1832
+ /**
1833
+ * @description Cardholder's first name (required in manual mode)
1641
1834
  * @example John
1642
1835
  */
1643
- first_name: string;
1836
+ first_name?: string;
1644
1837
  /**
1645
- * @description Cardholder's last name
1838
+ * @description Cardholder's last name (required in manual mode)
1646
1839
  * @example Doe
1647
1840
  */
1648
- last_name: string;
1841
+ last_name?: string;
1649
1842
  /**
1650
1843
  * Format: email
1651
- * @description Cardholder's email address
1844
+ * @description Cardholder's email address (required in manual mode)
1652
1845
  * @example john.doe@example.com
1653
1846
  */
1654
- email: string;
1847
+ email?: string;
1655
1848
  /**
1656
- * @description Cardholder's phone number in E.164 format (+ followed by 1-15 digits)
1849
+ * @description Cardholder's phone number in E.164 format (required in manual mode)
1657
1850
  * @example +14155552671
1658
1851
  */
1659
- phone: string;
1852
+ phone?: string;
1660
1853
  /**
1661
1854
  * Format: uuid
1662
1855
  * @description Issuing program ID (required). vendor_id is resolved from the program automatically.
1663
1856
  * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
1664
1857
  */
1665
1858
  issuing_program_id: string;
1666
- /**
1667
- * Format: uuid
1668
- * @description Sub-account ID (required for balance card vendors)
1669
- * @example b2c3d4e5-f6a7-8901-bcde-f12345678901
1670
- */
1671
- sub_account_id?: string;
1672
1859
  /**
1673
1860
  * Format: date
1674
- * @description Cardholder's date of birth
1861
+ * @description Cardholder's date of birth (YYYY-MM-DD)
1675
1862
  * @example 1990-01-15
1676
1863
  */
1677
- date_of_birth?: string;
1864
+ birth_date?: string;
1678
1865
  /**
1679
1866
  * @description Cardholder's nationality as ISO 3166-1 alpha-3 country code
1680
1867
  * @example USA
1681
1868
  */
1682
1869
  nationality?: string;
1870
+ /**
1871
+ * @description Cardholder's gender (required by some vendors)
1872
+ * @enum {string}
1873
+ */
1874
+ gender?: "M" | "F";
1875
+ /**
1876
+ * @description Relationship of the cardholder to the account holder
1877
+ * @enum {string}
1878
+ */
1879
+ cardholder_relationship?: "EMPLOYEE" | "CONTRACTOR";
1880
+ /**
1881
+ * @description Identity document type (KYC vendors)
1882
+ * @enum {string}
1883
+ */
1884
+ gov_id_type?: "passport" | "id_card" | "driving_license";
1885
+ /** @description Identity document number */
1886
+ gov_id_number?: string;
1887
+ /**
1888
+ * @description Issuing country of the identity document (2-3 letter code)
1889
+ * @example USA
1890
+ */
1891
+ gov_id_country?: string;
1892
+ /**
1893
+ * Format: date
1894
+ * @description Identity document issue date (YYYY-MM-DD)
1895
+ */
1896
+ gov_id_issuance_date?: string;
1897
+ /**
1898
+ * Format: date
1899
+ * @description Identity document expiry date (YYYY-MM-DD)
1900
+ */
1901
+ gov_id_expiration_date?: string;
1683
1902
  /** @description Cardholder's address */
1684
1903
  address?: {
1685
1904
  /**
@@ -1705,7 +1924,7 @@ export interface paths {
1705
1924
  };
1706
1925
  };
1707
1926
  responses: {
1708
- /** @description Cardholder created and registered at vendor successfully */
1927
+ /** @description Cardholder draft created (status DRAFT, not yet registered at the vendor) */
1709
1928
  201: {
1710
1929
  headers: {
1711
1930
  [name: string]: unknown;
@@ -1715,7 +1934,7 @@ export interface paths {
1715
1934
  /** @example true */
1716
1935
  success?: boolean;
1717
1936
  data?: components["schemas"]["Cardholder"];
1718
- /** @example Cardholder created successfully */
1937
+ /** @example Cardholder draft created successfully */
1719
1938
  message?: string;
1720
1939
  };
1721
1940
  };
@@ -1914,6 +2133,219 @@ export interface paths {
1914
2133
  patch?: never;
1915
2134
  trace?: never;
1916
2135
  };
2136
+ "/api/issuing/cardholders/{cardholder_id}/documents": {
2137
+ parameters: {
2138
+ query?: never;
2139
+ header?: never;
2140
+ path?: never;
2141
+ cookie?: never;
2142
+ };
2143
+ get?: never;
2144
+ put?: never;
2145
+ /**
2146
+ * Attach uploaded KYC documents to a cardholder
2147
+ * @description Attaches files that were already uploaded via
2148
+ * `POST /api/issuing/cardholder-documents` to this cardholder. The body
2149
+ * carries upload ids only — no file bytes travel here.
2150
+ *
2151
+ * A document of a type the cardholder already has replaces the previous
2152
+ * one, and the superseded file is deleted. An upload can only be attached
2153
+ * once, and only to a cardholder in the same wallet it was uploaded for.
2154
+ *
2155
+ * Documents are not pushed to the vendor here; they travel at
2156
+ * `POST /cardholders/{cardholder_id}/submit`.
2157
+ *
2158
+ * **Authentication**: x-api-key header required
2159
+ *
2160
+ * **Access Control**: Cardholder must belong to the authenticated wallet
2161
+ *
2162
+ */
2163
+ post: {
2164
+ parameters: {
2165
+ query?: {
2166
+ /** @description Wallet ID (required for non-wallet-bound API keys) */
2167
+ wallet_id?: string;
2168
+ };
2169
+ header?: never;
2170
+ path: {
2171
+ cardholder_id: string;
2172
+ };
2173
+ cookie?: never;
2174
+ };
2175
+ requestBody: {
2176
+ content: {
2177
+ "application/json": {
2178
+ /** @description Ids returned by the upload endpoint */
2179
+ document_ids: string[];
2180
+ };
2181
+ };
2182
+ };
2183
+ responses: {
2184
+ /** @description Documents attached; returns the updated cardholder */
2185
+ 200: {
2186
+ headers: {
2187
+ [name: string]: unknown;
2188
+ };
2189
+ content: {
2190
+ "application/json": {
2191
+ /** @example true */
2192
+ success?: boolean;
2193
+ /** @example Documents attached successfully */
2194
+ message?: string;
2195
+ data?: components["schemas"]["Cardholder"];
2196
+ };
2197
+ };
2198
+ };
2199
+ /** @description document_ids missing, empty, or listing two files of one type */
2200
+ 400: {
2201
+ headers: {
2202
+ [name: string]: unknown;
2203
+ };
2204
+ content: {
2205
+ "application/json": components["schemas"]["ApiErrorResponse"];
2206
+ };
2207
+ };
2208
+ /** @description Access denied to this cardholder */
2209
+ 403: {
2210
+ headers: {
2211
+ [name: string]: unknown;
2212
+ };
2213
+ content: {
2214
+ "application/json": components["schemas"]["ApiErrorResponse"];
2215
+ };
2216
+ };
2217
+ /** @description Cardholder or upload id not found */
2218
+ 404: {
2219
+ headers: {
2220
+ [name: string]: unknown;
2221
+ };
2222
+ content: {
2223
+ "application/json": components["schemas"]["ApiErrorResponse"];
2224
+ };
2225
+ };
2226
+ /** @description An upload is already attached to a cardholder */
2227
+ 409: {
2228
+ headers: {
2229
+ [name: string]: unknown;
2230
+ };
2231
+ content: {
2232
+ "application/json": components["schemas"]["ApiErrorResponse"];
2233
+ };
2234
+ };
2235
+ };
2236
+ };
2237
+ delete?: never;
2238
+ options?: never;
2239
+ head?: never;
2240
+ patch?: never;
2241
+ trace?: never;
2242
+ };
2243
+ "/api/issuing/cardholders/{cardholder_id}/submit": {
2244
+ parameters: {
2245
+ query?: never;
2246
+ header?: never;
2247
+ path?: never;
2248
+ cookie?: never;
2249
+ };
2250
+ get?: never;
2251
+ put?: never;
2252
+ /**
2253
+ * Submit cardholder draft
2254
+ * @description Registers a `DRAFT` cardholder at the vendor and flips it to `ACTIVE` — step 3 of the
2255
+ * create flow. The vendor is resolved from the cardholder's issuing program.
2256
+ *
2257
+ * **Dossier check**: refused with `400 CARDHOLDER_SUBMISSION_INCOMPLETE` while the
2258
+ * program's KYC level is not met; `error.details.missing` lists every field and file
2259
+ * still needed (e.g. `gender`, `documents: selfie`).
2260
+ *
2261
+ * **Retryable**: a failed submit leaves the draft untouched — complete the dossier and
2262
+ * call this endpoint again.
2263
+ *
2264
+ * **Authentication**: x-api-key header required
2265
+ *
2266
+ */
2267
+ post: {
2268
+ parameters: {
2269
+ query?: {
2270
+ /** @description Wallet ID for access validation (implied by a wallet-bound API key) */
2271
+ wallet_id?: string;
2272
+ };
2273
+ header?: never;
2274
+ path: {
2275
+ cardholder_id: string;
2276
+ };
2277
+ cookie?: never;
2278
+ };
2279
+ requestBody?: never;
2280
+ responses: {
2281
+ /** @description Cardholder registered at the vendor and activated */
2282
+ 200: {
2283
+ headers: {
2284
+ [name: string]: unknown;
2285
+ };
2286
+ content: {
2287
+ "application/json": {
2288
+ /** @example true */
2289
+ success?: boolean;
2290
+ /** @example Cardholder submitted successfully */
2291
+ message?: string;
2292
+ data?: components["schemas"]["Cardholder"];
2293
+ };
2294
+ };
2295
+ };
2296
+ /** @description KYC dossier incomplete, or the program has no vendor configured */
2297
+ 400: {
2298
+ headers: {
2299
+ [name: string]: unknown;
2300
+ };
2301
+ content: {
2302
+ "application/json": components["schemas"]["ApiErrorResponse"];
2303
+ };
2304
+ };
2305
+ /** @description Access denied to this cardholder */
2306
+ 403: {
2307
+ headers: {
2308
+ [name: string]: unknown;
2309
+ };
2310
+ content: {
2311
+ "application/json": components["schemas"]["ApiErrorResponse"];
2312
+ };
2313
+ };
2314
+ /** @description Cardholder not found */
2315
+ 404: {
2316
+ headers: {
2317
+ [name: string]: unknown;
2318
+ };
2319
+ content: {
2320
+ "application/json": components["schemas"]["ApiErrorResponse"];
2321
+ };
2322
+ };
2323
+ /** @description Cardholder is not a draft (already submitted) */
2324
+ 409: {
2325
+ headers: {
2326
+ [name: string]: unknown;
2327
+ };
2328
+ content: {
2329
+ "application/json": components["schemas"]["ApiErrorResponse"];
2330
+ };
2331
+ };
2332
+ /** @description Vendor rejected the registration; the draft is kept */
2333
+ 502: {
2334
+ headers: {
2335
+ [name: string]: unknown;
2336
+ };
2337
+ content: {
2338
+ "application/json": components["schemas"]["ApiErrorResponse"];
2339
+ };
2340
+ };
2341
+ };
2342
+ };
2343
+ delete?: never;
2344
+ options?: never;
2345
+ head?: never;
2346
+ patch?: never;
2347
+ trace?: never;
2348
+ };
1917
2349
  "/api/issuing/cards": {
1918
2350
  parameters: {
1919
2351
  query?: never;
@@ -3677,6 +4109,30 @@ export interface paths {
3677
4109
  "application/json": components["schemas"]["ApiErrorResponse"];
3678
4110
  };
3679
4111
  };
4112
+ /** @description Conflict - the card provider refused the top-up during the pre-flight
4113
+ * allowance check (no order was created, the wallet was not debited):
4114
+ * - `TOPUP_NOT_ALLOWED` — provider does not allow a top-up for this account
4115
+ * - `TOPUP_AMOUNT_EXCEEDS_VENDOR_LIMIT` — amount is above the provider's cap
4116
+ * */
4117
+ 409: {
4118
+ headers: {
4119
+ [name: string]: unknown;
4120
+ };
4121
+ content: {
4122
+ "application/json": components["schemas"]["ApiErrorResponse"];
4123
+ };
4124
+ };
4125
+ /** @description `TOPUP_CHECK_UNAVAILABLE` — the provider allowance check could not be
4126
+ * completed, so the top-up was refused rather than attempted. Retry later.
4127
+ * */
4128
+ 503: {
4129
+ headers: {
4130
+ [name: string]: unknown;
4131
+ };
4132
+ content: {
4133
+ "application/json": components["schemas"]["ApiErrorResponse"];
4134
+ };
4135
+ };
3680
4136
  };
3681
4137
  };
3682
4138
  delete?: never;
@@ -6235,6 +6691,10 @@ export interface paths {
6235
6691
  *
6236
6692
  * **Important**: This endpoint only works with API keys that are bound to a specific wallet.
6237
6693
  *
6694
+ * **Date range**: use `from_date` / `to_date` to request transactions for a specific period.
6695
+ * Both bounds are inclusive and are applied to the transaction `created_at` timestamp;
6696
+ * either one may be supplied on its own for an open-ended range.
6697
+ *
6238
6698
  */
6239
6699
  get: {
6240
6700
  parameters: {
@@ -6247,10 +6707,42 @@ export interface paths {
6247
6707
  sort_by?: string;
6248
6708
  /** @description Sort direction */
6249
6709
  sort_order?: "ASC" | "DESC";
6250
- /** @description JSON string of filters to apply.
6251
- * Example: [{"status":"complete"},{"type":"deposit"}]
6710
+ /** @description Filter by status (comma-separated for multi-select — new, pending, processing, complete, canceled, failed) */
6711
+ status?: string;
6712
+ /** @description Transaction type (direction) */
6713
+ type?: "deposit" | "withdrawal";
6714
+ /** @description Transaction method filter */
6715
+ method?: "p2p" | "crypto" | "bank_transfer" | "exchange" | "sbp" | "internal_fiat";
6716
+ /** @description Transaction subtype (e.g. `DEPOSIT_CRYPTO_EXTERNAL`, `CARD_PROVIDER_DEPOSIT`) */
6717
+ record_type?: string;
6718
+ /** @description Filter by sender or recipient address (matches `from` OR `to` fields) */
6719
+ address?: string;
6720
+ /** @description Start of the `created_at` range (inclusive).
6721
+ * Accepts a date (`2026-04-08`) or a full ISO 8601 timestamp (`2026-04-08T00:00:00Z`).
6252
6722
  * */
6253
- filters?: string;
6723
+ from_date?: string;
6724
+ /** @description End of the `created_at` range (inclusive).
6725
+ * Accepts a date (`2026-04-08`) or a full ISO 8601 timestamp (`2026-04-08T23:59:59Z`).
6726
+ * */
6727
+ to_date?: string;
6728
+ /**
6729
+ * @deprecated
6730
+ * @description Deprecated alias for `from_date`. Ignored when `from_date` is present.
6731
+ */
6732
+ from_created_at?: string;
6733
+ /**
6734
+ * @deprecated
6735
+ * @description Deprecated alias for `to_date`. Ignored when `to_date` is present.
6736
+ */
6737
+ to_created_at?: string;
6738
+ /** @description Filter by currency UUID */
6739
+ currency_uuid?: string;
6740
+ /** @description Filter by billing currency from transaction meta */
6741
+ meta_billing_currency?: string;
6742
+ /** @description Filter by transaction currency from transaction meta */
6743
+ meta_transaction_currency?: string;
6744
+ /** @description When false (default), dust transactions below threshold are hidden */
6745
+ show_low_balance?: boolean;
6254
6746
  };
6255
6747
  header?: never;
6256
6748
  path?: never;
@@ -6274,7 +6766,7 @@ export interface paths {
6274
6766
  };
6275
6767
  /** @description Bad request - One of the following:
6276
6768
  * - API key is not bound to a wallet
6277
- * - Invalid filters format
6769
+ * - Invalid filter value (unknown `status`/`type`/`method`, malformed `from_date`/`to_date`)
6278
6770
  * */
6279
6771
  400: {
6280
6772
  headers: {
@@ -6687,6 +7179,30 @@ export interface components {
6687
7179
  issuing_program_id?: string;
6688
7180
  address?: components["schemas"]["CardholderAddress"];
6689
7181
  };
7182
+ /** @description An uploaded KYC file, addressable before it is attached to a cardholder */
7183
+ CardholderDocumentUpload: {
7184
+ /**
7185
+ * Format: uuid
7186
+ * @description Pass this to the attach endpoint
7187
+ */
7188
+ id?: string;
7189
+ /**
7190
+ * @description Document type, taken from the multipart field name
7191
+ * @enum {string}
7192
+ */
7193
+ type?: "selfie" | "gov_id_front" | "gov_id_back";
7194
+ /** @description Original file name, when the client sent one */
7195
+ filename?: string | null;
7196
+ /** @example image/png */
7197
+ content_type?: string;
7198
+ /**
7199
+ * @description File size in bytes
7200
+ * @example 284512
7201
+ */
7202
+ size?: number;
7203
+ /** Format: date-time */
7204
+ created_at?: string;
7205
+ };
6690
7206
  /** @description Sub-account object */
6691
7207
  IssuingSubAccount: {
6692
7208
  /**