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,334 @@
|
|
|
1
|
+
"""Markers resource for Honeycomb API."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, List # noqa: UP035
|
|
6
|
+
|
|
7
|
+
from ..models.markers import Marker, MarkerCreate, MarkerSetting, MarkerSettingCreate
|
|
8
|
+
from .base import BaseResource
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from ..client import HoneycombClient
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class MarkersResource(BaseResource):
|
|
15
|
+
"""Resource for managing dataset markers.
|
|
16
|
+
|
|
17
|
+
Markers allow you to annotate your data with events like deployments,
|
|
18
|
+
configuration changes, or other significant occurrences.
|
|
19
|
+
|
|
20
|
+
Note: The Markers API does not support GET for individual markers.
|
|
21
|
+
Use list() to retrieve all markers and filter client-side if needed.
|
|
22
|
+
|
|
23
|
+
Example (async):
|
|
24
|
+
>>> async with HoneycombClient(api_key="...") as client:
|
|
25
|
+
... markers = await client.markers.list_async(dataset="my-dataset")
|
|
26
|
+
... marker = await client.markers.create_async(
|
|
27
|
+
... dataset="my-dataset",
|
|
28
|
+
... marker=MarkerCreate(
|
|
29
|
+
... message="deploy #123",
|
|
30
|
+
... type="deploy"
|
|
31
|
+
... )
|
|
32
|
+
... )
|
|
33
|
+
|
|
34
|
+
Example (sync):
|
|
35
|
+
>>> with HoneycombClient(api_key="...", sync=True) as client:
|
|
36
|
+
... markers = client.markers.list(dataset="my-dataset")
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(self, client: HoneycombClient) -> None:
|
|
40
|
+
super().__init__(client)
|
|
41
|
+
|
|
42
|
+
def _build_path(self, dataset: str, marker_id: str | None = None) -> str:
|
|
43
|
+
"""Build API path for markers."""
|
|
44
|
+
base = f"/1/markers/{dataset}"
|
|
45
|
+
if marker_id:
|
|
46
|
+
return f"{base}/{marker_id}"
|
|
47
|
+
return base
|
|
48
|
+
|
|
49
|
+
def _build_settings_path(self, dataset: str, setting_id: str | None = None) -> str:
|
|
50
|
+
"""Build API path for marker settings."""
|
|
51
|
+
base = f"/1/marker_settings/{dataset}"
|
|
52
|
+
if setting_id:
|
|
53
|
+
return f"{base}/{setting_id}"
|
|
54
|
+
return base
|
|
55
|
+
|
|
56
|
+
# -------------------------------------------------------------------------
|
|
57
|
+
# Async methods - Markers
|
|
58
|
+
# -------------------------------------------------------------------------
|
|
59
|
+
|
|
60
|
+
async def list_async(self, dataset: str) -> list[Marker]:
|
|
61
|
+
"""List all markers for a dataset (async).
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
dataset: Dataset slug.
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
List of Marker objects.
|
|
68
|
+
"""
|
|
69
|
+
data = await self._get_async(self._build_path(dataset))
|
|
70
|
+
return self._parse_model_list(Marker, data)
|
|
71
|
+
|
|
72
|
+
async def create_async(self, dataset: str, marker: MarkerCreate) -> Marker:
|
|
73
|
+
"""Create a new marker (async).
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
dataset: Dataset slug (use '__all__' for environment-wide markers).
|
|
77
|
+
marker: Marker configuration.
|
|
78
|
+
|
|
79
|
+
Returns:
|
|
80
|
+
Created Marker object.
|
|
81
|
+
"""
|
|
82
|
+
data = await self._post_async(self._build_path(dataset), json=marker.model_dump_for_api())
|
|
83
|
+
return self._parse_model(Marker, data)
|
|
84
|
+
|
|
85
|
+
async def update_async(self, dataset: str, marker_id: str, marker: MarkerCreate) -> Marker:
|
|
86
|
+
"""Update an existing marker (async).
|
|
87
|
+
|
|
88
|
+
Args:
|
|
89
|
+
dataset: Dataset slug.
|
|
90
|
+
marker_id: Marker ID.
|
|
91
|
+
marker: Updated marker configuration.
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
Updated Marker object.
|
|
95
|
+
"""
|
|
96
|
+
data = await self._put_async(
|
|
97
|
+
self._build_path(dataset, marker_id), json=marker.model_dump_for_api()
|
|
98
|
+
)
|
|
99
|
+
return self._parse_model(Marker, data)
|
|
100
|
+
|
|
101
|
+
async def delete_async(self, dataset: str, marker_id: str) -> None:
|
|
102
|
+
"""Delete a marker (async).
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
dataset: Dataset slug.
|
|
106
|
+
marker_id: Marker ID.
|
|
107
|
+
"""
|
|
108
|
+
await self._delete_async(self._build_path(dataset, marker_id))
|
|
109
|
+
|
|
110
|
+
# -------------------------------------------------------------------------
|
|
111
|
+
# Async methods - Marker Settings
|
|
112
|
+
# -------------------------------------------------------------------------
|
|
113
|
+
|
|
114
|
+
async def list_settings_async(self, dataset: str) -> list[MarkerSetting]:
|
|
115
|
+
"""List all marker settings for a dataset (async).
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
dataset: Dataset slug.
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
List of MarkerSetting objects.
|
|
122
|
+
"""
|
|
123
|
+
data = await self._get_async(self._build_settings_path(dataset))
|
|
124
|
+
return self._parse_model_list(MarkerSetting, data)
|
|
125
|
+
|
|
126
|
+
async def get_setting_async(self, dataset: str, setting_id: str) -> MarkerSetting:
|
|
127
|
+
"""Get a specific marker setting (async).
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
dataset: Dataset slug.
|
|
131
|
+
setting_id: Marker setting ID.
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
MarkerSetting object.
|
|
135
|
+
"""
|
|
136
|
+
data = await self._get_async(self._build_settings_path(dataset, setting_id))
|
|
137
|
+
return self._parse_model(MarkerSetting, data)
|
|
138
|
+
|
|
139
|
+
async def create_setting_async(
|
|
140
|
+
self, dataset: str, setting: MarkerSettingCreate
|
|
141
|
+
) -> MarkerSetting:
|
|
142
|
+
"""Create a new marker setting (async).
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
dataset: Dataset slug.
|
|
146
|
+
setting: Marker setting configuration.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
Created MarkerSetting object.
|
|
150
|
+
"""
|
|
151
|
+
data = await self._post_async(
|
|
152
|
+
self._build_settings_path(dataset), json=setting.model_dump_for_api()
|
|
153
|
+
)
|
|
154
|
+
return self._parse_model(MarkerSetting, data)
|
|
155
|
+
|
|
156
|
+
async def update_setting_async(
|
|
157
|
+
self, dataset: str, setting_id: str, setting: MarkerSettingCreate
|
|
158
|
+
) -> MarkerSetting:
|
|
159
|
+
"""Update an existing marker setting (async).
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
dataset: Dataset slug.
|
|
163
|
+
setting_id: Marker setting ID.
|
|
164
|
+
setting: Updated marker setting configuration.
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
Updated MarkerSetting object.
|
|
168
|
+
"""
|
|
169
|
+
data = await self._put_async(
|
|
170
|
+
self._build_settings_path(dataset, setting_id), json=setting.model_dump_for_api()
|
|
171
|
+
)
|
|
172
|
+
return self._parse_model(MarkerSetting, data)
|
|
173
|
+
|
|
174
|
+
async def delete_setting_async(self, dataset: str, setting_id: str) -> None:
|
|
175
|
+
"""Delete a marker setting (async).
|
|
176
|
+
|
|
177
|
+
Args:
|
|
178
|
+
dataset: Dataset slug.
|
|
179
|
+
setting_id: Marker setting ID.
|
|
180
|
+
"""
|
|
181
|
+
await self._delete_async(self._build_settings_path(dataset, setting_id))
|
|
182
|
+
|
|
183
|
+
# -------------------------------------------------------------------------
|
|
184
|
+
# Sync methods - Markers
|
|
185
|
+
# -------------------------------------------------------------------------
|
|
186
|
+
|
|
187
|
+
def list(self, dataset: str) -> list[Marker]:
|
|
188
|
+
"""List all markers for a dataset.
|
|
189
|
+
|
|
190
|
+
Args:
|
|
191
|
+
dataset: Dataset slug.
|
|
192
|
+
|
|
193
|
+
Returns:
|
|
194
|
+
List of Marker objects.
|
|
195
|
+
"""
|
|
196
|
+
if not self._client.is_sync:
|
|
197
|
+
raise RuntimeError("Use list_async() for async mode, or pass sync=True to client")
|
|
198
|
+
data = self._get_sync(self._build_path(dataset))
|
|
199
|
+
return self._parse_model_list(Marker, data)
|
|
200
|
+
|
|
201
|
+
def create(self, dataset: str, marker: MarkerCreate) -> Marker:
|
|
202
|
+
"""Create a new marker.
|
|
203
|
+
|
|
204
|
+
Args:
|
|
205
|
+
dataset: Dataset slug (use '__all__' for environment-wide markers).
|
|
206
|
+
marker: Marker configuration.
|
|
207
|
+
|
|
208
|
+
Returns:
|
|
209
|
+
Created Marker object.
|
|
210
|
+
"""
|
|
211
|
+
if not self._client.is_sync:
|
|
212
|
+
raise RuntimeError("Use create_async() for async mode, or pass sync=True to client")
|
|
213
|
+
data = self._post_sync(self._build_path(dataset), json=marker.model_dump_for_api())
|
|
214
|
+
return self._parse_model(Marker, data)
|
|
215
|
+
|
|
216
|
+
def update(self, dataset: str, marker_id: str, marker: MarkerCreate) -> Marker:
|
|
217
|
+
"""Update an existing marker.
|
|
218
|
+
|
|
219
|
+
Args:
|
|
220
|
+
dataset: Dataset slug.
|
|
221
|
+
marker_id: Marker ID.
|
|
222
|
+
marker: Updated marker configuration.
|
|
223
|
+
|
|
224
|
+
Returns:
|
|
225
|
+
Updated Marker object.
|
|
226
|
+
"""
|
|
227
|
+
if not self._client.is_sync:
|
|
228
|
+
raise RuntimeError("Use update_async() for async mode, or pass sync=True to client")
|
|
229
|
+
data = self._put_sync(
|
|
230
|
+
self._build_path(dataset, marker_id), json=marker.model_dump_for_api()
|
|
231
|
+
)
|
|
232
|
+
return self._parse_model(Marker, data)
|
|
233
|
+
|
|
234
|
+
def delete(self, dataset: str, marker_id: str) -> None:
|
|
235
|
+
"""Delete a marker.
|
|
236
|
+
|
|
237
|
+
Args:
|
|
238
|
+
dataset: Dataset slug.
|
|
239
|
+
marker_id: Marker ID.
|
|
240
|
+
"""
|
|
241
|
+
if not self._client.is_sync:
|
|
242
|
+
raise RuntimeError("Use delete_async() for async mode, or pass sync=True to client")
|
|
243
|
+
self._delete_sync(self._build_path(dataset, marker_id))
|
|
244
|
+
|
|
245
|
+
# -------------------------------------------------------------------------
|
|
246
|
+
# Sync methods - Marker Settings
|
|
247
|
+
# -------------------------------------------------------------------------
|
|
248
|
+
|
|
249
|
+
def list_settings(self, dataset: str) -> List[MarkerSetting]: # noqa: UP006
|
|
250
|
+
"""List all marker settings for a dataset.
|
|
251
|
+
|
|
252
|
+
Args:
|
|
253
|
+
dataset: Dataset slug.
|
|
254
|
+
|
|
255
|
+
Returns:
|
|
256
|
+
List of MarkerSetting objects.
|
|
257
|
+
"""
|
|
258
|
+
if not self._client.is_sync:
|
|
259
|
+
raise RuntimeError(
|
|
260
|
+
"Use list_settings_async() for async mode, or pass sync=True to client"
|
|
261
|
+
)
|
|
262
|
+
data = self._get_sync(self._build_settings_path(dataset))
|
|
263
|
+
return self._parse_model_list(MarkerSetting, data)
|
|
264
|
+
|
|
265
|
+
def get_setting(self, dataset: str, setting_id: str) -> MarkerSetting:
|
|
266
|
+
"""Get a specific marker setting.
|
|
267
|
+
|
|
268
|
+
Args:
|
|
269
|
+
dataset: Dataset slug.
|
|
270
|
+
setting_id: Marker setting ID.
|
|
271
|
+
|
|
272
|
+
Returns:
|
|
273
|
+
MarkerSetting object.
|
|
274
|
+
"""
|
|
275
|
+
if not self._client.is_sync:
|
|
276
|
+
raise RuntimeError(
|
|
277
|
+
"Use get_setting_async() for async mode, or pass sync=True to client"
|
|
278
|
+
)
|
|
279
|
+
data = self._get_sync(self._build_settings_path(dataset, setting_id))
|
|
280
|
+
return self._parse_model(MarkerSetting, data)
|
|
281
|
+
|
|
282
|
+
def create_setting(self, dataset: str, setting: MarkerSettingCreate) -> MarkerSetting:
|
|
283
|
+
"""Create a new marker setting.
|
|
284
|
+
|
|
285
|
+
Args:
|
|
286
|
+
dataset: Dataset slug.
|
|
287
|
+
setting: Marker setting configuration.
|
|
288
|
+
|
|
289
|
+
Returns:
|
|
290
|
+
Created MarkerSetting object.
|
|
291
|
+
"""
|
|
292
|
+
if not self._client.is_sync:
|
|
293
|
+
raise RuntimeError(
|
|
294
|
+
"Use create_setting_async() for async mode, or pass sync=True to client"
|
|
295
|
+
)
|
|
296
|
+
data = self._post_sync(
|
|
297
|
+
self._build_settings_path(dataset), json=setting.model_dump_for_api()
|
|
298
|
+
)
|
|
299
|
+
return self._parse_model(MarkerSetting, data)
|
|
300
|
+
|
|
301
|
+
def update_setting(
|
|
302
|
+
self, dataset: str, setting_id: str, setting: MarkerSettingCreate
|
|
303
|
+
) -> MarkerSetting:
|
|
304
|
+
"""Update an existing marker setting.
|
|
305
|
+
|
|
306
|
+
Args:
|
|
307
|
+
dataset: Dataset slug.
|
|
308
|
+
setting_id: Marker setting ID.
|
|
309
|
+
setting: Updated marker setting configuration.
|
|
310
|
+
|
|
311
|
+
Returns:
|
|
312
|
+
Updated MarkerSetting object.
|
|
313
|
+
"""
|
|
314
|
+
if not self._client.is_sync:
|
|
315
|
+
raise RuntimeError(
|
|
316
|
+
"Use update_setting_async() for async mode, or pass sync=True to client"
|
|
317
|
+
)
|
|
318
|
+
data = self._put_sync(
|
|
319
|
+
self._build_settings_path(dataset, setting_id), json=setting.model_dump_for_api()
|
|
320
|
+
)
|
|
321
|
+
return self._parse_model(MarkerSetting, data)
|
|
322
|
+
|
|
323
|
+
def delete_setting(self, dataset: str, setting_id: str) -> None:
|
|
324
|
+
"""Delete a marker setting.
|
|
325
|
+
|
|
326
|
+
Args:
|
|
327
|
+
dataset: Dataset slug.
|
|
328
|
+
setting_id: Marker setting ID.
|
|
329
|
+
"""
|
|
330
|
+
if not self._client.is_sync:
|
|
331
|
+
raise RuntimeError(
|
|
332
|
+
"Use delete_setting_async() for async mode, or pass sync=True to client"
|
|
333
|
+
)
|
|
334
|
+
self._delete_sync(self._build_settings_path(dataset, setting_id))
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"""Queries resource for Honeycomb API."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, overload
|
|
6
|
+
|
|
7
|
+
from ..models.queries import Query, QuerySpec
|
|
8
|
+
from .base import BaseResource
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from ..client import HoneycombClient
|
|
12
|
+
from ..models.query_builder import QueryBuilder
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class QueriesResource(BaseResource):
|
|
16
|
+
"""Resource for managing Honeycomb queries.
|
|
17
|
+
|
|
18
|
+
Queries define how to analyze your data. They can be used with
|
|
19
|
+
triggers, SLOs, or run directly to get results.
|
|
20
|
+
|
|
21
|
+
Example (async):
|
|
22
|
+
>>> async with HoneycombClient(api_key="...") as client:
|
|
23
|
+
... query = await client.queries.create_async(
|
|
24
|
+
... QueryBuilder()
|
|
25
|
+
... .dataset("my-dataset")
|
|
26
|
+
... .last_1_hour()
|
|
27
|
+
... .count()
|
|
28
|
+
... )
|
|
29
|
+
... query_obj = await client.queries.get_async(
|
|
30
|
+
... dataset="my-dataset",
|
|
31
|
+
... query_id=query.id
|
|
32
|
+
... )
|
|
33
|
+
|
|
34
|
+
Example (sync):
|
|
35
|
+
>>> with HoneycombClient(api_key="...", sync=True) as client:
|
|
36
|
+
... query = client.queries.create(
|
|
37
|
+
... QueryBuilder().dataset("my-dataset").count()
|
|
38
|
+
... )
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
def __init__(self, client: HoneycombClient) -> None:
|
|
42
|
+
super().__init__(client)
|
|
43
|
+
|
|
44
|
+
def _build_path(self, dataset: str, query_id: str | None = None) -> str:
|
|
45
|
+
"""Build API path for queries."""
|
|
46
|
+
base = f"/1/queries/{dataset}"
|
|
47
|
+
if query_id:
|
|
48
|
+
return f"{base}/{query_id}"
|
|
49
|
+
return base
|
|
50
|
+
|
|
51
|
+
# -------------------------------------------------------------------------
|
|
52
|
+
# Async methods
|
|
53
|
+
# -------------------------------------------------------------------------
|
|
54
|
+
|
|
55
|
+
@overload
|
|
56
|
+
async def create_async(self, spec: QueryBuilder) -> Query: ...
|
|
57
|
+
|
|
58
|
+
@overload
|
|
59
|
+
async def create_async(self, spec: QuerySpec, *, dataset: str) -> Query: ...
|
|
60
|
+
|
|
61
|
+
async def create_async(
|
|
62
|
+
self, spec: QuerySpec | QueryBuilder, *, dataset: str | None = None
|
|
63
|
+
) -> Query:
|
|
64
|
+
"""Create a new query (async).
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
spec: Query specification (QueryBuilder or QuerySpec).
|
|
68
|
+
dataset: Dataset slug. Required for QuerySpec, extracted from QueryBuilder.
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
Created Query object.
|
|
72
|
+
|
|
73
|
+
Raises:
|
|
74
|
+
HoneycombValidationError: If the query spec is invalid.
|
|
75
|
+
HoneycombNotFoundError: If the dataset doesn't exist.
|
|
76
|
+
ValueError: If dataset parameter is misused.
|
|
77
|
+
|
|
78
|
+
Example (QueryBuilder - recommended):
|
|
79
|
+
>>> query = await client.queries.create_async(
|
|
80
|
+
... QueryBuilder()
|
|
81
|
+
... .dataset("my-dataset")
|
|
82
|
+
... .last_1_hour()
|
|
83
|
+
... .count()
|
|
84
|
+
... )
|
|
85
|
+
|
|
86
|
+
Example (QuerySpec - advanced):
|
|
87
|
+
>>> query = await client.queries.create_async(
|
|
88
|
+
... QuerySpec(time_range=3600, calculations=[{"op": "COUNT"}]),
|
|
89
|
+
... dataset="my-dataset"
|
|
90
|
+
... )
|
|
91
|
+
"""
|
|
92
|
+
from ..models.query_builder import QueryBuilder
|
|
93
|
+
|
|
94
|
+
# Extract dataset based on spec type
|
|
95
|
+
if isinstance(spec, QueryBuilder):
|
|
96
|
+
if dataset is not None:
|
|
97
|
+
raise ValueError(
|
|
98
|
+
"dataset parameter not allowed with QueryBuilder. "
|
|
99
|
+
"Use .dataset() on the builder instead."
|
|
100
|
+
)
|
|
101
|
+
dataset = spec.get_dataset()
|
|
102
|
+
query_spec = spec.build()
|
|
103
|
+
else:
|
|
104
|
+
if dataset is None:
|
|
105
|
+
raise ValueError(
|
|
106
|
+
"dataset parameter required when using QuerySpec. "
|
|
107
|
+
"Pass dataset='your-dataset' or use QueryBuilder instead."
|
|
108
|
+
)
|
|
109
|
+
query_spec = spec
|
|
110
|
+
|
|
111
|
+
data = await self._post_async(
|
|
112
|
+
self._build_path(dataset), json=query_spec.model_dump_for_api()
|
|
113
|
+
)
|
|
114
|
+
return self._parse_model(Query, data)
|
|
115
|
+
|
|
116
|
+
async def get_async(self, dataset: str, query_id: str) -> Query:
|
|
117
|
+
"""Get a specific query (async).
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
dataset: The dataset slug.
|
|
121
|
+
query_id: Query ID.
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
Query object.
|
|
125
|
+
|
|
126
|
+
Raises:
|
|
127
|
+
HoneycombNotFoundError: If the query doesn't exist.
|
|
128
|
+
"""
|
|
129
|
+
data = await self._get_async(self._build_path(dataset, query_id))
|
|
130
|
+
return self._parse_model(Query, data)
|
|
131
|
+
|
|
132
|
+
async def create_with_annotation_async(
|
|
133
|
+
self,
|
|
134
|
+
builder: QueryBuilder,
|
|
135
|
+
) -> tuple[Query, str]:
|
|
136
|
+
"""Create a query and annotation together from QueryBuilder (async).
|
|
137
|
+
|
|
138
|
+
This is a convenience method for QueryBuilder instances that have
|
|
139
|
+
query names (.name() was called). It creates both the query and
|
|
140
|
+
its annotation in one call. Dataset is extracted from the builder.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
builder: QueryBuilder with .name() and .dataset() called
|
|
144
|
+
|
|
145
|
+
Returns:
|
|
146
|
+
Tuple of (Query object, annotation_id)
|
|
147
|
+
|
|
148
|
+
Raises:
|
|
149
|
+
ValueError: If the QueryBuilder doesn't have a name
|
|
150
|
+
|
|
151
|
+
Example:
|
|
152
|
+
>>> query_builder = (
|
|
153
|
+
... QueryBuilder()
|
|
154
|
+
... .dataset("my-dataset")
|
|
155
|
+
... .last_1_hour()
|
|
156
|
+
... .count()
|
|
157
|
+
... .name("Error Count")
|
|
158
|
+
... .description("Tracks errors over time")
|
|
159
|
+
... )
|
|
160
|
+
>>> query, annotation_id = await client.queries.create_with_annotation_async(
|
|
161
|
+
... query_builder
|
|
162
|
+
... )
|
|
163
|
+
>>> # Use query.id and annotation_id in BoardBuilder
|
|
164
|
+
"""
|
|
165
|
+
from ..models.query_annotations import QueryAnnotationCreate
|
|
166
|
+
|
|
167
|
+
# Check if this has a name
|
|
168
|
+
if not hasattr(builder, "has_name") or not builder.has_name():
|
|
169
|
+
raise ValueError(
|
|
170
|
+
"create_with_annotation requires a QueryBuilder with .name() called. "
|
|
171
|
+
"Use create_async() for plain QuerySpec objects."
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
# Extract dataset from builder
|
|
175
|
+
dataset = builder.get_dataset()
|
|
176
|
+
|
|
177
|
+
# Create the query first
|
|
178
|
+
query = await self.create_async(builder)
|
|
179
|
+
|
|
180
|
+
# Create the annotation
|
|
181
|
+
annotation = QueryAnnotationCreate(
|
|
182
|
+
name=builder.get_name() or "",
|
|
183
|
+
query_id=query.id,
|
|
184
|
+
description=builder.get_description(),
|
|
185
|
+
)
|
|
186
|
+
created_annotation = await self._client.query_annotations.create_async(dataset, annotation)
|
|
187
|
+
|
|
188
|
+
return (query, created_annotation.id)
|
|
189
|
+
|
|
190
|
+
# -------------------------------------------------------------------------
|
|
191
|
+
# Sync methods
|
|
192
|
+
# -------------------------------------------------------------------------
|
|
193
|
+
|
|
194
|
+
@overload
|
|
195
|
+
def create(self, spec: QueryBuilder) -> Query: ...
|
|
196
|
+
|
|
197
|
+
@overload
|
|
198
|
+
def create(self, spec: QuerySpec, *, dataset: str) -> Query: ...
|
|
199
|
+
|
|
200
|
+
def create(self, spec: QuerySpec | QueryBuilder, *, dataset: str | None = None) -> Query:
|
|
201
|
+
"""Create a new query.
|
|
202
|
+
|
|
203
|
+
Args:
|
|
204
|
+
spec: Query specification (QueryBuilder or QuerySpec).
|
|
205
|
+
dataset: Dataset slug. Required for QuerySpec, extracted from QueryBuilder.
|
|
206
|
+
|
|
207
|
+
Returns:
|
|
208
|
+
Created Query object.
|
|
209
|
+
|
|
210
|
+
Raises:
|
|
211
|
+
HoneycombValidationError: If the query spec is invalid.
|
|
212
|
+
HoneycombNotFoundError: If the dataset doesn't exist.
|
|
213
|
+
ValueError: If dataset parameter is misused.
|
|
214
|
+
"""
|
|
215
|
+
if not self._client.is_sync:
|
|
216
|
+
raise RuntimeError("Use create_async() for async mode, or pass sync=True to client")
|
|
217
|
+
|
|
218
|
+
from ..models.query_builder import QueryBuilder
|
|
219
|
+
|
|
220
|
+
# Extract dataset based on spec type
|
|
221
|
+
if isinstance(spec, QueryBuilder):
|
|
222
|
+
if dataset is not None:
|
|
223
|
+
raise ValueError(
|
|
224
|
+
"dataset parameter not allowed with QueryBuilder. "
|
|
225
|
+
"Use .dataset() on the builder instead."
|
|
226
|
+
)
|
|
227
|
+
dataset = spec.get_dataset()
|
|
228
|
+
query_spec = spec.build()
|
|
229
|
+
else:
|
|
230
|
+
if dataset is None:
|
|
231
|
+
raise ValueError(
|
|
232
|
+
"dataset parameter required when using QuerySpec. "
|
|
233
|
+
"Pass dataset='your-dataset' or use QueryBuilder instead."
|
|
234
|
+
)
|
|
235
|
+
query_spec = spec
|
|
236
|
+
|
|
237
|
+
data = self._post_sync(self._build_path(dataset), json=query_spec.model_dump_for_api())
|
|
238
|
+
return self._parse_model(Query, data)
|
|
239
|
+
|
|
240
|
+
def get(self, dataset: str, query_id: str) -> Query:
|
|
241
|
+
"""Get a specific query.
|
|
242
|
+
|
|
243
|
+
Args:
|
|
244
|
+
dataset: The dataset slug.
|
|
245
|
+
query_id: Query ID.
|
|
246
|
+
|
|
247
|
+
Returns:
|
|
248
|
+
Query object.
|
|
249
|
+
|
|
250
|
+
Raises:
|
|
251
|
+
HoneycombNotFoundError: If the query doesn't exist.
|
|
252
|
+
"""
|
|
253
|
+
if not self._client.is_sync:
|
|
254
|
+
raise RuntimeError("Use get_async() for async mode, or pass sync=True to client")
|
|
255
|
+
data = self._get_sync(self._build_path(dataset, query_id))
|
|
256
|
+
return self._parse_model(Query, data)
|