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,23 @@
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 .visa_mid_details import VisaMidDetails
8
+
9
+
10
+ class VisaMid(UniversalBaseModel):
11
+ mids: VisaMidDetails = pydantic.Field()
12
+ """
13
+ Merchant ID (MID) associated with the processor
14
+ """
15
+
16
+ if IS_PYDANTIC_V2:
17
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
18
+ else:
19
+
20
+ class Config:
21
+ frozen = True
22
+ smart_union = True
23
+ 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 ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class VisaMidDetails(UniversalBaseModel):
10
+ vmid: str = pydantic.Field()
11
+ """
12
+ Visa Merchant ID (VMID) associated with the transaction
13
+ """
14
+
15
+ vsid: str = pydantic.Field()
16
+ """
17
+ Visa Store ID (VSID) associated with the transaction
18
+ """
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
kard/users/__init__.py ADDED
@@ -0,0 +1,293 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import (
10
+ CreateUsersMultiStatusResponse,
11
+ CreateUsersObject,
12
+ DeleteUserResponseObject,
13
+ UpdateUserObject,
14
+ UserRequestAttributes,
15
+ UserRequestData,
16
+ UserRequestDataUnion,
17
+ UserRequestDataUnion_User,
18
+ UserResponseNoData,
19
+ UserResponseUnionNoData,
20
+ UserResponseUnionNoData_User,
21
+ )
22
+ from .errors import MultiStatus
23
+ from . import attributions, rewards, uploads
24
+ from .attributions import (
25
+ CreateAttributionRequestObject,
26
+ CreateAttributionRequestUnion,
27
+ CreateAttributionRequestUnion_NotificationAttribution,
28
+ CreateAttributionRequestUnion_OfferAttribution,
29
+ CreateAttributionResponse,
30
+ EventCode,
31
+ NotificationAttributionAttributes,
32
+ NotificationAttributionRequest,
33
+ NotificationMedium,
34
+ OfferAttributionAttributes,
35
+ OfferAttributionRequest,
36
+ OfferMedium,
37
+ )
38
+ from .rewards import (
39
+ Amount,
40
+ AmountType,
41
+ Asset,
42
+ CategoryData,
43
+ CategoryFields,
44
+ CategoryIdentifier,
45
+ CategoryIncluded,
46
+ CategoryRelationship,
47
+ CategoryRelationshipObject,
48
+ Commission,
49
+ Coordinates,
50
+ EligibilityLocationAddress,
51
+ EligibilityLocationIncluded,
52
+ EligibilityOfferIncluded,
53
+ EligibilityOfferRelationship,
54
+ LocationAttributes,
55
+ LocationData,
56
+ LocationRelationships,
57
+ LocationSortOptions,
58
+ LocationsResponseObject,
59
+ OfferCommonFields,
60
+ OfferDataUnion,
61
+ OfferDataUnion_StandardOffer,
62
+ OfferRelationship,
63
+ OfferSortOptions,
64
+ OffersResponseObject,
65
+ OperationHours,
66
+ OperationPeriod,
67
+ OperationTime,
68
+ StandardOffer,
69
+ StandardOfferCore,
70
+ StandardOfferFields,
71
+ )
72
+ from .uploads import (
73
+ CreateUploadPartDataUnion,
74
+ CreateUploadPartDataUnion_HistoricalTransaction,
75
+ CreateUploadPartMultiStatusResponse,
76
+ CreateUploadPartRequestObject,
77
+ CreateUploadPartResponseData,
78
+ CreateUploadPartResponseDataUnion,
79
+ CreateUploadPartResponseDataUnion_HistoricalTransaction,
80
+ CreateUploadPartResponseObject,
81
+ CreateUploadRequestDataUnion,
82
+ CreateUploadRequestDataUnion_HistoricalTransactionStart,
83
+ CreateUploadRequestObject,
84
+ CreateUploadResponseData,
85
+ CreateUploadResponseDataUnion,
86
+ CreateUploadResponseDataUnion_HistoricalTransactionStart,
87
+ CreateUploadResponseObject,
88
+ HistoricalTransactionCompleteNoData,
89
+ StartHistoricalUploadNoData,
90
+ UpdateUploadRequestDataUnion,
91
+ UpdateUploadRequestDataUnion_HistoricalTransactionComplete,
92
+ UpdateUploadRequestObject,
93
+ UpdateUploadResponseData,
94
+ UpdateUploadResponseDataUnion,
95
+ UpdateUploadResponseDataUnion_HistoricalTransactionComplete,
96
+ UpdateUploadResponseObject,
97
+ UploadPartMultiStatus,
98
+ )
99
+ _dynamic_imports: typing.Dict[str, str] = {
100
+ "Amount": ".rewards",
101
+ "AmountType": ".rewards",
102
+ "Asset": ".rewards",
103
+ "CategoryData": ".rewards",
104
+ "CategoryFields": ".rewards",
105
+ "CategoryIdentifier": ".rewards",
106
+ "CategoryIncluded": ".rewards",
107
+ "CategoryRelationship": ".rewards",
108
+ "CategoryRelationshipObject": ".rewards",
109
+ "Commission": ".rewards",
110
+ "Coordinates": ".rewards",
111
+ "CreateAttributionRequestObject": ".attributions",
112
+ "CreateAttributionRequestUnion": ".attributions",
113
+ "CreateAttributionRequestUnion_NotificationAttribution": ".attributions",
114
+ "CreateAttributionRequestUnion_OfferAttribution": ".attributions",
115
+ "CreateAttributionResponse": ".attributions",
116
+ "CreateUploadPartDataUnion": ".uploads",
117
+ "CreateUploadPartDataUnion_HistoricalTransaction": ".uploads",
118
+ "CreateUploadPartMultiStatusResponse": ".uploads",
119
+ "CreateUploadPartRequestObject": ".uploads",
120
+ "CreateUploadPartResponseData": ".uploads",
121
+ "CreateUploadPartResponseDataUnion": ".uploads",
122
+ "CreateUploadPartResponseDataUnion_HistoricalTransaction": ".uploads",
123
+ "CreateUploadPartResponseObject": ".uploads",
124
+ "CreateUploadRequestDataUnion": ".uploads",
125
+ "CreateUploadRequestDataUnion_HistoricalTransactionStart": ".uploads",
126
+ "CreateUploadRequestObject": ".uploads",
127
+ "CreateUploadResponseData": ".uploads",
128
+ "CreateUploadResponseDataUnion": ".uploads",
129
+ "CreateUploadResponseDataUnion_HistoricalTransactionStart": ".uploads",
130
+ "CreateUploadResponseObject": ".uploads",
131
+ "CreateUsersMultiStatusResponse": ".types",
132
+ "CreateUsersObject": ".types",
133
+ "DeleteUserResponseObject": ".types",
134
+ "EligibilityLocationAddress": ".rewards",
135
+ "EligibilityLocationIncluded": ".rewards",
136
+ "EligibilityOfferIncluded": ".rewards",
137
+ "EligibilityOfferRelationship": ".rewards",
138
+ "EventCode": ".attributions",
139
+ "HistoricalTransactionCompleteNoData": ".uploads",
140
+ "LocationAttributes": ".rewards",
141
+ "LocationData": ".rewards",
142
+ "LocationRelationships": ".rewards",
143
+ "LocationSortOptions": ".rewards",
144
+ "LocationsResponseObject": ".rewards",
145
+ "MultiStatus": ".errors",
146
+ "NotificationAttributionAttributes": ".attributions",
147
+ "NotificationAttributionRequest": ".attributions",
148
+ "NotificationMedium": ".attributions",
149
+ "OfferAttributionAttributes": ".attributions",
150
+ "OfferAttributionRequest": ".attributions",
151
+ "OfferCommonFields": ".rewards",
152
+ "OfferDataUnion": ".rewards",
153
+ "OfferDataUnion_StandardOffer": ".rewards",
154
+ "OfferMedium": ".attributions",
155
+ "OfferRelationship": ".rewards",
156
+ "OfferSortOptions": ".rewards",
157
+ "OffersResponseObject": ".rewards",
158
+ "OperationHours": ".rewards",
159
+ "OperationPeriod": ".rewards",
160
+ "OperationTime": ".rewards",
161
+ "StandardOffer": ".rewards",
162
+ "StandardOfferCore": ".rewards",
163
+ "StandardOfferFields": ".rewards",
164
+ "StartHistoricalUploadNoData": ".uploads",
165
+ "UpdateUploadRequestDataUnion": ".uploads",
166
+ "UpdateUploadRequestDataUnion_HistoricalTransactionComplete": ".uploads",
167
+ "UpdateUploadRequestObject": ".uploads",
168
+ "UpdateUploadResponseData": ".uploads",
169
+ "UpdateUploadResponseDataUnion": ".uploads",
170
+ "UpdateUploadResponseDataUnion_HistoricalTransactionComplete": ".uploads",
171
+ "UpdateUploadResponseObject": ".uploads",
172
+ "UpdateUserObject": ".types",
173
+ "UploadPartMultiStatus": ".uploads",
174
+ "UserRequestAttributes": ".types",
175
+ "UserRequestData": ".types",
176
+ "UserRequestDataUnion": ".types",
177
+ "UserRequestDataUnion_User": ".types",
178
+ "UserResponseNoData": ".types",
179
+ "UserResponseUnionNoData": ".types",
180
+ "UserResponseUnionNoData_User": ".types",
181
+ "attributions": ".attributions",
182
+ "rewards": ".rewards",
183
+ "uploads": ".uploads",
184
+ }
185
+
186
+
187
+ def __getattr__(attr_name: str) -> typing.Any:
188
+ module_name = _dynamic_imports.get(attr_name)
189
+ if module_name is None:
190
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
191
+ try:
192
+ module = import_module(module_name, __package__)
193
+ if module_name == f".{attr_name}":
194
+ return module
195
+ else:
196
+ return getattr(module, attr_name)
197
+ except ImportError as e:
198
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
199
+ except AttributeError as e:
200
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
201
+
202
+
203
+ def __dir__():
204
+ lazy_attrs = list(_dynamic_imports.keys())
205
+ return sorted(lazy_attrs)
206
+
207
+
208
+ __all__ = [
209
+ "Amount",
210
+ "AmountType",
211
+ "Asset",
212
+ "CategoryData",
213
+ "CategoryFields",
214
+ "CategoryIdentifier",
215
+ "CategoryIncluded",
216
+ "CategoryRelationship",
217
+ "CategoryRelationshipObject",
218
+ "Commission",
219
+ "Coordinates",
220
+ "CreateAttributionRequestObject",
221
+ "CreateAttributionRequestUnion",
222
+ "CreateAttributionRequestUnion_NotificationAttribution",
223
+ "CreateAttributionRequestUnion_OfferAttribution",
224
+ "CreateAttributionResponse",
225
+ "CreateUploadPartDataUnion",
226
+ "CreateUploadPartDataUnion_HistoricalTransaction",
227
+ "CreateUploadPartMultiStatusResponse",
228
+ "CreateUploadPartRequestObject",
229
+ "CreateUploadPartResponseData",
230
+ "CreateUploadPartResponseDataUnion",
231
+ "CreateUploadPartResponseDataUnion_HistoricalTransaction",
232
+ "CreateUploadPartResponseObject",
233
+ "CreateUploadRequestDataUnion",
234
+ "CreateUploadRequestDataUnion_HistoricalTransactionStart",
235
+ "CreateUploadRequestObject",
236
+ "CreateUploadResponseData",
237
+ "CreateUploadResponseDataUnion",
238
+ "CreateUploadResponseDataUnion_HistoricalTransactionStart",
239
+ "CreateUploadResponseObject",
240
+ "CreateUsersMultiStatusResponse",
241
+ "CreateUsersObject",
242
+ "DeleteUserResponseObject",
243
+ "EligibilityLocationAddress",
244
+ "EligibilityLocationIncluded",
245
+ "EligibilityOfferIncluded",
246
+ "EligibilityOfferRelationship",
247
+ "EventCode",
248
+ "HistoricalTransactionCompleteNoData",
249
+ "LocationAttributes",
250
+ "LocationData",
251
+ "LocationRelationships",
252
+ "LocationSortOptions",
253
+ "LocationsResponseObject",
254
+ "MultiStatus",
255
+ "NotificationAttributionAttributes",
256
+ "NotificationAttributionRequest",
257
+ "NotificationMedium",
258
+ "OfferAttributionAttributes",
259
+ "OfferAttributionRequest",
260
+ "OfferCommonFields",
261
+ "OfferDataUnion",
262
+ "OfferDataUnion_StandardOffer",
263
+ "OfferMedium",
264
+ "OfferRelationship",
265
+ "OfferSortOptions",
266
+ "OffersResponseObject",
267
+ "OperationHours",
268
+ "OperationPeriod",
269
+ "OperationTime",
270
+ "StandardOffer",
271
+ "StandardOfferCore",
272
+ "StandardOfferFields",
273
+ "StartHistoricalUploadNoData",
274
+ "UpdateUploadRequestDataUnion",
275
+ "UpdateUploadRequestDataUnion_HistoricalTransactionComplete",
276
+ "UpdateUploadRequestObject",
277
+ "UpdateUploadResponseData",
278
+ "UpdateUploadResponseDataUnion",
279
+ "UpdateUploadResponseDataUnion_HistoricalTransactionComplete",
280
+ "UpdateUploadResponseObject",
281
+ "UpdateUserObject",
282
+ "UploadPartMultiStatus",
283
+ "UserRequestAttributes",
284
+ "UserRequestData",
285
+ "UserRequestDataUnion",
286
+ "UserRequestDataUnion_User",
287
+ "UserResponseNoData",
288
+ "UserResponseUnionNoData",
289
+ "UserResponseUnionNoData_User",
290
+ "attributions",
291
+ "rewards",
292
+ "uploads",
293
+ ]
@@ -0,0 +1,73 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import (
10
+ CreateAttributionRequestObject,
11
+ CreateAttributionRequestUnion,
12
+ CreateAttributionRequestUnion_NotificationAttribution,
13
+ CreateAttributionRequestUnion_OfferAttribution,
14
+ CreateAttributionResponse,
15
+ EventCode,
16
+ NotificationAttributionAttributes,
17
+ NotificationAttributionRequest,
18
+ NotificationMedium,
19
+ OfferAttributionAttributes,
20
+ OfferAttributionRequest,
21
+ OfferMedium,
22
+ )
23
+ _dynamic_imports: typing.Dict[str, str] = {
24
+ "CreateAttributionRequestObject": ".types",
25
+ "CreateAttributionRequestUnion": ".types",
26
+ "CreateAttributionRequestUnion_NotificationAttribution": ".types",
27
+ "CreateAttributionRequestUnion_OfferAttribution": ".types",
28
+ "CreateAttributionResponse": ".types",
29
+ "EventCode": ".types",
30
+ "NotificationAttributionAttributes": ".types",
31
+ "NotificationAttributionRequest": ".types",
32
+ "NotificationMedium": ".types",
33
+ "OfferAttributionAttributes": ".types",
34
+ "OfferAttributionRequest": ".types",
35
+ "OfferMedium": ".types",
36
+ }
37
+
38
+
39
+ def __getattr__(attr_name: str) -> typing.Any:
40
+ module_name = _dynamic_imports.get(attr_name)
41
+ if module_name is None:
42
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
43
+ try:
44
+ module = import_module(module_name, __package__)
45
+ if module_name == f".{attr_name}":
46
+ return module
47
+ else:
48
+ return getattr(module, attr_name)
49
+ except ImportError as e:
50
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
51
+ except AttributeError as e:
52
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
53
+
54
+
55
+ def __dir__():
56
+ lazy_attrs = list(_dynamic_imports.keys())
57
+ return sorted(lazy_attrs)
58
+
59
+
60
+ __all__ = [
61
+ "CreateAttributionRequestObject",
62
+ "CreateAttributionRequestUnion",
63
+ "CreateAttributionRequestUnion_NotificationAttribution",
64
+ "CreateAttributionRequestUnion_OfferAttribution",
65
+ "CreateAttributionResponse",
66
+ "EventCode",
67
+ "NotificationAttributionAttributes",
68
+ "NotificationAttributionRequest",
69
+ "NotificationMedium",
70
+ "OfferAttributionAttributes",
71
+ "OfferAttributionRequest",
72
+ "OfferMedium",
73
+ ]
@@ -0,0 +1,229 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ...commons.types.organization_id import OrganizationId
6
+ from ...commons.types.user_id import UserId
7
+ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ...core.request_options import RequestOptions
9
+ from .raw_client import AsyncRawAttributionsClient, RawAttributionsClient
10
+ from .types.create_attribution_request_union import CreateAttributionRequestUnion
11
+ from .types.create_attribution_response import CreateAttributionResponse
12
+
13
+ # this is used as the default value for optional parameters
14
+ OMIT = typing.cast(typing.Any, ...)
15
+
16
+
17
+ class AttributionsClient:
18
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
19
+ self._raw_client = RawAttributionsClient(client_wrapper=client_wrapper)
20
+
21
+ @property
22
+ def with_raw_response(self) -> RawAttributionsClient:
23
+ """
24
+ Retrieves a raw implementation of this client that returns raw responses.
25
+
26
+ Returns
27
+ -------
28
+ RawAttributionsClient
29
+ """
30
+ return self._raw_client
31
+
32
+ def create(
33
+ self,
34
+ organization_id: OrganizationId,
35
+ user_id: UserId,
36
+ *,
37
+ data: typing.Sequence[CreateAttributionRequestUnion],
38
+ request_options: typing.Optional[RequestOptions] = None,
39
+ ) -> CreateAttributionResponse:
40
+ """
41
+ Call this endpoint to send attribution events made by a single enrolled user for processing. A maximum of 100 events can be included in a single request.
42
+
43
+ <b>Required scopes:</b> `attributions:write`
44
+
45
+ Parameters
46
+ ----------
47
+ organization_id : OrganizationId
48
+
49
+ user_id : UserId
50
+
51
+ data : typing.Sequence[CreateAttributionRequestUnion]
52
+ Discriminated union representing the request body for submitting attribution events.
53
+ Use `type` to distinguish between the two:
54
+ - `offerAttribution`: Events related to viewing or interacting with an offer.
55
+ - `notificationAttribution`: Events related to viewing or interacting with a notification.
56
+
57
+ request_options : typing.Optional[RequestOptions]
58
+ Request-specific configuration.
59
+
60
+ Returns
61
+ -------
62
+ CreateAttributionResponse
63
+
64
+ Examples
65
+ --------
66
+ import datetime
67
+
68
+ from kard import KardApi
69
+ from kard.users.attributions import (
70
+ CreateAttributionRequestUnion_NotificationAttribution,
71
+ CreateAttributionRequestUnion_OfferAttribution,
72
+ NotificationAttributionAttributes,
73
+ OfferAttributionAttributes,
74
+ )
75
+
76
+ client = KardApi(
77
+ client_id="YOUR_CLIENT_ID",
78
+ client_secret="YOUR_CLIENT_SECRET",
79
+ )
80
+ client.users.attributions.create(
81
+ organization_id="organization-123",
82
+ user_id="user-123",
83
+ data=[
84
+ CreateAttributionRequestUnion_OfferAttribution(
85
+ attributes=OfferAttributionAttributes(
86
+ entity_id="60e4ba1da31c5a22a144c075",
87
+ event_code="VIEW",
88
+ medium="SEARCH",
89
+ event_date=datetime.datetime.fromisoformat(
90
+ "2025-01-01 00:00:00+00:00",
91
+ ),
92
+ ),
93
+ ),
94
+ CreateAttributionRequestUnion_OfferAttribution(
95
+ attributes=OfferAttributionAttributes(
96
+ entity_id="60e4ba1da31c5a22a144c077",
97
+ event_code="IMPRESSION",
98
+ medium="EMAIL",
99
+ event_date=datetime.datetime.fromisoformat(
100
+ "2025-01-01 00:00:00+00:00",
101
+ ),
102
+ ),
103
+ ),
104
+ CreateAttributionRequestUnion_NotificationAttribution(
105
+ attributes=NotificationAttributionAttributes(
106
+ entity_id="60e4ba1da31c5a22a144c076",
107
+ event_code="IMPRESSION",
108
+ medium="PUSH",
109
+ event_date=datetime.datetime.fromisoformat(
110
+ "2025-01-01 00:00:00+00:00",
111
+ ),
112
+ ),
113
+ ),
114
+ ],
115
+ )
116
+ """
117
+ _response = self._raw_client.create(organization_id, user_id, data=data, request_options=request_options)
118
+ return _response.data
119
+
120
+
121
+ class AsyncAttributionsClient:
122
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
123
+ self._raw_client = AsyncRawAttributionsClient(client_wrapper=client_wrapper)
124
+
125
+ @property
126
+ def with_raw_response(self) -> AsyncRawAttributionsClient:
127
+ """
128
+ Retrieves a raw implementation of this client that returns raw responses.
129
+
130
+ Returns
131
+ -------
132
+ AsyncRawAttributionsClient
133
+ """
134
+ return self._raw_client
135
+
136
+ async def create(
137
+ self,
138
+ organization_id: OrganizationId,
139
+ user_id: UserId,
140
+ *,
141
+ data: typing.Sequence[CreateAttributionRequestUnion],
142
+ request_options: typing.Optional[RequestOptions] = None,
143
+ ) -> CreateAttributionResponse:
144
+ """
145
+ Call this endpoint to send attribution events made by a single enrolled user for processing. A maximum of 100 events can be included in a single request.
146
+
147
+ <b>Required scopes:</b> `attributions:write`
148
+
149
+ Parameters
150
+ ----------
151
+ organization_id : OrganizationId
152
+
153
+ user_id : UserId
154
+
155
+ data : typing.Sequence[CreateAttributionRequestUnion]
156
+ Discriminated union representing the request body for submitting attribution events.
157
+ Use `type` to distinguish between the two:
158
+ - `offerAttribution`: Events related to viewing or interacting with an offer.
159
+ - `notificationAttribution`: Events related to viewing or interacting with a notification.
160
+
161
+ request_options : typing.Optional[RequestOptions]
162
+ Request-specific configuration.
163
+
164
+ Returns
165
+ -------
166
+ CreateAttributionResponse
167
+
168
+ Examples
169
+ --------
170
+ import asyncio
171
+ import datetime
172
+
173
+ from kard import AsyncKardApi
174
+ from kard.users.attributions import (
175
+ CreateAttributionRequestUnion_NotificationAttribution,
176
+ CreateAttributionRequestUnion_OfferAttribution,
177
+ NotificationAttributionAttributes,
178
+ OfferAttributionAttributes,
179
+ )
180
+
181
+ client = AsyncKardApi(
182
+ client_id="YOUR_CLIENT_ID",
183
+ client_secret="YOUR_CLIENT_SECRET",
184
+ )
185
+
186
+
187
+ async def main() -> None:
188
+ await client.users.attributions.create(
189
+ organization_id="organization-123",
190
+ user_id="user-123",
191
+ data=[
192
+ CreateAttributionRequestUnion_OfferAttribution(
193
+ attributes=OfferAttributionAttributes(
194
+ entity_id="60e4ba1da31c5a22a144c075",
195
+ event_code="VIEW",
196
+ medium="SEARCH",
197
+ event_date=datetime.datetime.fromisoformat(
198
+ "2025-01-01 00:00:00+00:00",
199
+ ),
200
+ ),
201
+ ),
202
+ CreateAttributionRequestUnion_OfferAttribution(
203
+ attributes=OfferAttributionAttributes(
204
+ entity_id="60e4ba1da31c5a22a144c077",
205
+ event_code="IMPRESSION",
206
+ medium="EMAIL",
207
+ event_date=datetime.datetime.fromisoformat(
208
+ "2025-01-01 00:00:00+00:00",
209
+ ),
210
+ ),
211
+ ),
212
+ CreateAttributionRequestUnion_NotificationAttribution(
213
+ attributes=NotificationAttributionAttributes(
214
+ entity_id="60e4ba1da31c5a22a144c076",
215
+ event_code="IMPRESSION",
216
+ medium="PUSH",
217
+ event_date=datetime.datetime.fromisoformat(
218
+ "2025-01-01 00:00:00+00:00",
219
+ ),
220
+ ),
221
+ ),
222
+ ],
223
+ )
224
+
225
+
226
+ asyncio.run(main())
227
+ """
228
+ _response = await self._raw_client.create(organization_id, user_id, data=data, request_options=request_options)
229
+ return _response.data