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.
- honeycomb/__init__.py +217 -0
- honeycomb/_generated/__init__.py +8 -0
- honeycomb/_generated/api/__init__.py +1 -0
- honeycomb/_generated/api/auth/__init__.py +0 -0
- honeycomb/_generated/api/auth/get_auth.py +172 -0
- honeycomb/_generated/api/auth/get_v2_auth.py +168 -0
- honeycomb/_generated/api/boards/__init__.py +0 -0
- honeycomb/_generated/api/boards/create_board.py +217 -0
- honeycomb/_generated/api/boards/create_board_view.py +237 -0
- honeycomb/_generated/api/boards/delete_board.py +191 -0
- honeycomb/_generated/api/boards/delete_board_view.py +210 -0
- honeycomb/_generated/api/boards/get_board.py +208 -0
- honeycomb/_generated/api/boards/get_board_view.py +214 -0
- honeycomb/_generated/api/boards/list_board_views.py +206 -0
- honeycomb/_generated/api/boards/list_boards.py +177 -0
- honeycomb/_generated/api/boards/update_board.py +238 -0
- honeycomb/_generated/api/boards/update_board_view.py +250 -0
- honeycomb/_generated/api/burn_alerts/__init__.py +0 -0
- honeycomb/_generated/api/burn_alerts/create_burn_alert.py +224 -0
- honeycomb/_generated/api/burn_alerts/delete_burn_alert.py +204 -0
- honeycomb/_generated/api/burn_alerts/get_burn_alert.py +208 -0
- honeycomb/_generated/api/burn_alerts/list_burn_alerts_by_slo.py +220 -0
- honeycomb/_generated/api/calculated_fields/__init__.py +0 -0
- honeycomb/_generated/api/calculated_fields/create_calculated_field.py +239 -0
- honeycomb/_generated/api/calculated_fields/delete_calculated_field.py +225 -0
- honeycomb/_generated/api/calculated_fields/get_calculated_field.py +207 -0
- honeycomb/_generated/api/calculated_fields/list_calculated_fields.py +252 -0
- honeycomb/_generated/api/calculated_fields/update_calculated_field.py +242 -0
- honeycomb/_generated/api/columns/__init__.py +0 -0
- honeycomb/_generated/api/columns/create_column.py +241 -0
- honeycomb/_generated/api/columns/delete_column.py +221 -0
- honeycomb/_generated/api/columns/get_column.py +206 -0
- honeycomb/_generated/api/columns/list_columns.py +256 -0
- honeycomb/_generated/api/columns/update_column.py +242 -0
- honeycomb/_generated/api/dataset_definitions/__init__.py +0 -0
- honeycomb/_generated/api/dataset_definitions/list_dataset_definitions.py +193 -0
- honeycomb/_generated/api/dataset_definitions/patch_dataset_definitions.py +235 -0
- honeycomb/_generated/api/datasets/__init__.py +0 -0
- honeycomb/_generated/api/datasets/create_dataset.py +227 -0
- honeycomb/_generated/api/datasets/delete_dataset.py +251 -0
- honeycomb/_generated/api/datasets/get_dataset.py +195 -0
- honeycomb/_generated/api/datasets/list_datasets.py +177 -0
- honeycomb/_generated/api/datasets/update_dataset.py +217 -0
- honeycomb/_generated/api/enhance/__init__.py +0 -0
- honeycomb/_generated/api/enhance/record_enhance_indexer_usage.py +231 -0
- honeycomb/_generated/api/environments/__init__.py +0 -0
- honeycomb/_generated/api/environments/create_environment.py +247 -0
- honeycomb/_generated/api/environments/delete_environment.py +245 -0
- honeycomb/_generated/api/environments/get_environment.py +213 -0
- honeycomb/_generated/api/environments/list_environments.py +245 -0
- honeycomb/_generated/api/environments/update_environment.py +254 -0
- honeycomb/_generated/api/events/__init__.py +0 -0
- honeycomb/_generated/api/events/create_event.py +269 -0
- honeycomb/_generated/api/events/create_events.py +314 -0
- honeycomb/_generated/api/key_management/__init__.py +0 -0
- honeycomb/_generated/api/key_management/create_api_key.py +286 -0
- honeycomb/_generated/api/key_management/delete_api_key.py +223 -0
- honeycomb/_generated/api/key_management/get_api_key.py +225 -0
- honeycomb/_generated/api/key_management/list_api_keys.py +281 -0
- honeycomb/_generated/api/key_management/update_api_key.py +270 -0
- honeycomb/_generated/api/kinesis_events/__init__.py +0 -0
- honeycomb/_generated/api/kinesis_events/create_kinesis_events.py +220 -0
- honeycomb/_generated/api/marker_settings/__init__.py +0 -0
- honeycomb/_generated/api/marker_settings/create_marker_setting.py +209 -0
- honeycomb/_generated/api/marker_settings/delete_marker_settings.py +194 -0
- honeycomb/_generated/api/marker_settings/list_marker_settings.py +186 -0
- honeycomb/_generated/api/marker_settings/update_marker_settings.py +230 -0
- honeycomb/_generated/api/markers/__init__.py +0 -0
- honeycomb/_generated/api/markers/create_marker.py +220 -0
- honeycomb/_generated/api/markers/create_marker_v2.py +253 -0
- honeycomb/_generated/api/markers/delete_marker.py +200 -0
- honeycomb/_generated/api/markers/get_marker.py +194 -0
- honeycomb/_generated/api/markers/update_marker.py +233 -0
- honeycomb/_generated/api/markers/update_marker_v2.py +262 -0
- honeycomb/_generated/api/pipelines/__init__.py +0 -0
- honeycomb/_generated/api/pipelines/get_pipeline_configuration.py +306 -0
- honeycomb/_generated/api/pipelines/record_pipeline_usage.py +244 -0
- honeycomb/_generated/api/pipelines/update_pipeline_configuration_rollout.py +261 -0
- honeycomb/_generated/api/queries/__init__.py +0 -0
- honeycomb/_generated/api/queries/create_query.py +224 -0
- honeycomb/_generated/api/queries/get_query.py +208 -0
- honeycomb/_generated/api/query_annotations/__init__.py +0 -0
- honeycomb/_generated/api/query_annotations/create_query_annotation.py +226 -0
- honeycomb/_generated/api/query_annotations/delete_query_annotation.py +198 -0
- honeycomb/_generated/api/query_annotations/get_query_annotation.py +202 -0
- honeycomb/_generated/api/query_annotations/list_query_annotations.py +217 -0
- honeycomb/_generated/api/query_annotations/update_query_annotation.py +237 -0
- honeycomb/_generated/api/query_data/__init__.py +0 -0
- honeycomb/_generated/api/query_data/create_query_result.py +247 -0
- honeycomb/_generated/api/query_data/get_query_result.py +208 -0
- honeycomb/_generated/api/recipients/__init__.py +0 -0
- honeycomb/_generated/api/recipients/create_recipient.py +317 -0
- honeycomb/_generated/api/recipients/delete_recipient.py +199 -0
- honeycomb/_generated/api/recipients/get_recipient.py +252 -0
- honeycomb/_generated/api/recipients/list_recipients.py +230 -0
- honeycomb/_generated/api/recipients/update_recipient.py +323 -0
- honeycomb/_generated/api/reporting/__init__.py +0 -0
- honeycomb/_generated/api/reporting/get_slo_history.py +218 -0
- honeycomb/_generated/api/service_maps/__init__.py +0 -0
- honeycomb/_generated/api/service_maps/create_map_dependency_request.py +252 -0
- honeycomb/_generated/api/service_maps/get_map_dependencies.py +265 -0
- honeycomb/_generated/api/sl_os/__init__.py +0 -0
- honeycomb/_generated/api/sl_os/create_slo.py +229 -0
- honeycomb/_generated/api/sl_os/delete_slo.py +210 -0
- honeycomb/_generated/api/sl_os/get_slo.py +256 -0
- honeycomb/_generated/api/sl_os/list_slos.py +210 -0
- honeycomb/_generated/api/sl_os/update_slo.py +242 -0
- honeycomb/_generated/api/triggers/__init__.py +0 -0
- honeycomb/_generated/api/triggers/create_trigger.py +250 -0
- honeycomb/_generated/api/triggers/delete_trigger.py +204 -0
- honeycomb/_generated/api/triggers/get_trigger.py +214 -0
- honeycomb/_generated/api/triggers/list_triggers.py +206 -0
- honeycomb/_generated/api/triggers/list_triggers_with_recipient.py +208 -0
- honeycomb/_generated/api/triggers/update_trigger.py +248 -0
- honeycomb/_generated/client.py +271 -0
- honeycomb/_generated/errors.py +14 -0
- honeycomb/_generated/models/__init__.py +561 -0
- honeycomb/_generated/models/api_key_create_request.py +78 -0
- honeycomb/_generated/models/api_key_create_request_data.py +130 -0
- honeycomb/_generated/models/api_key_create_request_data_relationships.py +78 -0
- honeycomb/_generated/models/api_key_create_request_data_type.py +7 -0
- honeycomb/_generated/models/api_key_list_response.py +112 -0
- honeycomb/_generated/models/api_key_object.py +189 -0
- honeycomb/_generated/models/api_key_object_links.py +74 -0
- honeycomb/_generated/models/api_key_object_relationships.py +150 -0
- honeycomb/_generated/models/api_key_object_type.py +7 -0
- honeycomb/_generated/models/api_key_response.py +78 -0
- honeycomb/_generated/models/api_key_update_request.py +104 -0
- honeycomb/_generated/models/auth.py +140 -0
- honeycomb/_generated/models/auth_api_key_access.py +154 -0
- honeycomb/_generated/models/auth_environment.py +82 -0
- honeycomb/_generated/models/auth_team.py +82 -0
- honeycomb/_generated/models/auth_type.py +8 -0
- honeycomb/_generated/models/auth_v2_response.py +108 -0
- honeycomb/_generated/models/auth_v2_response_data.py +122 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes.py +141 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes_key_type.py +7 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/auth_v2_response_data_relationships.py +59 -0
- honeycomb/_generated/models/auth_v2_response_data_type.py +7 -0
- honeycomb/_generated/models/base_trigger.py +367 -0
- honeycomb/_generated/models/base_trigger_alert_type.py +8 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0.py +92 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0_offset_minutes.py +10 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0_type.py +8 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule.py +83 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_type.py +8 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_window.py +103 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_window_days_of_week_item.py +13 -0
- honeycomb/_generated/models/base_trigger_threshold.py +95 -0
- honeycomb/_generated/models/base_trigger_threshold_op.py +10 -0
- honeycomb/_generated/models/batch_event.py +110 -0
- honeycomb/_generated/models/board.py +276 -0
- honeycomb/_generated/models/board_layout_generation.py +8 -0
- honeycomb/_generated/models/board_links.py +74 -0
- honeycomb/_generated/models/board_panel_position.py +104 -0
- honeycomb/_generated/models/board_query_visualization_settings.py +141 -0
- honeycomb/_generated/models/board_query_visualization_settings_charts_item.py +113 -0
- honeycomb/_generated/models/board_query_visualization_settings_charts_item_chart_type.py +13 -0
- honeycomb/_generated/models/board_type.py +7 -0
- honeycomb/_generated/models/board_view_filter.py +93 -0
- honeycomb/_generated/models/board_view_filter_operation.py +22 -0
- honeycomb/_generated/models/board_view_response.py +111 -0
- honeycomb/_generated/models/budget_rate.py +189 -0
- honeycomb/_generated/models/budget_rate_alert_type.py +8 -0
- honeycomb/_generated/models/burn_alert_shared_params.py +136 -0
- honeycomb/_generated/models/calculated_field.py +117 -0
- honeycomb/_generated/models/configuration_key_attributes.py +140 -0
- honeycomb/_generated/models/configuration_key_attributes_key_type.py +7 -0
- honeycomb/_generated/models/configuration_key_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/create_board_view_request.py +96 -0
- honeycomb/_generated/models/create_budget_rate_burn_alert_request.py +232 -0
- honeycomb/_generated/models/create_budget_rate_burn_alert_request_slo.py +74 -0
- honeycomb/_generated/models/create_column.py +149 -0
- honeycomb/_generated/models/create_column_type.py +11 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request.py +78 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data.py +90 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes.py +97 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data.py +88 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item.py +89 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +89 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +97 -0
- 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
- 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
- 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
- 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
- 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
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_type.py +7 -0
- honeycomb/_generated/models/create_environment_request.py +78 -0
- honeycomb/_generated/models/create_environment_request_data.py +90 -0
- honeycomb/_generated/models/create_environment_request_data_attributes.py +102 -0
- honeycomb/_generated/models/create_environment_request_data_type.py +7 -0
- honeycomb/_generated/models/create_events_content_encoding.py +8 -0
- honeycomb/_generated/models/create_events_response_200_item.py +82 -0
- honeycomb/_generated/models/create_exhaustion_time_burn_alert_request.py +217 -0
- honeycomb/_generated/models/create_exhaustion_time_burn_alert_request_slo.py +74 -0
- honeycomb/_generated/models/create_map_dependencies_request.py +128 -0
- honeycomb/_generated/models/create_map_dependencies_response.py +97 -0
- honeycomb/_generated/models/create_map_dependencies_response_status.py +9 -0
- honeycomb/_generated/models/create_pipeline_health_record_request.py +78 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data.py +98 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes.py +88 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data.py +88 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item.py +89 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +89 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +97 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +102 -0
- 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
- 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
- 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
- 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
- honeycomb/_generated/models/create_pipeline_health_record_request_data_type.py +7 -0
- honeycomb/_generated/models/create_query_result_request.py +118 -0
- honeycomb/_generated/models/dataset.py +183 -0
- honeycomb/_generated/models/dataset_creation_payload.py +93 -0
- honeycomb/_generated/models/dataset_definition_type_1.py +96 -0
- honeycomb/_generated/models/dataset_definition_type_1_column_type.py +8 -0
- honeycomb/_generated/models/dataset_definitions.py +599 -0
- honeycomb/_generated/models/dataset_relationship.py +79 -0
- honeycomb/_generated/models/dataset_relationship_data.py +82 -0
- honeycomb/_generated/models/dataset_relationship_data_type.py +7 -0
- honeycomb/_generated/models/dataset_settings.py +73 -0
- honeycomb/_generated/models/dataset_update_payload.py +105 -0
- honeycomb/_generated/models/dataset_update_payload_settings.py +73 -0
- honeycomb/_generated/models/detailed_error.py +115 -0
- honeycomb/_generated/models/email_recipient.py +160 -0
- honeycomb/_generated/models/email_recipient_details.py +71 -0
- honeycomb/_generated/models/email_recipient_type.py +7 -0
- honeycomb/_generated/models/environment.py +112 -0
- honeycomb/_generated/models/environment_attributes.py +140 -0
- honeycomb/_generated/models/environment_attributes_color_type_1.py +7 -0
- honeycomb/_generated/models/environment_attributes_settings.py +70 -0
- honeycomb/_generated/models/environment_color.py +16 -0
- honeycomb/_generated/models/environment_links.py +70 -0
- honeycomb/_generated/models/environment_list_response.py +112 -0
- honeycomb/_generated/models/environment_relationship.py +79 -0
- honeycomb/_generated/models/environment_relationship_data.py +82 -0
- honeycomb/_generated/models/environment_relationship_data_type.py +7 -0
- honeycomb/_generated/models/environment_response.py +78 -0
- honeycomb/_generated/models/environment_type.py +7 -0
- honeycomb/_generated/models/error.py +74 -0
- honeycomb/_generated/models/event.py +71 -0
- honeycomb/_generated/models/exhaustion_time.py +174 -0
- honeycomb/_generated/models/exhaustion_time_alert_type.py +8 -0
- honeycomb/_generated/models/exhaustion_time_burn_alert_list_response.py +198 -0
- honeycomb/_generated/models/exhaustion_time_burn_alert_list_response_slo.py +77 -0
- honeycomb/_generated/models/filter_op.py +22 -0
- honeycomb/_generated/models/get_map_dependencies_response.py +169 -0
- honeycomb/_generated/models/get_map_dependencies_response_status.py +9 -0
- honeycomb/_generated/models/having_calculate_op.py +29 -0
- honeycomb/_generated/models/having_op.py +12 -0
- honeycomb/_generated/models/included_resource.py +106 -0
- honeycomb/_generated/models/included_resource_attributes.py +62 -0
- honeycomb/_generated/models/ingest_key_attributes.py +153 -0
- honeycomb/_generated/models/ingest_key_attributes_key_type.py +7 -0
- honeycomb/_generated/models/ingest_key_attributes_permissions.py +74 -0
- honeycomb/_generated/models/ingest_key_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/ingest_key_type.py +90 -0
- honeycomb/_generated/models/ingest_key_type_key_type.py +7 -0
- honeycomb/_generated/models/jsonapi_error_source.py +92 -0
- honeycomb/_generated/models/kinesis_event.py +111 -0
- honeycomb/_generated/models/kinesis_event_record.py +73 -0
- honeycomb/_generated/models/kinesis_response.py +91 -0
- honeycomb/_generated/models/list_api_keys_filtertype.py +8 -0
- honeycomb/_generated/models/map_dependency.py +118 -0
- honeycomb/_generated/models/map_node.py +97 -0
- honeycomb/_generated/models/map_node_type.py +7 -0
- honeycomb/_generated/models/marker.py +151 -0
- honeycomb/_generated/models/marker_create_request.py +78 -0
- honeycomb/_generated/models/marker_create_request_data.py +104 -0
- honeycomb/_generated/models/marker_create_request_data_attributes.py +110 -0
- honeycomb/_generated/models/marker_create_request_data_relationships.py +92 -0
- honeycomb/_generated/models/marker_create_request_data_type.py +7 -0
- honeycomb/_generated/models/marker_object.py +136 -0
- honeycomb/_generated/models/marker_object_attributes.py +146 -0
- honeycomb/_generated/models/marker_object_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/marker_object_links.py +74 -0
- honeycomb/_generated/models/marker_object_relationships.py +111 -0
- honeycomb/_generated/models/marker_object_relationships_dataset.py +104 -0
- honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0.py +94 -0
- honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0_type.py +7 -0
- honeycomb/_generated/models/marker_object_type.py +7 -0
- honeycomb/_generated/models/marker_response.py +78 -0
- honeycomb/_generated/models/marker_setting.py +125 -0
- honeycomb/_generated/models/marker_update_request.py +78 -0
- honeycomb/_generated/models/marker_update_request_data.py +104 -0
- honeycomb/_generated/models/marker_update_request_data_attributes.py +111 -0
- honeycomb/_generated/models/marker_update_request_data_relationships.py +92 -0
- honeycomb/_generated/models/marker_update_request_data_type.py +7 -0
- honeycomb/_generated/models/ms_teams_recipient.py +161 -0
- honeycomb/_generated/models/ms_teams_recipient_details.py +80 -0
- honeycomb/_generated/models/ms_teams_recipient_type.py +7 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient.py +161 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient_details.py +80 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient_type.py +7 -0
- honeycomb/_generated/models/notification_recipient.py +131 -0
- honeycomb/_generated/models/notification_recipient_details.py +117 -0
- honeycomb/_generated/models/notification_recipient_details_pagerduty_severity.py +10 -0
- honeycomb/_generated/models/notification_recipient_details_variables_item.py +81 -0
- honeycomb/_generated/models/pager_duty_recipient.py +160 -0
- honeycomb/_generated/models/pager_duty_recipient_details.py +79 -0
- honeycomb/_generated/models/pager_duty_recipient_type.py +7 -0
- honeycomb/_generated/models/pagination_links.py +80 -0
- honeycomb/_generated/models/payload_template.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_response.py +112 -0
- honeycomb/_generated/models/pipeline_configuration_response_attributes.py +101 -0
- honeycomb/_generated/models/pipeline_configuration_response_attributes_configs_item.py +85 -0
- honeycomb/_generated/models/pipeline_configuration_response_links.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_response_type.py +7 -0
- honeycomb/_generated/models/pipeline_configuration_rollout.py +112 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_attributes.py +75 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_attributes_status.py +12 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_links.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_type.py +7 -0
- honeycomb/_generated/models/preset_filter.py +78 -0
- honeycomb/_generated/models/query.py +346 -0
- honeycomb/_generated/models/query_annotation.py +166 -0
- honeycomb/_generated/models/query_annotation_source.py +8 -0
- honeycomb/_generated/models/query_calculated_fields_item.py +80 -0
- honeycomb/_generated/models/query_calculations_item.py +98 -0
- honeycomb/_generated/models/query_compare_time_offset_seconds.py +14 -0
- honeycomb/_generated/models/query_filter_combination.py +8 -0
- honeycomb/_generated/models/query_filters_item.py +126 -0
- honeycomb/_generated/models/query_havings_item.py +128 -0
- honeycomb/_generated/models/query_op.py +30 -0
- honeycomb/_generated/models/query_orders_item.py +115 -0
- honeycomb/_generated/models/query_orders_item_order.py +8 -0
- honeycomb/_generated/models/query_panel.py +114 -0
- honeycomb/_generated/models/query_panel_query_panel.py +143 -0
- honeycomb/_generated/models/query_panel_query_panel_query_style.py +9 -0
- honeycomb/_generated/models/query_result.py +130 -0
- honeycomb/_generated/models/query_result_details.py +156 -0
- honeycomb/_generated/models/query_result_details_data.py +188 -0
- honeycomb/_generated/models/query_result_details_links.py +85 -0
- honeycomb/_generated/models/query_result_links.py +85 -0
- honeycomb/_generated/models/query_results_data.py +89 -0
- honeycomb/_generated/models/query_results_data_data.py +71 -0
- honeycomb/_generated/models/query_results_series.py +97 -0
- honeycomb/_generated/models/recipient_properties.py +137 -0
- honeycomb/_generated/models/recipient_type.py +12 -0
- honeycomb/_generated/models/slack_recipient.py +160 -0
- honeycomb/_generated/models/slack_recipient_details.py +71 -0
- honeycomb/_generated/models/slack_recipient_type.py +7 -0
- honeycomb/_generated/models/slo.py +245 -0
- honeycomb/_generated/models/slo_create.py +245 -0
- honeycomb/_generated/models/slo_create_sli.py +75 -0
- honeycomb/_generated/models/slo_detailed_response.py +312 -0
- honeycomb/_generated/models/slo_detailed_response_status.py +10 -0
- honeycomb/_generated/models/slo_history.py +94 -0
- honeycomb/_generated/models/slo_history_request.py +93 -0
- honeycomb/_generated/models/slo_history_response.py +91 -0
- honeycomb/_generated/models/slo_panel.py +114 -0
- honeycomb/_generated/models/slo_panel_slo_panel.py +75 -0
- honeycomb/_generated/models/slo_sli.py +74 -0
- honeycomb/_generated/models/tag.py +79 -0
- honeycomb/_generated/models/team_relationship.py +78 -0
- honeycomb/_generated/models/team_relationship_team.py +78 -0
- honeycomb/_generated/models/team_relationship_team_data.py +82 -0
- honeycomb/_generated/models/team_relationship_team_data_type.py +7 -0
- honeycomb/_generated/models/template_variable_definition.py +81 -0
- honeycomb/_generated/models/text_panel.py +114 -0
- honeycomb/_generated/models/text_panel_text_panel.py +71 -0
- honeycomb/_generated/models/trigger_response.py +399 -0
- honeycomb/_generated/models/trigger_with_inline_query.py +390 -0
- honeycomb/_generated/models/trigger_with_inline_query_query.py +60 -0
- honeycomb/_generated/models/trigger_with_query_reference.py +376 -0
- honeycomb/_generated/models/update_board_view_request.py +107 -0
- honeycomb/_generated/models/update_environment_request.py +78 -0
- honeycomb/_generated/models/update_environment_request_data.py +98 -0
- honeycomb/_generated/models/update_environment_request_data_attributes.py +118 -0
- honeycomb/_generated/models/update_environment_request_data_attributes_settings.py +73 -0
- honeycomb/_generated/models/update_environment_request_data_type.py +7 -0
- honeycomb/_generated/models/update_exhaustion_time_burn_alert_request.py +202 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout.py +98 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes.py +75 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes_status.py +12 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request.py +78 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data.py +98 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes.py +75 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes_status.py +12 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_type.py +7 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_response.py +78 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_type.py +7 -0
- honeycomb/_generated/models/user_relationship.py +78 -0
- honeycomb/_generated/models/user_relationship_data.py +82 -0
- honeycomb/_generated/models/user_relationship_data_type.py +7 -0
- honeycomb/_generated/models/validation_error.py +145 -0
- honeycomb/_generated/models/validation_error_type_detail_item.py +103 -0
- honeycomb/_generated/models/validation_error_type_detail_item_code.py +10 -0
- honeycomb/_generated/models/webhook_header.py +81 -0
- honeycomb/_generated/models/webhook_recipient.py +160 -0
- honeycomb/_generated/models/webhook_recipient_details.py +142 -0
- honeycomb/_generated/models/webhook_recipient_details_webhook_payloads.py +117 -0
- honeycomb/_generated/models/webhook_recipient_details_webhook_payloads_payload_templates.py +126 -0
- honeycomb/_generated/models/webhook_recipient_type.py +7 -0
- honeycomb/_generated/py.typed +1 -0
- honeycomb/_generated/types.py +46 -0
- honeycomb/auth.py +152 -0
- honeycomb/client.py +736 -0
- honeycomb/exceptions.py +236 -0
- honeycomb/models/__init__.py +157 -0
- honeycomb/models/api_keys.py +81 -0
- honeycomb/models/board_builder.py +387 -0
- honeycomb/models/boards.py +86 -0
- honeycomb/models/burn_alerts.py +124 -0
- honeycomb/models/columns.py +59 -0
- honeycomb/models/datasets.py +51 -0
- honeycomb/models/derived_columns.py +107 -0
- honeycomb/models/environments.py +106 -0
- honeycomb/models/events.py +35 -0
- honeycomb/models/marker_builder.py +136 -0
- honeycomb/models/markers.py +73 -0
- honeycomb/models/queries.py +210 -0
- honeycomb/models/query_annotations.py +63 -0
- honeycomb/models/query_builder.py +840 -0
- honeycomb/models/recipient_builder.py +248 -0
- honeycomb/models/recipients.py +43 -0
- honeycomb/models/service_map_dependencies.py +126 -0
- honeycomb/models/slo_builder.py +463 -0
- honeycomb/models/slos.py +66 -0
- honeycomb/models/tags_mixin.py +79 -0
- honeycomb/models/trigger_builder.py +561 -0
- honeycomb/models/triggers.py +208 -0
- honeycomb/resources/__init__.py +35 -0
- honeycomb/resources/_recipient_utils.py +156 -0
- honeycomb/resources/api_keys.py +303 -0
- honeycomb/resources/base.py +142 -0
- honeycomb/resources/boards.py +350 -0
- honeycomb/resources/burn_alerts.py +205 -0
- honeycomb/resources/columns.py +185 -0
- honeycomb/resources/datasets.py +163 -0
- honeycomb/resources/derived_columns.py +233 -0
- honeycomb/resources/environments.py +295 -0
- honeycomb/resources/events.py +156 -0
- honeycomb/resources/markers.py +334 -0
- honeycomb/resources/queries.py +256 -0
- honeycomb/resources/query_annotations.py +207 -0
- honeycomb/resources/query_results.py +886 -0
- honeycomb/resources/recipients.py +202 -0
- honeycomb/resources/service_map_dependencies.py +389 -0
- honeycomb/resources/slos.py +353 -0
- honeycomb/resources/triggers.py +284 -0
- honeycomb/tools/__init__.py +85 -0
- honeycomb/tools/__main__.py +204 -0
- honeycomb/tools/builders.py +512 -0
- honeycomb/tools/descriptions.py +523 -0
- honeycomb/tools/executor.py +860 -0
- honeycomb/tools/generator.py +2386 -0
- honeycomb/tools/schemas.py +184 -0
- honeycomb_api-0.1.0.dist-info/METADATA +451 -0
- honeycomb_api-0.1.0.dist-info/RECORD +453 -0
- honeycomb_api-0.1.0.dist-info/WHEEL +4 -0
- 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"}
|