honeycomb-api 0.1.0__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 (453) hide show
  1. honeycomb/__init__.py +217 -0
  2. honeycomb/_generated/__init__.py +8 -0
  3. honeycomb/_generated/api/__init__.py +1 -0
  4. honeycomb/_generated/api/auth/__init__.py +0 -0
  5. honeycomb/_generated/api/auth/get_auth.py +172 -0
  6. honeycomb/_generated/api/auth/get_v2_auth.py +168 -0
  7. honeycomb/_generated/api/boards/__init__.py +0 -0
  8. honeycomb/_generated/api/boards/create_board.py +217 -0
  9. honeycomb/_generated/api/boards/create_board_view.py +237 -0
  10. honeycomb/_generated/api/boards/delete_board.py +191 -0
  11. honeycomb/_generated/api/boards/delete_board_view.py +210 -0
  12. honeycomb/_generated/api/boards/get_board.py +208 -0
  13. honeycomb/_generated/api/boards/get_board_view.py +214 -0
  14. honeycomb/_generated/api/boards/list_board_views.py +206 -0
  15. honeycomb/_generated/api/boards/list_boards.py +177 -0
  16. honeycomb/_generated/api/boards/update_board.py +238 -0
  17. honeycomb/_generated/api/boards/update_board_view.py +250 -0
  18. honeycomb/_generated/api/burn_alerts/__init__.py +0 -0
  19. honeycomb/_generated/api/burn_alerts/create_burn_alert.py +224 -0
  20. honeycomb/_generated/api/burn_alerts/delete_burn_alert.py +204 -0
  21. honeycomb/_generated/api/burn_alerts/get_burn_alert.py +208 -0
  22. honeycomb/_generated/api/burn_alerts/list_burn_alerts_by_slo.py +220 -0
  23. honeycomb/_generated/api/calculated_fields/__init__.py +0 -0
  24. honeycomb/_generated/api/calculated_fields/create_calculated_field.py +239 -0
  25. honeycomb/_generated/api/calculated_fields/delete_calculated_field.py +225 -0
  26. honeycomb/_generated/api/calculated_fields/get_calculated_field.py +207 -0
  27. honeycomb/_generated/api/calculated_fields/list_calculated_fields.py +252 -0
  28. honeycomb/_generated/api/calculated_fields/update_calculated_field.py +242 -0
  29. honeycomb/_generated/api/columns/__init__.py +0 -0
  30. honeycomb/_generated/api/columns/create_column.py +241 -0
  31. honeycomb/_generated/api/columns/delete_column.py +221 -0
  32. honeycomb/_generated/api/columns/get_column.py +206 -0
  33. honeycomb/_generated/api/columns/list_columns.py +256 -0
  34. honeycomb/_generated/api/columns/update_column.py +242 -0
  35. honeycomb/_generated/api/dataset_definitions/__init__.py +0 -0
  36. honeycomb/_generated/api/dataset_definitions/list_dataset_definitions.py +193 -0
  37. honeycomb/_generated/api/dataset_definitions/patch_dataset_definitions.py +235 -0
  38. honeycomb/_generated/api/datasets/__init__.py +0 -0
  39. honeycomb/_generated/api/datasets/create_dataset.py +227 -0
  40. honeycomb/_generated/api/datasets/delete_dataset.py +251 -0
  41. honeycomb/_generated/api/datasets/get_dataset.py +195 -0
  42. honeycomb/_generated/api/datasets/list_datasets.py +177 -0
  43. honeycomb/_generated/api/datasets/update_dataset.py +217 -0
  44. honeycomb/_generated/api/enhance/__init__.py +0 -0
  45. honeycomb/_generated/api/enhance/record_enhance_indexer_usage.py +231 -0
  46. honeycomb/_generated/api/environments/__init__.py +0 -0
  47. honeycomb/_generated/api/environments/create_environment.py +247 -0
  48. honeycomb/_generated/api/environments/delete_environment.py +245 -0
  49. honeycomb/_generated/api/environments/get_environment.py +213 -0
  50. honeycomb/_generated/api/environments/list_environments.py +245 -0
  51. honeycomb/_generated/api/environments/update_environment.py +254 -0
  52. honeycomb/_generated/api/events/__init__.py +0 -0
  53. honeycomb/_generated/api/events/create_event.py +269 -0
  54. honeycomb/_generated/api/events/create_events.py +314 -0
  55. honeycomb/_generated/api/key_management/__init__.py +0 -0
  56. honeycomb/_generated/api/key_management/create_api_key.py +286 -0
  57. honeycomb/_generated/api/key_management/delete_api_key.py +223 -0
  58. honeycomb/_generated/api/key_management/get_api_key.py +225 -0
  59. honeycomb/_generated/api/key_management/list_api_keys.py +281 -0
  60. honeycomb/_generated/api/key_management/update_api_key.py +270 -0
  61. honeycomb/_generated/api/kinesis_events/__init__.py +0 -0
  62. honeycomb/_generated/api/kinesis_events/create_kinesis_events.py +220 -0
  63. honeycomb/_generated/api/marker_settings/__init__.py +0 -0
  64. honeycomb/_generated/api/marker_settings/create_marker_setting.py +209 -0
  65. honeycomb/_generated/api/marker_settings/delete_marker_settings.py +194 -0
  66. honeycomb/_generated/api/marker_settings/list_marker_settings.py +186 -0
  67. honeycomb/_generated/api/marker_settings/update_marker_settings.py +230 -0
  68. honeycomb/_generated/api/markers/__init__.py +0 -0
  69. honeycomb/_generated/api/markers/create_marker.py +220 -0
  70. honeycomb/_generated/api/markers/create_marker_v2.py +253 -0
  71. honeycomb/_generated/api/markers/delete_marker.py +200 -0
  72. honeycomb/_generated/api/markers/get_marker.py +194 -0
  73. honeycomb/_generated/api/markers/update_marker.py +233 -0
  74. honeycomb/_generated/api/markers/update_marker_v2.py +262 -0
  75. honeycomb/_generated/api/pipelines/__init__.py +0 -0
  76. honeycomb/_generated/api/pipelines/get_pipeline_configuration.py +306 -0
  77. honeycomb/_generated/api/pipelines/record_pipeline_usage.py +244 -0
  78. honeycomb/_generated/api/pipelines/update_pipeline_configuration_rollout.py +261 -0
  79. honeycomb/_generated/api/queries/__init__.py +0 -0
  80. honeycomb/_generated/api/queries/create_query.py +224 -0
  81. honeycomb/_generated/api/queries/get_query.py +208 -0
  82. honeycomb/_generated/api/query_annotations/__init__.py +0 -0
  83. honeycomb/_generated/api/query_annotations/create_query_annotation.py +226 -0
  84. honeycomb/_generated/api/query_annotations/delete_query_annotation.py +198 -0
  85. honeycomb/_generated/api/query_annotations/get_query_annotation.py +202 -0
  86. honeycomb/_generated/api/query_annotations/list_query_annotations.py +217 -0
  87. honeycomb/_generated/api/query_annotations/update_query_annotation.py +237 -0
  88. honeycomb/_generated/api/query_data/__init__.py +0 -0
  89. honeycomb/_generated/api/query_data/create_query_result.py +247 -0
  90. honeycomb/_generated/api/query_data/get_query_result.py +208 -0
  91. honeycomb/_generated/api/recipients/__init__.py +0 -0
  92. honeycomb/_generated/api/recipients/create_recipient.py +317 -0
  93. honeycomb/_generated/api/recipients/delete_recipient.py +199 -0
  94. honeycomb/_generated/api/recipients/get_recipient.py +252 -0
  95. honeycomb/_generated/api/recipients/list_recipients.py +230 -0
  96. honeycomb/_generated/api/recipients/update_recipient.py +323 -0
  97. honeycomb/_generated/api/reporting/__init__.py +0 -0
  98. honeycomb/_generated/api/reporting/get_slo_history.py +218 -0
  99. honeycomb/_generated/api/service_maps/__init__.py +0 -0
  100. honeycomb/_generated/api/service_maps/create_map_dependency_request.py +252 -0
  101. honeycomb/_generated/api/service_maps/get_map_dependencies.py +265 -0
  102. honeycomb/_generated/api/sl_os/__init__.py +0 -0
  103. honeycomb/_generated/api/sl_os/create_slo.py +229 -0
  104. honeycomb/_generated/api/sl_os/delete_slo.py +210 -0
  105. honeycomb/_generated/api/sl_os/get_slo.py +256 -0
  106. honeycomb/_generated/api/sl_os/list_slos.py +210 -0
  107. honeycomb/_generated/api/sl_os/update_slo.py +242 -0
  108. honeycomb/_generated/api/triggers/__init__.py +0 -0
  109. honeycomb/_generated/api/triggers/create_trigger.py +250 -0
  110. honeycomb/_generated/api/triggers/delete_trigger.py +204 -0
  111. honeycomb/_generated/api/triggers/get_trigger.py +214 -0
  112. honeycomb/_generated/api/triggers/list_triggers.py +206 -0
  113. honeycomb/_generated/api/triggers/list_triggers_with_recipient.py +208 -0
  114. honeycomb/_generated/api/triggers/update_trigger.py +248 -0
  115. honeycomb/_generated/client.py +271 -0
  116. honeycomb/_generated/errors.py +14 -0
  117. honeycomb/_generated/models/__init__.py +561 -0
  118. honeycomb/_generated/models/api_key_create_request.py +78 -0
  119. honeycomb/_generated/models/api_key_create_request_data.py +130 -0
  120. honeycomb/_generated/models/api_key_create_request_data_relationships.py +78 -0
  121. honeycomb/_generated/models/api_key_create_request_data_type.py +7 -0
  122. honeycomb/_generated/models/api_key_list_response.py +112 -0
  123. honeycomb/_generated/models/api_key_object.py +189 -0
  124. honeycomb/_generated/models/api_key_object_links.py +74 -0
  125. honeycomb/_generated/models/api_key_object_relationships.py +150 -0
  126. honeycomb/_generated/models/api_key_object_type.py +7 -0
  127. honeycomb/_generated/models/api_key_response.py +78 -0
  128. honeycomb/_generated/models/api_key_update_request.py +104 -0
  129. honeycomb/_generated/models/auth.py +140 -0
  130. honeycomb/_generated/models/auth_api_key_access.py +154 -0
  131. honeycomb/_generated/models/auth_environment.py +82 -0
  132. honeycomb/_generated/models/auth_team.py +82 -0
  133. honeycomb/_generated/models/auth_type.py +8 -0
  134. honeycomb/_generated/models/auth_v2_response.py +108 -0
  135. honeycomb/_generated/models/auth_v2_response_data.py +122 -0
  136. honeycomb/_generated/models/auth_v2_response_data_attributes.py +141 -0
  137. honeycomb/_generated/models/auth_v2_response_data_attributes_key_type.py +7 -0
  138. honeycomb/_generated/models/auth_v2_response_data_attributes_timestamps.py +107 -0
  139. honeycomb/_generated/models/auth_v2_response_data_relationships.py +59 -0
  140. honeycomb/_generated/models/auth_v2_response_data_type.py +7 -0
  141. honeycomb/_generated/models/base_trigger.py +367 -0
  142. honeycomb/_generated/models/base_trigger_alert_type.py +8 -0
  143. honeycomb/_generated/models/base_trigger_baseline_details_type_0.py +92 -0
  144. honeycomb/_generated/models/base_trigger_baseline_details_type_0_offset_minutes.py +10 -0
  145. honeycomb/_generated/models/base_trigger_baseline_details_type_0_type.py +8 -0
  146. honeycomb/_generated/models/base_trigger_evaluation_schedule.py +83 -0
  147. honeycomb/_generated/models/base_trigger_evaluation_schedule_type.py +8 -0
  148. honeycomb/_generated/models/base_trigger_evaluation_schedule_window.py +103 -0
  149. honeycomb/_generated/models/base_trigger_evaluation_schedule_window_days_of_week_item.py +13 -0
  150. honeycomb/_generated/models/base_trigger_threshold.py +95 -0
  151. honeycomb/_generated/models/base_trigger_threshold_op.py +10 -0
  152. honeycomb/_generated/models/batch_event.py +110 -0
  153. honeycomb/_generated/models/board.py +276 -0
  154. honeycomb/_generated/models/board_layout_generation.py +8 -0
  155. honeycomb/_generated/models/board_links.py +74 -0
  156. honeycomb/_generated/models/board_panel_position.py +104 -0
  157. honeycomb/_generated/models/board_query_visualization_settings.py +141 -0
  158. honeycomb/_generated/models/board_query_visualization_settings_charts_item.py +113 -0
  159. honeycomb/_generated/models/board_query_visualization_settings_charts_item_chart_type.py +13 -0
  160. honeycomb/_generated/models/board_type.py +7 -0
  161. honeycomb/_generated/models/board_view_filter.py +93 -0
  162. honeycomb/_generated/models/board_view_filter_operation.py +22 -0
  163. honeycomb/_generated/models/board_view_response.py +111 -0
  164. honeycomb/_generated/models/budget_rate.py +189 -0
  165. honeycomb/_generated/models/budget_rate_alert_type.py +8 -0
  166. honeycomb/_generated/models/burn_alert_shared_params.py +136 -0
  167. honeycomb/_generated/models/calculated_field.py +117 -0
  168. honeycomb/_generated/models/configuration_key_attributes.py +140 -0
  169. honeycomb/_generated/models/configuration_key_attributes_key_type.py +7 -0
  170. honeycomb/_generated/models/configuration_key_attributes_timestamps.py +107 -0
  171. honeycomb/_generated/models/create_board_view_request.py +96 -0
  172. honeycomb/_generated/models/create_budget_rate_burn_alert_request.py +232 -0
  173. honeycomb/_generated/models/create_budget_rate_burn_alert_request_slo.py +74 -0
  174. honeycomb/_generated/models/create_column.py +149 -0
  175. honeycomb/_generated/models/create_column_type.py +11 -0
  176. honeycomb/_generated/models/create_enhance_indexer_usage_record_request.py +78 -0
  177. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data.py +90 -0
  178. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes.py +97 -0
  179. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data.py +88 -0
  180. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item.py +89 -0
  181. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +89 -0
  182. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +97 -0
  183. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +102 -0
  184. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +7 -0
  185. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +105 -0
  186. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item.py +87 -0
  187. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item_value.py +73 -0
  188. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_type.py +7 -0
  189. honeycomb/_generated/models/create_environment_request.py +78 -0
  190. honeycomb/_generated/models/create_environment_request_data.py +90 -0
  191. honeycomb/_generated/models/create_environment_request_data_attributes.py +102 -0
  192. honeycomb/_generated/models/create_environment_request_data_type.py +7 -0
  193. honeycomb/_generated/models/create_events_content_encoding.py +8 -0
  194. honeycomb/_generated/models/create_events_response_200_item.py +82 -0
  195. honeycomb/_generated/models/create_exhaustion_time_burn_alert_request.py +217 -0
  196. honeycomb/_generated/models/create_exhaustion_time_burn_alert_request_slo.py +74 -0
  197. honeycomb/_generated/models/create_map_dependencies_request.py +128 -0
  198. honeycomb/_generated/models/create_map_dependencies_response.py +97 -0
  199. honeycomb/_generated/models/create_map_dependencies_response_status.py +9 -0
  200. honeycomb/_generated/models/create_pipeline_health_record_request.py +78 -0
  201. honeycomb/_generated/models/create_pipeline_health_record_request_data.py +98 -0
  202. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes.py +88 -0
  203. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data.py +88 -0
  204. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item.py +89 -0
  205. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +89 -0
  206. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +97 -0
  207. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +102 -0
  208. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +7 -0
  209. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +105 -0
  210. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item.py +87 -0
  211. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item_value.py +73 -0
  212. honeycomb/_generated/models/create_pipeline_health_record_request_data_type.py +7 -0
  213. honeycomb/_generated/models/create_query_result_request.py +118 -0
  214. honeycomb/_generated/models/dataset.py +183 -0
  215. honeycomb/_generated/models/dataset_creation_payload.py +93 -0
  216. honeycomb/_generated/models/dataset_definition_type_1.py +96 -0
  217. honeycomb/_generated/models/dataset_definition_type_1_column_type.py +8 -0
  218. honeycomb/_generated/models/dataset_definitions.py +599 -0
  219. honeycomb/_generated/models/dataset_relationship.py +79 -0
  220. honeycomb/_generated/models/dataset_relationship_data.py +82 -0
  221. honeycomb/_generated/models/dataset_relationship_data_type.py +7 -0
  222. honeycomb/_generated/models/dataset_settings.py +73 -0
  223. honeycomb/_generated/models/dataset_update_payload.py +105 -0
  224. honeycomb/_generated/models/dataset_update_payload_settings.py +73 -0
  225. honeycomb/_generated/models/detailed_error.py +115 -0
  226. honeycomb/_generated/models/email_recipient.py +160 -0
  227. honeycomb/_generated/models/email_recipient_details.py +71 -0
  228. honeycomb/_generated/models/email_recipient_type.py +7 -0
  229. honeycomb/_generated/models/environment.py +112 -0
  230. honeycomb/_generated/models/environment_attributes.py +140 -0
  231. honeycomb/_generated/models/environment_attributes_color_type_1.py +7 -0
  232. honeycomb/_generated/models/environment_attributes_settings.py +70 -0
  233. honeycomb/_generated/models/environment_color.py +16 -0
  234. honeycomb/_generated/models/environment_links.py +70 -0
  235. honeycomb/_generated/models/environment_list_response.py +112 -0
  236. honeycomb/_generated/models/environment_relationship.py +79 -0
  237. honeycomb/_generated/models/environment_relationship_data.py +82 -0
  238. honeycomb/_generated/models/environment_relationship_data_type.py +7 -0
  239. honeycomb/_generated/models/environment_response.py +78 -0
  240. honeycomb/_generated/models/environment_type.py +7 -0
  241. honeycomb/_generated/models/error.py +74 -0
  242. honeycomb/_generated/models/event.py +71 -0
  243. honeycomb/_generated/models/exhaustion_time.py +174 -0
  244. honeycomb/_generated/models/exhaustion_time_alert_type.py +8 -0
  245. honeycomb/_generated/models/exhaustion_time_burn_alert_list_response.py +198 -0
  246. honeycomb/_generated/models/exhaustion_time_burn_alert_list_response_slo.py +77 -0
  247. honeycomb/_generated/models/filter_op.py +22 -0
  248. honeycomb/_generated/models/get_map_dependencies_response.py +169 -0
  249. honeycomb/_generated/models/get_map_dependencies_response_status.py +9 -0
  250. honeycomb/_generated/models/having_calculate_op.py +29 -0
  251. honeycomb/_generated/models/having_op.py +12 -0
  252. honeycomb/_generated/models/included_resource.py +106 -0
  253. honeycomb/_generated/models/included_resource_attributes.py +62 -0
  254. honeycomb/_generated/models/ingest_key_attributes.py +153 -0
  255. honeycomb/_generated/models/ingest_key_attributes_key_type.py +7 -0
  256. honeycomb/_generated/models/ingest_key_attributes_permissions.py +74 -0
  257. honeycomb/_generated/models/ingest_key_attributes_timestamps.py +107 -0
  258. honeycomb/_generated/models/ingest_key_type.py +90 -0
  259. honeycomb/_generated/models/ingest_key_type_key_type.py +7 -0
  260. honeycomb/_generated/models/jsonapi_error_source.py +92 -0
  261. honeycomb/_generated/models/kinesis_event.py +111 -0
  262. honeycomb/_generated/models/kinesis_event_record.py +73 -0
  263. honeycomb/_generated/models/kinesis_response.py +91 -0
  264. honeycomb/_generated/models/list_api_keys_filtertype.py +8 -0
  265. honeycomb/_generated/models/map_dependency.py +118 -0
  266. honeycomb/_generated/models/map_node.py +97 -0
  267. honeycomb/_generated/models/map_node_type.py +7 -0
  268. honeycomb/_generated/models/marker.py +151 -0
  269. honeycomb/_generated/models/marker_create_request.py +78 -0
  270. honeycomb/_generated/models/marker_create_request_data.py +104 -0
  271. honeycomb/_generated/models/marker_create_request_data_attributes.py +110 -0
  272. honeycomb/_generated/models/marker_create_request_data_relationships.py +92 -0
  273. honeycomb/_generated/models/marker_create_request_data_type.py +7 -0
  274. honeycomb/_generated/models/marker_object.py +136 -0
  275. honeycomb/_generated/models/marker_object_attributes.py +146 -0
  276. honeycomb/_generated/models/marker_object_attributes_timestamps.py +107 -0
  277. honeycomb/_generated/models/marker_object_links.py +74 -0
  278. honeycomb/_generated/models/marker_object_relationships.py +111 -0
  279. honeycomb/_generated/models/marker_object_relationships_dataset.py +104 -0
  280. honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0.py +94 -0
  281. honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0_type.py +7 -0
  282. honeycomb/_generated/models/marker_object_type.py +7 -0
  283. honeycomb/_generated/models/marker_response.py +78 -0
  284. honeycomb/_generated/models/marker_setting.py +125 -0
  285. honeycomb/_generated/models/marker_update_request.py +78 -0
  286. honeycomb/_generated/models/marker_update_request_data.py +104 -0
  287. honeycomb/_generated/models/marker_update_request_data_attributes.py +111 -0
  288. honeycomb/_generated/models/marker_update_request_data_relationships.py +92 -0
  289. honeycomb/_generated/models/marker_update_request_data_type.py +7 -0
  290. honeycomb/_generated/models/ms_teams_recipient.py +161 -0
  291. honeycomb/_generated/models/ms_teams_recipient_details.py +80 -0
  292. honeycomb/_generated/models/ms_teams_recipient_type.py +7 -0
  293. honeycomb/_generated/models/ms_teams_workflow_recipient.py +161 -0
  294. honeycomb/_generated/models/ms_teams_workflow_recipient_details.py +80 -0
  295. honeycomb/_generated/models/ms_teams_workflow_recipient_type.py +7 -0
  296. honeycomb/_generated/models/notification_recipient.py +131 -0
  297. honeycomb/_generated/models/notification_recipient_details.py +117 -0
  298. honeycomb/_generated/models/notification_recipient_details_pagerduty_severity.py +10 -0
  299. honeycomb/_generated/models/notification_recipient_details_variables_item.py +81 -0
  300. honeycomb/_generated/models/pager_duty_recipient.py +160 -0
  301. honeycomb/_generated/models/pager_duty_recipient_details.py +79 -0
  302. honeycomb/_generated/models/pager_duty_recipient_type.py +7 -0
  303. honeycomb/_generated/models/pagination_links.py +80 -0
  304. honeycomb/_generated/models/payload_template.py +73 -0
  305. honeycomb/_generated/models/pipeline_configuration_response.py +112 -0
  306. honeycomb/_generated/models/pipeline_configuration_response_attributes.py +101 -0
  307. honeycomb/_generated/models/pipeline_configuration_response_attributes_configs_item.py +85 -0
  308. honeycomb/_generated/models/pipeline_configuration_response_links.py +73 -0
  309. honeycomb/_generated/models/pipeline_configuration_response_type.py +7 -0
  310. honeycomb/_generated/models/pipeline_configuration_rollout.py +112 -0
  311. honeycomb/_generated/models/pipeline_configuration_rollout_attributes.py +75 -0
  312. honeycomb/_generated/models/pipeline_configuration_rollout_attributes_status.py +12 -0
  313. honeycomb/_generated/models/pipeline_configuration_rollout_links.py +73 -0
  314. honeycomb/_generated/models/pipeline_configuration_rollout_type.py +7 -0
  315. honeycomb/_generated/models/preset_filter.py +78 -0
  316. honeycomb/_generated/models/query.py +346 -0
  317. honeycomb/_generated/models/query_annotation.py +166 -0
  318. honeycomb/_generated/models/query_annotation_source.py +8 -0
  319. honeycomb/_generated/models/query_calculated_fields_item.py +80 -0
  320. honeycomb/_generated/models/query_calculations_item.py +98 -0
  321. honeycomb/_generated/models/query_compare_time_offset_seconds.py +14 -0
  322. honeycomb/_generated/models/query_filter_combination.py +8 -0
  323. honeycomb/_generated/models/query_filters_item.py +126 -0
  324. honeycomb/_generated/models/query_havings_item.py +128 -0
  325. honeycomb/_generated/models/query_op.py +30 -0
  326. honeycomb/_generated/models/query_orders_item.py +115 -0
  327. honeycomb/_generated/models/query_orders_item_order.py +8 -0
  328. honeycomb/_generated/models/query_panel.py +114 -0
  329. honeycomb/_generated/models/query_panel_query_panel.py +143 -0
  330. honeycomb/_generated/models/query_panel_query_panel_query_style.py +9 -0
  331. honeycomb/_generated/models/query_result.py +130 -0
  332. honeycomb/_generated/models/query_result_details.py +156 -0
  333. honeycomb/_generated/models/query_result_details_data.py +188 -0
  334. honeycomb/_generated/models/query_result_details_links.py +85 -0
  335. honeycomb/_generated/models/query_result_links.py +85 -0
  336. honeycomb/_generated/models/query_results_data.py +89 -0
  337. honeycomb/_generated/models/query_results_data_data.py +71 -0
  338. honeycomb/_generated/models/query_results_series.py +97 -0
  339. honeycomb/_generated/models/recipient_properties.py +137 -0
  340. honeycomb/_generated/models/recipient_type.py +12 -0
  341. honeycomb/_generated/models/slack_recipient.py +160 -0
  342. honeycomb/_generated/models/slack_recipient_details.py +71 -0
  343. honeycomb/_generated/models/slack_recipient_type.py +7 -0
  344. honeycomb/_generated/models/slo.py +245 -0
  345. honeycomb/_generated/models/slo_create.py +245 -0
  346. honeycomb/_generated/models/slo_create_sli.py +75 -0
  347. honeycomb/_generated/models/slo_detailed_response.py +312 -0
  348. honeycomb/_generated/models/slo_detailed_response_status.py +10 -0
  349. honeycomb/_generated/models/slo_history.py +94 -0
  350. honeycomb/_generated/models/slo_history_request.py +93 -0
  351. honeycomb/_generated/models/slo_history_response.py +91 -0
  352. honeycomb/_generated/models/slo_panel.py +114 -0
  353. honeycomb/_generated/models/slo_panel_slo_panel.py +75 -0
  354. honeycomb/_generated/models/slo_sli.py +74 -0
  355. honeycomb/_generated/models/tag.py +79 -0
  356. honeycomb/_generated/models/team_relationship.py +78 -0
  357. honeycomb/_generated/models/team_relationship_team.py +78 -0
  358. honeycomb/_generated/models/team_relationship_team_data.py +82 -0
  359. honeycomb/_generated/models/team_relationship_team_data_type.py +7 -0
  360. honeycomb/_generated/models/template_variable_definition.py +81 -0
  361. honeycomb/_generated/models/text_panel.py +114 -0
  362. honeycomb/_generated/models/text_panel_text_panel.py +71 -0
  363. honeycomb/_generated/models/trigger_response.py +399 -0
  364. honeycomb/_generated/models/trigger_with_inline_query.py +390 -0
  365. honeycomb/_generated/models/trigger_with_inline_query_query.py +60 -0
  366. honeycomb/_generated/models/trigger_with_query_reference.py +376 -0
  367. honeycomb/_generated/models/update_board_view_request.py +107 -0
  368. honeycomb/_generated/models/update_environment_request.py +78 -0
  369. honeycomb/_generated/models/update_environment_request_data.py +98 -0
  370. honeycomb/_generated/models/update_environment_request_data_attributes.py +118 -0
  371. honeycomb/_generated/models/update_environment_request_data_attributes_settings.py +73 -0
  372. honeycomb/_generated/models/update_environment_request_data_type.py +7 -0
  373. honeycomb/_generated/models/update_exhaustion_time_burn_alert_request.py +202 -0
  374. honeycomb/_generated/models/update_pipeline_configuration_rollout.py +98 -0
  375. honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes.py +75 -0
  376. honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes_status.py +12 -0
  377. honeycomb/_generated/models/update_pipeline_configuration_rollout_request.py +78 -0
  378. honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data.py +98 -0
  379. honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes.py +75 -0
  380. honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes_status.py +12 -0
  381. honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_type.py +7 -0
  382. honeycomb/_generated/models/update_pipeline_configuration_rollout_response.py +78 -0
  383. honeycomb/_generated/models/update_pipeline_configuration_rollout_type.py +7 -0
  384. honeycomb/_generated/models/user_relationship.py +78 -0
  385. honeycomb/_generated/models/user_relationship_data.py +82 -0
  386. honeycomb/_generated/models/user_relationship_data_type.py +7 -0
  387. honeycomb/_generated/models/validation_error.py +145 -0
  388. honeycomb/_generated/models/validation_error_type_detail_item.py +103 -0
  389. honeycomb/_generated/models/validation_error_type_detail_item_code.py +10 -0
  390. honeycomb/_generated/models/webhook_header.py +81 -0
  391. honeycomb/_generated/models/webhook_recipient.py +160 -0
  392. honeycomb/_generated/models/webhook_recipient_details.py +142 -0
  393. honeycomb/_generated/models/webhook_recipient_details_webhook_payloads.py +117 -0
  394. honeycomb/_generated/models/webhook_recipient_details_webhook_payloads_payload_templates.py +126 -0
  395. honeycomb/_generated/models/webhook_recipient_type.py +7 -0
  396. honeycomb/_generated/py.typed +1 -0
  397. honeycomb/_generated/types.py +46 -0
  398. honeycomb/auth.py +152 -0
  399. honeycomb/client.py +736 -0
  400. honeycomb/exceptions.py +236 -0
  401. honeycomb/models/__init__.py +157 -0
  402. honeycomb/models/api_keys.py +81 -0
  403. honeycomb/models/board_builder.py +387 -0
  404. honeycomb/models/boards.py +86 -0
  405. honeycomb/models/burn_alerts.py +124 -0
  406. honeycomb/models/columns.py +59 -0
  407. honeycomb/models/datasets.py +51 -0
  408. honeycomb/models/derived_columns.py +107 -0
  409. honeycomb/models/environments.py +106 -0
  410. honeycomb/models/events.py +35 -0
  411. honeycomb/models/marker_builder.py +136 -0
  412. honeycomb/models/markers.py +73 -0
  413. honeycomb/models/queries.py +210 -0
  414. honeycomb/models/query_annotations.py +63 -0
  415. honeycomb/models/query_builder.py +840 -0
  416. honeycomb/models/recipient_builder.py +248 -0
  417. honeycomb/models/recipients.py +43 -0
  418. honeycomb/models/service_map_dependencies.py +126 -0
  419. honeycomb/models/slo_builder.py +463 -0
  420. honeycomb/models/slos.py +66 -0
  421. honeycomb/models/tags_mixin.py +79 -0
  422. honeycomb/models/trigger_builder.py +561 -0
  423. honeycomb/models/triggers.py +208 -0
  424. honeycomb/resources/__init__.py +35 -0
  425. honeycomb/resources/_recipient_utils.py +156 -0
  426. honeycomb/resources/api_keys.py +303 -0
  427. honeycomb/resources/base.py +142 -0
  428. honeycomb/resources/boards.py +350 -0
  429. honeycomb/resources/burn_alerts.py +205 -0
  430. honeycomb/resources/columns.py +185 -0
  431. honeycomb/resources/datasets.py +163 -0
  432. honeycomb/resources/derived_columns.py +233 -0
  433. honeycomb/resources/environments.py +295 -0
  434. honeycomb/resources/events.py +156 -0
  435. honeycomb/resources/markers.py +334 -0
  436. honeycomb/resources/queries.py +256 -0
  437. honeycomb/resources/query_annotations.py +207 -0
  438. honeycomb/resources/query_results.py +886 -0
  439. honeycomb/resources/recipients.py +202 -0
  440. honeycomb/resources/service_map_dependencies.py +389 -0
  441. honeycomb/resources/slos.py +353 -0
  442. honeycomb/resources/triggers.py +284 -0
  443. honeycomb/tools/__init__.py +85 -0
  444. honeycomb/tools/__main__.py +204 -0
  445. honeycomb/tools/builders.py +512 -0
  446. honeycomb/tools/descriptions.py +523 -0
  447. honeycomb/tools/executor.py +860 -0
  448. honeycomb/tools/generator.py +2386 -0
  449. honeycomb/tools/schemas.py +184 -0
  450. honeycomb_api-0.1.0.dist-info/METADATA +451 -0
  451. honeycomb_api-0.1.0.dist-info/RECORD +453 -0
  452. honeycomb_api-0.1.0.dist-info/WHEEL +4 -0
  453. honeycomb_api-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,185 @@
