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,236 @@
1
+ """Exception hierarchy for Honeycomb API errors."""
2
+
3
+ from __future__ import annotations
4
+
5
+
6
+ class HoneycombAPIError(Exception):
7
+ """Base exception for all Honeycomb API errors.
8
+
9
+ Attributes:
10
+ message: Human-readable error message.
11
+ status_code: HTTP status code from the response.
12
+ request_id: Honeycomb request ID for support debugging (if available).
13
+ response_body: Raw response body (if available).
14
+ """
15
+
16
+ def __init__(
17
+ self,
18
+ message: str,
19
+ status_code: int,
20
+ request_id: str | None = None,
21
+ response_body: dict | None = None,
22
+ ) -> None:
23
+ super().__init__(message)
24
+ self.message = message
25
+ self.status_code = status_code
26
+ self.request_id = request_id
27
+ self.response_body = response_body
28
+
29
+ def __str__(self) -> str:
30
+ parts = [f"[{self.status_code}] {self.message}"]
31
+ if self.request_id:
32
+ parts.append(f"(request_id: {self.request_id})")
33
+ return " ".join(parts)
34
+
35
+ def __repr__(self) -> str:
36
+ return (
37
+ f"{self.__class__.__name__}("
38
+ f"message={self.message!r}, "
39
+ f"status_code={self.status_code}, "
40
+ f"request_id={self.request_id!r})"
41
+ )
42
+
43
+
44
+ class HoneycombAuthError(HoneycombAPIError):
45
+ """401 Unauthorized - Invalid or missing API key.
46
+
47
+ Raised when the API key is missing, invalid, or expired.
48
+ """
49
+
50
+ pass
51
+
52
+
53
+ class HoneycombForbiddenError(HoneycombAPIError):
54
+ """403 Forbidden - Insufficient permissions.
55
+
56
+ Raised when the API key doesn't have permission for the requested operation.
57
+ """
58
+
59
+ pass
60
+
61
+
62
+ class HoneycombNotFoundError(HoneycombAPIError):
63
+ """404 Not Found - Resource doesn't exist.
64
+
65
+ Raised when the requested resource (dataset, trigger, SLO, etc.) is not found.
66
+ """
67
+
68
+ pass
69
+
70
+
71
+ class HoneycombValidationError(HoneycombAPIError):
72
+ """422 Validation Error - Invalid request data.
73
+
74
+ Raised when the request body fails validation.
75
+
76
+ Attributes:
77
+ errors: List of field-level validation errors (if available).
78
+ """
79
+
80
+ def __init__(
81
+ self,
82
+ message: str,
83
+ status_code: int = 422,
84
+ request_id: str | None = None,
85
+ response_body: dict | None = None,
86
+ errors: list[dict] | None = None,
87
+ ) -> None:
88
+ super().__init__(message, status_code, request_id, response_body)
89
+ self.errors = errors or []
90
+
91
+ def __str__(self) -> str:
92
+ base = super().__str__()
93
+ if self.errors:
94
+ error_details = "; ".join(
95
+ f"{e.get('field', 'unknown')}: {e.get('message', 'invalid')}" for e in self.errors
96
+ )
97
+ return f"{base} - {error_details}"
98
+ return base
99
+
100
+
101
+ class HoneycombRateLimitError(HoneycombAPIError):
102
+ """429 Rate Limited - Too many requests.
103
+
104
+ Raised when the API rate limit has been exceeded.
105
+
106
+ Attributes:
107
+ retry_after: Seconds to wait before retrying (if provided by API).
108
+ """
109
+
110
+ def __init__(
111
+ self,
112
+ message: str,
113
+ status_code: int = 429,
114
+ request_id: str | None = None,
115
+ response_body: dict | None = None,
116
+ retry_after: int | None = None,
117
+ ) -> None:
118
+ super().__init__(message, status_code, request_id, response_body)
119
+ self.retry_after = retry_after
120
+
121
+ def __str__(self) -> str:
122
+ base = super().__str__()
123
+ if self.retry_after:
124
+ return f"{base} (retry after {self.retry_after}s)"
125
+ return base
126
+
127
+
128
+ class HoneycombServerError(HoneycombAPIError):
129
+ """5xx Server Error - Honeycomb service issue.
130
+
131
+ Raised when Honeycomb's servers encounter an error.
132
+ These errors are typically transient and can be retried.
133
+ """
134
+
135
+ pass
136
+
137
+
138
+ class HoneycombTimeoutError(HoneycombAPIError):
139
+ """Request timed out.
140
+
141
+ Raised when a request to the Honeycomb API times out.
142
+ """
143
+
144
+ def __init__(
145
+ self,
146
+ message: str = "Request timed out",
147
+ timeout: float | None = None,
148
+ ) -> None:
149
+ super().__init__(message, status_code=0)
150
+ self.timeout = timeout
151
+
152
+ def __str__(self) -> str:
153
+ if self.timeout:
154
+ return f"{self.message} (timeout: {self.timeout}s)"
155
+ return self.message
156
+
157
+
158
+ class HoneycombConnectionError(HoneycombAPIError):
159
+ """Connection error.
160
+
161
+ Raised when unable to connect to the Honeycomb API.
162
+ """
163
+
164
+ def __init__(
165
+ self,
166
+ message: str = "Failed to connect to Honeycomb API",
167
+ original_error: Exception | None = None,
168
+ ) -> None:
169
+ super().__init__(message, status_code=0)
170
+ self.original_error = original_error
171
+
172
+
173
+ def raise_for_status(
174
+ status_code: int,
175
+ response_body: dict | None = None,
176
+ request_id: str | None = None,
177
+ ) -> None:
178
+ """Raise an appropriate exception based on HTTP status code.
179
+
180
+ Args:
181
+ status_code: HTTP status code from the response.
182
+ response_body: Parsed response body (if available).
183
+ request_id: Request ID from response headers (if available).
184
+
185
+ Raises:
186
+ HoneycombAuthError: For 401 responses.
187
+ HoneycombForbiddenError: For 403 responses.
188
+ HoneycombNotFoundError: For 404 responses.
189
+ HoneycombValidationError: For 422 responses.
190
+ HoneycombRateLimitError: For 429 responses.
191
+ HoneycombServerError: For 5xx responses.
192
+ HoneycombAPIError: For other error responses.
193
+ """
194
+ if 200 <= status_code < 300:
195
+ return
196
+
197
+ # Extract error message from response body
198
+ message = "Unknown error"
199
+ errors: list[dict] | None = None
200
+ retry_after: int | None = None
201
+
202
+ if response_body:
203
+ # Try different error formats
204
+ if "error" in response_body:
205
+ message = response_body["error"]
206
+ elif "message" in response_body:
207
+ message = response_body["message"]
208
+ elif "title" in response_body:
209
+ message = response_body["title"]
210
+ if "detail" in response_body:
211
+ message = f"{message}: {response_body['detail']}"
212
+ elif "errors" in response_body and isinstance(response_body["errors"], list):
213
+ # JSON:API format
214
+ first_error = response_body["errors"][0] if response_body["errors"] else {}
215
+ message = first_error.get("detail") or first_error.get("title") or message
216
+ errors = response_body["errors"]
217
+
218
+ # Extract validation errors
219
+ if "type_detail" in response_body:
220
+ errors = response_body.get("type_detail", [])
221
+
222
+ # Map status codes to exceptions
223
+ if status_code == 401:
224
+ raise HoneycombAuthError(message, status_code, request_id, response_body)
225
+ elif status_code == 403:
226
+ raise HoneycombForbiddenError(message, status_code, request_id, response_body)
227
+ elif status_code == 404:
228
+ raise HoneycombNotFoundError(message, status_code, request_id, response_body)
229
+ elif status_code == 422:
230
+ raise HoneycombValidationError(message, status_code, request_id, response_body, errors)
231
+ elif status_code == 429:
232
+ raise HoneycombRateLimitError(message, status_code, request_id, response_body, retry_after)
233
+ elif 500 <= status_code < 600:
234
+ raise HoneycombServerError(message, status_code, request_id, response_body)
235
+ else:
236
+ raise HoneycombAPIError(message, status_code, request_id, response_body)
@@ -0,0 +1,157 @@
1
+ """Pydantic models for Honeycomb API resources."""
2
+
3
+ from .api_keys import ApiKey, ApiKeyCreate, ApiKeyType
4
+ from .board_builder import (
5
+ BoardBuilder,
6
+ BoardBundle,
7
+ ExistingQueryPanel,
8
+ ExistingSLOPanel,
9
+ QueryBuilderPanel,
10
+ SLOBuilderPanel,
11
+ TextPanel,
12
+ )
13
+ from .boards import Board, BoardCreate
14
+ from .burn_alerts import BurnAlert, BurnAlertCreate, BurnAlertRecipient, BurnAlertType
15
+ from .columns import Column, ColumnCreate, ColumnType
16
+ from .datasets import Dataset, DatasetCreate
17
+ from .derived_columns import DerivedColumn, DerivedColumnBuilder, DerivedColumnCreate
18
+ from .environments import Environment, EnvironmentColor, EnvironmentCreate, EnvironmentUpdate
19
+ from .events import BatchEvent, BatchEventResult
20
+ from .marker_builder import MarkerBuilder
21
+ from .markers import Marker, MarkerCreate, MarkerSetting, MarkerSettingCreate
22
+ from .queries import Query, QueryResult, QueryResultData, QuerySpec
23
+ from .query_annotations import QueryAnnotation, QueryAnnotationCreate, QueryAnnotationSource
24
+ from .query_builder import (
25
+ CalcOp,
26
+ Calculation,
27
+ Filter,
28
+ FilterCombination,
29
+ FilterOp,
30
+ Having,
31
+ Order,
32
+ OrderDirection,
33
+ QueryBuilder,
34
+ )
35
+ from .recipient_builder import RecipientBuilder, RecipientMixin
36
+ from .recipients import Recipient, RecipientCreate, RecipientType
37
+ from .service_map_dependencies import (
38
+ ServiceMapDependency,
39
+ ServiceMapDependencyRequest,
40
+ ServiceMapDependencyRequestCreate,
41
+ ServiceMapDependencyRequestStatus,
42
+ ServiceMapDependencyResult,
43
+ ServiceMapNode,
44
+ ServiceMapNodeType,
45
+ )
46
+ from .slo_builder import BurnAlertBuilder, BurnAlertDefinition, SLIDefinition, SLOBuilder, SLOBundle
47
+ from .slos import SLI, SLO, SLOCreate
48
+ from .tags_mixin import TagsMixin
49
+ from .trigger_builder import TriggerBuilder, TriggerBundle
50
+ from .triggers import (
51
+ Trigger,
52
+ TriggerAlertType,
53
+ TriggerCreate,
54
+ TriggerQuery,
55
+ TriggerThreshold,
56
+ TriggerThresholdOp,
57
+ )
58
+
59
+ __all__ = [
60
+ # Query Builder (enums and typed models)
61
+ "CalcOp",
62
+ "FilterOp",
63
+ "OrderDirection",
64
+ "FilterCombination",
65
+ "Calculation",
66
+ "Filter",
67
+ "Order",
68
+ "Having",
69
+ "QueryBuilder",
70
+ # Triggers
71
+ "Trigger",
72
+ "TriggerCreate",
73
+ "TriggerThreshold",
74
+ "TriggerThresholdOp",
75
+ "TriggerAlertType",
76
+ "TriggerQuery",
77
+ "TriggerBuilder",
78
+ "TriggerBundle",
79
+ # SLOs
80
+ "SLO",
81
+ "SLOCreate",
82
+ "SLI",
83
+ "SLOBuilder",
84
+ "SLOBundle",
85
+ "SLIDefinition",
86
+ "BurnAlertBuilder",
87
+ "BurnAlertDefinition",
88
+ # Datasets
89
+ "Dataset",
90
+ "DatasetCreate",
91
+ # Boards
92
+ "Board",
93
+ "BoardBuilder",
94
+ "BoardBundle",
95
+ "BoardCreate",
96
+ "ExistingQueryPanel",
97
+ "ExistingSLOPanel",
98
+ "QueryBuilderPanel",
99
+ "SLOBuilderPanel",
100
+ "TextPanel",
101
+ # Queries
102
+ "Query",
103
+ "QuerySpec",
104
+ "QueryResult",
105
+ "QueryResultData",
106
+ # Query Annotations
107
+ "QueryAnnotation",
108
+ "QueryAnnotationCreate",
109
+ "QueryAnnotationSource",
110
+ # Columns
111
+ "Column",
112
+ "ColumnCreate",
113
+ "ColumnType",
114
+ # Derived Columns (Calculated Fields)
115
+ "DerivedColumn",
116
+ "DerivedColumnCreate",
117
+ "DerivedColumnBuilder",
118
+ # Markers
119
+ "Marker",
120
+ "MarkerBuilder",
121
+ "MarkerCreate",
122
+ "MarkerSetting",
123
+ "MarkerSettingCreate",
124
+ # Recipients
125
+ "Recipient",
126
+ "RecipientCreate",
127
+ "RecipientType",
128
+ "RecipientBuilder",
129
+ "RecipientMixin",
130
+ # Tags
131
+ "TagsMixin",
132
+ # Burn Alerts
133
+ "BurnAlert",
134
+ "BurnAlertCreate",
135
+ "BurnAlertRecipient",
136
+ "BurnAlertType",
137
+ # Events
138
+ "BatchEvent",
139
+ "BatchEventResult",
140
+ # API Keys (v2)
141
+ "ApiKey",
142
+ "ApiKeyCreate",
143
+ "ApiKeyType",
144
+ # Environments (v2)
145
+ "Environment",
146
+ "EnvironmentCreate",
147
+ "EnvironmentUpdate",
148
+ "EnvironmentColor",
149
+ # Service Map Dependencies
150
+ "ServiceMapDependency",
151
+ "ServiceMapDependencyRequest",
152
+ "ServiceMapDependencyRequestCreate",
153
+ "ServiceMapDependencyRequestStatus",
154
+ "ServiceMapDependencyResult",
155
+ "ServiceMapNode",
156
+ "ServiceMapNodeType",
157
+ ]
@@ -0,0 +1,81 @@
1
+ """Pydantic models for Honeycomb API Keys (v2 team-scoped)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from datetime import datetime
6
+ from enum import Enum
7
+ from typing import Any
8
+
9
+ from pydantic import BaseModel, Field
10
+
11
+
12
+ class ApiKeyType(str, Enum):
13
+ """API key types."""
14
+
15
+ INGEST = "ingest"
16
+ CONFIGURATION = "configuration"
17
+
18
+
19
+ class ApiKeyCreate(BaseModel):
20
+ """Model for creating a new API key."""
21
+
22
+ name: str = Field(description="Name for the API key")
23
+ key_type: ApiKeyType = Field(description="Type of API key")
24
+ environment_id: str = Field(description="Environment ID this key belongs to")
25
+ disabled: bool = Field(default=False, description="Whether key is disabled")
26
+
27
+ def to_jsonapi(self) -> dict[str, Any]:
28
+ """Convert to JSON:API format for API request."""
29
+ return {
30
+ "data": {
31
+ "type": "api-keys",
32
+ "attributes": {
33
+ "name": self.name,
34
+ "key_type": self.key_type.value,
35
+ "disabled": self.disabled,
36
+ },
37
+ "relationships": {
38
+ "environment": {"data": {"type": "environments", "id": self.environment_id}}
39
+ },
40
+ }
41
+ }
42
+
43
+
44
+ class ApiKey(BaseModel):
45
+ """A Honeycomb API key (response model)."""
46
+
47
+ id: str = Field(description="Unique identifier (includes key prefix)")
48
+ name: str = Field(description="Name of the API key")
49
+ key_type: ApiKeyType = Field(description="Type of API key")
50
+ environment_id: str | None = Field(default=None, description="Environment ID")
51
+ disabled: bool = Field(default=False, description="Whether key is disabled")
52
+ secret: str | None = Field(
53
+ default=None, description="Key secret (only available during creation)"
54
+ )
55
+ created_at: datetime | None = Field(default=None, description="Creation timestamp")
56
+ updated_at: datetime | None = Field(default=None, description="Last update timestamp")
57
+
58
+ model_config = {"extra": "allow"}
59
+
60
+ @classmethod
61
+ def from_jsonapi(cls, data: dict[str, Any]) -> ApiKey:
62
+ """Parse from JSON:API format."""
63
+ obj = data.get("data", data) # Handle both wrapped and unwrapped
64
+ attributes = obj.get("attributes", {})
65
+ relationships = obj.get("relationships", {})
66
+
67
+ env_id = None
68
+ if "environment" in relationships:
69
+ env_data = relationships["environment"].get("data", {})
70
+ env_id = env_data.get("id")
71
+
72
+ return cls(
73
+ id=obj.get("id", ""),
74
+ name=attributes.get("name", ""),
75
+ key_type=attributes.get("key_type", "ingest"),
76
+ environment_id=env_id,
77
+ disabled=attributes.get("disabled", False),
78
+ secret=attributes.get("secret"),
79
+ created_at=attributes.get("created_at"),
80
+ updated_at=attributes.get("updated_at"),
81
+ )