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
|
@@ -0,0 +1,630 @@
|
|
|
1
|
+
"""Tool input models for Claude Code integration.
|
|
2
|
+
|
|
3
|
+
These models are specifically designed for tool validation with strict schema constraints:
|
|
4
|
+
- All models use extra="forbid" to reject unknown fields
|
|
5
|
+
- All enum fields use strict enum types (no | str unions)
|
|
6
|
+
- All models generate JSON schemas with additionalProperties: false
|
|
7
|
+
|
|
8
|
+
These models are used by:
|
|
9
|
+
1. Tool schema generation (generator.py)
|
|
10
|
+
2. Tool input validation (builders.py)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
from typing import Any, Literal
|
|
16
|
+
|
|
17
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
18
|
+
|
|
19
|
+
from honeycomb.models.query_builder import (
|
|
20
|
+
Calculation,
|
|
21
|
+
Filter,
|
|
22
|
+
FilterCombination,
|
|
23
|
+
FilterOp,
|
|
24
|
+
Having,
|
|
25
|
+
Order,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# =============================================================================
|
|
29
|
+
# Position & Layout
|
|
30
|
+
# =============================================================================
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class PositionInput(BaseModel):
|
|
34
|
+
"""Panel position on the board grid (API-native structure).
|
|
35
|
+
|
|
36
|
+
Note: This uses the API's named field structure instead of tuples.
|
|
37
|
+
Board grid is 24 units wide, panels can be 1-24 units in width/height.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
model_config = ConfigDict(extra="forbid")
|
|
41
|
+
|
|
42
|
+
x_coordinate: int = Field(ge=0, description="X position on grid (0-based)")
|
|
43
|
+
y_coordinate: int = Field(ge=0, description="Y position on grid (0-based)")
|
|
44
|
+
width: int = Field(ge=1, le=24, description="Panel width in grid units (1-24)")
|
|
45
|
+
height: int = Field(ge=1, le=24, description="Panel height in grid units (1-24)")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# =============================================================================
|
|
49
|
+
# Visualization Settings
|
|
50
|
+
# =============================================================================
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ChartSettingsInput(BaseModel):
|
|
54
|
+
"""Individual chart visualization settings within a query panel.
|
|
55
|
+
|
|
56
|
+
Each calculation in a query can have its own chart settings.
|
|
57
|
+
Use chart_index to target specific calculations (0-based).
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
model_config = ConfigDict(extra="forbid")
|
|
61
|
+
|
|
62
|
+
chart_index: int = Field(
|
|
63
|
+
default=0,
|
|
64
|
+
ge=0,
|
|
65
|
+
description="Chart index (0-based, for queries with multiple calculations)",
|
|
66
|
+
)
|
|
67
|
+
chart_type: Literal["default", "line", "stacked", "stat", "tsbar", "cbar", "cpie"] = Field(
|
|
68
|
+
default="default",
|
|
69
|
+
description="Chart type: default (auto), line (time series), stacked (stacked area), "
|
|
70
|
+
"stat (single value), tsbar (time series bar), cbar (categorical bar), cpie (pie)",
|
|
71
|
+
)
|
|
72
|
+
log_scale: bool = Field(default=False, description="Use logarithmic Y-axis scale")
|
|
73
|
+
omit_missing_values: bool = Field(
|
|
74
|
+
default=False, description="Skip gaps in data instead of interpolating"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class VisualizationSettingsInput(BaseModel):
|
|
79
|
+
"""Visualization settings for board query panels.
|
|
80
|
+
|
|
81
|
+
Controls how the query results are displayed on the board.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
model_config = ConfigDict(extra="forbid")
|
|
85
|
+
|
|
86
|
+
hide_compare: bool = Field(default=False, description="Hide comparison time range overlay")
|
|
87
|
+
hide_hovers: bool = Field(default=False, description="Disable hover tooltips on data points")
|
|
88
|
+
hide_markers: bool = Field(default=False, description="Hide markers on data points")
|
|
89
|
+
utc_xaxis: bool = Field(default=False, description="Show X-axis timestamps in UTC timezone")
|
|
90
|
+
overlaid_charts: bool = Field(
|
|
91
|
+
default=False, description="Overlay multiple calculations on same chart"
|
|
92
|
+
)
|
|
93
|
+
charts: list[ChartSettingsInput] | None = Field(
|
|
94
|
+
default=None,
|
|
95
|
+
description="Per-chart settings (one entry per calculation). If omitted, defaults apply.",
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
# =============================================================================
|
|
100
|
+
# Calculated Fields
|
|
101
|
+
# =============================================================================
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class CalculatedFieldInput(BaseModel):
|
|
105
|
+
"""Inline calculated field (derived column) for queries.
|
|
106
|
+
|
|
107
|
+
Creates a computed column available only within this query.
|
|
108
|
+
For reusable derived columns, use the Derived Columns API instead.
|
|
109
|
+
|
|
110
|
+
Example expressions:
|
|
111
|
+
- "MULTIPLY($duration_ms, 1000)" - convert ms to microseconds
|
|
112
|
+
- "IF(LT($status_code, 400), 1, 0)" - success indicator
|
|
113
|
+
- "CONCAT($service, '/', $endpoint)" - combine strings
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
model_config = ConfigDict(extra="forbid")
|
|
117
|
+
|
|
118
|
+
name: str = Field(description="Field name/alias to reference in calculations and breakdowns")
|
|
119
|
+
expression: str = Field(
|
|
120
|
+
description="Formula expression using $column_name syntax. "
|
|
121
|
+
"See https://docs.honeycomb.io/reference/derived-column-formula/"
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
# =============================================================================
|
|
126
|
+
# Query Panel
|
|
127
|
+
# =============================================================================
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
class QueryPanelInput(BaseModel):
|
|
131
|
+
"""Query panel specification for board tool input.
|
|
132
|
+
|
|
133
|
+
This model represents a complete query panel with FLAT structure.
|
|
134
|
+
Query fields are at the top level, not nested under a 'query' object.
|
|
135
|
+
|
|
136
|
+
Example (simple with chart_type shorthand):
|
|
137
|
+
{
|
|
138
|
+
"name": "CPU Usage",
|
|
139
|
+
"dataset": "metrics",
|
|
140
|
+
"time_range": 3600,
|
|
141
|
+
"calculations": [{"op": "AVG", "column": "cpu_percent"}],
|
|
142
|
+
"chart_type": "line"
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
Example (with full visualization settings):
|
|
146
|
+
{
|
|
147
|
+
"name": "Error Rate",
|
|
148
|
+
"dataset": "api-logs",
|
|
149
|
+
"time_range": 3600,
|
|
150
|
+
"calculations": [{"op": "COUNT"}],
|
|
151
|
+
"visualization": {
|
|
152
|
+
"utc_xaxis": true,
|
|
153
|
+
"charts": [{"chart_type": "stacked", "log_scale": true}]
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
"""
|
|
157
|
+
|
|
158
|
+
model_config = ConfigDict(extra="forbid")
|
|
159
|
+
|
|
160
|
+
# Panel metadata
|
|
161
|
+
name: str = Field(description="Panel/query name")
|
|
162
|
+
description: str | None = Field(default=None, description="Panel description")
|
|
163
|
+
style: Literal["graph", "table", "combo"] = Field(
|
|
164
|
+
default="graph", description="Panel display style"
|
|
165
|
+
)
|
|
166
|
+
visualization: VisualizationSettingsInput | None = Field(
|
|
167
|
+
default=None,
|
|
168
|
+
description="Full visualization settings. For simple cases, use chart_type instead.",
|
|
169
|
+
)
|
|
170
|
+
chart_type: Literal["default", "line", "stacked", "stat", "tsbar", "cbar", "cpie"] | None = (
|
|
171
|
+
Field(
|
|
172
|
+
default=None,
|
|
173
|
+
description="Shorthand for visualization.charts[0].chart_type. "
|
|
174
|
+
"Use for simple single-calculation panels. "
|
|
175
|
+
"Values: line (time series), stacked (stacked area), stat (single number), "
|
|
176
|
+
"tsbar (time series bar), cbar (categorical bar), cpie (pie chart)",
|
|
177
|
+
)
|
|
178
|
+
)
|
|
179
|
+
position: PositionInput | None = Field(
|
|
180
|
+
default=None,
|
|
181
|
+
description="Panel position for manual layout (required if layout_generation=manual)",
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
# Query specification (FLAT, not nested)
|
|
185
|
+
dataset: str | None = Field(
|
|
186
|
+
default=None, description="Dataset slug (None = environment-wide query)"
|
|
187
|
+
)
|
|
188
|
+
time_range: int | None = Field(
|
|
189
|
+
default=None, description="Time range in seconds (relative time)"
|
|
190
|
+
)
|
|
191
|
+
start_time: int | None = Field(
|
|
192
|
+
default=None, description="Absolute start time (Unix timestamp, use with end_time)"
|
|
193
|
+
)
|
|
194
|
+
end_time: int | None = Field(
|
|
195
|
+
default=None, description="Absolute end time (Unix timestamp, use with start_time)"
|
|
196
|
+
)
|
|
197
|
+
granularity: int | None = Field(default=None, description="Time granularity in seconds")
|
|
198
|
+
calculations: list[Calculation] | None = Field(
|
|
199
|
+
default=None, description="Calculations to perform (e.g., COUNT, AVG, P99)"
|
|
200
|
+
)
|
|
201
|
+
filters: list[Filter] | None = Field(default=None, description="Query filters")
|
|
202
|
+
breakdowns: list[str] | None = Field(default=None, description="Columns to group by")
|
|
203
|
+
filter_combination: FilterCombination | None = Field(
|
|
204
|
+
default=None, description="How to combine filters (AND or OR)"
|
|
205
|
+
)
|
|
206
|
+
orders: list[Order] | None = Field(default=None, description="Result ordering")
|
|
207
|
+
limit: int | None = Field(default=None, description="Result limit (max 1000)")
|
|
208
|
+
havings: list[Having] | None = Field(
|
|
209
|
+
default=None, description="Having clauses for post-aggregation filtering"
|
|
210
|
+
)
|
|
211
|
+
calculated_fields: list[CalculatedFieldInput] | None = Field(
|
|
212
|
+
default=None,
|
|
213
|
+
description="Inline calculated fields (derived columns) for this query only",
|
|
214
|
+
)
|
|
215
|
+
compare_time_offset_seconds: (
|
|
216
|
+
Literal[1800, 3600, 7200, 28800, 86400, 604800, 2419200, 15724800] | None
|
|
217
|
+
) = Field(
|
|
218
|
+
default=None,
|
|
219
|
+
description="Compare against historical data offset by N seconds. "
|
|
220
|
+
"Values: 1800 (30min), 3600 (1hr), 7200 (2hr), 28800 (8hr), "
|
|
221
|
+
"86400 (24hr), 604800 (7d), 2419200 (28d), 15724800 (6mo)",
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
# =============================================================================
|
|
226
|
+
# SLO Components
|
|
227
|
+
# =============================================================================
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
class SLIInput(BaseModel):
|
|
231
|
+
"""SLI (Service Level Indicator) specification for tool input.
|
|
232
|
+
|
|
233
|
+
An SLI can either reference an existing column by alias, or create
|
|
234
|
+
a new derived column inline by providing an expression.
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
model_config = ConfigDict(extra="forbid")
|
|
238
|
+
|
|
239
|
+
alias: str = Field(description="Column alias for the SLI (e.g., 'success_rate')")
|
|
240
|
+
expression: str | None = Field(
|
|
241
|
+
default=None,
|
|
242
|
+
description="Derived column expression (creates column if provided, e.g., 'LTE($duration_ms, 500)')",
|
|
243
|
+
)
|
|
244
|
+
description: str | None = Field(default=None, description="SLI description")
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
class RecipientInput(BaseModel):
|
|
248
|
+
"""Recipient specification (shared across triggers, SLOs, burn alerts).
|
|
249
|
+
|
|
250
|
+
Either reference an existing recipient by ID, OR create a new one inline
|
|
251
|
+
by providing type and target.
|
|
252
|
+
|
|
253
|
+
Note: Only 'email' and 'webhook' types are testable without external integrations.
|
|
254
|
+
Other types ('slack', 'pagerduty', 'msteams') require service configuration.
|
|
255
|
+
"""
|
|
256
|
+
|
|
257
|
+
model_config = ConfigDict(extra="forbid")
|
|
258
|
+
|
|
259
|
+
# Either reference existing recipient by ID...
|
|
260
|
+
id: str | None = Field(default=None, description="Existing recipient ID")
|
|
261
|
+
|
|
262
|
+
# ...OR create inline with type + target
|
|
263
|
+
type: Literal["email", "webhook", "slack", "pagerduty", "msteams"] | None = Field(
|
|
264
|
+
default=None, description="Recipient type (for inline creation)"
|
|
265
|
+
)
|
|
266
|
+
target: str | None = Field(
|
|
267
|
+
default=None, description="Recipient target (email address, webhook URL, or integration ID)"
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
class BurnAlertInput(BaseModel):
|
|
272
|
+
"""Burn alert specification for inline creation with SLOs.
|
|
273
|
+
|
|
274
|
+
Two alert types:
|
|
275
|
+
- exhaustion_time: Alert when budget will be exhausted in N minutes
|
|
276
|
+
- budget_rate: Alert when budget is decreasing faster than threshold
|
|
277
|
+
"""
|
|
278
|
+
|
|
279
|
+
model_config = ConfigDict(extra="forbid")
|
|
280
|
+
|
|
281
|
+
alert_type: Literal["exhaustion_time", "budget_rate"] = Field(description="Alert type")
|
|
282
|
+
description: str | None = Field(default=None, description="Alert description")
|
|
283
|
+
|
|
284
|
+
# For exhaustion_time alerts
|
|
285
|
+
exhaustion_minutes: int | None = Field(
|
|
286
|
+
default=None, description="Minutes until budget exhaustion (required for exhaustion_time)"
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
# For budget_rate alerts
|
|
290
|
+
budget_rate_window_minutes: int | None = Field(
|
|
291
|
+
default=None, description="Window size in minutes (required for budget_rate)"
|
|
292
|
+
)
|
|
293
|
+
budget_rate_decrease_threshold_per_million: int | None = Field(
|
|
294
|
+
default=None, description="Threshold in per-million units (required for budget_rate)"
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
# Recipients (optional)
|
|
298
|
+
recipients: list[RecipientInput] | None = Field(default=None, description="Alert recipients")
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
class SLOToolInput(BaseModel):
|
|
302
|
+
"""Complete SLO tool input for creating SLOs.
|
|
303
|
+
|
|
304
|
+
Note: Only target_percentage is exposed to tools (most intuitive format).
|
|
305
|
+
The target_nines format has been removed entirely.
|
|
306
|
+
"""
|
|
307
|
+
|
|
308
|
+
model_config = ConfigDict(extra="forbid")
|
|
309
|
+
|
|
310
|
+
# Required
|
|
311
|
+
name: str = Field(description="SLO name")
|
|
312
|
+
sli: SLIInput = Field(description="SLI specification")
|
|
313
|
+
|
|
314
|
+
# Optional metadata
|
|
315
|
+
description: str | None = Field(default=None, description="SLO description")
|
|
316
|
+
|
|
317
|
+
# Dataset(s) - always a list, even for single dataset
|
|
318
|
+
datasets: list[str] = Field(
|
|
319
|
+
min_length=1,
|
|
320
|
+
description="Dataset slug(s). Use single-element list for one dataset, multiple for environment-wide SLO",
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
# Target - only target_percentage exposed
|
|
324
|
+
target_percentage: float = Field(
|
|
325
|
+
description="Target as percentage (e.g., 99.9 for 99.9% success rate)"
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
# Time period
|
|
329
|
+
time_period_days: int = Field(
|
|
330
|
+
default=30, description="SLO time period in days (typically 7, 14, or 30)"
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
# Inline burn alerts
|
|
334
|
+
burn_alerts: list[BurnAlertInput] | None = Field(
|
|
335
|
+
default=None, description="Burn alerts to create with the SLO"
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
# =============================================================================
|
|
340
|
+
# Recipient Detail Models (for Recipients API)
|
|
341
|
+
# =============================================================================
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
class EmailRecipientDetailsInput(BaseModel):
|
|
345
|
+
"""Email recipient details for tool input."""
|
|
346
|
+
|
|
347
|
+
model_config = ConfigDict(extra="forbid")
|
|
348
|
+
|
|
349
|
+
email_address: str = Field(description="Email address to notify")
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
class SlackRecipientDetailsInput(BaseModel):
|
|
353
|
+
"""Slack recipient details for tool input."""
|
|
354
|
+
|
|
355
|
+
model_config = ConfigDict(extra="forbid")
|
|
356
|
+
|
|
357
|
+
slack_channel: str = Field(description="Slack channel (e.g., '#alerts')")
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
class PagerDutyRecipientDetailsInput(BaseModel):
|
|
361
|
+
"""PagerDuty recipient details for tool input."""
|
|
362
|
+
|
|
363
|
+
model_config = ConfigDict(extra="forbid")
|
|
364
|
+
|
|
365
|
+
pagerduty_integration_key: str = Field(
|
|
366
|
+
min_length=32,
|
|
367
|
+
max_length=32,
|
|
368
|
+
description="PagerDuty integration key (exactly 32 characters)",
|
|
369
|
+
)
|
|
370
|
+
pagerduty_integration_name: str = Field(description="Name for this PagerDuty integration")
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
class WebhookHeaderInput(BaseModel):
|
|
374
|
+
"""HTTP header for webhook recipient."""
|
|
375
|
+
|
|
376
|
+
model_config = ConfigDict(extra="forbid")
|
|
377
|
+
|
|
378
|
+
header: str = Field(max_length=64, description="Header name (e.g., 'Authorization')")
|
|
379
|
+
value: str | None = Field(
|
|
380
|
+
default=None, max_length=750, description="Header value (e.g., 'Bearer token')"
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
class WebhookTemplateVariableInput(BaseModel):
|
|
385
|
+
"""Template variable for webhook payload customization."""
|
|
386
|
+
|
|
387
|
+
model_config = ConfigDict(extra="forbid")
|
|
388
|
+
|
|
389
|
+
name: str = Field(
|
|
390
|
+
max_length=64,
|
|
391
|
+
pattern=r"^[a-z](?:[a-zA-Z0-9]+$)?$",
|
|
392
|
+
description="Variable name (must start with lowercase, alphanumeric only)",
|
|
393
|
+
)
|
|
394
|
+
default_value: str | None = Field(
|
|
395
|
+
default=None, max_length=256, description="Default value for this variable"
|
|
396
|
+
)
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
class WebhookPayloadTemplateInput(BaseModel):
|
|
400
|
+
"""Payload template for specific alert type."""
|
|
401
|
+
|
|
402
|
+
model_config = ConfigDict(extra="forbid")
|
|
403
|
+
|
|
404
|
+
body: str | None = Field(
|
|
405
|
+
default=None, description="JSON template string with {{variable}} placeholders"
|
|
406
|
+
)
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
class WebhookPayloadTemplatesInput(BaseModel):
|
|
410
|
+
"""Payload templates for different alert types.
|
|
411
|
+
|
|
412
|
+
Each alert type (trigger, budget_rate, exhaustion_time) can have a custom
|
|
413
|
+
JSON payload template with variable substitution.
|
|
414
|
+
"""
|
|
415
|
+
|
|
416
|
+
model_config = ConfigDict(extra="forbid")
|
|
417
|
+
|
|
418
|
+
trigger: WebhookPayloadTemplateInput | None = Field(
|
|
419
|
+
default=None, description="Payload template for trigger alerts"
|
|
420
|
+
)
|
|
421
|
+
budget_rate: WebhookPayloadTemplateInput | None = Field(
|
|
422
|
+
default=None, description="Payload template for budget rate burn alerts"
|
|
423
|
+
)
|
|
424
|
+
exhaustion_time: WebhookPayloadTemplateInput | None = Field(
|
|
425
|
+
default=None, description="Payload template for exhaustion time burn alerts"
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
class WebhookPayloadsInput(BaseModel):
|
|
430
|
+
"""Webhook payload customization with templates and variables."""
|
|
431
|
+
|
|
432
|
+
model_config = ConfigDict(extra="forbid")
|
|
433
|
+
|
|
434
|
+
template_variables: list[WebhookTemplateVariableInput] | None = Field(
|
|
435
|
+
default=None, description="Template variables for payload substitution (max 10)"
|
|
436
|
+
)
|
|
437
|
+
payload_templates: WebhookPayloadTemplatesInput | None = Field(
|
|
438
|
+
default=None,
|
|
439
|
+
description="Custom payload templates for different alert types (trigger, budget_rate, exhaustion_time)",
|
|
440
|
+
)
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
class WebhookRecipientDetailsInput(BaseModel):
|
|
444
|
+
"""Webhook recipient details for tool input."""
|
|
445
|
+
|
|
446
|
+
model_config = ConfigDict(extra="forbid")
|
|
447
|
+
|
|
448
|
+
webhook_url: str = Field(max_length=2048, description="Webhook URL to POST to")
|
|
449
|
+
webhook_name: str = Field(max_length=255, description="Name for this webhook")
|
|
450
|
+
webhook_secret: str | None = Field(
|
|
451
|
+
default=None, max_length=255, description="Optional secret for webhook signing"
|
|
452
|
+
)
|
|
453
|
+
webhook_headers: list[WebhookHeaderInput] | None = Field(
|
|
454
|
+
default=None, description="Optional HTTP headers for authentication (max 5)"
|
|
455
|
+
)
|
|
456
|
+
webhook_payloads: WebhookPayloadsInput | None = Field(
|
|
457
|
+
default=None,
|
|
458
|
+
description="Optional custom payload templates with template variables",
|
|
459
|
+
)
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
class MSTeamsRecipientDetailsInput(BaseModel):
|
|
463
|
+
"""MS Teams workflow recipient details for tool input."""
|
|
464
|
+
|
|
465
|
+
model_config = ConfigDict(extra="forbid")
|
|
466
|
+
|
|
467
|
+
webhook_url: str = Field(
|
|
468
|
+
max_length=2048, description="Azure Logic Apps workflow URL for MS Teams"
|
|
469
|
+
)
|
|
470
|
+
webhook_name: str = Field(max_length=255, description="Name for this MS Teams recipient")
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
class RecipientCreateToolInput(BaseModel):
|
|
474
|
+
"""Recipient creation specification for Recipients API tools.
|
|
475
|
+
|
|
476
|
+
This model is used for tool schema generation to provide proper validation
|
|
477
|
+
of recipient details. The details schema varies by type - use the appropriate
|
|
478
|
+
typed model for each recipient type.
|
|
479
|
+
"""
|
|
480
|
+
|
|
481
|
+
model_config = ConfigDict(extra="forbid")
|
|
482
|
+
|
|
483
|
+
type: Literal["email", "slack", "pagerduty", "webhook", "msteams_workflow"] = Field(
|
|
484
|
+
description="Type of recipient notification"
|
|
485
|
+
)
|
|
486
|
+
details: (
|
|
487
|
+
EmailRecipientDetailsInput
|
|
488
|
+
| SlackRecipientDetailsInput
|
|
489
|
+
| PagerDutyRecipientDetailsInput
|
|
490
|
+
| WebhookRecipientDetailsInput
|
|
491
|
+
| MSTeamsRecipientDetailsInput
|
|
492
|
+
) = Field(description="Recipient-specific configuration (schema varies by type)")
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
# =============================================================================
|
|
496
|
+
# Board Panels
|
|
497
|
+
# =============================================================================
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
class TextPanelInput(BaseModel):
|
|
501
|
+
"""Text/markdown panel for boards."""
|
|
502
|
+
|
|
503
|
+
model_config = ConfigDict(extra="forbid")
|
|
504
|
+
|
|
505
|
+
content: str = Field(description="Markdown content for the panel")
|
|
506
|
+
position: PositionInput | None = Field(
|
|
507
|
+
default=None, description="Panel position (required for manual layout)"
|
|
508
|
+
)
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
class SLOPanelInput(BaseModel):
|
|
512
|
+
"""Inline SLO panel for boards.
|
|
513
|
+
|
|
514
|
+
Creates an SLO and adds it to the board in one operation.
|
|
515
|
+
"""
|
|
516
|
+
|
|
517
|
+
model_config = ConfigDict(extra="forbid")
|
|
518
|
+
|
|
519
|
+
name: str = Field(description="SLO name")
|
|
520
|
+
description: str | None = Field(default=None, description="SLO description")
|
|
521
|
+
dataset: str = Field(description="Dataset slug")
|
|
522
|
+
sli: SLIInput = Field(description="SLI specification")
|
|
523
|
+
target_percentage: float = Field(description="Target as percentage (e.g., 99.9)")
|
|
524
|
+
time_period_days: int = Field(default=30, description="Time period in days")
|
|
525
|
+
position: PositionInput | None = Field(
|
|
526
|
+
default=None, description="Panel position (required for manual layout)"
|
|
527
|
+
)
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
# =============================================================================
|
|
531
|
+
# Board Features
|
|
532
|
+
# =============================================================================
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
class TagInput(BaseModel):
|
|
536
|
+
"""Tag for boards."""
|
|
537
|
+
|
|
538
|
+
model_config = ConfigDict(extra="forbid")
|
|
539
|
+
|
|
540
|
+
key: str = Field(description="Tag key")
|
|
541
|
+
value: str = Field(description="Tag value")
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
class PresetFilterInput(BaseModel):
|
|
545
|
+
"""Preset filter column for boards.
|
|
546
|
+
|
|
547
|
+
Preset filters allow users to filter board results by specific columns
|
|
548
|
+
using the board UI controls.
|
|
549
|
+
"""
|
|
550
|
+
|
|
551
|
+
model_config = ConfigDict(extra="forbid")
|
|
552
|
+
|
|
553
|
+
column: str = Field(description="Column name to filter on")
|
|
554
|
+
alias: str = Field(description="Display alias for the filter control")
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
class BoardViewFilter(BaseModel):
|
|
558
|
+
"""Filter for board views.
|
|
559
|
+
|
|
560
|
+
Board views allow saved filter configurations that users can switch between.
|
|
561
|
+
"""
|
|
562
|
+
|
|
563
|
+
model_config = ConfigDict(extra="forbid")
|
|
564
|
+
|
|
565
|
+
column: str = Field(description="Column name to filter on")
|
|
566
|
+
operation: FilterOp = Field(description="Filter operation")
|
|
567
|
+
value: Any | None = Field(
|
|
568
|
+
default=None, description="Filter value (optional for exists/does-not-exist operations)"
|
|
569
|
+
)
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
class BoardViewInput(BaseModel):
|
|
573
|
+
"""Named view with filters for boards."""
|
|
574
|
+
|
|
575
|
+
model_config = ConfigDict(extra="forbid")
|
|
576
|
+
|
|
577
|
+
name: str = Field(description="View name")
|
|
578
|
+
filters: list[BoardViewFilter] | None = Field(default=None, description="View filters")
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
# =============================================================================
|
|
582
|
+
# Board Tool Input
|
|
583
|
+
# =============================================================================
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
class BoardToolInput(BaseModel):
|
|
587
|
+
"""Complete board tool input for creating boards.
|
|
588
|
+
|
|
589
|
+
Supports three layout modes:
|
|
590
|
+
- auto: Automatically arranges panels (position not required)
|
|
591
|
+
- manual: User-specified positions (position required for all panels)
|
|
592
|
+
|
|
593
|
+
Panel types:
|
|
594
|
+
- inline_query_panels: Query panels (creates queries inline)
|
|
595
|
+
- inline_slo_panels: SLO panels (creates SLOs inline)
|
|
596
|
+
- text_panels: Markdown/text panels
|
|
597
|
+
- slo_panels: Reference existing SLOs by ID
|
|
598
|
+
"""
|
|
599
|
+
|
|
600
|
+
model_config = ConfigDict(extra="forbid")
|
|
601
|
+
|
|
602
|
+
# Board metadata
|
|
603
|
+
name: str = Field(description="Board name")
|
|
604
|
+
description: str | None = Field(default=None, description="Board description")
|
|
605
|
+
layout_generation: Literal["auto", "manual"] = Field(
|
|
606
|
+
default="auto", description="Layout mode (auto or manual)"
|
|
607
|
+
)
|
|
608
|
+
|
|
609
|
+
# Panels
|
|
610
|
+
inline_query_panels: list[QueryPanelInput] | None = Field(
|
|
611
|
+
default=None, description="Query panels to create inline"
|
|
612
|
+
)
|
|
613
|
+
inline_slo_panels: list[SLOPanelInput] | None = Field(
|
|
614
|
+
default=None, description="SLO panels to create inline"
|
|
615
|
+
)
|
|
616
|
+
text_panels: list[TextPanelInput] | None = Field(
|
|
617
|
+
default=None, description="Text/markdown panels"
|
|
618
|
+
)
|
|
619
|
+
slo_panels: list[str] | None = Field(
|
|
620
|
+
default=None, description="Existing SLO IDs to add as panels"
|
|
621
|
+
)
|
|
622
|
+
|
|
623
|
+
# Board features
|
|
624
|
+
tags: list[TagInput] | None = Field(default=None, description="Board tags (key-value pairs)")
|
|
625
|
+
preset_filters: list[PresetFilterInput] | None = Field(
|
|
626
|
+
default=None, description="Preset filter columns for board UI"
|
|
627
|
+
)
|
|
628
|
+
views: list[BoardViewInput] | None = Field(
|
|
629
|
+
default=None, description="Named views with saved filter configurations"
|
|
630
|
+
)
|