kard-financial-sdk 0.0.82__py3-none-any.whl

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.
Files changed (302) hide show
  1. kard/__init__.py +579 -0
  2. kard/auth/__init__.py +34 -0
  3. kard/auth/client.py +121 -0
  4. kard/auth/raw_client.py +108 -0
  5. kard/auth/types/__init__.py +34 -0
  6. kard/auth/types/token_response.py +25 -0
  7. kard/client.py +416 -0
  8. kard/commons/__init__.py +120 -0
  9. kard/commons/errors/__init__.py +44 -0
  10. kard/commons/errors/conflict_error.py +11 -0
  11. kard/commons/errors/does_not_exist_error.py +11 -0
  12. kard/commons/errors/internal_server_error.py +11 -0
  13. kard/commons/errors/invalid_request.py +11 -0
  14. kard/commons/errors/unauthorized_error.py +11 -0
  15. kard/commons/types/__init__.py +107 -0
  16. kard/commons/types/category_option.py +26 -0
  17. kard/commons/types/commission_type.py +5 -0
  18. kard/commons/types/commission_value.py +28 -0
  19. kard/commons/types/commission_value_type.py +5 -0
  20. kard/commons/types/empty_object.py +17 -0
  21. kard/commons/types/enrolled_rewards_type.py +5 -0
  22. kard/commons/types/error_object.py +43 -0
  23. kard/commons/types/error_response.py +20 -0
  24. kard/commons/types/error_source.py +32 -0
  25. kard/commons/types/job.py +24 -0
  26. kard/commons/types/job_response.py +27 -0
  27. kard/commons/types/job_status.py +5 -0
  28. kard/commons/types/links.py +27 -0
  29. kard/commons/types/mongo_id.py +3 -0
  30. kard/commons/types/notification_type.py +19 -0
  31. kard/commons/types/organization_id.py +3 -0
  32. kard/commons/types/purchase_channel.py +5 -0
  33. kard/commons/types/relationship_data.py +24 -0
  34. kard/commons/types/relationship_multiple.py +20 -0
  35. kard/commons/types/relationship_single.py +20 -0
  36. kard/commons/types/resource_type.py +3 -0
  37. kard/commons/types/state.py +68 -0
  38. kard/commons/types/subscription_id.py +3 -0
  39. kard/commons/types/user_id.py +3 -0
  40. kard/core/__init__.py +105 -0
  41. kard/core/api_error.py +23 -0
  42. kard/core/client_wrapper.py +97 -0
  43. kard/core/datetime_utils.py +28 -0
  44. kard/core/file.py +67 -0
  45. kard/core/force_multipart.py +18 -0
  46. kard/core/http_client.py +613 -0
  47. kard/core/http_response.py +55 -0
  48. kard/core/http_sse/__init__.py +42 -0
  49. kard/core/http_sse/_api.py +112 -0
  50. kard/core/http_sse/_decoders.py +61 -0
  51. kard/core/http_sse/_exceptions.py +7 -0
  52. kard/core/http_sse/_models.py +17 -0
  53. kard/core/jsonable_encoder.py +100 -0
  54. kard/core/oauth_token_provider.py +73 -0
  55. kard/core/pydantic_utilities.py +260 -0
  56. kard/core/query_encoder.py +58 -0
  57. kard/core/remove_none_from_dict.py +11 -0
  58. kard/core/request_options.py +35 -0
  59. kard/core/serialization.py +276 -0
  60. kard/environment.py +8 -0
  61. kard/files/__init__.py +58 -0
  62. kard/files/client.py +213 -0
  63. kard/files/errors/__init__.py +34 -0
  64. kard/files/errors/forbidden_error.py +11 -0
  65. kard/files/raw_client.py +278 -0
  66. kard/files/types/__init__.py +53 -0
  67. kard/files/types/file_metadata_attribute.py +39 -0
  68. kard/files/types/file_metadata_with_url.py +34 -0
  69. kard/files/types/file_type.py +13 -0
  70. kard/files/types/files_metadata_sort_options.py +5 -0
  71. kard/files/types/get_files_metadata_response.py +71 -0
  72. kard/files/types/pagination_meta.py +29 -0
  73. kard/notifications/__init__.py +279 -0
  74. kard/notifications/client.py +63 -0
  75. kard/notifications/raw_client.py +13 -0
  76. kard/notifications/subscriptions/__init__.py +97 -0
  77. kard/notifications/subscriptions/client.py +372 -0
  78. kard/notifications/subscriptions/raw_client.py +581 -0
  79. kard/notifications/subscriptions/types/__init__.py +94 -0
  80. kard/notifications/subscriptions/types/create_subscription_union.py +27 -0
  81. kard/notifications/subscriptions/types/create_subscriptions_response_object.py +43 -0
  82. kard/notifications/subscriptions/types/created_subscription.py +23 -0
  83. kard/notifications/subscriptions/types/subscription.py +25 -0
  84. kard/notifications/subscriptions/types/subscription_attributes.py +35 -0
  85. kard/notifications/subscriptions/types/subscription_request.py +20 -0
  86. kard/notifications/subscriptions/types/subscription_request_attributes.py +35 -0
  87. kard/notifications/subscriptions/types/subscription_request_body.py +42 -0
  88. kard/notifications/subscriptions/types/subscription_request_union.py +26 -0
  89. kard/notifications/subscriptions/types/subscription_union.py +27 -0
  90. kard/notifications/subscriptions/types/subscriptions_response_object.py +43 -0
  91. kard/notifications/subscriptions/types/update_subscription_request.py +20 -0
  92. kard/notifications/subscriptions/types/update_subscription_request_attributes.py +39 -0
  93. kard/notifications/subscriptions/types/update_subscription_request_body.py +40 -0
  94. kard/notifications/subscriptions/types/update_subscription_request_union.py +26 -0
  95. kard/notifications/subscriptions/types/update_subscriptions_response_object.py +41 -0
  96. kard/notifications/types/__init__.py +214 -0
  97. kard/notifications/types/audit_update_attributes.py +88 -0
  98. kard/notifications/types/audit_update_data.py +27 -0
  99. kard/notifications/types/audit_update_relationships.py +21 -0
  100. kard/notifications/types/broker_amount.py +28 -0
  101. kard/notifications/types/broker_amount_type.py +5 -0
  102. kard/notifications/types/broker_asset.py +33 -0
  103. kard/notifications/types/broker_asset_type.py +5 -0
  104. kard/notifications/types/broker_operation_hours.py +30 -0
  105. kard/notifications/types/broker_operation_period.py +28 -0
  106. kard/notifications/types/broker_purchase_channel.py +5 -0
  107. kard/notifications/types/broker_reward.py +28 -0
  108. kard/notifications/types/broker_reward_type.py +5 -0
  109. kard/notifications/types/clawback_data.py +27 -0
  110. kard/notifications/types/earned_reward_approved_data.py +27 -0
  111. kard/notifications/types/earned_reward_attributes.py +18 -0
  112. kard/notifications/types/earned_reward_relationships.py +21 -0
  113. kard/notifications/types/earned_reward_settled_attributes.py +23 -0
  114. kard/notifications/types/earned_reward_settled_data.py +27 -0
  115. kard/notifications/types/failed_transaction_attributes.py +41 -0
  116. kard/notifications/types/failed_transaction_data.py +27 -0
  117. kard/notifications/types/failed_transaction_relationships.py +22 -0
  118. kard/notifications/types/location_address.py +39 -0
  119. kard/notifications/types/location_coordinates.py +27 -0
  120. kard/notifications/types/location_status.py +5 -0
  121. kard/notifications/types/merchant_source.py +5 -0
  122. kard/notifications/types/notification_data_union.py +203 -0
  123. kard/notifications/types/notification_metadata.py +22 -0
  124. kard/notifications/types/notification_payload.py +65 -0
  125. kard/notifications/types/offer_status.py +5 -0
  126. kard/notifications/types/offer_type.py +5 -0
  127. kard/notifications/types/reward_notification_attributes.py +48 -0
  128. kard/notifications/types/time_period.py +27 -0
  129. kard/notifications/types/transaction_relationships.py +22 -0
  130. kard/notifications/types/user_offer_status.py +5 -0
  131. kard/notifications/types/valid_transaction_attributes.py +25 -0
  132. kard/notifications/types/valid_transaction_commission_earned.py +21 -0
  133. kard/notifications/types/valid_transaction_data.py +27 -0
  134. kard/notifications/types/webhook_locations_attributes.py +71 -0
  135. kard/notifications/types/webhook_locations_data.py +27 -0
  136. kard/notifications/types/webhook_locations_relationships.py +20 -0
  137. kard/notifications/types/webhook_merchant_attributes.py +67 -0
  138. kard/notifications/types/webhook_merchant_data.py +27 -0
  139. kard/notifications/types/webhook_merchant_relationships.py +20 -0
  140. kard/notifications/types/webhook_offer_attributes.py +143 -0
  141. kard/notifications/types/webhook_offer_data.py +27 -0
  142. kard/notifications/types/webhook_offer_relationships.py +20 -0
  143. kard/notifications/types/webhook_user_offer_attributes.py +41 -0
  144. kard/notifications/types/webhook_user_offer_data.py +27 -0
  145. kard/notifications/types/webhook_user_offer_relationships.py +21 -0
  146. kard/ping/__init__.py +39 -0
  147. kard/ping/client.py +100 -0
  148. kard/ping/errors/__init__.py +34 -0
  149. kard/ping/errors/network_blocked_error.py +11 -0
  150. kard/ping/raw_client.py +113 -0
  151. kard/ping/types/__init__.py +38 -0
  152. kard/ping/types/network_blocked_error_body.py +34 -0
  153. kard/ping/types/ping_response_object.py +46 -0
  154. kard/py.typed +0 -0
  155. kard/transactions/__init__.py +212 -0
  156. kard/transactions/client.py +639 -0
  157. kard/transactions/errors/__init__.py +40 -0
  158. kard/transactions/errors/create_audit_multi_status.py +11 -0
  159. kard/transactions/errors/create_incoming_transactions_multi_status.py +11 -0
  160. kard/transactions/errors/fraud_multi_status.py +11 -0
  161. kard/transactions/raw_client.py +925 -0
  162. kard/transactions/types/__init__.py +199 -0
  163. kard/transactions/types/audit_attributes.py +44 -0
  164. kard/transactions/types/audit_request_data.py +20 -0
  165. kard/transactions/types/audit_response_attributes.py +24 -0
  166. kard/transactions/types/audit_response_data.py +25 -0
  167. kard/transactions/types/audit_status.py +5 -0
  168. kard/transactions/types/card_network.py +5 -0
  169. kard/transactions/types/commission_earned_details.py +21 -0
  170. kard/transactions/types/create_audit_multi_status_response.py +21 -0
  171. kard/transactions/types/create_audit_request_body.py +43 -0
  172. kard/transactions/types/create_audit_request_data_union.py +26 -0
  173. kard/transactions/types/create_audit_response_body.py +41 -0
  174. kard/transactions/types/create_audit_response_data_union.py +27 -0
  175. kard/transactions/types/direction_type.py +5 -0
  176. kard/transactions/types/fraudulent_transaction_attributes.py +24 -0
  177. kard/transactions/types/fraudulent_transaction_data.py +30 -0
  178. kard/transactions/types/fraudulent_transaction_object.py +42 -0
  179. kard/transactions/types/fraudulent_transaction_request_body.py +45 -0
  180. kard/transactions/types/fraudulent_transaction_response.py +21 -0
  181. kard/transactions/types/get_earned_rewards_response.py +133 -0
  182. kard/transactions/types/matched_transactions_attributes.py +156 -0
  183. kard/transactions/types/matched_transactions_request.py +25 -0
  184. kard/transactions/types/merchant.py +82 -0
  185. kard/transactions/types/payment_status.py +5 -0
  186. kard/transactions/types/payment_type.py +5 -0
  187. kard/transactions/types/processor_mid.py +26 -0
  188. kard/transactions/types/receipt_medium_type.py +5 -0
  189. kard/transactions/types/rewarded_transaction.py +27 -0
  190. kard/transactions/types/rewarded_transaction_attributes.py +74 -0
  191. kard/transactions/types/rewarded_transaction_relationships.py +22 -0
  192. kard/transactions/types/rewarded_transaction_status.py +5 -0
  193. kard/transactions/types/rewarded_transaction_union.py +29 -0
  194. kard/transactions/types/states.py +68 -0
  195. kard/transactions/types/transaction_included_resource.py +47 -0
  196. kard/transactions/types/transaction_merchant_attributes.py +22 -0
  197. kard/transactions/types/transaction_merchant_resource.py +28 -0
  198. kard/transactions/types/transaction_offer_attributes.py +26 -0
  199. kard/transactions/types/transaction_offer_resource.py +28 -0
  200. kard/transactions/types/transaction_payment_type.py +5 -0
  201. kard/transactions/types/transaction_status.py +5 -0
  202. kard/transactions/types/transactions.py +46 -0
  203. kard/transactions/types/transactions_attributes.py +198 -0
  204. kard/transactions/types/transactions_multi_response.py +21 -0
  205. kard/transactions/types/transactions_request.py +25 -0
  206. kard/transactions/types/transactions_request_body.py +90 -0
  207. kard/transactions/types/transactions_response.py +38 -0
  208. kard/transactions/types/transactions_response_data.py +27 -0
  209. kard/transactions/types/visa_mid.py +23 -0
  210. kard/transactions/types/visa_mid_details.py +27 -0
  211. kard/users/__init__.py +293 -0
  212. kard/users/attributions/__init__.py +73 -0
  213. kard/users/attributions/client.py +229 -0
  214. kard/users/attributions/raw_client.py +215 -0
  215. kard/users/attributions/types/__init__.py +73 -0
  216. kard/users/attributions/types/create_attribution_request_object.py +75 -0
  217. kard/users/attributions/types/create_attribution_request_union.py +45 -0
  218. kard/users/attributions/types/create_attribution_response.py +38 -0
  219. kard/users/attributions/types/event_code.py +5 -0
  220. kard/users/attributions/types/notification_attribution_attributes.py +35 -0
  221. kard/users/attributions/types/notification_attribution_request.py +20 -0
  222. kard/users/attributions/types/notification_medium.py +5 -0
  223. kard/users/attributions/types/offer_attribution_attributes.py +35 -0
  224. kard/users/attributions/types/offer_attribution_request.py +20 -0
  225. kard/users/attributions/types/offer_medium.py +5 -0
  226. kard/users/client.py +512 -0
  227. kard/users/errors/__init__.py +34 -0
  228. kard/users/errors/multi_status.py +11 -0
  229. kard/users/raw_client.py +783 -0
  230. kard/users/rewards/__init__.py +133 -0
  231. kard/users/rewards/client.py +448 -0
  232. kard/users/rewards/raw_client.py +587 -0
  233. kard/users/rewards/types/__init__.py +130 -0
  234. kard/users/rewards/types/amount.py +21 -0
  235. kard/users/rewards/types/amount_type.py +5 -0
  236. kard/users/rewards/types/asset.py +28 -0
  237. kard/users/rewards/types/category_data.py +18 -0
  238. kard/users/rewards/types/category_fields.py +23 -0
  239. kard/users/rewards/types/category_identifier.py +24 -0
  240. kard/users/rewards/types/category_included.py +21 -0
  241. kard/users/rewards/types/category_relationship.py +20 -0
  242. kard/users/rewards/types/category_relationship_object.py +20 -0
  243. kard/users/rewards/types/commission.py +21 -0
  244. kard/users/rewards/types/coordinates.py +20 -0
  245. kard/users/rewards/types/eligibility_location_address.py +24 -0
  246. kard/users/rewards/types/eligibility_location_included.py +8 -0
  247. kard/users/rewards/types/eligibility_offer_included.py +7 -0
  248. kard/users/rewards/types/eligibility_offer_relationship.py +7 -0
  249. kard/users/rewards/types/location_attributes.py +28 -0
  250. kard/users/rewards/types/location_data.py +32 -0
  251. kard/users/rewards/types/location_relationships.py +18 -0
  252. kard/users/rewards/types/location_sort_options.py +5 -0
  253. kard/users/rewards/types/locations_response_object.py +215 -0
  254. kard/users/rewards/types/offer_common_fields.py +103 -0
  255. kard/users/rewards/types/offer_data_union.py +30 -0
  256. kard/users/rewards/types/offer_relationship.py +21 -0
  257. kard/users/rewards/types/offer_sort_options.py +7 -0
  258. kard/users/rewards/types/offers_response_object.py +130 -0
  259. kard/users/rewards/types/operation_hours.py +23 -0
  260. kard/users/rewards/types/operation_period.py +21 -0
  261. kard/users/rewards/types/operation_time.py +20 -0
  262. kard/users/rewards/types/standard_offer.py +21 -0
  263. kard/users/rewards/types/standard_offer_core.py +26 -0
  264. kard/users/rewards/types/standard_offer_fields.py +18 -0
  265. kard/users/types/__init__.py +66 -0
  266. kard/users/types/create_users_multi_status_response.py +21 -0
  267. kard/users/types/create_users_object.py +42 -0
  268. kard/users/types/delete_user_response_object.py +34 -0
  269. kard/users/types/update_user_object.py +40 -0
  270. kard/users/types/user_request_attributes.py +60 -0
  271. kard/users/types/user_request_data.py +22 -0
  272. kard/users/types/user_request_data_union.py +28 -0
  273. kard/users/types/user_response_no_data.py +22 -0
  274. kard/users/types/user_response_union_no_data.py +28 -0
  275. kard/users/uploads/__init__.py +112 -0
  276. kard/users/uploads/client.py +484 -0
  277. kard/users/uploads/errors/__init__.py +34 -0
  278. kard/users/uploads/errors/upload_part_multi_status.py +13 -0
  279. kard/users/uploads/raw_client.py +625 -0
  280. kard/users/uploads/types/__init__.py +119 -0
  281. kard/users/uploads/types/create_upload_part_data_union.py +27 -0
  282. kard/users/uploads/types/create_upload_part_multi_status_response.py +21 -0
  283. kard/users/uploads/types/create_upload_part_request_object.py +74 -0
  284. kard/users/uploads/types/create_upload_part_response_data.py +25 -0
  285. kard/users/uploads/types/create_upload_part_response_data_union.py +27 -0
  286. kard/users/uploads/types/create_upload_part_response_object.py +39 -0
  287. kard/users/uploads/types/create_upload_request_data_union.py +26 -0
  288. kard/users/uploads/types/create_upload_request_object.py +36 -0
  289. kard/users/uploads/types/create_upload_response_data.py +25 -0
  290. kard/users/uploads/types/create_upload_response_data_union.py +27 -0
  291. kard/users/uploads/types/create_upload_response_object.py +37 -0
  292. kard/users/uploads/types/historical_transaction_complete_no_data.py +25 -0
  293. kard/users/uploads/types/start_historical_upload_no_data.py +20 -0
  294. kard/users/uploads/types/update_upload_request_data_union.py +27 -0
  295. kard/users/uploads/types/update_upload_request_object.py +37 -0
  296. kard/users/uploads/types/update_upload_response_data.py +25 -0
  297. kard/users/uploads/types/update_upload_response_data_union.py +27 -0
  298. kard/users/uploads/types/update_upload_response_object.py +37 -0
  299. kard/version.py +3 -0
  300. kard_financial_sdk-0.0.82.dist-info/METADATA +238 -0
  301. kard_financial_sdk-0.0.82.dist-info/RECORD +302 -0
  302. kard_financial_sdk-0.0.82.dist-info/WHEEL +4 -0
