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,303 @@
|
|
|
1
|
+
"""API Keys 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.api_keys import ApiKey, ApiKeyCreate
|
|
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 ApiKeysResource(BaseResource):
|
|
19
|
+
"""Resource for managing API keys (v2 team-scoped).
|
|
20
|
+
|
|
21
|
+
This resource requires Management Key authentication and operates
|
|
22
|
+
on a specific team. API keys can be either ingest keys (for sending data)
|
|
23
|
+
or configuration keys (for API access).
|
|
24
|
+
|
|
25
|
+
Note:
|
|
26
|
+
The list methods automatically paginate through all results. For teams
|
|
27
|
+
with many API keys, this may result in multiple API requests. The default
|
|
28
|
+
rate limit is 100 requests per minute per operation. If you need higher
|
|
29
|
+
limits, contact Honeycomb support: https://www.honeycomb.io/support
|
|
30
|
+
|
|
31
|
+
Example (async):
|
|
32
|
+
>>> async with HoneycombClient(
|
|
33
|
+
... management_key="hcamk_xxx",
|
|
34
|
+
... management_secret="xxx"
|
|
35
|
+
... ) as client:
|
|
36
|
+
... keys = await client.api_keys.list_async(team="my-team")
|
|
37
|
+
... key = await client.api_keys.create_async(
|
|
38
|
+
... team="my-team",
|
|
39
|
+
... api_key=ApiKeyCreate(
|
|
40
|
+
... name="My Ingest Key",
|
|
41
|
+
... key_type=ApiKeyType.INGEST,
|
|
42
|
+
... environment_id="env-123"
|
|
43
|
+
... )
|
|
44
|
+
... )
|
|
45
|
+
|
|
46
|
+
Example (sync):
|
|
47
|
+
>>> with HoneycombClient(
|
|
48
|
+
... management_key="hcamk_xxx",
|
|
49
|
+
... management_secret="xxx",
|
|
50
|
+
... sync=True
|
|
51
|
+
... ) as client:
|
|
52
|
+
... keys = client.api_keys.list(team="my-team")
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
def __init__(self, client: HoneycombClient) -> None:
|
|
56
|
+
super().__init__(client)
|
|
57
|
+
|
|
58
|
+
def _build_path(self, team: str, key_id: str | None = None) -> str:
|
|
59
|
+
"""Build API path for API keys."""
|
|
60
|
+
base = f"/2/teams/{team}/api-keys"
|
|
61
|
+
if key_id:
|
|
62
|
+
return f"{base}/{key_id}"
|
|
63
|
+
return base
|
|
64
|
+
|
|
65
|
+
def _extract_cursor(self, next_link: str | None) -> str | None:
|
|
66
|
+
"""Extract cursor value from pagination next link."""
|
|
67
|
+
if not next_link:
|
|
68
|
+
return None
|
|
69
|
+
parsed = urlparse(next_link)
|
|
70
|
+
query_params = parse_qs(parsed.query)
|
|
71
|
+
cursor_values = query_params.get("page[after]", [])
|
|
72
|
+
return cursor_values[0] if cursor_values else None
|
|
73
|
+
|
|
74
|
+
def _build_params(
|
|
75
|
+
self,
|
|
76
|
+
key_type: str | None = None,
|
|
77
|
+
cursor: str | None = None,
|
|
78
|
+
page_size: int = DEFAULT_PAGE_SIZE,
|
|
79
|
+
) -> dict[str, Any]:
|
|
80
|
+
"""Build query parameters for list requests."""
|
|
81
|
+
params: dict[str, Any] = {"page[size]": page_size}
|
|
82
|
+
if key_type:
|
|
83
|
+
params["filter[type]"] = key_type
|
|
84
|
+
if cursor:
|
|
85
|
+
params["page[after]"] = cursor
|
|
86
|
+
return params
|
|
87
|
+
|
|
88
|
+
# -------------------------------------------------------------------------
|
|
89
|
+
# Async methods
|
|
90
|
+
# -------------------------------------------------------------------------
|
|
91
|
+
|
|
92
|
+
async def list_async(self, team: str, key_type: str | None = None) -> list[ApiKey]:
|
|
93
|
+
"""List all API keys for a team (async).
|
|
94
|
+
|
|
95
|
+
Automatically paginates through all results. For teams with many API keys,
|
|
96
|
+
this may result in multiple API requests.
|
|
97
|
+
|
|
98
|
+
Args:
|
|
99
|
+
team: Team slug.
|
|
100
|
+
key_type: Optional filter by key type ('ingest' or 'configuration').
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
List of ApiKey objects.
|
|
104
|
+
|
|
105
|
+
Note:
|
|
106
|
+
The default rate limit is 100 requests per minute per operation.
|
|
107
|
+
Contact Honeycomb support for higher limits: https://www.honeycomb.io/support
|
|
108
|
+
"""
|
|
109
|
+
results: list[ApiKey] = []
|
|
110
|
+
cursor: str | None = None
|
|
111
|
+
path = self._build_path(team)
|
|
112
|
+
|
|
113
|
+
while True:
|
|
114
|
+
params = self._build_params(key_type=key_type, cursor=cursor)
|
|
115
|
+
data = await self._get_async(path, params=params)
|
|
116
|
+
|
|
117
|
+
# Parse JSON:API response
|
|
118
|
+
if isinstance(data, dict) and "data" in data:
|
|
119
|
+
items = data["data"]
|
|
120
|
+
results.extend(ApiKey.from_jsonapi({"data": item}) for item in items)
|
|
121
|
+
|
|
122
|
+
# Check for next page
|
|
123
|
+
next_link = data.get("links", {}).get("next")
|
|
124
|
+
cursor = self._extract_cursor(next_link)
|
|
125
|
+
if not cursor:
|
|
126
|
+
break
|
|
127
|
+
else:
|
|
128
|
+
break
|
|
129
|
+
|
|
130
|
+
return results
|
|
131
|
+
|
|
132
|
+
async def get_async(self, team: str, key_id: str) -> ApiKey:
|
|
133
|
+
"""Get a specific API key (async).
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
team: Team slug.
|
|
137
|
+
key_id: API Key ID.
|
|
138
|
+
|
|
139
|
+
Returns:
|
|
140
|
+
ApiKey object.
|
|
141
|
+
"""
|
|
142
|
+
data = await self._get_async(self._build_path(team, key_id))
|
|
143
|
+
return ApiKey.from_jsonapi(data)
|
|
144
|
+
|
|
145
|
+
async def create_async(self, team: str, api_key: ApiKeyCreate) -> ApiKey:
|
|
146
|
+
"""Create a new API key (async).
|
|
147
|
+
|
|
148
|
+
Args:
|
|
149
|
+
team: Team slug.
|
|
150
|
+
api_key: API key configuration.
|
|
151
|
+
|
|
152
|
+
Returns:
|
|
153
|
+
Created ApiKey object (includes secret, save it immediately!).
|
|
154
|
+
"""
|
|
155
|
+
data = await self._post_async(
|
|
156
|
+
self._build_path(team),
|
|
157
|
+
json=api_key.to_jsonapi(),
|
|
158
|
+
headers={"Content-Type": "application/vnd.api+json"},
|
|
159
|
+
)
|
|
160
|
+
return ApiKey.from_jsonapi(data)
|
|
161
|
+
|
|
162
|
+
async def update_async(self, team: str, key_id: str, api_key: ApiKeyCreate) -> ApiKey:
|
|
163
|
+
"""Update an existing API key (async).
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
team: Team slug.
|
|
167
|
+
key_id: API Key ID.
|
|
168
|
+
api_key: Updated API key configuration.
|
|
169
|
+
|
|
170
|
+
Returns:
|
|
171
|
+
Updated ApiKey object.
|
|
172
|
+
"""
|
|
173
|
+
payload = api_key.to_jsonapi()
|
|
174
|
+
payload["data"]["id"] = key_id # Include ID for update
|
|
175
|
+
data = await self._patch_async(
|
|
176
|
+
self._build_path(team, key_id),
|
|
177
|
+
json=payload,
|
|
178
|
+
headers={"Content-Type": "application/vnd.api+json"},
|
|
179
|
+
)
|
|
180
|
+
return ApiKey.from_jsonapi(data)
|
|
181
|
+
|
|
182
|
+
async def delete_async(self, team: str, key_id: str) -> None:
|
|
183
|
+
"""Delete an API key (async).
|
|
184
|
+
|
|
185
|
+
Args:
|
|
186
|
+
team: Team slug.
|
|
187
|
+
key_id: API Key ID.
|
|
188
|
+
"""
|
|
189
|
+
await self._delete_async(self._build_path(team, key_id))
|
|
190
|
+
|
|
191
|
+
# -------------------------------------------------------------------------
|
|
192
|
+
# Sync methods
|
|
193
|
+
# -------------------------------------------------------------------------
|
|
194
|
+
|
|
195
|
+
def list(self, team: str, key_type: str | None = None) -> list[ApiKey]:
|
|
196
|
+
"""List all API keys for a team.
|
|
197
|
+
|
|
198
|
+
Automatically paginates through all results. For teams with many API keys,
|
|
199
|
+
this may result in multiple API requests.
|
|
200
|
+
|
|
201
|
+
Args:
|
|
202
|
+
team: Team slug.
|
|
203
|
+
key_type: Optional filter by key type ('ingest' or 'configuration').
|
|
204
|
+
|
|
205
|
+
Returns:
|
|
206
|
+
List of ApiKey objects.
|
|
207
|
+
|
|
208
|
+
Note:
|
|
209
|
+
The default rate limit is 100 requests per minute per operation.
|
|
210
|
+
Contact Honeycomb support for higher limits: https://www.honeycomb.io/support
|
|
211
|
+
"""
|
|
212
|
+
if not self._client.is_sync:
|
|
213
|
+
raise RuntimeError("Use list_async() for async mode, or pass sync=True to client")
|
|
214
|
+
|
|
215
|
+
results: list[ApiKey] = []
|
|
216
|
+
cursor: str | None = None
|
|
217
|
+
path = self._build_path(team)
|
|
218
|
+
|
|
219
|
+
while True:
|
|
220
|
+
params = self._build_params(key_type=key_type, cursor=cursor)
|
|
221
|
+
data = self._get_sync(path, params=params)
|
|
222
|
+
|
|
223
|
+
# Parse JSON:API response
|
|
224
|
+
if isinstance(data, dict) and "data" in data:
|
|
225
|
+
items = data["data"]
|
|
226
|
+
results.extend(ApiKey.from_jsonapi({"data": item}) for item in items)
|
|
227
|
+
|
|
228
|
+
# Check for next page
|
|
229
|
+
next_link = data.get("links", {}).get("next")
|
|
230
|
+
cursor = self._extract_cursor(next_link)
|
|
231
|
+
if not cursor:
|
|
232
|
+
break
|
|
233
|
+
else:
|
|
234
|
+
break
|
|
235
|
+
|
|
236
|
+
return results
|
|
237
|
+
|
|
238
|
+
def get(self, team: str, key_id: str) -> ApiKey:
|
|
239
|
+
"""Get a specific API key.
|
|
240
|
+
|
|
241
|
+
Args:
|
|
242
|
+
team: Team slug.
|
|
243
|
+
key_id: API Key ID.
|
|
244
|
+
|
|
245
|
+
Returns:
|
|
246
|
+
ApiKey object.
|
|
247
|
+
"""
|
|
248
|
+
if not self._client.is_sync:
|
|
249
|
+
raise RuntimeError("Use get_async() for async mode, or pass sync=True to client")
|
|
250
|
+
data = self._get_sync(self._build_path(team, key_id))
|
|
251
|
+
return ApiKey.from_jsonapi(data)
|
|
252
|
+
|
|
253
|
+
def create(self, team: str, api_key: ApiKeyCreate) -> ApiKey:
|
|
254
|
+
"""Create a new API key.
|
|
255
|
+
|
|
256
|
+
Args:
|
|
257
|
+
team: Team slug.
|
|
258
|
+
api_key: API key configuration.
|
|
259
|
+
|
|
260
|
+
Returns:
|
|
261
|
+
Created ApiKey object (includes secret, save it immediately!).
|
|
262
|
+
"""
|
|
263
|
+
if not self._client.is_sync:
|
|
264
|
+
raise RuntimeError("Use create_async() for async mode, or pass sync=True to client")
|
|
265
|
+
data = self._post_sync(
|
|
266
|
+
self._build_path(team),
|
|
267
|
+
json=api_key.to_jsonapi(),
|
|
268
|
+
headers={"Content-Type": "application/vnd.api+json"},
|
|
269
|
+
)
|
|
270
|
+
return ApiKey.from_jsonapi(data)
|
|
271
|
+
|
|
272
|
+
def update(self, team: str, key_id: str, api_key: ApiKeyCreate) -> ApiKey:
|
|
273
|
+
"""Update an existing API key.
|
|
274
|
+
|
|
275
|
+
Args:
|
|
276
|
+
team: Team slug.
|
|
277
|
+
key_id: API Key ID.
|
|
278
|
+
api_key: Updated API key configuration.
|
|
279
|
+
|
|
280
|
+
Returns:
|
|
281
|
+
Updated ApiKey object.
|
|
282
|
+
"""
|
|
283
|
+
if not self._client.is_sync:
|
|
284
|
+
raise RuntimeError("Use update_async() for async mode, or pass sync=True to client")
|
|
285
|
+
payload = api_key.to_jsonapi()
|
|
286
|
+
payload["data"]["id"] = key_id
|
|
287
|
+
data = self._patch_sync(
|
|
288
|
+
self._build_path(team, key_id),
|
|
289
|
+
json=payload,
|
|
290
|
+
headers={"Content-Type": "application/vnd.api+json"},
|
|
291
|
+
)
|
|
292
|
+
return ApiKey.from_jsonapi(data)
|
|
293
|
+
|
|
294
|
+
def delete(self, team: str, key_id: str) -> None:
|
|
295
|
+
"""Delete an API key.
|
|
296
|
+
|
|
297
|
+
Args:
|
|
298
|
+
team: Team slug.
|
|
299
|
+
key_id: API Key ID.
|
|
300
|
+
"""
|
|
301
|
+
if not self._client.is_sync:
|
|
302
|
+
raise RuntimeError("Use delete_async() for async mode, or pass sync=True to client")
|
|
303
|
+
self._delete_sync(self._build_path(team, key_id))
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"""Base resource class for Honeycomb API resources."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
6
|
+
|
|
7
|
+
from pydantic import BaseModel
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from honeycomb.client import HoneycombClient
|
|
11
|
+
|
|
12
|
+
T = TypeVar("T", bound=BaseModel)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class BaseResource:
|
|
16
|
+
"""Base class for API resource clients.
|
|
17
|
+
|
|
18
|
+
Provides common functionality for making API requests and
|
|
19
|
+
parsing responses into Pydantic models.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def __init__(self, client: HoneycombClient) -> None:
|
|
23
|
+
"""Initialize the resource.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
client: The HoneycombClient instance.
|
|
27
|
+
"""
|
|
28
|
+
self._client = client
|
|
29
|
+
|
|
30
|
+
# -------------------------------------------------------------------------
|
|
31
|
+
# Async methods
|
|
32
|
+
# -------------------------------------------------------------------------
|
|
33
|
+
|
|
34
|
+
async def _get_async(self, path: str, *, params: dict[str, Any] | None = None) -> Any:
|
|
35
|
+
"""Make an async GET request and return JSON response."""
|
|
36
|
+
response = await self._client.get_async(path, params=params)
|
|
37
|
+
return response.json()
|
|
38
|
+
|
|
39
|
+
async def _post_async(
|
|
40
|
+
self,
|
|
41
|
+
path: str,
|
|
42
|
+
*,
|
|
43
|
+
json: dict[str, Any] | None = None,
|
|
44
|
+
params: dict[str, Any] | None = None,
|
|
45
|
+
headers: dict[str, str] | None = None,
|
|
46
|
+
) -> Any:
|
|
47
|
+
"""Make an async POST request and return JSON response."""
|
|
48
|
+
response = await self._client.post_async(path, json=json, params=params, headers=headers)
|
|
49
|
+
return response.json()
|
|
50
|
+
|
|
51
|
+
async def _put_async(
|
|
52
|
+
self,
|
|
53
|
+
path: str,
|
|
54
|
+
*,
|
|
55
|
+
json: dict[str, Any] | None = None,
|
|
56
|
+
params: dict[str, Any] | None = None,
|
|
57
|
+
headers: dict[str, str] | None = None,
|
|
58
|
+
) -> Any:
|
|
59
|
+
"""Make an async PUT request and return JSON response."""
|
|
60
|
+
response = await self._client.put_async(path, json=json, params=params, headers=headers)
|
|
61
|
+
return response.json()
|
|
62
|
+
|
|
63
|
+
async def _patch_async(
|
|
64
|
+
self,
|
|
65
|
+
path: str,
|
|
66
|
+
*,
|
|
67
|
+
json: dict[str, Any] | None = None,
|
|
68
|
+
params: dict[str, Any] | None = None,
|
|
69
|
+
headers: dict[str, str] | None = None,
|
|
70
|
+
) -> Any:
|
|
71
|
+
"""Make an async PATCH request and return JSON response."""
|
|
72
|
+
response = await self._client.patch_async(path, json=json, params=params, headers=headers)
|
|
73
|
+
return response.json()
|
|
74
|
+
|
|
75
|
+
async def _delete_async(self, path: str, *, params: dict[str, Any] | None = None) -> None:
|
|
76
|
+
"""Make an async DELETE request."""
|
|
77
|
+
await self._client.delete_async(path, params=params)
|
|
78
|
+
|
|
79
|
+
# -------------------------------------------------------------------------
|
|
80
|
+
# Sync methods
|
|
81
|
+
# -------------------------------------------------------------------------
|
|
82
|
+
|
|
83
|
+
def _get_sync(self, path: str, *, params: dict[str, Any] | None = None) -> Any:
|
|
84
|
+
"""Make a sync GET request and return JSON response."""
|
|
85
|
+
response = self._client.get_sync(path, params=params)
|
|
86
|
+
return response.json()
|
|
87
|
+
|
|
88
|
+
def _post_sync(
|
|
89
|
+
self,
|
|
90
|
+
path: str,
|
|
91
|
+
*,
|
|
92
|
+
json: dict[str, Any] | None = None,
|
|
93
|
+
params: dict[str, Any] | None = None,
|
|
94
|
+
headers: dict[str, str] | None = None,
|
|
95
|
+
) -> Any:
|
|
96
|
+
"""Make a sync POST request and return JSON response."""
|
|
97
|
+
response = self._client.post_sync(path, json=json, params=params, headers=headers)
|
|
98
|
+
return response.json()
|
|
99
|
+
|
|
100
|
+
def _put_sync(
|
|
101
|
+
self,
|
|
102
|
+
path: str,
|
|
103
|
+
*,
|
|
104
|
+
json: dict[str, Any] | None = None,
|
|
105
|
+
params: dict[str, Any] | None = None,
|
|
106
|
+
headers: dict[str, str] | None = None,
|
|
107
|
+
) -> Any:
|
|
108
|
+
"""Make a sync PUT request and return JSON response."""
|
|
109
|
+
response = self._client.put_sync(path, json=json, params=params, headers=headers)
|
|
110
|
+
return response.json()
|
|
111
|
+
|
|
112
|
+
def _patch_sync(
|
|
113
|
+
self,
|
|
114
|
+
path: str,
|
|
115
|
+
*,
|
|
116
|
+
json: dict[str, Any] | None = None,
|
|
117
|
+
params: dict[str, Any] | None = None,
|
|
118
|
+
headers: dict[str, str] | None = None,
|
|
119
|
+
) -> Any:
|
|
120
|
+
"""Make a sync PATCH request and return JSON response."""
|
|
121
|
+
response = self._client.patch_sync(path, json=json, params=params, headers=headers)
|
|
122
|
+
return response.json()
|
|
123
|
+
|
|
124
|
+
def _delete_sync(self, path: str, *, params: dict[str, Any] | None = None) -> None:
|
|
125
|
+
"""Make a sync DELETE request."""
|
|
126
|
+
self._client.delete_sync(path, params=params)
|
|
127
|
+
|
|
128
|
+
# -------------------------------------------------------------------------
|
|
129
|
+
# Model parsing helpers
|
|
130
|
+
# -------------------------------------------------------------------------
|
|
131
|
+
|
|
132
|
+
def _parse_model(self, model_class: type[T], data: dict[str, Any]) -> T:
|
|
133
|
+
"""Parse a dict into a Pydantic model."""
|
|
134
|
+
return model_class.model_validate(data)
|
|
135
|
+
|
|
136
|
+
def _parse_model_list(self, model_class: type[T], data: list[dict[str, Any]]) -> list[T]:
|
|
137
|
+
"""Parse a list of dicts into Pydantic models."""
|
|
138
|
+
return [model_class.model_validate(item) for item in data]
|
|
139
|
+
|
|
140
|
+
def _serialize_model(self, model: BaseModel) -> dict[str, Any]:
|
|
141
|
+
"""Serialize a Pydantic model to a dict, excluding None values."""
|
|
142
|
+
return model.model_dump(exclude_none=True, by_alias=True)
|