honeycomb-api 0.1.0__py3-none-any.whl → 0.5.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- honeycomb/__init__.py +9 -0
- honeycomb/_generated/api/auth/get_auth.py +2 -5
- honeycomb/_generated/api/auth/get_v2_auth.py +2 -5
- honeycomb/_generated/api/boards/create_board.py +6 -5
- honeycomb/_generated/api/boards/create_board_view.py +14 -9
- honeycomb/_generated/api/boards/delete_board.py +2 -5
- honeycomb/_generated/api/boards/delete_board_view.py +2 -5
- honeycomb/_generated/api/boards/get_board.py +2 -5
- honeycomb/_generated/api/boards/get_board_view.py +2 -5
- honeycomb/_generated/api/boards/list_board_views.py +10 -9
- honeycomb/_generated/api/boards/list_boards.py +2 -5
- honeycomb/_generated/api/boards/update_board.py +10 -5
- honeycomb/_generated/api/boards/update_board_view.py +2 -5
- honeycomb/_generated/api/burn_alerts/create_burn_alert.py +6 -8
- honeycomb/_generated/api/burn_alerts/delete_burn_alert.py +2 -5
- honeycomb/_generated/api/burn_alerts/get_burn_alert.py +2 -5
- honeycomb/_generated/api/burn_alerts/list_burn_alerts_by_slo.py +2 -5
- honeycomb/_generated/api/calculated_fields/create_calculated_field.py +2 -5
- honeycomb/_generated/api/calculated_fields/delete_calculated_field.py +2 -5
- honeycomb/_generated/api/calculated_fields/get_calculated_field.py +2 -5
- honeycomb/_generated/api/calculated_fields/list_calculated_fields.py +2 -8
- honeycomb/_generated/api/calculated_fields/update_calculated_field.py +2 -5
- honeycomb/_generated/api/columns/create_column.py +2 -5
- honeycomb/_generated/api/columns/delete_column.py +2 -5
- honeycomb/_generated/api/columns/get_column.py +2 -5
- honeycomb/_generated/api/columns/list_columns.py +2 -8
- honeycomb/_generated/api/columns/update_column.py +2 -5
- honeycomb/_generated/api/dataset_definitions/list_dataset_definitions.py +2 -5
- honeycomb/_generated/api/dataset_definitions/patch_dataset_definitions.py +2 -5
- honeycomb/_generated/api/datasets/create_dataset.py +2 -5
- honeycomb/_generated/api/datasets/delete_dataset.py +2 -5
- honeycomb/_generated/api/datasets/get_dataset.py +2 -5
- honeycomb/_generated/api/datasets/list_datasets.py +2 -5
- honeycomb/_generated/api/datasets/update_dataset.py +2 -5
- honeycomb/_generated/api/enhance/record_enhance_indexer_usage.py +4 -6
- honeycomb/_generated/api/environments/create_environment.py +2 -5
- honeycomb/_generated/api/environments/delete_environment.py +2 -5
- honeycomb/_generated/api/environments/get_environment.py +2 -5
- honeycomb/_generated/api/environments/list_environments.py +2 -7
- honeycomb/_generated/api/environments/update_environment.py +2 -5
- honeycomb/_generated/api/events/create_event.py +2 -7
- honeycomb/_generated/api/events/create_events.py +7 -11
- honeycomb/_generated/api/key_management/create_api_key.py +2 -5
- honeycomb/_generated/api/key_management/delete_api_key.py +2 -5
- honeycomb/_generated/api/key_management/get_api_key.py +2 -5
- honeycomb/_generated/api/key_management/list_api_keys.py +2 -7
- honeycomb/_generated/api/key_management/update_api_key.py +2 -5
- honeycomb/_generated/api/kinesis_events/create_kinesis_events.py +2 -5
- honeycomb/_generated/api/marker_settings/create_marker_setting.py +2 -5
- honeycomb/_generated/api/marker_settings/delete_marker_settings.py +2 -5
- honeycomb/_generated/api/marker_settings/list_marker_settings.py +2 -5
- honeycomb/_generated/api/marker_settings/update_marker_settings.py +2 -5
- honeycomb/_generated/api/markers/create_marker.py +2 -5
- honeycomb/_generated/api/markers/create_marker_v2.py +2 -5
- honeycomb/_generated/api/markers/delete_marker.py +2 -5
- honeycomb/_generated/api/markers/get_marker.py +2 -5
- honeycomb/_generated/api/markers/update_marker.py +2 -5
- honeycomb/_generated/api/markers/update_marker_v2.py +2 -5
- honeycomb/_generated/api/pipelines/get_pipeline_configuration.py +4 -8
- honeycomb/_generated/api/pipelines/record_pipeline_usage.py +4 -6
- honeycomb/_generated/api/pipelines/update_pipeline_configuration_rollout.py +6 -7
- honeycomb/_generated/api/queries/create_query.py +2 -5
- honeycomb/_generated/api/queries/get_query.py +2 -5
- honeycomb/_generated/api/query_annotations/create_query_annotation.py +2 -5
- honeycomb/_generated/api/query_annotations/delete_query_annotation.py +2 -5
- honeycomb/_generated/api/query_annotations/get_query_annotation.py +2 -5
- honeycomb/_generated/api/query_annotations/list_query_annotations.py +2 -7
- honeycomb/_generated/api/query_annotations/update_query_annotation.py +2 -5
- honeycomb/_generated/api/query_data/create_query_result.py +2 -5
- honeycomb/_generated/api/query_data/get_query_result.py +2 -5
- honeycomb/_generated/api/recipients/create_recipient.py +2 -6
- honeycomb/_generated/api/recipients/delete_recipient.py +2 -5
- honeycomb/_generated/api/recipients/get_recipient.py +2 -6
- honeycomb/_generated/api/recipients/list_recipients.py +2 -6
- honeycomb/_generated/api/recipients/update_recipient.py +2 -6
- honeycomb/_generated/api/reporting/get_slo_history.py +2 -5
- honeycomb/_generated/api/service_maps/create_map_dependency_request.py +6 -9
- honeycomb/_generated/api/service_maps/get_map_dependencies.py +2 -7
- honeycomb/_generated/api/sl_os/create_slo.py +2 -5
- honeycomb/_generated/api/sl_os/delete_slo.py +2 -5
- honeycomb/_generated/api/sl_os/get_slo.py +2 -8
- honeycomb/_generated/api/sl_os/list_slos.py +2 -5
- honeycomb/_generated/api/sl_os/update_slo.py +2 -5
- honeycomb/_generated/api/triggers/create_trigger.py +2 -6
- honeycomb/_generated/api/triggers/delete_trigger.py +2 -5
- honeycomb/_generated/api/triggers/get_trigger.py +2 -5
- honeycomb/_generated/api/triggers/list_triggers.py +2 -5
- honeycomb/_generated/api/triggers/list_triggers_with_recipient.py +2 -5
- honeycomb/_generated/api/triggers/update_trigger.py +2 -5
- honeycomb/_generated/client.py +2 -5
- honeycomb/_generated/models/__init__.py +195 -88
- honeycomb/_generated/models/api_key_create_request.py +6 -5
- honeycomb/_generated/models/api_key_create_request_data.py +15 -11
- honeycomb/_generated/models/api_key_create_request_data_relationships.py +2 -3
- honeycomb/_generated/models/api_key_create_request_data_type.py +1 -0
- honeycomb/_generated/models/api_key_list_response.py +2 -5
- honeycomb/_generated/models/api_key_object.py +14 -14
- honeycomb/_generated/models/api_key_object_links.py +2 -9
- honeycomb/_generated/models/api_key_object_relationships.py +5 -9
- honeycomb/_generated/models/api_key_object_type.py +1 -0
- honeycomb/_generated/models/api_key_response.py +2 -3
- honeycomb/_generated/models/api_key_update_request.py +15 -17
- honeycomb/_generated/models/auth.py +2 -5
- honeycomb/_generated/models/auth_api_key_access.py +2 -9
- honeycomb/_generated/models/auth_environment.py +2 -9
- honeycomb/_generated/models/auth_team.py +2 -9
- honeycomb/_generated/models/auth_type.py +1 -0
- honeycomb/_generated/models/auth_v2_response.py +5 -8
- honeycomb/_generated/models/auth_v2_response_data.py +14 -11
- honeycomb/_generated/models/auth_v2_response_data_attributes.py +10 -9
- honeycomb/_generated/models/auth_v2_response_data_attributes_key_type.py +1 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes_timestamps.py +4 -12
- honeycomb/_generated/models/auth_v2_response_data_relationships.py +1 -7
- honeycomb/_generated/models/auth_v2_response_data_type.py +1 -0
- honeycomb/_generated/models/base_trigger.py +21 -18
- honeycomb/_generated/models/base_trigger_alert_type.py +1 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0.py +5 -9
- honeycomb/_generated/models/base_trigger_baseline_details_type_0_offset_minutes.py +1 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0_type.py +1 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule.py +8 -6
- honeycomb/_generated/models/base_trigger_evaluation_schedule_type.py +1 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_window.py +4 -9
- honeycomb/_generated/models/base_trigger_evaluation_schedule_window_days_of_week_item.py +1 -0
- honeycomb/_generated/models/base_trigger_threshold.py +2 -9
- honeycomb/_generated/models/base_trigger_threshold_op.py +1 -0
- honeycomb/_generated/models/batch_event.py +2 -5
- honeycomb/_generated/models/board.py +15 -17
- honeycomb/_generated/models/board_layout_generation.py +1 -0
- honeycomb/_generated/models/board_links.py +2 -9
- honeycomb/_generated/models/board_panel_position.py +2 -9
- honeycomb/_generated/models/board_query_visualization_settings.py +8 -8
- honeycomb/_generated/models/board_query_visualization_settings_charts_item.py +4 -10
- honeycomb/_generated/models/board_query_visualization_settings_charts_item_chart_type.py +1 -0
- honeycomb/_generated/models/board_type.py +1 -0
- honeycomb/_generated/models/board_view_filter.py +2 -9
- honeycomb/_generated/models/board_view_filter_operation.py +1 -0
- honeycomb/_generated/models/board_view_response.py +2 -5
- honeycomb/_generated/models/budget_rate.py +4 -12
- honeycomb/_generated/models/budget_rate_alert_type.py +1 -0
- honeycomb/_generated/models/burn_alert_shared_params.py +4 -12
- honeycomb/_generated/models/calculated_field.py +2 -9
- honeycomb/_generated/models/configuration_key_attributes.py +16 -12
- honeycomb/_generated/models/configuration_key_attributes_key_type.py +1 -0
- honeycomb/_generated/models/configuration_key_attributes_permissions.py +172 -0
- honeycomb/_generated/models/configuration_key_attributes_timestamps.py +4 -12
- honeycomb/_generated/models/configuration_key_request.py +101 -0
- honeycomb/_generated/models/configuration_key_request_attributes.py +107 -0
- honeycomb/_generated/models/configuration_key_request_attributes_permissions.py +168 -0
- honeycomb/_generated/models/configuration_key_request_type.py +8 -0
- honeycomb/_generated/models/create_board_view_request.py +2 -3
- honeycomb/_generated/models/create_budget_rate_burn_alert_request.py +10 -10
- honeycomb/_generated/models/create_budget_rate_burn_alert_request_slo.py +1 -7
- honeycomb/_generated/models/create_column.py +2 -9
- honeycomb/_generated/models/create_column_type.py +1 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request.py +8 -6
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data.py +10 -7
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes.py +8 -8
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data.py +8 -6
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item.py +8 -6
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +8 -6
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +8 -8
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +10 -7
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +1 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +8 -6
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item.py +8 -6
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item_value.py +2 -9
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_type.py +1 -0
- honeycomb/_generated/models/create_environment_request.py +8 -6
- honeycomb/_generated/models/create_environment_request_data.py +10 -7
- honeycomb/_generated/models/create_environment_request_data_attributes.py +2 -9
- honeycomb/_generated/models/create_environment_request_data_type.py +1 -0
- honeycomb/_generated/models/create_events_content_encoding.py +1 -0
- honeycomb/_generated/models/create_events_response_200_item.py +2 -9
- honeycomb/_generated/models/create_exhaustion_time_burn_alert_request.py +10 -10
- honeycomb/_generated/models/create_exhaustion_time_burn_alert_request_slo.py +1 -7
- honeycomb/_generated/models/create_map_dependencies_request.py +2 -5
- honeycomb/_generated/models/create_map_dependencies_response.py +4 -10
- honeycomb/_generated/models/create_map_dependencies_response_status.py +1 -0
- honeycomb/_generated/models/create_pipeline_health_record_request.py +8 -6
- honeycomb/_generated/models/create_pipeline_health_record_request_data.py +10 -7
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes.py +8 -8
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data.py +8 -6
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item.py +8 -6
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +8 -6
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +8 -8
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +10 -7
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +1 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +8 -6
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item.py +8 -6
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item_value.py +2 -9
- honeycomb/_generated/models/create_pipeline_health_record_request_data_type.py +1 -0
- honeycomb/_generated/models/create_query_result_request.py +2 -9
- honeycomb/_generated/models/dataset.py +2 -6
- honeycomb/_generated/models/dataset_creation_payload.py +2 -9
- honeycomb/_generated/models/dataset_definition_type_1.py +4 -10
- honeycomb/_generated/models/dataset_definition_type_1_column_type.py +1 -0
- honeycomb/_generated/models/dataset_definitions.py +2 -6
- honeycomb/_generated/models/dataset_relationship.py +2 -3
- honeycomb/_generated/models/dataset_relationship_data.py +2 -8
- honeycomb/_generated/models/dataset_relationship_data_type.py +1 -0
- honeycomb/_generated/models/dataset_settings.py +2 -9
- honeycomb/_generated/models/dataset_update_payload.py +8 -8
- honeycomb/_generated/models/dataset_update_payload_settings.py +2 -9
- honeycomb/_generated/models/detailed_error.py +2 -9
- honeycomb/_generated/models/email_recipient.py +4 -7
- honeycomb/_generated/models/email_recipient_details.py +1 -7
- honeycomb/_generated/models/email_recipient_type.py +1 -0
- honeycomb/_generated/models/environment.py +6 -7
- honeycomb/_generated/models/environment_attributes.py +11 -9
- honeycomb/_generated/models/environment_attributes_color_type_1.py +1 -0
- honeycomb/_generated/models/environment_attributes_settings.py +1 -7
- honeycomb/_generated/models/environment_color.py +1 -0
- honeycomb/_generated/models/environment_links.py +1 -7
- honeycomb/_generated/models/environment_list_response.py +2 -5
- honeycomb/_generated/models/environment_relationship.py +8 -6
- honeycomb/_generated/models/environment_relationship_data.py +3 -8
- honeycomb/_generated/models/environment_relationship_data_type.py +1 -0
- honeycomb/_generated/models/environment_response.py +2 -3
- honeycomb/_generated/models/environment_type.py +1 -0
- honeycomb/_generated/models/error.py +2 -9
- honeycomb/_generated/models/event.py +2 -8
- honeycomb/_generated/models/exhaustion_time.py +4 -12
- honeycomb/_generated/models/exhaustion_time_alert_type.py +1 -0
- honeycomb/_generated/models/exhaustion_time_burn_alert_list_response.py +10 -10
- honeycomb/_generated/models/exhaustion_time_burn_alert_list_response_slo.py +2 -9
- honeycomb/_generated/models/filter_op.py +1 -0
- honeycomb/_generated/models/get_map_dependencies_response.py +7 -10
- honeycomb/_generated/models/get_map_dependencies_response_status.py +1 -0
- honeycomb/_generated/models/having_calculate_op.py +1 -0
- honeycomb/_generated/models/having_op.py +1 -0
- honeycomb/_generated/models/included_resource.py +6 -7
- honeycomb/_generated/models/included_resource_attributes.py +1 -7
- honeycomb/_generated/models/ingest_key_attributes.py +14 -11
- honeycomb/_generated/models/ingest_key_attributes_key_type.py +1 -0
- honeycomb/_generated/models/ingest_key_attributes_permissions.py +2 -9
- honeycomb/_generated/models/ingest_key_attributes_timestamps.py +4 -12
- honeycomb/_generated/models/ingest_key_request.py +100 -0
- honeycomb/_generated/models/ingest_key_request_attributes.py +75 -0
- honeycomb/_generated/models/ingest_key_request_type.py +8 -0
- honeycomb/_generated/models/ingest_key_type.py +2 -9
- honeycomb/_generated/models/ingest_key_type_key_type.py +1 -0
- honeycomb/_generated/models/jsonapi_error_source.py +2 -9
- honeycomb/_generated/models/kinesis_event.py +2 -5
- honeycomb/_generated/models/kinesis_event_record.py +2 -9
- honeycomb/_generated/models/kinesis_response.py +2 -9
- honeycomb/_generated/models/list_api_keys_filtertype.py +1 -0
- honeycomb/_generated/models/map_dependency.py +2 -5
- honeycomb/_generated/models/map_node.py +2 -9
- honeycomb/_generated/models/map_node_type.py +1 -0
- honeycomb/_generated/models/marker.py +2 -9
- honeycomb/_generated/models/marker_create_request.py +2 -3
- honeycomb/_generated/models/marker_create_request_data.py +16 -10
- honeycomb/_generated/models/marker_create_request_data_attributes.py +2 -9
- honeycomb/_generated/models/marker_create_request_data_relationships.py +2 -3
- honeycomb/_generated/models/marker_create_request_data_type.py +1 -0
- honeycomb/_generated/models/marker_object.py +7 -8
- honeycomb/_generated/models/marker_object_attributes.py +8 -8
- honeycomb/_generated/models/marker_object_attributes_timestamps.py +4 -12
- honeycomb/_generated/models/marker_object_links.py +2 -9
- honeycomb/_generated/models/marker_object_relationships.py +8 -8
- honeycomb/_generated/models/marker_object_relationships_dataset.py +8 -9
- honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0.py +4 -10
- honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0_type.py +1 -0
- honeycomb/_generated/models/marker_object_type.py +1 -0
- honeycomb/_generated/models/marker_response.py +2 -3
- honeycomb/_generated/models/marker_setting.py +2 -10
- honeycomb/_generated/models/marker_update_request.py +2 -3
- honeycomb/_generated/models/marker_update_request_data.py +16 -10
- honeycomb/_generated/models/marker_update_request_data_attributes.py +2 -9
- honeycomb/_generated/models/marker_update_request_data_relationships.py +2 -3
- honeycomb/_generated/models/marker_update_request_data_type.py +1 -0
- honeycomb/_generated/models/ms_teams_recipient.py +4 -7
- honeycomb/_generated/models/ms_teams_recipient_details.py +1 -7
- honeycomb/_generated/models/ms_teams_recipient_type.py +1 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient.py +12 -11
- honeycomb/_generated/models/ms_teams_workflow_recipient_details.py +1 -7
- honeycomb/_generated/models/ms_teams_workflow_recipient_type.py +1 -0
- honeycomb/_generated/models/notification_recipient.py +8 -8
- honeycomb/_generated/models/notification_recipient_details.py +10 -9
- honeycomb/_generated/models/notification_recipient_details_pagerduty_severity.py +1 -0
- honeycomb/_generated/models/notification_recipient_details_variables_item.py +2 -9
- honeycomb/_generated/models/pager_duty_recipient.py +8 -9
- honeycomb/_generated/models/pager_duty_recipient_details.py +1 -7
- honeycomb/_generated/models/pager_duty_recipient_type.py +1 -0
- honeycomb/_generated/models/pagination_links.py +2 -8
- honeycomb/_generated/models/payload_template.py +2 -9
- honeycomb/_generated/models/pipeline_configuration_response.py +16 -10
- honeycomb/_generated/models/pipeline_configuration_response_attributes.py +8 -8
- honeycomb/_generated/models/pipeline_configuration_response_attributes_configs_item.py +1 -7
- honeycomb/_generated/models/pipeline_configuration_response_links.py +2 -9
- honeycomb/_generated/models/pipeline_configuration_response_type.py +1 -0
- honeycomb/_generated/models/pipeline_configuration_rollout.py +16 -10
- honeycomb/_generated/models/pipeline_configuration_rollout_attributes.py +3 -8
- honeycomb/_generated/models/pipeline_configuration_rollout_attributes_status.py +1 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_links.py +2 -9
- honeycomb/_generated/models/pipeline_configuration_rollout_type.py +1 -0
- honeycomb/_generated/models/preset_filter.py +1 -7
- honeycomb/_generated/models/query.py +11 -11
- honeycomb/_generated/models/query_annotation.py +4 -12
- honeycomb/_generated/models/query_annotation_source.py +1 -0
- honeycomb/_generated/models/query_calculated_fields_item.py +1 -7
- honeycomb/_generated/models/query_calculations_item.py +2 -10
- honeycomb/_generated/models/query_compare_time_offset_seconds.py +1 -0
- honeycomb/_generated/models/query_filter_combination.py +1 -0
- honeycomb/_generated/models/query_filters_item.py +2 -11
- honeycomb/_generated/models/query_havings_item.py +2 -10
- honeycomb/_generated/models/query_op.py +1 -0
- honeycomb/_generated/models/query_orders_item.py +2 -9
- honeycomb/_generated/models/query_orders_item_order.py +1 -0
- honeycomb/_generated/models/query_panel.py +2 -6
- honeycomb/_generated/models/query_panel_query_panel.py +10 -9
- honeycomb/_generated/models/query_panel_query_panel_query_style.py +1 -0
- honeycomb/_generated/models/query_result.py +2 -5
- honeycomb/_generated/models/query_result_details.py +5 -8
- honeycomb/_generated/models/query_result_details_data.py +5 -8
- honeycomb/_generated/models/query_result_details_links.py +2 -9
- honeycomb/_generated/models/query_result_links.py +2 -9
- honeycomb/_generated/models/query_results_data.py +2 -5
- honeycomb/_generated/models/query_results_data_data.py +2 -8
- honeycomb/_generated/models/query_results_series.py +2 -5
- honeycomb/_generated/models/recipient_properties.py +4 -12
- honeycomb/_generated/models/recipient_type.py +1 -0
- honeycomb/_generated/models/slack_recipient.py +4 -7
- honeycomb/_generated/models/slack_recipient_details.py +1 -7
- honeycomb/_generated/models/slack_recipient_type.py +1 -0
- honeycomb/_generated/models/slo.py +4 -8
- honeycomb/_generated/models/slo_create.py +4 -8
- honeycomb/_generated/models/slo_create_sli.py +1 -7
- honeycomb/_generated/models/slo_detailed_response.py +4 -8
- honeycomb/_generated/models/slo_detailed_response_status.py +1 -0
- honeycomb/_generated/models/slo_history.py +2 -9
- honeycomb/_generated/models/slo_history_request.py +2 -8
- honeycomb/_generated/models/slo_history_response.py +2 -3
- honeycomb/_generated/models/slo_panel.py +2 -6
- honeycomb/_generated/models/slo_panel_slo_panel.py +2 -9
- honeycomb/_generated/models/slo_sli.py +1 -7
- honeycomb/_generated/models/tag.py +1 -7
- honeycomb/_generated/models/team_relationship.py +2 -3
- honeycomb/_generated/models/team_relationship_team.py +6 -5
- honeycomb/_generated/models/team_relationship_team_data.py +3 -8
- honeycomb/_generated/models/team_relationship_team_data_type.py +1 -0
- honeycomb/_generated/models/template_variable_definition.py +2 -9
- honeycomb/_generated/models/text_panel.py +2 -6
- honeycomb/_generated/models/text_panel_text_panel.py +1 -7
- honeycomb/_generated/models/trigger_response.py +27 -21
- honeycomb/_generated/models/trigger_with_inline_query.py +27 -21
- honeycomb/_generated/models/trigger_with_inline_query_query.py +1 -7
- honeycomb/_generated/models/trigger_with_query_reference.py +21 -18
- honeycomb/_generated/models/update_board_view_request.py +2 -5
- honeycomb/_generated/models/update_environment_request.py +8 -6
- honeycomb/_generated/models/update_environment_request_data.py +10 -7
- honeycomb/_generated/models/update_environment_request_data_attributes.py +8 -8
- honeycomb/_generated/models/update_environment_request_data_attributes_settings.py +2 -9
- honeycomb/_generated/models/update_environment_request_data_type.py +1 -0
- honeycomb/_generated/models/update_exhaustion_time_burn_alert_request.py +4 -7
- honeycomb/_generated/models/update_pipeline_configuration_rollout.py +10 -7
- honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes.py +3 -8
- honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes_status.py +1 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request.py +8 -6
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data.py +10 -7
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes.py +3 -8
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes_status.py +1 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_type.py +1 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_response.py +8 -6
- honeycomb/_generated/models/update_pipeline_configuration_rollout_type.py +1 -0
- honeycomb/_generated/models/user_relationship.py +2 -3
- honeycomb/_generated/models/user_relationship_data.py +2 -8
- honeycomb/_generated/models/user_relationship_data_type.py +1 -0
- honeycomb/_generated/models/validation_error.py +8 -8
- honeycomb/_generated/models/validation_error_type_detail_item.py +4 -10
- honeycomb/_generated/models/validation_error_type_detail_item_code.py +1 -0
- honeycomb/_generated/models/webhook_header.py +2 -9
- honeycomb/_generated/models/webhook_recipient.py +4 -7
- honeycomb/_generated/models/webhook_recipient_details.py +8 -8
- honeycomb/_generated/models/webhook_recipient_details_webhook_payloads.py +12 -10
- honeycomb/_generated/models/webhook_recipient_details_webhook_payloads_payload_templates.py +2 -5
- honeycomb/_generated/models/webhook_recipient_type.py +1 -0
- honeycomb/_generated/types.py +1 -1
- honeycomb/cli/__init__.py +85 -0
- honeycomb/cli/api_keys.py +205 -0
- honeycomb/cli/auth.py +70 -0
- honeycomb/cli/boards.py +203 -0
- honeycomb/cli/columns.py +256 -0
- honeycomb/cli/config.py +259 -0
- honeycomb/cli/datasets.py +186 -0
- honeycomb/cli/derived_columns.py +222 -0
- honeycomb/cli/environments.py +240 -0
- honeycomb/cli/formatters.py +242 -0
- honeycomb/cli/markers.py +151 -0
- honeycomb/cli/queries.py +380 -0
- honeycomb/cli/recipients.py +211 -0
- honeycomb/cli/slos.py +338 -0
- honeycomb/cli/triggers.py +271 -0
- honeycomb/client.py +13 -7
- honeycomb/models/__init__.py +18 -3
- honeycomb/models/api_keys.py +49 -5
- honeycomb/models/auth.py +71 -0
- honeycomb/models/board_builder.py +97 -25
- honeycomb/models/boards.py +95 -1
- honeycomb/models/datasets.py +42 -0
- honeycomb/models/queries.py +21 -0
- honeycomb/models/query_builder.py +119 -59
- honeycomb/models/recipient_builder.py +51 -4
- honeycomb/models/slo_builder.py +24 -19
- honeycomb/models/slos.py +50 -3
- honeycomb/models/tool_inputs.py +630 -0
- honeycomb/models/triggers.py +39 -9
- honeycomb/resources/__init__.py +2 -0
- honeycomb/resources/api_keys.py +66 -29
- honeycomb/resources/auth.py +97 -0
- honeycomb/resources/boards.py +272 -18
- honeycomb/resources/datasets.py +49 -11
- honeycomb/resources/environments.py +54 -31
- honeycomb/resources/slos.py +87 -61
- honeycomb/tools/__main__.py +40 -4
- honeycomb/tools/builders.py +235 -150
- honeycomb/tools/descriptions.py +175 -7
- honeycomb/tools/executor.py +212 -25
- honeycomb/tools/generator.py +61 -2264
- honeycomb/tools/resources/__init__.py +42 -0
- honeycomb/tools/resources/api_keys.py +249 -0
- honeycomb/tools/resources/auth.py +98 -0
- honeycomb/tools/resources/boards.py +313 -0
- honeycomb/tools/resources/burn_alerts.py +278 -0
- honeycomb/tools/resources/columns.py +257 -0
- honeycomb/tools/resources/datasets.py +215 -0
- honeycomb/tools/resources/derived_columns.py +311 -0
- honeycomb/tools/resources/environments.py +211 -0
- honeycomb/tools/resources/events.py +158 -0
- honeycomb/tools/resources/marker_settings.py +216 -0
- honeycomb/tools/resources/markers.py +197 -0
- honeycomb/tools/resources/queries.py +220 -0
- honeycomb/tools/resources/recipients.py +297 -0
- honeycomb/tools/resources/service_map.py +110 -0
- honeycomb/tools/resources/slos.py +276 -0
- honeycomb/tools/resources/triggers.py +328 -0
- honeycomb/tools/schemas.py +81 -0
- {honeycomb_api-0.1.0.dist-info → honeycomb_api-0.5.3.dist-info}/METADATA +33 -8
- honeycomb_api-0.5.3.dist-info/RECORD +497 -0
- honeycomb_api-0.5.3.dist-info/entry_points.txt +5 -0
- honeycomb_api-0.1.0.dist-info/RECORD +0 -453
- {honeycomb_api-0.1.0.dist-info → honeycomb_api-0.5.3.dist-info}/WHEEL +0 -0
- {honeycomb_api-0.1.0.dist-info → honeycomb_api-0.5.3.dist-info}/licenses/LICENSE +0 -0
honeycomb/tools/descriptions.py
CHANGED
|
@@ -70,6 +70,9 @@ SLO_DESCRIPTIONS = {
|
|
|
70
70
|
"Use this when defining reliability targets for services, such as 99.9% availability or p99 latency targets. "
|
|
71
71
|
"Requires a dataset, SLO name, target (as percentage, per-million, or nines), time period in days, and an SLI definition. "
|
|
72
72
|
"For the SLI, provide an alias and optionally an expression - if expression is provided, a new derived column is created inline; if only alias is provided, it uses an existing derived column. "
|
|
73
|
+
"SLI EXPRESSION SYNTAX: Must return boolean (1/0 coerced). Use $ prefix for columns (case-sensitive). "
|
|
74
|
+
"Example: LT($status_code, 500) or AND(LT($status_code, 500), LT($duration_ms, 1000)). "
|
|
75
|
+
"See honeycomb_create_derived_column for full expression syntax (conditionals, comparisons, regex, etc.). "
|
|
73
76
|
"You can also add burn alerts inline to notify when error budget depletes too quickly. "
|
|
74
77
|
"Supports both single-dataset and multi-dataset SLOs."
|
|
75
78
|
),
|
|
@@ -251,6 +254,55 @@ RECIPIENT_DESCRIPTIONS = {
|
|
|
251
254
|
# Derived Columns
|
|
252
255
|
# ==============================================================================
|
|
253
256
|
|
|
257
|
+
# Shared syntax reference for derived column descriptions
|
|
258
|
+
_DERIVED_COLUMN_SYNTAX_GUIDE = """
|
|
259
|
+
EXPRESSION SYNTAX REFERENCE:
|
|
260
|
+
- Column refs: $column_name or $"column with spaces" (CASE-SENSITIVE)
|
|
261
|
+
- Strings: double quotes ("value")
|
|
262
|
+
- Regex patterns: backticks (`pattern`)
|
|
263
|
+
- DCs operate on ONE ROW at a time - they are NOT aggregation functions
|
|
264
|
+
|
|
265
|
+
CONDITIONALS:
|
|
266
|
+
- IF(cond, true_val, false_val) - e.g., IF(LT($status, 400), "ok", "error")
|
|
267
|
+
- SWITCH($field, "case1", result1, "case2", result2, default) - string matching
|
|
268
|
+
- COALESCE(a, b, c) - first non-null value
|
|
269
|
+
|
|
270
|
+
COMPARISONS (return bool):
|
|
271
|
+
- LT, LTE, GT, GTE - e.g., LT($duration_ms, 1000)
|
|
272
|
+
- EQUALS($a, $b) - e.g., EQUALS($method, "GET")
|
|
273
|
+
- IN($field, val1, val2, ...) - e.g., IN($status, 200, 201, 204)
|
|
274
|
+
|
|
275
|
+
BOOLEAN:
|
|
276
|
+
- EXISTS($field) - true if field is non-null
|
|
277
|
+
- NOT(cond), AND(a, b, ...), OR(a, b, ...)
|
|
278
|
+
|
|
279
|
+
MATH: MIN, MAX, SUM, SUB, MUL, DIV, MOD, LOG10
|
|
280
|
+
|
|
281
|
+
STRING:
|
|
282
|
+
- CONCAT($a, " ", $b) - join strings
|
|
283
|
+
- STARTS_WITH($str, "prefix"), ENDS_WITH, CONTAINS - return bool
|
|
284
|
+
- TO_LOWER($str), LENGTH($str)
|
|
285
|
+
|
|
286
|
+
REGEX (use backticks for patterns):
|
|
287
|
+
- REG_MATCH($str, `pattern`) - returns bool
|
|
288
|
+
- REG_VALUE($str, `^/api/(.+)`) - extracts first capture group
|
|
289
|
+
- REG_COUNT($str, `pattern`) - count matches
|
|
290
|
+
|
|
291
|
+
TIME:
|
|
292
|
+
- EVENT_TIMESTAMP() - event time as Unix timestamp
|
|
293
|
+
- UNIX_TIMESTAMP($field) - parse field as timestamp
|
|
294
|
+
- FORMAT_TIME("%Y-%m-%d", $timestamp_field) - strftime formatting
|
|
295
|
+
|
|
296
|
+
DATA: BUCKET($val, size) - numeric bucketing
|
|
297
|
+
|
|
298
|
+
TYPE CONVERSION: INT(), FLOAT(), BOOL(), STRING()
|
|
299
|
+
|
|
300
|
+
COMMON PATTERNS:
|
|
301
|
+
- SLI for SLOs (MUST return boolean; 1/0 coerced to true/false): LT($status_code, 500)
|
|
302
|
+
- Root span detection: NOT(EXISTS($trace.parent_id))
|
|
303
|
+
- Error classification: IF(GTE($status, 500), "server_error", IF(GTE($status, 400), "client_error", "success"))
|
|
304
|
+
"""
|
|
305
|
+
|
|
254
306
|
DERIVED_COLUMN_DESCRIPTIONS = {
|
|
255
307
|
"honeycomb_list_derived_columns": (
|
|
256
308
|
"Lists all derived columns (calculated fields) in a dataset. "
|
|
@@ -268,15 +320,16 @@ DERIVED_COLUMN_DESCRIPTIONS = {
|
|
|
268
320
|
"Creates a new standalone derived column that calculates values from event fields using expressions. "
|
|
269
321
|
"Use this for general-purpose computed metrics, data normalization, or calculations that will be used in multiple queries. "
|
|
270
322
|
"NOTE: If you are creating a derived column specifically for an SLO, use honeycomb_create_slo instead with an inline SLI expression - it creates both in one operation. "
|
|
271
|
-
"Requires the dataset slug (use '__all__' for environment-wide), an alias (the column name), and an expression
|
|
272
|
-
"
|
|
273
|
-
|
|
323
|
+
"Requires the dataset slug (use '__all__' for environment-wide), an alias (the column name), and an expression. "
|
|
324
|
+
"Optional description parameter documents the column's purpose for team members. "
|
|
325
|
+
+ _DERIVED_COLUMN_SYNTAX_GUIDE
|
|
274
326
|
),
|
|
275
327
|
"honeycomb_update_derived_column": (
|
|
276
328
|
"Updates an existing derived column's alias, expression, or description. "
|
|
277
329
|
"Use this to fix calculation logic, rename computed fields, or improve documentation as your understanding evolves. "
|
|
278
330
|
"Requires the dataset slug, derived column ID, and the complete updated configuration. "
|
|
279
|
-
"Note: Changing the expression only affects new queries - existing query results are not recalculated."
|
|
331
|
+
"Note: Changing the expression only affects new queries - existing query results are not recalculated. "
|
|
332
|
+
+ _DERIVED_COLUMN_SYNTAX_GUIDE
|
|
280
333
|
),
|
|
281
334
|
"honeycomb_delete_derived_column": (
|
|
282
335
|
"Permanently deletes a derived column from a dataset. "
|
|
@@ -297,6 +350,7 @@ QUERY_DESCRIPTIONS = {
|
|
|
297
350
|
"Requires the dataset slug and query specification including time_range and calculations. "
|
|
298
351
|
"Optional annotation_name parameter creates the query with a display name for easier identification in the UI. "
|
|
299
352
|
"The query specification supports multiple calculations (unlike triggers which allow only one), filters, breakdowns, orders, havings, and limits for comprehensive data analysis."
|
|
353
|
+
"Queries can include calculated_fields (derived columns) - see honeycomb_create_derived_column for expression syntax. "
|
|
300
354
|
),
|
|
301
355
|
"honeycomb_get_query": (
|
|
302
356
|
"Retrieves a saved query's configuration by its ID. "
|
|
@@ -331,12 +385,16 @@ BOARD_DESCRIPTIONS = {
|
|
|
331
385
|
"Returns the complete board configuration including all panel definitions, layout mode (auto or manual), tags, and links to visualizations."
|
|
332
386
|
),
|
|
333
387
|
"honeycomb_create_board": (
|
|
334
|
-
"Creates a new board (dashboard) with inline query panels, SLO panels,
|
|
388
|
+
"Creates a new board (dashboard) with inline query panels, SLO panels, text panels, board views, and preset filters in a single operation. "
|
|
335
389
|
"Use this to build comprehensive dashboards for service monitoring, create SRE views, or consolidate related visualizations. "
|
|
336
|
-
"Requires a name and supports inline_query_panels (array of query definitions that will be created automatically), text_panels (markdown content),
|
|
390
|
+
"Requires a name and supports inline_query_panels (array of query definitions that will be created automatically), text_panels (markdown content), slo_panels (SLO IDs), views (filtered perspectives), and preset_filters (dynamic filters). "
|
|
337
391
|
"Each inline query panel needs a name, dataset, time_range, and calculations - optionally include filters, breakdowns, orders, and limit. "
|
|
392
|
+
"Query panels can include calculated_fields (derived columns) - see honeycomb_create_derived_column for expression syntax. "
|
|
393
|
+
"For inline SLO panels with SLI expressions: must return boolean, use $ prefix for columns. Example: LT($status_code, 500). "
|
|
394
|
+
"Board views allow creating filtered perspectives (max 50 per board): each view has a name and filters array with column, operation (=, !=, >, >=, <, <=, contains, starts-with, ends-with, exists, in), and value. "
|
|
395
|
+
"Preset filters (max 5) allow dynamic filtering of board data: each has column and alias properties. "
|
|
338
396
|
"Layout defaults to auto-layout (Honeycomb arranges panels) but supports manual layout with explicit positioning. "
|
|
339
|
-
"The tool orchestrates: creating all inline queries with annotations, assembling panel configurations, and creating the board with all
|
|
397
|
+
"The tool orchestrates: creating all inline queries with annotations, inline SLOs, board views, preset filters, assembling panel configurations, and creating the board with all components in one API call."
|
|
340
398
|
),
|
|
341
399
|
"honeycomb_update_board": (
|
|
342
400
|
"Updates an existing board's name, description, or panel configuration. "
|
|
@@ -460,6 +518,113 @@ SERVICE_MAP_DESCRIPTIONS = {
|
|
|
460
518
|
),
|
|
461
519
|
}
|
|
462
520
|
|
|
521
|
+
# ==============================================================================
|
|
522
|
+
# Auth
|
|
523
|
+
# ==============================================================================
|
|
524
|
+
|
|
525
|
+
AUTH_DESCRIPTIONS = {
|
|
526
|
+
"honeycomb_get_auth": (
|
|
527
|
+
"Returns metadata about the API key used to authenticate with Honeycomb. "
|
|
528
|
+
"Use this to verify authentication is working correctly, check key permissions and scopes, "
|
|
529
|
+
"or discover which team and environment the key belongs to. "
|
|
530
|
+
"Automatically detects whether to use the v1 endpoint (for regular API keys) or "
|
|
531
|
+
"v2 endpoint (for management keys) based on the configured credentials. "
|
|
532
|
+
"Set use_v2=true to explicitly request management key information, which includes "
|
|
533
|
+
"scopes and team details. Returns an error if use_v2=true but management credentials "
|
|
534
|
+
"are not configured."
|
|
535
|
+
),
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
# ==============================================================================
|
|
539
|
+
# API Keys (v2)
|
|
540
|
+
# ==============================================================================
|
|
541
|
+
|
|
542
|
+
API_KEY_DESCRIPTIONS = {
|
|
543
|
+
"honeycomb_list_api_keys": (
|
|
544
|
+
"Lists all API keys for your authenticated team with optional filtering by key type. "
|
|
545
|
+
"Use this to audit team API keys, discover existing keys before creating new ones, or when migrating to management key authentication. "
|
|
546
|
+
"Requires management key authentication. The team is automatically detected from your credentials (no team parameter needed). "
|
|
547
|
+
"Optional key_type parameter filters by 'ingest' or 'configuration' keys. "
|
|
548
|
+
"Returns a list of API key objects with their IDs, names, types, environment associations, and disabled status. "
|
|
549
|
+
"Note: The key secrets are not included in list responses for security."
|
|
550
|
+
),
|
|
551
|
+
"honeycomb_get_api_key": (
|
|
552
|
+
"Retrieves detailed information about a specific API key by ID. "
|
|
553
|
+
"Use this to inspect an API key's configuration including name, type, environment, and disabled status before updating or deleting it. "
|
|
554
|
+
"Requires only the key ID parameter - the team is automatically detected from your management key credentials. "
|
|
555
|
+
"Returns the complete API key configuration but does NOT include the secret (only shown on creation). "
|
|
556
|
+
"Use this to verify key settings or check which environment a key is associated with."
|
|
557
|
+
),
|
|
558
|
+
"honeycomb_create_api_key": (
|
|
559
|
+
"Creates a new API key for your authenticated team in a specific environment. "
|
|
560
|
+
"Use this when provisioning new services, creating separate keys for different applications, or rotating credentials. "
|
|
561
|
+
"Requires key name, key_type ('ingest' for data sending or 'configuration' for API access), and environment_id. The team is automatically detected from your management key. "
|
|
562
|
+
"CRITICAL FOR CONFIGURATION KEYS: Must include permissions object with boolean properties. Available permissions: 'create_datasets', 'send_events', 'manage_markers', 'manage_triggers', 'manage_boards', 'run_queries', 'manage_columns', 'manage_slos', 'manage_recipients', 'manage_privateBoards'. "
|
|
563
|
+
"Example for full access: {'create_datasets': true, 'send_events': true, 'manage_markers': true, 'manage_triggers': true, 'manage_boards': true, 'run_queries': true, 'manage_columns': true, 'manage_slos': true, 'manage_recipients': true, 'manage_privateBoards': true}. "
|
|
564
|
+
"Without permissions object, configuration keys will have NO permissions and cannot perform any actions. "
|
|
565
|
+
"Ingest keys have fixed permissions (send events, optionally create datasets implicitly) and don't use permissions object. "
|
|
566
|
+
"CRITICAL: The secret is only returned once during creation - save it immediately. "
|
|
567
|
+
"Returns the created API key object including the secret field (only time it's available)."
|
|
568
|
+
),
|
|
569
|
+
"honeycomb_update_api_key": (
|
|
570
|
+
"Updates an existing API key's name or disabled status. "
|
|
571
|
+
"Use this to rename keys for clarity, disable compromised keys, or re-enable previously disabled keys. "
|
|
572
|
+
"Requires key ID and at least one of: name (new display name) or disabled (true/false). The team is automatically detected from your credentials. "
|
|
573
|
+
"Note: You cannot change the key type or environment after creation. To rotate the secret, delete and create a new key. "
|
|
574
|
+
"The secret value is never returned in update responses."
|
|
575
|
+
),
|
|
576
|
+
"honeycomb_delete_api_key": (
|
|
577
|
+
"Permanently deletes an API key from Honeycomb. "
|
|
578
|
+
"Use this when decommissioning services, rotating credentials after a security incident, or cleaning up unused keys. "
|
|
579
|
+
"Requires only the key ID parameter - the team is automatically detected from your management key. "
|
|
580
|
+
"Warning: This action cannot be undone. Any services using this key will immediately lose API access. "
|
|
581
|
+
"The secret cannot be recovered - you must create a new key if deleted accidentally."
|
|
582
|
+
),
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
# ==============================================================================
|
|
586
|
+
# Environments (v2)
|
|
587
|
+
# ==============================================================================
|
|
588
|
+
|
|
589
|
+
ENVIRONMENT_DESCRIPTIONS = {
|
|
590
|
+
"honeycomb_list_environments": (
|
|
591
|
+
"Lists all environments for your authenticated team. "
|
|
592
|
+
"Use this to discover existing environments, understand team organization, or before creating API keys scoped to specific environments. "
|
|
593
|
+
"Requires management key authentication. The team is automatically detected from your credentials (no team parameter needed). "
|
|
594
|
+
"Returns a list of environment objects with their IDs, names, slugs, colors, descriptions, and delete protection status. "
|
|
595
|
+
"Environments help organize your telemetry data by separating production, staging, development, etc."
|
|
596
|
+
),
|
|
597
|
+
"honeycomb_get_environment": (
|
|
598
|
+
"Retrieves detailed information about a specific environment by ID, optionally including its datasets. "
|
|
599
|
+
"Use this to inspect an environment's configuration or get a complete view of an environment including all its datasets. "
|
|
600
|
+
"Requires only the environment ID parameter - the team is automatically detected from your management key. "
|
|
601
|
+
"Set with_datasets=true to also return the list of datasets in this environment (useful for understanding environment contents). "
|
|
602
|
+
"Returns the environment configuration plus optionally a datasets array with all datasets in this environment."
|
|
603
|
+
),
|
|
604
|
+
"honeycomb_create_environment": (
|
|
605
|
+
"Creates a new environment for organizing telemetry data within your authenticated team. "
|
|
606
|
+
"Use this when setting up new deployment stages (production, staging, dev), isolating customer data, or creating test environments. "
|
|
607
|
+
"Requires only the environment name - the team is automatically detected from your management key. "
|
|
608
|
+
"Optional parameters include description for documentation and color (blue, green, gold, red, purple, or light variants) for visual distinction. "
|
|
609
|
+
"The environment slug is auto-generated from the name and used for API operations and dataset scoping. "
|
|
610
|
+
"New environments are delete-protected by default to prevent accidental deletion."
|
|
611
|
+
),
|
|
612
|
+
"honeycomb_update_environment": (
|
|
613
|
+
"Updates an existing environment's description, color, or delete protection status. "
|
|
614
|
+
"Use this to add documentation, change visual appearance, or enable/disable delete protection for production environments. "
|
|
615
|
+
"Requires environment ID and at least one of: description, color, or delete_protected (boolean). The team is automatically detected from your credentials. "
|
|
616
|
+
"Note: The name and slug cannot be changed after creation. Setting delete_protected=true prevents accidental deletion. "
|
|
617
|
+
"To delete a protected environment, you must first update it with delete_protected=false."
|
|
618
|
+
),
|
|
619
|
+
"honeycomb_delete_environment": (
|
|
620
|
+
"Permanently deletes an environment from Honeycomb. "
|
|
621
|
+
"Use this when decommissioning deployment stages, cleaning up test environments, or reorganizing team structure. "
|
|
622
|
+
"Requires only the environment ID parameter - the team is automatically detected from your management key. "
|
|
623
|
+
"Warning: This action cannot be undone. The environment must not be delete-protected. "
|
|
624
|
+
"All API keys scoped to this environment will become invalid. Datasets are NOT deleted automatically."
|
|
625
|
+
),
|
|
626
|
+
}
|
|
627
|
+
|
|
463
628
|
# Combined mapping of all descriptions
|
|
464
629
|
ALL_DESCRIPTIONS = {
|
|
465
630
|
**TRIGGER_DESCRIPTIONS,
|
|
@@ -475,6 +640,9 @@ ALL_DESCRIPTIONS = {
|
|
|
475
640
|
**MARKER_SETTING_DESCRIPTIONS,
|
|
476
641
|
**EVENT_DESCRIPTIONS,
|
|
477
642
|
**SERVICE_MAP_DESCRIPTIONS,
|
|
643
|
+
**AUTH_DESCRIPTIONS,
|
|
644
|
+
**API_KEY_DESCRIPTIONS,
|
|
645
|
+
**ENVIRONMENT_DESCRIPTIONS,
|
|
478
646
|
}
|
|
479
647
|
|
|
480
648
|
|
honeycomb/tools/executor.py
CHANGED
|
@@ -13,6 +13,7 @@ from honeycomb.models import (
|
|
|
13
13
|
BurnAlertRecipient,
|
|
14
14
|
ColumnCreate,
|
|
15
15
|
DatasetCreate,
|
|
16
|
+
DatasetUpdate,
|
|
16
17
|
DerivedColumnCreate,
|
|
17
18
|
MarkerCreate,
|
|
18
19
|
MarkerSettingCreate,
|
|
@@ -27,6 +28,28 @@ if TYPE_CHECKING:
|
|
|
27
28
|
from honeycomb import HoneycombClient
|
|
28
29
|
|
|
29
30
|
|
|
31
|
+
# ==============================================================================
|
|
32
|
+
# Metadata Field Handling
|
|
33
|
+
# ==============================================================================
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def strip_metadata_fields(tool_input: dict[str, Any]) -> dict[str, Any]:
|
|
37
|
+
"""Strip Claude reasoning metadata fields before API execution.
|
|
38
|
+
|
|
39
|
+
These fields are for downstream applications to observe Claude's reasoning
|
|
40
|
+
and are NOT sent to the Honeycomb API.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
tool_input: The tool input dict (will be modified in place)
|
|
44
|
+
|
|
45
|
+
Returns:
|
|
46
|
+
The same dict with metadata fields removed
|
|
47
|
+
"""
|
|
48
|
+
tool_input.pop("confidence", None)
|
|
49
|
+
tool_input.pop("notes", None)
|
|
50
|
+
return tool_input
|
|
51
|
+
|
|
52
|
+
|
|
30
53
|
# ==============================================================================
|
|
31
54
|
# Main Executor
|
|
32
55
|
# ==============================================================================
|
|
@@ -63,8 +86,36 @@ async def execute_tool(
|
|
|
63
86
|
... )
|
|
64
87
|
... print(result) # JSON string
|
|
65
88
|
"""
|
|
89
|
+
# Strip metadata fields before processing
|
|
90
|
+
# These are for Claude's reasoning and not sent to Honeycomb API
|
|
91
|
+
strip_metadata_fields(tool_input)
|
|
92
|
+
|
|
66
93
|
# Route to appropriate handler
|
|
67
|
-
if tool_name == "
|
|
94
|
+
if tool_name == "honeycomb_get_auth":
|
|
95
|
+
return await _execute_get_auth(client, tool_input)
|
|
96
|
+
# API Keys (v2)
|
|
97
|
+
elif tool_name == "honeycomb_list_api_keys":
|
|
98
|
+
return await _execute_list_api_keys(client, tool_input)
|
|
99
|
+
elif tool_name == "honeycomb_get_api_key":
|
|
100
|
+
return await _execute_get_api_key(client, tool_input)
|
|
101
|
+
elif tool_name == "honeycomb_create_api_key":
|
|
102
|
+
return await _execute_create_api_key(client, tool_input)
|
|
103
|
+
elif tool_name == "honeycomb_update_api_key":
|
|
104
|
+
return await _execute_update_api_key(client, tool_input)
|
|
105
|
+
elif tool_name == "honeycomb_delete_api_key":
|
|
106
|
+
return await _execute_delete_api_key(client, tool_input)
|
|
107
|
+
# Environments (v2)
|
|
108
|
+
elif tool_name == "honeycomb_list_environments":
|
|
109
|
+
return await _execute_list_environments(client, tool_input)
|
|
110
|
+
elif tool_name == "honeycomb_get_environment":
|
|
111
|
+
return await _execute_get_environment(client, tool_input)
|
|
112
|
+
elif tool_name == "honeycomb_create_environment":
|
|
113
|
+
return await _execute_create_environment(client, tool_input)
|
|
114
|
+
elif tool_name == "honeycomb_update_environment":
|
|
115
|
+
return await _execute_update_environment(client, tool_input)
|
|
116
|
+
elif tool_name == "honeycomb_delete_environment":
|
|
117
|
+
return await _execute_delete_environment(client, tool_input)
|
|
118
|
+
elif tool_name == "honeycomb_list_triggers":
|
|
68
119
|
return await _execute_list_triggers(client, tool_input)
|
|
69
120
|
elif tool_name == "honeycomb_get_trigger":
|
|
70
121
|
return await _execute_get_trigger(client, tool_input)
|
|
@@ -195,6 +246,155 @@ async def execute_tool(
|
|
|
195
246
|
)
|
|
196
247
|
|
|
197
248
|
|
|
249
|
+
# ==============================================================================
|
|
250
|
+
# Auth
|
|
251
|
+
# ==============================================================================
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
async def _execute_get_auth(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
255
|
+
"""Execute honeycomb_get_auth tool."""
|
|
256
|
+
use_v2 = tool_input.get("use_v2")
|
|
257
|
+
result = await client.auth.get_async(use_v2=use_v2)
|
|
258
|
+
return json.dumps(result.model_dump(), default=str)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
# ==============================================================================
|
|
262
|
+
# API Keys (v2)
|
|
263
|
+
# ==============================================================================
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
async def _execute_list_api_keys(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
267
|
+
"""Execute honeycomb_list_api_keys tool."""
|
|
268
|
+
key_type = tool_input.get("key_type")
|
|
269
|
+
keys = await client.api_keys.list_async(key_type=key_type)
|
|
270
|
+
return json.dumps([k.model_dump() for k in keys], default=str)
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
async def _execute_get_api_key(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
274
|
+
"""Execute honeycomb_get_api_key tool."""
|
|
275
|
+
key = await client.api_keys.get_async(key_id=tool_input["key_id"])
|
|
276
|
+
return json.dumps(key.model_dump(), default=str)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
async def _execute_create_api_key(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
280
|
+
"""Execute honeycomb_create_api_key tool."""
|
|
281
|
+
from honeycomb.models.api_keys import ApiKeyCreate, ApiKeyType
|
|
282
|
+
|
|
283
|
+
api_key = ApiKeyCreate(
|
|
284
|
+
name=tool_input["name"],
|
|
285
|
+
key_type=ApiKeyType(tool_input["key_type"]),
|
|
286
|
+
environment_id=tool_input["environment_id"],
|
|
287
|
+
permissions=tool_input.get("permissions"),
|
|
288
|
+
)
|
|
289
|
+
created = await client.api_keys.create_async(api_key=api_key)
|
|
290
|
+
return json.dumps(created.model_dump(), default=str)
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
async def _execute_update_api_key(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
294
|
+
"""Execute honeycomb_update_api_key tool."""
|
|
295
|
+
from honeycomb.models.api_keys import ApiKeyUpdate
|
|
296
|
+
|
|
297
|
+
update = ApiKeyUpdate(
|
|
298
|
+
name=tool_input.get("name"),
|
|
299
|
+
disabled=tool_input.get("disabled"),
|
|
300
|
+
)
|
|
301
|
+
updated = await client.api_keys.update_async(
|
|
302
|
+
key_id=tool_input["key_id"],
|
|
303
|
+
api_key=update,
|
|
304
|
+
)
|
|
305
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
async def _execute_delete_api_key(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
309
|
+
"""Execute honeycomb_delete_api_key tool."""
|
|
310
|
+
await client.api_keys.delete_async(key_id=tool_input["key_id"])
|
|
311
|
+
return json.dumps({"status": "deleted", "key_id": tool_input["key_id"]})
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
# ==============================================================================
|
|
315
|
+
# Environments (v2)
|
|
316
|
+
# ==============================================================================
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
async def _execute_list_environments(client: "HoneycombClient", _tool_input: dict[str, Any]) -> str:
|
|
320
|
+
"""Execute honeycomb_list_environments tool."""
|
|
321
|
+
envs = await client.environments.list_async()
|
|
322
|
+
return json.dumps([e.model_dump() for e in envs], default=str)
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
async def _execute_get_environment(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
326
|
+
"""Execute honeycomb_get_environment tool."""
|
|
327
|
+
env = await client.environments.get_async(env_id=tool_input["env_id"])
|
|
328
|
+
result = env.model_dump()
|
|
329
|
+
|
|
330
|
+
# Optionally include datasets (requires environment-scoped API key)
|
|
331
|
+
if tool_input.get("with_datasets"):
|
|
332
|
+
import os
|
|
333
|
+
|
|
334
|
+
api_key = os.environ.get("HONEYCOMB_API_KEY")
|
|
335
|
+
if not api_key:
|
|
336
|
+
result["datasets_error"] = (
|
|
337
|
+
"Cannot list datasets: No HONEYCOMB_API_KEY found. "
|
|
338
|
+
"Datasets require an environment-scoped API key."
|
|
339
|
+
)
|
|
340
|
+
else:
|
|
341
|
+
# Create temporary client to verify environment match
|
|
342
|
+
from honeycomb import HoneycombClient
|
|
343
|
+
|
|
344
|
+
async with HoneycombClient(api_key=api_key) as api_key_client:
|
|
345
|
+
# Verify the API key is for this environment (force v1 for environment_slug)
|
|
346
|
+
from honeycomb.models.auth import AuthInfo
|
|
347
|
+
|
|
348
|
+
auth_info = await api_key_client.auth.get_async(use_v2=False)
|
|
349
|
+
assert isinstance(auth_info, AuthInfo) # use_v2=False always returns AuthInfo
|
|
350
|
+
if auth_info.environment_slug != result["slug"]:
|
|
351
|
+
result["datasets_error"] = (
|
|
352
|
+
f"Cannot list datasets: HONEYCOMB_API_KEY is for environment "
|
|
353
|
+
f"'{auth_info.environment_slug}' but requested '{result['slug']}'"
|
|
354
|
+
)
|
|
355
|
+
else:
|
|
356
|
+
# Environment matches - list datasets
|
|
357
|
+
datasets = await api_key_client.datasets.list_async()
|
|
358
|
+
result["datasets"] = [d.model_dump() for d in datasets]
|
|
359
|
+
|
|
360
|
+
return json.dumps(result, default=str)
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
async def _execute_create_environment(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
364
|
+
"""Execute honeycomb_create_environment tool."""
|
|
365
|
+
from honeycomb.models.environments import EnvironmentColor, EnvironmentCreate
|
|
366
|
+
|
|
367
|
+
environment = EnvironmentCreate(
|
|
368
|
+
name=tool_input["name"],
|
|
369
|
+
description=tool_input.get("description"),
|
|
370
|
+
color=EnvironmentColor(tool_input["color"]) if tool_input.get("color") else None,
|
|
371
|
+
)
|
|
372
|
+
created = await client.environments.create_async(environment=environment)
|
|
373
|
+
return json.dumps(created.model_dump(), default=str)
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
async def _execute_update_environment(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
377
|
+
"""Execute honeycomb_update_environment tool."""
|
|
378
|
+
from honeycomb.models.environments import EnvironmentColor, EnvironmentUpdate
|
|
379
|
+
|
|
380
|
+
environment = EnvironmentUpdate(
|
|
381
|
+
description=tool_input.get("description"),
|
|
382
|
+
color=EnvironmentColor(tool_input["color"]) if tool_input.get("color") else None,
|
|
383
|
+
delete_protected=tool_input.get("delete_protected"),
|
|
384
|
+
)
|
|
385
|
+
updated = await client.environments.update_async(
|
|
386
|
+
env_id=tool_input["env_id"],
|
|
387
|
+
environment=environment,
|
|
388
|
+
)
|
|
389
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
async def _execute_delete_environment(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
393
|
+
"""Execute honeycomb_delete_environment tool."""
|
|
394
|
+
await client.environments.delete_async(env_id=tool_input["env_id"])
|
|
395
|
+
return json.dumps({"status": "deleted", "env_id": tool_input["env_id"]})
|
|
396
|
+
|
|
397
|
+
|
|
198
398
|
# ==============================================================================
|
|
199
399
|
# Triggers
|
|
200
400
|
# ==============================================================================
|
|
@@ -281,32 +481,19 @@ async def _execute_get_slo(client: "HoneycombClient", tool_input: dict[str, Any]
|
|
|
281
481
|
async def _execute_create_slo(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
282
482
|
"""Execute honeycomb_create_slo.
|
|
283
483
|
|
|
284
|
-
|
|
285
|
-
|
|
484
|
+
Always uses SLOBuilder with Pydantic validation and automatic target_percentage conversion.
|
|
485
|
+
Handles SLI expressions, burn alerts, and dataset list processing transparently.
|
|
286
486
|
"""
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
sli = tool_input.get("sli", {})
|
|
291
|
-
burn_alerts = tool_input.get("burn_alerts", [])
|
|
292
|
-
needs_bundle = ("expression" in sli) or burn_alerts
|
|
293
|
-
|
|
294
|
-
if needs_bundle:
|
|
295
|
-
# Use builder for orchestration
|
|
296
|
-
builder = _build_slo({"dataset": dataset, **tool_input})
|
|
297
|
-
bundle = builder.build()
|
|
487
|
+
# Validate and build (tool_input now contains datasets: list[str])
|
|
488
|
+
builder = _build_slo(tool_input)
|
|
489
|
+
bundle = builder.build()
|
|
298
490
|
|
|
299
|
-
|
|
300
|
-
|
|
491
|
+
# Create via bundle (handles derived columns, burn alerts, and all conversions)
|
|
492
|
+
created_slos = await client.slos.create_from_bundle_async(bundle)
|
|
301
493
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
else:
|
|
306
|
-
# Simple SLO creation (existing derived column, no burn alerts)
|
|
307
|
-
slo = SLOCreate(**tool_input)
|
|
308
|
-
created = await client.slos.create_async(dataset=dataset, slo=slo)
|
|
309
|
-
return json.dumps(created.model_dump(), default=str)
|
|
494
|
+
# Return the main SLO (first one created)
|
|
495
|
+
main_slo = list(created_slos.values())[0]
|
|
496
|
+
return json.dumps(main_slo.model_dump(), default=str)
|
|
310
497
|
|
|
311
498
|
|
|
312
499
|
async def _execute_update_slo(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
@@ -431,7 +618,7 @@ async def _execute_create_dataset(client: "HoneycombClient", tool_input: dict[st
|
|
|
431
618
|
async def _execute_update_dataset(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
432
619
|
"""Execute honeycomb_update_dataset."""
|
|
433
620
|
slug = tool_input.pop("slug")
|
|
434
|
-
dataset =
|
|
621
|
+
dataset = DatasetUpdate(**tool_input)
|
|
435
622
|
updated = await client.datasets.update_async(slug=slug, dataset=dataset)
|
|
436
623
|
return json.dumps(updated.model_dump(), default=str)
|
|
437
624
|
|