tutorflow-content 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.
- tutorflow_content/__init__.py +42 -0
- tutorflow_content/client.py +71 -0
- tutorflow_content/errors.py +87 -0
- tutorflow_content/generated/__init__.py +8 -0
- tutorflow_content/generated/api/__init__.py +1 -0
- tutorflow_content/generated/api/content_api_keys/__init__.py +1 -0
- tutorflow_content/generated/api/content_api_keys/content_integration_api_key_controller_create_api_key.py +243 -0
- tutorflow_content/generated/api/content_api_keys/content_integration_api_key_controller_delete_api_key.py +251 -0
- tutorflow_content/generated/api/content_api_keys/content_integration_api_key_controller_list_api_keys.py +228 -0
- tutorflow_content/generated/api/content_api_keys/content_integration_api_key_controller_revoke_api_key.py +232 -0
- tutorflow_content/generated/api/content_api_keys/content_integration_api_key_controller_rotate_api_key.py +256 -0
- tutorflow_content/generated/api/content_api_keys/content_integration_api_key_controller_update_api_key.py +283 -0
- tutorflow_content/generated/api/content_api_keys/content_organization_activity_controller_api_key_labels.py +240 -0
- tutorflow_content/generated/api/content_assets/__init__.py +1 -0
- tutorflow_content/generated/api/content_assets/content_asset_upload_controller_complete.py +266 -0
- tutorflow_content/generated/api/content_assets/content_asset_upload_controller_create.py +350 -0
- tutorflow_content/generated/api/content_audit_log/__init__.py +1 -0
- tutorflow_content/generated/api/content_audit_log/content_api_audit_log_controller_list.py +383 -0
- tutorflow_content/generated/api/content_audit_log/content_organization_activity_controller_audit_log.py +384 -0
- tutorflow_content/generated/api/content_classrooms/__init__.py +1 -0
- tutorflow_content/generated/api/content_classrooms/content_integration_classroom_controller_list_classrooms.py +206 -0
- tutorflow_content/generated/api/content_course_curriculum/__init__.py +1 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_create_chapter.py +291 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_create_lesson.py +304 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_delete_chapter.py +283 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_delete_lesson.py +283 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_get_lesson.py +280 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_list_chapters.py +267 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_reorder_chapters.py +287 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_reorder_lessons.py +300 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_update_chapter.py +300 -0
- tutorflow_content/generated/api/content_course_curriculum/content_resource_course_curriculum_controller_update_lesson.py +300 -0
- tutorflow_content/generated/api/content_courses/__init__.py +1 -0
- tutorflow_content/generated/api/content_courses/content_resource_course_controller_create.py +278 -0
- tutorflow_content/generated/api/content_courses/content_resource_course_controller_delete.py +270 -0
- tutorflow_content/generated/api/content_courses/content_resource_course_controller_get.py +315 -0
- tutorflow_content/generated/api/content_courses/content_resource_course_controller_list.py +379 -0
- tutorflow_content/generated/api/content_courses/content_resource_course_controller_update.py +295 -0
- tutorflow_content/generated/api/content_credits/__init__.py +1 -0
- tutorflow_content/generated/api/content_credits/content_integration_credit_controller_get_balance.py +209 -0
- tutorflow_content/generated/api/content_credits/content_integration_credit_controller_get_history.py +366 -0
- tutorflow_content/generated/api/content_credits/content_organization_activity_controller_credit_history.py +371 -0
- tutorflow_content/generated/api/content_evaluations/__init__.py +1 -0
- tutorflow_content/generated/api/content_evaluations/content_evaluation_controller_create.py +323 -0
- tutorflow_content/generated/api/content_evaluations/content_evaluation_controller_download_file.py +277 -0
- tutorflow_content/generated/api/content_evaluations/content_evaluation_controller_get.py +247 -0
- tutorflow_content/generated/api/content_evaluations/content_evaluation_controller_list.py +330 -0
- tutorflow_content/generated/api/content_evaluations/content_learning_controller_get_mastery.py +247 -0
- tutorflow_content/generated/api/content_evaluations/content_learning_controller_list_concepts.py +234 -0
- tutorflow_content/generated/api/content_games/__init__.py +1 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_build_game.py +325 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_create.py +278 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_delete.py +274 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_generate_brief.py +338 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_get.py +267 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_get_run_status.py +243 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_list.py +364 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_restore_version.py +287 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_revise_game.py +342 -0
- tutorflow_content/generated/api/content_games/content_resource_game_controller_update.py +287 -0
- tutorflow_content/generated/api/content_generation/__init__.py +1 -0
- tutorflow_content/generated/api/content_generation/content_generation_controller_generate_course.py +337 -0
- tutorflow_content/generated/api/content_generation/content_generation_controller_generate_module.py +329 -0
- tutorflow_content/generated/api/content_generation/content_generation_controller_generate_slides.py +353 -0
- tutorflow_content/generated/api/content_generation/content_generation_controller_generate_test.py +321 -0
- tutorflow_content/generated/api/content_generation/content_generation_controller_get_run.py +243 -0
- tutorflow_content/generated/api/content_generation/content_generation_controller_list_runs.py +311 -0
- tutorflow_content/generated/api/content_generation/content_generation_controller_resume_run.py +341 -0
- tutorflow_content/generated/api/content_integrations/__init__.py +1 -0
- tutorflow_content/generated/api/content_integrations/content_integration_controller_create_expansion.py +280 -0
- tutorflow_content/generated/api/content_integrations/content_integration_controller_get_expansion.py +230 -0
- tutorflow_content/generated/api/content_integrations/content_integration_controller_get_expansion_result.py +230 -0
- tutorflow_content/generated/api/content_learners/__init__.py +1 -0
- tutorflow_content/generated/api/content_learners/content_learner_controller_get.py +251 -0
- tutorflow_content/generated/api/content_learners/content_learner_controller_invite.py +317 -0
- tutorflow_content/generated/api/content_learners/content_learner_controller_list.py +318 -0
- tutorflow_content/generated/api/content_learners/content_learner_controller_progress.py +288 -0
- tutorflow_content/generated/api/content_learners/content_learner_controller_remove.py +255 -0
- tutorflow_content/generated/api/content_learners/content_learner_enrollment_controller_enroll.py +303 -0
- tutorflow_content/generated/api/content_learners/content_learner_enrollment_controller_list.py +288 -0
- tutorflow_content/generated/api/content_learners/content_learner_enrollment_controller_unenroll.py +264 -0
- tutorflow_content/generated/api/content_learners/content_test_result_controller_get.py +295 -0
- tutorflow_content/generated/api/content_learners/content_test_result_controller_list.py +314 -0
- tutorflow_content/generated/api/content_modules/__init__.py +1 -0
- tutorflow_content/generated/api/content_modules/content_resource_module_controller_copy_to_course.py +291 -0
- tutorflow_content/generated/api/content_modules/content_resource_module_controller_create.py +278 -0
- tutorflow_content/generated/api/content_modules/content_resource_module_controller_delete.py +270 -0
- tutorflow_content/generated/api/content_modules/content_resource_module_controller_get.py +267 -0
- tutorflow_content/generated/api/content_modules/content_resource_module_controller_list.py +364 -0
- tutorflow_content/generated/api/content_modules/content_resource_module_controller_update.py +287 -0
- tutorflow_content/generated/api/content_organizations/__init__.py +1 -0
- tutorflow_content/generated/api/content_organizations/content_integration_organization_controller_list_organizations.py +199 -0
- tutorflow_content/generated/api/content_simulations/__init__.py +1 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_build_simulation.py +325 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_create.py +278 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_delete.py +274 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_generate_brief.py +338 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_get.py +267 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_get_run_status.py +243 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_list.py +384 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_restore_version.py +287 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_revise_simulation.py +342 -0
- tutorflow_content/generated/api/content_simulations/content_resource_simulation_controller_update.py +287 -0
- tutorflow_content/generated/api/content_slides/__init__.py +1 -0
- tutorflow_content/generated/api/content_slides/content_resource_slide_controller_create.py +278 -0
- tutorflow_content/generated/api/content_slides/content_resource_slide_controller_delete.py +270 -0
- tutorflow_content/generated/api/content_slides/content_resource_slide_controller_get.py +267 -0
- tutorflow_content/generated/api/content_slides/content_resource_slide_controller_list.py +364 -0
- tutorflow_content/generated/api/content_slides/content_resource_slide_controller_update.py +287 -0
- tutorflow_content/generated/api/content_tests/__init__.py +1 -0
- tutorflow_content/generated/api/content_tests/content_resource_test_controller_create.py +278 -0
- tutorflow_content/generated/api/content_tests/content_resource_test_controller_delete.py +270 -0
- tutorflow_content/generated/api/content_tests/content_resource_test_controller_get.py +287 -0
- tutorflow_content/generated/api/content_tests/content_resource_test_controller_list.py +379 -0
- tutorflow_content/generated/api/content_tests/content_resource_test_controller_update.py +287 -0
- tutorflow_content/generated/api/content_videos/__init__.py +1 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_add_scene.py +291 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_create.py +286 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_delete.py +270 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_delete_scene.py +283 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_get.py +267 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_list.py +364 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_reorder_scenes.py +287 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_update.py +287 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_controller_update_scene.py +300 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_narration_controller_narrate_missing.py +289 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_narration_controller_narrate_scene.py +294 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_render_controller_cancel.py +250 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_render_controller_get_status.py +243 -0
- tutorflow_content/generated/api/content_videos/content_resource_video_render_controller_trigger.py +328 -0
- tutorflow_content/generated/api/content_webhooks/__init__.py +1 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_create_webhook.py +243 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_delete_webhook.py +236 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_get_webhook.py +236 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_list_deliveries.py +317 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_list_webhooks.py +228 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_redeliver.py +249 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_rotate_secret.py +280 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_send_test_event.py +236 -0
- tutorflow_content/generated/api/content_webhooks/content_integration_webhook_controller_update_webhook.py +284 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_create.py +236 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_delete.py +230 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_get.py +230 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_list.py +206 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_list_deliveries.py +311 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_redeliver.py +243 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_rotate_secret.py +270 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_send_test_event.py +230 -0
- tutorflow_content/generated/api/content_webhooks/content_webhook_key_controller_update.py +278 -0
- tutorflow_content/generated/api/v_1_contentclassroomsclassroom_idintegrationsexports/__init__.py +1 -0
- tutorflow_content/generated/api/v_1_contentclassroomsclassroom_idintegrationsexports/content_integration_export_controller_export_standalone_lesson.py +243 -0
- tutorflow_content/generated/client.py +271 -0
- tutorflow_content/generated/errors.py +14 -0
- tutorflow_content/generated/models/__init__.py +693 -0
- tutorflow_content/generated/models/add_scene_dto.py +104 -0
- tutorflow_content/generated/models/chat_course_quiz_dto.py +257 -0
- tutorflow_content/generated/models/classroom_test_level_type.py +9 -0
- tutorflow_content/generated/models/classroom_test_visibility_type.py +9 -0
- tutorflow_content/generated/models/content_api_audit_log_controller_list_source.py +8 -0
- tutorflow_content/generated/models/content_api_error.py +85 -0
- tutorflow_content/generated/models/content_api_error_error.py +221 -0
- tutorflow_content/generated/models/content_api_error_error_details_item.py +87 -0
- tutorflow_content/generated/models/content_api_key_created_res_dto.py +277 -0
- tutorflow_content/generated/models/content_api_key_created_res_dto_mode.py +8 -0
- tutorflow_content/generated/models/content_api_key_expiring_event.py +135 -0
- tutorflow_content/generated/models/content_api_key_filter_label.py +118 -0
- tutorflow_content/generated/models/content_api_key_filter_label_mode.py +8 -0
- tutorflow_content/generated/models/content_api_key_label_type_0.py +109 -0
- tutorflow_content/generated/models/content_api_key_label_type_0_mode.py +8 -0
- tutorflow_content/generated/models/content_api_scope.py +12 -0
- tutorflow_content/generated/models/content_asset_upload.py +169 -0
- tutorflow_content/generated/models/content_asset_upload_purpose.py +13 -0
- tutorflow_content/generated/models/content_asset_upload_status.py +11 -0
- tutorflow_content/generated/models/content_asset_upload_ticket.py +186 -0
- tutorflow_content/generated/models/content_asset_upload_ticket_headers.py +85 -0
- tutorflow_content/generated/models/content_asset_upload_ticket_method.py +7 -0
- tutorflow_content/generated/models/content_asset_upload_ticket_purpose.py +13 -0
- tutorflow_content/generated/models/content_asset_upload_ticket_status.py +11 -0
- tutorflow_content/generated/models/content_audit_log_admin_item.py +330 -0
- tutorflow_content/generated/models/content_audit_log_admin_page.py +108 -0
- tutorflow_content/generated/models/content_audit_log_item.py +307 -0
- tutorflow_content/generated/models/content_audit_log_page.py +108 -0
- tutorflow_content/generated/models/content_build_history_entry.py +124 -0
- tutorflow_content/generated/models/content_chapter.py +148 -0
- tutorflow_content/generated/models/content_classroom_res_dto.py +113 -0
- tutorflow_content/generated/models/content_concept.py +123 -0
- tutorflow_content/generated/models/content_concept_list.py +94 -0
- tutorflow_content/generated/models/content_course.py +343 -0
- tutorflow_content/generated/models/content_course_chapter.py +146 -0
- tutorflow_content/generated/models/content_course_deleted.py +121 -0
- tutorflow_content/generated/models/content_course_lesson.py +337 -0
- tutorflow_content/generated/models/content_course_lesson_stats.py +84 -0
- tutorflow_content/generated/models/content_course_list.py +137 -0
- tutorflow_content/generated/models/content_course_progress.py +208 -0
- tutorflow_content/generated/models/content_course_stats.py +221 -0
- tutorflow_content/generated/models/content_course_stats_daily_learning_time_item.py +84 -0
- tutorflow_content/generated/models/content_course_stats_most_behind_learner_type_0.py +108 -0
- tutorflow_content/generated/models/content_course_stats_top_learners_item.py +119 -0
- tutorflow_content/generated/models/content_credit_history_item.py +227 -0
- tutorflow_content/generated/models/content_credit_history_item_kind.py +9 -0
- tutorflow_content/generated/models/content_credit_history_page.py +108 -0
- tutorflow_content/generated/models/content_curriculum.py +118 -0
- tutorflow_content/generated/models/content_cursor_page_meta.py +100 -0
- tutorflow_content/generated/models/content_deleted.py +101 -0
- tutorflow_content/generated/models/content_deprecated_success.py +80 -0
- tutorflow_content/generated/models/content_enrollment.py +177 -0
- tutorflow_content/generated/models/content_enrollment_change.py +94 -0
- tutorflow_content/generated/models/content_enrollment_page.py +108 -0
- tutorflow_content/generated/models/content_evaluation.py +584 -0
- tutorflow_content/generated/models/content_evaluation_controller_create_files_body.py +413 -0
- tutorflow_content/generated/models/content_evaluation_controller_download_file_field.py +8 -0
- tutorflow_content/generated/models/content_evaluation_controller_list_evaluation_type.py +9 -0
- tutorflow_content/generated/models/content_evaluation_controller_list_status.py +10 -0
- tutorflow_content/generated/models/content_evaluation_create.py +254 -0
- tutorflow_content/generated/models/content_evaluation_create_evaluation_type.py +9 -0
- tutorflow_content/generated/models/content_evaluation_create_feedback_options.py +105 -0
- tutorflow_content/generated/models/content_evaluation_create_mode.py +8 -0
- tutorflow_content/generated/models/content_evaluation_create_rubric.py +95 -0
- tutorflow_content/generated/models/content_evaluation_create_rubric_criteria_item.py +92 -0
- tutorflow_content/generated/models/content_evaluation_create_submitter.py +87 -0
- tutorflow_content/generated/models/content_evaluation_event.py +241 -0
- tutorflow_content/generated/models/content_evaluation_event_status.py +8 -0
- tutorflow_content/generated/models/content_evaluation_file.py +100 -0
- tutorflow_content/generated/models/content_evaluation_learner_type_0.py +92 -0
- tutorflow_content/generated/models/content_evaluation_mode.py +8 -0
- tutorflow_content/generated/models/content_evaluation_page.py +108 -0
- tutorflow_content/generated/models/content_evaluation_rubric_breakdown_type_0_item.py +105 -0
- tutorflow_content/generated/models/content_evaluation_status.py +10 -0
- tutorflow_content/generated/models/content_game.py +372 -0
- tutorflow_content/generated/models/content_game_brief_type_0.py +66 -0
- tutorflow_content/generated/models/content_game_list.py +137 -0
- tutorflow_content/generated/models/content_game_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/content_generate_course_request.py +146 -0
- tutorflow_content/generated/models/content_generate_course_request_level.py +9 -0
- tutorflow_content/generated/models/content_generate_module_request.py +120 -0
- tutorflow_content/generated/models/content_generate_module_request_type.py +19 -0
- tutorflow_content/generated/models/content_generate_slides_request.py +150 -0
- tutorflow_content/generated/models/content_generate_slides_request_text_length.py +8 -0
- tutorflow_content/generated/models/content_generate_slides_request_theme_id.py +15 -0
- tutorflow_content/generated/models/content_generate_test_request.py +196 -0
- tutorflow_content/generated/models/content_generate_test_request_item_types_item.py +11 -0
- tutorflow_content/generated/models/content_generate_test_request_level.py +9 -0
- tutorflow_content/generated/models/content_generate_test_request_passing_value_type.py +8 -0
- tutorflow_content/generated/models/content_generation_accepted.py +151 -0
- tutorflow_content/generated/models/content_generation_accepted_kind.py +8 -0
- tutorflow_content/generated/models/content_generation_accepted_phase.py +9 -0
- tutorflow_content/generated/models/content_generation_controller_list_runs_kind.py +10 -0
- tutorflow_content/generated/models/content_generation_controller_list_runs_status.py +10 -0
- tutorflow_content/generated/models/content_generation_event.py +213 -0
- tutorflow_content/generated/models/content_generation_event_phase.py +9 -0
- tutorflow_content/generated/models/content_generation_event_resource_type.py +8 -0
- tutorflow_content/generated/models/content_generation_event_status.py +8 -0
- tutorflow_content/generated/models/content_generation_run.py +296 -0
- tutorflow_content/generated/models/content_generation_run_accepted.py +121 -0
- tutorflow_content/generated/models/content_generation_run_accepted_kind.py +10 -0
- tutorflow_content/generated/models/content_generation_run_accepted_status.py +7 -0
- tutorflow_content/generated/models/content_generation_run_event.py +241 -0
- tutorflow_content/generated/models/content_generation_run_event_resource_type.py +10 -0
- tutorflow_content/generated/models/content_generation_run_event_status.py +8 -0
- tutorflow_content/generated/models/content_generation_run_kind.py +10 -0
- tutorflow_content/generated/models/content_generation_run_page.py +108 -0
- tutorflow_content/generated/models/content_generation_run_progress.py +93 -0
- tutorflow_content/generated/models/content_generation_run_state.py +10 -0
- tutorflow_content/generated/models/content_generation_run_status.py +135 -0
- tutorflow_content/generated/models/content_generation_run_status_active_type_0.py +116 -0
- tutorflow_content/generated/models/content_generation_run_status_active_type_0_phase.py +9 -0
- tutorflow_content/generated/models/content_generation_run_status_last_type_0.py +148 -0
- tutorflow_content/generated/models/content_generation_run_status_last_type_0_phase.py +9 -0
- tutorflow_content/generated/models/content_generation_run_status_last_type_0_status.py +8 -0
- tutorflow_content/generated/models/content_integration_api_key_controller_delete_api_key_response_200.py +88 -0
- tutorflow_content/generated/models/content_integration_api_key_dto.py +377 -0
- tutorflow_content/generated/models/content_integration_api_key_dto_issuer_status.py +9 -0
- tutorflow_content/generated/models/content_integration_api_key_dto_mode.py +8 -0
- tutorflow_content/generated/models/content_integration_credit_balance_res_dto.py +117 -0
- tutorflow_content/generated/models/content_integration_credit_controller_get_history_source.py +8 -0
- tutorflow_content/generated/models/content_integration_credit_controller_get_history_type.py +54 -0
- tutorflow_content/generated/models/content_integration_job_res_dto.py +334 -0
- tutorflow_content/generated/models/content_integration_job_res_dto_error_type_0.py +64 -0
- tutorflow_content/generated/models/content_integration_organization_res_dto.py +108 -0
- tutorflow_content/generated/models/content_integration_organization_res_dto_role.py +9 -0
- tutorflow_content/generated/models/content_integration_output_res_dto.py +302 -0
- tutorflow_content/generated/models/content_integration_output_res_dto_error_type_0.py +64 -0
- tutorflow_content/generated/models/content_integration_output_res_dto_manifest_type_0.py +64 -0
- tutorflow_content/generated/models/content_integration_output_type.py +9 -0
- tutorflow_content/generated/models/content_integration_result_res_dto.py +122 -0
- tutorflow_content/generated/models/content_integration_result_res_dto_manifest.py +64 -0
- tutorflow_content/generated/models/content_integration_source_type.py +8 -0
- tutorflow_content/generated/models/content_integration_webhook_delivery_status.py +10 -0
- tutorflow_content/generated/models/content_integration_webhook_event_type.py +35 -0
- tutorflow_content/generated/models/content_integration_webhook_status.py +8 -0
- tutorflow_content/generated/models/content_job_event.py +178 -0
- tutorflow_content/generated/models/content_learner.py +132 -0
- tutorflow_content/generated/models/content_learner_controller_list_status.py +9 -0
- tutorflow_content/generated/models/content_learner_course_completed_event.py +141 -0
- tutorflow_content/generated/models/content_learner_enrolled_event.py +129 -0
- tutorflow_content/generated/models/content_learner_invitation_result.py +143 -0
- tutorflow_content/generated/models/content_learner_invitation_result_invitation_type_1.py +104 -0
- tutorflow_content/generated/models/content_learner_invitation_result_status.py +8 -0
- tutorflow_content/generated/models/content_learner_mastery.py +131 -0
- tutorflow_content/generated/models/content_learner_mastery_concepts_item.py +145 -0
- tutorflow_content/generated/models/content_learner_mastery_learner.py +92 -0
- tutorflow_content/generated/models/content_learner_page.py +108 -0
- tutorflow_content/generated/models/content_learner_progress.py +106 -0
- tutorflow_content/generated/models/content_learner_removed.py +91 -0
- tutorflow_content/generated/models/content_learner_status.py +9 -0
- tutorflow_content/generated/models/content_learner_test_submitted_event.py +152 -0
- tutorflow_content/generated/models/content_lesson_detail.py +265 -0
- tutorflow_content/generated/models/content_lesson_detail_submission.py +70 -0
- tutorflow_content/generated/models/content_lesson_progress.py +154 -0
- tutorflow_content/generated/models/content_lesson_summary.py +205 -0
- tutorflow_content/generated/models/content_module.py +426 -0
- tutorflow_content/generated/models/content_module_copy_result.py +99 -0
- tutorflow_content/generated/models/content_module_list.py +137 -0
- tutorflow_content/generated/models/content_module_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/content_module_quiz.py +237 -0
- tutorflow_content/generated/models/content_organization_activity_controller_audit_log_source.py +8 -0
- tutorflow_content/generated/models/content_organization_activity_controller_credit_history_source.py +8 -0
- tutorflow_content/generated/models/content_organization_activity_controller_credit_history_type.py +54 -0
- tutorflow_content/generated/models/content_page_meta.py +116 -0
- tutorflow_content/generated/models/content_resource_course_controller_get_days.py +8 -0
- tutorflow_content/generated/models/content_resource_course_controller_list_field.py +10 -0
- tutorflow_content/generated/models/content_resource_event.py +328 -0
- tutorflow_content/generated/models/content_resource_event_resource_type.py +13 -0
- tutorflow_content/generated/models/content_resource_event_source.py +8 -0
- tutorflow_content/generated/models/content_resource_event_subresource.py +107 -0
- tutorflow_content/generated/models/content_resource_event_subresource_op.py +9 -0
- tutorflow_content/generated/models/content_resource_event_subresource_type.py +11 -0
- tutorflow_content/generated/models/content_resource_event_subresources_item.py +106 -0
- tutorflow_content/generated/models/content_resource_event_subresources_item_op.py +9 -0
- tutorflow_content/generated/models/content_resource_event_subresources_item_type.py +11 -0
- tutorflow_content/generated/models/content_resource_game_controller_list_field.py +9 -0
- tutorflow_content/generated/models/content_resource_module_controller_list_field.py +9 -0
- tutorflow_content/generated/models/content_resource_module_controller_update_response_200.py +437 -0
- tutorflow_content/generated/models/content_resource_simulation_controller_list_field.py +10 -0
- tutorflow_content/generated/models/content_resource_slide_controller_list_field.py +9 -0
- tutorflow_content/generated/models/content_resource_slide_controller_update_response_200.py +311 -0
- tutorflow_content/generated/models/content_resource_test_controller_list_field.py +11 -0
- tutorflow_content/generated/models/content_resource_test_controller_update_response_200.py +441 -0
- tutorflow_content/generated/models/content_resource_video_controller_list_field.py +9 -0
- tutorflow_content/generated/models/content_resource_video_narration_controller_narrate_missing_response_200.py +110 -0
- tutorflow_content/generated/models/content_resource_video_narration_controller_narrate_scene_response_200.py +110 -0
- tutorflow_content/generated/models/content_resource_video_render_controller_trigger_body.py +62 -0
- tutorflow_content/generated/models/content_scene_subtitle.py +92 -0
- tutorflow_content/generated/models/content_simulation.py +390 -0
- tutorflow_content/generated/models/content_simulation_brief_type_0.py +66 -0
- tutorflow_content/generated/models/content_simulation_list.py +137 -0
- tutorflow_content/generated/models/content_simulation_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/content_slide.py +300 -0
- tutorflow_content/generated/models/content_slide_list.py +137 -0
- tutorflow_content/generated/models/content_slide_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/content_success.py +79 -0
- tutorflow_content/generated/models/content_test.py +429 -0
- tutorflow_content/generated/models/content_test_item.py +280 -0
- tutorflow_content/generated/models/content_test_item_stats.py +92 -0
- tutorflow_content/generated/models/content_test_list.py +137 -0
- tutorflow_content/generated/models/content_test_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/content_test_result.py +250 -0
- tutorflow_content/generated/models/content_test_result_controller_get_include.py +7 -0
- tutorflow_content/generated/models/content_test_result_detail.py +274 -0
- tutorflow_content/generated/models/content_test_result_item.py +116 -0
- tutorflow_content/generated/models/content_test_result_item_status.py +10 -0
- tutorflow_content/generated/models/content_test_result_page.py +108 -0
- tutorflow_content/generated/models/content_test_result_status.py +8 -0
- tutorflow_content/generated/models/content_test_result_taker_type_0.py +93 -0
- tutorflow_content/generated/models/content_unenrolled.py +102 -0
- tutorflow_content/generated/models/content_video.py +431 -0
- tutorflow_content/generated/models/content_video_list.py +116 -0
- tutorflow_content/generated/models/content_video_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/content_video_render_accepted.py +145 -0
- tutorflow_content/generated/models/content_video_render_cancelled.py +79 -0
- tutorflow_content/generated/models/content_video_render_event.py +195 -0
- tutorflow_content/generated/models/content_video_render_event_render_status.py +8 -0
- tutorflow_content/generated/models/content_video_render_state.py +10 -0
- tutorflow_content/generated/models/content_video_render_status.py +198 -0
- tutorflow_content/generated/models/content_video_scene.py +623 -0
- tutorflow_content/generated/models/content_video_scene_visual_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/content_visual_adjustments.py +181 -0
- tutorflow_content/generated/models/content_visual_overlay.py +311 -0
- tutorflow_content/generated/models/content_visual_overlay_animation.py +105 -0
- tutorflow_content/generated/models/content_visual_overlay_frame_animation.py +87 -0
- tutorflow_content/generated/models/content_visual_overlay_frames_item.py +87 -0
- tutorflow_content/generated/models/content_visual_overlay_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/content_webhook_created_res_dto.py +344 -0
- tutorflow_content/generated/models/content_webhook_created_res_dto_disabled_reason_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_created_res_dto_disabled_reason_type_2_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_created_res_dto_disabled_reason_type_3_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_created_res_dto_mode.py +8 -0
- tutorflow_content/generated/models/content_webhook_deleted.py +91 -0
- tutorflow_content/generated/models/content_webhook_delivery_res_dto.py +325 -0
- tutorflow_content/generated/models/content_webhook_delivery_res_dto_payload_type_0.py +66 -0
- tutorflow_content/generated/models/content_webhook_event_envelope.py +102 -0
- tutorflow_content/generated/models/content_webhook_ping_event.py +115 -0
- tutorflow_content/generated/models/content_webhook_res_dto.py +336 -0
- tutorflow_content/generated/models/content_webhook_res_dto_disabled_reason_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_res_dto_disabled_reason_type_2_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_res_dto_disabled_reason_type_3_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_res_dto_mode.py +8 -0
- tutorflow_content/generated/models/content_webhook_updated_res_dto.py +351 -0
- tutorflow_content/generated/models/content_webhook_updated_res_dto_disabled_reason_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_updated_res_dto_disabled_reason_type_2_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_updated_res_dto_disabled_reason_type_3_type_1.py +8 -0
- tutorflow_content/generated/models/content_webhook_updated_res_dto_mode.py +8 -0
- tutorflow_content/generated/models/copy_standalone_lesson_to_course_req_dto.py +118 -0
- tutorflow_content/generated/models/course_celebration_trigger.py +9 -0
- tutorflow_content/generated/models/course_content_type.py +8 -0
- tutorflow_content/generated/models/create_classroom_course_req_dto.py +176 -0
- tutorflow_content/generated/models/create_classroom_game_dto.py +150 -0
- tutorflow_content/generated/models/create_classroom_game_dto_metadata_type_0.py +67 -0
- tutorflow_content/generated/models/create_classroom_simulation_dto.py +150 -0
- tutorflow_content/generated/models/create_classroom_simulation_dto_metadata_type_0.py +67 -0
- tutorflow_content/generated/models/create_classroom_slide_dto.py +190 -0
- tutorflow_content/generated/models/create_classroom_slide_dto_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/create_classroom_test_dto.py +162 -0
- tutorflow_content/generated/models/create_classroom_video_dto.py +108 -0
- tutorflow_content/generated/models/create_content_api_key_req_dto.py +207 -0
- tutorflow_content/generated/models/create_content_api_key_req_dto_mode.py +8 -0
- tutorflow_content/generated/models/create_content_asset_upload_req_dto.py +121 -0
- tutorflow_content/generated/models/create_content_asset_upload_req_dto_purpose.py +13 -0
- tutorflow_content/generated/models/create_content_chapter_req_dto.py +86 -0
- tutorflow_content/generated/models/create_content_expansion_req_dto.py +155 -0
- tutorflow_content/generated/models/create_content_expansion_req_dto_payload.py +66 -0
- tutorflow_content/generated/models/create_content_lesson_req_dto.py +143 -0
- tutorflow_content/generated/models/create_content_lesson_req_dto_submission.py +70 -0
- tutorflow_content/generated/models/create_content_module_req_dto.py +281 -0
- tutorflow_content/generated/models/create_content_module_req_dto_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/create_content_module_req_dto_type.py +19 -0
- tutorflow_content/generated/models/create_content_webhook_req_dto.py +132 -0
- tutorflow_content/generated/models/create_content_webhook_req_dto_mode.py +8 -0
- tutorflow_content/generated/models/create_update_classroom_test_dto.py +449 -0
- tutorflow_content/generated/models/create_update_classroom_test_dto_metadata_type_0.py +66 -0
- tutorflow_content/generated/models/create_update_classroom_test_item_dto.py +248 -0
- tutorflow_content/generated/models/enroll_content_learners_request.py +91 -0
- tutorflow_content/generated/models/export_classroom_content_req_dto.py +90 -0
- tutorflow_content/generated/models/game_visibility.py +8 -0
- tutorflow_content/generated/models/gamesortfields.py +9 -0
- tutorflow_content/generated/models/generate_game_brief_dto.py +78 -0
- tutorflow_content/generated/models/generate_simulation_brief_dto.py +78 -0
- tutorflow_content/generated/models/invite_content_learner_request.py +148 -0
- tutorflow_content/generated/models/order.py +8 -0
- tutorflow_content/generated/models/passing_value_type.py +8 -0
- tutorflow_content/generated/models/problem_type.py +11 -0
- tutorflow_content/generated/models/quiz_type.py +10 -0
- tutorflow_content/generated/models/remotion_template_type.py +13 -0
- tutorflow_content/generated/models/reorder_content_chapters_req_dto.py +91 -0
- tutorflow_content/generated/models/reorder_content_lessons_req_dto.py +91 -0
- tutorflow_content/generated/models/reorder_scenes_dto.py +91 -0
- tutorflow_content/generated/models/revise_game_dto.py +76 -0
- tutorflow_content/generated/models/revise_simulation_dto.py +76 -0
- tutorflow_content/generated/models/rotate_content_api_key_req_dto.py +79 -0
- tutorflow_content/generated/models/rotate_content_webhook_secret_req_dto.py +88 -0
- tutorflow_content/generated/models/simulation_visibility.py +8 -0
- tutorflow_content/generated/models/simulationsortfields.py +10 -0
- tutorflow_content/generated/models/simulationsubjects.py +13 -0
- tutorflow_content/generated/models/slide_visibility.py +8 -0
- tutorflow_content/generated/models/test_layout_type.py +8 -0
- tutorflow_content/generated/models/test_period_type.py +8 -0
- tutorflow_content/generated/models/update_classroom_course_settings_dto.py +114 -0
- tutorflow_content/generated/models/update_classroom_course_settings_dto_ai_tutor_defaults.py +64 -0
- tutorflow_content/generated/models/update_classroom_game_dto.py +205 -0
- tutorflow_content/generated/models/update_classroom_game_dto_brief_type_0.py +64 -0
- tutorflow_content/generated/models/update_classroom_game_dto_metadata_type_0.py +67 -0
- tutorflow_content/generated/models/update_classroom_simulation_dto.py +196 -0
- tutorflow_content/generated/models/update_classroom_simulation_dto_brief_type_0.py +64 -0
- tutorflow_content/generated/models/update_classroom_simulation_dto_metadata_type_0.py +67 -0
- tutorflow_content/generated/models/update_classroom_slide_dto.py +187 -0
- tutorflow_content/generated/models/update_classroom_slide_dto_metadata_type_0.py +66 -0
- tutorflow_content/generated/models/update_classroom_video_dto.py +235 -0
- tutorflow_content/generated/models/update_classroom_video_dto_metadata_type_0.py +66 -0
- tutorflow_content/generated/models/update_content_api_key_req_dto.py +217 -0
- tutorflow_content/generated/models/update_content_chapter_req_dto.py +87 -0
- tutorflow_content/generated/models/update_content_course_req_dto.py +186 -0
- tutorflow_content/generated/models/update_content_course_req_dto_visibility.py +11 -0
- tutorflow_content/generated/models/update_content_lesson_req_dto.py +196 -0
- tutorflow_content/generated/models/update_content_lesson_req_dto_submission.py +70 -0
- tutorflow_content/generated/models/update_content_webhook_req_dto.py +150 -0
- tutorflow_content/generated/models/update_standalone_lesson_dto.py +274 -0
- tutorflow_content/generated/models/update_standalone_lesson_dto_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/update_standalone_lesson_dto_type.py +19 -0
- tutorflow_content/generated/models/update_video_scene_dto.py +758 -0
- tutorflow_content/generated/models/update_video_scene_dto_transition_out_type_1.py +12 -0
- tutorflow_content/generated/models/update_video_scene_dto_transition_out_type_2_type_1.py +12 -0
- tutorflow_content/generated/models/update_video_scene_dto_transition_out_type_3_type_1.py +12 -0
- tutorflow_content/generated/models/update_video_scene_dto_video_effect_type_1.py +14 -0
- tutorflow_content/generated/models/update_video_scene_dto_video_effect_type_2_type_1.py +14 -0
- tutorflow_content/generated/models/update_video_scene_dto_video_effect_type_3_type_1.py +14 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_effect_type_1.py +14 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_effect_type_2_type_1.py +14 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_effect_type_3_type_1.py +14 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_fit.py +8 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_metadata_type_0.py +64 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_source_type_1.py +10 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_source_type_2_type_1.py +10 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_source_type_3_type_1.py +10 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_type_type_1.py +9 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_type_type_2_type_1.py +9 -0
- tutorflow_content/generated/models/update_video_scene_dto_visual_type_type_3_type_1.py +9 -0
- tutorflow_content/generated/models/video_clip_source.py +8 -0
- tutorflow_content/generated/models/video_visibility.py +9 -0
- tutorflow_content/generated/types.py +53 -0
- tutorflow_content/pagination.py +48 -0
- tutorflow_content/retry.py +129 -0
- tutorflow_content/runs.py +140 -0
- tutorflow_content/webhooks.py +97 -0
- tutorflow_content-0.1.0.dist-info/METADATA +151 -0
- tutorflow_content-0.1.0.dist-info/RECORD +507 -0
- tutorflow_content-0.1.0.dist-info/WHEEL +5 -0
- tutorflow_content-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"""Python client for the TutorFlow Content API.
|
|
2
|
+
|
|
3
|
+
Generated routes and models live in `tutorflow_content.generated`
|
|
4
|
+
(openapi-python-client); this package adds the client factory, retries,
|
|
5
|
+
pagination, run polling, typed errors and webhook verification.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .client import DEFAULT_BASE_URL, create_client, is_test_key, new_idempotency_key
|
|
9
|
+
from .errors import ContentApiError, ContentPreconditionFailedError, error_from_response, unwrap
|
|
10
|
+
from .pagination import paginate
|
|
11
|
+
from .retry import AsyncRetryTransport, RetryConfig, RetryTransport, is_safe_to_repeat
|
|
12
|
+
from .runs import ContentWaitError, wait_for_build, wait_for_render, wait_for_run
|
|
13
|
+
from .webhooks import (
|
|
14
|
+
DEFAULT_TOLERANCE_SECONDS,
|
|
15
|
+
SIGNATURE_HEADER,
|
|
16
|
+
WebhookVerificationError,
|
|
17
|
+
verify_webhook,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
__all__ = [
|
|
21
|
+
"DEFAULT_BASE_URL",
|
|
22
|
+
"DEFAULT_TOLERANCE_SECONDS",
|
|
23
|
+
"SIGNATURE_HEADER",
|
|
24
|
+
"AsyncRetryTransport",
|
|
25
|
+
"ContentApiError",
|
|
26
|
+
"ContentPreconditionFailedError",
|
|
27
|
+
"ContentWaitError",
|
|
28
|
+
"RetryConfig",
|
|
29
|
+
"RetryTransport",
|
|
30
|
+
"WebhookVerificationError",
|
|
31
|
+
"create_client",
|
|
32
|
+
"error_from_response",
|
|
33
|
+
"is_safe_to_repeat",
|
|
34
|
+
"is_test_key",
|
|
35
|
+
"new_idempotency_key",
|
|
36
|
+
"paginate",
|
|
37
|
+
"unwrap",
|
|
38
|
+
"verify_webhook",
|
|
39
|
+
"wait_for_build",
|
|
40
|
+
"wait_for_render",
|
|
41
|
+
"wait_for_run",
|
|
42
|
+
]
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"""Builds the generated AuthenticatedClient with retries and a Content API key."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import uuid
|
|
6
|
+
from collections.abc import Mapping
|
|
7
|
+
|
|
8
|
+
import httpx
|
|
9
|
+
|
|
10
|
+
from .generated import AuthenticatedClient
|
|
11
|
+
from .retry import AsyncRetryTransport, RetryConfig, RetryTransport
|
|
12
|
+
|
|
13
|
+
DEFAULT_BASE_URL = "https://api.tutorflow.io"
|
|
14
|
+
KEY_PREFIX = "tf_content_"
|
|
15
|
+
TEST_KEY_PREFIX = "tf_content_test_"
|
|
16
|
+
DEFAULT_TIMEOUT_SECONDS = 30.0
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def is_test_key(api_key: str) -> bool:
|
|
20
|
+
"""Whether a key is a sandbox (test mode) key."""
|
|
21
|
+
return api_key.startswith(TEST_KEY_PREFIX)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def new_idempotency_key() -> str:
|
|
25
|
+
"""A fresh key for the `idempotency_key=` argument of a POST. Keep it to retry the same call later."""
|
|
26
|
+
return str(uuid.uuid4())
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def create_client(
|
|
30
|
+
api_key: str,
|
|
31
|
+
*,
|
|
32
|
+
base_url: str = DEFAULT_BASE_URL,
|
|
33
|
+
retry: RetryConfig | None = RetryConfig(),
|
|
34
|
+
transport: httpx.BaseTransport | None = None,
|
|
35
|
+
async_transport: httpx.AsyncBaseTransport | None = None,
|
|
36
|
+
timeout: float = DEFAULT_TIMEOUT_SECONDS,
|
|
37
|
+
headers: Mapping[str, str] | None = None,
|
|
38
|
+
) -> AuthenticatedClient:
|
|
39
|
+
"""A client for every generated call (`tutorflow_content.generated.api...`).
|
|
40
|
+
|
|
41
|
+
The key is sent as a bearer token. Rate-limited requests, and failed
|
|
42
|
+
requests that are safe to repeat, are retried (see retry.py); pass
|
|
43
|
+
`retry=None` to send every request once. `transport` and `async_transport`
|
|
44
|
+
replace the network, e.g. with httpx.MockTransport in tests.
|
|
45
|
+
"""
|
|
46
|
+
key = api_key.strip()
|
|
47
|
+
if not key.startswith(KEY_PREFIX):
|
|
48
|
+
raise ValueError("api_key must be a Content API key that starts with tf_content_")
|
|
49
|
+
|
|
50
|
+
root = base_url.rstrip("/")
|
|
51
|
+
all_headers = {**(headers or {}), "Authorization": f"Bearer {key}"}
|
|
52
|
+
sync_transport = transport or httpx.HTTPTransport()
|
|
53
|
+
async_base = async_transport or httpx.AsyncHTTPTransport()
|
|
54
|
+
client = AuthenticatedClient(base_url=root, token=key, headers=dict(all_headers))
|
|
55
|
+
client.set_httpx_client(
|
|
56
|
+
httpx.Client(
|
|
57
|
+
base_url=root,
|
|
58
|
+
headers=all_headers,
|
|
59
|
+
timeout=timeout,
|
|
60
|
+
transport=RetryTransport(sync_transport, retry) if retry else sync_transport,
|
|
61
|
+
)
|
|
62
|
+
)
|
|
63
|
+
client.set_async_httpx_client(
|
|
64
|
+
httpx.AsyncClient(
|
|
65
|
+
base_url=root,
|
|
66
|
+
headers=all_headers,
|
|
67
|
+
timeout=timeout,
|
|
68
|
+
transport=AsyncRetryTransport(async_base, retry) if retry else async_base,
|
|
69
|
+
)
|
|
70
|
+
)
|
|
71
|
+
return client
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"""Typed errors built from the Content API error envelope."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from collections.abc import Mapping
|
|
7
|
+
from datetime import datetime, timezone
|
|
8
|
+
from email.utils import parsedate_to_datetime
|
|
9
|
+
from typing import Any, Protocol
|
|
10
|
+
|
|
11
|
+
PRECONDITION_FAILED = 412
|
|
12
|
+
UNKNOWN_ERROR_CODE = "content_http_error"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class _ResponseLike(Protocol):
|
|
16
|
+
"""httpx.Response and the generated client's Response both fit."""
|
|
17
|
+
|
|
18
|
+
status_code: int
|
|
19
|
+
content: bytes
|
|
20
|
+
headers: Mapping[str, str]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def parse_retry_after(value: str | None, now: datetime | None = None) -> float | None:
|
|
24
|
+
"""Seconds from a Retry-After header, which may be seconds or an HTTP date."""
|
|
25
|
+
if value is None or value.strip() == "":
|
|
26
|
+
return None
|
|
27
|
+
try:
|
|
28
|
+
return max(0.0, float(value))
|
|
29
|
+
except ValueError:
|
|
30
|
+
pass
|
|
31
|
+
try:
|
|
32
|
+
when = parsedate_to_datetime(value)
|
|
33
|
+
except (TypeError, ValueError):
|
|
34
|
+
return None
|
|
35
|
+
current = now or datetime.now(timezone.utc)
|
|
36
|
+
return max(0.0, (when - current).total_seconds())
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _envelope(content: bytes) -> dict[str, Any]:
|
|
40
|
+
try:
|
|
41
|
+
body = json.loads(content or b"null")
|
|
42
|
+
except ValueError:
|
|
43
|
+
return {}
|
|
44
|
+
error = body.get("error") if isinstance(body, dict) else None
|
|
45
|
+
return error if isinstance(error, dict) else {}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _header(headers: Mapping[str, str], name: str) -> str | None:
|
|
49
|
+
"""Headers are case-insensitive; the generated Response keeps a plain mapping."""
|
|
50
|
+
lowered = name.lower()
|
|
51
|
+
return next((value for key, value in headers.items() if key.lower() == lowered), None)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class ContentApiError(Exception):
|
|
55
|
+
"""A Content API answer outside 2xx, with every field of the error envelope."""
|
|
56
|
+
|
|
57
|
+
def __init__(self, status: int, error: Mapping[str, Any], headers: Mapping[str, str] | None = None) -> None:
|
|
58
|
+
headers = headers or {}
|
|
59
|
+
super().__init__(error.get("message") or f"The Content API answered HTTP {status}")
|
|
60
|
+
self.code: str = error.get("code") or UNKNOWN_ERROR_CODE
|
|
61
|
+
self.status: int = int(error.get("status") or status)
|
|
62
|
+
self.request_id: str | None = error.get("requestId") or _header(headers, "Request-Id")
|
|
63
|
+
retry_after = error.get("retryAfterSeconds")
|
|
64
|
+
self.retry_after_seconds: float | None = (
|
|
65
|
+
float(retry_after) if retry_after is not None else parse_retry_after(_header(headers, "Retry-After"))
|
|
66
|
+
)
|
|
67
|
+
self.current_etag: str | None = error.get("currentETag")
|
|
68
|
+
self.details: list[dict[str, Any]] = list(error.get("details") or [])
|
|
69
|
+
self.body: dict[str, Any] = dict(error)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class ContentPreconditionFailedError(ContentApiError):
|
|
73
|
+
"""A 412: the resource changed since the ETag sent in If-Match; see current_etag."""
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def error_from_response(response: _ResponseLike) -> ContentApiError:
|
|
77
|
+
"""The exception for a non-2xx response."""
|
|
78
|
+
status = int(response.status_code)
|
|
79
|
+
error_class = ContentPreconditionFailedError if status == PRECONDITION_FAILED else ContentApiError
|
|
80
|
+
return error_class(status, _envelope(response.content), response.headers)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def unwrap(response: Any) -> Any:
|
|
84
|
+
"""The parsed body of a `*_detailed` call, or a raised ContentApiError."""
|
|
85
|
+
if not 200 <= int(response.status_code) < 300:
|
|
86
|
+
raise error_from_response(response)
|
|
87
|
+
return response.parsed
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
""" Contains methods for accessing the API """
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
""" Contains endpoint functions for accessing the API """
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any, cast
|
|
3
|
+
from urllib.parse import quote
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
from ...client import AuthenticatedClient, Client
|
|
8
|
+
from ...types import Response, UNSET
|
|
9
|
+
from ... import errors
|
|
10
|
+
|
|
11
|
+
from ...models.content_api_error import ContentApiError
|
|
12
|
+
from ...models.content_api_key_created_res_dto import ContentApiKeyCreatedResDto
|
|
13
|
+
from ...models.create_content_api_key_req_dto import CreateContentApiKeyReqDto
|
|
14
|
+
from typing import cast
|
|
15
|
+
from uuid import UUID
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _get_kwargs(
|
|
20
|
+
organization_id: UUID,
|
|
21
|
+
*,
|
|
22
|
+
body: CreateContentApiKeyReqDto,
|
|
23
|
+
|
|
24
|
+
) -> dict[str, Any]:
|
|
25
|
+
headers: dict[str, Any] = {}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
_kwargs: dict[str, Any] = {
|
|
33
|
+
"method": "post",
|
|
34
|
+
"url": "/v1/content/organizations/{organization_id}/api-keys".format(organization_id=quote(str(organization_id), safe=""),),
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
_kwargs["json"] = body.to_dict()
|
|
38
|
+
|
|
39
|
+
headers["Content-Type"] = "application/json"
|
|
40
|
+
|
|
41
|
+
_kwargs["headers"] = headers
|
|
42
|
+
return _kwargs
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ContentApiError | ContentApiKeyCreatedResDto | None:
|
|
47
|
+
if response.status_code == 201:
|
|
48
|
+
response_201 = ContentApiKeyCreatedResDto.from_dict(response.json())
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
return response_201
|
|
53
|
+
|
|
54
|
+
if response.status_code == 400:
|
|
55
|
+
response_400 = ContentApiError.from_dict(response.json())
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
return response_400
|
|
60
|
+
|
|
61
|
+
if response.status_code == 401:
|
|
62
|
+
response_401 = ContentApiError.from_dict(response.json())
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
return response_401
|
|
67
|
+
|
|
68
|
+
if response.status_code == 403:
|
|
69
|
+
response_403 = ContentApiError.from_dict(response.json())
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
return response_403
|
|
74
|
+
|
|
75
|
+
if response.status_code == 404:
|
|
76
|
+
response_404 = ContentApiError.from_dict(response.json())
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
return response_404
|
|
81
|
+
|
|
82
|
+
if response.status_code == 422:
|
|
83
|
+
response_422 = ContentApiError.from_dict(response.json())
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
return response_422
|
|
88
|
+
|
|
89
|
+
if response.status_code == 500:
|
|
90
|
+
response_500 = ContentApiError.from_dict(response.json())
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
return response_500
|
|
95
|
+
|
|
96
|
+
if client.raise_on_unexpected_status:
|
|
97
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
98
|
+
else:
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ContentApiError | ContentApiKeyCreatedResDto]:
|
|
103
|
+
return Response(
|
|
104
|
+
status_code=HTTPStatus(response.status_code),
|
|
105
|
+
content=response.content,
|
|
106
|
+
headers=response.headers,
|
|
107
|
+
parsed=_parse_response(client=client, response=response),
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def sync_detailed(
|
|
112
|
+
organization_id: UUID,
|
|
113
|
+
*,
|
|
114
|
+
client: AuthenticatedClient,
|
|
115
|
+
body: CreateContentApiKeyReqDto,
|
|
116
|
+
|
|
117
|
+
) -> Response[ContentApiError | ContentApiKeyCreatedResDto]:
|
|
118
|
+
""" Create a Content Integration API key
|
|
119
|
+
|
|
120
|
+
Signed-in TutorFlow session of an organization admin; not callable with a `tf_content_` key.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
organization_id (UUID):
|
|
124
|
+
body (CreateContentApiKeyReqDto):
|
|
125
|
+
|
|
126
|
+
Raises:
|
|
127
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
128
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
129
|
+
|
|
130
|
+
Returns:
|
|
131
|
+
Response[ContentApiError | ContentApiKeyCreatedResDto]
|
|
132
|
+
"""
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
kwargs = _get_kwargs(
|
|
136
|
+
organization_id=organization_id,
|
|
137
|
+
body=body,
|
|
138
|
+
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
response = client.get_httpx_client().request(
|
|
142
|
+
**kwargs,
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
return _build_response(client=client, response=response)
|
|
146
|
+
|
|
147
|
+
def sync(
|
|
148
|
+
organization_id: UUID,
|
|
149
|
+
*,
|
|
150
|
+
client: AuthenticatedClient,
|
|
151
|
+
body: CreateContentApiKeyReqDto,
|
|
152
|
+
|
|
153
|
+
) -> ContentApiError | ContentApiKeyCreatedResDto | None:
|
|
154
|
+
""" Create a Content Integration API key
|
|
155
|
+
|
|
156
|
+
Signed-in TutorFlow session of an organization admin; not callable with a `tf_content_` key.
|
|
157
|
+
|
|
158
|
+
Args:
|
|
159
|
+
organization_id (UUID):
|
|
160
|
+
body (CreateContentApiKeyReqDto):
|
|
161
|
+
|
|
162
|
+
Raises:
|
|
163
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
164
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
ContentApiError | ContentApiKeyCreatedResDto
|
|
168
|
+
"""
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
return sync_detailed(
|
|
172
|
+
organization_id=organization_id,
|
|
173
|
+
client=client,
|
|
174
|
+
body=body,
|
|
175
|
+
|
|
176
|
+
).parsed
|
|
177
|
+
|
|
178
|
+
async def asyncio_detailed(
|
|
179
|
+
organization_id: UUID,
|
|
180
|
+
*,
|
|
181
|
+
client: AuthenticatedClient,
|
|
182
|
+
body: CreateContentApiKeyReqDto,
|
|
183
|
+
|
|
184
|
+
) -> Response[ContentApiError | ContentApiKeyCreatedResDto]:
|
|
185
|
+
""" Create a Content Integration API key
|
|
186
|
+
|
|
187
|
+
Signed-in TutorFlow session of an organization admin; not callable with a `tf_content_` key.
|
|
188
|
+
|
|
189
|
+
Args:
|
|
190
|
+
organization_id (UUID):
|
|
191
|
+
body (CreateContentApiKeyReqDto):
|
|
192
|
+
|
|
193
|
+
Raises:
|
|
194
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
195
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
196
|
+
|
|
197
|
+
Returns:
|
|
198
|
+
Response[ContentApiError | ContentApiKeyCreatedResDto]
|
|
199
|
+
"""
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
kwargs = _get_kwargs(
|
|
203
|
+
organization_id=organization_id,
|
|
204
|
+
body=body,
|
|
205
|
+
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
response = await client.get_async_httpx_client().request(
|
|
209
|
+
**kwargs
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
return _build_response(client=client, response=response)
|
|
213
|
+
|
|
214
|
+
async def asyncio(
|
|
215
|
+
organization_id: UUID,
|
|
216
|
+
*,
|
|
217
|
+
client: AuthenticatedClient,
|
|
218
|
+
body: CreateContentApiKeyReqDto,
|
|
219
|
+
|
|
220
|
+
) -> ContentApiError | ContentApiKeyCreatedResDto | None:
|
|
221
|
+
""" Create a Content Integration API key
|
|
222
|
+
|
|
223
|
+
Signed-in TutorFlow session of an organization admin; not callable with a `tf_content_` key.
|
|
224
|
+
|
|
225
|
+
Args:
|
|
226
|
+
organization_id (UUID):
|
|
227
|
+
body (CreateContentApiKeyReqDto):
|
|
228
|
+
|
|
229
|
+
Raises:
|
|
230
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
231
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
232
|
+
|
|
233
|
+
Returns:
|
|
234
|
+
ContentApiError | ContentApiKeyCreatedResDto
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
return (await asyncio_detailed(
|
|
239
|
+
organization_id=organization_id,
|
|
240
|
+
client=client,
|
|
241
|
+
body=body,
|
|
242
|
+
|
|
243
|
+
)).parsed
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any, cast
|
|
3
|
+
from urllib.parse import quote
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
from ...client import AuthenticatedClient, Client
|
|
8
|
+
from ...types import Response, UNSET
|
|
9
|
+
from ... import errors
|
|
10
|
+
|
|
11
|
+
from ...models.content_api_error import ContentApiError
|
|
12
|
+
from ...models.content_integration_api_key_controller_delete_api_key_response_200 import ContentIntegrationApiKeyControllerDeleteApiKeyResponse200
|
|
13
|
+
from typing import cast
|
|
14
|
+
from uuid import UUID
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _get_kwargs(
|
|
19
|
+
organization_id: UUID,
|
|
20
|
+
key_id: UUID,
|
|
21
|
+
|
|
22
|
+
) -> dict[str, Any]:
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
_kwargs: dict[str, Any] = {
|
|
30
|
+
"method": "delete",
|
|
31
|
+
"url": "/v1/content/organizations/{organization_id}/api-keys/{key_id}".format(organization_id=quote(str(organization_id), safe=""),key_id=quote(str(key_id), safe=""),),
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
return _kwargs
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200 | None:
|
|
40
|
+
if response.status_code == 200:
|
|
41
|
+
response_200 = ContentIntegrationApiKeyControllerDeleteApiKeyResponse200.from_dict(response.json())
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
return response_200
|
|
46
|
+
|
|
47
|
+
if response.status_code == 400:
|
|
48
|
+
response_400 = ContentApiError.from_dict(response.json())
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
return response_400
|
|
53
|
+
|
|
54
|
+
if response.status_code == 401:
|
|
55
|
+
response_401 = ContentApiError.from_dict(response.json())
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
return response_401
|
|
60
|
+
|
|
61
|
+
if response.status_code == 403:
|
|
62
|
+
response_403 = ContentApiError.from_dict(response.json())
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
return response_403
|
|
67
|
+
|
|
68
|
+
if response.status_code == 404:
|
|
69
|
+
response_404 = ContentApiError.from_dict(response.json())
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
return response_404
|
|
74
|
+
|
|
75
|
+
if response.status_code == 409:
|
|
76
|
+
response_409 = ContentApiError.from_dict(response.json())
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
return response_409
|
|
81
|
+
|
|
82
|
+
if response.status_code == 422:
|
|
83
|
+
response_422 = ContentApiError.from_dict(response.json())
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
return response_422
|
|
88
|
+
|
|
89
|
+
if response.status_code == 500:
|
|
90
|
+
response_500 = ContentApiError.from_dict(response.json())
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
return response_500
|
|
95
|
+
|
|
96
|
+
if client.raise_on_unexpected_status:
|
|
97
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
98
|
+
else:
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200]:
|
|
103
|
+
return Response(
|
|
104
|
+
status_code=HTTPStatus(response.status_code),
|
|
105
|
+
content=response.content,
|
|
106
|
+
headers=response.headers,
|
|
107
|
+
parsed=_parse_response(client=client, response=response),
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def sync_detailed(
|
|
112
|
+
organization_id: UUID,
|
|
113
|
+
key_id: UUID,
|
|
114
|
+
*,
|
|
115
|
+
client: AuthenticatedClient,
|
|
116
|
+
|
|
117
|
+
) -> Response[ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200]:
|
|
118
|
+
""" Delete a revoked or expired Content Integration API key
|
|
119
|
+
|
|
120
|
+
Removes a key that no longer works from the key list. A key that still works answers `409`
|
|
121
|
+
`content_api_key_active`: revoke it first. Signed-in TutorFlow session of an organization admin; not
|
|
122
|
+
callable with a `tf_content_` key.
|
|
123
|
+
|
|
124
|
+
Args:
|
|
125
|
+
organization_id (UUID):
|
|
126
|
+
key_id (UUID):
|
|
127
|
+
|
|
128
|
+
Raises:
|
|
129
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
130
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
Response[ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200]
|
|
134
|
+
"""
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
kwargs = _get_kwargs(
|
|
138
|
+
organization_id=organization_id,
|
|
139
|
+
key_id=key_id,
|
|
140
|
+
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
response = client.get_httpx_client().request(
|
|
144
|
+
**kwargs,
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
return _build_response(client=client, response=response)
|
|
148
|
+
|
|
149
|
+
def sync(
|
|
150
|
+
organization_id: UUID,
|
|
151
|
+
key_id: UUID,
|
|
152
|
+
*,
|
|
153
|
+
client: AuthenticatedClient,
|
|
154
|
+
|
|
155
|
+
) -> ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200 | None:
|
|
156
|
+
""" Delete a revoked or expired Content Integration API key
|
|
157
|
+
|
|
158
|
+
Removes a key that no longer works from the key list. A key that still works answers `409`
|
|
159
|
+
`content_api_key_active`: revoke it first. Signed-in TutorFlow session of an organization admin; not
|
|
160
|
+
callable with a `tf_content_` key.
|
|
161
|
+
|
|
162
|
+
Args:
|
|
163
|
+
organization_id (UUID):
|
|
164
|
+
key_id (UUID):
|
|
165
|
+
|
|
166
|
+
Raises:
|
|
167
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
168
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
169
|
+
|
|
170
|
+
Returns:
|
|
171
|
+
ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200
|
|
172
|
+
"""
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
return sync_detailed(
|
|
176
|
+
organization_id=organization_id,
|
|
177
|
+
key_id=key_id,
|
|
178
|
+
client=client,
|
|
179
|
+
|
|
180
|
+
).parsed
|
|
181
|
+
|
|
182
|
+
async def asyncio_detailed(
|
|
183
|
+
organization_id: UUID,
|
|
184
|
+
key_id: UUID,
|
|
185
|
+
*,
|
|
186
|
+
client: AuthenticatedClient,
|
|
187
|
+
|
|
188
|
+
) -> Response[ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200]:
|
|
189
|
+
""" Delete a revoked or expired Content Integration API key
|
|
190
|
+
|
|
191
|
+
Removes a key that no longer works from the key list. A key that still works answers `409`
|
|
192
|
+
`content_api_key_active`: revoke it first. Signed-in TutorFlow session of an organization admin; not
|
|
193
|
+
callable with a `tf_content_` key.
|
|
194
|
+
|
|
195
|
+
Args:
|
|
196
|
+
organization_id (UUID):
|
|
197
|
+
key_id (UUID):
|
|
198
|
+
|
|
199
|
+
Raises:
|
|
200
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
201
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
202
|
+
|
|
203
|
+
Returns:
|
|
204
|
+
Response[ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200]
|
|
205
|
+
"""
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
kwargs = _get_kwargs(
|
|
209
|
+
organization_id=organization_id,
|
|
210
|
+
key_id=key_id,
|
|
211
|
+
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
response = await client.get_async_httpx_client().request(
|
|
215
|
+
**kwargs
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
return _build_response(client=client, response=response)
|
|
219
|
+
|
|
220
|
+
async def asyncio(
|
|
221
|
+
organization_id: UUID,
|
|
222
|
+
key_id: UUID,
|
|
223
|
+
*,
|
|
224
|
+
client: AuthenticatedClient,
|
|
225
|
+
|
|
226
|
+
) -> ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200 | None:
|
|
227
|
+
""" Delete a revoked or expired Content Integration API key
|
|
228
|
+
|
|
229
|
+
Removes a key that no longer works from the key list. A key that still works answers `409`
|
|
230
|
+
`content_api_key_active`: revoke it first. Signed-in TutorFlow session of an organization admin; not
|
|
231
|
+
callable with a `tf_content_` key.
|
|
232
|
+
|
|
233
|
+
Args:
|
|
234
|
+
organization_id (UUID):
|
|
235
|
+
key_id (UUID):
|
|
236
|
+
|
|
237
|
+
Raises:
|
|
238
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
239
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
240
|
+
|
|
241
|
+
Returns:
|
|
242
|
+
ContentApiError | ContentIntegrationApiKeyControllerDeleteApiKeyResponse200
|
|
243
|
+
"""
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
return (await asyncio_detailed(
|
|
247
|
+
organization_id=organization_id,
|
|
248
|
+
key_id=key_id,
|
|
249
|
+
client=client,
|
|
250
|
+
|
|
251
|
+
)).parsed
|