1
+ """Columns resource for Honeycomb API."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from ..models.columns import Column, ColumnCreate
8
+ from .base import BaseResource
9
+
10
+ if TYPE_CHECKING:
11
+ from ..client import HoneycombClient
12
+
13
+
14
+ class ColumnsResource(BaseResource):
15
+ """Resource for managing dataset columns.
16
+
17
+ Columns define the schema of your datasets and control how fields
18
+ are displayed and queried in the Honeycomb UI.
19
+
20
+ Example (async):
21
+ >>> async with HoneycombClient(api_key="...") as client:
22
+ ... columns = await client.columns.list(dataset="my-dataset")
23
+ ... column = await client.columns.get(
24
+ ... dataset="my-dataset",
25
+ ... column_id="abc123"
26
+ ... )
27
+
28
+ Example (sync):
29
+ >>> with HoneycombClient(api_key="...", sync=True) as client:
30
+ ... columns = client.columns.list(dataset="my-dataset")
31
+ """
32
+
33
+ def __init__(self, client: HoneycombClient) -> None:
34
+ super().__init__(client)
35
+
36
+ def _build_path(self, dataset: str, column_id: str | None = None) -> str:
37
+ """Build API path for columns."""
38
+ base = f"/1/columns/{dataset}"
39
+ if column_id:
40
+ return f"{base}/{column_id}"
41
+ return base
42
+
43
+ # -------------------------------------------------------------------------
44
+ # Async methods
45
+ # -------------------------------------------------------------------------
46
+
47
+ async def list_async(self, dataset: str) -> list[Column]:
48
+ """List all columns for a dataset (async).
49
+
50
+ Args:
51
+ dataset: Dataset slug.
52
+
53
+ Returns:
54
+ List of Column objects.
55
+ """
56
+ data = await self._get_async(self._build_path(dataset))
57
+ return self._parse_model_list(Column, data)
58
+
59
+ async def get_async(self, dataset: str, column_id: str) -> Column:
60
+ """Get a specific column (async).
61
+
62
+ Args:
63
+ dataset: Dataset slug.
64
+ column_id: Column ID.
65
+
66
+ Returns:
67
+ Column object.
68
+ """
69
+ data = await self._get_async(self._build_path(dataset, column_id))
70
+ return self._parse_model(Column, data)
71
+
72
+ async def create_async(self, dataset: str, column: ColumnCreate) -> Column:
73
+ """Create a new column (async).
74
+
75
+ Args:
76
+ dataset: Dataset slug.
77
+ column: Column configuration.
78
+
79
+ Returns:
80
+ Created Column object.
81
+ """
82
+ data = await self._post_async(self._build_path(dataset), json=column.model_dump_for_api())
83
+ return self._parse_model(Column, data)
84
+
85
+ async def update_async(self, dataset: str, column_id: str, column: ColumnCreate) -> Column:
86
+ """Update an existing column (async).
87
+
88
+ Args:
89
+ dataset: Dataset slug.
90
+ column_id: Column ID.
91
+ column: Updated column configuration.
92
+
93
+ Returns:
94
+ Updated Column object.
95
+ """
96
+ data = await self._put_async(
97
+ self._build_path(dataset, column_id), json=column.model_dump_for_api()
98
+ )
99
+ return self._parse_model(Column, data)
100
+
101
+ async def delete_async(self, dataset: str, column_id: str) -> None:
102
+ """Delete a column (async).
103
+
104
+ Args:
105
+ dataset: Dataset slug.
106
+ column_id: Column ID.
107
+ """
108
+ await self._delete_async(self._build_path(dataset, column_id))
109
+
110
+ # -------------------------------------------------------------------------
111
+ # Sync methods
112
+ # -------------------------------------------------------------------------
113
+
114
+ def list(self, dataset: str) -> list[Column]:
115
+ """List all columns for a dataset.
116
+
117
+ Args:
118
+ dataset: Dataset slug.
119
+
120
+ Returns:
121
+ List of Column objects.
122
+ """
123
+ if not self._client.is_sync:
124
+ raise RuntimeError("Use list_async() for async mode, or pass sync=True to client")
125
+ data = self._get_sync(self._build_path(dataset))
126
+ return self._parse_model_list(Column, data)
127
+
128
+ def get(self, dataset: str, column_id: str) -> Column:
129
+ """Get a specific column.
130
+
131
+ Args:
132
+ dataset: Dataset slug.
133
+ column_id: Column ID.
134
+
135
+ Returns:
136
+ Column object.
137
+ """
138
+ if not self._client.is_sync:
139
+ raise RuntimeError("Use get_async() for async mode, or pass sync=True to client")
140
+ data = self._get_sync(self._build_path(dataset, column_id))
141
+ return self._parse_model(Column, data)
142
+
143
+ def create(self, dataset: str, column: ColumnCreate) -> Column:
144
+ """Create a new column.
145
+
146
+ Args:
147
+ dataset: Dataset slug.
148
+ column: Column configuration.
149
+
150
+ Returns:
151
+ Created Column object.
152
+ """
153
+ if not self._client.is_sync:
154
+ raise RuntimeError("Use create_async() for async mode, or pass sync=True to client")
155
+ data = self._post_sync(self._build_path(dataset), json=column.model_dump_for_api())
156
+ return self._parse_model(Column, data)
157
+
158
+ def update(self, dataset: str, column_id: str, column: ColumnCreate) -> Column:
159
+ """Update an existing column.
160
+
161
+ Args:
162
+ dataset: Dataset slug.
163
+ column_id: Column ID.
164
+ column: Updated column configuration.
165
+
166
+ Returns:
167
+ Updated Column object.
168
+ """
169
+ if not self._client.is_sync:
170
+ raise RuntimeError("Use update_async() for async mode, or pass sync=True to client")
171
+ data = self._put_sync(
172
+ self._build_path(dataset, column_id), json=column.model_dump_for_api()
173
+ )
174
+ return self._parse_model(Column, data)
175
+
176
+ def delete(self, dataset: str, column_id: str) -> None:
177
+ """Delete a column.
178
+
179
+ Args:
180
+ dataset: Dataset slug.
181
+ column_id: Column ID.
182
+ """
183
+ if not self._client.is_sync:
184
+ raise RuntimeError("Use delete_async() for async mode, or pass sync=True to client")
185
+ self._delete_sync(self._build_path(dataset, column_id))
@@ -0,0 +1,163 @@
1
+ """Datasets resource for Honeycomb API."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from ..models.datasets import Dataset, DatasetCreate
8
+ from .base import BaseResource
9
+
10
+ if TYPE_CHECKING:
11
+ from ..client import HoneycombClient
12
+
13
+
14
+ class DatasetsResource(BaseResource):
15
+ """Resource for managing Honeycomb datasets.
16
+
17
+ Datasets are containers for your telemetry data in Honeycomb.
18
+
19
+ Example (async):
20
+ >>> async with HoneycombClient(api_key="...") as client:
21
+ ... datasets = await client.datasets.list()
22
+ ... dataset = await client.datasets.get(slug="my-dataset")
23
+
24
+ Example (sync):
25
+ >>> with HoneycombClient(api_key="...", sync=True) as client:
26
+ ... datasets = client.datasets.list()
27
+ """
28
+
29
+ def __init__(self, client: HoneycombClient) -> None:
30
+ super().__init__(client)
31
+
32
+ def _build_path(self, slug: str | None = None) -> str:
33
+ """Build API path for datasets."""
34
+ base = "/1/datasets"
35
+ if slug:
36
+ return f"{base}/{slug}"
37
+ return base
38
+
39
+ # -------------------------------------------------------------------------
40
+ # Async methods
41
+ # -------------------------------------------------------------------------
42
+
43
+ async def list_async(self) -> list[Dataset]:
44
+ """List all datasets (async).
45
+
46
+ Returns:
47
+ List of Dataset objects.
48
+ """
49
+ data = await self._get_async(self._build_path())
50
+ return self._parse_model_list(Dataset, data)
51
+
52
+ async def get_async(self, slug: str) -> Dataset:
53
+ """Get a specific dataset (async).
54
+
55
+ Args:
56
+ slug: Dataset slug.
57
+
58
+ Returns:
59
+ Dataset object.
60
+ """
61
+ data = await self._get_async(self._build_path(slug))
62
+ return self._parse_model(Dataset, data)
63
+
64
+ async def create_async(self, dataset: DatasetCreate) -> Dataset:
65
+ """Create a new dataset (async).
66
+
67
+ Args:
68
+ dataset: Dataset configuration.
69
+
70
+ Returns:
71
+ Created Dataset object.
72
+ """
73
+ data = await self._post_async(self._build_path(), json=dataset.model_dump_for_api())
74
+ return self._parse_model(Dataset, data)
75
+
76
+ async def update_async(self, slug: str, dataset: DatasetCreate) -> Dataset:
77
+ """Update an existing dataset (async).
78
+
79
+ Args:
80
+ slug: Dataset slug.
81
+ dataset: Updated dataset configuration.
82
+
83
+ Returns:
84
+ Updated Dataset object.
85
+ """
86
+ data = await self._put_async(self._build_path(slug), json=dataset.model_dump_for_api())
87
+ return self._parse_model(Dataset, data)
88
+
89
+ async def delete_async(self, slug: str) -> None:
90
+ """Delete a dataset (async).
91
+
92
+ Args:
93
+ slug: Dataset slug.
94
+ """
95
+ await self._delete_async(self._build_path(slug))
96
+
97
+ # -------------------------------------------------------------------------
98
+ # Sync methods
99
+ # -------------------------------------------------------------------------
100
+
101
+ def list(self) -> list[Dataset]:
102
+ """List all datasets.
103
+
104
+ Returns:
105
+ List of Dataset objects.
106
+ """
107
+ if not self._client.is_sync:
108
+ raise RuntimeError("Use list_async() for async mode, or pass sync=True to client")
109
+ data = self._get_sync(self._build_path())
110
+ return self._parse_model_list(Dataset, data)
111
+
112
+ def get(self, slug: str) -> Dataset:
113
+ """Get a specific dataset.
114
+
115
+ Args:
116
+ slug: Dataset slug.
117
+
118
+ Returns:
119
+ Dataset object.
120
+ """
121
+ if not self._client.is_sync:
122
+ raise RuntimeError("Use get_async() for async mode, or pass sync=True to client")
123
+ data = self._get_sync(self._build_path(slug))
124
+ return self._parse_model(Dataset, data)
125
+
126
+ def create(self, dataset: DatasetCreate) -> Dataset:
127
+ """Create a new dataset.
128
+
129
+ Args:
130
+ dataset: Dataset configuration.
131
+
132
+ Returns:
133
+ Created Dataset object.
134
+ """
135
+ if not self._client.is_sync:
136
+ raise RuntimeError("Use create_async() for async mode, or pass sync=True to client")
137
+ data = self._post_sync(self._build_path(), json=dataset.model_dump_for_api())
138
+ return self._parse_model(Dataset, data)
139
+
140
+ def update(self, slug: str, dataset: DatasetCreate) -> Dataset:
141
+ """Update an existing dataset.
142
+
143
+ Args:
144
+ slug: Dataset slug.
145
+ dataset: Updated dataset configuration.
146
+
147
+ Returns:
148
+ Updated Dataset object.
149
+ """
150
+ if not self._client.is_sync:
151
+ raise RuntimeError("Use update_async() for async mode, or pass sync=True to client")
152
+ data = self._put_sync(self._build_path(slug), json=dataset.model_dump_for_api())
153
+ return self._parse_model(Dataset, data)
154
+
155
+ def delete(self, slug: str) -> None:
156
+ """Delete a dataset.
157
+
158
+ Args:
159
+ slug: Dataset slug.
160
+ """
161
+ if not self._client.is_sync:
162
+ raise RuntimeError("Use delete_async() for async mode, or pass sync=True to client")
163
+ self._delete_sync(self._build_path(slug))
@@ -0,0 +1,233 @@
1
+ """Derived Columns (Calculated Fields) resource for Honeycomb API."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from ..models.derived_columns import DerivedColumn, DerivedColumnCreate
8
+ from .base import BaseResource
9
+
10
+ if TYPE_CHECKING:
11
+ from ..client import HoneycombClient
12
+
13
+
14
+ class DerivedColumnsResource(BaseResource):
15
+ """Resource for managing derived columns (calculated fields).
16
+
17
+ Derived columns (also called Calculated Fields) allow you to run queries
18
+ based on the value of an expression that is calculated from the fields in an event.
19
+
20
+ Can be scoped to a specific dataset or environment-wide (use dataset="__all__").
21
+
22
+ Example (async):
23
+ >>> async with HoneycombClient(api_key="...") as client:
24
+ ... # List derived columns in a dataset
25
+ ... columns = await client.derived_columns.list_async(dataset="my-dataset")
26
+ ...
27
+ ... # Create a derived column
28
+ ... dc = await client.derived_columns.create_async(
29
+ ... dataset="my-dataset",
30
+ ... derived_column=DerivedColumnCreate(
31
+ ... alias="request_success",
32
+ ... expression="IF(LT($status_code, 400), 1, 0)",
33
+ ... description="1 if request succeeded, 0 otherwise"
34
+ ... )
35
+ ... )
36
+ ...
37
+ ... # Create environment-wide derived column
38
+ ... dc = await client.derived_columns.create_async(
39
+ ... dataset="__all__",
40
+ ... derived_column=DerivedColumnCreate(
41
+ ... alias="error_flag",
42
+ ... expression="IF(EQUALS($level, 'error'), 1, 0)"
43
+ ... )
44
+ ... )
45
+
46
+ Example (sync):
47
+ >>> with HoneycombClient(api_key="...", sync=True) as client:
48
+ ... columns = client.derived_columns.list(dataset="my-dataset")
49
+ """
50
+
51
+ def __init__(self, client: HoneycombClient) -> None:
52
+ super().__init__(client)
53
+
54
+ def _build_path(self, dataset: str, column_id: str | None = None) -> str:
55
+ """Build API path for derived columns.
56
+
57
+ Args:
58
+ dataset: Dataset slug or "__all__" for environment-wide.
59
+ column_id: Optional derived column ID.
60
+
61
+ Returns:
62
+ API path string.
63
+ """
64
+ base = f"/1/derived_columns/{dataset}"
65
+ if column_id:
66
+ return f"{base}/{column_id}"
67
+ return base
68
+
69
+ # -------------------------------------------------------------------------
70
+ # Async methods
71
+ # -------------------------------------------------------------------------
72
+
73
+ async def list_async(self, dataset: str, *, alias: str | None = None) -> list[DerivedColumn]:
74
+ """List all derived columns for a dataset or environment (async).
75
+
76
+ Args:
77
+ dataset: Dataset slug or "__all__" for environment-wide.
78
+ alias: Optional alias to filter by (returns single column if found).
79
+
80
+ Returns:
81
+ List of DerivedColumn objects (or single-item list if alias provided).
82
+ """
83
+ params = {"alias": alias} if alias else None
84
+ data = await self._get_async(self._build_path(dataset), params=params)
85
+
86
+ # API returns either a list or a single object when alias is used
87
+ if isinstance(data, list):
88
+ return self._parse_model_list(DerivedColumn, data)
89
+ else:
90
+ return [self._parse_model(DerivedColumn, data)]
91
+
92
+ async def get_async(self, dataset: str, column_id: str) -> DerivedColumn:
93
+ """Get a specific derived column (async).
94
+
95
+ Args:
96
+ dataset: Dataset slug or "__all__" for environment-wide.
97
+ column_id: Derived column ID.
98
+
99
+ Returns:
100
+ DerivedColumn object.
101
+ """
102
+ data = await self._get_async(self._build_path(dataset, column_id))
103
+ return self._parse_model(DerivedColumn, data)
104
+
105
+ async def create_async(
106
+ self, dataset: str, derived_column: DerivedColumnCreate
107
+ ) -> DerivedColumn:
108
+ """Create a new derived column (async).
109
+
110
+ Args:
111
+ dataset: Dataset slug or "__all__" for environment-wide.
112
+ derived_column: Derived column configuration.
113
+
114
+ Returns:
115
+ Created DerivedColumn object.
116
+ """
117
+ data = await self._post_async(
118
+ self._build_path(dataset), json=derived_column.model_dump_for_api()
119
+ )
120
+ return self._parse_model(DerivedColumn, data)
121
+
122
+ async def update_async(
123
+ self, dataset: str, column_id: str, derived_column: DerivedColumnCreate
124
+ ) -> DerivedColumn:
125
+ """Update an existing derived column (async).
126
+
127
+ Args:
128
+ dataset: Dataset slug or "__all__" for environment-wide.
129
+ column_id: Derived column ID.
130
+ derived_column: Updated derived column configuration.
131
+
132
+ Returns:
133
+ Updated DerivedColumn object.
134
+ """
135
+ data = await self._put_async(
136
+ self._build_path(dataset, column_id), json=derived_column.model_dump_for_api()
137
+ )
138
+ return self._parse_model(DerivedColumn, data)
139
+
140
+ async def delete_async(self, dataset: str, column_id: str) -> None:
141
+ """Delete a derived column (async).
142
+
143
+ Args:
144
+ dataset: Dataset slug or "__all__" for environment-wide.
145
+ column_id: Derived column ID.
146
+ """
147
+ await self._delete_async(self._build_path(dataset, column_id))
148
+
149
+ # -------------------------------------------------------------------------
150
+ # Sync methods
151
+ # -------------------------------------------------------------------------
152
+
153
+ def list(self, dataset: str, *, alias: str | None = None) -> list[DerivedColumn]:
154
+ """List all derived columns for a dataset or environment.
155
+
156
+ Args:
157
+ dataset: Dataset slug or "__all__" for environment-wide.
158
+ alias: Optional alias to filter by (returns single column if found).
159
+
160
+ Returns:
161
+ List of DerivedColumn objects (or single-item list if alias provided).
162
+ """
163
+ if not self._client.is_sync:
164
+ raise RuntimeError("Use list_async() for async mode, or pass sync=True to client")
165
+ params = {"alias": alias} if alias else None
166
+ data = self._get_sync(self._build_path(dataset), params=params)
167
+
168
+ # API returns either a list or a single object when alias is used
169
+ if isinstance(data, list):
170
+ return self._parse_model_list(DerivedColumn, data)
171
+ else:
172
+ return [self._parse_model(DerivedColumn, data)]
173
+
174
+ def get(self, dataset: str, column_id: str) -> DerivedColumn:
175
+ """Get a specific derived column.
176
+
177
+ Args:
178
+ dataset: Dataset slug or "__all__" for environment-wide.
179
+ column_id: Derived column ID.
180
+
181
+ Returns:
182
+ DerivedColumn object.
183
+ """
184
+ if not self._client.is_sync:
185
+ raise RuntimeError("Use get_async() for async mode, or pass sync=True to client")
186
+ data = self._get_sync(self._build_path(dataset, column_id))
187
+ return self._parse_model(DerivedColumn, data)
188
+
189
+ def create(self, dataset: str, derived_column: DerivedColumnCreate) -> DerivedColumn:
190
+ """Create a new derived column.
191
+
192
+ Args:
193
+ dataset: Dataset slug or "__all__" for environment-wide.
194
+ derived_column: Derived column configuration.
195
+
196
+ Returns:
197
+ Created DerivedColumn object.
198
+ """
199
+ if not self._client.is_sync:
200
+ raise RuntimeError("Use create_async() for async mode, or pass sync=True to client")
201
+ data = self._post_sync(self._build_path(dataset), json=derived_column.model_dump_for_api())
202
+ return self._parse_model(DerivedColumn, data)
203
+
204
+ def update(
205
+ self, dataset: str, column_id: str, derived_column: DerivedColumnCreate
206
+ ) -> DerivedColumn:
207
+ """Update an existing derived column.
208
+
209
+ Args:
210
+ dataset: Dataset slug or "__all__" for environment-wide.
211
+ column_id: Derived column ID.
212
+ derived_column: Updated derived column configuration.
213
+
214
+ Returns:
215
+ Updated DerivedColumn object.
216
+ """
217
+ if not self._client.is_sync:
218
+ raise RuntimeError("Use update_async() for async mode, or pass sync=True to client")
219
+ data = self._put_sync(
220
+ self._build_path(dataset, column_id), json=derived_column.model_dump_for_api()
221
+ )
222
+ return self._parse_model(DerivedColumn, data)
223
+
224
+ def delete(self, dataset: str, column_id: str) -> None:
225
+ """Delete a derived column.
226
+
227
+ Args:
228
+ dataset: Dataset slug or "__all__" for environment-wide.
229
+ column_id: Derived column ID.
230
+ """
231
+ if not self._client.is_sync:
232
+ raise RuntimeError("Use delete_async() for async mode, or pass sync=True to client")
233
+ self._delete_sync(self._build_path(dataset, column_id))