honeycomb-api 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- honeycomb/__init__.py +217 -0
- honeycomb/_generated/__init__.py +8 -0
- honeycomb/_generated/api/__init__.py +1 -0
- honeycomb/_generated/api/auth/__init__.py +0 -0
- honeycomb/_generated/api/auth/get_auth.py +172 -0
- honeycomb/_generated/api/auth/get_v2_auth.py +168 -0
- honeycomb/_generated/api/boards/__init__.py +0 -0
- honeycomb/_generated/api/boards/create_board.py +217 -0
- honeycomb/_generated/api/boards/create_board_view.py +237 -0
- honeycomb/_generated/api/boards/delete_board.py +191 -0
- honeycomb/_generated/api/boards/delete_board_view.py +210 -0
- honeycomb/_generated/api/boards/get_board.py +208 -0
- honeycomb/_generated/api/boards/get_board_view.py +214 -0
- honeycomb/_generated/api/boards/list_board_views.py +206 -0
- honeycomb/_generated/api/boards/list_boards.py +177 -0
- honeycomb/_generated/api/boards/update_board.py +238 -0
- honeycomb/_generated/api/boards/update_board_view.py +250 -0
- honeycomb/_generated/api/burn_alerts/__init__.py +0 -0
- honeycomb/_generated/api/burn_alerts/create_burn_alert.py +224 -0
- honeycomb/_generated/api/burn_alerts/delete_burn_alert.py +204 -0
- honeycomb/_generated/api/burn_alerts/get_burn_alert.py +208 -0
- honeycomb/_generated/api/burn_alerts/list_burn_alerts_by_slo.py +220 -0
- honeycomb/_generated/api/calculated_fields/__init__.py +0 -0
- honeycomb/_generated/api/calculated_fields/create_calculated_field.py +239 -0
- honeycomb/_generated/api/calculated_fields/delete_calculated_field.py +225 -0
- honeycomb/_generated/api/calculated_fields/get_calculated_field.py +207 -0
- honeycomb/_generated/api/calculated_fields/list_calculated_fields.py +252 -0
- honeycomb/_generated/api/calculated_fields/update_calculated_field.py +242 -0
- honeycomb/_generated/api/columns/__init__.py +0 -0
- honeycomb/_generated/api/columns/create_column.py +241 -0
- honeycomb/_generated/api/columns/delete_column.py +221 -0
- honeycomb/_generated/api/columns/get_column.py +206 -0
- honeycomb/_generated/api/columns/list_columns.py +256 -0
- honeycomb/_generated/api/columns/update_column.py +242 -0
- honeycomb/_generated/api/dataset_definitions/__init__.py +0 -0
- honeycomb/_generated/api/dataset_definitions/list_dataset_definitions.py +193 -0
- honeycomb/_generated/api/dataset_definitions/patch_dataset_definitions.py +235 -0
- honeycomb/_generated/api/datasets/__init__.py +0 -0
- honeycomb/_generated/api/datasets/create_dataset.py +227 -0
- honeycomb/_generated/api/datasets/delete_dataset.py +251 -0
- honeycomb/_generated/api/datasets/get_dataset.py +195 -0
- honeycomb/_generated/api/datasets/list_datasets.py +177 -0
- honeycomb/_generated/api/datasets/update_dataset.py +217 -0
- honeycomb/_generated/api/enhance/__init__.py +0 -0
- honeycomb/_generated/api/enhance/record_enhance_indexer_usage.py +231 -0
- honeycomb/_generated/api/environments/__init__.py +0 -0
- honeycomb/_generated/api/environments/create_environment.py +247 -0
- honeycomb/_generated/api/environments/delete_environment.py +245 -0
- honeycomb/_generated/api/environments/get_environment.py +213 -0
- honeycomb/_generated/api/environments/list_environments.py +245 -0
- honeycomb/_generated/api/environments/update_environment.py +254 -0
- honeycomb/_generated/api/events/__init__.py +0 -0
- honeycomb/_generated/api/events/create_event.py +269 -0
- honeycomb/_generated/api/events/create_events.py +314 -0
- honeycomb/_generated/api/key_management/__init__.py +0 -0
- honeycomb/_generated/api/key_management/create_api_key.py +286 -0
- honeycomb/_generated/api/key_management/delete_api_key.py +223 -0
- honeycomb/_generated/api/key_management/get_api_key.py +225 -0
- honeycomb/_generated/api/key_management/list_api_keys.py +281 -0
- honeycomb/_generated/api/key_management/update_api_key.py +270 -0
- honeycomb/_generated/api/kinesis_events/__init__.py +0 -0
- honeycomb/_generated/api/kinesis_events/create_kinesis_events.py +220 -0
- honeycomb/_generated/api/marker_settings/__init__.py +0 -0
- honeycomb/_generated/api/marker_settings/create_marker_setting.py +209 -0
- honeycomb/_generated/api/marker_settings/delete_marker_settings.py +194 -0
- honeycomb/_generated/api/marker_settings/list_marker_settings.py +186 -0
- honeycomb/_generated/api/marker_settings/update_marker_settings.py +230 -0
- honeycomb/_generated/api/markers/__init__.py +0 -0
- honeycomb/_generated/api/markers/create_marker.py +220 -0
- honeycomb/_generated/api/markers/create_marker_v2.py +253 -0
- honeycomb/_generated/api/markers/delete_marker.py +200 -0
- honeycomb/_generated/api/markers/get_marker.py +194 -0
- honeycomb/_generated/api/markers/update_marker.py +233 -0
- honeycomb/_generated/api/markers/update_marker_v2.py +262 -0
- honeycomb/_generated/api/pipelines/__init__.py +0 -0
- honeycomb/_generated/api/pipelines/get_pipeline_configuration.py +306 -0
- honeycomb/_generated/api/pipelines/record_pipeline_usage.py +244 -0
- honeycomb/_generated/api/pipelines/update_pipeline_configuration_rollout.py +261 -0
- honeycomb/_generated/api/queries/__init__.py +0 -0
- honeycomb/_generated/api/queries/create_query.py +224 -0
- honeycomb/_generated/api/queries/get_query.py +208 -0
- honeycomb/_generated/api/query_annotations/__init__.py +0 -0
- honeycomb/_generated/api/query_annotations/create_query_annotation.py +226 -0
- honeycomb/_generated/api/query_annotations/delete_query_annotation.py +198 -0
- honeycomb/_generated/api/query_annotations/get_query_annotation.py +202 -0
- honeycomb/_generated/api/query_annotations/list_query_annotations.py +217 -0
- honeycomb/_generated/api/query_annotations/update_query_annotation.py +237 -0
- honeycomb/_generated/api/query_data/__init__.py +0 -0
- honeycomb/_generated/api/query_data/create_query_result.py +247 -0
- honeycomb/_generated/api/query_data/get_query_result.py +208 -0
- honeycomb/_generated/api/recipients/__init__.py +0 -0
- honeycomb/_generated/api/recipients/create_recipient.py +317 -0
- honeycomb/_generated/api/recipients/delete_recipient.py +199 -0
- honeycomb/_generated/api/recipients/get_recipient.py +252 -0
- honeycomb/_generated/api/recipients/list_recipients.py +230 -0
- honeycomb/_generated/api/recipients/update_recipient.py +323 -0
- honeycomb/_generated/api/reporting/__init__.py +0 -0
- honeycomb/_generated/api/reporting/get_slo_history.py +218 -0
- honeycomb/_generated/api/service_maps/__init__.py +0 -0
- honeycomb/_generated/api/service_maps/create_map_dependency_request.py +252 -0
- honeycomb/_generated/api/service_maps/get_map_dependencies.py +265 -0
- honeycomb/_generated/api/sl_os/__init__.py +0 -0
- honeycomb/_generated/api/sl_os/create_slo.py +229 -0
- honeycomb/_generated/api/sl_os/delete_slo.py +210 -0
- honeycomb/_generated/api/sl_os/get_slo.py +256 -0
- honeycomb/_generated/api/sl_os/list_slos.py +210 -0
- honeycomb/_generated/api/sl_os/update_slo.py +242 -0
- honeycomb/_generated/api/triggers/__init__.py +0 -0
- honeycomb/_generated/api/triggers/create_trigger.py +250 -0
- honeycomb/_generated/api/triggers/delete_trigger.py +204 -0
- honeycomb/_generated/api/triggers/get_trigger.py +214 -0
- honeycomb/_generated/api/triggers/list_triggers.py +206 -0
- honeycomb/_generated/api/triggers/list_triggers_with_recipient.py +208 -0
- honeycomb/_generated/api/triggers/update_trigger.py +248 -0
- honeycomb/_generated/client.py +271 -0
- honeycomb/_generated/errors.py +14 -0
- honeycomb/_generated/models/__init__.py +561 -0
- honeycomb/_generated/models/api_key_create_request.py +78 -0
- honeycomb/_generated/models/api_key_create_request_data.py +130 -0
- honeycomb/_generated/models/api_key_create_request_data_relationships.py +78 -0
- honeycomb/_generated/models/api_key_create_request_data_type.py +7 -0
- honeycomb/_generated/models/api_key_list_response.py +112 -0
- honeycomb/_generated/models/api_key_object.py +189 -0
- honeycomb/_generated/models/api_key_object_links.py +74 -0
- honeycomb/_generated/models/api_key_object_relationships.py +150 -0
- honeycomb/_generated/models/api_key_object_type.py +7 -0
- honeycomb/_generated/models/api_key_response.py +78 -0
- honeycomb/_generated/models/api_key_update_request.py +104 -0
- honeycomb/_generated/models/auth.py +140 -0
- honeycomb/_generated/models/auth_api_key_access.py +154 -0
- honeycomb/_generated/models/auth_environment.py +82 -0
- honeycomb/_generated/models/auth_team.py +82 -0
- honeycomb/_generated/models/auth_type.py +8 -0
- honeycomb/_generated/models/auth_v2_response.py +108 -0
- honeycomb/_generated/models/auth_v2_response_data.py +122 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes.py +141 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes_key_type.py +7 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/auth_v2_response_data_relationships.py +59 -0
- honeycomb/_generated/models/auth_v2_response_data_type.py +7 -0
- honeycomb/_generated/models/base_trigger.py +367 -0
- honeycomb/_generated/models/base_trigger_alert_type.py +8 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0.py +92 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0_offset_minutes.py +10 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0_type.py +8 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule.py +83 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_type.py +8 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_window.py +103 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_window_days_of_week_item.py +13 -0
- honeycomb/_generated/models/base_trigger_threshold.py +95 -0
- honeycomb/_generated/models/base_trigger_threshold_op.py +10 -0
- honeycomb/_generated/models/batch_event.py +110 -0
- honeycomb/_generated/models/board.py +276 -0
- honeycomb/_generated/models/board_layout_generation.py +8 -0
- honeycomb/_generated/models/board_links.py +74 -0
- honeycomb/_generated/models/board_panel_position.py +104 -0
- honeycomb/_generated/models/board_query_visualization_settings.py +141 -0
- honeycomb/_generated/models/board_query_visualization_settings_charts_item.py +113 -0
- honeycomb/_generated/models/board_query_visualization_settings_charts_item_chart_type.py +13 -0
- honeycomb/_generated/models/board_type.py +7 -0
- honeycomb/_generated/models/board_view_filter.py +93 -0
- honeycomb/_generated/models/board_view_filter_operation.py +22 -0
- honeycomb/_generated/models/board_view_response.py +111 -0
- honeycomb/_generated/models/budget_rate.py +189 -0
- honeycomb/_generated/models/budget_rate_alert_type.py +8 -0
- honeycomb/_generated/models/burn_alert_shared_params.py +136 -0
- honeycomb/_generated/models/calculated_field.py +117 -0
- honeycomb/_generated/models/configuration_key_attributes.py +140 -0
- honeycomb/_generated/models/configuration_key_attributes_key_type.py +7 -0
- honeycomb/_generated/models/configuration_key_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/create_board_view_request.py +96 -0
- honeycomb/_generated/models/create_budget_rate_burn_alert_request.py +232 -0
- honeycomb/_generated/models/create_budget_rate_burn_alert_request_slo.py +74 -0
- honeycomb/_generated/models/create_column.py +149 -0
- honeycomb/_generated/models/create_column_type.py +11 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request.py +78 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data.py +90 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes.py +97 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data.py +88 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item.py +89 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +89 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +97 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +102 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +7 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +105 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item.py +87 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item_value.py +73 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_type.py +7 -0
- honeycomb/_generated/models/create_environment_request.py +78 -0
- honeycomb/_generated/models/create_environment_request_data.py +90 -0
- honeycomb/_generated/models/create_environment_request_data_attributes.py +102 -0
- honeycomb/_generated/models/create_environment_request_data_type.py +7 -0
- honeycomb/_generated/models/create_events_content_encoding.py +8 -0
- honeycomb/_generated/models/create_events_response_200_item.py +82 -0
- honeycomb/_generated/models/create_exhaustion_time_burn_alert_request.py +217 -0
- honeycomb/_generated/models/create_exhaustion_time_burn_alert_request_slo.py +74 -0
- honeycomb/_generated/models/create_map_dependencies_request.py +128 -0
- honeycomb/_generated/models/create_map_dependencies_response.py +97 -0
- honeycomb/_generated/models/create_map_dependencies_response_status.py +9 -0
- honeycomb/_generated/models/create_pipeline_health_record_request.py +78 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data.py +98 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes.py +88 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data.py +88 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item.py +89 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +89 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +97 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +102 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +7 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +105 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item.py +87 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item_value.py +73 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_type.py +7 -0
- honeycomb/_generated/models/create_query_result_request.py +118 -0
- honeycomb/_generated/models/dataset.py +183 -0
- honeycomb/_generated/models/dataset_creation_payload.py +93 -0
- honeycomb/_generated/models/dataset_definition_type_1.py +96 -0
- honeycomb/_generated/models/dataset_definition_type_1_column_type.py +8 -0
- honeycomb/_generated/models/dataset_definitions.py +599 -0
- honeycomb/_generated/models/dataset_relationship.py +79 -0
- honeycomb/_generated/models/dataset_relationship_data.py +82 -0
- honeycomb/_generated/models/dataset_relationship_data_type.py +7 -0
- honeycomb/_generated/models/dataset_settings.py +73 -0
- honeycomb/_generated/models/dataset_update_payload.py +105 -0
- honeycomb/_generated/models/dataset_update_payload_settings.py +73 -0
- honeycomb/_generated/models/detailed_error.py +115 -0
- honeycomb/_generated/models/email_recipient.py +160 -0
- honeycomb/_generated/models/email_recipient_details.py +71 -0
- honeycomb/_generated/models/email_recipient_type.py +7 -0
- honeycomb/_generated/models/environment.py +112 -0
- honeycomb/_generated/models/environment_attributes.py +140 -0
- honeycomb/_generated/models/environment_attributes_color_type_1.py +7 -0
- honeycomb/_generated/models/environment_attributes_settings.py +70 -0
- honeycomb/_generated/models/environment_color.py +16 -0
- honeycomb/_generated/models/environment_links.py +70 -0
- honeycomb/_generated/models/environment_list_response.py +112 -0
- honeycomb/_generated/models/environment_relationship.py +79 -0
- honeycomb/_generated/models/environment_relationship_data.py +82 -0
- honeycomb/_generated/models/environment_relationship_data_type.py +7 -0
- honeycomb/_generated/models/environment_response.py +78 -0
- honeycomb/_generated/models/environment_type.py +7 -0
- honeycomb/_generated/models/error.py +74 -0
- honeycomb/_generated/models/event.py +71 -0
- honeycomb/_generated/models/exhaustion_time.py +174 -0
- honeycomb/_generated/models/exhaustion_time_alert_type.py +8 -0
- honeycomb/_generated/models/exhaustion_time_burn_alert_list_response.py +198 -0
- honeycomb/_generated/models/exhaustion_time_burn_alert_list_response_slo.py +77 -0
- honeycomb/_generated/models/filter_op.py +22 -0
- honeycomb/_generated/models/get_map_dependencies_response.py +169 -0
- honeycomb/_generated/models/get_map_dependencies_response_status.py +9 -0
- honeycomb/_generated/models/having_calculate_op.py +29 -0
- honeycomb/_generated/models/having_op.py +12 -0
- honeycomb/_generated/models/included_resource.py +106 -0
- honeycomb/_generated/models/included_resource_attributes.py +62 -0
- honeycomb/_generated/models/ingest_key_attributes.py +153 -0
- honeycomb/_generated/models/ingest_key_attributes_key_type.py +7 -0
- honeycomb/_generated/models/ingest_key_attributes_permissions.py +74 -0
- honeycomb/_generated/models/ingest_key_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/ingest_key_type.py +90 -0
- honeycomb/_generated/models/ingest_key_type_key_type.py +7 -0
- honeycomb/_generated/models/jsonapi_error_source.py +92 -0
- honeycomb/_generated/models/kinesis_event.py +111 -0
- honeycomb/_generated/models/kinesis_event_record.py +73 -0
- honeycomb/_generated/models/kinesis_response.py +91 -0
- honeycomb/_generated/models/list_api_keys_filtertype.py +8 -0
- honeycomb/_generated/models/map_dependency.py +118 -0
- honeycomb/_generated/models/map_node.py +97 -0
- honeycomb/_generated/models/map_node_type.py +7 -0
- honeycomb/_generated/models/marker.py +151 -0
- honeycomb/_generated/models/marker_create_request.py +78 -0
- honeycomb/_generated/models/marker_create_request_data.py +104 -0
- honeycomb/_generated/models/marker_create_request_data_attributes.py +110 -0
- honeycomb/_generated/models/marker_create_request_data_relationships.py +92 -0
- honeycomb/_generated/models/marker_create_request_data_type.py +7 -0
- honeycomb/_generated/models/marker_object.py +136 -0
- honeycomb/_generated/models/marker_object_attributes.py +146 -0
- honeycomb/_generated/models/marker_object_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/marker_object_links.py +74 -0
- honeycomb/_generated/models/marker_object_relationships.py +111 -0
- honeycomb/_generated/models/marker_object_relationships_dataset.py +104 -0
- honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0.py +94 -0
- honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0_type.py +7 -0
- honeycomb/_generated/models/marker_object_type.py +7 -0
- honeycomb/_generated/models/marker_response.py +78 -0
- honeycomb/_generated/models/marker_setting.py +125 -0
- honeycomb/_generated/models/marker_update_request.py +78 -0
- honeycomb/_generated/models/marker_update_request_data.py +104 -0
- honeycomb/_generated/models/marker_update_request_data_attributes.py +111 -0
- honeycomb/_generated/models/marker_update_request_data_relationships.py +92 -0
- honeycomb/_generated/models/marker_update_request_data_type.py +7 -0
- honeycomb/_generated/models/ms_teams_recipient.py +161 -0
- honeycomb/_generated/models/ms_teams_recipient_details.py +80 -0
- honeycomb/_generated/models/ms_teams_recipient_type.py +7 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient.py +161 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient_details.py +80 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient_type.py +7 -0
- honeycomb/_generated/models/notification_recipient.py +131 -0
- honeycomb/_generated/models/notification_recipient_details.py +117 -0
- honeycomb/_generated/models/notification_recipient_details_pagerduty_severity.py +10 -0
- honeycomb/_generated/models/notification_recipient_details_variables_item.py +81 -0
- honeycomb/_generated/models/pager_duty_recipient.py +160 -0
- honeycomb/_generated/models/pager_duty_recipient_details.py +79 -0
- honeycomb/_generated/models/pager_duty_recipient_type.py +7 -0
- honeycomb/_generated/models/pagination_links.py +80 -0
- honeycomb/_generated/models/payload_template.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_response.py +112 -0
- honeycomb/_generated/models/pipeline_configuration_response_attributes.py +101 -0
- honeycomb/_generated/models/pipeline_configuration_response_attributes_configs_item.py +85 -0
- honeycomb/_generated/models/pipeline_configuration_response_links.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_response_type.py +7 -0
- honeycomb/_generated/models/pipeline_configuration_rollout.py +112 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_attributes.py +75 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_attributes_status.py +12 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_links.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_type.py +7 -0
- honeycomb/_generated/models/preset_filter.py +78 -0
- honeycomb/_generated/models/query.py +346 -0
- honeycomb/_generated/models/query_annotation.py +166 -0
- honeycomb/_generated/models/query_annotation_source.py +8 -0
- honeycomb/_generated/models/query_calculated_fields_item.py +80 -0
- honeycomb/_generated/models/query_calculations_item.py +98 -0
- honeycomb/_generated/models/query_compare_time_offset_seconds.py +14 -0
- honeycomb/_generated/models/query_filter_combination.py +8 -0
- honeycomb/_generated/models/query_filters_item.py +126 -0
- honeycomb/_generated/models/query_havings_item.py +128 -0
- honeycomb/_generated/models/query_op.py +30 -0
- honeycomb/_generated/models/query_orders_item.py +115 -0
- honeycomb/_generated/models/query_orders_item_order.py +8 -0
- honeycomb/_generated/models/query_panel.py +114 -0
- honeycomb/_generated/models/query_panel_query_panel.py +143 -0
- honeycomb/_generated/models/query_panel_query_panel_query_style.py +9 -0
- honeycomb/_generated/models/query_result.py +130 -0
- honeycomb/_generated/models/query_result_details.py +156 -0
- honeycomb/_generated/models/query_result_details_data.py +188 -0
- honeycomb/_generated/models/query_result_details_links.py +85 -0
- honeycomb/_generated/models/query_result_links.py +85 -0
- honeycomb/_generated/models/query_results_data.py +89 -0
- honeycomb/_generated/models/query_results_data_data.py +71 -0
- honeycomb/_generated/models/query_results_series.py +97 -0
- honeycomb/_generated/models/recipient_properties.py +137 -0
- honeycomb/_generated/models/recipient_type.py +12 -0
- honeycomb/_generated/models/slack_recipient.py +160 -0
- honeycomb/_generated/models/slack_recipient_details.py +71 -0
- honeycomb/_generated/models/slack_recipient_type.py +7 -0
- honeycomb/_generated/models/slo.py +245 -0
- honeycomb/_generated/models/slo_create.py +245 -0
- honeycomb/_generated/models/slo_create_sli.py +75 -0
- honeycomb/_generated/models/slo_detailed_response.py +312 -0
- honeycomb/_generated/models/slo_detailed_response_status.py +10 -0
- honeycomb/_generated/models/slo_history.py +94 -0
- honeycomb/_generated/models/slo_history_request.py +93 -0
- honeycomb/_generated/models/slo_history_response.py +91 -0
- honeycomb/_generated/models/slo_panel.py +114 -0
- honeycomb/_generated/models/slo_panel_slo_panel.py +75 -0
- honeycomb/_generated/models/slo_sli.py +74 -0
- honeycomb/_generated/models/tag.py +79 -0
- honeycomb/_generated/models/team_relationship.py +78 -0
- honeycomb/_generated/models/team_relationship_team.py +78 -0
- honeycomb/_generated/models/team_relationship_team_data.py +82 -0
- honeycomb/_generated/models/team_relationship_team_data_type.py +7 -0
- honeycomb/_generated/models/template_variable_definition.py +81 -0
- honeycomb/_generated/models/text_panel.py +114 -0
- honeycomb/_generated/models/text_panel_text_panel.py +71 -0
- honeycomb/_generated/models/trigger_response.py +399 -0
- honeycomb/_generated/models/trigger_with_inline_query.py +390 -0
- honeycomb/_generated/models/trigger_with_inline_query_query.py +60 -0
- honeycomb/_generated/models/trigger_with_query_reference.py +376 -0
- honeycomb/_generated/models/update_board_view_request.py +107 -0
- honeycomb/_generated/models/update_environment_request.py +78 -0
- honeycomb/_generated/models/update_environment_request_data.py +98 -0
- honeycomb/_generated/models/update_environment_request_data_attributes.py +118 -0
- honeycomb/_generated/models/update_environment_request_data_attributes_settings.py +73 -0
- honeycomb/_generated/models/update_environment_request_data_type.py +7 -0
- honeycomb/_generated/models/update_exhaustion_time_burn_alert_request.py +202 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout.py +98 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes.py +75 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes_status.py +12 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request.py +78 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data.py +98 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes.py +75 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes_status.py +12 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_type.py +7 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_response.py +78 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_type.py +7 -0
- honeycomb/_generated/models/user_relationship.py +78 -0
- honeycomb/_generated/models/user_relationship_data.py +82 -0
- honeycomb/_generated/models/user_relationship_data_type.py +7 -0
- honeycomb/_generated/models/validation_error.py +145 -0
- honeycomb/_generated/models/validation_error_type_detail_item.py +103 -0
- honeycomb/_generated/models/validation_error_type_detail_item_code.py +10 -0
- honeycomb/_generated/models/webhook_header.py +81 -0
- honeycomb/_generated/models/webhook_recipient.py +160 -0
- honeycomb/_generated/models/webhook_recipient_details.py +142 -0
- honeycomb/_generated/models/webhook_recipient_details_webhook_payloads.py +117 -0
- honeycomb/_generated/models/webhook_recipient_details_webhook_payloads_payload_templates.py +126 -0
- honeycomb/_generated/models/webhook_recipient_type.py +7 -0
- honeycomb/_generated/py.typed +1 -0
- honeycomb/_generated/types.py +46 -0
- honeycomb/auth.py +152 -0
- honeycomb/client.py +736 -0
- honeycomb/exceptions.py +236 -0
- honeycomb/models/__init__.py +157 -0
- honeycomb/models/api_keys.py +81 -0
- honeycomb/models/board_builder.py +387 -0
- honeycomb/models/boards.py +86 -0
- honeycomb/models/burn_alerts.py +124 -0
- honeycomb/models/columns.py +59 -0
- honeycomb/models/datasets.py +51 -0
- honeycomb/models/derived_columns.py +107 -0
- honeycomb/models/environments.py +106 -0
- honeycomb/models/events.py +35 -0
- honeycomb/models/marker_builder.py +136 -0
- honeycomb/models/markers.py +73 -0
- honeycomb/models/queries.py +210 -0
- honeycomb/models/query_annotations.py +63 -0
- honeycomb/models/query_builder.py +840 -0
- honeycomb/models/recipient_builder.py +248 -0
- honeycomb/models/recipients.py +43 -0
- honeycomb/models/service_map_dependencies.py +126 -0
- honeycomb/models/slo_builder.py +463 -0
- honeycomb/models/slos.py +66 -0
- honeycomb/models/tags_mixin.py +79 -0
- honeycomb/models/trigger_builder.py +561 -0
- honeycomb/models/triggers.py +208 -0
- honeycomb/resources/__init__.py +35 -0
- honeycomb/resources/_recipient_utils.py +156 -0
- honeycomb/resources/api_keys.py +303 -0
- honeycomb/resources/base.py +142 -0
- honeycomb/resources/boards.py +350 -0
- honeycomb/resources/burn_alerts.py +205 -0
- honeycomb/resources/columns.py +185 -0
- honeycomb/resources/datasets.py +163 -0
- honeycomb/resources/derived_columns.py +233 -0
- honeycomb/resources/environments.py +295 -0
- honeycomb/resources/events.py +156 -0
- honeycomb/resources/markers.py +334 -0
- honeycomb/resources/queries.py +256 -0
- honeycomb/resources/query_annotations.py +207 -0
- honeycomb/resources/query_results.py +886 -0
- honeycomb/resources/recipients.py +202 -0
- honeycomb/resources/service_map_dependencies.py +389 -0
- honeycomb/resources/slos.py +353 -0
- honeycomb/resources/triggers.py +284 -0
- honeycomb/tools/__init__.py +85 -0
- honeycomb/tools/__main__.py +204 -0
- honeycomb/tools/builders.py +512 -0
- honeycomb/tools/descriptions.py +523 -0
- honeycomb/tools/executor.py +860 -0
- honeycomb/tools/generator.py +2386 -0
- honeycomb/tools/schemas.py +184 -0
- honeycomb_api-0.1.0.dist-info/METADATA +451 -0
- honeycomb_api-0.1.0.dist-info/RECORD +453 -0
- honeycomb_api-0.1.0.dist-info/WHEEL +4 -0
- honeycomb_api-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"""Environments resource for Honeycomb API (v2 team-scoped)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, Any
|
|
6
|
+
from urllib.parse import parse_qs, urlparse
|
|
7
|
+
|
|
8
|
+
from ..models.environments import Environment, EnvironmentCreate, EnvironmentUpdate
|
|
9
|
+
from .base import BaseResource
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from ..client import HoneycombClient
|
|
13
|
+
|
|
14
|
+
# Default page size for pagination (API max is 100)
|
|
15
|
+
DEFAULT_PAGE_SIZE = 100
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class EnvironmentsResource(BaseResource):
|
|
19
|
+
"""Resource for managing environments (v2 team-scoped).
|
|
20
|
+
|
|
21
|
+
This resource requires Management Key authentication and operates
|
|
22
|
+
on a specific team. Environments help organize your data and API keys.
|
|
23
|
+
|
|
24
|
+
Note:
|
|
25
|
+
The list methods automatically paginate through all results. For teams
|
|
26
|
+
with many environments, this may result in multiple API requests. The default
|
|
27
|
+
rate limit is 100 requests per minute per operation. If you need higher
|
|
28
|
+
limits, contact Honeycomb support: https://www.honeycomb.io/support
|
|
29
|
+
|
|
30
|
+
Example (async):
|
|
31
|
+
>>> async with HoneycombClient(
|
|
32
|
+
... management_key="hcamk_xxx",
|
|
33
|
+
... management_secret="xxx"
|
|
34
|
+
... ) as client:
|
|
35
|
+
... envs = await client.environments.list_async(team="my-team")
|
|
36
|
+
... env = await client.environments.create_async(
|
|
37
|
+
... team="my-team",
|
|
38
|
+
... environment=EnvironmentCreate(
|
|
39
|
+
... name="Production",
|
|
40
|
+
... description="Production environment",
|
|
41
|
+
... color=EnvironmentColor.RED
|
|
42
|
+
... )
|
|
43
|
+
... )
|
|
44
|
+
|
|
45
|
+
Example (sync):
|
|
46
|
+
>>> with HoneycombClient(
|
|
47
|
+
... management_key="hcamk_xxx",
|
|
48
|
+
... management_secret="xxx",
|
|
49
|
+
... sync=True
|
|
50
|
+
... ) as client:
|
|
51
|
+
... envs = client.environments.list(team="my-team")
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
def __init__(self, client: HoneycombClient) -> None:
|
|
55
|
+
super().__init__(client)
|
|
56
|
+
|
|
57
|
+
def _build_path(self, team: str, env_id: str | None = None) -> str:
|
|
58
|
+
"""Build API path for environments."""
|
|
59
|
+
base = f"/2/teams/{team}/environments"
|
|
60
|
+
if env_id:
|
|
61
|
+
return f"{base}/{env_id}"
|
|
62
|
+
return base
|
|
63
|
+
|
|
64
|
+
def _extract_cursor(self, next_link: str | None) -> str | None:
|
|
65
|
+
"""Extract cursor value from pagination next link."""
|
|
66
|
+
if not next_link:
|
|
67
|
+
return None
|
|
68
|
+
parsed = urlparse(next_link)
|
|
69
|
+
query_params = parse_qs(parsed.query)
|
|
70
|
+
cursor_values = query_params.get("page[after]", [])
|
|
71
|
+
return cursor_values[0] if cursor_values else None
|
|
72
|
+
|
|
73
|
+
def _build_params(
|
|
74
|
+
self,
|
|
75
|
+
cursor: str | None = None,
|
|
76
|
+
page_size: int = DEFAULT_PAGE_SIZE,
|
|
77
|
+
) -> dict[str, Any]:
|
|
78
|
+
"""Build query parameters for list requests."""
|
|
79
|
+
params: dict[str, Any] = {"page[size]": page_size}
|
|
80
|
+
if cursor:
|
|
81
|
+
params["page[after]"] = cursor
|
|
82
|
+
return params
|
|
83
|
+
|
|
84
|
+
# -------------------------------------------------------------------------
|
|
85
|
+
# Async methods
|
|
86
|
+
# -------------------------------------------------------------------------
|
|
87
|
+
|
|
88
|
+
async def list_async(self, team: str) -> list[Environment]:
|
|
89
|
+
"""List all environments for a team (async).
|
|
90
|
+
|
|
91
|
+
Automatically paginates through all results. For teams with many environments,
|
|
92
|
+
this may result in multiple API requests.
|
|
93
|
+
|
|
94
|
+
Args:
|
|
95
|
+
team: Team slug.
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
List of Environment objects.
|
|
99
|
+
|
|
100
|
+
Note:
|
|
101
|
+
The default rate limit is 100 requests per minute per operation.
|
|
102
|
+
Contact Honeycomb support for higher limits: https://www.honeycomb.io/support
|
|
103
|
+
"""
|
|
104
|
+
results: list[Environment] = []
|
|
105
|
+
cursor: str | None = None
|
|
106
|
+
path = self._build_path(team)
|
|
107
|
+
|
|
108
|
+
while True:
|
|
109
|
+
params = self._build_params(cursor=cursor)
|
|
110
|
+
data = await self._get_async(path, params=params)
|
|
111
|
+
|
|
112
|
+
# Parse JSON:API response
|
|
113
|
+
if isinstance(data, dict) and "data" in data:
|
|
114
|
+
items = data["data"]
|
|
115
|
+
results.extend(Environment.from_jsonapi({"data": item}) for item in items)
|
|
116
|
+
|
|
117
|
+
# Check for next page
|
|
118
|
+
next_link = data.get("links", {}).get("next")
|
|
119
|
+
cursor = self._extract_cursor(next_link)
|
|
120
|
+
if not cursor:
|
|
121
|
+
break
|
|
122
|
+
else:
|
|
123
|
+
break
|
|
124
|
+
|
|
125
|
+
return results
|
|
126
|
+
|
|
127
|
+
async def get_async(self, team: str, env_id: str) -> Environment:
|
|
128
|
+
"""Get a specific environment (async).
|
|
129
|
+
|
|
130
|
+
Args:
|
|
131
|
+
team: Team slug.
|
|
132
|
+
env_id: Environment ID.
|
|
133
|
+
|
|
134
|
+
Returns:
|
|
135
|
+
Environment object.
|
|
136
|
+
"""
|
|
137
|
+
data = await self._get_async(self._build_path(team, env_id))
|
|
138
|
+
return Environment.from_jsonapi(data)
|
|
139
|
+
|
|
140
|
+
async def create_async(self, team: str, environment: EnvironmentCreate) -> Environment:
|
|
141
|
+
"""Create a new environment (async).
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
team: Team slug.
|
|
145
|
+
environment: Environment configuration.
|
|
146
|
+
|
|
147
|
+
Returns:
|
|
148
|
+
Created Environment object.
|
|
149
|
+
"""
|
|
150
|
+
data = await self._post_async(
|
|
151
|
+
self._build_path(team),
|
|
152
|
+
json=environment.to_jsonapi(),
|
|
153
|
+
headers={"Content-Type": "application/vnd.api+json"},
|
|
154
|
+
)
|
|
155
|
+
return Environment.from_jsonapi(data)
|
|
156
|
+
|
|
157
|
+
async def update_async(
|
|
158
|
+
self, team: str, env_id: str, environment: EnvironmentUpdate
|
|
159
|
+
) -> Environment:
|
|
160
|
+
"""Update an existing environment (async).
|
|
161
|
+
|
|
162
|
+
Args:
|
|
163
|
+
team: Team slug.
|
|
164
|
+
env_id: Environment ID.
|
|
165
|
+
environment: Updated environment configuration.
|
|
166
|
+
|
|
167
|
+
Returns:
|
|
168
|
+
Updated Environment object.
|
|
169
|
+
"""
|
|
170
|
+
data = await self._patch_async(
|
|
171
|
+
self._build_path(team, env_id),
|
|
172
|
+
json=environment.to_jsonapi(env_id),
|
|
173
|
+
headers={"Content-Type": "application/vnd.api+json"},
|
|
174
|
+
)
|
|
175
|
+
return Environment.from_jsonapi(data)
|
|
176
|
+
|
|
177
|
+
async def delete_async(self, team: str, env_id: str) -> None:
|
|
178
|
+
"""Delete an environment (async).
|
|
179
|
+
|
|
180
|
+
Args:
|
|
181
|
+
team: Team slug.
|
|
182
|
+
env_id: Environment ID.
|
|
183
|
+
"""
|
|
184
|
+
await self._delete_async(self._build_path(team, env_id))
|
|
185
|
+
|
|
186
|
+
# -------------------------------------------------------------------------
|
|
187
|
+
# Sync methods
|
|
188
|
+
# -------------------------------------------------------------------------
|
|
189
|
+
|
|
190
|
+
def list(self, team: str) -> list[Environment]:
|
|
191
|
+
"""List all environments for a team.
|
|
192
|
+
|
|
193
|
+
Automatically paginates through all results. For teams with many environments,
|
|
194
|
+
this may result in multiple API requests.
|
|
195
|
+
|
|
196
|
+
Args:
|
|
197
|
+
team: Team slug.
|
|
198
|
+
|
|
199
|
+
Returns:
|
|
200
|
+
List of Environment objects.
|
|
201
|
+
|
|
202
|
+
Note:
|
|
203
|
+
The default rate limit is 100 requests per minute per operation.
|
|
204
|
+
Contact Honeycomb support for higher limits: https://www.honeycomb.io/support
|
|
205
|
+
"""
|
|
206
|
+
if not self._client.is_sync:
|
|
207
|
+
raise RuntimeError("Use list_async() for async mode, or pass sync=True to client")
|
|
208
|
+
|
|
209
|
+
results: list[Environment] = []
|
|
210
|
+
cursor: str | None = None
|
|
211
|
+
path = self._build_path(team)
|
|
212
|
+
|
|
213
|
+
while True:
|
|
214
|
+
params = self._build_params(cursor=cursor)
|
|
215
|
+
data = self._get_sync(path, params=params)
|
|
216
|
+
|
|
217
|
+
# Parse JSON:API response
|
|
218
|
+
if isinstance(data, dict) and "data" in data:
|
|
219
|
+
items = data["data"]
|
|
220
|
+
results.extend(Environment.from_jsonapi({"data": item}) for item in items)
|
|
221
|
+
|
|
222
|
+
# Check for next page
|
|
223
|
+
next_link = data.get("links", {}).get("next")
|
|
224
|
+
cursor = self._extract_cursor(next_link)
|
|
225
|
+
if not cursor:
|
|
226
|
+
break
|
|
227
|
+
else:
|
|
228
|
+
break
|
|
229
|
+
|
|
230
|
+
return results
|
|
231
|
+
|
|
232
|
+
def get(self, team: str, env_id: str) -> Environment:
|
|
233
|
+
"""Get a specific environment.
|
|
234
|
+
|
|
235
|
+
Args:
|
|
236
|
+
team: Team slug.
|
|
237
|
+
env_id: Environment ID.
|
|
238
|
+
|
|
239
|
+
Returns:
|
|
240
|
+
Environment object.
|
|
241
|
+
"""
|
|
242
|
+
if not self._client.is_sync:
|
|
243
|
+
raise RuntimeError("Use get_async() for async mode, or pass sync=True to client")
|
|
244
|
+
data = self._get_sync(self._build_path(team, env_id))
|
|
245
|
+
return Environment.from_jsonapi(data)
|
|
246
|
+
|
|
247
|
+
def create(self, team: str, environment: EnvironmentCreate) -> Environment:
|
|
248
|
+
"""Create a new environment.
|
|
249
|
+
|
|
250
|
+
Args:
|
|
251
|
+
team: Team slug.
|
|
252
|
+
environment: Environment configuration.
|
|
253
|
+
|
|
254
|
+
Returns:
|
|
255
|
+
Created Environment object.
|
|
256
|
+
"""
|
|
257
|
+
if not self._client.is_sync:
|
|
258
|
+
raise RuntimeError("Use create_async() for async mode, or pass sync=True to client")
|
|
259
|
+
data = self._post_sync(
|
|
260
|
+
self._build_path(team),
|
|
261
|
+
json=environment.to_jsonapi(),
|
|
262
|
+
headers={"Content-Type": "application/vnd.api+json"},
|
|
263
|
+
)
|
|
264
|
+
return Environment.from_jsonapi(data)
|
|
265
|
+
|
|
266
|
+
def update(self, team: str, env_id: str, environment: EnvironmentUpdate) -> Environment:
|
|
267
|
+
"""Update an existing environment.
|
|
268
|
+
|
|
269
|
+
Args:
|
|
270
|
+
team: Team slug.
|
|
271
|
+
env_id: Environment ID.
|
|
272
|
+
environment: Updated environment configuration.
|
|
273
|
+
|
|
274
|
+
Returns:
|
|
275
|
+
Updated Environment object.
|
|
276
|
+
"""
|
|
277
|
+
if not self._client.is_sync:
|
|
278
|
+
raise RuntimeError("Use update_async() for async mode, or pass sync=True to client")
|
|
279
|
+
data = self._patch_sync(
|
|
280
|
+
self._build_path(team, env_id),
|
|
281
|
+
json=environment.to_jsonapi(env_id),
|
|
282
|
+
headers={"Content-Type": "application/vnd.api+json"},
|
|
283
|
+
)
|
|
284
|
+
return Environment.from_jsonapi(data)
|
|
285
|
+
|
|
286
|
+
def delete(self, team: str, env_id: str) -> None:
|
|
287
|
+
"""Delete an environment.
|
|
288
|
+
|
|
289
|
+
Args:
|
|
290
|
+
team: Team slug.
|
|
291
|
+
env_id: Environment ID.
|
|
292
|
+
"""
|
|
293
|
+
if not self._client.is_sync:
|
|
294
|
+
raise RuntimeError("Use delete_async() for async mode, or pass sync=True to client")
|
|
295
|
+
self._delete_sync(self._build_path(team, env_id))
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"""Events resource for Honeycomb API (data ingestion)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, Any
|
|
6
|
+
|
|
7
|
+
from ..models.events import BatchEvent, BatchEventResult
|
|
8
|
+
from .base import BaseResource
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from ..client import HoneycombClient
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class EventsResource(BaseResource):
|
|
15
|
+
"""Resource for sending events (data ingestion).
|
|
16
|
+
|
|
17
|
+
Events are the core telemetry data sent to Honeycomb. This resource
|
|
18
|
+
provides methods to send single events or batches of events.
|
|
19
|
+
|
|
20
|
+
Note: Batch sending is highly preferred over single events for efficiency.
|
|
21
|
+
|
|
22
|
+
Example (async):
|
|
23
|
+
>>> async with HoneycombClient(api_key="...") as client:
|
|
24
|
+
... # Send single event
|
|
25
|
+
... await client.events.send(
|
|
26
|
+
... dataset="my-dataset",
|
|
27
|
+
... data={"endpoint": "/api/users", "duration_ms": 42}
|
|
28
|
+
... )
|
|
29
|
+
... # Send batch of events
|
|
30
|
+
... results = await client.events.send_batch(
|
|
31
|
+
... dataset="my-dataset",
|
|
32
|
+
... events=[
|
|
33
|
+
... BatchEvent(data={"endpoint": "/api/users", "duration_ms": 42}),
|
|
34
|
+
... BatchEvent(data={"endpoint": "/api/posts", "duration_ms": 18}),
|
|
35
|
+
... ]
|
|
36
|
+
... )
|
|
37
|
+
|
|
38
|
+
Example (sync):
|
|
39
|
+
>>> with HoneycombClient(api_key="...", sync=True) as client:
|
|
40
|
+
... client.events.send(dataset="my-dataset", data={"key": "value"})
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
def __init__(self, client: HoneycombClient) -> None:
|
|
44
|
+
super().__init__(client)
|
|
45
|
+
|
|
46
|
+
# -------------------------------------------------------------------------
|
|
47
|
+
# Async methods
|
|
48
|
+
# -------------------------------------------------------------------------
|
|
49
|
+
|
|
50
|
+
async def send_async(
|
|
51
|
+
self,
|
|
52
|
+
dataset: str,
|
|
53
|
+
data: dict[str, Any],
|
|
54
|
+
timestamp: int | None = None,
|
|
55
|
+
samplerate: int | None = None,
|
|
56
|
+
) -> None:
|
|
57
|
+
"""Send a single event (async).
|
|
58
|
+
|
|
59
|
+
Note: For production use, prefer send_batch() for better efficiency.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
dataset: Dataset slug.
|
|
63
|
+
data: Event payload (key-value pairs).
|
|
64
|
+
timestamp: Unix timestamp for the event (optional).
|
|
65
|
+
samplerate: Sample rate (optional, defaults to 1).
|
|
66
|
+
"""
|
|
67
|
+
path = f"/1/events/{dataset}"
|
|
68
|
+
headers = {}
|
|
69
|
+
if timestamp is not None:
|
|
70
|
+
headers["X-Honeycomb-Event-Time"] = str(timestamp)
|
|
71
|
+
if samplerate is not None:
|
|
72
|
+
headers["X-Honeycomb-Samplerate"] = str(samplerate)
|
|
73
|
+
|
|
74
|
+
# Single event endpoint returns empty 200, don't try to parse JSON
|
|
75
|
+
await self._client.post_async(path, json=data, headers=headers)
|
|
76
|
+
|
|
77
|
+
async def send_batch_async(
|
|
78
|
+
self, dataset: str, events: list[BatchEvent]
|
|
79
|
+
) -> list[BatchEventResult]:
|
|
80
|
+
"""Send a batch of events (async).
|
|
81
|
+
|
|
82
|
+
This is the preferred method for sending events to Honeycomb.
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
dataset: Dataset slug.
|
|
86
|
+
events: List of BatchEvent objects.
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
List of BatchEventResult objects indicating status for each event.
|
|
90
|
+
"""
|
|
91
|
+
path = f"/1/batch/{dataset}"
|
|
92
|
+
payload = [event.model_dump_for_api() for event in events]
|
|
93
|
+
data = await self._post_async(path, json=payload) # type: ignore[arg-type]
|
|
94
|
+
|
|
95
|
+
# Parse results
|
|
96
|
+
if isinstance(data, list):
|
|
97
|
+
return self._parse_model_list(BatchEventResult, data)
|
|
98
|
+
return []
|
|
99
|
+
|
|
100
|
+
# -------------------------------------------------------------------------
|
|
101
|
+
# Sync methods
|
|
102
|
+
# -------------------------------------------------------------------------
|
|
103
|
+
|
|
104
|
+
def send(
|
|
105
|
+
self,
|
|
106
|
+
dataset: str,
|
|
107
|
+
data: dict[str, Any],
|
|
108
|
+
timestamp: int | None = None,
|
|
109
|
+
samplerate: int | None = None,
|
|
110
|
+
) -> None:
|
|
111
|
+
"""Send a single event.
|
|
112
|
+
|
|
113
|
+
Note: For production use, prefer send_batch() for better efficiency.
|
|
114
|
+
|
|
115
|
+
Args:
|
|
116
|
+
dataset: Dataset slug.
|
|
117
|
+
data: Event payload (key-value pairs).
|
|
118
|
+
timestamp: Unix timestamp for the event (optional).
|
|
119
|
+
samplerate: Sample rate (optional, defaults to 1).
|
|
120
|
+
"""
|
|
121
|
+
if not self._client.is_sync:
|
|
122
|
+
raise RuntimeError("Use send_async() for async mode, or pass sync=True to client")
|
|
123
|
+
|
|
124
|
+
path = f"/1/events/{dataset}"
|
|
125
|
+
headers = {}
|
|
126
|
+
if timestamp is not None:
|
|
127
|
+
headers["X-Honeycomb-Event-Time"] = str(timestamp)
|
|
128
|
+
if samplerate is not None:
|
|
129
|
+
headers["X-Honeycomb-Samplerate"] = str(samplerate)
|
|
130
|
+
|
|
131
|
+
# Single event endpoint returns empty 200, don't try to parse JSON
|
|
132
|
+
self._client.post_sync(path, json=data, headers=headers)
|
|
133
|
+
|
|
134
|
+
def send_batch(self, dataset: str, events: list[BatchEvent]) -> list[BatchEventResult]:
|
|
135
|
+
"""Send a batch of events.
|
|
136
|
+
|
|
137
|
+
This is the preferred method for sending events to Honeycomb.
|
|
138
|
+
|
|
139
|
+
Args:
|
|
140
|
+
dataset: Dataset slug.
|
|
141
|
+
events: List of BatchEvent objects.
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
List of BatchEventResult objects indicating status for each event.
|
|
145
|
+
"""
|
|
146
|
+
if not self._client.is_sync:
|
|
147
|
+
raise RuntimeError("Use send_batch_async() for async mode, or pass sync=True to client")
|
|
148
|
+
|
|
149
|
+
path = f"/1/batch/{dataset}"
|
|
150
|
+
payload = [event.model_dump_for_api() for event in events]
|
|
151
|
+
data = self._post_sync(path, json=payload) # type: ignore[arg-type]
|
|
152
|
+
|
|
153
|
+
# Parse results
|
|
154
|
+
if isinstance(data, list):
|
|
155
|
+
return self._parse_model_list(BatchEventResult, data)
|
|
156
|
+
return []
|