payi 0.1.0a58__tar.gz → 0.1.0a60__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 (205) hide show
  1. payi-0.1.0a60/.release-please-manifest.json +3 -0
  2. {payi-0.1.0a58 → payi-0.1.0a60}/CHANGELOG.md +16 -0
  3. {payi-0.1.0a58 → payi-0.1.0a60}/PKG-INFO +91 -28
  4. {payi-0.1.0a58 → payi-0.1.0a60}/README.md +90 -27
  5. {payi-0.1.0a58 → payi-0.1.0a60}/api.md +48 -19
  6. {payi-0.1.0a58 → payi-0.1.0a60}/pyproject.toml +1 -1
  7. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_version.py +1 -1
  8. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/lib/instrument.py +128 -18
  9. payi-0.1.0a60/src/payi/pagination.py +50 -0
  10. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/categories/categories.py +108 -23
  11. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/categories/resources.py +42 -12
  12. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/experiences/types/types.py +37 -17
  13. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/limits/limits.py +21 -30
  14. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/use_cases/__init__.py +14 -0
  15. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/use_cases/definitions/__init__.py +14 -0
  16. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/use_cases/definitions/definitions.py +68 -18
  17. payi-0.1.0a60/src/payi/resources/use_cases/definitions/kpis.py +584 -0
  18. payi-0.1.0a60/src/payi/resources/use_cases/kpis.py +469 -0
  19. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/use_cases/use_cases.py +32 -0
  20. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/__init__.py +3 -3
  21. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/categories/__init__.py +1 -1
  22. payi-0.1.0a60/src/payi/types/categories/resource_list_params.py +17 -0
  23. payi-0.1.0a60/src/payi/types/category_list_params.py +15 -0
  24. payi-0.1.0a60/src/payi/types/category_list_resources_params.py +15 -0
  25. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/category_response.py +0 -5
  26. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experiences/__init__.py +0 -1
  27. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experiences/type_list_params.py +6 -1
  28. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limit_list_params.py +4 -13
  29. payi-0.1.0a60/src/payi/types/limit_list_response.py +30 -0
  30. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/use_cases/__init__.py +4 -1
  31. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/use_cases/definition_list_params.py +6 -1
  32. payi-0.1.0a60/src/payi/types/use_cases/definitions/__init__.py +13 -0
  33. payi-0.1.0a60/src/payi/types/use_cases/definitions/kpi_create_params.py +17 -0
  34. payi-0.1.0a60/src/payi/types/use_cases/definitions/kpi_create_response.py +20 -0
  35. payi-0.1.0a60/src/payi/types/use_cases/definitions/kpi_delete_response.py +20 -0
  36. payi-0.1.0a60/src/payi/types/use_cases/definitions/kpi_list_params.py +17 -0
  37. payi-0.1.0a60/src/payi/types/use_cases/definitions/kpi_list_response.py +20 -0
  38. payi-0.1.0a60/src/payi/types/use_cases/definitions/kpi_retrieve_response.py +20 -0
  39. payi-0.1.0a60/src/payi/types/use_cases/definitions/kpi_update_params.py +16 -0
  40. payi-0.1.0a60/src/payi/types/use_cases/definitions/kpi_update_response.py +20 -0
  41. payi-0.1.0a60/src/payi/types/use_cases/kpi_create_params.py +13 -0
  42. payi-0.1.0a60/src/payi/types/use_cases/kpi_list_params.py +17 -0
  43. payi-0.1.0a60/src/payi/types/use_cases/kpi_list_response.py +21 -0
  44. payi-0.1.0a60/src/payi/types/use_cases/kpi_update_params.py +13 -0
  45. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/categories/test_resources.py +29 -7
  46. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/experiences/test_types.py +16 -12
  47. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/test_categories.py +61 -22
  48. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/test_limits.py +14 -19
  49. payi-0.1.0a60/tests/api_resources/use_cases/definitions/test_kpis.py +549 -0
  50. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/use_cases/test_definitions.py +15 -9
  51. payi-0.1.0a60/tests/api_resources/use_cases/test_kpis.py +445 -0
  52. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_client.py +54 -30
  53. payi-0.1.0a58/.release-please-manifest.json +0 -3
  54. payi-0.1.0a58/src/payi/types/categories/resource_list_response.py +0 -10
  55. payi-0.1.0a58/src/payi/types/category_list_resources_response.py +0 -10
  56. payi-0.1.0a58/src/payi/types/category_list_response.py +0 -10
  57. payi-0.1.0a58/src/payi/types/experiences/type_list_response.py +0 -10
  58. payi-0.1.0a58/src/payi/types/paged_limit_list.py +0 -52
  59. payi-0.1.0a58/src/payi/types/use_cases/definition_list_response.py +0 -10
  60. payi-0.1.0a58/src/payi/types/use_cases/definitions/__init__.py +0 -5
  61. {payi-0.1.0a58 → payi-0.1.0a60}/.gitignore +0 -0
  62. {payi-0.1.0a58 → payi-0.1.0a60}/CONTRIBUTING.md +0 -0
  63. {payi-0.1.0a58 → payi-0.1.0a60}/LICENSE +0 -0
  64. {payi-0.1.0a58 → payi-0.1.0a60}/SECURITY.md +0 -0
  65. {payi-0.1.0a58 → payi-0.1.0a60}/bin/check-release-environment +0 -0
  66. {payi-0.1.0a58 → payi-0.1.0a60}/bin/publish-pypi +0 -0
  67. {payi-0.1.0a58 → payi-0.1.0a60}/examples/.keep +0 -0
  68. {payi-0.1.0a58 → payi-0.1.0a60}/mypy.ini +0 -0
  69. {payi-0.1.0a58 → payi-0.1.0a60}/noxfile.py +0 -0
  70. {payi-0.1.0a58 → payi-0.1.0a60}/release-please-config.json +0 -0
  71. {payi-0.1.0a58 → payi-0.1.0a60}/requirements-dev.lock +0 -0
  72. {payi-0.1.0a58 → payi-0.1.0a60}/requirements.lock +0 -0
  73. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/__init__.py +0 -0
  74. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_base_client.py +0 -0
  75. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_client.py +0 -0
  76. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_compat.py +0 -0
  77. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_constants.py +0 -0
  78. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_exceptions.py +0 -0
  79. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_files.py +0 -0
  80. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_models.py +0 -0
  81. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_qs.py +0 -0
  82. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_resource.py +0 -0
  83. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_response.py +0 -0
  84. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_streaming.py +0 -0
  85. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_types.py +0 -0
  86. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/__init__.py +0 -0
  87. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/_logs.py +0 -0
  88. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/_proxy.py +0 -0
  89. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/_reflection.py +0 -0
  90. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/_streams.py +0 -0
  91. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/_sync.py +0 -0
  92. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/_transform.py +0 -0
  93. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/_typing.py +0 -0
  94. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/_utils/_utils.py +0 -0
  95. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/lib/.keep +0 -0
  96. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/lib/AnthropicInstrumentor.py +0 -0
  97. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/lib/BedrockInstrumentor.py +0 -0
  98. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/lib/OpenAIInstrumentor.py +0 -0
  99. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/lib/Stopwatch.py +0 -0
  100. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/lib/helpers.py +0 -0
  101. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/py.typed +0 -0
  102. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/__init__.py +0 -0
  103. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/categories/__init__.py +0 -0
  104. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/experiences/__init__.py +0 -0
  105. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/experiences/experiences.py +0 -0
  106. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/experiences/properties.py +0 -0
  107. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/experiences/types/__init__.py +0 -0
  108. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/experiences/types/limit_config.py +0 -0
  109. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/ingest.py +0 -0
  110. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/limits/__init__.py +0 -0
  111. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/limits/tags.py +0 -0
  112. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/requests/__init__.py +0 -0
  113. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/requests/properties.py +0 -0
  114. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/requests/requests.py +0 -0
  115. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/requests/result.py +0 -0
  116. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/use_cases/definitions/limit_config.py +0 -0
  117. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/use_cases/definitions/version.py +0 -0
  118. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/resources/use_cases/properties.py +0 -0
  119. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/bulk_ingest_response.py +0 -0
  120. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/categories/resource_create_params.py +0 -0
  121. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/category_delete_resource_response.py +0 -0
  122. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/category_delete_response.py +0 -0
  123. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/category_resource_response.py +0 -0
  124. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/cost_data.py +0 -0
  125. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/cost_details.py +0 -0
  126. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/default_response.py +0 -0
  127. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experience_instance_response.py +0 -0
  128. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experiences/experience_type.py +0 -0
  129. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experiences/property_create_params.py +0 -0
  130. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experiences/type_create_params.py +0 -0
  131. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experiences/type_update_params.py +0 -0
  132. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experiences/types/__init__.py +0 -0
  133. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/experiences/types/limit_config_create_params.py +0 -0
  134. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/ingest_bulk_params.py +0 -0
  135. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/ingest_event_param.py +0 -0
  136. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/ingest_response.py +0 -0
  137. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/ingest_units_params.py +0 -0
  138. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limit_create_params.py +0 -0
  139. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limit_history_response.py +0 -0
  140. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limit_reset_params.py +0 -0
  141. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limit_response.py +0 -0
  142. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limit_update_params.py +0 -0
  143. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/__init__.py +0 -0
  144. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/limit_tags.py +0 -0
  145. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/tag_create_params.py +0 -0
  146. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/tag_create_response.py +0 -0
  147. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/tag_delete_response.py +0 -0
  148. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/tag_list_response.py +0 -0
  149. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/tag_remove_params.py +0 -0
  150. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/tag_remove_response.py +0 -0
  151. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/tag_update_params.py +0 -0
  152. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/limits/tag_update_response.py +0 -0
  153. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/pay_i_common_models_api_router_header_info_param.py +0 -0
  154. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/requests/__init__.py +0 -0
  155. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/requests/property_create_params.py +0 -0
  156. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/requests/request_result.py +0 -0
  157. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/requests_data.py +0 -0
  158. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/shared/__init__.py +0 -0
  159. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/shared/evaluation_response.py +0 -0
  160. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/shared/pay_i_common_models_budget_management_cost_details_base.py +0 -0
  161. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/shared/pay_i_common_models_budget_management_create_limit_base.py +0 -0
  162. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/shared/properties_response.py +0 -0
  163. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/shared_params/__init__.py +0 -0
  164. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/shared_params/pay_i_common_models_budget_management_create_limit_base.py +0 -0
  165. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/total_cost_data.py +0 -0
  166. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/use_case_instance_response.py +0 -0
  167. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/use_cases/definition_create_params.py +0 -0
  168. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/use_cases/definition_update_params.py +0 -0
  169. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/use_cases/definitions/limit_config_create_params.py +0 -0
  170. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/use_cases/property_create_params.py +0 -0
  171. {payi-0.1.0a58 → payi-0.1.0a60}/src/payi/types/use_cases/use_case_definition.py +0 -0
  172. {payi-0.1.0a58 → payi-0.1.0a60}/tests/__init__.py +0 -0
  173. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/__init__.py +0 -0
  174. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/categories/__init__.py +0 -0
  175. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/experiences/__init__.py +0 -0
  176. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/experiences/test_properties.py +0 -0
  177. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/experiences/types/__init__.py +0 -0
  178. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/experiences/types/test_limit_config.py +0 -0
  179. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/limits/__init__.py +0 -0
  180. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/limits/test_tags.py +0 -0
  181. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/requests/__init__.py +0 -0
  182. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/requests/test_properties.py +0 -0
  183. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/requests/test_result.py +0 -0
  184. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/test_experiences.py +0 -0
  185. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/test_ingest.py +0 -0
  186. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/test_use_cases.py +0 -0
  187. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/use_cases/__init__.py +0 -0
  188. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/use_cases/definitions/__init__.py +0 -0
  189. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/use_cases/definitions/test_limit_config.py +0 -0
  190. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/use_cases/definitions/test_version.py +0 -0
  191. {payi-0.1.0a58 → payi-0.1.0a60}/tests/api_resources/use_cases/test_properties.py +0 -0
  192. {payi-0.1.0a58 → payi-0.1.0a60}/tests/conftest.py +0 -0
  193. {payi-0.1.0a58 → payi-0.1.0a60}/tests/sample_file.txt +0 -0
  194. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_deepcopy.py +0 -0
  195. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_extract_files.py +0 -0
  196. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_files.py +0 -0
  197. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_models.py +0 -0
  198. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_qs.py +0 -0
  199. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_required_args.py +0 -0
  200. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_response.py +0 -0
  201. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_streaming.py +0 -0
  202. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_transform.py +0 -0
  203. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_utils/test_proxy.py +0 -0
  204. {payi-0.1.0a58 → payi-0.1.0a60}/tests/test_utils/test_typing.py +0 -0
  205. {payi-0.1.0a58 → payi-0.1.0a60}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.60"
