honeycomb-api 0.1.0__py3-none-any.whl → 0.5.3__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 (443) hide show
  1. honeycomb/__init__.py +9 -0
  2. honeycomb/_generated/api/auth/get_auth.py +2 -5
  3. honeycomb/_generated/api/auth/get_v2_auth.py +2 -5
  4. honeycomb/_generated/api/boards/create_board.py +6 -5
  5. honeycomb/_generated/api/boards/create_board_view.py +14 -9
  6. honeycomb/_generated/api/boards/delete_board.py +2 -5
  7. honeycomb/_generated/api/boards/delete_board_view.py +2 -5
  8. honeycomb/_generated/api/boards/get_board.py +2 -5
  9. honeycomb/_generated/api/boards/get_board_view.py +2 -5
  10. honeycomb/_generated/api/boards/list_board_views.py +10 -9
  11. honeycomb/_generated/api/boards/list_boards.py +2 -5
  12. honeycomb/_generated/api/boards/update_board.py +10 -5
  13. honeycomb/_generated/api/boards/update_board_view.py +2 -5
  14. honeycomb/_generated/api/burn_alerts/create_burn_alert.py +6 -8
  15. honeycomb/_generated/api/burn_alerts/delete_burn_alert.py +2 -5
  16. honeycomb/_generated/api/burn_alerts/get_burn_alert.py +2 -5
  17. honeycomb/_generated/api/burn_alerts/list_burn_alerts_by_slo.py +2 -5
  18. honeycomb/_generated/api/calculated_fields/create_calculated_field.py +2 -5
  19. honeycomb/_generated/api/calculated_fields/delete_calculated_field.py +2 -5
  20. honeycomb/_generated/api/calculated_fields/get_calculated_field.py +2 -5
  21. honeycomb/_generated/api/calculated_fields/list_calculated_fields.py +2 -8
  22. honeycomb/_generated/api/calculated_fields/update_calculated_field.py +2 -5
  23. honeycomb/_generated/api/columns/create_column.py +2 -5
  24. honeycomb/_generated/api/columns/delete_column.py +2 -5
  25. honeycomb/_generated/api/columns/get_column.py +2 -5
  26. honeycomb/_generated/api/columns/list_columns.py +2 -8
  27. honeycomb/_generated/api/columns/update_column.py +2 -5
  28. honeycomb/_generated/api/dataset_definitions/list_dataset_definitions.py +2 -5
  29. honeycomb/_generated/api/dataset_definitions/patch_dataset_definitions.py +2 -5
  30. honeycomb/_generated/api/datasets/create_dataset.py +2 -5
  31. honeycomb/_generated/api/datasets/delete_dataset.py +2 -5
  32. honeycomb/_generated/api/datasets/get_dataset.py +2 -5
  33. honeycomb/_generated/api/datasets/list_datasets.py +2 -5
  34. honeycomb/_generated/api/datasets/update_dataset.py +2 -5
  35. honeycomb/_generated/api/enhance/record_enhance_indexer_usage.py +4 -6
  36. honeycomb/_generated/api/environments/create_environment.py +2 -5
  37. honeycomb/_generated/api/environments/delete_environment.py +2 -5
  38. honeycomb/_generated/api/environments/get_environment.py +2 -5
  39. honeycomb/_generated/api/environments/list_environments.py +2 -7
  40. honeycomb/_generated/api/environments/update_environment.py +2 -5
  41. honeycomb/_generated/api/events/create_event.py +2 -7
  42. honeycomb/_generated/api/events/create_events.py +7 -11
  43. honeycomb/_generated/api/key_management/create_api_key.py +2 -5
  44. honeycomb/_generated/api/key_management/delete_api_key.py +2 -5
  45. honeycomb/_generated/api/key_management/get_api_key.py +2 -5
  46. honeycomb/_generated/api/key_management/list_api_keys.py +2 -7
  47. honeycomb/_generated/api/key_management/update_api_key.py +2 -5
  48. honeycomb/_generated/api/kinesis_events/create_kinesis_events.py +2 -5
  49. honeycomb/_generated/api/marker_settings/create_marker_setting.py +2 -5
  50. honeycomb/_generated/api/marker_settings/delete_marker_settings.py +2 -5
  51. honeycomb/_generated/api/marker_settings/list_marker_settings.py +2 -5
  52. honeycomb/_generated/api/marker_settings/update_marker_settings.py +2 -5
  53. honeycomb/_generated/api/markers/create_marker.py +2 -5
  54. honeycomb/_generated/api/markers/create_marker_v2.py +2 -5
  55. honeycomb/_generated/api/markers/delete_marker.py +2 -5
  56. honeycomb/_generated/api/markers/get_marker.py +2 -5
  57. honeycomb/_generated/api/markers/update_marker.py +2 -5
  58. honeycomb/_generated/api/markers/update_marker_v2.py +2 -5
  59. honeycomb/_generated/api/pipelines/get_pipeline_configuration.py +4 -8
  60. honeycomb/_generated/api/pipelines/record_pipeline_usage.py +4 -6
  61. honeycomb/_generated/api/pipelines/update_pipeline_configuration_rollout.py +6 -7
  62. honeycomb/_generated/api/queries/create_query.py +2 -5
  63. honeycomb/_generated/api/queries/get_query.py +2 -5
  64. honeycomb/_generated/api/query_annotations/create_query_annotation.py +2 -5
  65. honeycomb/_generated/api/query_annotations/delete_query_annotation.py +2 -5
  66. honeycomb/_generated/api/query_annotations/get_query_annotation.py +2 -5
  67. honeycomb/_generated/api/query_annotations/list_query_annotations.py +2 -7
  68. honeycomb/_generated/api/query_annotations/update_query_annotation.py +2 -5
  69. honeycomb/_generated/api/query_data/create_query_result.py +2 -5
  70. honeycomb/_generated/api/query_data/get_query_result.py +2 -5
  71. honeycomb/_generated/api/recipients/create_recipient.py +2 -6
  72. honeycomb/_generated/api/recipients/delete_recipient.py +2 -5
  73. honeycomb/_generated/api/recipients/get_recipient.py +2 -6
  74. honeycomb/_generated/api/recipients/list_recipients.py +2 -6
  75. honeycomb/_generated/api/recipients/update_recipient.py +2 -6
  76. honeycomb/_generated/api/reporting/get_slo_history.py +2 -5
  77. honeycomb/_generated/api/service_maps/create_map_dependency_request.py +6 -9
  78. honeycomb/_generated/api/service_maps/get_map_dependencies.py +2 -7
  79. honeycomb/_generated/api/sl_os/create_slo.py +2 -5
  80. honeycomb/_generated/api/sl_os/delete_slo.py +2 -5
  81. honeycomb/_generated/api/sl_os/get_slo.py +2 -8
  82. honeycomb/_generated/api/sl_os/list_slos.py +2 -5
  83. honeycomb/_generated/api/sl_os/update_slo.py +2 -5
  84. honeycomb/_generated/api/triggers/create_trigger.py +2 -6
  85. honeycomb/_generated/api/triggers/delete_trigger.py +2 -5
  86. honeycomb/_generated/api/triggers/get_trigger.py +2 -5
  87. honeycomb/_generated/api/triggers/list_triggers.py +2 -5
  88. honeycomb/_generated/api/triggers/list_triggers_with_recipient.py +2 -5
  89. honeycomb/_generated/api/triggers/update_trigger.py +2 -5
  90. honeycomb/_generated/client.py +2 -5
  91. honeycomb/_generated/models/__init__.py +195 -88
  92. honeycomb/_generated/models/api_key_create_request.py +6 -5
  93. honeycomb/_generated/models/api_key_create_request_data.py +15 -11
  94. honeycomb/_generated/models/api_key_create_request_data_relationships.py +2 -3
  95. honeycomb/_generated/models/api_key_create_request_data_type.py +1 -0
  96. honeycomb/_generated/models/api_key_list_response.py +2 -5
  97. honeycomb/_generated/models/api_key_object.py +14 -14
  98. honeycomb/_generated/models/api_key_object_links.py +2 -9
  99. honeycomb/_generated/models/api_key_object_relationships.py +5 -9
  100. honeycomb/_generated/models/api_key_object_type.py +1 -0
  101. honeycomb/_generated/models/api_key_response.py +2 -3
  102. honeycomb/_generated/models/api_key_update_request.py +15 -17
  103. honeycomb/_generated/models/auth.py +2 -5
  104. honeycomb/_generated/models/auth_api_key_access.py +2 -9
  105. honeycomb/_generated/models/auth_environment.py +2 -9
  106. honeycomb/_generated/models/auth_team.py +2 -9
  107. honeycomb/_generated/models/auth_type.py +1 -0
  108. honeycomb/_generated/models/auth_v2_response.py +5 -8
  109. honeycomb/_generated/models/auth_v2_response_data.py +14 -11
  110. honeycomb/_generated/models/auth_v2_response_data_attributes.py +10 -9
  111. honeycomb/_generated/models/auth_v2_response_data_attributes_key_type.py +1 -0
  112. honeycomb/_generated/models/auth_v2_response_data_attributes_timestamps.py +4 -12
  113. honeycomb/_generated/models/auth_v2_response_data_relationships.py +1 -7
  114. honeycomb/_generated/models/auth_v2_response_data_type.py +1 -0
  115. honeycomb/_generated/models/base_trigger.py +21 -18
  116. honeycomb/_generated/models/base_trigger_alert_type.py +1 -0
  117. honeycomb/_generated/models/base_trigger_baseline_details_type_0.py +5 -9
  118. honeycomb/_generated/models/base_trigger_baseline_details_type_0_offset_minutes.py +1 -0
  119. honeycomb/_generated/models/base_trigger_baseline_details_type_0_type.py +1 -0
  120. honeycomb/_generated/models/base_trigger_evaluation_schedule.py +8 -6
  121. honeycomb/_generated/models/base_trigger_evaluation_schedule_type.py +1 -0
  122. honeycomb/_generated/models/base_trigger_evaluation_schedule_window.py +4 -9
  123. honeycomb/_generated/models/base_trigger_evaluation_schedule_window_days_of_week_item.py +1 -0
  124. honeycomb/_generated/models/base_trigger_threshold.py +2 -9
  125. honeycomb/_generated/models/base_trigger_threshold_op.py +1 -0
  126. honeycomb/_generated/models/batch_event.py +2 -5
  127. honeycomb/_generated/models/board.py +15 -17
  128. honeycomb/_generated/models/board_layout_generation.py +1 -0
  129. honeycomb/_generated/models/board_links.py +2 -9
  130. honeycomb/_generated/models/board_panel_position.py +2 -9
  131. honeycomb/_generated/models/board_query_visualization_settings.py +8 -8
  132. honeycomb/_generated/models/board_query_visualization_settings_charts_item.py +4 -10
  133. honeycomb/_generated/models/board_query_visualization_settings_charts_item_chart_type.py +1 -0
  134. honeycomb/_generated/models/board_type.py +1 -0
  135. honeycomb/_generated/models/board_view_filter.py +2 -9
  136. honeycomb/_generated/models/board_view_filter_operation.py +1 -0
  137. honeycomb/_generated/models/board_view_response.py +2 -5
  138. honeycomb/_generated/models/budget_rate.py +4 -12
  139. honeycomb/_generated/models/budget_rate_alert_type.py +1 -0
  140. honeycomb/_generated/models/burn_alert_shared_params.py +4 -12
  141. honeycomb/_generated/models/calculated_field.py +2 -9
  142. honeycomb/_generated/models/configuration_key_attributes.py +16 -12
  143. honeycomb/_generated/models/configuration_key_attributes_key_type.py +1 -0
  144. honeycomb/_generated/models/configuration_key_attributes_permissions.py +172 -0
  145. honeycomb/_generated/models/configuration_key_attributes_timestamps.py +4 -12
  146. honeycomb/_generated/models/configuration_key_request.py +101 -0
  147. honeycomb/_generated/models/configuration_key_request_attributes.py +107 -0
  148. honeycomb/_generated/models/configuration_key_request_attributes_permissions.py +168 -0
  149. honeycomb/_generated/models/configuration_key_request_type.py +8 -0
  150. honeycomb/_generated/models/create_board_view_request.py +2 -3
  151. honeycomb/_generated/models/create_budget_rate_burn_alert_request.py +10 -10
  152. honeycomb/_generated/models/create_budget_rate_burn_alert_request_slo.py +1 -7
  153. honeycomb/_generated/models/create_column.py +2 -9
  154. honeycomb/_generated/models/create_column_type.py +1 -0
  155. honeycomb/_generated/models/create_enhance_indexer_usage_record_request.py +8 -6
  156. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data.py +10 -7
  157. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes.py +8 -8
  158. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data.py +8 -6
  159. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item.py +8 -6
  160. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +8 -6
  161. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +8 -8
  162. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +10 -7
  163. 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 +1 -0
  164. 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 +8 -6
  165. 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 +8 -6
  166. 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 +2 -9
  167. honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_type.py +1 -0
  168. honeycomb/_generated/models/create_environment_request.py +8 -6
  169. honeycomb/_generated/models/create_environment_request_data.py +10 -7
  170. honeycomb/_generated/models/create_environment_request_data_attributes.py +2 -9
  171. honeycomb/_generated/models/create_environment_request_data_type.py +1 -0
  172. honeycomb/_generated/models/create_events_content_encoding.py +1 -0
  173. honeycomb/_generated/models/create_events_response_200_item.py +2 -9
  174. honeycomb/_generated/models/create_exhaustion_time_burn_alert_request.py +10 -10
  175. honeycomb/_generated/models/create_exhaustion_time_burn_alert_request_slo.py +1 -7
  176. honeycomb/_generated/models/create_map_dependencies_request.py +2 -5
  177. honeycomb/_generated/models/create_map_dependencies_response.py +4 -10
  178. honeycomb/_generated/models/create_map_dependencies_response_status.py +1 -0
  179. honeycomb/_generated/models/create_pipeline_health_record_request.py +8 -6
  180. honeycomb/_generated/models/create_pipeline_health_record_request_data.py +10 -7
  181. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes.py +8 -8
  182. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data.py +8 -6
  183. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item.py +8 -6
  184. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +8 -6
  185. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +8 -8
  186. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +10 -7
  187. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +1 -0
  188. honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +8 -6
  189. 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 +8 -6
  190. 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 +2 -9
  191. honeycomb/_generated/models/create_pipeline_health_record_request_data_type.py +1 -0
  192. honeycomb/_generated/models/create_query_result_request.py +2 -9
  193. honeycomb/_generated/models/dataset.py +2 -6
  194. honeycomb/_generated/models/dataset_creation_payload.py +2 -9
  195. honeycomb/_generated/models/dataset_definition_type_1.py +4 -10
  196. honeycomb/_generated/models/dataset_definition_type_1_column_type.py +1 -0
  197. honeycomb/_generated/models/dataset_definitions.py +2 -6
  198. honeycomb/_generated/models/dataset_relationship.py +2 -3
  199. honeycomb/_generated/models/dataset_relationship_data.py +2 -8
  200. honeycomb/_generated/models/dataset_relationship_data_type.py +1 -0
  201. honeycomb/_generated/models/dataset_settings.py +2 -9
  202. honeycomb/_generated/models/dataset_update_payload.py +8 -8
  203. honeycomb/_generated/models/dataset_update_payload_settings.py +2 -9
  204. honeycomb/_generated/models/detailed_error.py +2 -9
  205. honeycomb/_generated/models/email_recipient.py +4 -7
  206. honeycomb/_generated/models/email_recipient_details.py +1 -7
  207. honeycomb/_generated/models/email_recipient_type.py +1 -0
  208. honeycomb/_generated/models/environment.py +6 -7
  209. honeycomb/_generated/models/environment_attributes.py +11 -9
  210. honeycomb/_generated/models/environment_attributes_color_type_1.py +1 -0
  211. honeycomb/_generated/models/environment_attributes_settings.py +1 -7
  212. honeycomb/_generated/models/environment_color.py +1 -0
  213. honeycomb/_generated/models/environment_links.py +1 -7
  214. honeycomb/_generated/models/environment_list_response.py +2 -5
  215. honeycomb/_generated/models/environment_relationship.py +8 -6
  216. honeycomb/_generated/models/environment_relationship_data.py +3 -8
  217. honeycomb/_generated/models/environment_relationship_data_type.py +1 -0
  218. honeycomb/_generated/models/environment_response.py +2 -3
  219. honeycomb/_generated/models/environment_type.py +1 -0
  220. honeycomb/_generated/models/error.py +2 -9
  221. honeycomb/_generated/models/event.py +2 -8
  222. honeycomb/_generated/models/exhaustion_time.py +4 -12
  223. honeycomb/_generated/models/exhaustion_time_alert_type.py +1 -0
  224. honeycomb/_generated/models/exhaustion_time_burn_alert_list_response.py +10 -10
  225. honeycomb/_generated/models/exhaustion_time_burn_alert_list_response_slo.py +2 -9
  226. honeycomb/_generated/models/filter_op.py +1 -0
  227. honeycomb/_generated/models/get_map_dependencies_response.py +7 -10
  228. honeycomb/_generated/models/get_map_dependencies_response_status.py +1 -0
  229. honeycomb/_generated/models/having_calculate_op.py +1 -0
  230. honeycomb/_generated/models/having_op.py +1 -0
  231. honeycomb/_generated/models/included_resource.py +6 -7
  232. honeycomb/_generated/models/included_resource_attributes.py +1 -7
  233. honeycomb/_generated/models/ingest_key_attributes.py +14 -11
  234. honeycomb/_generated/models/ingest_key_attributes_key_type.py +1 -0
  235. honeycomb/_generated/models/ingest_key_attributes_permissions.py +2 -9
  236. honeycomb/_generated/models/ingest_key_attributes_timestamps.py +4 -12
  237. honeycomb/_generated/models/ingest_key_request.py +100 -0
  238. honeycomb/_generated/models/ingest_key_request_attributes.py +75 -0
  239. honeycomb/_generated/models/ingest_key_request_type.py +8 -0
  240. honeycomb/_generated/models/ingest_key_type.py +2 -9
  241. honeycomb/_generated/models/ingest_key_type_key_type.py +1 -0
  242. honeycomb/_generated/models/jsonapi_error_source.py +2 -9
  243. honeycomb/_generated/models/kinesis_event.py +2 -5
  244. honeycomb/_generated/models/kinesis_event_record.py +2 -9
  245. honeycomb/_generated/models/kinesis_response.py +2 -9
  246. honeycomb/_generated/models/list_api_keys_filtertype.py +1 -0
  247. honeycomb/_generated/models/map_dependency.py +2 -5
  248. honeycomb/_generated/models/map_node.py +2 -9
  249. honeycomb/_generated/models/map_node_type.py +1 -0
  250. honeycomb/_generated/models/marker.py +2 -9
  251. honeycomb/_generated/models/marker_create_request.py +2 -3
  252. honeycomb/_generated/models/marker_create_request_data.py +16 -10
  253. honeycomb/_generated/models/marker_create_request_data_attributes.py +2 -9
  254. honeycomb/_generated/models/marker_create_request_data_relationships.py +2 -3
  255. honeycomb/_generated/models/marker_create_request_data_type.py +1 -0
  256. honeycomb/_generated/models/marker_object.py +7 -8
  257. honeycomb/_generated/models/marker_object_attributes.py +8 -8
  258. honeycomb/_generated/models/marker_object_attributes_timestamps.py +4 -12
  259. honeycomb/_generated/models/marker_object_links.py +2 -9
  260. honeycomb/_generated/models/marker_object_relationships.py +8 -8
  261. honeycomb/_generated/models/marker_object_relationships_dataset.py +8 -9
  262. honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0.py +4 -10
  263. honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0_type.py +1 -0
  264. honeycomb/_generated/models/marker_object_type.py +1 -0
  265. honeycomb/_generated/models/marker_response.py +2 -3
  266. honeycomb/_generated/models/marker_setting.py +2 -10
  267. honeycomb/_generated/models/marker_update_request.py +2 -3
  268. honeycomb/_generated/models/marker_update_request_data.py +16 -10
  269. honeycomb/_generated/models/marker_update_request_data_attributes.py +2 -9
  270. honeycomb/_generated/models/marker_update_request_data_relationships.py +2 -3
  271. honeycomb/_generated/models/marker_update_request_data_type.py +1 -0
  272. honeycomb/_generated/models/ms_teams_recipient.py +4 -7
  273. honeycomb/_generated/models/ms_teams_recipient_details.py +1 -7
  274. honeycomb/_generated/models/ms_teams_recipient_type.py +1 -0
  275. honeycomb/_generated/models/ms_teams_workflow_recipient.py +12 -11
  276. honeycomb/_generated/models/ms_teams_workflow_recipient_details.py +1 -7
  277. honeycomb/_generated/models/ms_teams_workflow_recipient_type.py +1 -0
  278. honeycomb/_generated/models/notification_recipient.py +8 -8
  279. honeycomb/_generated/models/notification_recipient_details.py +10 -9
  280. honeycomb/_generated/models/notification_recipient_details_pagerduty_severity.py +1 -0
  281. honeycomb/_generated/models/notification_recipient_details_variables_item.py +2 -9
  282. honeycomb/_generated/models/pager_duty_recipient.py +8 -9
  283. honeycomb/_generated/models/pager_duty_recipient_details.py +1 -7
  284. honeycomb/_generated/models/pager_duty_recipient_type.py +1 -0
  285. honeycomb/_generated/models/pagination_links.py +2 -8
  286. honeycomb/_generated/models/payload_template.py +2 -9
  287. honeycomb/_generated/models/pipeline_configuration_response.py +16 -10
  288. honeycomb/_generated/models/pipeline_configuration_response_attributes.py +8 -8
  289. honeycomb/_generated/models/pipeline_configuration_response_attributes_configs_item.py +1 -7
  290. honeycomb/_generated/models/pipeline_configuration_response_links.py +2 -9
  291. honeycomb/_generated/models/pipeline_configuration_response_type.py +1 -0
  292. honeycomb/_generated/models/pipeline_configuration_rollout.py +16 -10
  293. honeycomb/_generated/models/pipeline_configuration_rollout_attributes.py +3 -8
  294. honeycomb/_generated/models/pipeline_configuration_rollout_attributes_status.py +1 -0
  295. honeycomb/_generated/models/pipeline_configuration_rollout_links.py +2 -9
  296. honeycomb/_generated/models/pipeline_configuration_rollout_type.py +1 -0
  297. honeycomb/_generated/models/preset_filter.py +1 -7
  298. honeycomb/_generated/models/query.py +11 -11
  299. honeycomb/_generated/models/query_annotation.py +4 -12
  300. honeycomb/_generated/models/query_annotation_source.py +1 -0
  301. honeycomb/_generated/models/query_calculated_fields_item.py +1 -7
  302. honeycomb/_generated/models/query_calculations_item.py +2 -10
  303. honeycomb/_generated/models/query_compare_time_offset_seconds.py +1 -0
  304. honeycomb/_generated/models/query_filter_combination.py +1 -0
  305. honeycomb/_generated/models/query_filters_item.py +2 -11
  306. honeycomb/_generated/models/query_havings_item.py +2 -10
  307. honeycomb/_generated/models/query_op.py +1 -0
  308. honeycomb/_generated/models/query_orders_item.py +2 -9
  309. honeycomb/_generated/models/query_orders_item_order.py +1 -0
  310. honeycomb/_generated/models/query_panel.py +2 -6
  311. honeycomb/_generated/models/query_panel_query_panel.py +10 -9
  312. honeycomb/_generated/models/query_panel_query_panel_query_style.py +1 -0
  313. honeycomb/_generated/models/query_result.py +2 -5
  314. honeycomb/_generated/models/query_result_details.py +5 -8
  315. honeycomb/_generated/models/query_result_details_data.py +5 -8
  316. honeycomb/_generated/models/query_result_details_links.py +2 -9
  317. honeycomb/_generated/models/query_result_links.py +2 -9
  318. honeycomb/_generated/models/query_results_data.py +2 -5
  319. honeycomb/_generated/models/query_results_data_data.py +2 -8
  320. honeycomb/_generated/models/query_results_series.py +2 -5
  321. honeycomb/_generated/models/recipient_properties.py +4 -12
  322. honeycomb/_generated/models/recipient_type.py +1 -0
  323. honeycomb/_generated/models/slack_recipient.py +4 -7
  324. honeycomb/_generated/models/slack_recipient_details.py +1 -7
  325. honeycomb/_generated/models/slack_recipient_type.py +1 -0
  326. honeycomb/_generated/models/slo.py +4 -8
  327. honeycomb/_generated/models/slo_create.py +4 -8
  328. honeycomb/_generated/models/slo_create_sli.py +1 -7
  329. honeycomb/_generated/models/slo_detailed_response.py +4 -8
  330. honeycomb/_generated/models/slo_detailed_response_status.py +1 -0
  331. honeycomb/_generated/models/slo_history.py +2 -9
  332. honeycomb/_generated/models/slo_history_request.py +2 -8
  333. honeycomb/_generated/models/slo_history_response.py +2 -3
  334. honeycomb/_generated/models/slo_panel.py +2 -6
  335. honeycomb/_generated/models/slo_panel_slo_panel.py +2 -9
  336. honeycomb/_generated/models/slo_sli.py +1 -7
  337. honeycomb/_generated/models/tag.py +1 -7
  338. honeycomb/_generated/models/team_relationship.py +2 -3
  339. honeycomb/_generated/models/team_relationship_team.py +6 -5
  340. honeycomb/_generated/models/team_relationship_team_data.py +3 -8
  341. honeycomb/_generated/models/team_relationship_team_data_type.py +1 -0
  342. honeycomb/_generated/models/template_variable_definition.py +2 -9
  343. honeycomb/_generated/models/text_panel.py +2 -6
  344. honeycomb/_generated/models/text_panel_text_panel.py +1 -7
  345. honeycomb/_generated/models/trigger_response.py +27 -21
  346. honeycomb/_generated/models/trigger_with_inline_query.py +27 -21
  347. honeycomb/_generated/models/trigger_with_inline_query_query.py +1 -7
  348. honeycomb/_generated/models/trigger_with_query_reference.py +21 -18
  349. honeycomb/_generated/models/update_board_view_request.py +2 -5
  350. honeycomb/_generated/models/update_environment_request.py +8 -6
  351. honeycomb/_generated/models/update_environment_request_data.py +10 -7
  352. honeycomb/_generated/models/update_environment_request_data_attributes.py +8 -8
  353. honeycomb/_generated/models/update_environment_request_data_attributes_settings.py +2 -9
  354. honeycomb/_generated/models/update_environment_request_data_type.py +1 -0
  355. honeycomb/_generated/models/update_exhaustion_time_burn_alert_request.py +4 -7
  356. honeycomb/_generated/models/update_pipeline_configuration_rollout.py +10 -7
  357. honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes.py +3 -8
  358. honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes_status.py +1 -0
  359. honeycomb/_generated/models/update_pipeline_configuration_rollout_request.py +8 -6
  360. honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data.py +10 -7
  361. honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes.py +3 -8
  362. honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes_status.py +1 -0
  363. honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_type.py +1 -0
  364. honeycomb/_generated/models/update_pipeline_configuration_rollout_response.py +8 -6
  365. honeycomb/_generated/models/update_pipeline_configuration_rollout_type.py +1 -0
  366. honeycomb/_generated/models/user_relationship.py +2 -3
  367. honeycomb/_generated/models/user_relationship_data.py +2 -8
  368. honeycomb/_generated/models/user_relationship_data_type.py +1 -0
  369. honeycomb/_generated/models/validation_error.py +8 -8
  370. honeycomb/_generated/models/validation_error_type_detail_item.py +4 -10
  371. honeycomb/_generated/models/validation_error_type_detail_item_code.py +1 -0
  372. honeycomb/_generated/models/webhook_header.py +2 -9
  373. honeycomb/_generated/models/webhook_recipient.py +4 -7
  374. honeycomb/_generated/models/webhook_recipient_details.py +8 -8
  375. honeycomb/_generated/models/webhook_recipient_details_webhook_payloads.py +12 -10
  376. honeycomb/_generated/models/webhook_recipient_details_webhook_payloads_payload_templates.py +2 -5
  377. honeycomb/_generated/models/webhook_recipient_type.py +1 -0
  378. honeycomb/_generated/types.py +1 -1
  379. honeycomb/cli/__init__.py +85 -0
  380. honeycomb/cli/api_keys.py +205 -0
  381. honeycomb/cli/auth.py +70 -0
  382. honeycomb/cli/boards.py +203 -0
  383. honeycomb/cli/columns.py +256 -0
  384. honeycomb/cli/config.py +259 -0
  385. honeycomb/cli/datasets.py +186 -0
  386. honeycomb/cli/derived_columns.py +222 -0
  387. honeycomb/cli/environments.py +240 -0
  388. honeycomb/cli/formatters.py +242 -0
  389. honeycomb/cli/markers.py +151 -0
  390. honeycomb/cli/queries.py +380 -0
  391. honeycomb/cli/recipients.py +211 -0
  392. honeycomb/cli/slos.py +338 -0
  393. honeycomb/cli/triggers.py +271 -0
  394. honeycomb/client.py +13 -7
  395. honeycomb/models/__init__.py +18 -3
  396. honeycomb/models/api_keys.py +49 -5
  397. honeycomb/models/auth.py +71 -0
  398. honeycomb/models/board_builder.py +97 -25
  399. honeycomb/models/boards.py +95 -1
  400. honeycomb/models/datasets.py +42 -0
  401. honeycomb/models/queries.py +21 -0
  402. honeycomb/models/query_builder.py +119 -59
  403. honeycomb/models/recipient_builder.py +51 -4
  404. honeycomb/models/slo_builder.py +24 -19
  405. honeycomb/models/slos.py +50 -3
  406. honeycomb/models/tool_inputs.py +630 -0
  407. honeycomb/models/triggers.py +39 -9
  408. honeycomb/resources/__init__.py +2 -0
  409. honeycomb/resources/api_keys.py +66 -29
  410. honeycomb/resources/auth.py +97 -0
  411. honeycomb/resources/boards.py +272 -18
  412. honeycomb/resources/datasets.py +49 -11
  413. honeycomb/resources/environments.py +54 -31
  414. honeycomb/resources/slos.py +87 -61
  415. honeycomb/tools/__main__.py +40 -4
  416. honeycomb/tools/builders.py +235 -150
  417. honeycomb/tools/descriptions.py +175 -7
  418. honeycomb/tools/executor.py +212 -25
  419. honeycomb/tools/generator.py +61 -2264
  420. honeycomb/tools/resources/__init__.py +42 -0
  421. honeycomb/tools/resources/api_keys.py +249 -0
  422. honeycomb/tools/resources/auth.py +98 -0
  423. honeycomb/tools/resources/boards.py +313 -0
  424. honeycomb/tools/resources/burn_alerts.py +278 -0
  425. honeycomb/tools/resources/columns.py +257 -0
  426. honeycomb/tools/resources/datasets.py +215 -0
  427. honeycomb/tools/resources/derived_columns.py +311 -0
  428. honeycomb/tools/resources/environments.py +211 -0
  429. honeycomb/tools/resources/events.py +158 -0
  430. honeycomb/tools/resources/marker_settings.py +216 -0
  431. honeycomb/tools/resources/markers.py +197 -0
  432. honeycomb/tools/resources/queries.py +220 -0
  433. honeycomb/tools/resources/recipients.py +297 -0
  434. honeycomb/tools/resources/service_map.py +110 -0
  435. honeycomb/tools/resources/slos.py +276 -0
  436. honeycomb/tools/resources/triggers.py +328 -0
  437. honeycomb/tools/schemas.py +81 -0
  438. {honeycomb_api-0.1.0.dist-info → honeycomb_api-0.5.3.dist-info}/METADATA +33 -8
  439. honeycomb_api-0.5.3.dist-info/RECORD +497 -0
  440. honeycomb_api-0.5.3.dist-info/entry_points.txt +5 -0
  441. honeycomb_api-0.1.0.dist-info/RECORD +0 -453
  442. {honeycomb_api-0.1.0.dist-info → honeycomb_api-0.5.3.dist-info}/WHEEL +0 -0
  443. {honeycomb_api-0.1.0.dist-info → honeycomb_api-0.5.3.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,297 @@
1
+ """Recipients tool definitions for Claude API.
2
+
3
+ This module provides tool generators and descriptions for
4
+ recipients resources.
5
+ """
6
+
7
+ from typing import Any
8
+
9
+ from honeycomb.models.tool_inputs import RecipientCreateToolInput
10
+ from honeycomb.tools.schemas import add_parameter, generate_schema_from_model
11
+
12
+ # ==============================================================================
13
+ # Recipients Descriptions
14
+ # ==============================================================================
15
+
16
+ RECIPIENT_DESCRIPTIONS = {
17
+ "honeycomb_list_recipients": (
18
+ "Lists all notification recipients configured in your Honeycomb environment (no parameters required). "
19
+ "Use this to discover existing notification targets before creating triggers, avoid duplicate recipients, or audit alerting destinations. "
20
+ "This operation requires no parameters - it automatically lists all recipients across all types (email, Slack, PagerDuty, webhooks, MS Teams). "
21
+ "Returns a list of recipient objects including their IDs, types, and configuration details."
22
+ ),
23
+ "honeycomb_get_recipient": (
24
+ "Retrieves detailed configuration for a specific recipient by ID. "
25
+ "Use this to inspect a recipient's type and delivery details before updating it or when troubleshooting notification issues. "
26
+ "Requires the recipient ID parameter. "
27
+ "Returns the complete recipient configuration including type-specific details like email addresses, Slack channels, or webhook URLs."
28
+ ),
29
+ "honeycomb_create_recipient": (
30
+ "Creates a new notification recipient for alert delivery. "
31
+ "Use this when setting up alerting for triggers or burn alerts, adding new on-call notification channels, or migrating alert destinations from another platform. "
32
+ "Requires a type (email, slack, pagerduty, webhook, msteams_workflow) and type-specific details object. "
33
+ "For email: provide 'email_address'. "
34
+ "For Slack: provide 'slack_channel'. "
35
+ "For PagerDuty: provide 'pagerduty_integration_key' and 'pagerduty_integration_name'. "
36
+ "For webhooks: provide 'webhook_url' and 'webhook_name', optionally 'webhook_secret', 'webhook_headers' (max 5, for auth), and 'webhook_payloads' (for custom JSON templates with variables). "
37
+ "For MS Teams: provide 'webhook_url' and 'webhook_name'. "
38
+ "Recipients can be referenced by ID when creating or updating triggers and burn alerts."
39
+ ),
40
+ "honeycomb_update_recipient": (
41
+ "Updates an existing recipient's configuration including its type or delivery details. "
42
+ "Use this to change notification destinations, update Slack channels, rotate webhook secrets, or fix incorrect email addresses. "
43
+ "Requires the recipient ID and the complete updated recipient configuration. "
44
+ "Note: This replaces the entire recipient configuration, so include all fields you want to preserve."
45
+ ),
46
+ "honeycomb_delete_recipient": (
47
+ "Permanently deletes a recipient from Honeycomb. "
48
+ "Use this when removing unused notification channels, cleaning up test recipients, or decommissioning alert destinations. "
49
+ "Requires the recipient ID parameter. "
50
+ "Warning: This action cannot be undone. Any triggers or burn alerts using this recipient will have it removed from their notification list."
51
+ ),
52
+ "honeycomb_get_recipient_triggers": (
53
+ "Retrieves all triggers that are configured to send notifications to a specific recipient. "
54
+ "Use this before deleting a recipient to understand impact, when auditing alert routing, or troubleshooting why notifications aren't being sent. "
55
+ "Requires the recipient ID parameter. "
56
+ "Returns a list of trigger objects that reference this recipient, showing which datasets and alerts would be affected by changes."
57
+ ),
58
+ }
59
+
60
+
61
+ def get_description(tool_name: str) -> str:
62
+ """Get the description for a tool in this resource."""
63
+ return RECIPIENT_DESCRIPTIONS[tool_name]
64
+
65
+
66
+ def create_tool_definition(
67
+ name: str,
68
+ description: str,
69
+ input_schema: dict[str, Any],
70
+ input_examples: list[dict[str, Any]] | None = None,
71
+ ) -> dict[str, Any]:
72
+ """Create a Claude tool definition."""
73
+ from honeycomb.tools.descriptions import validate_description
74
+ from honeycomb.tools.schemas import add_metadata_fields, validate_schema, validate_tool_name
75
+
76
+ validate_tool_name(name)
77
+ validate_description(description)
78
+ validate_schema(input_schema)
79
+ add_metadata_fields(input_schema)
80
+
81
+ definition: dict[str, Any] = {
82
+ "name": name,
83
+ "description": description,
84
+ "input_schema": input_schema,
85
+ }
86
+
87
+ if input_examples:
88
+ definition["input_examples"] = input_examples
89
+
90
+ return definition
91
+
92
+
93
+ # ==============================================================================
94
+ # Recipients Tool Definitions
95
+ # ==============================================================================
96
+
97
+
98
+ def generate_list_recipients_tool() -> dict[str, Any]:
99
+ """Generate honeycomb_list_recipients tool definition."""
100
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": []}
101
+
102
+ examples: list[dict[str, Any]] = [
103
+ {}, # List all recipients
104
+ ]
105
+
106
+ return create_tool_definition(
107
+ name="honeycomb_list_recipients",
108
+ description=get_description("honeycomb_list_recipients"),
109
+ input_schema=schema,
110
+ input_examples=examples,
111
+ )
112
+
113
+
114
+ def generate_get_recipient_tool() -> dict[str, Any]:
115
+ """Generate honeycomb_get_recipient tool definition."""
116
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": ["recipient_id"]}
117
+
118
+ add_parameter(schema, "recipient_id", "string", "The recipient ID to retrieve", required=True)
119
+
120
+ examples: list[dict[str, Any]] = [
121
+ {"recipient_id": "rec-123"},
122
+ {"recipient_id": "rec-456"},
123
+ ]
124
+
125
+ return create_tool_definition(
126
+ name="honeycomb_get_recipient",
127
+ description=get_description("honeycomb_get_recipient"),
128
+ input_schema=schema,
129
+ input_examples=examples,
130
+ )
131
+
132
+
133
+ def generate_create_recipient_tool() -> dict[str, Any]:
134
+ """Generate honeycomb_create_recipient tool definition."""
135
+ base_schema = generate_schema_from_model(
136
+ RecipientCreateToolInput,
137
+ exclude_fields={"id", "created_at", "updated_at"},
138
+ )
139
+
140
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": []}
141
+ schema["properties"].update(base_schema["properties"])
142
+ schema["required"].extend(base_schema.get("required", []))
143
+
144
+ # Add definitions if present
145
+ if "$defs" in base_schema:
146
+ schema["$defs"] = base_schema["$defs"]
147
+
148
+ examples: list[dict[str, Any]] = [
149
+ # Email recipient
150
+ {
151
+ "type": "email",
152
+ "details": {"email_address": "alerts@example.com"},
153
+ },
154
+ # Slack channel
155
+ {
156
+ "type": "slack",
157
+ "details": {"slack_channel": "#alerts"},
158
+ },
159
+ # PagerDuty
160
+ {
161
+ "type": "pagerduty",
162
+ "details": {
163
+ "pagerduty_integration_key": "1234567890abcdef1234567890abcdef",
164
+ "pagerduty_integration_name": "Production Alerts",
165
+ },
166
+ },
167
+ # Basic webhook
168
+ {
169
+ "type": "webhook",
170
+ "details": {
171
+ "webhook_url": "https://hooks.example.com/alerts",
172
+ "webhook_name": "Alert Webhook",
173
+ "webhook_secret": "webhook-secret-key",
174
+ },
175
+ },
176
+ # Advanced webhook with auth header
177
+ {
178
+ "type": "webhook",
179
+ "details": {
180
+ "webhook_url": "https://api.example.com/notifications",
181
+ "webhook_name": "Authenticated Webhook",
182
+ "webhook_headers": [
183
+ {"header": "Authorization", "value": "Bearer api-key-123"},
184
+ {"header": "X-Environment", "value": "production"},
185
+ ],
186
+ },
187
+ },
188
+ # MS Teams workflow
189
+ {
190
+ "type": "msteams_workflow",
191
+ "details": {
192
+ "webhook_url": "https://test.logic.azure.com/workflows/abc/triggers/manual/paths/invoke",
193
+ "webhook_name": "Team Alerts Channel",
194
+ },
195
+ },
196
+ ]
197
+
198
+ return create_tool_definition(
199
+ name="honeycomb_create_recipient",
200
+ description=get_description("honeycomb_create_recipient"),
201
+ input_schema=schema,
202
+ input_examples=examples,
203
+ )
204
+
205
+
206
+ def generate_update_recipient_tool() -> dict[str, Any]:
207
+ """Generate honeycomb_update_recipient tool definition."""
208
+ base_schema = generate_schema_from_model(
209
+ RecipientCreateToolInput,
210
+ exclude_fields={"id", "created_at", "updated_at"},
211
+ )
212
+
213
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": ["recipient_id"]}
214
+ add_parameter(schema, "recipient_id", "string", "The recipient ID to update", required=True)
215
+
216
+ schema["properties"].update(base_schema["properties"])
217
+ schema["required"].extend(base_schema.get("required", []))
218
+
219
+ # Add definitions if present
220
+ if "$defs" in base_schema:
221
+ schema["$defs"] = base_schema["$defs"]
222
+
223
+ examples: list[dict[str, Any]] = [
224
+ {
225
+ "recipient_id": "rec-123",
226
+ "type": "email",
227
+ "details": {"email_address": "new-alerts@example.com"},
228
+ },
229
+ {
230
+ "recipient_id": "rec-456",
231
+ "type": "slack",
232
+ "details": {"channel": "#new-alerts"},
233
+ },
234
+ ]
235
+
236
+ return create_tool_definition(
237
+ name="honeycomb_update_recipient",
238
+ description=get_description("honeycomb_update_recipient"),
239
+ input_schema=schema,
240
+ input_examples=examples,
241
+ )
242
+
243
+
244
+ def generate_delete_recipient_tool() -> dict[str, Any]:
245
+ """Generate honeycomb_delete_recipient tool definition."""
246
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": ["recipient_id"]}
247
+
248
+ add_parameter(schema, "recipient_id", "string", "The recipient ID to delete", required=True)
249
+
250
+ examples: list[dict[str, Any]] = [
251
+ {"recipient_id": "rec-123"},
252
+ {"recipient_id": "rec-456"},
253
+ ]
254
+
255
+ return create_tool_definition(
256
+ name="honeycomb_delete_recipient",
257
+ description=get_description("honeycomb_delete_recipient"),
258
+ input_schema=schema,
259
+ input_examples=examples,
260
+ )
261
+
262
+
263
+ def generate_get_recipient_triggers_tool() -> dict[str, Any]:
264
+ """Generate honeycomb_get_recipient_triggers tool definition."""
265
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": ["recipient_id"]}
266
+
267
+ add_parameter(
268
+ schema,
269
+ "recipient_id",
270
+ "string",
271
+ "The recipient ID to get associated triggers for",
272
+ required=True,
273
+ )
274
+
275
+ examples: list[dict[str, Any]] = [
276
+ {"recipient_id": "rec-123"},
277
+ {"recipient_id": "rec-456"},
278
+ ]
279
+
280
+ return create_tool_definition(
281
+ name="honeycomb_get_recipient_triggers",
282
+ description=get_description("honeycomb_get_recipient_triggers"),
283
+ input_schema=schema,
284
+ input_examples=examples,
285
+ )
286
+
287
+
288
+ def get_tools() -> list[dict[str, Any]]:
289
+ """Get all recipients tool definitions."""
290
+ return [
291
+ generate_list_recipients_tool(),
292
+ generate_get_recipient_tool(),
293
+ generate_create_recipient_tool(),
294
+ generate_update_recipient_tool(),
295
+ generate_delete_recipient_tool(),
296
+ generate_get_recipient_triggers_tool(),
297
+ ]
@@ -0,0 +1,110 @@
1
+ """Service Map tool definitions for Claude API.
2
+
3
+ This module provides tool generators and descriptions for
4
+ service map resources.
5
+ """
6
+
7
+ from typing import Any
8
+
9
+ from honeycomb.models import ServiceMapDependencyRequestCreate
10
+ from honeycomb.tools.schemas import add_parameter, generate_schema_from_model
11
+
12
+ # ==============================================================================
13
+ # Service Map Descriptions
14
+ # ==============================================================================
15
+
16
+ SERVICE_MAP_DESCRIPTIONS = {
17
+ "honeycomb_query_service_map": (
18
+ "Queries service dependencies and relationships from distributed trace data with automatic polling and pagination. "
19
+ "Use this to discover service-to-service call patterns, identify dependencies, visualize system architecture, or debug cross-service issues. "
20
+ "Requires a time range specification (time_range in seconds, or start_time/end_time as Unix timestamps). "
21
+ "Optional filters parameter allows narrowing to specific services by name. "
22
+ "This tool performs create + poll + paginate operations automatically: creates async query, polls until ready, fetches all pages of results (up to 64K dependencies). "
23
+ "Warning: Large time ranges may return thousands of dependencies across hundreds of API pages - use max_pages parameter to limit."
24
+ ),
25
+ }
26
+
27
+
28
+ def get_description(tool_name: str) -> str:
29
+ """Get the description for a tool in this resource."""
30
+ return SERVICE_MAP_DESCRIPTIONS[tool_name]
31
+
32
+
33
+ def create_tool_definition(
34
+ name: str,
35
+ description: str,
36
+ input_schema: dict[str, Any],
37
+ input_examples: list[dict[str, Any]] | None = None,
38
+ ) -> dict[str, Any]:
39
+ """Create a Claude tool definition."""
40
+ from honeycomb.tools.descriptions import validate_description
41
+ from honeycomb.tools.schemas import add_metadata_fields, validate_schema, validate_tool_name
42
+
43
+ validate_tool_name(name)
44
+ validate_description(description)
45
+ validate_schema(input_schema)
46
+ add_metadata_fields(input_schema)
47
+
48
+ definition: dict[str, Any] = {
49
+ "name": name,
50
+ "description": description,
51
+ "input_schema": input_schema,
52
+ }
53
+
54
+ if input_examples:
55
+ definition["input_examples"] = input_examples
56
+
57
+ return definition
58
+
59
+
60
+ # ==============================================================================
61
+ # Service Map Tool Definitions
62
+ # ==============================================================================
63
+
64
+
65
+ def generate_query_service_map_tool() -> dict[str, Any]:
66
+ """Generate honeycomb_query_service_map tool definition."""
67
+ base_schema = generate_schema_from_model(
68
+ ServiceMapDependencyRequestCreate,
69
+ exclude_fields={"id", "status"},
70
+ )
71
+
72
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": []}
73
+ schema["properties"].update(base_schema["properties"])
74
+ schema["required"].extend(base_schema.get("required", []))
75
+
76
+ # Add max_pages parameter
77
+ add_parameter(
78
+ schema,
79
+ "max_pages",
80
+ "integer",
81
+ "Maximum pages to fetch (default: 640, up to 64K results)",
82
+ required=False,
83
+ )
84
+
85
+ # Add definitions if present (for nested models like ServiceMapNode)
86
+ if "$defs" in base_schema:
87
+ schema["$defs"] = base_schema["$defs"]
88
+
89
+ examples: list[dict[str, Any]] = [
90
+ # Simple: last 2 hours
91
+ {"time_range": 7200},
92
+ # With filters
93
+ {"time_range": 3600, "filters": [{"name": "user-service"}]},
94
+ # Absolute time range
95
+ {"start_time": 1640000000, "end_time": 1640003600},
96
+ ]
97
+
98
+ return create_tool_definition(
99
+ name="honeycomb_query_service_map",
100
+ description=get_description("honeycomb_query_service_map"),
101
+ input_schema=schema,
102
+ input_examples=examples,
103
+ )
104
+
105
+
106
+ def get_tools() -> list[dict[str, Any]]:
107
+ """Get all service map tool definitions."""
108
+ return [
109
+ generate_query_service_map_tool(),
110
+ ]
@@ -0,0 +1,276 @@
1
+ """SLOs tool definitions for Claude API.
2
+
3
+ This module provides tool generators and descriptions for
4
+ slos resources.
5
+ """
6
+
7
+ from typing import Any
8
+
9
+ from honeycomb.models import SLOCreate
10
+ from honeycomb.models.tool_inputs import SLOToolInput
11
+ from honeycomb.tools.schemas import add_parameter, generate_schema_from_model
12
+
13
+ # ==============================================================================
14
+ # SLOs Descriptions
15
+ # ==============================================================================
16
+
17
+ SLO_DESCRIPTIONS = {
18
+ "honeycomb_list_slos": (
19
+ "Lists all Service Level Objectives (SLOs) defined in a Honeycomb dataset. "
20
+ "Use this to discover existing SLOs, review service reliability targets, or before creating related burn alerts. "
21
+ "Requires the dataset slug parameter. "
22
+ "Returns a list of SLO objects with their IDs, names, target percentages, time periods, and SLI (Service Level Indicator) definitions."
23
+ ),
24
+ "honeycomb_get_slo": (
25
+ "Retrieves detailed configuration for a specific SLO by ID. "
26
+ "Use this to inspect an SLO's target percentage, time period, SLI expression, and associated burn alerts. "
27
+ "Requires both the dataset slug and SLO ID. "
28
+ "Returns the complete SLO configuration including the derived column used for the SLI calculation."
29
+ ),
30
+ "honeycomb_create_slo": (
31
+ "Creates a new Service Level Objective (SLO) to track reliability targets, with automatic derived column creation if needed. "
32
+ "IMPORTANT: Use this tool (not honeycomb_create_derived_column) when you want to create an SLO - it will create both the SLI derived column AND the SLO in one operation. "
33
+ "Use this when defining reliability targets for services, such as 99.9% availability or p99 latency targets. "
34
+ "Requires a dataset, SLO name, target (as percentage, per-million, or nines), time period in days, and an SLI definition. "
35
+ "For the SLI, provide an alias and optionally an expression - if expression is provided, a new derived column is created inline; if only alias is provided, it uses an existing derived column. "
36
+ "SLI EXPRESSION SYNTAX: Must return boolean (1/0 coerced). Use $ prefix for columns (case-sensitive). "
37
+ "Example: LT($status_code, 500) or AND(LT($status_code, 500), LT($duration_ms, 1000)). "
38
+ "See honeycomb_create_derived_column for full expression syntax (conditionals, comparisons, regex, etc.). "
39
+ "You can also add burn alerts inline to notify when error budget depletes too quickly. "
40
+ "Supports both single-dataset and multi-dataset SLOs."
41
+ ),
42
+ "honeycomb_update_slo": (
43
+ "Updates an existing SLO's target percentage, time period, or SLI configuration. "
44
+ "Use this to adjust reliability targets as service requirements change or to associate different derived columns. "
45
+ "Requires the dataset slug, SLO ID, and the complete updated SLO configuration. "
46
+ "Note: This replaces the entire SLO configuration. To update burn alerts separately, use burn alert tools instead."
47
+ ),
48
+ "honeycomb_delete_slo": (
49
+ "Permanently deletes an SLO from Honeycomb. "
50
+ "Use this when decommissioning services, consolidating reliability metrics, or removing test SLOs. "
51
+ "Requires both the dataset slug and SLO ID. "
52
+ "Warning: This action cannot be undone. Associated burn alerts will also be deleted."
53
+ ),
54
+ }
55
+
56
+
57
+ def get_description(tool_name: str) -> str:
58
+ """Get the description for a tool in this resource."""
59
+ return SLO_DESCRIPTIONS[tool_name]
60
+
61
+
62
+ def create_tool_definition(
63
+ name: str,
64
+ description: str,
65
+ input_schema: dict[str, Any],
66
+ input_examples: list[dict[str, Any]] | None = None,
67
+ ) -> dict[str, Any]:
68
+ """Create a Claude tool definition."""
69
+ from honeycomb.tools.descriptions import validate_description
70
+ from honeycomb.tools.schemas import add_metadata_fields, validate_schema, validate_tool_name
71
+
72
+ validate_tool_name(name)
73
+ validate_description(description)
74
+ validate_schema(input_schema)
75
+ add_metadata_fields(input_schema)
76
+
77
+ definition: dict[str, Any] = {
78
+ "name": name,
79
+ "description": description,
80
+ "input_schema": input_schema,
81
+ }
82
+
83
+ if input_examples:
84
+ definition["input_examples"] = input_examples
85
+
86
+ return definition
87
+
88
+
89
+ # ==============================================================================
90
+ # SLOs Tool Definitions
91
+ # ==============================================================================
92
+
93
+
94
+ def generate_list_slos_tool() -> dict[str, Any]:
95
+ """Generate honeycomb_list_slos tool definition."""
96
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": ["dataset"]}
97
+
98
+ add_parameter(schema, "dataset", "string", "The dataset slug to list SLOs from", required=True)
99
+
100
+ examples = [
101
+ {"dataset": "api-logs"},
102
+ {"dataset": "production"},
103
+ ]
104
+
105
+ return create_tool_definition(
106
+ name="honeycomb_list_slos",
107
+ description=get_description("honeycomb_list_slos"),
108
+ input_schema=schema,
109
+ input_examples=examples,
110
+ )
111
+
112
+
113
+ def generate_get_slo_tool() -> dict[str, Any]:
114
+ """Generate honeycomb_get_slo tool definition."""
115
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": ["dataset", "slo_id"]}
116
+
117
+ add_parameter(schema, "dataset", "string", "The dataset slug", required=True)
118
+ add_parameter(schema, "slo_id", "string", "The SLO ID to retrieve", required=True)
119
+
120
+ examples = [
121
+ {"dataset": "api-logs", "slo_id": "slo-123"},
122
+ {"dataset": "production", "slo_id": "slo-456"},
123
+ ]
124
+
125
+ return create_tool_definition(
126
+ name="honeycomb_get_slo",
127
+ description=get_description("honeycomb_get_slo"),
128
+ input_schema=schema,
129
+ input_examples=examples,
130
+ )
131
+
132
+
133
+ def generate_create_slo_tool() -> dict[str, Any]:
134
+ """Generate honeycomb_create_slo tool definition."""
135
+ # Use Pydantic model for schema generation with strict validation
136
+ schema = SLOToolInput.model_json_schema()
137
+
138
+ examples = [
139
+ # Minimal with existing derived column (single dataset)
140
+ {
141
+ "datasets": ["api-logs"],
142
+ "name": "API Availability",
143
+ "sli": {"alias": "success_rate"},
144
+ "target_percentage": 99.9,
145
+ "time_period_days": 30,
146
+ },
147
+ # With NEW derived column created inline
148
+ {
149
+ "datasets": ["production"],
150
+ "name": "Request Success Rate",
151
+ "description": "Percentage of requests that succeed (status < 500)",
152
+ "sli": {
153
+ "alias": "request_success",
154
+ "expression": "IF(LT($status_code, 500), 1, 0)",
155
+ "description": "1 if status < 500, else 0",
156
+ },
157
+ "target_percentage": 99.5,
158
+ "time_period_days": 7,
159
+ },
160
+ # Multi-dataset SLO with environment-wide derived column
161
+ {
162
+ "datasets": ["api-logs", "production", "staging"],
163
+ "name": "Cross-Service Availability",
164
+ "description": "Environment-wide availability tracking",
165
+ "sli": {
166
+ "alias": "request_success",
167
+ "expression": "IF(LT($status_code, 400), 1, 0)",
168
+ },
169
+ "target_percentage": 99.9,
170
+ "time_period_days": 30,
171
+ },
172
+ # With burn alerts inline (creates SLO + derived column + burn alerts in one call)
173
+ {
174
+ "datasets": ["api-logs"],
175
+ "name": "Critical API Availability",
176
+ "description": "High-priority SLO with burn rate alerting",
177
+ "sli": {
178
+ "alias": "api_success",
179
+ "expression": "IF(LT($status_code, 500), 1, 0)",
180
+ },
181
+ "target_percentage": 99.99,
182
+ "time_period_days": 30,
183
+ "burn_alerts": [
184
+ {
185
+ "alert_type": "exhaustion_time",
186
+ "exhaustion_minutes": 60,
187
+ "description": "Budget exhausting in 1 hour",
188
+ "recipients": [
189
+ {"type": "email", "target": "oncall@example.com"},
190
+ {"type": "webhook", "target": "https://example.com/webhook"},
191
+ ],
192
+ },
193
+ {
194
+ "alert_type": "budget_rate",
195
+ "budget_rate_window_minutes": 60,
196
+ "budget_rate_decrease_threshold_per_million": 10000, # 1% drop in 1 hour
197
+ "description": "Error budget dropping too fast",
198
+ "recipients": [{"type": "email", "target": "sre-team@example.com"}],
199
+ },
200
+ ],
201
+ },
202
+ ]
203
+
204
+ return create_tool_definition(
205
+ name="honeycomb_create_slo",
206
+ description=get_description("honeycomb_create_slo"),
207
+ input_schema=schema,
208
+ input_examples=examples,
209
+ )
210
+
211
+
212
+ def generate_update_slo_tool() -> dict[str, Any]:
213
+ """Generate honeycomb_update_slo tool definition."""
214
+ base_schema = generate_schema_from_model(
215
+ SLOCreate,
216
+ exclude_fields={"created_at", "updated_at", "id"},
217
+ )
218
+
219
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": ["dataset", "slo_id"]}
220
+ add_parameter(schema, "dataset", "string", "The dataset slug", required=True)
221
+ add_parameter(schema, "slo_id", "string", "The SLO ID to update", required=True)
222
+
223
+ schema["properties"].update(base_schema["properties"])
224
+ schema["required"].extend(base_schema.get("required", []))
225
+
226
+ if "$defs" in base_schema:
227
+ schema["$defs"] = base_schema["$defs"]
228
+
229
+ examples = [
230
+ {
231
+ "dataset": "api-logs",
232
+ "slo_id": "slo-123",
233
+ "name": "API Availability (Updated)",
234
+ "sli": {"alias": "success_rate"},
235
+ "target_per_million": 999500, # Updated from 999000 to 999500 (99.95%)
236
+ "time_period_days": 30,
237
+ },
238
+ ]
239
+
240
+ return create_tool_definition(
241
+ name="honeycomb_update_slo",
242
+ description=get_description("honeycomb_update_slo"),
243
+ input_schema=schema,
244
+ input_examples=examples,
245
+ )
246
+
247
+
248
+ def generate_delete_slo_tool() -> dict[str, Any]:
249
+ """Generate honeycomb_delete_slo tool definition."""
250
+ schema: dict[str, Any] = {"type": "object", "properties": {}, "required": ["dataset", "slo_id"]}
251
+
252
+ add_parameter(schema, "dataset", "string", "The dataset slug", required=True)
253
+ add_parameter(schema, "slo_id", "string", "The SLO ID to delete", required=True)
254
+
255
+ examples = [
256
+ {"dataset": "api-logs", "slo_id": "slo-123"},
257
+ {"dataset": "production", "slo_id": "slo-456"},
258
+ ]
259
+
260
+ return create_tool_definition(
261
+ name="honeycomb_delete_slo",
262
+ description=get_description("honeycomb_delete_slo"),
263
+ input_schema=schema,
264
+ input_examples=examples,
265
+ )
266
+
267
+
268
+ def get_tools() -> list[dict[str, Any]]:
269
+ """Get all slos tool definitions."""
270
+ return [
271
+ generate_list_slos_tool(),
272
+ generate_get_slo_tool(),
273
+ generate_create_slo_tool(),
274
+ generate_update_slo_tool(),
275
+ generate_delete_slo_tool(),
276
+ ]