@@ -0,0 +1,68 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ States = typing.Union[
6
+ typing.Literal[
7
+ "AL",
8
+ "AK",
9
+ "AS",
10
+ "AZ",
11
+ "AR",
12
+ "CA",
13
+ "CO",
14
+ "CT",
15
+ "DE",
16
+ "DC",
17
+ "FM",
18
+ "FL",
19
+ "GA",
20
+ "GU",
21
+ "HI",
22
+ "ID",
23
+ "IL",
24
+ "IN",
25
+ "IA",
26
+ "KS",
27
+ "KY",
28
+ "LA",
29
+ "ME",
30
+ "MH",
31
+ "MD",
32
+ "MA",
33
+ "MI",
34
+ "MN",
35
+ "MS",
36
+ "MO",
37
+ "MT",
38
+ "NE",
39
+ "NV",
40
+ "NH",
41
+ "NJ",
42
+ "NM",
43
+ "NY",
44
+ "NC",
45
+ "ND",
46
+ "MP",
47
+ "OH",
48
+ "OK",
49
+ "OR",
50
+ "PW",
51
+ "PA",
52
+ "PR",
53
+ "RI",
54
+ "SC",
55
+ "SD",
56
+ "TN",
57
+ "TX",
58
+ "UT",
59
+ "VT",
60
+ "VI",
61
+ "VA",
62
+ "WA",
63
+ "WV",
64
+ "WI",
65
+ "WY",
66
+ ],
67
+ typing.Any,
68
+ ]
@@ -0,0 +1,47 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+
7
+ import pydantic
8
+ import typing_extensions
9
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
10
+ from .transaction_merchant_attributes import TransactionMerchantAttributes
11
+ from .transaction_offer_attributes import TransactionOfferAttributes
12
+
13
+
14
+ class TransactionIncludedResource_Merchant(UniversalBaseModel):
15
+ type: typing.Literal["merchant"] = "merchant"
16
+ id: str
17
+ attributes: TransactionMerchantAttributes
18
+
19
+ if IS_PYDANTIC_V2:
20
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
27
+
28
+
29
+ class TransactionIncludedResource_Offer(UniversalBaseModel):
30
+ type: typing.Literal["offer"] = "offer"
31
+ id: str
32
+ attributes: TransactionOfferAttributes
33
+
34
+ if IS_PYDANTIC_V2:
35
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
36
+ else:
37
+
38
+ class Config:
39
+ frozen = True
40
+ smart_union = True
41
+ extra = pydantic.Extra.allow
42
+
43
+
44
+ TransactionIncludedResource = typing_extensions.Annotated[
45
+ typing.Union[TransactionIncludedResource_Merchant, TransactionIncludedResource_Offer],
46
+ pydantic.Field(discriminator="type"),
47
+ ]
@@ -0,0 +1,22 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class TransactionMerchantAttributes(UniversalBaseModel):
10
+ name: str = pydantic.Field()
11
+ """
12
+ Merchant name
13
+ """
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -0,0 +1,28 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .transaction_merchant_attributes import TransactionMerchantAttributes
8
+
9
+
10
+ class TransactionMerchantResource(UniversalBaseModel):
11
+ id: str = pydantic.Field()
12
+ """
13
+ Merchant identifier
14
+ """
15
+
16
+ attributes: TransactionMerchantAttributes = pydantic.Field()
17
+ """
18
+ Merchant attributes
19
+ """
20
+
21
+ if IS_PYDANTIC_V2:
22
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
23
+ else:
24
+
25
+ class Config:
26
+ frozen = True
27
+ smart_union = True
28
+ extra = pydantic.Extra.allow
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class TransactionOfferAttributes(UniversalBaseModel):
12
+ purchase_channel: typing_extensions.Annotated[typing.List[str], FieldMetadata(alias="purchaseChannel")] = (
13
+ pydantic.Field()
14
+ )
15
+ """
16
+ Purchase channels
17
+ """
18
+
19
+ if IS_PYDANTIC_V2:
20
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,28 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .transaction_offer_attributes import TransactionOfferAttributes
8
+
9
+
10
+ class TransactionOfferResource(UniversalBaseModel):
11
+ id: str = pydantic.Field()
12
+ """
13
+ Offer identifier
14
+ """
15
+
16
+ attributes: TransactionOfferAttributes = pydantic.Field()
17
+ """
18
+ Offer attributes
19
+ """
20
+
21
+ if IS_PYDANTIC_V2:
22
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
23
+ else:
24
+
25
+ class Config:
26
+ frozen = True
27
+ smart_union = True
28
+ extra = pydantic.Extra.allow
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TransactionPaymentType = typing.Union[typing.Literal["CARD"], typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TransactionStatus = typing.Union[typing.Literal["APPROVED", "SETTLED", "REVERSED", "RETURNED", "DECLINED"], typing.Any]
@@ -0,0 +1,46 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+
7
+ import pydantic
8
+ import typing_extensions
9
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
10
+ from .matched_transactions_attributes import MatchedTransactionsAttributes
11
+ from .transactions_attributes import TransactionsAttributes
12
+
13
+
14
+ class Transactions_Transaction(UniversalBaseModel):
15
+ type: typing.Literal["transaction"] = "transaction"
16
+ id: str
17
+ attributes: TransactionsAttributes
18
+
19
+ if IS_PYDANTIC_V2:
20
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
27
+
28
+
29
+ class Transactions_MatchedTransaction(UniversalBaseModel):
30
+ type: typing.Literal["matchedTransaction"] = "matchedTransaction"
31
+ id: str
32
+ attributes: MatchedTransactionsAttributes
33
+
34
+ if IS_PYDANTIC_V2:
35
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
36
+ else:
37
+
38
+ class Config:
39
+ frozen = True
40
+ smart_union = True
41
+ extra = pydantic.Extra.allow
42
+
43
+
44
+ Transactions = typing_extensions.Annotated[
45
+ typing.Union[Transactions_Transaction, Transactions_MatchedTransaction], pydantic.Field(discriminator="type")
46
+ ]
@@ -0,0 +1,198 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
+ from ...core.serialization import FieldMetadata
10
+ from .card_network import CardNetwork
11
+ from .direction_type import DirectionType
12
+ from .merchant import Merchant
13
+ from .processor_mid import ProcessorMid
14
+ from .transaction_payment_type import TransactionPaymentType
15
+ from .transaction_status import TransactionStatus
16
+
17
+
18
+ class TransactionsAttributes(UniversalBaseModel):
19
+ user_id: typing_extensions.Annotated[str, FieldMetadata(alias="userId")] = pydantic.Field()
20
+ """
21
+ The ID of the user as defined on the issuers system
22
+ """
23
+
24
+ amount: int = pydantic.Field()
25
+ """
26
+ Transaction amount in cents
27
+ """
28
+
29
+ subtotal: typing.Optional[int] = pydantic.Field(default=None)
30
+ """
31
+ The base amount in cents excluding additional charges (such as tips, taxes, and other fees).
32
+ """
33
+
34
+ status: TransactionStatus = pydantic.Field()
35
+ """
36
+ Transaction status
37
+ """
38
+
39
+ currency: str = pydantic.Field()
40
+ """
41
+ Currency of transaction
42
+ """
43
+
44
+ description: str = pydantic.Field()
45
+ """
46
+ Description of transaction - usually includes merchant and other key details on transaction
47
+ """
48
+
49
+ description_2: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="description2")] = (
50
+ pydantic.Field(default=None)
51
+ )
52
+ """
53
+ Description2 of transaction — usually includes other merchant identifying information
54
+ """
55
+
56
+ mcc: typing.Optional[str] = pydantic.Field(default=None)
57
+ """
58
+ Merchant Category Code (usually a 4-digit numerical number). <b>Note, this field is REQUIRED for SOME national offers. We HIGHLY RECOMMEND sending this field as it will be required in the near future.</b>
59
+ """
60
+
61
+ core_provider_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="coreProviderId")] = (
62
+ pydantic.Field(default=None)
63
+ )
64
+ """
65
+ Name of processor associated with transaction
66
+ """
67
+
68
+ transaction_date: typing_extensions.Annotated[
69
+ typing.Optional[dt.datetime], FieldMetadata(alias="transactionDate")
70
+ ] = pydantic.Field(default=None)
71
+ """
72
+ Timestamp for <b>REVERSED, RETURNED, DECLINED</b> transaction events; <b>REQUIRED</b> for transactions with <b>REVERSED, RETURNED, DECLINED</b> status. Date string should be in ISO format i.e.`'YYYY-MM-DDThh:mm:ss.sTZD'` where TZD = time zone designator (Z or +hh:mm or -hh:mm) i.e. `1994-11-05T08:15:30-05:00` OR `1994-11-05T08:15:30Z`
73
+ """
74
+
75
+ authorization_date: typing_extensions.Annotated[
76
+ typing.Optional[dt.datetime], FieldMetadata(alias="authorizationDate")
77
+ ] = pydantic.Field(default=None)
78
+ """
79
+ Timestamp for <b>APPROVED</b> transaction event; <b>REQUIRED</b> for transactions with <b>APPROVED</b> status, and <b>HIGHLY RECOMMENDED</b> to include for transactions with a <b>SETTLED</b> status. Date string should be in ISO format i.e.`'YYYY-MM-DDThh:mm:ss.sTZD'` where TZD = time zone designator (Z or +hh:mm or -hh:mm) i.e. `1994-11-05T08:15:30-05:00 OR 1994-11-05T08:15:30Z`
80
+ """
81
+
82
+ settled_date: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="settledDate")] = (
83
+ pydantic.Field(default=None)
84
+ )
85
+ """
86
+ Timestamp for <b>SETTLED</b> transaction event, <b>REQUIRED</b> for transactions with <b>SETTLED</b> status. Date string should be in ISO format i.e.`'YYYY-MM-DDThh:mm:ss.sTZD'` where TZD = time zone designator (Z or +hh:mm or -hh:mm) i.e. `1994-11-05T08:15:30-05:00` OR `1994-11-05T08:15:30Z`
87
+ """
88
+
89
+ merchant: typing.Optional[Merchant] = pydantic.Field(default=None)
90
+ """
91
+ Merchant details
92
+ """
93
+
94
+ card_presence: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="cardPresence")] = (
95
+ pydantic.Field(default=None)
96
+ )
97
+ """
98
+ Whether card was present at time of transaction
99
+ """
100
+
101
+ pan_entry_mode: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="panEntryMode")] = (
102
+ pydantic.Field(default=None)
103
+ )
104
+ """
105
+ PAN entry mode
106
+ """
107
+
108
+ card_bin: typing_extensions.Annotated[str, FieldMetadata(alias="cardBIN")] = pydantic.Field()
109
+ """
110
+ Bank identification number (BIN). Must be a valid BIN of 6 digits. If over 6 digits, please send first 6.
111
+ """
112
+
113
+ card_last_four: typing_extensions.Annotated[str, FieldMetadata(alias="cardLastFour")] = pydantic.Field()
114
+ """
115
+ Card last four digits.
116
+ """
117
+
118
+ authorization_code: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="authorizationCode")] = (
119
+ pydantic.Field(default=None)
120
+ )
121
+ """
122
+ Transaction approval code
123
+ """
124
+
125
+ retrieval_reference_number: typing_extensions.Annotated[
126
+ typing.Optional[str], FieldMetadata(alias="retrievalReferenceNumber")
127
+ ] = pydantic.Field(default=None)
128
+ """
129
+ Retrieval Reference Number
130
+ """
131
+
132
+ system_trace_audit_number: typing_extensions.Annotated[
133
+ typing.Optional[str], FieldMetadata(alias="systemTraceAuditNumber")
134
+ ] = pydantic.Field(default=None)
135
+ """
136
+ System Trace Audit Number
137
+ """
138
+
139
+ acquirer_reference_number: typing_extensions.Annotated[
140
+ typing.Optional[str], FieldMetadata(alias="acquirerReferenceNumber")
141
+ ] = pydantic.Field(default=None)
142
+ """
143
+ Acquirer Reference Number
144
+ """
145
+
146
+ direction: DirectionType = pydantic.Field()
147
+ """
148
+ The direction in which the funds flow - DEBIT or CREDIT
149
+ """
150
+
151
+ payment_type: typing_extensions.Annotated[TransactionPaymentType, FieldMetadata(alias="paymentType")] = (
152
+ pydantic.Field()
153
+ )
154
+ """
155
+ The type of payment involved in the transaction.
156
+ """
157
+
158
+ card_network: typing_extensions.Annotated[typing.Optional[CardNetwork], FieldMetadata(alias="cardNetwork")] = (
159
+ pydantic.Field(default=None)
160
+ )
161
+ """
162
+ The card network associated with the transaction
163
+ """
164
+
165
+ transaction_id: typing_extensions.Annotated[str, FieldMetadata(alias="transactionId")] = pydantic.Field()
166
+ """
167
+ The transaction ID
168
+ """
169
+
170
+ card_product_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="cardProductId")] = (
171
+ pydantic.Field(default=None)
172
+ )
173
+ """
174
+ The card product ID associated with the transaction
175
+ """
176
+
177
+ user_zip_code: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="userZipCode")] = (
178
+ pydantic.Field(default=None)
179
+ )
180
+ """
181
+ The zip code of the user who made the transaction
182
+ """
183
+
184
+ processor_mids: typing_extensions.Annotated[typing.Optional[ProcessorMid], FieldMetadata(alias="processorMids")] = (
185
+ pydantic.Field(default=None)
186
+ )
187
+ """
188
+ Network specific merchant IDs (MIDs) associated with the transaction
189
+ """
190
+
191
+ if IS_PYDANTIC_V2:
192
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
193
+ else:
194
+
195
+ class Config:
196
+ frozen = True
197
+ smart_union = True
198
+ extra = pydantic.Extra.allow
@@ -0,0 +1,21 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...commons.types.error_response import ErrorResponse
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2
8
+ from .transactions_response_data import TransactionsResponseData
9
+
10
+
11
+ class TransactionsMultiResponse(ErrorResponse):
12
+ data: TransactionsResponseData
13
+
14
+ if IS_PYDANTIC_V2:
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
16
+ else:
17
+
18
+ class Config:
19
+ frozen = True
20
+ smart_union = True
21
+ extra = pydantic.Extra.allow
@@ -0,0 +1,25 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .transactions_attributes import TransactionsAttributes
8
+
9
+
10
+ class TransactionsRequest(UniversalBaseModel):
11
+ id: str = pydantic.Field()
12
+ """
13
+ Unique identifier for the transaction event. This <b>must</b> be unique for each distinct event sent to the API.
14
+ """
15
+
16
+ attributes: TransactionsAttributes
17
+
18
+ if IS_PYDANTIC_V2:
19
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
20
+ else:
21
+
22
+ class Config:
23
+ frozen = True
24
+ smart_union = True
25
+ extra = pydantic.Extra.allow
@@ -0,0 +1,90 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .transactions import Transactions
8
+
9
+
10
+ class TransactionsRequestBody(UniversalBaseModel):
11
+ """
12
+ Examples
13
+ --------
14
+ import datetime
15
+
16
+ from kard.transactions import (
17
+ Merchant,
18
+ ProcessorMid_Visa,
19
+ Transactions_Transaction,
20
+ TransactionsAttributes,
21
+ TransactionsRequestBody,
22
+ VisaMidDetails,
23
+ )
24
+
25
+ TransactionsRequestBody(
26
+ data=[
27
+ Transactions_Transaction(
28
+ id="309rjfoincor3icno3rind093cdow3jciwjdwcm",
29
+ attributes=TransactionsAttributes(
30
+ user_id="6FHt5b6Fnp0qdomMEy5AN6PXcSJIeX69",
31
+ status="APPROVED",
32
+ amount=1000,
33
+ subtotal=800,
34
+ currency="USD",
35
+ direction="DEBIT",
36
+ payment_type="CARD",
37
+ description="ADVANCEAUTO",
38
+ description_2="ADVANCEAUTO",
39
+ mcc="1234",
40
+ card_bin="123456",
41
+ card_last_four="4321",
42
+ authorization_date=datetime.datetime.fromisoformat(
43
+ "2021-07-02 17:47:06+00:00",
44
+ ),
45
+ merchant=Merchant(
46
+ id="12345678901234567",
47
+ name="ADVANCEAUTO",
48
+ addr_street="125 Main St",
49
+ addr_city="Philadelphia",
50
+ addr_state="PA",
51
+ addr_zipcode="19147",
52
+ addr_country="United States",
53
+ latitude="37.9419429",
54
+ longitude="-73.1446869",
55
+ store_id="12345",
56
+ ),
57
+ authorization_code="123456",
58
+ retrieval_reference_number="100804333919",
59
+ acquirer_reference_number="1234567890123456789012345678",
60
+ system_trace_audit_number="333828",
61
+ transaction_id="2467de37-cbdc-416d-a359-75de87bfffb0",
62
+ card_product_id="1234567890123456789012345678",
63
+ processor_mids=ProcessorMid_Visa(
64
+ mids=VisaMidDetails(
65
+ vmid="12345678901",
66
+ vsid="12345678",
67
+ ),
68
+ ),
69
+ ),
70
+ )
71
+ ],
72
+ )
73
+ """
74
+
75
+ data: typing.List[Transactions] = pydantic.Field()
76
+ """
77
+ Discriminated union representing the request body for submitting a transaction.
78
+ Use `type` to distinguish between the two:
79
+ - `transaction`: For transactions requiring processing and matching by the Kard system.
80
+ - `matchedTransaction`: For pre-matched transactions that need validation on match by the Kard system.
81
+ """
82
+
83
+ if IS_PYDANTIC_V2:
84
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
85
+ else:
86
+
87
+ class Config:
88
+ frozen = True
89
+ smart_union = True
90
+ extra = pydantic.Extra.allow
@@ -0,0 +1,38 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .transactions_response_data import TransactionsResponseData
8
+
9
+
10
+ class TransactionsResponse(UniversalBaseModel):
11
+ """
12
+ Examples
13
+ --------
14
+ from kard.commons import Job
15
+ from kard.transactions import TransactionsResponse, TransactionsResponseData
16
+
17
+ TransactionsResponse(
18
+ data=TransactionsResponseData(
19
+ type="job",
20
+ id="c94a93a7-beb9-4e58-960c-2c812f849398",
21
+ attributes=Job(
22
+ status="queued",
23
+ message="Incoming Transactions event successfully queued for processing",
24
+ ),
25
+ ),
26
+ )
27
+ """
28
+
29
+ data: TransactionsResponseData
30
+
31
+ if IS_PYDANTIC_V2:
32
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
33
+ else:
34
+
35
+ class Config:
36
+ frozen = True
37
+ smart_union = True
38
+ extra = pydantic.Extra.allow
@@ -0,0 +1,27 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...commons.types.job import Job
7
+ from ...commons.types.resource_type import ResourceType
8
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
+
10
+
11
+ class TransactionsResponseData(UniversalBaseModel):
12
+ type: ResourceType
13
+ id: str = pydantic.Field()
14
+ """
15
+ The request id of the pending job
16
+ """
17
+
18
+ attributes: Job
19
+
20
+ if IS_PYDANTIC_V2:
21
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
+ else:
23
+
24
+ class Config:
25
+ frozen = True
26
+ smart_union = True
27
+ extra = pydantic.Extra.allow