3
+ }
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.60 (2025-04-07)
4
+
5
+ Full Changelog: [v0.1.0-alpha.59...v0.1.0-alpha.60](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.59...v0.1.0-alpha.60)
6
+
7
+ ### Features
8
+
9
+ * **api:** KPIs ([#274](https://github.com/Pay-i/pay-i-python/issues/274)) ([1e6d054](https://github.com/Pay-i/pay-i-python/commit/1e6d0540471a07ac43fe9d32c5b30c1b153e5b70))
10
+
11
+ ## 0.1.0-alpha.59 (2025-04-04)
12
+
13
+ Full Changelog: [v0.1.0-alpha.58...v0.1.0-alpha.59](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.58...v0.1.0-alpha.59)
14
+
15
+ ### Chores
16
+
17
+ * **internal:** remove trailing character ([#271](https://github.com/Pay-i/pay-i-python/issues/271)) ([ea4292f](https://github.com/Pay-i/pay-i-python/commit/ea4292f2513b35ac475d494351fe77e7db2c9f57))
18
+
3
19
  ## 0.1.0-alpha.58 (2025-03-27)
4
20
 
5
21
  Full Changelog: [v0.1.0-alpha.57...v0.1.0-alpha.58](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.57...v0.1.0-alpha.58)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: payi
3
- Version: 0.1.0a58
3
+ Version: 0.1.0a60
4
4
  Summary: The official Python library for the payi API
5
5
  Project-URL: Homepage, https://github.com/Pay-i/pay-i-python
6
6
  Project-URL: Repository, https://github.com/Pay-i/pay-i-python
@@ -65,11 +65,11 @@ client = Payi(
65
65
  api_key=os.environ.get("PAYI_API_KEY"), # This is the default and can be omitted
66
66
  )
67
67
 
68
- limit_response = client.limits.create(
69
- limit_name="x",
70
- max=1,
68
+ use_case_definition = client.use_cases.definitions.create(
69
+ description="Sample Use Case Definition Description",
70
+ name="SampleUseCaseDefinition",
71
71
  )
72
- print(limit_response.request_id)
72
+ print(use_case_definition.request_id)
73
73
  ```
74
74
 
75
75
  While you can provide an `api_key` keyword argument,
@@ -92,11 +92,11 @@ client = AsyncPayi(
92
92
 
93
93
 
94
94
  async def main() -> None:
95
- limit_response = await client.limits.create(
96
- limit_name="x",
97
- max=1,
95
+ use_case_definition = await client.use_cases.definitions.create(
96
+ description="Sample Use Case Definition Description",
97
+ name="SampleUseCaseDefinition",
98
98
  )
99
- print(limit_response.request_id)
99
+ print(use_case_definition.request_id)
100
100
 
101
101
 
102
102
  asyncio.run(main())
@@ -113,6 +113,69 @@ Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typ
113
113
 
114
114
  Typed requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.
115
115
 
116
+ ## Pagination
117
+
118
+ List methods in the Payi API are paginated.
119
+
120
+ This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
121
+
122
+ ```python
123
+ from payi import Payi
124
+
125
+ client = Payi()
126
+
127
+ all_definitions = []
128
+ # Automatically fetches more pages as needed.
129
+ for definition in client.use_cases.definitions.list():
130
+ # Do something with definition here
131
+ all_definitions.append(definition)
132
+ print(all_definitions)
133
+ ```
134
+
135
+ Or, asynchronously:
136
+
137
+ ```python
138
+ import asyncio
139
+ from payi import AsyncPayi
140
+
141
+ client = AsyncPayi()
142
+
143
+
144
+ async def main() -> None:
145
+ all_definitions = []
146
+ # Iterate through items across all pages, issuing requests as needed.
147
+ async for definition in client.use_cases.definitions.list():
148
+ all_definitions.append(definition)
149
+ print(all_definitions)
150
+
151
+
152
+ asyncio.run(main())
153
+ ```
154
+
155
+ Alternatively, you can use the `.has_next_page()`, `.next_page_info()`, or `.get_next_page()` methods for more granular control working with pages:
156
+
157
+ ```python
158
+ first_page = await client.use_cases.definitions.list()
159
+ if first_page.has_next_page():
160
+ print(f"will fetch next page using these details: {first_page.next_page_info()}")
161
+ next_page = await first_page.get_next_page()
162
+ print(f"number of items we just fetched: {len(next_page.items)}")
163
+
164
+ # Remove `await` for non-async usage.
165
+ ```
166
+
167
+ Or just work directly with the returned data:
168
+
169
+ ```python
170
+ first_page = await client.use_cases.definitions.list()
171
+
172
+ print(f"next page cursor: {first_page.cursor}") # => "next page cursor: ..."
173
+ for definition in first_page.items:
174
+ print(definition.request_id)
175
+
176
+ # Remove `await` for non-async usage.
177
+ ```
178
+
116
179
  ## Nested params
117
180
 
118
181
  Nested parameters are dictionaries, typed using `TypedDict`, for example:
@@ -122,7 +185,7 @@ from payi import Payi
122
185
 
123
186
  client = Payi()
124
187
 
125
- experience_type = client.experiences.types.create(
188
+ use_case_definition = client.use_cases.definitions.create(
126
189
  description="x",
127
190
  name="x",
128
191
  limit_config={
@@ -132,7 +195,7 @@ experience_type = client.experiences.types.create(
132
195
  "threshold": 0,
133
196
  },
134
197
  )
135
- print(experience_type.limit_config)
198
+ print(use_case_definition.limit_config)
136
199
  ```
137
200
 
138
201
  ## Handling errors
@@ -151,9 +214,9 @@ from payi import Payi
151
214
  client = Payi()
152
215
 
153
216
  try:
154
- client.limits.create(
155
- limit_name="x",
156
- max=1,
217
+ client.use_cases.definitions.create(
218
+ description="Sample Use Case Definition Description",
219
+ name="SampleUseCaseDefinition",
157
220
  )
158
221
  except payi.APIConnectionError as e:
159
222
  print("The server could not be reached")
@@ -197,9 +260,9 @@ client = Payi(
197
260
  )
198
261
 
199
262
  # Or, configure per-request:
200
- client.with_options(max_retries=5).limits.create(
201
- limit_name="x",
202
- max=1,
263
+ client.with_options(max_retries=5).use_cases.definitions.create(
264
+ description="Sample Use Case Definition Description",
265
+ name="SampleUseCaseDefinition",
203
266
  )
204
267
  ```
205
268
 
@@ -223,9 +286,9 @@ client = Payi(
223
286
  )
224
287
 
225
288
  # Override per-request:
226
- client.with_options(timeout=5.0).limits.create(
227
- limit_name="x",
228
- max=1,
289
+ client.with_options(timeout=5.0).use_cases.definitions.create(
290
+ description="Sample Use Case Definition Description",
291
+ name="SampleUseCaseDefinition",
229
292
  )
230
293
  ```
231
294
 
@@ -267,14 +330,14 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
267
330
  from payi import Payi
268
331
 
269
332
  client = Payi()
270
- response = client.limits.with_raw_response.create(
271
- limit_name="x",
272
- max=1,
333
+ response = client.use_cases.definitions.with_raw_response.create(
334
+ description="Sample Use Case Definition Description",
335
+ name="SampleUseCaseDefinition",
273
336
  )
274
337
  print(response.headers.get('X-My-Header'))
275
338
 
276
- limit = response.parse() # get the object that `limits.create()` would have returned
277
- print(limit.request_id)
339
+ definition = response.parse() # get the object that `use_cases.definitions.create()` would have returned
340
+ print(definition.request_id)
278
341
  ```
279
342
 
280
343
  These methods return an [`APIResponse`](https://github.com/Pay-i/pay-i-python/tree/main/src/payi/_response.py) object.
@@ -288,9 +351,9 @@ The above interface eagerly reads the full response body when you make the reque
288
351
  To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.
289
352
 
290
353
  ```python
291
- with client.limits.with_streaming_response.create(
292
- limit_name="x",
293
- max=1,
354
+ with client.use_cases.definitions.with_streaming_response.create(
355
+ description="Sample Use Case Definition Description",
356
+ name="SampleUseCaseDefinition",
294
357
  ) as response:
295
358
  print(response.headers.get("X-My-Header"))
296
359
 
@@ -31,11 +31,11 @@ client = Payi(
31
31
  api_key=os.environ.get("PAYI_API_KEY"), # This is the default and can be omitted
32
32
  )
33
33
 
34
- limit_response = client.limits.create(
35
- limit_name="x",
36
- max=1,
34
+ use_case_definition = client.use_cases.definitions.create(
35
+ description="Sample Use Case Definition Description",
36
+ name="SampleUseCaseDefinition",
37
37
  )
38
- print(limit_response.request_id)
38
+ print(use_case_definition.request_id)
39
39
  ```
40
40
 
41
41
  While you can provide an `api_key` keyword argument,
@@ -58,11 +58,11 @@ client = AsyncPayi(
58
58
 
59
59
 
60
60
  async def main() -> None:
61
- limit_response = await client.limits.create(
62
- limit_name="x",
63
- max=1,
61
+ use_case_definition = await client.use_cases.definitions.create(
62
+ description="Sample Use Case Definition Description",
63
+ name="SampleUseCaseDefinition",
64
64
  )
65
- print(limit_response.request_id)
65
+ print(use_case_definition.request_id)
66
66
 
67
67
 
68
68
  asyncio.run(main())
@@ -79,6 +79,69 @@ Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typ
79
79
 
80
80
  Typed requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.
81
81
 
82
+ ## Pagination
83
+
84
+ List methods in the Payi API are paginated.
85
+
86
+ This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
87
+
88
+ ```python
89
+ from payi import Payi
90
+
91
+ client = Payi()
92
+
93
+ all_definitions = []
94
+ # Automatically fetches more pages as needed.
95
+ for definition in client.use_cases.definitions.list():
96
+ # Do something with definition here
97
+ all_definitions.append(definition)
98
+ print(all_definitions)
99
+ ```
100
+
101
+ Or, asynchronously:
102
+
103
+ ```python
104
+ import asyncio
105
+ from payi import AsyncPayi
106
+
107
+ client = AsyncPayi()
108
+
109
+
110
+ async def main() -> None:
111
+ all_definitions = []
112
+ # Iterate through items across all pages, issuing requests as needed.
113
+ async for definition in client.use_cases.definitions.list():
114
+ all_definitions.append(definition)
115
+ print(all_definitions)
116
+
117
+
118
+ asyncio.run(main())
119
+ ```
120
+
121
+ Alternatively, you can use the `.has_next_page()`, `.next_page_info()`, or `.get_next_page()` methods for more granular control working with pages:
122
+
123
+ ```python
124
+ first_page = await client.use_cases.definitions.list()
125
+ if first_page.has_next_page():
126
+ print(f"will fetch next page using these details: {first_page.next_page_info()}")
127
+ next_page = await first_page.get_next_page()
128
+ print(f"number of items we just fetched: {len(next_page.items)}")
129
+
130
+ # Remove `await` for non-async usage.
131
+ ```
132
+
133
+ Or just work directly with the returned data:
134
+
135
+ ```python
136
+ first_page = await client.use_cases.definitions.list()
137
+
138
+ print(f"next page cursor: {first_page.cursor}") # => "next page cursor: ..."
139
+ for definition in first_page.items:
140
+ print(definition.request_id)
141
+
142
+ # Remove `await` for non-async usage.
143
+ ```
144
+
82
145
  ## Nested params
83
146
 
84
147
  Nested parameters are dictionaries, typed using `TypedDict`, for example:
@@ -88,7 +151,7 @@ from payi import Payi
88
151
 
89
152
  client = Payi()
90
153
 
91
- experience_type = client.experiences.types.create(
154
+ use_case_definition = client.use_cases.definitions.create(
92
155
  description="x",
93
156
  name="x",
94
157
  limit_config={
@@ -98,7 +161,7 @@ experience_type = client.experiences.types.create(
98
161
  "threshold": 0,
99
162
  },
100
163
  )
101
- print(experience_type.limit_config)
164
+ print(use_case_definition.limit_config)
102
165
  ```
103
166
 
104
167
  ## Handling errors
@@ -117,9 +180,9 @@ from payi import Payi
117
180
  client = Payi()
118
181
 
119
182
  try:
120
- client.limits.create(
121
- limit_name="x",
122
- max=1,
183
+ client.use_cases.definitions.create(
184
+ description="Sample Use Case Definition Description",
185
+ name="SampleUseCaseDefinition",
123
186
  )
124
187
  except payi.APIConnectionError as e:
125
188
  print("The server could not be reached")
@@ -163,9 +226,9 @@ client = Payi(
163
226
  )
164
227
 
165
228
  # Or, configure per-request:
166
- client.with_options(max_retries=5).limits.create(
167
- limit_name="x",
168
- max=1,
229
+ client.with_options(max_retries=5).use_cases.definitions.create(
230
+ description="Sample Use Case Definition Description",
231
+ name="SampleUseCaseDefinition",
169
232
  )
170
233
  ```
171
234
 
@@ -189,9 +252,9 @@ client = Payi(
189
252
  )
190
253
 
191
254
  # Override per-request:
192
- client.with_options(timeout=5.0).limits.create(
193
- limit_name="x",
194
- max=1,
255
+ client.with_options(timeout=5.0).use_cases.definitions.create(
256
+ description="Sample Use Case Definition Description",
257
+ name="SampleUseCaseDefinition",
195
258
  )
196
259
  ```
197
260
 
@@ -233,14 +296,14 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
233
296
  from payi import Payi
234
297
 
235
298
  client = Payi()
236
- response = client.limits.with_raw_response.create(
237
- limit_name="x",
238
- max=1,
299
+ response = client.use_cases.definitions.with_raw_response.create(
300
+ description="Sample Use Case Definition Description",
301
+ name="SampleUseCaseDefinition",
239
302
  )
240
303
  print(response.headers.get('X-My-Header'))
241
304
 
242
- limit = response.parse() # get the object that `limits.create()` would have returned
243
- print(limit.request_id)
305
+ definition = response.parse() # get the object that `use_cases.definitions.create()` would have returned
306
+ print(definition.request_id)
244
307
  ```
245
308
 
246
309
  These methods return an [`APIResponse`](https://github.com/Pay-i/pay-i-python/tree/main/src/payi/_response.py) object.
@@ -254,9 +317,9 @@ The above interface eagerly reads the full response body when you make the reque
254
317
  To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.
255
318
 
256
319
  ```python
257
- with client.limits.with_streaming_response.create(
258
- limit_name="x",
259
- max=1,
320
+ with client.use_cases.definitions.with_streaming_response.create(
321
+ description="Sample Use Case Definition Description",
322
+ name="SampleUseCaseDefinition",
260
323
  ) as response:
261
324
  print(response.headers.get("X-My-Header"))
262
325
 
@@ -19,9 +19,9 @@ from payi.types import (
19
19
  DefaultResponse,
20
20
  LimitHistoryResponse,
21
21
  LimitResponse,
22
- PagedLimitList,
23
22
  RequestsData,
24
23
  TotalCostData,
24
+ LimitListResponse,
25
25
  )
26
26
  ```
27
27
 
@@ -30,7 +30,7 @@ Methods:
30
30
  - <code title="post /api/v1/limits">client.limits.<a href="./src/payi/resources/limits/limits.py">create</a>(\*\*<a href="src/payi/types/limit_create_params.py">params</a>) -> <a href="./src/payi/types/limit_response.py">LimitResponse</a></code>
31
31
  - <code title="get /api/v1/limits/{limit_id}">client.limits.<a href="./src/payi/resources/limits/limits.py">retrieve</a>(limit_id) -> <a href="./src/payi/types/limit_response.py">LimitResponse</a></code>
32
32
  - <code title="put /api/v1/limits/{limit_id}">client.limits.<a href="./src/payi/resources/limits/limits.py">update</a>(limit_id, \*\*<a href="src/payi/types/limit_update_params.py">params</a>) -> <a href="./src/payi/types/limit_response.py">LimitResponse</a></code>
33
- - <code title="get /api/v1/limits">client.limits.<a href="./src/payi/resources/limits/limits.py">list</a>(\*\*<a href="src/payi/types/limit_list_params.py">params</a>) -> <a href="./src/payi/types/paged_limit_list.py">PagedLimitList</a></code>
33
+ - <code title="get /api/v1/limits">client.limits.<a href="./src/payi/resources/limits/limits.py">list</a>(\*\*<a href="src/payi/types/limit_list_params.py">params</a>) -> <a href="./src/payi/types/limit_list_response.py">SyncCursorPage[LimitListResponse]</a></code>
34
34
  - <code title="delete /api/v1/limits/{limit_id}">client.limits.<a href="./src/payi/resources/limits/limits.py">delete</a>(limit_id) -> <a href="./src/payi/types/default_response.py">DefaultResponse</a></code>
35
35
  - <code title="post /api/v1/limits/{limit_id}/reset">client.limits.<a href="./src/payi/resources/limits/limits.py">reset</a>(limit_id, \*\*<a href="src/payi/types/limit_reset_params.py">params</a>) -> <a href="./src/payi/types/limit_history_response.py">LimitHistoryResponse</a></code>
36
36
 
@@ -84,33 +84,25 @@ Types:
84
84
  from payi.types import (
85
85
  CategoryResourceResponse,
86
86
  CategoryResponse,
87
- CategoryListResponse,
88
87
  CategoryDeleteResponse,
89
88
  CategoryDeleteResourceResponse,
90
- CategoryListResourcesResponse,
91
89
  )
92
90
  ```
93
91
 
94
92
  Methods:
95
93
 
96
- - <code title="get /api/v1/categories">client.categories.<a href="./src/payi/resources/categories/categories.py">list</a>() -> <a href="./src/payi/types/category_list_response.py">CategoryListResponse</a></code>
94
+ - <code title="get /api/v1/categories">client.categories.<a href="./src/payi/resources/categories/categories.py">list</a>(\*\*<a href="src/payi/types/category_list_params.py">params</a>) -> <a href="./src/payi/types/category_response.py">SyncCursorPage[CategoryResponse]</a></code>
97
95
  - <code title="delete /api/v1/categories/{category}">client.categories.<a href="./src/payi/resources/categories/categories.py">delete</a>(category) -> <a href="./src/payi/types/category_delete_response.py">CategoryDeleteResponse</a></code>
98
96
  - <code title="delete /api/v1/categories/{category}/resources/{resource}">client.categories.<a href="./src/payi/resources/categories/categories.py">delete_resource</a>(resource, \*, category) -> <a href="./src/payi/types/category_delete_resource_response.py">CategoryDeleteResourceResponse</a></code>
99
- - <code title="get /api/v1/categories/{category}/resources">client.categories.<a href="./src/payi/resources/categories/categories.py">list_resources</a>(category) -> <a href="./src/payi/types/category_list_resources_response.py">CategoryListResourcesResponse</a></code>
97
+ - <code title="get /api/v1/categories/{category}/resources">client.categories.<a href="./src/payi/resources/categories/categories.py">list_resources</a>(category, \*\*<a href="src/payi/types/category_list_resources_params.py">params</a>) -> <a href="./src/payi/types/category_resource_response.py">SyncCursorPage[CategoryResourceResponse]</a></code>
100
98
 
101
99
  ## Resources
102
100
 
103
- Types:
104
-
105
- ```python
106
- from payi.types.categories import ResourceListResponse
107
- ```
108
-
109
101
  Methods:
110
102
 
111
103
  - <code title="post /api/v1/categories/{category}/resources/{resource}">client.categories.resources.<a href="./src/payi/resources/categories/resources.py">create</a>(resource, \*, category, \*\*<a href="src/payi/types/categories/resource_create_params.py">params</a>) -> <a href="./src/payi/types/category_resource_response.py">CategoryResourceResponse</a></code>
112
104
  - <code title="get /api/v1/categories/{category}/resources/{resource}/{resource_id}">client.categories.resources.<a href="./src/payi/resources/categories/resources.py">retrieve</a>(resource_id, \*, category, resource) -> <a href="./src/payi/types/category_resource_response.py">CategoryResourceResponse</a></code>
113
- - <code title="get /api/v1/categories/{category}/resources/{resource}">client.categories.resources.<a href="./src/payi/resources/categories/resources.py">list</a>(resource, \*, category) -> <a href="./src/payi/types/categories/resource_list_response.py">ResourceListResponse</a></code>
105
+ - <code title="get /api/v1/categories/{category}/resources/{resource}">client.categories.resources.<a href="./src/payi/resources/categories/resources.py">list</a>(resource, \*, category, \*\*<a href="src/payi/types/categories/resource_list_params.py">params</a>) -> <a href="./src/payi/types/category_resource_response.py">SyncCursorPage[CategoryResourceResponse]</a></code>
114
106
  - <code title="delete /api/v1/categories/{category}/resources/{resource}/{resource_id}">client.categories.resources.<a href="./src/payi/resources/categories/resources.py">delete</a>(resource_id, \*, category, resource) -> <a href="./src/payi/types/category_resource_response.py">CategoryResourceResponse</a></code>
115
107
 
116
108
  # Experiences
@@ -132,15 +124,15 @@ Methods:
132
124
  Types:
133
125
 
134
126
  ```python
135
- from payi.types.experiences import ExperienceType, TypeListResponse
127
+ from payi.types.experiences import ExperienceType
136
128
  ```
137
129
 
138
130
  Methods:
139
131
 
140
132
  - <code title="post /api/v1/experiences/types">client.experiences.types.<a href="./src/payi/resources/experiences/types/types.py">create</a>(\*\*<a href="src/payi/types/experiences/type_create_params.py">params</a>) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
141
133
  - <code title="get /api/v1/experiences/types/{experience_name}">client.experiences.types.<a href="./src/payi/resources/experiences/types/types.py">retrieve</a>(experience_name) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
142
- - <code title="patch /api/v1/experiences/types/{experience_name}">client.experiences.types.<a href="./src/payi/resources/experiences/types/types.py">update</a>(experience_name, \*\*<a href="src/payi/types/experiences/type_update_params.py">params</a>) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
143
- - <code title="get /api/v1/experiences/types">client.experiences.types.<a href="./src/payi/resources/experiences/types/types.py">list</a>(\*\*<a href="src/payi/types/experiences/type_list_params.py">params</a>) -> <a href="./src/payi/types/experiences/type_list_response.py">TypeListResponse</a></code>
134
+ - <code title="put /api/v1/experiences/types/{experience_name}">client.experiences.types.<a href="./src/payi/resources/experiences/types/types.py">update</a>(experience_name, \*\*<a href="src/payi/types/experiences/type_update_params.py">params</a>) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
135
+ - <code title="get /api/v1/experiences/types">client.experiences.types.<a href="./src/payi/resources/experiences/types/types.py">list</a>(\*\*<a href="src/payi/types/experiences/type_list_params.py">params</a>) -> <a href="./src/payi/types/experiences/experience_type.py">SyncCursorPage[ExperienceType]</a></code>
144
136
  - <code title="delete /api/v1/experiences/types/{experience_name}">client.experiences.types.<a href="./src/payi/resources/experiences/types/types.py">delete</a>(experience_name) -> <a href="./src/payi/types/experiences/experience_type.py">ExperienceType</a></code>
145
137
 
146
138
  ### LimitConfig
@@ -170,22 +162,59 @@ Methods:
170
162
  - <code title="get /api/v1/use_cases/instances/{use_case_id}">client.use_cases.<a href="./src/payi/resources/use_cases/use_cases.py">retrieve</a>(use_case_id) -> <a href="./src/payi/types/use_case_instance_response.py">UseCaseInstanceResponse</a></code>
171
163
  - <code title="delete /api/v1/use_cases/instances/{use_case_id}">client.use_cases.<a href="./src/payi/resources/use_cases/use_cases.py">delete</a>(use_case_id) -> <a href="./src/payi/types/use_case_instance_response.py">UseCaseInstanceResponse</a></code>
172
164
 
165
+ ## Kpis
166
+
167
+ Types:
168
+
169
+ ```python
170
+ from payi.types.use_cases import KpiListResponse
171
+ ```
172
+
173
+ Methods:
174
+
175
+ - <code title="post /api/v1/use_cases/instances/{use_case_id}/kpis/{kpi_name}">client.use_cases.kpis.<a href="./src/payi/resources/use_cases/kpis.py">create</a>(kpi_name, \*, use_case_id, \*\*<a href="src/payi/types/use_cases/kpi_create_params.py">params</a>) -> None</code>
176
+ - <code title="put /api/v1/use_cases/instances/{use_case_id}/kpis/{kpi_name}">client.use_cases.kpis.<a href="./src/payi/resources/use_cases/kpis.py">update</a>(kpi_name, \*, use_case_id, \*\*<a href="src/payi/types/use_cases/kpi_update_params.py">params</a>) -> None</code>
177
+ - <code title="get /api/v1/use_cases/instances/{use_case_id}/kpis">client.use_cases.kpis.<a href="./src/payi/resources/use_cases/kpis.py">list</a>(use_case_id, \*\*<a href="src/payi/types/use_cases/kpi_list_params.py">params</a>) -> <a href="./src/payi/types/use_cases/kpi_list_response.py">SyncCursorPage[KpiListResponse]</a></code>
178
+ - <code title="delete /api/v1/use_cases/instances/{use_case_id}/kpis/{kpi_name}">client.use_cases.kpis.<a href="./src/payi/resources/use_cases/kpis.py">delete</a>(kpi_name, \*, use_case_id) -> None</code>
179
+
173
180
  ## Definitions
174
181
 
175
182
  Types:
176
183
 
177
184
  ```python
178
- from payi.types.use_cases import UseCaseDefinition, DefinitionListResponse
185
+ from payi.types.use_cases import UseCaseDefinition
179
186
  ```
180
187
 
181
188
  Methods:
182
189
 
183
190
  - <code title="post /api/v1/use_cases/definitions">client.use_cases.definitions.<a href="./src/payi/resources/use_cases/definitions/definitions.py">create</a>(\*\*<a href="src/payi/types/use_cases/definition_create_params.py">params</a>) -> <a href="./src/payi/types/use_cases/use_case_definition.py">UseCaseDefinition</a></code>
184
191
  - <code title="get /api/v1/use_cases/definitions/{use_case_name}">client.use_cases.definitions.<a href="./src/payi/resources/use_cases/definitions/definitions.py">retrieve</a>(use_case_name) -> <a href="./src/payi/types/use_cases/use_case_definition.py">UseCaseDefinition</a></code>
185
- - <code title="patch /api/v1/use_cases/definitions/{use_case_name}">client.use_cases.definitions.<a href="./src/payi/resources/use_cases/definitions/definitions.py">update</a>(use_case_name, \*\*<a href="src/payi/types/use_cases/definition_update_params.py">params</a>) -> <a href="./src/payi/types/use_cases/use_case_definition.py">UseCaseDefinition</a></code>
186
- - <code title="get /api/v1/use_cases/definitions">client.use_cases.definitions.<a href="./src/payi/resources/use_cases/definitions/definitions.py">list</a>(\*\*<a href="src/payi/types/use_cases/definition_list_params.py">params</a>) -> <a href="./src/payi/types/use_cases/definition_list_response.py">DefinitionListResponse</a></code>
192
+ - <code title="put /api/v1/use_cases/definitions/{use_case_name}">client.use_cases.definitions.<a href="./src/payi/resources/use_cases/definitions/definitions.py">update</a>(use_case_name, \*\*<a href="src/payi/types/use_cases/definition_update_params.py">params</a>) -> <a href="./src/payi/types/use_cases/use_case_definition.py">UseCaseDefinition</a></code>
193
+ - <code title="get /api/v1/use_cases/definitions">client.use_cases.definitions.<a href="./src/payi/resources/use_cases/definitions/definitions.py">list</a>(\*\*<a href="src/payi/types/use_cases/definition_list_params.py">params</a>) -> <a href="./src/payi/types/use_cases/use_case_definition.py">SyncCursorPage[UseCaseDefinition]</a></code>
187
194
  - <code title="delete /api/v1/use_cases/definitions/{use_case_name}">client.use_cases.definitions.<a href="./src/payi/resources/use_cases/definitions/definitions.py">delete</a>(use_case_name) -> <a href="./src/payi/types/use_cases/use_case_definition.py">UseCaseDefinition</a></code>
188
195
 
196
+ ### Kpis
197
+
198
+ Types:
199
+
200
+ ```python
201
+ from payi.types.use_cases.definitions import (
202
+ KpiCreateResponse,
203
+ KpiRetrieveResponse,
204
+ KpiUpdateResponse,
205
+ KpiListResponse,
206
+ KpiDeleteResponse,
207
+ )
208
+ ```
209
+
210
+ Methods:
211
+
212
+ - <code title="post /api/v1/use_cases/definitions/{use_case_name}/kpis">client.use_cases.definitions.kpis.<a href="./src/payi/resources/use_cases/definitions/kpis.py">create</a>(use_case_name, \*\*<a href="src/payi/types/use_cases/definitions/kpi_create_params.py">params</a>) -> <a href="./src/payi/types/use_cases/definitions/kpi_create_response.py">KpiCreateResponse</a></code>
213
+ - <code title="get /api/v1/use_cases/definitions/{use_case_name}/kpis/{kpi_name}">client.use_cases.definitions.kpis.<a href="./src/payi/resources/use_cases/definitions/kpis.py">retrieve</a>(kpi_name, \*, use_case_name) -> <a href="./src/payi/types/use_cases/definitions/kpi_retrieve_response.py">KpiRetrieveResponse</a></code>
214
+ - <code title="put /api/v1/use_cases/definitions/{use_case_name}/kpis/{kpi_name}">client.use_cases.definitions.kpis.<a href="./src/payi/resources/use_cases/definitions/kpis.py">update</a>(kpi_name, \*, use_case_name, \*\*<a href="src/payi/types/use_cases/definitions/kpi_update_params.py">params</a>) -> <a href="./src/payi/types/use_cases/definitions/kpi_update_response.py">KpiUpdateResponse</a></code>
215
+ - <code title="get /api/v1/use_cases/definitions/{use_case_name}/kpis">client.use_cases.definitions.kpis.<a href="./src/payi/resources/use_cases/definitions/kpis.py">list</a>(use_case_name, \*\*<a href="src/payi/types/use_cases/definitions/kpi_list_params.py">params</a>) -> <a href="./src/payi/types/use_cases/definitions/kpi_list_response.py">SyncCursorPage[KpiListResponse]</a></code>
216
+ - <code title="delete /api/v1/use_cases/definitions/{use_case_name}/kpis/{kpi_name}">client.use_cases.definitions.kpis.<a href="./src/payi/resources/use_cases/definitions/kpis.py">delete</a>(kpi_name, \*, use_case_name) -> <a href="./src/payi/types/use_cases/definitions/kpi_delete_response.py">KpiDeleteResponse</a></code>
217
+
189
218
  ### LimitConfig
190
219
 
191
220
  Methods:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "payi"
3
- version = "0.1.0-alpha.58"
3
+ version = "0.1.0-alpha.60"
4
4
  description = "The official Python library for the payi API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "payi"
4
- __version__ = "0.1.0-alpha.58" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.60" # x-release-please-version