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/resources/boards.py
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import builtins
|
|
5
6
|
from typing import TYPE_CHECKING, Any
|
|
6
7
|
|
|
7
|
-
from ..models.boards import Board, BoardCreate
|
|
8
|
+
from ..models.boards import Board, BoardCreate, BoardView, BoardViewCreate
|
|
9
|
+
from ..models.tool_inputs import PositionInput
|
|
8
10
|
from .base import BaseResource
|
|
9
11
|
|
|
10
12
|
if TYPE_CHECKING:
|
|
@@ -37,6 +39,13 @@ class BoardsResource(BaseResource):
|
|
|
37
39
|
return f"{base}/{board_id}"
|
|
38
40
|
return base
|
|
39
41
|
|
|
42
|
+
def _build_view_path(self, board_id: str, view_id: str | None = None) -> str:
|
|
43
|
+
"""Build API path for board views."""
|
|
44
|
+
base = f"/1/boards/{board_id}/views"
|
|
45
|
+
if view_id:
|
|
46
|
+
return f"{base}/{view_id}"
|
|
47
|
+
return base
|
|
48
|
+
|
|
40
49
|
# -------------------------------------------------------------------------
|
|
41
50
|
# Async methods
|
|
42
51
|
# -------------------------------------------------------------------------
|
|
@@ -96,17 +105,21 @@ class BoardsResource(BaseResource):
|
|
|
96
105
|
await self._delete_async(self._build_path(board_id))
|
|
97
106
|
|
|
98
107
|
async def create_from_bundle_async(self, bundle: BoardBundle) -> Board:
|
|
99
|
-
"""Create board from BoardBundle with automatic query creation.
|
|
108
|
+
"""Create board from BoardBundle with automatic query and view creation.
|
|
100
109
|
|
|
101
110
|
Orchestrates:
|
|
102
111
|
1. Create queries + annotations from QueryBuilder instances
|
|
103
112
|
2. Assemble all panel configurations
|
|
104
113
|
3. Create board with all panels
|
|
114
|
+
4. Create views for the board (if any)
|
|
105
115
|
|
|
106
116
|
Panels are added to the board in the order they appear in the bundle:
|
|
107
117
|
- Auto-layout: Honeycomb arranges panels in this order
|
|
108
118
|
- Manual-layout: Respects explicit positions
|
|
109
119
|
|
|
120
|
+
If view creation fails, a warning is issued but the board creation succeeds.
|
|
121
|
+
Views can be created manually later using create_view_async().
|
|
122
|
+
|
|
110
123
|
Args:
|
|
111
124
|
bundle: BoardBundle from BoardBuilder.build()
|
|
112
125
|
|
|
@@ -123,6 +136,7 @@ class BoardsResource(BaseResource):
|
|
|
123
136
|
... .last_1_hour()
|
|
124
137
|
... .count()
|
|
125
138
|
... )
|
|
139
|
+
... .add_view("Active Only", [{"column": "status", "operation": "=", "value": "active"}])
|
|
126
140
|
... .build()
|
|
127
141
|
... )
|
|
128
142
|
"""
|
|
@@ -194,13 +208,31 @@ class BoardsResource(BaseResource):
|
|
|
194
208
|
preset_filters=bundle.preset_filters,
|
|
195
209
|
)
|
|
196
210
|
|
|
197
|
-
|
|
211
|
+
board = await self.create_async(board_create)
|
|
212
|
+
|
|
213
|
+
# Create views after board creation
|
|
214
|
+
if bundle.views:
|
|
215
|
+
import warnings
|
|
216
|
+
|
|
217
|
+
for view_create in bundle.views:
|
|
218
|
+
try:
|
|
219
|
+
await self.create_view_async(board.id, view_create)
|
|
220
|
+
except Exception as e:
|
|
221
|
+
# Log but don't fail - board was created successfully
|
|
222
|
+
# User can retry view creation manually
|
|
223
|
+
warnings.warn(
|
|
224
|
+
f"Failed to create view '{view_create.name}' for board '{board.id}': {e}",
|
|
225
|
+
UserWarning,
|
|
226
|
+
stacklevel=2,
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
return board
|
|
198
230
|
|
|
199
231
|
def _build_query_panel_dict(
|
|
200
232
|
self,
|
|
201
233
|
query_id: str,
|
|
202
234
|
annotation_id: str,
|
|
203
|
-
position:
|
|
235
|
+
position: PositionInput | None,
|
|
204
236
|
style: str,
|
|
205
237
|
visualization: dict[str, Any] | None,
|
|
206
238
|
) -> dict[str, Any]:
|
|
@@ -220,45 +252,124 @@ class BoardsResource(BaseResource):
|
|
|
220
252
|
}
|
|
221
253
|
if position:
|
|
222
254
|
panel["position"] = {
|
|
223
|
-
"x_coordinate": position
|
|
224
|
-
"y_coordinate": position
|
|
225
|
-
"width": position
|
|
226
|
-
"height": position
|
|
255
|
+
"x_coordinate": position.x_coordinate,
|
|
256
|
+
"y_coordinate": position.y_coordinate,
|
|
257
|
+
"width": position.width,
|
|
258
|
+
"height": position.height,
|
|
227
259
|
}
|
|
228
260
|
return panel
|
|
229
261
|
|
|
230
262
|
def _build_slo_panel_dict(
|
|
231
263
|
self,
|
|
232
264
|
slo_id: str,
|
|
233
|
-
position:
|
|
265
|
+
position: PositionInput | None,
|
|
234
266
|
) -> dict[str, Any]:
|
|
235
267
|
"""Build SLO panel dictionary for API."""
|
|
236
268
|
panel = {"type": "slo", "slo_panel": {"slo_id": slo_id}}
|
|
237
269
|
if position:
|
|
238
270
|
panel["position"] = {
|
|
239
|
-
"x_coordinate": position
|
|
240
|
-
"y_coordinate": position
|
|
241
|
-
"width": position
|
|
242
|
-
"height": position
|
|
271
|
+
"x_coordinate": position.x_coordinate,
|
|
272
|
+
"y_coordinate": position.y_coordinate,
|
|
273
|
+
"width": position.width,
|
|
274
|
+
"height": position.height,
|
|
243
275
|
}
|
|
244
276
|
return panel
|
|
245
277
|
|
|
246
278
|
def _build_text_panel_dict(
|
|
247
279
|
self,
|
|
248
280
|
content: str,
|
|
249
|
-
position:
|
|
281
|
+
position: PositionInput | None,
|
|
250
282
|
) -> dict[str, Any]:
|
|
251
283
|
"""Build text panel dictionary for API."""
|
|
252
284
|
panel = {"type": "text", "text_panel": {"content": content}}
|
|
253
285
|
if position:
|
|
254
286
|
panel["position"] = {
|
|
255
|
-
"x_coordinate": position
|
|
256
|
-
"y_coordinate": position
|
|
257
|
-
"width": position
|
|
258
|
-
"height": position
|
|
287
|
+
"x_coordinate": position.x_coordinate,
|
|
288
|
+
"y_coordinate": position.y_coordinate,
|
|
289
|
+
"width": position.width,
|
|
290
|
+
"height": position.height,
|
|
259
291
|
}
|
|
260
292
|
return panel
|
|
261
293
|
|
|
294
|
+
# -------------------------------------------------------------------------
|
|
295
|
+
# Board View Methods - Async
|
|
296
|
+
# -------------------------------------------------------------------------
|
|
297
|
+
|
|
298
|
+
async def list_views_async(self, board_id: str) -> list[BoardView]:
|
|
299
|
+
"""List all views for a board (async).
|
|
300
|
+
|
|
301
|
+
Args:
|
|
302
|
+
board_id: Board ID.
|
|
303
|
+
|
|
304
|
+
Returns:
|
|
305
|
+
List of BoardView objects (max 50 per board).
|
|
306
|
+
"""
|
|
307
|
+
data = await self._get_async(self._build_view_path(board_id))
|
|
308
|
+
return self._parse_model_list(BoardView, data)
|
|
309
|
+
|
|
310
|
+
async def get_view_async(self, board_id: str, view_id: str) -> BoardView:
|
|
311
|
+
"""Get a specific board view (async).
|
|
312
|
+
|
|
313
|
+
Args:
|
|
314
|
+
board_id: Board ID.
|
|
315
|
+
view_id: View ID.
|
|
316
|
+
|
|
317
|
+
Returns:
|
|
318
|
+
BoardView object.
|
|
319
|
+
"""
|
|
320
|
+
data = await self._get_async(self._build_view_path(board_id, view_id))
|
|
321
|
+
return self._parse_model(BoardView, data)
|
|
322
|
+
|
|
323
|
+
async def create_view_async(self, board_id: str, view: BoardViewCreate) -> BoardView:
|
|
324
|
+
"""Create a new board view (async).
|
|
325
|
+
|
|
326
|
+
Args:
|
|
327
|
+
board_id: Board ID.
|
|
328
|
+
view: View configuration.
|
|
329
|
+
|
|
330
|
+
Returns:
|
|
331
|
+
Created BoardView object.
|
|
332
|
+
|
|
333
|
+
Note:
|
|
334
|
+
Each board is limited to 50 views maximum.
|
|
335
|
+
"""
|
|
336
|
+
data = await self._post_async(
|
|
337
|
+
self._build_view_path(board_id),
|
|
338
|
+
json=view.model_dump_for_api(),
|
|
339
|
+
)
|
|
340
|
+
return self._parse_model(BoardView, data)
|
|
341
|
+
|
|
342
|
+
async def update_view_async(
|
|
343
|
+
self,
|
|
344
|
+
board_id: str,
|
|
345
|
+
view_id: str,
|
|
346
|
+
view: BoardViewCreate,
|
|
347
|
+
) -> BoardView:
|
|
348
|
+
"""Update an existing board view (async).
|
|
349
|
+
|
|
350
|
+
Args:
|
|
351
|
+
board_id: Board ID.
|
|
352
|
+
view_id: View ID.
|
|
353
|
+
view: Updated view configuration.
|
|
354
|
+
|
|
355
|
+
Returns:
|
|
356
|
+
Updated BoardView object.
|
|
357
|
+
"""
|
|
358
|
+
data = await self._put_async(
|
|
359
|
+
self._build_view_path(board_id, view_id),
|
|
360
|
+
json=view.model_dump_for_api(),
|
|
361
|
+
)
|
|
362
|
+
return self._parse_model(BoardView, data)
|
|
363
|
+
|
|
364
|
+
async def delete_view_async(self, board_id: str, view_id: str) -> None:
|
|
365
|
+
"""Delete a board view (async).
|
|
366
|
+
|
|
367
|
+
Args:
|
|
368
|
+
board_id: Board ID.
|
|
369
|
+
view_id: View ID.
|
|
370
|
+
"""
|
|
371
|
+
await self._delete_async(self._build_view_path(board_id, view_id))
|
|
372
|
+
|
|
262
373
|
# -------------------------------------------------------------------------
|
|
263
374
|
# Sync methods
|
|
264
375
|
# -------------------------------------------------------------------------
|
|
@@ -348,3 +459,146 @@ class BoardsResource(BaseResource):
|
|
|
348
459
|
import asyncio
|
|
349
460
|
|
|
350
461
|
return asyncio.run(self.create_from_bundle_async(bundle))
|
|
462
|
+
|
|
463
|
+
# -------------------------------------------------------------------------
|
|
464
|
+
# Board View Methods - Sync
|
|
465
|
+
# -------------------------------------------------------------------------
|
|
466
|
+
|
|
467
|
+
def list_views(self, board_id: str) -> builtins.list[BoardView]:
|
|
468
|
+
"""List all views for a board.
|
|
469
|
+
|
|
470
|
+
Args:
|
|
471
|
+
board_id: Board ID.
|
|
472
|
+
|
|
473
|
+
Returns:
|
|
474
|
+
List of BoardView objects (max 50 per board).
|
|
475
|
+
"""
|
|
476
|
+
if not self._client.is_sync:
|
|
477
|
+
raise RuntimeError("Use list_views_async() for async mode, or pass sync=True to client")
|
|
478
|
+
data = self._get_sync(self._build_view_path(board_id))
|
|
479
|
+
return self._parse_model_list(BoardView, data)
|
|
480
|
+
|
|
481
|
+
def get_view(self, board_id: str, view_id: str) -> BoardView:
|
|
482
|
+
"""Get a specific board view.
|
|
483
|
+
|
|
484
|
+
Args:
|
|
485
|
+
board_id: Board ID.
|
|
486
|
+
view_id: View ID.
|
|
487
|
+
|
|
488
|
+
Returns:
|
|
489
|
+
BoardView object.
|
|
490
|
+
"""
|
|
491
|
+
if not self._client.is_sync:
|
|
492
|
+
raise RuntimeError("Use get_view_async() for async mode, or pass sync=True to client")
|
|
493
|
+
data = self._get_sync(self._build_view_path(board_id, view_id))
|
|
494
|
+
return self._parse_model(BoardView, data)
|
|
495
|
+
|
|
496
|
+
def create_view(self, board_id: str, view: BoardViewCreate) -> BoardView:
|
|
497
|
+
"""Create a new board view.
|
|
498
|
+
|
|
499
|
+
Args:
|
|
500
|
+
board_id: Board ID.
|
|
501
|
+
view: View configuration.
|
|
502
|
+
|
|
503
|
+
Returns:
|
|
504
|
+
Created BoardView object.
|
|
505
|
+
|
|
506
|
+
Note:
|
|
507
|
+
Each board is limited to 50 views maximum.
|
|
508
|
+
"""
|
|
509
|
+
if not self._client.is_sync:
|
|
510
|
+
raise RuntimeError(
|
|
511
|
+
"Use create_view_async() for async mode, or pass sync=True to client"
|
|
512
|
+
)
|
|
513
|
+
data = self._post_sync(
|
|
514
|
+
self._build_view_path(board_id),
|
|
515
|
+
json=view.model_dump_for_api(),
|
|
516
|
+
)
|
|
517
|
+
return self._parse_model(BoardView, data)
|
|
518
|
+
|
|
519
|
+
def update_view(self, board_id: str, view_id: str, view: BoardViewCreate) -> BoardView:
|
|
520
|
+
"""Update an existing board view.
|
|
521
|
+
|
|
522
|
+
Args:
|
|
523
|
+
board_id: Board ID.
|
|
524
|
+
view_id: View ID.
|
|
525
|
+
view: Updated view configuration.
|
|
526
|
+
|
|
527
|
+
Returns:
|
|
528
|
+
Updated BoardView object.
|
|
529
|
+
"""
|
|
530
|
+
if not self._client.is_sync:
|
|
531
|
+
raise RuntimeError(
|
|
532
|
+
"Use update_view_async() for async mode, or pass sync=True to client"
|
|
533
|
+
)
|
|
534
|
+
data = self._put_sync(
|
|
535
|
+
self._build_view_path(board_id, view_id),
|
|
536
|
+
json=view.model_dump_for_api(),
|
|
537
|
+
)
|
|
538
|
+
return self._parse_model(BoardView, data)
|
|
539
|
+
|
|
540
|
+
def delete_view(self, board_id: str, view_id: str) -> None:
|
|
541
|
+
"""Delete a board view.
|
|
542
|
+
|
|
543
|
+
Args:
|
|
544
|
+
board_id: Board ID.
|
|
545
|
+
view_id: View ID.
|
|
546
|
+
"""
|
|
547
|
+
if not self._client.is_sync:
|
|
548
|
+
raise RuntimeError(
|
|
549
|
+
"Use delete_view_async() for async mode, or pass sync=True to client"
|
|
550
|
+
)
|
|
551
|
+
self._delete_sync(self._build_view_path(board_id, view_id))
|
|
552
|
+
|
|
553
|
+
# -------------------------------------------------------------------------
|
|
554
|
+
# Export/Import with Views
|
|
555
|
+
# -------------------------------------------------------------------------
|
|
556
|
+
|
|
557
|
+
async def export_with_views_async(self, board_id: str) -> dict[str, Any]:
|
|
558
|
+
"""Export board with views included (async).
|
|
559
|
+
|
|
560
|
+
Returns a dictionary suitable for JSON serialization and import,
|
|
561
|
+
including all board data and associated views.
|
|
562
|
+
|
|
563
|
+
Args:
|
|
564
|
+
board_id: Board ID
|
|
565
|
+
|
|
566
|
+
Returns:
|
|
567
|
+
Dict with board data and views (IDs stripped for portability)
|
|
568
|
+
|
|
569
|
+
Example:
|
|
570
|
+
>>> data = await client.boards.export_with_views_async("board-123")
|
|
571
|
+
>>> with open("board.json", "w") as f:
|
|
572
|
+
... json.dump(data, f, indent=2)
|
|
573
|
+
"""
|
|
574
|
+
board = await self.get_async(board_id)
|
|
575
|
+
views = await self.list_views_async(board_id)
|
|
576
|
+
|
|
577
|
+
# Export board without IDs and timestamps for portability
|
|
578
|
+
data = board.model_dump(exclude={"id", "created_at", "updated_at"}, mode="json")
|
|
579
|
+
|
|
580
|
+
# Add views (without IDs)
|
|
581
|
+
if views:
|
|
582
|
+
data["views"] = [v.model_dump(exclude={"id"}, mode="json") for v in views]
|
|
583
|
+
|
|
584
|
+
return data
|
|
585
|
+
|
|
586
|
+
def export_with_views(self, board_id: str) -> dict[str, Any]:
|
|
587
|
+
"""Export board with views included (sync).
|
|
588
|
+
|
|
589
|
+
Returns a dictionary suitable for JSON serialization and import,
|
|
590
|
+
including all board data and associated views.
|
|
591
|
+
|
|
592
|
+
Args:
|
|
593
|
+
board_id: Board ID
|
|
594
|
+
|
|
595
|
+
Returns:
|
|
596
|
+
Dict with board data and views (IDs stripped for portability)
|
|
597
|
+
"""
|
|
598
|
+
if not self._client.is_sync:
|
|
599
|
+
raise RuntimeError(
|
|
600
|
+
"Use export_with_views_async() for async mode, or pass sync=True to client"
|
|
601
|
+
)
|
|
602
|
+
import asyncio
|
|
603
|
+
|
|
604
|
+
return asyncio.run(self.export_with_views_async(board_id))
|
honeycomb/resources/datasets.py
CHANGED
|
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
|
-
from ..models.datasets import Dataset, DatasetCreate
|
|
7
|
+
from ..models.datasets import Dataset, DatasetCreate, DatasetUpdate
|
|
8
8
|
from .base import BaseResource
|
|
9
9
|
|
|
10
10
|
if TYPE_CHECKING:
|
|
@@ -40,6 +40,14 @@ class DatasetsResource(BaseResource):
|
|
|
40
40
|
# Async methods
|
|
41
41
|
# -------------------------------------------------------------------------
|
|
42
42
|
|
|
43
|
+
def _parse_dataset(self, data: dict) -> Dataset:
|
|
44
|
+
"""Parse a dataset from API response, handling nested settings."""
|
|
45
|
+
return Dataset.from_api_response(data)
|
|
46
|
+
|
|
47
|
+
def _parse_dataset_list(self, data: list) -> list[Dataset]:
|
|
48
|
+
"""Parse a list of datasets from API response."""
|
|
49
|
+
return [self._parse_dataset(item) for item in data]
|
|
50
|
+
|
|
43
51
|
async def list_async(self) -> list[Dataset]:
|
|
44
52
|
"""List all datasets (async).
|
|
45
53
|
|
|
@@ -47,7 +55,7 @@ class DatasetsResource(BaseResource):
|
|
|
47
55
|
List of Dataset objects.
|
|
48
56
|
"""
|
|
49
57
|
data = await self._get_async(self._build_path())
|
|
50
|
-
return self.
|
|
58
|
+
return self._parse_dataset_list(data)
|
|
51
59
|
|
|
52
60
|
async def get_async(self, slug: str) -> Dataset:
|
|
53
61
|
"""Get a specific dataset (async).
|
|
@@ -59,7 +67,7 @@ class DatasetsResource(BaseResource):
|
|
|
59
67
|
Dataset object.
|
|
60
68
|
"""
|
|
61
69
|
data = await self._get_async(self._build_path(slug))
|
|
62
|
-
return self.
|
|
70
|
+
return self._parse_dataset(data)
|
|
63
71
|
|
|
64
72
|
async def create_async(self, dataset: DatasetCreate) -> Dataset:
|
|
65
73
|
"""Create a new dataset (async).
|
|
@@ -71,9 +79,9 @@ class DatasetsResource(BaseResource):
|
|
|
71
79
|
Created Dataset object.
|
|
72
80
|
"""
|
|
73
81
|
data = await self._post_async(self._build_path(), json=dataset.model_dump_for_api())
|
|
74
|
-
return self.
|
|
82
|
+
return self._parse_dataset(data)
|
|
75
83
|
|
|
76
|
-
async def update_async(self, slug: str, dataset: DatasetCreate) -> Dataset:
|
|
84
|
+
async def update_async(self, slug: str, dataset: DatasetCreate | DatasetUpdate) -> Dataset:
|
|
77
85
|
"""Update an existing dataset (async).
|
|
78
86
|
|
|
79
87
|
Args:
|
|
@@ -84,7 +92,20 @@ class DatasetsResource(BaseResource):
|
|
|
84
92
|
Updated Dataset object.
|
|
85
93
|
"""
|
|
86
94
|
data = await self._put_async(self._build_path(slug), json=dataset.model_dump_for_api())
|
|
87
|
-
return self.
|
|
95
|
+
return self._parse_dataset(data)
|
|
96
|
+
|
|
97
|
+
async def set_delete_protected_async(self, slug: str, protected: bool) -> Dataset:
|
|
98
|
+
"""Set delete protection on a dataset (async).
|
|
99
|
+
|
|
100
|
+
Args:
|
|
101
|
+
slug: Dataset slug.
|
|
102
|
+
protected: True to enable delete protection, False to disable.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
Updated Dataset object.
|
|
106
|
+
"""
|
|
107
|
+
update = DatasetUpdate(delete_protected=protected)
|
|
108
|
+
return await self.update_async(slug=slug, dataset=update)
|
|
88
109
|
|
|
89
110
|
async def delete_async(self, slug: str) -> None:
|
|
90
111
|
"""Delete a dataset (async).
|
|
@@ -107,7 +128,7 @@ class DatasetsResource(BaseResource):
|
|
|
107
128
|
if not self._client.is_sync:
|
|
108
129
|
raise RuntimeError("Use list_async() for async mode, or pass sync=True to client")
|
|
109
130
|
data = self._get_sync(self._build_path())
|
|
110
|
-
return self.
|
|
131
|
+
return self._parse_dataset_list(data)
|
|
111
132
|
|
|
112
133
|
def get(self, slug: str) -> Dataset:
|
|
113
134
|
"""Get a specific dataset.
|
|
@@ -121,7 +142,7 @@ class DatasetsResource(BaseResource):
|
|
|
121
142
|
if not self._client.is_sync:
|
|
122
143
|
raise RuntimeError("Use get_async() for async mode, or pass sync=True to client")
|
|
123
144
|
data = self._get_sync(self._build_path(slug))
|
|
124
|
-
return self.
|
|
145
|
+
return self._parse_dataset(data)
|
|
125
146
|
|
|
126
147
|
def create(self, dataset: DatasetCreate) -> Dataset:
|
|
127
148
|
"""Create a new dataset.
|
|
@@ -135,9 +156,9 @@ class DatasetsResource(BaseResource):
|
|
|
135
156
|
if not self._client.is_sync:
|
|
136
157
|
raise RuntimeError("Use create_async() for async mode, or pass sync=True to client")
|
|
137
158
|
data = self._post_sync(self._build_path(), json=dataset.model_dump_for_api())
|
|
138
|
-
return self.
|
|
159
|
+
return self._parse_dataset(data)
|
|
139
160
|
|
|
140
|
-
def update(self, slug: str, dataset: DatasetCreate) -> Dataset:
|
|
161
|
+
def update(self, slug: str, dataset: DatasetCreate | DatasetUpdate) -> Dataset:
|
|
141
162
|
"""Update an existing dataset.
|
|
142
163
|
|
|
143
164
|
Args:
|
|
@@ -150,7 +171,24 @@ class DatasetsResource(BaseResource):
|
|
|
150
171
|
if not self._client.is_sync:
|
|
151
172
|
raise RuntimeError("Use update_async() for async mode, or pass sync=True to client")
|
|
152
173
|
data = self._put_sync(self._build_path(slug), json=dataset.model_dump_for_api())
|
|
153
|
-
return self.
|
|
174
|
+
return self._parse_dataset(data)
|
|
175
|
+
|
|
176
|
+
def set_delete_protected(self, slug: str, protected: bool) -> Dataset:
|
|
177
|
+
"""Set delete protection on a dataset.
|
|
178
|
+
|
|
179
|
+
Args:
|
|
180
|
+
slug: Dataset slug.
|
|
181
|
+
protected: True to enable delete protection, False to disable.
|
|
182
|
+
|
|
183
|
+
Returns:
|
|
184
|
+
Updated Dataset object.
|
|
185
|
+
"""
|
|
186
|
+
if not self._client.is_sync:
|
|
187
|
+
raise RuntimeError(
|
|
188
|
+
"Use set_delete_protected_async() for async mode, or pass sync=True to client"
|
|
189
|
+
)
|
|
190
|
+
update = DatasetUpdate(delete_protected=protected)
|
|
191
|
+
return self.update(slug=slug, dataset=update)
|
|
154
192
|
|
|
155
193
|
def delete(self, slug: str) -> None:
|
|
156
194
|
"""Delete a dataset.
|