sanka-sdk 0.1.0__tar.gz

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 (264) hide show
  1. sanka_sdk-0.1.0/.gitignore +8 -0
  2. sanka_sdk-0.1.0/PKG-INFO +54 -0
  3. sanka_sdk-0.1.0/README.md +41 -0
  4. sanka_sdk-0.1.0/pyproject.toml +44 -0
  5. sanka_sdk-0.1.0/src/sanka_sdk/__init__.py +117 -0
  6. sanka_sdk-0.1.0/src/sanka_sdk/ai/__init__.py +4 -0
  7. sanka_sdk-0.1.0/src/sanka_sdk/ai/client.py +257 -0
  8. sanka_sdk-0.1.0/src/sanka_sdk/ai/raw_client.py +543 -0
  9. sanka_sdk-0.1.0/src/sanka_sdk/bills/__init__.py +4 -0
  10. sanka_sdk-0.1.0/src/sanka_sdk/bills/client.py +760 -0
  11. sanka_sdk-0.1.0/src/sanka_sdk/bills/raw_client.py +1237 -0
  12. sanka_sdk-0.1.0/src/sanka_sdk/calendar/__init__.py +4 -0
  13. sanka_sdk-0.1.0/src/sanka_sdk/calendar/client.py +575 -0
  14. sanka_sdk-0.1.0/src/sanka_sdk/calendar/raw_client.py +816 -0
  15. sanka_sdk-0.1.0/src/sanka_sdk/client.py +629 -0
  16. sanka_sdk-0.1.0/src/sanka_sdk/companies/__init__.py +4 -0
  17. sanka_sdk-0.1.0/src/sanka_sdk/companies/client.py +613 -0
  18. sanka_sdk-0.1.0/src/sanka_sdk/companies/raw_client.py +1112 -0
  19. sanka_sdk-0.1.0/src/sanka_sdk/contacts/__init__.py +4 -0
  20. sanka_sdk-0.1.0/src/sanka_sdk/contacts/client.py +613 -0
  21. sanka_sdk-0.1.0/src/sanka_sdk/contacts/raw_client.py +1112 -0
  22. sanka_sdk-0.1.0/src/sanka_sdk/core/__init__.py +34 -0
  23. sanka_sdk-0.1.0/src/sanka_sdk/core/api_error.py +23 -0
  24. sanka_sdk-0.1.0/src/sanka_sdk/core/client_wrapper.py +84 -0
  25. sanka_sdk-0.1.0/src/sanka_sdk/core/datetime_utils.py +28 -0
  26. sanka_sdk-0.1.0/src/sanka_sdk/core/file.py +67 -0
  27. sanka_sdk-0.1.0/src/sanka_sdk/core/force_multipart.py +18 -0
  28. sanka_sdk-0.1.0/src/sanka_sdk/core/http_client.py +543 -0
  29. sanka_sdk-0.1.0/src/sanka_sdk/core/http_response.py +55 -0
  30. sanka_sdk-0.1.0/src/sanka_sdk/core/http_sse/__init__.py +42 -0
  31. sanka_sdk-0.1.0/src/sanka_sdk/core/http_sse/_api.py +112 -0
  32. sanka_sdk-0.1.0/src/sanka_sdk/core/http_sse/_decoders.py +61 -0
  33. sanka_sdk-0.1.0/src/sanka_sdk/core/http_sse/_exceptions.py +7 -0
  34. sanka_sdk-0.1.0/src/sanka_sdk/core/http_sse/_models.py +17 -0
  35. sanka_sdk-0.1.0/src/sanka_sdk/core/jsonable_encoder.py +100 -0
  36. sanka_sdk-0.1.0/src/sanka_sdk/core/pydantic_utilities.py +260 -0
  37. sanka_sdk-0.1.0/src/sanka_sdk/core/query_encoder.py +58 -0
  38. sanka_sdk-0.1.0/src/sanka_sdk/core/remove_none_from_dict.py +11 -0
  39. sanka_sdk-0.1.0/src/sanka_sdk/core/request_options.py +35 -0
  40. sanka_sdk-0.1.0/src/sanka_sdk/core/serialization.py +276 -0
  41. sanka_sdk-0.1.0/src/sanka_sdk/core/unchecked_base_model.py +376 -0
  42. sanka_sdk-0.1.0/src/sanka_sdk/deals/__init__.py +4 -0
  43. sanka_sdk-0.1.0/src/sanka_sdk/deals/client.py +765 -0
  44. sanka_sdk-0.1.0/src/sanka_sdk/deals/raw_client.py +1300 -0
  45. sanka_sdk-0.1.0/src/sanka_sdk/disbursements/__init__.py +4 -0
  46. sanka_sdk-0.1.0/src/sanka_sdk/disbursements/client.py +728 -0
  47. sanka_sdk-0.1.0/src/sanka_sdk/disbursements/raw_client.py +1205 -0
  48. sanka_sdk-0.1.0/src/sanka_sdk/environment.py +7 -0
  49. sanka_sdk-0.1.0/src/sanka_sdk/errors/__init__.py +4 -0
  50. sanka_sdk-0.1.0/src/sanka_sdk/errors/bad_gateway_error.py +11 -0
  51. sanka_sdk-0.1.0/src/sanka_sdk/errors/bad_request_error.py +10 -0
  52. sanka_sdk-0.1.0/src/sanka_sdk/errors/conflict_error.py +10 -0
  53. sanka_sdk-0.1.0/src/sanka_sdk/errors/forbidden_error.py +10 -0
  54. sanka_sdk-0.1.0/src/sanka_sdk/errors/internal_server_error.py +10 -0
  55. sanka_sdk-0.1.0/src/sanka_sdk/errors/not_found_error.py +10 -0
  56. sanka_sdk-0.1.0/src/sanka_sdk/errors/service_unavailable_error.py +11 -0
  57. sanka_sdk-0.1.0/src/sanka_sdk/errors/unauthorized_error.py +10 -0
  58. sanka_sdk-0.1.0/src/sanka_sdk/estimates/__init__.py +4 -0
  59. sanka_sdk-0.1.0/src/sanka_sdk/estimates/client.py +728 -0
  60. sanka_sdk-0.1.0/src/sanka_sdk/estimates/raw_client.py +1139 -0
  61. sanka_sdk-0.1.0/src/sanka_sdk/expenses/__init__.py +4 -0
  62. sanka_sdk-0.1.0/src/sanka_sdk/expenses/client.py +753 -0
  63. sanka_sdk-0.1.0/src/sanka_sdk/expenses/raw_client.py +1321 -0
  64. sanka_sdk-0.1.0/src/sanka_sdk/inventories/__init__.py +4 -0
  65. sanka_sdk-0.1.0/src/sanka_sdk/inventories/client.py +648 -0
  66. sanka_sdk-0.1.0/src/sanka_sdk/inventories/raw_client.py +1059 -0
  67. sanka_sdk-0.1.0/src/sanka_sdk/inventory_transactions/__init__.py +4 -0
  68. sanka_sdk-0.1.0/src/sanka_sdk/inventory_transactions/client.py +624 -0
  69. sanka_sdk-0.1.0/src/sanka_sdk/inventory_transactions/raw_client.py +991 -0
  70. sanka_sdk-0.1.0/src/sanka_sdk/invoices/__init__.py +4 -0
  71. sanka_sdk-0.1.0/src/sanka_sdk/invoices/client.py +728 -0
  72. sanka_sdk-0.1.0/src/sanka_sdk/invoices/raw_client.py +1139 -0
  73. sanka_sdk-0.1.0/src/sanka_sdk/items/__init__.py +4 -0
  74. sanka_sdk-0.1.0/src/sanka_sdk/items/client.py +594 -0
  75. sanka_sdk-0.1.0/src/sanka_sdk/items/raw_client.py +999 -0
  76. sanka_sdk-0.1.0/src/sanka_sdk/locations/__init__.py +4 -0
  77. sanka_sdk-0.1.0/src/sanka_sdk/locations/client.py +628 -0
  78. sanka_sdk-0.1.0/src/sanka_sdk/locations/raw_client.py +1065 -0
  79. sanka_sdk-0.1.0/src/sanka_sdk/meters/__init__.py +4 -0
  80. sanka_sdk-0.1.0/src/sanka_sdk/meters/client.py +688 -0
  81. sanka_sdk-0.1.0/src/sanka_sdk/meters/raw_client.py +1125 -0
  82. sanka_sdk-0.1.0/src/sanka_sdk/orders/__init__.py +4 -0
  83. sanka_sdk-0.1.0/src/sanka_sdk/orders/client.py +659 -0
  84. sanka_sdk-0.1.0/src/sanka_sdk/orders/raw_client.py +1221 -0
  85. sanka_sdk-0.1.0/src/sanka_sdk/payments/__init__.py +4 -0
  86. sanka_sdk-0.1.0/src/sanka_sdk/payments/client.py +688 -0
  87. sanka_sdk-0.1.0/src/sanka_sdk/payments/raw_client.py +1125 -0
  88. sanka_sdk-0.1.0/src/sanka_sdk/properties/__init__.py +4 -0
  89. sanka_sdk-0.1.0/src/sanka_sdk/properties/client.py +759 -0
  90. sanka_sdk-0.1.0/src/sanka_sdk/properties/raw_client.py +1224 -0
  91. sanka_sdk-0.1.0/src/sanka_sdk/public_auth/__init__.py +4 -0
  92. sanka_sdk-0.1.0/src/sanka_sdk/public_auth/client.py +104 -0
  93. sanka_sdk-0.1.0/src/sanka_sdk/public_auth/raw_client.py +135 -0
  94. sanka_sdk-0.1.0/src/sanka_sdk/purchase_orders/__init__.py +4 -0
  95. sanka_sdk-0.1.0/src/sanka_sdk/purchase_orders/client.py +696 -0
  96. sanka_sdk-0.1.0/src/sanka_sdk/purchase_orders/raw_client.py +1173 -0
  97. sanka_sdk-0.1.0/src/sanka_sdk/py.typed +0 -0
  98. sanka_sdk-0.1.0/src/sanka_sdk/reports/__init__.py +4 -0
  99. sanka_sdk-0.1.0/src/sanka_sdk/reports/client.py +511 -0
  100. sanka_sdk-0.1.0/src/sanka_sdk/reports/raw_client.py +988 -0
  101. sanka_sdk-0.1.0/src/sanka_sdk/slips/__init__.py +4 -0
  102. sanka_sdk-0.1.0/src/sanka_sdk/slips/client.py +728 -0
  103. sanka_sdk-0.1.0/src/sanka_sdk/slips/raw_client.py +1205 -0
  104. sanka_sdk-0.1.0/src/sanka_sdk/subscriptions/__init__.py +4 -0
  105. sanka_sdk-0.1.0/src/sanka_sdk/subscriptions/client.py +572 -0
  106. sanka_sdk-0.1.0/src/sanka_sdk/subscriptions/raw_client.py +982 -0
  107. sanka_sdk-0.1.0/src/sanka_sdk/tickets/__init__.py +4 -0
  108. sanka_sdk-0.1.0/src/sanka_sdk/tickets/client.py +800 -0
  109. sanka_sdk-0.1.0/src/sanka_sdk/tickets/raw_client.py +1517 -0
  110. sanka_sdk-0.1.0/src/sanka_sdk/types/__init__.py +4 -0
  111. sanka_sdk-0.1.0/src/sanka_sdk/types/ai_error_response.py +22 -0
  112. sanka_sdk-0.1.0/src/sanka_sdk/types/bill_schema.py +32 -0
  113. sanka_sdk-0.1.0/src/sanka_sdk/types/bills_error_response.py +23 -0
  114. sanka_sdk-0.1.0/src/sanka_sdk/types/bulk_order_in.py +30 -0
  115. sanka_sdk-0.1.0/src/sanka_sdk/types/bulk_order_item_in.py +27 -0
  116. sanka_sdk-0.1.0/src/sanka_sdk/types/bulk_order_result.py +23 -0
  117. sanka_sdk-0.1.0/src/sanka_sdk/types/bulk_orders_response.py +24 -0
  118. sanka_sdk-0.1.0/src/sanka_sdk/types/calendar_day_schedule_schema.py +24 -0
  119. sanka_sdk-0.1.0/src/sanka_sdk/types/calendar_error_response.py +22 -0
  120. sanka_sdk-0.1.0/src/sanka_sdk/types/calendar_schedule_slot_schema.py +21 -0
  121. sanka_sdk-0.1.0/src/sanka_sdk/types/calendar_workspace_schema.py +23 -0
  122. sanka_sdk-0.1.0/src/sanka_sdk/types/case_schema.py +37 -0
  123. sanka_sdk-0.1.0/src/sanka_sdk/types/cases_error_response.py +22 -0
  124. sanka_sdk-0.1.0/src/sanka_sdk/types/commerce_meter_schema.py +36 -0
  125. sanka_sdk-0.1.0/src/sanka_sdk/types/commerce_meter_schema_meter_id.py +5 -0
  126. sanka_sdk-0.1.0/src/sanka_sdk/types/companies_error_response.py +22 -0
  127. sanka_sdk-0.1.0/src/sanka_sdk/types/companies_list_response.py +26 -0
  128. sanka_sdk-0.1.0/src/sanka_sdk/types/company_schema.py +30 -0
  129. sanka_sdk-0.1.0/src/sanka_sdk/types/contact_schema.py +28 -0
  130. sanka_sdk-0.1.0/src/sanka_sdk/types/contacts_error_response.py +22 -0
  131. sanka_sdk-0.1.0/src/sanka_sdk/types/contacts_list_response.py +26 -0
  132. sanka_sdk-0.1.0/src/sanka_sdk/types/disbursement_schema.py +30 -0
  133. sanka_sdk-0.1.0/src/sanka_sdk/types/disbursements_error_response.py +23 -0
  134. sanka_sdk-0.1.0/src/sanka_sdk/types/enrich_company_seed.py +22 -0
  135. sanka_sdk-0.1.0/src/sanka_sdk/types/enrich_response.py +23 -0
  136. sanka_sdk-0.1.0/src/sanka_sdk/types/enrich_response_payload.py +30 -0
  137. sanka_sdk-0.1.0/src/sanka_sdk/types/estimate_schema.py +31 -0
  138. sanka_sdk-0.1.0/src/sanka_sdk/types/estimates_error_response.py +22 -0
  139. sanka_sdk-0.1.0/src/sanka_sdk/types/expense_schema.py +32 -0
  140. sanka_sdk-0.1.0/src/sanka_sdk/types/expenses_error_response.py +23 -0
  141. sanka_sdk-0.1.0/src/sanka_sdk/types/inventories_error_response.py +23 -0
  142. sanka_sdk-0.1.0/src/sanka_sdk/types/inventory_transaction_schema.py +39 -0
  143. sanka_sdk-0.1.0/src/sanka_sdk/types/inventory_transaction_schema_inventory_id.py +5 -0
  144. sanka_sdk-0.1.0/src/sanka_sdk/types/inventory_transaction_schema_transaction_id.py +5 -0
  145. sanka_sdk-0.1.0/src/sanka_sdk/types/inventory_transactions_error_response.py +23 -0
  146. sanka_sdk-0.1.0/src/sanka_sdk/types/inventory_warehouse_schema.py +35 -0
  147. sanka_sdk-0.1.0/src/sanka_sdk/types/inventory_warehouse_schema_id_iw.py +5 -0
  148. sanka_sdk-0.1.0/src/sanka_sdk/types/invoice_schema.py +31 -0
  149. sanka_sdk-0.1.0/src/sanka_sdk/types/invoices_error_response.py +22 -0
  150. sanka_sdk-0.1.0/src/sanka_sdk/types/items_error_response.py +22 -0
  151. sanka_sdk-0.1.0/src/sanka_sdk/types/locations_error_response.py +22 -0
  152. sanka_sdk-0.1.0/src/sanka_sdk/types/meters_error_response.py +22 -0
  153. sanka_sdk-0.1.0/src/sanka_sdk/types/orders_error_response.py +22 -0
  154. sanka_sdk-0.1.0/src/sanka_sdk/types/orders_list_response.py +25 -0
  155. sanka_sdk-0.1.0/src/sanka_sdk/types/payments_error_response.py +22 -0
  156. sanka_sdk-0.1.0/src/sanka_sdk/types/public_auth_error_response.py +22 -0
  157. sanka_sdk-0.1.0/src/sanka_sdk/types/public_auth_whoami_payload.py +33 -0
  158. sanka_sdk-0.1.0/src/sanka_sdk/types/public_auth_whoami_response.py +23 -0
  159. sanka_sdk-0.1.0/src/sanka_sdk/types/public_bill_request.py +36 -0
  160. sanka_sdk-0.1.0/src/sanka_sdk/types/public_bill_response.py +24 -0
  161. sanka_sdk-0.1.0/src/sanka_sdk/types/public_calendar_attendance_schema.py +29 -0
  162. sanka_sdk-0.1.0/src/sanka_sdk/types/public_calendar_availability_day_schema.py +23 -0
  163. sanka_sdk-0.1.0/src/sanka_sdk/types/public_calendar_availability_response.py +24 -0
  164. sanka_sdk-0.1.0/src/sanka_sdk/types/public_calendar_bootstrap_response.py +29 -0
  165. sanka_sdk-0.1.0/src/sanka_sdk/types/public_calendar_event_schema.py +33 -0
  166. sanka_sdk-0.1.0/src/sanka_sdk/types/public_calendar_mutation_response.py +26 -0
  167. sanka_sdk-0.1.0/src/sanka_sdk/types/public_case_pipeline_schema.py +26 -0
  168. sanka_sdk-0.1.0/src/sanka_sdk/types/public_case_pipeline_stage_schema.py +24 -0
  169. sanka_sdk-0.1.0/src/sanka_sdk/types/public_case_request.py +56 -0
  170. sanka_sdk-0.1.0/src/sanka_sdk/types/public_case_response.py +24 -0
  171. sanka_sdk-0.1.0/src/sanka_sdk/types/public_company_request.py +27 -0
  172. sanka_sdk-0.1.0/src/sanka_sdk/types/public_company_response.py +24 -0
  173. sanka_sdk-0.1.0/src/sanka_sdk/types/public_contact_request.py +27 -0
  174. sanka_sdk-0.1.0/src/sanka_sdk/types/public_contact_response.py +24 -0
  175. sanka_sdk-0.1.0/src/sanka_sdk/types/public_create_report_response.py +25 -0
  176. sanka_sdk-0.1.0/src/sanka_sdk/types/public_delete_report_response.py +23 -0
  177. sanka_sdk-0.1.0/src/sanka_sdk/types/public_disbursement_request.py +34 -0
  178. sanka_sdk-0.1.0/src/sanka_sdk/types/public_disbursement_response.py +24 -0
  179. sanka_sdk-0.1.0/src/sanka_sdk/types/public_estimate_request.py +34 -0
  180. sanka_sdk-0.1.0/src/sanka_sdk/types/public_estimate_response.py +24 -0
  181. sanka_sdk-0.1.0/src/sanka_sdk/types/public_expense_attachment_file_ref.py +22 -0
  182. sanka_sdk-0.1.0/src/sanka_sdk/types/public_expense_attachment_payload.py +21 -0
  183. sanka_sdk-0.1.0/src/sanka_sdk/types/public_expense_file_upload_response.py +23 -0
  184. sanka_sdk-0.1.0/src/sanka_sdk/types/public_expense_request.py +32 -0
  185. sanka_sdk-0.1.0/src/sanka_sdk/types/public_expense_response.py +24 -0
  186. sanka_sdk-0.1.0/src/sanka_sdk/types/public_inventory_request.py +32 -0
  187. sanka_sdk-0.1.0/src/sanka_sdk/types/public_inventory_response.py +25 -0
  188. sanka_sdk-0.1.0/src/sanka_sdk/types/public_inventory_transaction_request.py +35 -0
  189. sanka_sdk-0.1.0/src/sanka_sdk/types/public_inventory_transaction_response.py +24 -0
  190. sanka_sdk-0.1.0/src/sanka_sdk/types/public_invoice_request.py +34 -0
  191. sanka_sdk-0.1.0/src/sanka_sdk/types/public_invoice_response.py +24 -0
  192. sanka_sdk-0.1.0/src/sanka_sdk/types/public_item_request.py +29 -0
  193. sanka_sdk-0.1.0/src/sanka_sdk/types/public_item_response.py +24 -0
  194. sanka_sdk-0.1.0/src/sanka_sdk/types/public_location_request.py +30 -0
  195. sanka_sdk-0.1.0/src/sanka_sdk/types/public_location_response.py +24 -0
  196. sanka_sdk-0.1.0/src/sanka_sdk/types/public_meter_request.py +39 -0
  197. sanka_sdk-0.1.0/src/sanka_sdk/types/public_meter_response.py +24 -0
  198. sanka_sdk-0.1.0/src/sanka_sdk/types/public_order_delete_response.py +24 -0
  199. sanka_sdk-0.1.0/src/sanka_sdk/types/public_order_detail_schema.py +33 -0
  200. sanka_sdk-0.1.0/src/sanka_sdk/types/public_order_request.py +29 -0
  201. sanka_sdk-0.1.0/src/sanka_sdk/types/public_payment_request.py +39 -0
  202. sanka_sdk-0.1.0/src/sanka_sdk/types/public_payment_response.py +24 -0
  203. sanka_sdk-0.1.0/src/sanka_sdk/types/public_property_error_response.py +22 -0
  204. sanka_sdk-0.1.0/src/sanka_sdk/types/public_property_mutation_response.py +24 -0
  205. sanka_sdk-0.1.0/src/sanka_sdk/types/public_property_schema.py +41 -0
  206. sanka_sdk-0.1.0/src/sanka_sdk/types/public_property_schema_choice_values.py +5 -0
  207. sanka_sdk-0.1.0/src/sanka_sdk/types/public_property_upsert_request.py +34 -0
  208. sanka_sdk-0.1.0/src/sanka_sdk/types/public_property_upsert_request_choice_values.py +5 -0
  209. sanka_sdk-0.1.0/src/sanka_sdk/types/public_purchase_order_request.py +32 -0
  210. sanka_sdk-0.1.0/src/sanka_sdk/types/public_purchase_order_response.py +24 -0
  211. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_detail_schema.py +29 -0
  212. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_error_response.py +21 -0
  213. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_filter_input_schema.py +20 -0
  214. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_filter_schema.py +25 -0
  215. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_filters_schema.py +21 -0
  216. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_list_item_schema.py +27 -0
  217. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_metadata_request.py +39 -0
  218. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_metric_request.py +34 -0
  219. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_metric_schema.py +29 -0
  220. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_panel_detail_schema.py +38 -0
  221. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_panel_request.py +43 -0
  222. sanka_sdk-0.1.0/src/sanka_sdk/types/public_report_type_schema.py +20 -0
  223. sanka_sdk-0.1.0/src/sanka_sdk/types/public_slip_request.py +34 -0
  224. sanka_sdk-0.1.0/src/sanka_sdk/types/public_slip_response.py +24 -0
  225. sanka_sdk-0.1.0/src/sanka_sdk/types/public_subscription_delete_response.py +24 -0
  226. sanka_sdk-0.1.0/src/sanka_sdk/types/public_ticket_request.py +31 -0
  227. sanka_sdk-0.1.0/src/sanka_sdk/types/public_ticket_response.py +24 -0
  228. sanka_sdk-0.1.0/src/sanka_sdk/types/public_update_report_metadata_request.py +41 -0
  229. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_action_schema.py +28 -0
  230. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_actions_response.py +23 -0
  231. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_condition_group_response.py +24 -0
  232. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_condition_response.py +31 -0
  233. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_detail_response.py +31 -0
  234. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_list_item_response.py +29 -0
  235. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_list_response.py +25 -0
  236. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_node_response.py +34 -0
  237. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_response.py +26 -0
  238. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_run_payload.py +26 -0
  239. sanka_sdk-0.1.0/src/sanka_sdk/types/public_workflow_run_response.py +23 -0
  240. sanka_sdk-0.1.0/src/sanka_sdk/types/purchase_order_schema.py +30 -0
  241. sanka_sdk-0.1.0/src/sanka_sdk/types/purchase_orders_error_response.py +23 -0
  242. sanka_sdk-0.1.0/src/sanka_sdk/types/receipt_schema.py +31 -0
  243. sanka_sdk-0.1.0/src/sanka_sdk/types/score_response.py +23 -0
  244. sanka_sdk-0.1.0/src/sanka_sdk/types/score_response_payload.py +34 -0
  245. sanka_sdk-0.1.0/src/sanka_sdk/types/shop_turbo_inventory_schema.py +40 -0
  246. sanka_sdk-0.1.0/src/sanka_sdk/types/shop_turbo_item_schema.py +30 -0
  247. sanka_sdk-0.1.0/src/sanka_sdk/types/slip_schema.py +32 -0
  248. sanka_sdk-0.1.0/src/sanka_sdk/types/slips_error_response.py +23 -0
  249. sanka_sdk-0.1.0/src/sanka_sdk/types/subscription_contact_schema.py +23 -0
  250. sanka_sdk-0.1.0/src/sanka_sdk/types/subscription_detail_schema.py +37 -0
  251. sanka_sdk-0.1.0/src/sanka_sdk/types/subscription_error_response.py +22 -0
  252. sanka_sdk-0.1.0/src/sanka_sdk/types/subscription_item_input.py +23 -0
  253. sanka_sdk-0.1.0/src/sanka_sdk/types/subscription_item_schema.py +24 -0
  254. sanka_sdk-0.1.0/src/sanka_sdk/types/ticket_pipeline_schema.py +26 -0
  255. sanka_sdk-0.1.0/src/sanka_sdk/types/ticket_pipeline_stage_schema.py +25 -0
  256. sanka_sdk-0.1.0/src/sanka_sdk/types/ticket_schema.py +44 -0
  257. sanka_sdk-0.1.0/src/sanka_sdk/types/tickets_error_response.py +22 -0
  258. sanka_sdk-0.1.0/src/sanka_sdk/types/workflow_condition_group_input.py +24 -0
  259. sanka_sdk-0.1.0/src/sanka_sdk/types/workflow_condition_input.py +31 -0
  260. sanka_sdk-0.1.0/src/sanka_sdk/types/workflow_node_input.py +34 -0
  261. sanka_sdk-0.1.0/src/sanka_sdk/types/workflows_error_response.py +22 -0
  262. sanka_sdk-0.1.0/src/sanka_sdk/workflows/__init__.py +4 -0
  263. sanka_sdk-0.1.0/src/sanka_sdk/workflows/client.py +556 -0
  264. sanka_sdk-0.1.0/src/sanka_sdk/workflows/raw_client.py +1042 -0
