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,51 @@
1
+ """Pydantic models for Honeycomb Datasets."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from datetime import datetime
6
+ from typing import Any
7
+
8
+ from pydantic import BaseModel, Field
9
+
10
+
11
+ class DatasetCreate(BaseModel):
12
+ """Model for creating a new dataset."""
13
+
14
+ name: str = Field(description="Human-readable name for the dataset")
15
+ description: str | None = Field(default=None, description="Longer description")
16
+ expand_json_depth: int = Field(
17
+ default=0,
18
+ ge=0,
19
+ le=10,
20
+ description="Depth to expand JSON fields (0-10)",
21
+ )
22
+
23
+ def model_dump_for_api(self) -> dict[str, Any]:
24
+ """Serialize for API request."""
25
+ data: dict[str, Any] = {
26
+ "name": self.name,
27
+ }
28
+
29
+ if self.description:
30
+ data["description"] = self.description
31
+
32
+ if self.expand_json_depth > 0:
33
+ data["expand_json_depth"] = self.expand_json_depth
34
+
35
+ return data
36
+
37
+
38
+ class Dataset(BaseModel):
39
+ """A Honeycomb dataset (response model)."""
40
+
41
+ name: str = Field(description="Dataset name")
42
+ slug: str = Field(description="URL-safe identifier")
43
+ description: str | None = Field(default=None, description="Longer description")
44
+ expand_json_depth: int = Field(default=0, description="JSON expansion depth")
45
+ created_at: datetime | None = Field(default=None, description="Creation timestamp")
46
+ last_written_at: datetime | None = Field(
47
+ default=None, description="Last event written timestamp"
48
+ )
49
+ regular_columns_count: int | None = Field(default=None, description="Number of regular columns")
50
+
51
+ model_config = {"extra": "allow"}
@@ -0,0 +1,107 @@
1
+ """Pydantic models and builder for Honeycomb Derived Columns (Calculated Fields)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from datetime import datetime
6
+ from typing import Any
7
+
8
+ from pydantic import BaseModel, Field
9
+ from typing_extensions import Self
10
+
11
+
12
+ class DerivedColumnCreate(BaseModel):
13
+ """Model for creating a derived column (calculated field).
14
+
15
+ Derived columns (also called Calculated Fields) allow you to run queries
16
+ based on the value of an expression that is calculated from the fields in an event.
17
+ """
18
+
19
+ alias: str = Field(description="Name of the derived column")
20
+ expression: str = Field(
21
+ description="Expression to calculate the value. See https://docs.honeycomb.io/reference/derived-column-formula/"
22
+ )
23
+ description: str | None = Field(default=None, description="Human-readable description")
24
+
25
+ def model_dump_for_api(self) -> dict[str, Any]:
26
+ """Serialize for API request."""
27
+ data = {"alias": self.alias, "expression": self.expression}
28
+ if self.description:
29
+ data["description"] = self.description
30
+ return data
31
+
32
+
33
+ class DerivedColumn(BaseModel):
34
+ """A derived column (calculated field) response model."""
35
+
36
+ id: str = Field(description="Unique identifier")
37
+ alias: str = Field(description="Name of the derived column")
38
+ expression: str = Field(description="Expression to calculate the value")
39
+ description: str | None = Field(default=None, description="Human-readable description")
40
+ created_at: datetime | None = Field(default=None, description="Creation timestamp")
41
+ updated_at: datetime | None = Field(default=None, description="Last update timestamp")
42
+
43
+ model_config = {"extra": "allow"}
44
+
45
+
46
+ class DerivedColumnBuilder:
47
+ """Builder for derived columns.
48
+
49
+ Example:
50
+ >>> dc = (
51
+ ... DerivedColumnBuilder("request_success")
52
+ ... .expression("IF(LT($status_code, 400), 1, 0)")
53
+ ... .description("1 if request succeeded, 0 otherwise")
54
+ ... .build()
55
+ ... )
56
+ >>> await client.derived_columns.create_async(dataset="api-logs", derived_column=dc)
57
+ """
58
+
59
+ def __init__(self, alias: str):
60
+ """Initialize builder with column alias.
61
+
62
+ Args:
63
+ alias: Name of the derived column.
64
+ """
65
+ self._alias = alias
66
+ self._expression: str | None = None
67
+ self._description: str | None = None
68
+
69
+ def expression(self, expr: str) -> Self:
70
+ """Set the expression for the derived column.
71
+
72
+ Args:
73
+ expr: Expression to calculate the value.
74
+ See https://docs.honeycomb.io/reference/derived-column-formula/
75
+
76
+ Returns:
77
+ Self for method chaining.
78
+ """
79
+ self._expression = expr
80
+ return self
81
+
82
+ def description(self, desc: str) -> Self:
83
+ """Set the description.
84
+
85
+ Args:
86
+ desc: Human-readable description.
87
+
88
+ Returns:
89
+ Self for method chaining.
90
+ """
91
+ self._description = desc
92
+ return self
93
+
94
+ def build(self) -> DerivedColumnCreate:
95
+ """Build DerivedColumnCreate object.
96
+
97
+ Returns:
98
+ DerivedColumnCreate object ready for API submission.
99
+
100
+ Raises:
101
+ ValueError: If expression is not set.
102
+ """
103
+ if not self._expression:
104
+ raise ValueError("Expression is required")
105
+ return DerivedColumnCreate(
106
+ alias=self._alias, expression=self._expression, description=self._description
107
+ )
@@ -0,0 +1,106 @@
1
+ """Pydantic models for Honeycomb Environments (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 EnvironmentColor(str, Enum):
13
+ """Environment display colors.
14
+
15
+ Note: 'classic' is a special color used only for auto-created Classic environments
16
+ and cannot be set on any other environment. Classic environments cannot be set
17
+ to any other color.
18
+ """
19
+
20
+ BLUE = "blue"
21
+ GREEN = "green"
22
+ GOLD = "gold"
23
+ RED = "red"
24
+ PURPLE = "purple"
25
+ LIGHT_BLUE = "lightBlue"
26
+ LIGHT_GREEN = "lightGreen"
27
+ LIGHT_GOLD = "lightGold"
28
+ LIGHT_RED = "lightRed"
29
+ LIGHT_PURPLE = "lightPurple"
30
+ # Special read-only color for Classic environments
31
+ CLASSIC = "classic"
32
+
33
+
34
+ class EnvironmentCreate(BaseModel):
35
+ """Model for creating a new environment."""
36
+
37
+ name: str = Field(description="Name for the environment", max_length=255)
38
+ description: str | None = Field(
39
+ default=None, description="Description of the environment", max_length=255
40
+ )
41
+ color: EnvironmentColor | None = Field(default=None, description="Display color")
42
+
43
+ def to_jsonapi(self) -> dict[str, Any]:
44
+ """Convert to JSON:API format for API request."""
45
+ attributes: dict[str, Any] = {"name": self.name}
46
+ if self.description:
47
+ attributes["description"] = self.description
48
+ if self.color:
49
+ attributes["color"] = self.color.value
50
+
51
+ return {"data": {"type": "environments", "attributes": attributes}}
52
+
53
+
54
+ class EnvironmentUpdate(BaseModel):
55
+ """Model for updating an environment."""
56
+
57
+ description: str | None = Field(default=None, description="Description", max_length=255)
58
+ color: EnvironmentColor | None = Field(default=None, description="Display color")
59
+ delete_protected: bool | None = Field(
60
+ default=None, description="If true, environment cannot be deleted"
61
+ )
62
+
63
+ def to_jsonapi(self, env_id: str) -> dict[str, Any]:
64
+ """Convert to JSON:API format for API request."""
65
+ attributes: dict[str, Any] = {}
66
+ if self.description is not None:
67
+ attributes["description"] = self.description
68
+ if self.color:
69
+ attributes["color"] = self.color.value
70
+ if self.delete_protected is not None:
71
+ attributes["settings"] = {"delete_protected": self.delete_protected}
72
+
73
+ return {"data": {"id": env_id, "type": "environments", "attributes": attributes}}
74
+
75
+
76
+ class Environment(BaseModel):
77
+ """A Honeycomb environment (response model)."""
78
+
79
+ id: str = Field(description="Unique identifier")
80
+ name: str = Field(description="Name of the environment")
81
+ slug: str = Field(description="URL-friendly slug")
82
+ description: str | None = Field(default=None, description="Description")
83
+ color: EnvironmentColor | None = Field(default=None, description="Display color")
84
+ delete_protected: bool = Field(default=False, description="Whether delete-protected")
85
+ created_at: datetime | None = Field(default=None, description="Creation timestamp")
86
+ updated_at: datetime | None = Field(default=None, description="Last update timestamp")
87
+
88
+ model_config = {"extra": "allow"}
89
+
90
+ @classmethod
91
+ def from_jsonapi(cls, data: dict[str, Any]) -> Environment:
92
+ """Parse from JSON:API format."""
93
+ obj = data.get("data", data) # Handle both wrapped and unwrapped
94
+ attributes = obj.get("attributes", {})
95
+ settings = attributes.get("settings", {})
96
+
97
+ return cls(
98
+ id=obj.get("id", ""),
99
+ name=attributes.get("name", ""),
100
+ slug=attributes.get("slug", ""),
101
+ description=attributes.get("description"),
102
+ color=attributes.get("color"),
103
+ delete_protected=settings.get("delete_protected", False),
104
+ created_at=attributes.get("created_at"),
105
+ updated_at=attributes.get("updated_at"),
106
+ )
@@ -0,0 +1,35 @@
1
+ """Pydantic models for Honeycomb Events (data ingestion)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from pydantic import BaseModel, Field
8
+
9
+
10
+ class BatchEvent(BaseModel):
11
+ """Model for a batch event."""
12
+
13
+ data: dict[str, Any] = Field(description="Event payload (key-value pairs)")
14
+ time: str | None = Field(
15
+ default=None, description="Event timestamp (ISO8601 format). Defaults to server time."
16
+ )
17
+ samplerate: int | None = Field(default=None, description="Sample rate. Defaults to 1.")
18
+
19
+ def model_dump_for_api(self) -> dict:
20
+ """Serialize for API request."""
21
+ result: dict[str, Any] = {"data": self.data}
22
+ if self.time:
23
+ result["time"] = self.time
24
+ if self.samplerate:
25
+ result["samplerate"] = self.samplerate
26
+ return result
27
+
28
+
29
+ class BatchEventResult(BaseModel):
30
+ """Result for a single event in a batch."""
31
+
32
+ status: int = Field(description="HTTP status code for this event")
33
+ error: str | None = Field(default=None, description="Error message if status != 202")
34
+
35
+ model_config = {"extra": "allow"}
@@ -0,0 +1,136 @@
1
+ """Marker Builder - Fluent interface for creating markers."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import time
6
+
7
+ from honeycomb.models.markers import MarkerCreate, MarkerSettingCreate
8
+
9
+
10
+ class MarkerBuilder:
11
+ """Fluent builder for markers.
12
+
13
+ Example - Point marker:
14
+ marker = (
15
+ MarkerBuilder("Deployed v1.2.3")
16
+ .type("deploy")
17
+ .url("https://github.com/org/repo/releases/v1.2.3")
18
+ .build()
19
+ )
20
+
21
+ Example - Duration marker:
22
+ marker = (
23
+ MarkerBuilder("Maintenance window")
24
+ .type("maintenance")
25
+ .start_time(1703980800)
26
+ .end_time(1703984400)
27
+ .build()
28
+ )
29
+
30
+ Example - Duration from now:
31
+ marker = (
32
+ MarkerBuilder("Load test in progress")
33
+ .type("test")
34
+ .duration_minutes(30)
35
+ .build()
36
+ )
37
+ """
38
+
39
+ def __init__(self, message: str):
40
+ self._message = message
41
+ self._type: str | None = None
42
+ self._start_time: int | None = None
43
+ self._end_time: int | None = None
44
+ self._url: str | None = None
45
+
46
+ def type(self, marker_type: str) -> MarkerBuilder:
47
+ """Set marker type (groups similar markers).
48
+
49
+ Args:
50
+ marker_type: Type identifier (e.g., "deploy", "maintenance", "incident")
51
+ """
52
+ self._type = marker_type
53
+ return self
54
+
55
+ def url(self, url: str) -> MarkerBuilder:
56
+ """Set target URL for the marker.
57
+
58
+ Args:
59
+ url: URL to link to (e.g., deployment, incident, PR)
60
+ """
61
+ self._url = url
62
+ return self
63
+
64
+ def start_time(self, timestamp: int) -> MarkerBuilder:
65
+ """Set start time as Unix timestamp.
66
+
67
+ Args:
68
+ timestamp: Unix timestamp in seconds
69
+ """
70
+ self._start_time = timestamp
71
+ return self
72
+
73
+ def end_time(self, timestamp: int) -> MarkerBuilder:
74
+ """Set end time as Unix timestamp (for duration markers).
75
+
76
+ Args:
77
+ timestamp: Unix timestamp in seconds
78
+ """
79
+ self._end_time = timestamp
80
+ return self
81
+
82
+ def duration_minutes(self, minutes: int) -> MarkerBuilder:
83
+ """Set duration from now.
84
+
85
+ Args:
86
+ minutes: Duration in minutes from current time
87
+ """
88
+ now = int(time.time())
89
+ self._start_time = now
90
+ self._end_time = now + (minutes * 60)
91
+ return self
92
+
93
+ def duration_hours(self, hours: int) -> MarkerBuilder:
94
+ """Set duration from now in hours.
95
+
96
+ Args:
97
+ hours: Duration in hours from current time
98
+ """
99
+ return self.duration_minutes(hours * 60)
100
+
101
+ @staticmethod
102
+ def setting(marker_type: str, color: str) -> MarkerSettingCreate:
103
+ """Create a marker setting (color configuration).
104
+
105
+ Args:
106
+ marker_type: Type of marker to configure
107
+ color: Hex color code (e.g., '#F96E11')
108
+
109
+ Returns:
110
+ MarkerSettingCreate object
111
+
112
+ Example:
113
+ >>> setting = MarkerBuilder.setting("deploy", "#00FF00")
114
+ >>> await client.markers.create_setting_async(setting)
115
+ """
116
+ return MarkerSettingCreate(type=marker_type, color=color)
117
+
118
+ def build(self) -> MarkerCreate:
119
+ """Build MarkerCreate with validation.
120
+
121
+ Returns:
122
+ MarkerCreate object ready to be sent to the API
123
+
124
+ Raises:
125
+ ValueError: If marker type is missing
126
+ """
127
+ if not self._type:
128
+ raise ValueError("Marker type is required. Use type().")
129
+
130
+ return MarkerCreate(
131
+ message=self._message,
132
+ type=self._type,
133
+ start_time=self._start_time,
134
+ end_time=self._end_time,
135
+ url=self._url,
136
+ )
@@ -0,0 +1,73 @@
1
+ """Pydantic models for Honeycomb Markers."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from datetime import datetime
6
+ from typing import Any
7
+
8
+ from pydantic import BaseModel, Field
9
+
10
+
11
+ class MarkerCreate(BaseModel):
12
+ """Model for creating a new marker."""
13
+
14
+ message: str = Field(description="Message to describe this marker")
15
+ type: str = Field(description="Groups similar markers (e.g., 'deploy')")
16
+ start_time: int | None = Field(
17
+ default=None,
18
+ description="Unix timestamp when marker should be placed (defaults to now)",
19
+ )
20
+ end_time: int | None = Field(
21
+ default=None, description="Unix timestamp for end of marker (for time ranges)"
22
+ )
23
+ url: str | None = Field(default=None, description="Target URL for the marker")
24
+
25
+ def model_dump_for_api(self) -> dict[str, Any]:
26
+ """Serialize for API request."""
27
+ data: dict[str, Any] = {"message": self.message, "type": self.type}
28
+ if self.start_time is not None:
29
+ data["start_time"] = self.start_time
30
+ if self.end_time is not None:
31
+ data["end_time"] = self.end_time
32
+ if self.url:
33
+ data["url"] = self.url
34
+ return data
35
+
36
+
37
+ class Marker(BaseModel):
38
+ """A Honeycomb marker (response model)."""
39
+
40
+ id: str = Field(description="Unique identifier (6 character hex)")
41
+ message: str = Field(description="Message describing this marker")
42
+ type: str = Field(description="Groups similar markers")
43
+ start_time: int = Field(description="Unix timestamp when marker is placed")
44
+ end_time: int | None = Field(default=None, description="Unix timestamp for end of marker")
45
+ url: str | None = Field(default=None, description="Target URL for the marker")
46
+ color: str | None = Field(default=None, description="Hex color code (from marker settings)")
47
+ created_at: datetime | None = Field(default=None, description="Creation timestamp")
48
+ updated_at: datetime | None = Field(default=None, description="Last update timestamp")
49
+
50
+ model_config = {"extra": "allow"}
51
+
52
+
53
+ class MarkerSettingCreate(BaseModel):
54
+ """Model for creating a new marker setting."""
55
+
56
+ type: str = Field(description="Marker type to configure")
57
+ color: str = Field(description="Hex color code (e.g., '#F96E11')")
58
+
59
+ def model_dump_for_api(self) -> dict[str, str]:
60
+ """Serialize for API request."""
61
+ return {"type": self.type, "color": self.color}
62
+
63
+
64
+ class MarkerSetting(BaseModel):
65
+ """A Honeycomb marker setting (response model)."""
66
+
67
+ id: str = Field(description="Unique identifier")
68
+ type: str = Field(description="Marker type")
69
+ color: str = Field(description="Hex color code")
70
+ created_at: datetime | None = Field(default=None, description="Creation timestamp")
71
+ updated_at: datetime | None = Field(default=None, description="Last update timestamp")
72
+
73
+ model_config = {"extra": "allow"}