@@ -0,0 +1,8 @@
1
+ .venv/
2
+ .ruff_cache/
3
+ __pycache__/
4
+ *.pyc
5
+ build/
6
+ dist/
7
+ .tmp-fern/
8
+ src/sanka_sdk/.fern/
@@ -0,0 +1,54 @@
1
+ Metadata-Version: 2.4
2
+ Name: sanka-sdk
3
+ Version: 0.1.0
4
+ Summary: Python SDK for the Sanka API.
5
+ Project-URL: Homepage, https://sanka.com
6
+ Project-URL: Repository, https://github.com/sankaHQ/sanka-python
7
+ Author: Sanka
8
+ Requires-Python: >=3.9
9
+ Requires-Dist: httpx<1,>=0.27
10
+ Requires-Dist: pydantic<3,>=2.7
11
+ Requires-Dist: typing-extensions>=4.9
12
+ Description-Content-Type: text/markdown
13
+
14
+ # sanka-sdk
15
+
16
+ Python SDK for the Sanka API.
17
+
18
+ This package is generated from [Sanka's OpenAPI spec](/Users/haegwan/Sites/sanka/sanka-sdks/openapi.json) using Fern, then packaged locally for `uv` and PyPI.
19
+
20
+ ## Install
21
+
22
+ ```bash
23
+ uv add sanka-sdk
24
+ ```
25
+
26
+ ## Usage
27
+
28
+ ```python
29
+ from sanka_sdk import SankaClient
30
+
31
+ client = SankaClient(token="YOUR_TOKEN")
32
+ response = client.public_auth.whoami()
33
+ print(response)
34
+ ```
35
+
36
+ ## Regenerate
37
+
38
+ ```bash
39
+ ./scripts/generate_sdk.sh
40
+ ```
41
+
42
+ ## Publish
43
+
44
+ This repo includes a GitHub Actions workflow for PyPI Trusted Publishing at [.github/workflows/publish.yml](/Users/haegwan/Sites/sanka/sanka-python/.github/workflows/publish.yml).
45
+
46
+ Configure a Trusted Publisher on PyPI for:
47
+
48
+ - owner: `sankaHQ`
49
+ - repository: `sanka-python`
50
+ - workflow: `.github/workflows/publish.yml`
51
+ - environment: `pypi`
52
+
53
+ Then publish by pushing a tag like `v0.1.0` or running the workflow manually.
54
+
@@ -0,0 +1,41 @@
1
+ # sanka-sdk
2
+
3
+ Python SDK for the Sanka API.
4
+
5
+ This package is generated from [Sanka's OpenAPI spec](/Users/haegwan/Sites/sanka/sanka-sdks/openapi.json) using Fern, then packaged locally for `uv` and PyPI.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ uv add sanka-sdk
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```python
16
+ from sanka_sdk import SankaClient
17
+
18
+ client = SankaClient(token="YOUR_TOKEN")
19
+ response = client.public_auth.whoami()
20
+ print(response)
21
+ ```
22
+
23
+ ## Regenerate
24
+
25
+ ```bash
26
+ ./scripts/generate_sdk.sh
27
+ ```
28
+
29
+ ## Publish
30
+
31
+ This repo includes a GitHub Actions workflow for PyPI Trusted Publishing at [.github/workflows/publish.yml](/Users/haegwan/Sites/sanka/sanka-python/.github/workflows/publish.yml).
32
+
33
+ Configure a Trusted Publisher on PyPI for:
34
+
35
+ - owner: `sankaHQ`
36
+ - repository: `sanka-python`
37
+ - workflow: `.github/workflows/publish.yml`
38
+ - environment: `pypi`
39
+
40
+ Then publish by pushing a tag like `v0.1.0` or running the workflow manually.
41
+
@@ -0,0 +1,44 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.27.0"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "sanka-sdk"
7
+ version = "0.1.0"
8
+ description = "Python SDK for the Sanka API."
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ authors = [
12
+ { name = "Sanka" }
13
+ ]
14
+ dependencies = [
15
+ "httpx>=0.27,<1",
16
+ "pydantic>=2.7,<3",
17
+ "typing-extensions>=4.9"
18
+ ]
19
+
20
+ [project.urls]
21
+ Homepage = "https://sanka.com"
22
+ Repository = "https://github.com/sankaHQ/sanka-python"
23
+
24
+ [dependency-groups]
25
+ dev = [
26
+ "ruff>=0.12.0",
27
+ ]
28
+
29
+ [tool.hatch.build.targets.wheel]
30
+ packages = ["src/sanka_sdk"]
31
+
32
+ [tool.hatch.build.targets.sdist]
33
+ include = [
34
+ "README.md",
35
+ "pyproject.toml",
36
+ "src/sanka_sdk",
37
+ ]
38
+
39
+ [tool.ruff]
40
+ line-length = 120
41
+ target-version = "py39"
42
+
43
+ [tool.ruff.lint.per-file-ignores]
44
+ "src/sanka_sdk/**/*.py" = ["E402", "E711", "E721", "E722", "F841"]
@@ -0,0 +1,117 @@
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 . import (
10
+ ai,
11
+ bills,
12
+ calendar,
13
+ companies,
14
+ contacts,
15
+ deals,
16
+ disbursements,
17
+ estimates,
18
+ expenses,
19
+ inventories,
20
+ inventory_transactions,
21
+ invoices,
22
+ items,
23
+ locations,
24
+ meters,
25
+ orders,
26
+ payments,
27
+ properties,
28
+ public_auth,
29
+ purchase_orders,
30
+ reports,
31
+ slips,
32
+ subscriptions,
33
+ tickets,
34
+ workflows,
35
+ )
36
+ from .client import AsyncSankaClient, SankaClient
37
+ _dynamic_imports: typing.Dict[str, str] = {
38
+ "AsyncSankaClient": ".client",
39
+ "SankaClient": ".client",
40
+ "ai": ".ai",
41
+ "bills": ".bills",
42
+ "calendar": ".calendar",
43
+ "companies": ".companies",
44
+ "contacts": ".contacts",
45
+ "deals": ".deals",
46
+ "disbursements": ".disbursements",
47
+ "estimates": ".estimates",
48
+ "expenses": ".expenses",
49
+ "inventories": ".inventories",
50
+ "inventory_transactions": ".inventory_transactions",
51
+ "invoices": ".invoices",
52
+ "items": ".items",
53
+ "locations": ".locations",
54
+ "meters": ".meters",
55
+ "orders": ".orders",
56
+ "payments": ".payments",
57
+ "properties": ".properties",
58
+ "public_auth": ".public_auth",
59
+ "purchase_orders": ".purchase_orders",
60
+ "reports": ".reports",
61
+ "slips": ".slips",
62
+ "subscriptions": ".subscriptions",
63
+ "tickets": ".tickets",
64
+ "workflows": ".workflows",
65
+ }
66
+
67
+
68
+ def __getattr__(attr_name: str) -> typing.Any:
69
+ module_name = _dynamic_imports.get(attr_name)
70
+ if module_name is None:
71
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
72
+ try:
73
+ module = import_module(module_name, __package__)
74
+ if module_name == f".{attr_name}":
75
+ return module
76
+ else:
77
+ return getattr(module, attr_name)
78
+ except ImportError as e:
79
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
80
+ except AttributeError as e:
81
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
82
+
83
+
84
+ def __dir__():
85
+ lazy_attrs = list(_dynamic_imports.keys())
86
+ return sorted(lazy_attrs)
87
+
88
+
89
+ __all__ = [
90
+ "AsyncSankaClient",
91
+ "SankaClient",
92
+ "ai",
93
+ "bills",
94
+ "calendar",
95
+ "companies",
96
+ "contacts",
97
+ "deals",
98
+ "disbursements",
99
+ "estimates",
100
+ "expenses",
101
+ "inventories",
102
+ "inventory_transactions",
103
+ "invoices",
104
+ "items",
105
+ "locations",
106
+ "meters",
107
+ "orders",
108
+ "payments",
109
+ "properties",
110
+ "public_auth",
111
+ "purchase_orders",
112
+ "reports",
113
+ "slips",
114
+ "subscriptions",
115
+ "tickets",
116
+ "workflows",
117
+ ]
@@ -0,0 +1,4 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
@@ -0,0 +1,257 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.request_options import RequestOptions
7
+ from ..types.enrich_company_seed import EnrichCompanySeed
8
+ from ..types.enrich_response import EnrichResponse
9
+ from ..types.score_response import ScoreResponse
10
+ from .raw_client import AsyncRawAiClient, RawAiClient
11
+
12
+ # this is used as the default value for optional parameters
13
+ OMIT = typing.cast(typing.Any, ...)
14
+
15
+
16
+ class AiClient:
17
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
18
+ self._raw_client = RawAiClient(client_wrapper=client_wrapper)
19
+
20
+ @property
21
+ def with_raw_response(self) -> RawAiClient:
22
+ """
23
+ Retrieves a raw implementation of this client that returns raw responses.
24
+
25
+ Returns
26
+ -------
27
+ RawAiClient
28
+ """
29
+ return self._raw_client
30
+
31
+ def api_routers_v_1_ai_api_enrich_record(
32
+ self,
33
+ *,
34
+ object_type: str,
35
+ record_id: typing.Optional[str] = OMIT,
36
+ seed: typing.Optional[EnrichCompanySeed] = OMIT,
37
+ custom_field_map: typing.Optional[typing.Dict[str, str]] = OMIT,
38
+ dry_run: typing.Optional[bool] = OMIT,
39
+ force_refresh: typing.Optional[bool] = OMIT,
40
+ request_options: typing.Optional[RequestOptions] = None,
41
+ ) -> EnrichResponse:
42
+ """
43
+ Parameters
44
+ ----------
45
+ object_type : str
46
+
47
+ record_id : typing.Optional[str]
48
+
49
+ seed : typing.Optional[EnrichCompanySeed]
50
+
51
+ custom_field_map : typing.Optional[typing.Dict[str, str]]
52
+
53
+ dry_run : typing.Optional[bool]
54
+
55
+ force_refresh : typing.Optional[bool]
56
+
57
+ request_options : typing.Optional[RequestOptions]
58
+ Request-specific configuration.
59
+
60
+ Returns
61
+ -------
62
+ EnrichResponse
63
+ OK
64
+
65
+ Examples
66
+ --------
67
+ from sanka_sdk import SankaClient
68
+
69
+ client = SankaClient(
70
+ token="YOUR_TOKEN",
71
+ )
72
+ client.ai.api_routers_v_1_ai_api_enrich_record(
73
+ object_type="object_type",
74
+ )
75
+ """
76
+ _response = self._raw_client.api_routers_v_1_ai_api_enrich_record(
77
+ object_type=object_type,
78
+ record_id=record_id,
79
+ seed=seed,
80
+ custom_field_map=custom_field_map,
81
+ dry_run=dry_run,
82
+ force_refresh=force_refresh,
83
+ request_options=request_options,
84
+ )
85
+ return _response.data
86
+
87
+ def api_routers_v_1_ai_api_score_record(
88
+ self,
89
+ *,
90
+ object_type: str,
91
+ record_id: str,
92
+ score_model_id: typing.Optional[str] = OMIT,
93
+ request_options: typing.Optional[RequestOptions] = None,
94
+ ) -> ScoreResponse:
95
+ """
96
+ Parameters
97
+ ----------
98
+ object_type : str
99
+
100
+ record_id : str
101
+
102
+ score_model_id : typing.Optional[str]
103
+
104
+ request_options : typing.Optional[RequestOptions]
105
+ Request-specific configuration.
106
+
107
+ Returns
108
+ -------
109
+ ScoreResponse
110
+ OK
111
+
112
+ Examples
113
+ --------
114
+ from sanka_sdk import SankaClient
115
+
116
+ client = SankaClient(
117
+ token="YOUR_TOKEN",
118
+ )
119
+ client.ai.api_routers_v_1_ai_api_score_record(
120
+ object_type="object_type",
121
+ record_id="record_id",
122
+ )
123
+ """
124
+ _response = self._raw_client.api_routers_v_1_ai_api_score_record(
125
+ object_type=object_type, record_id=record_id, score_model_id=score_model_id, request_options=request_options
126
+ )
127
+ return _response.data
128
+
129
+
130
+ class AsyncAiClient:
131
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
132
+ self._raw_client = AsyncRawAiClient(client_wrapper=client_wrapper)
133
+
134
+ @property
135
+ def with_raw_response(self) -> AsyncRawAiClient:
136
+ """
137
+ Retrieves a raw implementation of this client that returns raw responses.
138
+
139
+ Returns
140
+ -------
141
+ AsyncRawAiClient
142
+ """
143
+ return self._raw_client
144
+
145
+ async def api_routers_v_1_ai_api_enrich_record(
146
+ self,
147
+ *,
148
+ object_type: str,
149
+ record_id: typing.Optional[str] = OMIT,
150
+ seed: typing.Optional[EnrichCompanySeed] = OMIT,
151
+ custom_field_map: typing.Optional[typing.Dict[str, str]] = OMIT,
152
+ dry_run: typing.Optional[bool] = OMIT,
153
+ force_refresh: typing.Optional[bool] = OMIT,
154
+ request_options: typing.Optional[RequestOptions] = None,
155
+ ) -> EnrichResponse:
156
+ """
157
+ Parameters
158
+ ----------
159
+ object_type : str
160
+
161
+ record_id : typing.Optional[str]
162
+
163
+ seed : typing.Optional[EnrichCompanySeed]
164
+
165
+ custom_field_map : typing.Optional[typing.Dict[str, str]]
166
+
167
+ dry_run : typing.Optional[bool]
168
+
169
+ force_refresh : typing.Optional[bool]
170
+
171
+ request_options : typing.Optional[RequestOptions]
172
+ Request-specific configuration.
173
+
174
+ Returns
175
+ -------
176
+ EnrichResponse
177
+ OK
178
+
179
+ Examples
180
+ --------
181
+ import asyncio
182
+
183
+ from sanka_sdk import AsyncSankaClient
184
+
185
+ client = AsyncSankaClient(
186
+ token="YOUR_TOKEN",
187
+ )
188
+
189
+
190
+ async def main() -> None:
191
+ await client.ai.api_routers_v_1_ai_api_enrich_record(
192
+ object_type="object_type",
193
+ )
194
+
195
+
196
+ asyncio.run(main())
197
+ """
198
+ _response = await self._raw_client.api_routers_v_1_ai_api_enrich_record(
199
+ object_type=object_type,
200
+ record_id=record_id,
201
+ seed=seed,
202
+ custom_field_map=custom_field_map,
203
+ dry_run=dry_run,
204
+ force_refresh=force_refresh,
205
+ request_options=request_options,
206
+ )
207
+ return _response.data
208
+
209
+ async def api_routers_v_1_ai_api_score_record(
210
+ self,
211
+ *,
212
+ object_type: str,
213
+ record_id: str,
214
+ score_model_id: typing.Optional[str] = OMIT,
215
+ request_options: typing.Optional[RequestOptions] = None,
216
+ ) -> ScoreResponse:
217
+ """
218
+ Parameters
219
+ ----------
220
+ object_type : str
221
+
222
+ record_id : str
223
+
224
+ score_model_id : typing.Optional[str]
225
+
226
+ request_options : typing.Optional[RequestOptions]
227
+ Request-specific configuration.
228
+
229
+ Returns
230
+ -------
231
+ ScoreResponse
232
+ OK
233
+
234
+ Examples
235
+ --------
236
+ import asyncio
237
+
238
+ from sanka_sdk import AsyncSankaClient
239
+
240
+ client = AsyncSankaClient(
241
+ token="YOUR_TOKEN",
242
+ )
243
+
244
+
245
+ async def main() -> None:
246
+ await client.ai.api_routers_v_1_ai_api_score_record(
247
+ object_type="object_type",
248
+ record_id="record_id",
249
+ )
250
+
251
+
252
+ asyncio.run(main())
253
+ """
254
+ _response = await self._raw_client.api_routers_v_1_ai_api_score_record(
255
+ object_type=object_type, record_id=record_id, score_model_id=score_model_id, request_options=request_options
256
+ )
257
+ return _response.data