From 1765dcd5a81b5c528d005cfa863828a33b25afaa Mon Sep 17 00:00:00 2001 From: btkcodedev Date: Wed, 30 Oct 2024 05:25:28 +0530 Subject: [PATCH] Source Zoom: Migrate to manifest-only format with components (#47299) Co-authored-by: Octavia Squidington III Co-authored-by: ChristoGrab --- .../connectors/source-zoom/README.md | 128 +- .../connectors/source-zoom/__init__.py | 3 - .../source-zoom/acceptance-test-config.yml | 6 +- .../{source_zoom => }/components.py | 0 .../connectors/source-zoom/main.py | 8 - .../connectors/source-zoom/manifest.yaml | 14184 ++++++++++++++++ .../connectors/source-zoom/metadata.yaml | 13 +- .../connectors/source-zoom/poetry.lock | 1066 -- .../connectors/source-zoom/pyproject.toml | 28 - .../source-zoom/source_zoom/__init__.py | 8 - .../source-zoom/source_zoom/manifest.yaml | 795 - .../connectors/source-zoom/source_zoom/run.py | 14 - .../schemas/meeting_poll_results.json | 44 - .../source_zoom/schemas/meeting_polls.json | 94 - .../schemas/meeting_registrants.json | 83 - .../meeting_registration_questions.json | 46 - .../source_zoom/schemas/meetings.json | 485 - .../schemas/meetings_list_tmp.json | 5 - .../schemas/report_meeting_participants.json | 54 - .../source_zoom/schemas/report_meetings.json | 76 - .../schemas/report_webinar_participants.json | 42 - .../source_zoom/schemas/report_webinars.json | 73 - .../source_zoom/schemas/users.json | 92 - .../schemas/webinar_absentees.json | 83 - .../schemas/webinar_panelists.json | 36 - .../schemas/webinar_poll_results.json | 35 - .../source_zoom/schemas/webinar_polls.json | 94 - .../schemas/webinar_qna_results.json | 29 - .../schemas/webinar_registrants.json | 83 - .../webinar_registration_questions.json | 46 - .../schemas/webinar_tracking_sources.json | 24 - .../source_zoom/schemas/webinars.json | 311 - .../schemas/webinars_list_tmp.json | 5 - .../source-zoom/source_zoom/source.py | 18 - .../source-zoom/source_zoom/spec.yaml | 29 - .../unit_tests/test_zoom_authenticator.py | 60 - docs/integrations/sources/zoom.md | 1 + 37 files changed, 14227 insertions(+), 3974 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-zoom/__init__.py rename airbyte-integrations/connectors/source-zoom/{source_zoom => }/components.py (100%) delete mode 100644 airbyte-integrations/connectors/source-zoom/main.py create mode 100644 airbyte-integrations/connectors/source-zoom/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-zoom/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-zoom/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/__init__.py delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/run.py delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_poll_results.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_polls.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_registrants.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_registration_questions.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meetings.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meetings_list_tmp.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_meeting_participants.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_meetings.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_webinar_participants.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_webinars.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/users.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_absentees.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_panelists.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_poll_results.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_polls.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_qna_results.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_registrants.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_registration_questions.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_tracking_sources.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinars.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinars_list_tmp.json delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/source.py delete mode 100644 airbyte-integrations/connectors/source-zoom/source_zoom/spec.yaml delete mode 100755 airbyte-integrations/connectors/source-zoom/unit_tests/test_zoom_authenticator.py diff --git a/airbyte-integrations/connectors/source-zoom/README.md b/airbyte-integrations/connectors/source-zoom/README.md index 4b79a68fd3d6..633cc9023d00 100644 --- a/airbyte-integrations/connectors/source-zoom/README.md +++ b/airbyte-integrations/connectors/source-zoom/README.md @@ -1,105 +1,49 @@ -# Zoom Source +# Zoom source connector -This is the repository for the Zoom configuration based source connector. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.io/integrations/sources/zoom). +This directory contains the manifest-only connector for `source-zoom`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -## Local development +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/zoom). -#### Create credentials +## Local development -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.io/integrations/sources/zoom) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_survey_sparrow/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `integration_tests/sample_config.json` for a sample config file. +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! -**If you are an Airbyte core member**, copy the credentials in Lastpass under the secret name `source zoom test creds` -and place them into `secrets/config.json`. +If you prefer to develop locally, you can follow the instructions below. -### Locally running the connector docker image +### Building the docker image -#### Use `airbyte-ci` to build your connector +You can build any manifest-only connector with `airbyte-ci`: -The Airbyte way of building this connector is to use our `airbyte-ci` tool. -You can follow install instructions [here](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md#L1). -Then running the following command will build your connector: +1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) +2. Run the following command to build the docker image: ```bash -airbyte-ci connectors --name source-zoom build -``` - -Once the command is done, you will find your connector image in your local docker registry: `airbyte/source-zoom:dev`. - -##### Customizing our build process - -When contributing on our connector you might need to customize the build process to add a system dependency or set an env var. -You can customize our build process by adding a `build_customization.py` module to your connector. -This module should contain a `pre_connector_install` and `post_connector_install` async function that will mutate the base image and the connector container respectively. -It will be imported at runtime by our build process and the functions will be called if they exist. - -Here is an example of a `build_customization.py` module: - -```python -from __future__ import annotations - -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - # Feel free to check the dagger documentation for more information on the Container object and its methods. - # https://dagger-io.readthedocs.io/en/sdk-python-v0.6.4/ - from dagger import Container - - -async def pre_connector_install(base_image_container: Container) -> Container: - return await base_image_container.with_env_variable("MY_PRE_BUILD_ENV_VAR", "my_pre_build_env_var_value") - -async def post_connector_install(connector_container: Container) -> Container: - return await connector_container.with_env_variable("MY_POST_BUILD_ENV_VAR", "my_post_build_env_var_value") +airbyte-ci connectors --name=source-zoom build ``` -#### Build your own connector image - -This connector is built using our dynamic built process in `airbyte-ci`. -The base image used to build it is defined within the metadata.yaml file under the `connectorBuildOptions`. -The build logic is defined using [Dagger](https://dagger.io/) [here](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/pipelines/builds/python_connectors.py). -It does not rely on a Dockerfile. - -If you would like to patch our connector and build your own a simple approach would be to: +An image will be available on your host with the tag `airbyte/source-zoom:dev`. -1. Create your own Dockerfile based on the latest version of the connector image. +### Creating credentials -```Dockerfile -FROM airbyte/source-zoom:latest - -COPY . ./airbyte/integration_code -RUN pip install ./airbyte/integration_code - -# The entrypoint and default env vars are already set in the base image -# ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" -# ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -``` +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/zoom) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -Please use this as an example. This is not optimized. +### Running as a docker container -2. Build your image: +Then run any of the standard source connector commands: ```bash -docker build -t airbyte/source-zoom:dev . -# Running the spec command against your patched connector -docker run airbyte/source-zoom:dev spec -``` - -#### Run - -Then run any of the connector commands as follows: - -``` docker run --rm airbyte/source-zoom:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-zoom:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-zoom:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-zoom:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -## Testing +### Running the CI test suite You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): @@ -107,27 +51,15 @@ You can run our full test suite locally using [`airbyte-ci`](https://github.com/ airbyte-ci connectors --name=source-zoom test ``` -### Customizing acceptance Tests - -Customize `acceptance-test-config.yml` file to configure tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. - -## Dependency Management - -All of your dependencies should go in `setup.py`, NOT `requirements.txt`. The requirements file is only used to connect internal Airbyte dependencies in the monorepo for local development. -We split dependencies between two groups, dependencies that are: - -- required for your connector to work need to go to `MAIN_REQUIREMENTS` list. -- required for the testing need to go to `TEST_REQUIREMENTS` list - -### Publishing a new version of the connector - -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? +## Publishing a new version of the connector -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-zoom test` -2. Bump the connector version in `metadata.yaml`: increment the `dockerImageTag` value. Please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors). -3. Make sure the `metadata.yaml` content is up to date. -4. Make the connector documentation and its changelog is up to date (`docs/integrations/sources/zoom.md`). +If you want to contribute changes to `source-zoom`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-zoom test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + - bump the `dockerImageTag` value in in `metadata.yaml` +4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/zoom.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. 7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master. +8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry. \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-zoom/__init__.py b/airbyte-integrations/connectors/source-zoom/__init__.py deleted file mode 100644 index c941b3045795..000000000000 --- a/airbyte-integrations/connectors/source-zoom/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-zoom/acceptance-test-config.yml b/airbyte-integrations/connectors/source-zoom/acceptance-test-config.yml index 55fa9e4ac247..a632bedd3cf8 100644 --- a/airbyte-integrations/connectors/source-zoom/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-zoom/acceptance-test-config.yml @@ -4,7 +4,7 @@ connector_image: airbyte/source-zoom:dev acceptance_tests: spec: tests: - - spec_path: "source_zoom/spec.yaml" + - spec_path: "manifest.yaml" connection: tests: - config_path: "secrets/config.json" @@ -51,5 +51,7 @@ acceptance_tests: ignored_fields: meetings: - name: "start_url" - bypass_reason: "Causes sequential_read test to fail as the value is unique upon each read" + bypass_reason: + "Causes sequential_read test to fail as the value is unique + upon each read" timeout_seconds: 3600 diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/components.py b/airbyte-integrations/connectors/source-zoom/components.py similarity index 100% rename from airbyte-integrations/connectors/source-zoom/source_zoom/components.py rename to airbyte-integrations/connectors/source-zoom/components.py diff --git a/airbyte-integrations/connectors/source-zoom/main.py b/airbyte-integrations/connectors/source-zoom/main.py deleted file mode 100644 index 137aea5931e6..000000000000 --- a/airbyte-integrations/connectors/source-zoom/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_zoom.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-zoom/manifest.yaml b/airbyte-integrations/connectors/source-zoom/manifest.yaml new file mode 100644 index 000000000000..efdb8eb14634 --- /dev/null +++ b/airbyte-integrations/connectors/source-zoom/manifest.yaml @@ -0,0 +1,14184 @@ +version: 5.14.0 +definitions: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + zoom_paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + users_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + meetings_list_tmp_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/meetings" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + meetings_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/meetings/{{ stream_partition.parent_id }}" + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/meetings" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + assistant_id: + type: + - 'null' + - string + host_email: + type: + - 'null' + - string + host_id: + type: + - 'null' + - string + id: + type: + - 'null' + - number + uuid: + type: + - 'null' + - string + agenda: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + encrypted_password: + type: + - 'null' + - string + h323_password: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + chat_join_url: + type: + - 'null' + - string + occurrences: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + duration: + type: + - 'null' + - number + occurrence_id: + type: + - 'null' + - string + start_time: + type: + - 'null' + - string + status: + type: + - 'null' + - string + password: + type: + - 'null' + - string + pmi: + type: + - 'null' + - string + pre_schedule: + type: + - 'null' + - boolean + pstn_password: + type: + - 'null' + - string + recurrence: + type: + - 'null' + - object + properties: + end_date_time: + type: + - 'null' + - string + end_times: + type: + - 'null' + - number + monthly_day: + type: + - 'null' + - number + monthly_week: + type: + - 'null' + - number + monthly_week_day: + type: + - 'null' + - number + repeat_interval: + type: + - 'null' + - number + type: + type: + - 'null' + - number + weekly_days: + type: + - 'null' + - string + settings: + type: + - 'null' + - object + properties: + allow_multiple_devices: + type: + - 'null' + - boolean + alternative_hosts: + type: + - 'null' + - string + alternative_hosts_email_notification: + type: + - 'null' + - boolean + alternative_host_update_polls: + type: + - 'null' + - boolean + approval_type: + type: + - 'null' + - number + approved_or_denied_countries_or_regions: + type: + - 'null' + - object + properties: + approved_list: + type: + - 'null' + - array + items: + type: + - 'null' + - string + denied_list: + type: + - 'null' + - array + items: + type: + - 'null' + - string + enable: + type: + - 'null' + - boolean + method: + type: + - 'null' + - string + audio: + type: + - 'null' + - string + audio_conference_info: + type: + - 'null' + - string + authentication_domains: + type: + - 'null' + - string + authentication_exception: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + authentication_name: + type: + - 'null' + - string + authentication_option: + type: + - 'null' + - string + auto_recording: + type: + - 'null' + - string + breakout_room: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + rooms: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + name: + type: + - 'null' + - string + participants: + type: + - 'null' + - array + items: + type: + - 'null' + - string + calendar_type: + type: + - 'null' + - number + close_registration: + type: + - 'null' + - boolean + cn_meeting: + type: + - 'null' + - boolean + contact_email: + type: + - 'null' + - string + contact_name: + type: + - 'null' + - string + custom_keys: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + key: + type: + - 'null' + - string + value: + type: + - 'null' + - string + email_notification: + type: + - 'null' + - boolean + device_testing: + type: + - 'null' + - boolean + email_in_attendee_report: + type: + - 'null' + - boolean + enable_dedicated_group_chat: + type: + - 'null' + - boolean + encryption_type: + type: + - 'null' + - string + enforce_login: + type: + - 'null' + - boolean + enforce_login_domains: + type: + - 'null' + - string + focus_mode: + type: + - 'null' + - boolean + global_dial_in_countries: + type: + - 'null' + - array + items: + type: + - 'null' + - string + global_dial_in_numbers: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + city: + type: + - 'null' + - string + country: + type: + - 'null' + - string + country_name: + type: + - 'null' + - string + number: + type: + - 'null' + - string + type: + type: + - 'null' + - string + host_video: + type: + - 'null' + - boolean + in_meeting: + type: + - 'null' + - boolean + jbh_time: + type: + - 'null' + - number + join_before_host: + type: + - 'null' + - boolean + language_interpretation: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + interpreters: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + email: + type: + - 'null' + - string + languages: + type: + - 'null' + - string + meeting_authentication: + type: + - 'null' + - boolean + mute_upon_entry: + type: + - 'null' + - boolean + participant_video: + type: + - 'null' + - boolean + private_meeting: + type: + - 'null' + - boolean + resources: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + resource_type: + type: + - 'null' + - string + resource_id: + type: + - 'null' + - string + permission_level: + type: + - 'null' + - string + registrants_confirmation_email: + type: + - 'null' + - boolean + registrants_email_notification: + type: + - 'null' + - boolean + registration_type: + type: + - 'null' + - number + request_permission_to_unmute_participants: + type: + - 'null' + - boolean + show_join_info: + type: + - 'null' + - boolean + show_share_button: + type: + - 'null' + - boolean + sign_language_interpretation: + type: + - 'null' + - object + additionalProperties: true + properties: + enable: + type: + - 'null' + - boolean + use_pmi: + type: + - 'null' + - boolean + waiting_room: + type: + - 'null' + - boolean + waiting_room_options: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + admit_type: + type: + - 'null' + - number + auto_admit: + type: + - 'null' + - number + internal_user_auto_admit: + type: + - 'null' + - number + watermark: + type: + - 'null' + - boolean + host_save_video_order: + type: + - 'null' + - boolean + internal_meeting: + type: + - 'null' + - boolean + continuous_meeting_chat: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + auto_add_invited_external_users: + type: + - 'null' + - boolean + channel_id: + type: + - 'null' + - string + participant_focused_meeting: + type: + - 'null' + - boolean + push_change_to_calendar: + type: + - 'null' + - boolean + registration_url: + type: + - 'null' + - string + resources: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + resource_type: + type: + - 'null' + - string + resource_id: + type: + - 'null' + - string + permission_level: + type: + - 'null' + - string + start_time: + type: + - 'null' + - string + start_url: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + topic: + type: + - 'null' + - string + tracking_fields: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field: + type: + - 'null' + - string + value: + type: + - 'null' + - string + visible: + type: + - 'null' + - boolean + type: + type: + - 'null' + - number + meeting_registrants_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/meetings/{{ stream_partition.parent_id }}/registrants" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - predicate: "{{ response.code == 300 }}" + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "registrants" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/meetings" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_id: + type: + - 'null' + - number + id: + type: + - 'null' + - string + address: + type: + - 'null' + - string + city: + type: + - 'null' + - string + comments: + type: + - 'null' + - string + country: + type: + - 'null' + - string + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + title: + type: + - 'null' + - string + value: + type: + - 'null' + - string + email: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + industry: + type: + - 'null' + - string + job_title: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + no_of_employees: + type: + - 'null' + - string + org: + type: + - 'null' + - string + phone: + type: + - 'null' + - string + purchasing_time_frame: + type: + - 'null' + - string + role_in_purchase_process: + type: + - 'null' + - string + state: + type: + - 'null' + - string + status: + type: + - 'null' + - string + zip: + type: + - 'null' + - string + create_time: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + meeting_polls_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/meetings/{{ stream_partition.parent_id }}/polls" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "polls" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/meetings" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + id: + type: + - 'null' + - string + meeting_id: + type: + - 'null' + - number + status: + type: + - 'null' + - string + anonymous: + type: + - 'null' + - boolean + poll_type: + type: + - 'null' + - number + questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer_max_character: + type: + - 'null' + - number + answer_min_character: + type: + - 'null' + - number + answer_required: + type: + - 'null' + - boolean + answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + case_sensitive: + type: + - 'null' + - boolean + name: + type: + - 'null' + - string + prompts: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + prompt_question: + type: + - 'null' + - string + prompt_right_answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + rating_max_label: + type: + - 'null' + - string + rating_max_value: + type: + - 'null' + - number + rating_min_label: + type: + - 'null' + - string + rating_min_value: + type: + - 'null' + - number + right_answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + show_as_dropdown: + type: + - 'null' + - boolean + type: + type: + - 'null' + - string + title: + type: + - 'null' + - string + meeting_poll_results_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/past_meetings/{{ stream_partition.parent_id }}/polls" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "questions" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/meetings" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_uuid: + type: + - 'null' + - string + meeting_id: + type: + - 'null' + - integer + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + question_details: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer: + type: + - 'null' + - string + date_time: + type: + - 'null' + - string + polling_id: + type: + - 'null' + - string + question: + type: + - 'null' + - string + meeting_registration_questions_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/meetings/{{ stream_partition.parent_id }}/registrants/questions" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/meetings" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_id: + type: + - 'null' + - integer + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + required: + type: + - 'null' + - boolean + title: + type: + - 'null' + - string + type: + type: + - 'null' + - string + questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field_name: + type: + - 'null' + - string + required: + type: + - 'null' + - boolean + webinars_list_tmp_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + webinars_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/webinars/{{ stream_partition.parent_id }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + host_email: + type: + - 'null' + - string + host_id: + type: + - 'null' + - string + id: + type: + - 'null' + - number + uuid: + type: + - 'null' + - string + agenda: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + join_url: + type: + - 'null' + - string + occurrences: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + duration: + type: + - 'null' + - number + occurrence_id: + type: + - 'null' + - string + start_time: + type: + - 'null' + - string + status: + type: + - 'null' + - string + password: + type: + - 'null' + - string + recurrence: + type: + - 'null' + - object + properties: + end_date_time: + type: + - 'null' + - string + end_times: + type: + - 'null' + - number + monthly_day: + type: + - 'null' + - number + monthly_week: + type: + - 'null' + - number + monthly_week_day: + type: + - 'null' + - number + repeat_interval: + type: + - 'null' + - number + type: + type: + - 'null' + - number + weekly_days: + type: + - 'null' + - string + settings: + type: + - 'null' + - object + properties: + allow_multiple_devices: + type: + - 'null' + - boolean + alternative_hosts: + type: + - 'null' + - string + alternative_host_update_polls: + type: + - 'null' + - boolean + approval_type: + type: + - 'null' + - number + attendees_and_panelists_reminder_email_notification: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + type: + type: + - 'null' + - number + audio: + type: + - 'null' + - string + authentication_domains: + type: + - 'null' + - string + authentication_name: + type: + - 'null' + - string + authentication_option: + type: + - 'null' + - string + auto_recording: + type: + - 'null' + - string + close_registration: + type: + - 'null' + - boolean + contact_email: + type: + - 'null' + - string + contact_name: + type: + - 'null' + - string + email_language: + type: + - 'null' + - string + follow_up_absentees_email_notification: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + type: + type: + - 'null' + - number + follow_up_attendees_email_notification: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + type: + type: + - 'null' + - number + global_dial_in_countries: + type: + - 'null' + - array + items: + type: + - 'null' + - string + hd_video: + type: + - 'null' + - boolean + hd_video_for_attendees: + type: + - 'null' + - boolean + host_video: + type: + - 'null' + - boolean + language_interpretation: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + interpreters: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + email: + type: + - 'null' + - string + languages: + type: + - 'null' + - string + panelist_authentication: + type: + - 'null' + - boolean + meeting_authentication: + type: + - 'null' + - boolean + add_watermark: + type: + - 'null' + - boolean + add_audio_watermark: + type: + - 'null' + - boolean + notify_registrants: + type: + - 'null' + - boolean + on_demand: + type: + - 'null' + - boolean + panelists_invitation_email_notification: + type: + - 'null' + - boolean + panelists_video: + type: + - 'null' + - boolean + post_webinar_survey: + type: + - 'null' + - boolean + practice_session: + type: + - 'null' + - boolean + question_and_answer: + type: + - 'null' + - object + properties: + allow_anonymous_questions: + type: + - 'null' + - boolean + answer_questions: + type: + - 'null' + - string + attendees_can_comment: + type: + - 'null' + - boolean + attendees_can_upvote: + type: + - 'null' + - boolean + allow_auto_reply: + type: + - 'null' + - boolean + auto_reply_text: + type: + - 'null' + - string + enable: + type: + - 'null' + - boolean + registrants_confirmation_email: + type: + - 'null' + - boolean + registrants_email_notification: + type: + - 'null' + - boolean + registrants_restrict_number: + type: + - 'null' + - number + registration_type: + type: + - 'null' + - number + send_1080p_video_to_attendees: + type: + - 'null' + - boolean + show_share_button: + type: + - 'null' + - boolean + survey_url: + type: + - 'null' + - string + enable_session_branding: + type: + - 'null' + - boolean + start_time: + type: + - 'null' + - string + start_url: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + topic: + type: + - 'null' + - string + tracking_fields: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field: + type: + - 'null' + - string + value: + type: + - 'null' + - string + type: + type: + - 'null' + - number + is_simulive: + type: + - 'null' + - boolean + record_file_id: + type: + - 'null' + - string + webinar_panelists_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/webinars/{{ stream_partition.parent_id }}/panelists" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "panelists" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - number + id: + type: + - 'null' + - string + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + virtual_background_id: + type: + - 'null' + - string + name_tag_id: + type: + - 'null' + - string + name_tag_name: + type: + - 'null' + - string + name_tag_pronouns: + type: + - 'null' + - string + name_tag_description: + type: + - 'null' + - string + webinar_registrants_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/webinars/{{ stream_partition.parent_id }}/registrants" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "registrants" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - string + id: + type: + - 'null' + - string + address: + type: + - 'null' + - string + city: + type: + - 'null' + - string + comments: + type: + - 'null' + - string + country: + type: + - 'null' + - string + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + title: + type: + - 'null' + - string + value: + type: + - 'null' + - string + email: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + industry: + type: + - 'null' + - string + job_title: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + no_of_employees: + type: + - 'null' + - string + org: + type: + - 'null' + - string + phone: + type: + - 'null' + - string + purchasing_time_frame: + type: + - 'null' + - string + role_in_purchase_process: + type: + - 'null' + - string + state: + type: + - 'null' + - string + status: + type: + - 'null' + - string + zip: + type: + - 'null' + - string + create_time: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + webinar_absentees_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/past_webinars/{{ stream_partition.parent_uuid }}/absentees" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "registrants" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "uuid" + partition_field: "parent_uuid" + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_uuid }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + id: + type: + - 'null' + - string + address: + type: + - 'null' + - string + city: + type: + - 'null' + - string + comments: + type: + - 'null' + - string + country: + type: + - 'null' + - string + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + title: + type: + - 'null' + - string + value: + type: + - 'null' + - string + email: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + industry: + type: + - 'null' + - string + job_title: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + no_of_employees: + type: + - 'null' + - string + org: + type: + - 'null' + - string + phone: + type: + - 'null' + - string + purchasing_time_frame: + type: + - 'null' + - string + role_in_purchase_process: + type: + - 'null' + - string + state: + type: + - 'null' + - string + status: + type: + - 'null' + - string + zip: + type: + - 'null' + - string + create_time: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + webinar_polls_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/webinars/{{ stream_partition.parent_id }}/polls" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "polls" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - string + id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + anonymous: + type: + - 'null' + - boolean + poll_type: + type: + - 'null' + - number + questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer_max_character: + type: + - 'null' + - number + answer_min_character: + type: + - 'null' + - number + answer_required: + type: + - 'null' + - boolean + answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + case_sensitive: + type: + - 'null' + - boolean + name: + type: + - 'null' + - string + prompts: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + prompt_question: + type: + - 'null' + - string + prompt_right_answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + rating_max_label: + type: + - 'null' + - string + rating_max_value: + type: + - 'null' + - number + rating_min_label: + type: + - 'null' + - string + rating_min_value: + type: + - 'null' + - number + right_answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + show_as_dropdown: + type: + - 'null' + - boolean + type: + type: + - 'null' + - string + title: + type: + - 'null' + - string + webinar_poll_results_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/past_webinars/{{ stream_partition.parent_id }}/polls" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "questions" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "uuid" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + question_details: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer: + type: + - 'null' + - string + date_time: + type: + - 'null' + - string + polling_id: + type: + - 'null' + - string + question: + type: + - 'null' + - string + webinar_registration_questions_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/webinars/{{ stream_partition.parent_id }}/registrants/questions" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - string + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + required: + type: + - 'null' + - boolean + title: + type: + - 'null' + - string + type: + type: + - 'null' + - string + questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field_name: + type: + - 'null' + - string + required: + type: + - 'null' + - boolean + webinar_tracking_sources_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/webinars/{{ stream_partition.parent_id }}/tracking_sources" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "tracking_sources" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - string + id: + type: + - 'null' + - string + registration_count: + type: + - 'null' + - number + source_name: + type: + - 'null' + - string + tracking_url: + type: + - 'null' + - string + visitor_count: + type: + - 'null' + - number + webinar_qna_results_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/past_webinars/{{ stream_partition.parent_id }}/qa" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "questions" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "uuid" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + question_details: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer: + type: + - 'null' + - string + question: + type: + - 'null' + - string + report_meetings_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/report/meetings/{{ stream_partition.parent_id }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/meetings" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_uuid: + type: + - 'null' + - string + custom_keys: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + key: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + end_time: + type: + - 'null' + - string + host_id: + type: + - 'null' + - string + id: + type: + - 'null' + - number + participants_count: + type: + - 'null' + - number + start_time: + type: + - 'null' + - string + topic: + type: + - 'null' + - string + total_minutes: + type: + - 'null' + - number + tracking_fields: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field: + type: + - 'null' + - string + value: + type: + - 'null' + - string + type: + type: + - 'null' + - number + user_email: + type: + - 'null' + - string + user_name: + type: + - 'null' + - string + uuid: + type: + - 'null' + - string + report_meeting_participants_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/report/meetings/{{ stream_partition.parent_id }}/participants" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "participants" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/meetings" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "id" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_uuid: + type: + - 'null' + - string + meeting_id: + type: + - 'null' + - integer + customer_key: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + failover: + type: + - 'null' + - boolean + id: + type: + - 'null' + - string + join_time: + type: + - 'null' + - string + leave_time: + type: + - 'null' + - string + name: + type: + - 'null' + - string + registrant_id: + type: + - 'null' + - string + user_email: + type: + - 'null' + - string + user_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + bo_mtg_id: + type: + - 'null' + - string + participant_user_id: + type: + - 'null' + - string + attentiveness_score: + type: + - 'null' + - string + report_webinars_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/report/webinars/{{ stream_partition.parent_id }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "uuid" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + custom_keys: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + key: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + end_time: + type: + - 'null' + - string + id: + type: + - 'null' + - number + participants_count: + type: + - 'null' + - number + start_time: + type: + - 'null' + - string + topic: + type: + - 'null' + - string + total_minutes: + type: + - 'null' + - number + tracking_fields: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field: + type: + - 'null' + - string + value: + type: + - 'null' + - string + type: + type: + - 'null' + - number + user_email: + type: + - 'null' + - string + user_name: + type: + - 'null' + - string + uuid: + type: + - 'null' + - string + report_webinar_participants_stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/report/webinars/{{ stream_partition.parent_id }}/participants" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "participants" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + - type: DefaultErrorHandler + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + parent_key: "id" + partition_field: "parent_id" + parent_key: "uuid" + partition_field: "parent_id" + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_id }}" + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + customer_key: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + failover: + type: + - 'null' + - boolean + id: + type: + - 'null' + - string + join_time: + type: + - 'null' + - string + leave_time: + type: + - 'null' + - string + name: + type: + - 'null' + - string + registrant_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + user_email: + type: + - 'null' + - string + user_id: + type: + - 'null' + - string +streams: +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/meetings/{{ stream_partition.parent_id }}" + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/meetings" + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "meetings_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + assistant_id: + type: + - 'null' + - string + host_email: + type: + - 'null' + - string + host_id: + type: + - 'null' + - string + id: + type: + - 'null' + - number + uuid: + type: + - 'null' + - string + agenda: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + encrypted_password: + type: + - 'null' + - string + h323_password: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + chat_join_url: + type: + - 'null' + - string + occurrences: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + duration: + type: + - 'null' + - number + occurrence_id: + type: + - 'null' + - string + start_time: + type: + - 'null' + - string + status: + type: + - 'null' + - string + password: + type: + - 'null' + - string + pmi: + type: + - 'null' + - string + pre_schedule: + type: + - 'null' + - boolean + pstn_password: + type: + - 'null' + - string + recurrence: + type: + - 'null' + - object + properties: + end_date_time: + type: + - 'null' + - string + end_times: + type: + - 'null' + - number + monthly_day: + type: + - 'null' + - number + monthly_week: + type: + - 'null' + - number + monthly_week_day: + type: + - 'null' + - number + repeat_interval: + type: + - 'null' + - number + type: + type: + - 'null' + - number + weekly_days: + type: + - 'null' + - string + settings: + type: + - 'null' + - object + properties: + allow_multiple_devices: + type: + - 'null' + - boolean + alternative_hosts: + type: + - 'null' + - string + alternative_hosts_email_notification: + type: + - 'null' + - boolean + alternative_host_update_polls: + type: + - 'null' + - boolean + approval_type: + type: + - 'null' + - number + approved_or_denied_countries_or_regions: + type: + - 'null' + - object + properties: + approved_list: + type: + - 'null' + - array + items: + type: + - 'null' + - string + denied_list: + type: + - 'null' + - array + items: + type: + - 'null' + - string + enable: + type: + - 'null' + - boolean + method: + type: + - 'null' + - string + audio: + type: + - 'null' + - string + audio_conference_info: + type: + - 'null' + - string + authentication_domains: + type: + - 'null' + - string + authentication_exception: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + authentication_name: + type: + - 'null' + - string + authentication_option: + type: + - 'null' + - string + auto_recording: + type: + - 'null' + - string + breakout_room: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + rooms: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + name: + type: + - 'null' + - string + participants: + type: + - 'null' + - array + items: + type: + - 'null' + - string + calendar_type: + type: + - 'null' + - number + close_registration: + type: + - 'null' + - boolean + cn_meeting: + type: + - 'null' + - boolean + contact_email: + type: + - 'null' + - string + contact_name: + type: + - 'null' + - string + custom_keys: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + key: + type: + - 'null' + - string + value: + type: + - 'null' + - string + email_notification: + type: + - 'null' + - boolean + device_testing: + type: + - 'null' + - boolean + email_in_attendee_report: + type: + - 'null' + - boolean + enable_dedicated_group_chat: + type: + - 'null' + - boolean + encryption_type: + type: + - 'null' + - string + enforce_login: + type: + - 'null' + - boolean + enforce_login_domains: + type: + - 'null' + - string + focus_mode: + type: + - 'null' + - boolean + global_dial_in_countries: + type: + - 'null' + - array + items: + type: + - 'null' + - string + global_dial_in_numbers: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + city: + type: + - 'null' + - string + country: + type: + - 'null' + - string + country_name: + type: + - 'null' + - string + number: + type: + - 'null' + - string + type: + type: + - 'null' + - string + host_video: + type: + - 'null' + - boolean + in_meeting: + type: + - 'null' + - boolean + jbh_time: + type: + - 'null' + - number + join_before_host: + type: + - 'null' + - boolean + language_interpretation: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + interpreters: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + email: + type: + - 'null' + - string + languages: + type: + - 'null' + - string + meeting_authentication: + type: + - 'null' + - boolean + mute_upon_entry: + type: + - 'null' + - boolean + participant_video: + type: + - 'null' + - boolean + private_meeting: + type: + - 'null' + - boolean + resources: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + resource_type: + type: + - 'null' + - string + resource_id: + type: + - 'null' + - string + permission_level: + type: + - 'null' + - string + registrants_confirmation_email: + type: + - 'null' + - boolean + registrants_email_notification: + type: + - 'null' + - boolean + registration_type: + type: + - 'null' + - number + request_permission_to_unmute_participants: + type: + - 'null' + - boolean + show_join_info: + type: + - 'null' + - boolean + show_share_button: + type: + - 'null' + - boolean + sign_language_interpretation: + type: + - 'null' + - object + additionalProperties: true + properties: + enable: + type: + - 'null' + - boolean + use_pmi: + type: + - 'null' + - boolean + waiting_room: + type: + - 'null' + - boolean + waiting_room_options: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + admit_type: + type: + - 'null' + - number + auto_admit: + type: + - 'null' + - number + internal_user_auto_admit: + type: + - 'null' + - number + watermark: + type: + - 'null' + - boolean + host_save_video_order: + type: + - 'null' + - boolean + internal_meeting: + type: + - 'null' + - boolean + continuous_meeting_chat: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + auto_add_invited_external_users: + type: + - 'null' + - boolean + channel_id: + type: + - 'null' + - string + participant_focused_meeting: + type: + - 'null' + - boolean + push_change_to_calendar: + type: + - 'null' + - boolean + registration_url: + type: + - 'null' + - string + resources: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + resource_type: + type: + - 'null' + - string + resource_id: + type: + - 'null' + - string + permission_level: + type: + - 'null' + - string + start_time: + type: + - 'null' + - string + start_url: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + topic: + type: + - 'null' + - string + tracking_fields: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field: + type: + - 'null' + - string + value: + type: + - 'null' + - string + visible: + type: + - 'null' + - boolean + type: + type: + - 'null' + - number + type: DeclarativeStream + name: "meetings" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/meetings/{{ stream_partition.parent_id }}/registrants" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - predicate: "{{ response.code == 300 }}" + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "registrants" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/meetings" + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "meetings_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_id: + type: + - 'null' + - number + id: + type: + - 'null' + - string + address: + type: + - 'null' + - string + city: + type: + - 'null' + - string + comments: + type: + - 'null' + - string + country: + type: + - 'null' + - string + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + title: + type: + - 'null' + - string + value: + type: + - 'null' + - string + email: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + industry: + type: + - 'null' + - string + job_title: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + no_of_employees: + type: + - 'null' + - string + org: + type: + - 'null' + - string + phone: + type: + - 'null' + - string + purchasing_time_frame: + type: + - 'null' + - string + role_in_purchase_process: + type: + - 'null' + - string + state: + type: + - 'null' + - string + status: + type: + - 'null' + - string + zip: + type: + - 'null' + - string + create_time: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + type: DeclarativeStream + name: "meeting_registrants" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/meetings/{{ stream_partition.parent_id }}/polls" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "polls" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/meetings" + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "meetings_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + id: + type: + - 'null' + - string + meeting_id: + type: + - 'null' + - number + status: + type: + - 'null' + - string + anonymous: + type: + - 'null' + - boolean + poll_type: + type: + - 'null' + - number + questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer_max_character: + type: + - 'null' + - number + answer_min_character: + type: + - 'null' + - number + answer_required: + type: + - 'null' + - boolean + answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + case_sensitive: + type: + - 'null' + - boolean + name: + type: + - 'null' + - string + prompts: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + prompt_question: + type: + - 'null' + - string + prompt_right_answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + rating_max_label: + type: + - 'null' + - string + rating_max_value: + type: + - 'null' + - number + rating_min_label: + type: + - 'null' + - string + rating_min_value: + type: + - 'null' + - number + right_answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + show_as_dropdown: + type: + - 'null' + - boolean + type: + type: + - 'null' + - string + title: + type: + - 'null' + - string + type: DeclarativeStream + name: "meeting_polls" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/past_meetings/{{ stream_partition.parent_id }}/polls" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "questions" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/meetings" + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "meetings_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_uuid: + type: + - 'null' + - string + meeting_id: + type: + - 'null' + - integer + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + question_details: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer: + type: + - 'null' + - string + date_time: + type: + - 'null' + - string + polling_id: + type: + - 'null' + - string + question: + type: + - 'null' + - string + type: DeclarativeStream + name: "meeting_poll_results" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/meetings/{{ stream_partition.parent_id }}/registrants/questions" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/meetings" + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "meetings_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_id: + type: + - 'null' + - integer + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + required: + type: + - 'null' + - boolean + title: + type: + - 'null' + - string + type: + type: + - 'null' + - string + questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field_name: + type: + - 'null' + - string + required: + type: + - 'null' + - boolean + type: DeclarativeStream + name: "meeting_registration_questions" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/webinars/{{ stream_partition.parent_id }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + host_email: + type: + - 'null' + - string + host_id: + type: + - 'null' + - string + id: + type: + - 'null' + - number + uuid: + type: + - 'null' + - string + agenda: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + join_url: + type: + - 'null' + - string + occurrences: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + duration: + type: + - 'null' + - number + occurrence_id: + type: + - 'null' + - string + start_time: + type: + - 'null' + - string + status: + type: + - 'null' + - string + password: + type: + - 'null' + - string + recurrence: + type: + - 'null' + - object + properties: + end_date_time: + type: + - 'null' + - string + end_times: + type: + - 'null' + - number + monthly_day: + type: + - 'null' + - number + monthly_week: + type: + - 'null' + - number + monthly_week_day: + type: + - 'null' + - number + repeat_interval: + type: + - 'null' + - number + type: + type: + - 'null' + - number + weekly_days: + type: + - 'null' + - string + settings: + type: + - 'null' + - object + properties: + allow_multiple_devices: + type: + - 'null' + - boolean + alternative_hosts: + type: + - 'null' + - string + alternative_host_update_polls: + type: + - 'null' + - boolean + approval_type: + type: + - 'null' + - number + attendees_and_panelists_reminder_email_notification: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + type: + type: + - 'null' + - number + audio: + type: + - 'null' + - string + authentication_domains: + type: + - 'null' + - string + authentication_name: + type: + - 'null' + - string + authentication_option: + type: + - 'null' + - string + auto_recording: + type: + - 'null' + - string + close_registration: + type: + - 'null' + - boolean + contact_email: + type: + - 'null' + - string + contact_name: + type: + - 'null' + - string + email_language: + type: + - 'null' + - string + follow_up_absentees_email_notification: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + type: + type: + - 'null' + - number + follow_up_attendees_email_notification: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + type: + type: + - 'null' + - number + global_dial_in_countries: + type: + - 'null' + - array + items: + type: + - 'null' + - string + hd_video: + type: + - 'null' + - boolean + hd_video_for_attendees: + type: + - 'null' + - boolean + host_video: + type: + - 'null' + - boolean + language_interpretation: + type: + - 'null' + - object + properties: + enable: + type: + - 'null' + - boolean + interpreters: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + email: + type: + - 'null' + - string + languages: + type: + - 'null' + - string + panelist_authentication: + type: + - 'null' + - boolean + meeting_authentication: + type: + - 'null' + - boolean + add_watermark: + type: + - 'null' + - boolean + add_audio_watermark: + type: + - 'null' + - boolean + notify_registrants: + type: + - 'null' + - boolean + on_demand: + type: + - 'null' + - boolean + panelists_invitation_email_notification: + type: + - 'null' + - boolean + panelists_video: + type: + - 'null' + - boolean + post_webinar_survey: + type: + - 'null' + - boolean + practice_session: + type: + - 'null' + - boolean + question_and_answer: + type: + - 'null' + - object + properties: + allow_anonymous_questions: + type: + - 'null' + - boolean + answer_questions: + type: + - 'null' + - string + attendees_can_comment: + type: + - 'null' + - boolean + attendees_can_upvote: + type: + - 'null' + - boolean + allow_auto_reply: + type: + - 'null' + - boolean + auto_reply_text: + type: + - 'null' + - string + enable: + type: + - 'null' + - boolean + registrants_confirmation_email: + type: + - 'null' + - boolean + registrants_email_notification: + type: + - 'null' + - boolean + registrants_restrict_number: + type: + - 'null' + - number + registration_type: + type: + - 'null' + - number + send_1080p_video_to_attendees: + type: + - 'null' + - boolean + show_share_button: + type: + - 'null' + - boolean + survey_url: + type: + - 'null' + - string + enable_session_branding: + type: + - 'null' + - boolean + start_time: + type: + - 'null' + - string + start_url: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + topic: + type: + - 'null' + - string + tracking_fields: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field: + type: + - 'null' + - string + value: + type: + - 'null' + - string + type: + type: + - 'null' + - number + is_simulive: + type: + - 'null' + - boolean + record_file_id: + type: + - 'null' + - string + type: DeclarativeStream + name: "webinars" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/webinars/{{ stream_partition.parent_id }}/panelists" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "panelists" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - number + id: + type: + - 'null' + - string + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + virtual_background_id: + type: + - 'null' + - string + name_tag_id: + type: + - 'null' + - string + name_tag_name: + type: + - 'null' + - string + name_tag_pronouns: + type: + - 'null' + - string + name_tag_description: + type: + - 'null' + - string + type: DeclarativeStream + name: "webinar_panelists" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/webinars/{{ stream_partition.parent_id }}/registrants" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "registrants" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - string + id: + type: + - 'null' + - string + address: + type: + - 'null' + - string + city: + type: + - 'null' + - string + comments: + type: + - 'null' + - string + country: + type: + - 'null' + - string + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + title: + type: + - 'null' + - string + value: + type: + - 'null' + - string + email: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + industry: + type: + - 'null' + - string + job_title: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + no_of_employees: + type: + - 'null' + - string + org: + type: + - 'null' + - string + phone: + type: + - 'null' + - string + purchasing_time_frame: + type: + - 'null' + - string + role_in_purchase_process: + type: + - 'null' + - string + state: + type: + - 'null' + - string + status: + type: + - 'null' + - string + zip: + type: + - 'null' + - string + create_time: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + type: DeclarativeStream + name: "webinar_registrants" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/past_webinars/{{ stream_partition.parent_uuid }}/absentees" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "registrants" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "uuid" + partition_field: "parent_uuid" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_uuid }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + id: + type: + - 'null' + - string + address: + type: + - 'null' + - string + city: + type: + - 'null' + - string + comments: + type: + - 'null' + - string + country: + type: + - 'null' + - string + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + title: + type: + - 'null' + - string + value: + type: + - 'null' + - string + email: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + industry: + type: + - 'null' + - string + job_title: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + no_of_employees: + type: + - 'null' + - string + org: + type: + - 'null' + - string + phone: + type: + - 'null' + - string + purchasing_time_frame: + type: + - 'null' + - string + role_in_purchase_process: + type: + - 'null' + - string + state: + type: + - 'null' + - string + status: + type: + - 'null' + - string + zip: + type: + - 'null' + - string + create_time: + type: + - 'null' + - string + join_url: + type: + - 'null' + - string + type: DeclarativeStream + name: "webinar_absentees" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/webinars/{{ stream_partition.parent_id }}/polls" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "polls" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - string + id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + anonymous: + type: + - 'null' + - boolean + poll_type: + type: + - 'null' + - number + questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer_max_character: + type: + - 'null' + - number + answer_min_character: + type: + - 'null' + - number + answer_required: + type: + - 'null' + - boolean + answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + case_sensitive: + type: + - 'null' + - boolean + name: + type: + - 'null' + - string + prompts: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + prompt_question: + type: + - 'null' + - string + prompt_right_answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + rating_max_label: + type: + - 'null' + - string + rating_max_value: + type: + - 'null' + - number + rating_min_label: + type: + - 'null' + - string + rating_min_value: + type: + - 'null' + - number + right_answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + show_as_dropdown: + type: + - 'null' + - boolean + type: + type: + - 'null' + - string + title: + type: + - 'null' + - string + type: DeclarativeStream + name: "webinar_polls" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/past_webinars/{{ stream_partition.parent_id }}/polls" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "questions" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "uuid" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + question_details: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer: + type: + - 'null' + - string + date_time: + type: + - 'null' + - string + polling_id: + type: + - 'null' + - string + question: + type: + - 'null' + - string + type: DeclarativeStream + name: "webinar_poll_results" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/webinars/{{ stream_partition.parent_id }}/registrants/questions" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - string + custom_questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answers: + type: + - 'null' + - array + items: + type: + - 'null' + - string + required: + type: + - 'null' + - boolean + title: + type: + - 'null' + - string + type: + type: + - 'null' + - string + questions: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field_name: + type: + - 'null' + - string + required: + type: + - 'null' + - boolean + type: DeclarativeStream + name: "webinar_registration_questions" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/webinars/{{ stream_partition.parent_id }}/tracking_sources" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "tracking_sources" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_id: + type: + - 'null' + - string + id: + type: + - 'null' + - string + registration_count: + type: + - 'null' + - number + source_name: + type: + - 'null' + - string + tracking_url: + type: + - 'null' + - string + visitor_count: + type: + - 'null' + - number + type: DeclarativeStream + name: "webinar_tracking_sources" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/past_webinars/{{ stream_partition.parent_id }}/qa" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: + - "questions" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "uuid" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + email: + type: + - 'null' + - string + name: + type: + - 'null' + - string + question_details: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + answer: + type: + - 'null' + - string + question: + type: + - 'null' + - string + type: DeclarativeStream + name: "webinar_qna_results" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/report/meetings/{{ stream_partition.parent_id }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/meetings" + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "meetings_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_uuid: + type: + - 'null' + - string + custom_keys: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + key: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + end_time: + type: + - 'null' + - string + host_id: + type: + - 'null' + - string + id: + type: + - 'null' + - number + participants_count: + type: + - 'null' + - number + start_time: + type: + - 'null' + - string + topic: + type: + - 'null' + - string + total_minutes: + type: + - 'null' + - number + tracking_fields: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field: + type: + - 'null' + - string + value: + type: + - 'null' + - string + type: + type: + - 'null' + - number + user_email: + type: + - 'null' + - string + user_name: + type: + - 'null' + - string + uuid: + type: + - 'null' + - string + type: DeclarativeStream + name: "report_meetings" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/report/meetings/{{ stream_partition.parent_id }}/participants" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + - 404 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "participants" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/meetings" + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "meetings" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "meetings_list_tmp" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "meeting_id" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + meeting_uuid: + type: + - 'null' + - string + meeting_id: + type: + - 'null' + - integer + customer_key: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + failover: + type: + - 'null' + - boolean + id: + type: + - 'null' + - string + join_time: + type: + - 'null' + - string + leave_time: + type: + - 'null' + - string + name: + type: + - 'null' + - string + registrant_id: + type: + - 'null' + - string + user_email: + type: + - 'null' + - string + user_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + bo_mtg_id: + type: + - 'null' + - string + participant_user_id: + type: + - 'null' + - string + attentiveness_score: + type: + - 'null' + - string + type: DeclarativeStream + name: "report_meeting_participants" + primary_key: "id" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/report/webinars/{{ stream_partition.parent_id }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: NoPagination + record_selector: + extractor: + type: DpathExtractor + field_path: [] + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "uuid" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + custom_keys: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + key: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + end_time: + type: + - 'null' + - string + id: + type: + - 'null' + - number + participants_count: + type: + - 'null' + - number + start_time: + type: + - 'null' + - string + topic: + type: + - 'null' + - string + total_minutes: + type: + - 'null' + - number + tracking_fields: + type: + - 'null' + - array + items: + type: + - 'null' + - object + properties: + field: + type: + - 'null' + - string + value: + type: + - 'null' + - string + type: + type: + - 'null' + - number + user_email: + type: + - 'null' + - string + user_name: + type: + - 'null' + - string + uuid: + type: + - 'null' + - string + type: DeclarativeStream + name: "report_webinars" +- retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/report/webinars/{{ stream_partition.parent_id }}/participants" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "participants" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] }}" + grant_type: "account_credentials" + type: CustomAuthenticator + path: "/users/{{ stream_partition.parent_id }}/webinars" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - http_codes: + - 400 + action: IGNORE + type: HttpResponseFilter + - type: DefaultErrorHandler + type: HttpRequester + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "webinars" + type: RecordSelector + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - stream: + retriever: + requester: + url_base: "https://api.zoom.us/v2" + http_method: "GET" + authenticator: + class_name: source_declarative_manifest.components.ServerToServerOauthAuthenticator + client_id: "{{ config['client_id'] }}" + account_id: "{{ config['account_id'] }}" + client_secret: "{{ config['client_secret'] }}" + authorization_endpoint: "{{ config['authorization_endpoint'] + }}" + grant_type: "account_credentials" + type: CustomAuthenticator + type: HttpRequester + path: "/users" + paginator: + type: DefaultPaginator + pagination_strategy: + type: "CursorPagination" + cursor_value: "{{ response.next_page_token }}" + stop_condition: "{{ response.next_page_token == '' }}" + page_size: 30 + page_size_option: + field_name: "page_size" + inject_into: "request_parameter" + type: RequestOption + page_token_option: + type: RequestOption + field_name: "next_page_token" + inject_into: "request_parameter" + record_selector: + extractor: + type: DpathExtractor + field_path: + - "users" + type: RecordSelector + type: SimpleRetriever + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + properties: + user_created_at: + type: + - 'null' + - string + created_at: + type: + - 'null' + - string + custom_attributes: + type: + - 'null' + - array + items: + type: object + properties: + key: + type: + - 'null' + - string + name: + type: + - 'null' + - string + value: + type: + - 'null' + - string + dept: + type: + - 'null' + - string + email: + type: + - 'null' + - string + employee_unique_id: + type: + - 'null' + - string + first_name: + type: + - 'null' + - string + group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + id: + type: + - 'null' + - string + im_group_ids: + type: + - 'null' + - array + items: + type: + - 'null' + - string + language: + type: + - 'null' + - string + last_client_version: + type: + - 'null' + - string + last_login_time: + type: + - 'null' + - string + last_name: + type: + - 'null' + - string + phone_number: + type: + - 'null' + - string + plan_united_type: + type: + - 'null' + - string + pmi: + type: + - 'null' + - number + role_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + timezone: + type: + - 'null' + - string + type: + type: + - 'null' + - number + verified: + type: + - 'null' + - number + display_name: + type: + - 'null' + - string + type: DeclarativeStream + name: "users" + primary_key: "id" + parent_key: "id" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + type: DeclarativeStream + name: "webinars_list_tmp" + primary_key: "id" + parent_key: "uuid" + partition_field: "parent_id" + type: ParentStreamConfig + type: SimpleRetriever + transformations: + - type: AddFields + fields: + - path: + - "webinar_uuid" + value: "{{ stream_partition.parent_id }}" + type: AddedFieldDefinition + schema_loader: + type: InlineSchemaLoader + schema: + $schema: http://json-schema.org/draft-07/schema# + type: object + properties: + webinar_uuid: + type: + - 'null' + - string + customer_key: + type: + - 'null' + - string + duration: + type: + - 'null' + - number + failover: + type: + - 'null' + - boolean + id: + type: + - 'null' + - string + join_time: + type: + - 'null' + - string + leave_time: + type: + - 'null' + - string + name: + type: + - 'null' + - string + registrant_id: + type: + - 'null' + - string + status: + type: + - 'null' + - string + user_email: + type: + - 'null' + - string + user_id: + type: + - 'null' + - string + type: DeclarativeStream + name: "report_webinar_participants" +check: + stream_names: + - "users" + type: CheckStream +type: DeclarativeSource +spec: + type: Spec + documentation_url: https://docs.airbyte.com/integrations/sources/zoom + connection_specification: + $schema: http://json-schema.org/draft-07/schema# + title: Zoom Spec + type: object + required: + - account_id + - client_id + - client_secret + - authorization_endpoint + additionalProperties: true + properties: + account_id: + type: string + order: 0 + description: 'The account ID for your Zoom account. You can find this in the + Zoom Marketplace under the "Manage" tab for your app.' + client_id: + type: string + order: 1 + description: 'The client ID for your Zoom app. You can find this in the Zoom + Marketplace under the "Manage" tab for your app.' + client_secret: + type: string + order: 2 + description: 'The client secret for your Zoom app. You can find this in the + Zoom Marketplace under the "Manage" tab for your app.' + airbyte_secret: true + authorization_endpoint: + type: string + order: 3 + default: "https://zoom.us/oauth/token" diff --git a/airbyte-integrations/connectors/source-zoom/metadata.yaml b/airbyte-integrations/connectors/source-zoom/metadata.yaml index 91392850bfd6..4f4e8d58fc47 100644 --- a/airbyte-integrations/connectors/source-zoom/metadata.yaml +++ b/airbyte-integrations/connectors/source-zoom/metadata.yaml @@ -3,11 +3,11 @@ data: ql: 200 sl: 100 connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.15.0@sha256:09a84e0622f36393077332faf11cc239e77083fae5fa500592c049dca25888a7 connectorSubtype: api connectorType: source definitionId: cbfd9856-1322-44fb-bcf1-0b39b7a8e92e - dockerImageTag: 1.1.22 + dockerImageTag: 1.2.0 dockerRepository: airbyte/source-zoom documentationUrl: https://docs.airbyte.com/integrations/sources/zoom githubIssueLabel: source-zoom @@ -23,19 +23,22 @@ data: releases: breakingChanges: 1.1.0: - message: Zoom has deprecated JWT authentication in favor of OAuth. To successfully migrate, users will need to create a new server-to-server OAuth app and update their credentials in the Airbyte UI. + message: + Zoom has deprecated JWT authentication in favor of OAuth. To successfully + migrate, users will need to create a new server-to-server OAuth app and + update their credentials in the Airbyte UI. upgradeDeadline: 2023-09-08 scopedImpact: - scopeType: stream impactedScopes: ["meeting_registration_questions"] remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-zoom supportLevel: community tags: - - language:python - cdk:low-code + - language:manifest-only connectorTestSuitesOptions: - suite: liveTests testConnections: diff --git a/airbyte-integrations/connectors/source-zoom/poetry.lock b/airbyte-integrations/connectors/source-zoom/poetry.lock deleted file mode 100644 index cb16738a481e..000000000000 --- a/airbyte-integrations/connectors/source-zoom/poetry.lock +++ /dev/null @@ -1,1066 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "0.67.3" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte-cdk-0.67.3.tar.gz", hash = "sha256:ef242cf2bc461e6790811d0cd64e87aa47559af942cd0cc70b09d4f860831ce1"}, - {file = "airbyte_cdk-0.67.3-py3-none-any.whl", hash = "sha256:de2353430180bdbc852f336745c95506908dda67a2d4949fb538401d3c7fa40a"}, -] - -[package.dependencies] -airbyte-protocol-models = "0.5.1" -backoff = "*" -cachetools = "*" -Deprecated = ">=1.2,<2.0" -dpath = ">=2.0.1,<2.1.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<1.0" -jsonschema = ">=3.2.0,<3.3.0" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -PyYAML = ">=6.0.1" -requests = "*" -requests-cache = "*" -wcmatch = "8.4" - -[package.extras] -dev = ["avro (>=1.11.2,<1.12.0)", "cohere (==4.21)", "fastavro (>=1.8.0,<1.9.0)", "freezegun", "langchain (==0.0.271)", "markdown", "mypy", "openai[embeddings] (==0.27.9)", "pandas (==2.0.3)", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "pytest", "pytest-cov", "pytest-httpserver", "pytest-mock", "requests-mock", "tiktoken (==0.4.0)", "unstructured (==0.10.27)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured (==0.10.27)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<5.0)", "sphinx-rtd-theme (>=1.0,<2.0)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.0.271)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.5.1" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.5.1-py3-none-any.whl", hash = "sha256:dfe84e130e51ce2ae81a06d5aa36f6c5ce3152b9e36e6f0195fad6c3dab0927e"}, - {file = "airbyte_protocol_models-0.5.1.tar.gz", hash = "sha256:7c8b16c7c1c7956b1996052e40585a3a93b1e44cb509c4e97c1ee4fe507ea086"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.0" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.0.8" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonref" -version = "0.3.0" -description = "jsonref is a library for automatic dereferencing of JSON Reference objects for Python." -optional = false -python-versions = ">=3.3,<4.0" -files = [ - {file = "jsonref-0.3.0-py3-none-any.whl", hash = "sha256:9480ad1b500f7e795daeb0ef29f9c55ae3a9ab38fb8d6659b6f4868acb5a5bc8"}, - {file = "jsonref-0.3.0.tar.gz", hash = "sha256:68b330c6815dc0d490dbb3d65ccda265ddde9f7856fd2f3322f971d456ea7549"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "markupsafe" -version = "3.0.2" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.9" -files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "packaging" -version = "24.1" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "6.2.5" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "setuptools" -version = "75.3.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd"}, - {file = "setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.12.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "64656b30b207f0f046c259a3688f501d0e4de944131c28d2ec60e06ff7efd57e" diff --git a/airbyte-integrations/connectors/source-zoom/pyproject.toml b/airbyte-integrations/connectors/source-zoom/pyproject.toml deleted file mode 100644 index 1649620043d0..000000000000 --- a/airbyte-integrations/connectors/source-zoom/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "1.1.22" -name = "source-zoom" -description = "Source implementation for Zoom." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/zoom" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_zoom" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "^0.67.1" - -[tool.poetry.scripts] -source-zoom = "source_zoom.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "^1.9.3" -pytest-mock = "^3.6.1" -pytest = "^6.1" diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/__init__.py b/airbyte-integrations/connectors/source-zoom/source_zoom/__init__.py deleted file mode 100644 index 5d5733ca7209..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceZoom - -__all__ = ["SourceZoom"] diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/manifest.yaml b/airbyte-integrations/connectors/source-zoom/source_zoom/manifest.yaml deleted file mode 100644 index 808f4405e78f..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/manifest.yaml +++ /dev/null @@ -1,795 +0,0 @@ -version: 0.67.1 - -definitions: - # Server to Server Oauth Authenticator - requester: - url_base: "https://api.zoom.us/v2" - http_method: "GET" - authenticator: - class_name: source_zoom.components.ServerToServerOauthAuthenticator - client_id: "{{ config['client_id'] }}" - account_id: "{{ config['account_id'] }}" - client_secret: "{{ config['client_secret'] }}" - authorization_endpoint: "{{ config['authorization_endpoint'] }}" - grant_type: "account_credentials" - - zoom_paginator: - type: DefaultPaginator - pagination_strategy: - type: "CursorPagination" - cursor_value: "{{ response.next_page_token }}" - stop_condition: "{{ response.next_page_token == '' }}" - page_size: 30 - page_size_option: - field_name: "page_size" - inject_into: "request_parameter" - page_token_option: - type: RequestOption - field_name: "next_page_token" - inject_into: "request_parameter" - - retriever: - requester: - $ref: "#/definitions/requester" - - schema_loader: - type: JsonFileSchemaLoader - file_path: "./source_zoom/schemas/{{ parameters['name'] }}.json" - - users_stream: - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/user/methods/#operation/users - schema_loader: - $ref: "#/definitions/schema_loader" - retriever: - paginator: - $ref: "#/definitions/zoom_paginator" - record_selector: - extractor: - type: DpathExtractor - field_path: ["users"] - $ref: "#/definitions/retriever" - $parameters: - name: "users" - primary_key: "id" - path: "/users" - - meetings_list_tmp_stream: - # This stream is used to fetch parent_ids for the meetings stream and all its substreams. No data is synced from this stream. - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetings - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "meetings_list_tmp" - primary_key: "id" - retriever: - paginator: - $ref: "#/definitions/zoom_paginator" - record_selector: - extractor: - type: DpathExtractor - field_path: ["meetings"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/users/{{ stream_partition.parent_id }}/meetings" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/users_stream" - parent_key: "id" - partition_field: "parent_id" - - meetings_stream: - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meeting - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "meetings" - primary_key: "id" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: [] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/meetings/{{ stream_partition.parent_id }}" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/meetings_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - - meeting_registrants_stream: - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetingRegistrants - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "meeting_registrants" - primary_key: "id" - retriever: - paginator: - $ref: "#/definitions/zoom_paginator" - record_selector: - extractor: - type: DpathExtractor - field_path: ["registrants"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/meetings/{{ stream_partition.parent_id }}/registrants" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - # Meeting {meetingId} is not found or has expired. This meeting has not set registration as required: {meetingId}. - - predicate: "{{ response.code == 300 }}" - action: IGNORE - - type: DefaultErrorHandler # we're adding this DefaultErrorHandler for 429, 5XX errors etc; - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/meetings_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["meeting_id"] - value: "{{ stream_partition.parent_id }}" - - meeting_polls_stream: - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetingPolls - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "meeting_polls" - primary_key: "id" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: ["polls"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/meetings/{{ stream_partition.parent_id }}/polls" - error_handler: - type: CompositeErrorHandler - # ignore 400 error; We get this error if Meeting poll is not enabled for the meeting, or scheduling capabilities aren't in the account - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [400] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/meetings_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["meeting_id"] - value: "{{ stream_partition.parent_id }}" - - meeting_poll_results_stream: - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/listPastMeetingPolls - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "meeting_poll_results" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: ["questions"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/past_meetings/{{ stream_partition.parent_id }}/polls" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - # 400 error is thrown for meetings created an year ago - # 404 error is thrown if the meeting has not enabled polls (from observation, not written in docs) - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/meetings_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["meeting_id"] - value: "{{ stream_partition.parent_id }}" - - meeting_registration_questions_stream: - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetingRegistrantsQuestionsGet - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "meeting_registration_questions" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: [] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/meetings/{{ stream_partition.parent_id }}/registrants/questions" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - # ignore 400 error; We get this error if Bad Request or Meeting hosting and scheduling capabilities are not allowed for your user account. - - http_codes: [400] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/meetings_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["meeting_id"] - value: "{{ stream_partition.parent_id }}" - - webinars_list_tmp_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinars_list_tmp" - primary_key: "id" - retriever: - paginator: - $ref: "#/definitions/zoom_paginator" - record_selector: - extractor: - type: DpathExtractor - field_path: ["webinars"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/users/{{ stream_partition.parent_id }}/webinars" - error_handler: - type: CompositeErrorHandler - # ignore 400 error; We get this error if Meeting is more than created an year ago - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [400] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/users_stream" - parent_key: "id" - partition_field: "parent_id" - - webinars_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinars" - primary_key: "id" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: [] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/webinars/{{ stream_partition.parent_id }}" - error_handler: - type: CompositeErrorHandler - # ignore 400 error - error_handlers: - - type: DefaultErrorHandler - response_filters: - # When parent stream throws error; then ideally we should have an empty array, and no /webinars/{id} should be called. But somehow we're calling it right now with None. :( - # More context: https://github.com/airbytehq/airbyte/issues/18046 - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - - webinar_panelists_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinar_panelists" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: ["panelists"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/webinars/{{ stream_partition.parent_id }}/panelists" - error_handler: - type: CompositeErrorHandler - # ignore 400 error - error_handlers: - - type: DefaultErrorHandler - response_filters: - # Same problem as "webinars_stream" for 404! and we get 400 error if the account isn't PRO. - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_id"] - value: "{{ stream_partition.parent_id }}" - - webinar_registrants_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinar_registrants" - retriever: - paginator: - $ref: "#/definitions/zoom_paginator" - record_selector: - extractor: - type: DpathExtractor - field_path: ["registrants"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/webinars/{{ stream_partition.parent_id }}/registrants" - error_handler: - type: CompositeErrorHandler - # ignore 400 error - error_handlers: - - type: DefaultErrorHandler - response_filters: - # Same problem as "webinars_stream" for 404! 400 is for non PRO accounts. - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_id"] - value: "{{ stream_partition.parent_id }}" - - webinar_absentees_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinar_absentees" - primary_key: "id" - retriever: - paginator: - $ref: "#/definitions/zoom_paginator" - record_selector: - extractor: - type: DpathExtractor - field_path: ["registrants"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/past_webinars/{{ stream_partition.parent_uuid }}/absentees" - error_handler: - type: CompositeErrorHandler - # ignore 400 error - error_handlers: - - type: DefaultErrorHandler - response_filters: - # Same problem as "webinars_stream" for 404! 400 is for non PRO accounts. - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "uuid" - partition_field: "parent_uuid" - transformations: - - type: AddFields - fields: - - path: ["webinar_uuid"] - value: "{{ stream_partition.parent_uuid }}" - - webinar_polls_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinar_polls" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: ["polls"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/webinars/{{ stream_partition.parent_id }}/polls" - error_handler: - type: CompositeErrorHandler - # ignore 400 error; We get this error if Webinar poll is disabled - error_handlers: - - type: DefaultErrorHandler - response_filters: - # Same problem as "webinars_stream" for 404! 400 is for non PRO accounts. - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_id"] - value: "{{ stream_partition.parent_id }}" - - webinar_poll_results_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinar_poll_results" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: ["questions"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/past_webinars/{{ stream_partition.parent_id }}/polls" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "uuid" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_uuid"] - value: "{{ stream_partition.parent_id }}" - - webinar_registration_questions_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinar_registration_questions" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: [] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/webinars/{{ stream_partition.parent_id }}/registrants/questions" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - # the docs says 404 code, but that's incorrect (from observation); - - http_codes: [400] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_id"] - value: "{{ stream_partition.parent_id }}" - - webinar_tracking_sources_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinar_tracking_sources" - primary_key: "id" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: ["tracking_sources"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/webinars/{{ stream_partition.parent_id }}/tracking_sources" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [400] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_id"] - value: "{{ stream_partition.parent_id }}" - - webinar_qna_results_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "webinar_qna_results" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: ["questions"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/past_webinars/{{ stream_partition.parent_id }}/qa" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "uuid" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_uuid"] - value: "{{ stream_partition.parent_id }}" - - report_meetings_stream: - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/reportMeetingDetails - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "report_meetings" - primary_key: "id" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: [] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/report/meetings/{{ stream_partition.parent_id }}" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/meetings_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - - report_meeting_participants_stream: - # Endpoint docs: https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/reportMeetingParticipants - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "report_meeting_participants" - primary_key: "id" - retriever: - paginator: - $ref: "#/definitions/zoom_paginator" - record_selector: - extractor: - type: DpathExtractor - field_path: ["participants"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/report/meetings/{{ stream_partition.parent_id }}/participants" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [400, 404] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/meetings_list_tmp_stream" - parent_key: "id" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["meeting_id"] - value: "{{ stream_partition.parent_id }}" - - report_webinars_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "report_webinars" - retriever: - paginator: - type: NoPagination - record_selector: - extractor: - type: DpathExtractor - field_path: [] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/report/webinars/{{ stream_partition.parent_id }}" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [400] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "uuid" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_uuid"] - value: "{{ stream_partition.parent_id }}" - - report_webinar_participants_stream: - schema_loader: - $ref: "#/definitions/schema_loader" - $parameters: - name: "report_webinar_participants" - retriever: - paginator: - $ref: "#/definitions/zoom_paginator" - record_selector: - extractor: - type: DpathExtractor - field_path: ["participants"] - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - path: "/report/webinars/{{ stream_partition.parent_id }}/participants" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - http_codes: [400] - action: IGNORE - - type: DefaultErrorHandler - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/webinars_list_tmp_stream" - parent_key: "uuid" - partition_field: "parent_id" - transformations: - - type: AddFields - fields: - - path: ["webinar_uuid"] - value: "{{ stream_partition.parent_id }}" - -streams: - - "#/definitions/users_stream" - - "#/definitions/meetings_stream" - - "#/definitions/meeting_registrants_stream" - - "#/definitions/meeting_polls_stream" - - "#/definitions/meeting_poll_results_stream" - - "#/definitions/meeting_registration_questions_stream" - - "#/definitions/webinars_stream" - - "#/definitions/webinar_panelists_stream" - - "#/definitions/webinar_registrants_stream" - - "#/definitions/webinar_absentees_stream" - - "#/definitions/webinar_polls_stream" - - "#/definitions/webinar_poll_results_stream" - - "#/definitions/webinar_registration_questions_stream" - - "#/definitions/webinar_tracking_sources_stream" - - "#/definitions/webinar_qna_results_stream" - - "#/definitions/report_meetings_stream" - - "#/definitions/report_meeting_participants_stream" - - "#/definitions/report_webinars_stream" - - "#/definitions/report_webinar_participants_stream" - -check: - stream_names: - - "users" diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/run.py b/airbyte-integrations/connectors/source-zoom/source_zoom/run.py deleted file mode 100644 index e663e8441844..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_zoom import SourceZoom - - -def run(): - source = SourceZoom() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_poll_results.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_poll_results.json deleted file mode 100644 index 3c9ea605ecd3..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_poll_results.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "meeting_uuid": { - "type": ["null", "string"] - }, - "meeting_id": { - "type": ["null", "integer"] - }, - "email": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "first_name": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "question_details": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "answer": { - "type": ["null", "string"] - }, - "date_time": { - "type": ["null", "string"] - }, - "polling_id": { - "type": ["null", "string"] - }, - "question": { - "type": ["null", "string"] - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_polls.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_polls.json deleted file mode 100644 index d9cbaccf720d..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_polls.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "id": { - "type": ["null", "string"] - }, - "meeting_id": { - "type": ["null", "number"] - }, - "status": { - "type": ["null", "string"] - }, - "anonymous": { - "type": ["null", "boolean"] - }, - "poll_type": { - "type": ["null", "number"] - }, - "questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "answer_max_character": { - "type": ["null", "number"] - }, - "answer_min_character": { - "type": ["null", "number"] - }, - "answer_required": { - "type": ["null", "boolean"] - }, - "answers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "case_sensitive": { - "type": ["null", "boolean"] - }, - "name": { - "type": ["null", "string"] - }, - "prompts": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "prompt_question": { - "type": ["null", "string"] - }, - "prompt_right_answers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - } - } - } - }, - "rating_max_label": { - "type": ["null", "string"] - }, - "rating_max_value": { - "type": ["null", "number"] - }, - "rating_min_label": { - "type": ["null", "string"] - }, - "rating_min_value": { - "type": ["null", "number"] - }, - "right_answers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "show_as_dropdown": { - "type": ["null", "boolean"] - }, - "type": { - "type": ["null", "string"] - } - } - } - }, - "title": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_registrants.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_registrants.json deleted file mode 100644 index e881cb099190..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_registrants.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "meeting_id": { - "type": ["null", "number"] - }, - "id": { - "type": ["null", "string"] - }, - "address": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "comments": { - "type": ["null", "string"] - }, - "country": { - "type": ["null", "string"] - }, - "custom_questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "title": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "email": { - "type": ["null", "string"] - }, - "first_name": { - "type": ["null", "string"] - }, - "industry": { - "type": ["null", "string"] - }, - "job_title": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "no_of_employees": { - "type": ["null", "string"] - }, - "org": { - "type": ["null", "string"] - }, - "phone": { - "type": ["null", "string"] - }, - "purchasing_time_frame": { - "type": ["null", "string"] - }, - "role_in_purchase_process": { - "type": ["null", "string"] - }, - "state": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - }, - "create_time": { - "type": ["null", "string"] - }, - "join_url": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_registration_questions.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_registration_questions.json deleted file mode 100644 index 39fb68f6f587..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meeting_registration_questions.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "meeting_id": { - "type": ["null", "integer"] - }, - "custom_questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "answers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "required": { - "type": ["null", "boolean"] - }, - "title": { - "type": ["null", "string"] - }, - "type": { - "type": ["null", "string"] - } - } - } - }, - "questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "field_name": { - "type": ["null", "string"] - }, - "required": { - "type": ["null", "boolean"] - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meetings.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meetings.json deleted file mode 100644 index 194f626121ba..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meetings.json +++ /dev/null @@ -1,485 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "assistant_id": { - "type": ["null", "string"] - }, - "host_email": { - "type": ["null", "string"] - }, - "host_id": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "number"] - }, - "uuid": { - "type": ["null", "string"] - }, - "agenda": { - "type": ["null", "string"] - }, - "created_at": { - "type": ["null", "string"] - }, - "duration": { - "type": ["null", "number"] - }, - "encrypted_password": { - "type": ["null", "string"] - }, - "h323_password": { - "type": ["null", "string"] - }, - "join_url": { - "type": ["null", "string"] - }, - "chat_join_url": { - "type": ["null", "string"] - }, - "occurrences": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "duration": { - "type": ["null", "number"] - }, - "occurrence_id": { - "type": ["null", "string"] - }, - "start_time": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - } - } - } - }, - "password": { - "type": ["null", "string"] - }, - "pmi": { - "type": ["null", "string"] - }, - "pre_schedule": { - "type": ["null", "boolean"] - }, - "pstn_password": { - "type": ["null", "string"] - }, - "recurrence": { - "type": ["null", "object"], - "properties": { - "end_date_time": { - "type": ["null", "string"] - }, - "end_times": { - "type": ["null", "number"] - }, - "monthly_day": { - "type": ["null", "number"] - }, - "monthly_week": { - "type": ["null", "number"] - }, - "monthly_week_day": { - "type": ["null", "number"] - }, - "repeat_interval": { - "type": ["null", "number"] - }, - "type": { - "type": ["null", "number"] - }, - "weekly_days": { - "type": ["null", "string"] - } - } - }, - "settings": { - "type": ["null", "object"], - "properties": { - "allow_multiple_devices": { - "type": ["null", "boolean"] - }, - "alternative_hosts": { - "type": ["null", "string"] - }, - "alternative_hosts_email_notification": { - "type": ["null", "boolean"] - }, - "alternative_host_update_polls": { - "type": ["null", "boolean"] - }, - "approval_type": { - "type": ["null", "number"] - }, - "approved_or_denied_countries_or_regions": { - "type": ["null", "object"], - "properties": { - "approved_list": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "denied_list": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "enable": { - "type": ["null", "boolean"] - }, - "method": { - "type": ["null", "string"] - } - } - }, - "audio": { - "type": ["null", "string"] - }, - "audio_conference_info": { - "type": ["null", "string"] - }, - "authentication_domains": { - "type": ["null", "string"] - }, - "authentication_exception": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "email": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "join_url": { - "type": ["null", "string"] - } - } - } - }, - "authentication_name": { - "type": ["null", "string"] - }, - "authentication_option": { - "type": ["null", "string"] - }, - "auto_recording": { - "type": ["null", "string"] - }, - "breakout_room": { - "type": ["null", "object"], - "properties": { - "enable": { - "type": ["null", "boolean"] - }, - "rooms": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "name": { - "type": ["null", "string"] - }, - "participants": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - } - } - } - } - } - }, - "calendar_type": { - "type": ["null", "number"] - }, - "close_registration": { - "type": ["null", "boolean"] - }, - "cn_meeting": { - "type": ["null", "boolean"] - }, - "contact_email": { - "type": ["null", "string"] - }, - "contact_name": { - "type": ["null", "string"] - }, - "custom_keys": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "key": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "email_notification": { - "type": ["null", "boolean"] - }, - "device_testing": { - "type": ["null", "boolean"] - }, - "email_in_attendee_report": { - "type": ["null", "boolean"] - }, - "enable_dedicated_group_chat": { - "type": ["null", "boolean"] - }, - "encryption_type": { - "type": ["null", "string"] - }, - "enforce_login": { - "type": ["null", "boolean"] - }, - "enforce_login_domains": { - "type": ["null", "string"] - }, - "focus_mode": { - "type": ["null", "boolean"] - }, - "global_dial_in_countries": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "global_dial_in_numbers": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "city": { - "type": ["null", "string"] - }, - "country": { - "type": ["null", "string"] - }, - "country_name": { - "type": ["null", "string"] - }, - "number": { - "type": ["null", "string"] - }, - "type": { - "type": ["null", "string"] - } - } - } - }, - "host_video": { - "type": ["null", "boolean"] - }, - "in_meeting": { - "type": ["null", "boolean"] - }, - "jbh_time": { - "type": ["null", "number"] - }, - "join_before_host": { - "type": ["null", "boolean"] - }, - "language_interpretation": { - "type": ["null", "object"], - "properties": { - "enable": { - "type": ["null", "boolean"] - }, - "interpreters": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "email": { - "type": ["null", "string"] - }, - "languages": { - "type": ["null", "string"] - } - } - } - } - } - }, - "meeting_authentication": { - "type": ["null", "boolean"] - }, - "mute_upon_entry": { - "type": ["null", "boolean"] - }, - "participant_video": { - "type": ["null", "boolean"] - }, - "private_meeting": { - "type": ["null", "boolean"] - }, - "resources": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "resource_type": { - "type": ["null", "string"] - }, - "resource_id": { - "type": ["null", "string"] - }, - "permission_level": { - "type": ["null", "string"] - } - } - } - }, - "registrants_confirmation_email": { - "type": ["null", "boolean"] - }, - "registrants_email_notification": { - "type": ["null", "boolean"] - }, - "registration_type": { - "type": ["null", "number"] - }, - "request_permission_to_unmute_participants": { - "type": ["null", "boolean"] - }, - "show_join_info": { - "type": ["null", "boolean"] - }, - "show_share_button": { - "type": ["null", "boolean"] - }, - "sign_language_interpretation": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "enable": { - "type": ["null", "boolean"] - } - } - }, - "use_pmi": { - "type": ["null", "boolean"] - }, - "waiting_room": { - "type": ["null", "boolean"] - }, - "waiting_room_options": { - "type": ["null", "object"], - "properties": { - "enable": { - "type": ["null", "boolean"] - }, - "admit_type": { - "type": ["null", "number"] - }, - "auto_admit": { - "type": ["null", "number"] - }, - "internal_user_auto_admit": { - "type": ["null", "number"] - } - } - }, - "watermark": { - "type": ["null", "boolean"] - }, - "host_save_video_order": { - "type": ["null", "boolean"] - }, - "internal_meeting": { - "type": ["null", "boolean"] - }, - "continuous_meeting_chat": { - "type": ["null", "object"], - "properties": { - "enable": { - "type": ["null", "boolean"] - }, - "auto_add_invited_external_users": { - "type": ["null", "boolean"] - }, - "channel_id": { - "type": ["null", "string"] - } - } - }, - "participant_focused_meeting": { - "type": ["null", "boolean"] - }, - "push_change_to_calendar": { - "type": ["null", "boolean"] - } - } - }, - "registration_url": { - "type": ["null", "string"] - }, - "resources": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "resource_type": { - "type": ["null", "string"] - }, - "resource_id": { - "type": ["null", "string"] - }, - "permission_level": { - "type": ["null", "string"] - } - } - } - }, - "start_time": { - "type": ["null", "string"] - }, - "start_url": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "timezone": { - "type": ["null", "string"] - }, - "topic": { - "type": ["null", "string"] - }, - "tracking_fields": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "field": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - }, - "visible": { - "type": ["null", "boolean"] - } - } - } - }, - "type": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meetings_list_tmp.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meetings_list_tmp.json deleted file mode 100644 index c74e6c5a5915..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/meetings_list_tmp.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_meeting_participants.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_meeting_participants.json deleted file mode 100644 index 6ac1210c943a..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_meeting_participants.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "meeting_uuid": { - "type": ["null", "string"] - }, - "meeting_id": { - "type": ["null", "integer"] - }, - "customer_key": { - "type": ["null", "string"] - }, - "duration": { - "type": ["null", "number"] - }, - "failover": { - "type": ["null", "boolean"] - }, - "id": { - "type": ["null", "string"] - }, - "join_time": { - "type": ["null", "string"] - }, - "leave_time": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "registrant_id": { - "type": ["null", "string"] - }, - "user_email": { - "type": ["null", "string"] - }, - "user_id": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "bo_mtg_id": { - "type": ["null", "string"] - }, - "participant_user_id": { - "type": ["null", "string"] - }, - "attentiveness_score": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_meetings.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_meetings.json deleted file mode 100644 index 96bb88296539..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_meetings.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "meeting_uuid": { - "type": ["null", "string"] - }, - "custom_keys": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "key": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "dept": { - "type": ["null", "string"] - }, - "duration": { - "type": ["null", "number"] - }, - "end_time": { - "type": ["null", "string"] - }, - "host_id": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "number"] - }, - "participants_count": { - "type": ["null", "number"] - }, - "start_time": { - "type": ["null", "string"] - }, - "topic": { - "type": ["null", "string"] - }, - "total_minutes": { - "type": ["null", "number"] - }, - "tracking_fields": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "field": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "type": { - "type": ["null", "number"] - }, - "user_email": { - "type": ["null", "string"] - }, - "user_name": { - "type": ["null", "string"] - }, - "uuid": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_webinar_participants.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_webinar_participants.json deleted file mode 100644 index 97728b61a0da..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_webinar_participants.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_uuid": { - "type": ["null", "string"] - }, - "customer_key": { - "type": ["null", "string"] - }, - "duration": { - "type": ["null", "number"] - }, - "failover": { - "type": ["null", "boolean"] - }, - "id": { - "type": ["null", "string"] - }, - "join_time": { - "type": ["null", "string"] - }, - "leave_time": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "registrant_id": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "user_email": { - "type": ["null", "string"] - }, - "user_id": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_webinars.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_webinars.json deleted file mode 100644 index 785c07bdc9ba..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/report_webinars.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_uuid": { - "type": ["null", "string"] - }, - "custom_keys": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "key": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "dept": { - "type": ["null", "string"] - }, - "duration": { - "type": ["null", "number"] - }, - "end_time": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "number"] - }, - "participants_count": { - "type": ["null", "number"] - }, - "start_time": { - "type": ["null", "string"] - }, - "topic": { - "type": ["null", "string"] - }, - "total_minutes": { - "type": ["null", "number"] - }, - "tracking_fields": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "field": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "type": { - "type": ["null", "number"] - }, - "user_email": { - "type": ["null", "string"] - }, - "user_name": { - "type": ["null", "string"] - }, - "uuid": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/users.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/users.json deleted file mode 100644 index a2f1fce04692..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/users.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "properties": { - "user_created_at": { - "type": ["null", "string"] - }, - "created_at": { - "type": ["null", "string"] - }, - "custom_attributes": { - "type": ["null", "array"], - "items": { - "type": "object", - "properties": { - "key": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "dept": { - "type": ["null", "string"] - }, - "email": { - "type": ["null", "string"] - }, - "employee_unique_id": { - "type": ["null", "string"] - }, - "first_name": { - "type": ["null", "string"] - }, - "group_ids": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "id": { - "type": ["null", "string"] - }, - "im_group_ids": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "language": { - "type": ["null", "string"] - }, - "last_client_version": { - "type": ["null", "string"] - }, - "last_login_time": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "phone_number": { - "type": ["null", "string"] - }, - "plan_united_type": { - "type": ["null", "string"] - }, - "pmi": { - "type": ["null", "number"] - }, - "role_id": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "timezone": { - "type": ["null", "string"] - }, - "type": { - "type": ["null", "number"] - }, - "verified": { - "type": ["null", "number"] - }, - "display_name": { "type": ["null", "string"] } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_absentees.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_absentees.json deleted file mode 100644 index c56de977fb97..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_absentees.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_uuid": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "string"] - }, - "address": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "comments": { - "type": ["null", "string"] - }, - "country": { - "type": ["null", "string"] - }, - "custom_questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "title": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "email": { - "type": ["null", "string"] - }, - "first_name": { - "type": ["null", "string"] - }, - "industry": { - "type": ["null", "string"] - }, - "job_title": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "no_of_employees": { - "type": ["null", "string"] - }, - "org": { - "type": ["null", "string"] - }, - "phone": { - "type": ["null", "string"] - }, - "purchasing_time_frame": { - "type": ["null", "string"] - }, - "role_in_purchase_process": { - "type": ["null", "string"] - }, - "state": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - }, - "create_time": { - "type": ["null", "string"] - }, - "join_url": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_panelists.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_panelists.json deleted file mode 100644 index 65a7dbff19e2..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_panelists.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_id": { - "type": ["null", "number"] - }, - "id": { - "type": ["null", "string"] - }, - "email": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "join_url": { - "type": ["null", "string"] - }, - "virtual_background_id": { - "type": ["null", "string"] - }, - "name_tag_id": { - "type": ["null", "string"] - }, - "name_tag_name": { - "type": ["null", "string"] - }, - "name_tag_pronouns": { - "type": ["null", "string"] - }, - "name_tag_description": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_poll_results.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_poll_results.json deleted file mode 100644 index d405339cea2c..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_poll_results.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_uuid": { - "type": ["null", "string"] - }, - "email": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "question_details": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "answer": { - "type": ["null", "string"] - }, - "date_time": { - "type": ["null", "string"] - }, - "polling_id": { - "type": ["null", "string"] - }, - "question": { - "type": ["null", "string"] - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_polls.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_polls.json deleted file mode 100644 index 1c30b07f1dee..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_polls.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_id": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "anonymous": { - "type": ["null", "boolean"] - }, - "poll_type": { - "type": ["null", "number"] - }, - "questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "answer_max_character": { - "type": ["null", "number"] - }, - "answer_min_character": { - "type": ["null", "number"] - }, - "answer_required": { - "type": ["null", "boolean"] - }, - "answers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "case_sensitive": { - "type": ["null", "boolean"] - }, - "name": { - "type": ["null", "string"] - }, - "prompts": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "prompt_question": { - "type": ["null", "string"] - }, - "prompt_right_answers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - } - } - } - }, - "rating_max_label": { - "type": ["null", "string"] - }, - "rating_max_value": { - "type": ["null", "number"] - }, - "rating_min_label": { - "type": ["null", "string"] - }, - "rating_min_value": { - "type": ["null", "number"] - }, - "right_answers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "show_as_dropdown": { - "type": ["null", "boolean"] - }, - "type": { - "type": ["null", "string"] - } - } - } - }, - "title": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_qna_results.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_qna_results.json deleted file mode 100644 index 175b6dcd633e..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_qna_results.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_uuid": { - "type": ["null", "string"] - }, - "email": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "question_details": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "answer": { - "type": ["null", "string"] - }, - "question": { - "type": ["null", "string"] - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_registrants.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_registrants.json deleted file mode 100644 index 7fda1561c4ab..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_registrants.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_id": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "string"] - }, - "address": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "comments": { - "type": ["null", "string"] - }, - "country": { - "type": ["null", "string"] - }, - "custom_questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "title": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "email": { - "type": ["null", "string"] - }, - "first_name": { - "type": ["null", "string"] - }, - "industry": { - "type": ["null", "string"] - }, - "job_title": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "no_of_employees": { - "type": ["null", "string"] - }, - "org": { - "type": ["null", "string"] - }, - "phone": { - "type": ["null", "string"] - }, - "purchasing_time_frame": { - "type": ["null", "string"] - }, - "role_in_purchase_process": { - "type": ["null", "string"] - }, - "state": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - }, - "create_time": { - "type": ["null", "string"] - }, - "join_url": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_registration_questions.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_registration_questions.json deleted file mode 100644 index a7ba8b6985c5..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_registration_questions.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_id": { - "type": ["null", "string"] - }, - "custom_questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "answers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "required": { - "type": ["null", "boolean"] - }, - "title": { - "type": ["null", "string"] - }, - "type": { - "type": ["null", "string"] - } - } - } - }, - "questions": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "field_name": { - "type": ["null", "string"] - }, - "required": { - "type": ["null", "boolean"] - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_tracking_sources.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_tracking_sources.json deleted file mode 100644 index b97d71e40147..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinar_tracking_sources.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "webinar_id": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "string"] - }, - "registration_count": { - "type": ["null", "number"] - }, - "source_name": { - "type": ["null", "string"] - }, - "tracking_url": { - "type": ["null", "string"] - }, - "visitor_count": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinars.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinars.json deleted file mode 100644 index 383818e6b57e..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinars.json +++ /dev/null @@ -1,311 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "host_email": { - "type": ["null", "string"] - }, - "host_id": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "number"] - }, - "uuid": { - "type": ["null", "string"] - }, - "agenda": { - "type": ["null", "string"] - }, - "created_at": { - "type": ["null", "string"] - }, - "duration": { - "type": ["null", "number"] - }, - "join_url": { - "type": ["null", "string"] - }, - "occurrences": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "duration": { - "type": ["null", "number"] - }, - "occurrence_id": { - "type": ["null", "string"] - }, - "start_time": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - } - } - } - }, - "password": { - "type": ["null", "string"] - }, - "recurrence": { - "type": ["null", "object"], - "properties": { - "end_date_time": { - "type": ["null", "string"] - }, - "end_times": { - "type": ["null", "number"] - }, - "monthly_day": { - "type": ["null", "number"] - }, - "monthly_week": { - "type": ["null", "number"] - }, - "monthly_week_day": { - "type": ["null", "number"] - }, - "repeat_interval": { - "type": ["null", "number"] - }, - "type": { - "type": ["null", "number"] - }, - "weekly_days": { - "type": ["null", "string"] - } - } - }, - "settings": { - "type": ["null", "object"], - "properties": { - "allow_multiple_devices": { - "type": ["null", "boolean"] - }, - "alternative_hosts": { - "type": ["null", "string"] - }, - "alternative_host_update_polls": { - "type": ["null", "boolean"] - }, - "approval_type": { - "type": ["null", "number"] - }, - "attendees_and_panelists_reminder_email_notification": { - "type": ["null", "object"], - "properties": { - "enable": { - "type": ["null", "boolean"] - }, - "type": { - "type": ["null", "number"] - } - } - }, - "audio": { - "type": ["null", "string"] - }, - "authentication_domains": { - "type": ["null", "string"] - }, - "authentication_name": { - "type": ["null", "string"] - }, - "authentication_option": { - "type": ["null", "string"] - }, - "auto_recording": { - "type": ["null", "string"] - }, - "close_registration": { - "type": ["null", "boolean"] - }, - "contact_email": { - "type": ["null", "string"] - }, - "contact_name": { - "type": ["null", "string"] - }, - "email_language": { - "type": ["null", "string"] - }, - "follow_up_absentees_email_notification": { - "type": ["null", "object"], - "properties": { - "enable": { - "type": ["null", "boolean"] - }, - "type": { - "type": ["null", "number"] - } - } - }, - "follow_up_attendees_email_notification": { - "type": ["null", "object"], - "properties": { - "enable": { - "type": ["null", "boolean"] - }, - "type": { - "type": ["null", "number"] - } - } - }, - "global_dial_in_countries": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "hd_video": { - "type": ["null", "boolean"] - }, - "hd_video_for_attendees": { - "type": ["null", "boolean"] - }, - "host_video": { - "type": ["null", "boolean"] - }, - "language_interpretation": { - "type": ["null", "object"], - "properties": { - "enable": { - "type": ["null", "boolean"] - }, - "interpreters": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "email": { - "type": ["null", "string"] - }, - "languages": { - "type": ["null", "string"] - } - } - } - } - } - }, - "panelist_authentication": { - "type": ["null", "boolean"] - }, - "meeting_authentication": { - "type": ["null", "boolean"] - }, - "add_watermark": { - "type": ["null", "boolean"] - }, - "add_audio_watermark": { - "type": ["null", "boolean"] - }, - "notify_registrants": { - "type": ["null", "boolean"] - }, - "on_demand": { - "type": ["null", "boolean"] - }, - "panelists_invitation_email_notification": { - "type": ["null", "boolean"] - }, - "panelists_video": { - "type": ["null", "boolean"] - }, - "post_webinar_survey": { - "type": ["null", "boolean"] - }, - "practice_session": { - "type": ["null", "boolean"] - }, - "question_and_answer": { - "type": ["null", "object"], - "properties": { - "allow_anonymous_questions": { - "type": ["null", "boolean"] - }, - "answer_questions": { - "type": ["null", "string"] - }, - "attendees_can_comment": { - "type": ["null", "boolean"] - }, - "attendees_can_upvote": { - "type": ["null", "boolean"] - }, - "allow_auto_reply": { - "type": ["null", "boolean"] - }, - "auto_reply_text": { - "type": ["null", "string"] - }, - "enable": { - "type": ["null", "boolean"] - } - } - }, - "registrants_confirmation_email": { - "type": ["null", "boolean"] - }, - "registrants_email_notification": { - "type": ["null", "boolean"] - }, - "registrants_restrict_number": { - "type": ["null", "number"] - }, - "registration_type": { - "type": ["null", "number"] - }, - "send_1080p_video_to_attendees": { - "type": ["null", "boolean"] - }, - "show_share_button": { - "type": ["null", "boolean"] - }, - "survey_url": { - "type": ["null", "string"] - }, - "enable_session_branding": { - "type": ["null", "boolean"] - } - } - }, - "start_time": { - "type": ["null", "string"] - }, - "start_url": { - "type": ["null", "string"] - }, - "timezone": { - "type": ["null", "string"] - }, - "topic": { - "type": ["null", "string"] - }, - "tracking_fields": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "field": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "type": { - "type": ["null", "number"] - }, - "is_simulive": { - "type": ["null", "boolean"] - }, - "record_file_id": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinars_list_tmp.json b/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinars_list_tmp.json deleted file mode 100644 index c74e6c5a5915..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/schemas/webinars_list_tmp.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true -} diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/source.py b/airbyte-integrations/connectors/source-zoom/source_zoom/source.py deleted file mode 100644 index a851fa38c8a3..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceZoom(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-zoom/source_zoom/spec.yaml b/airbyte-integrations/connectors/source-zoom/source_zoom/spec.yaml deleted file mode 100644 index d91cbe0bd6c9..000000000000 --- a/airbyte-integrations/connectors/source-zoom/source_zoom/spec.yaml +++ /dev/null @@ -1,29 +0,0 @@ -documentationUrl: https://docs.airbyte.com/integrations/sources/zoom -connectionSpecification: - $schema: http://json-schema.org/draft-07/schema# - title: Zoom Spec - type: object - required: - - account_id - - client_id - - client_secret - - authorization_endpoint - additionalProperties: true - properties: - account_id: - type: string - order: 0 - description: 'The account ID for your Zoom account. You can find this in the Zoom Marketplace under the "Manage" tab for your app.' - client_id: - type: string - order: 1 - description: 'The client ID for your Zoom app. You can find this in the Zoom Marketplace under the "Manage" tab for your app.' - client_secret: - type: string - order: 2 - description: 'The client secret for your Zoom app. You can find this in the Zoom Marketplace under the "Manage" tab for your app.' - airbyte_secret: true - authorization_endpoint: - type: string - order: 3 - default: "https://zoom.us/oauth/token" diff --git a/airbyte-integrations/connectors/source-zoom/unit_tests/test_zoom_authenticator.py b/airbyte-integrations/connectors/source-zoom/unit_tests/test_zoom_authenticator.py deleted file mode 100755 index 3e2b27319383..000000000000 --- a/airbyte-integrations/connectors/source-zoom/unit_tests/test_zoom_authenticator.py +++ /dev/null @@ -1,60 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -import base64 -import unittest -from http import HTTPStatus - -import requests -import requests_mock -from source_zoom.components import ServerToServerOauthAuthenticator - - -class TestOAuthClient(unittest.TestCase): - def test_generate_access_token(self): - except_access_token = "rc-test-token" - except_token_response = {"access_token": except_access_token} - - config = { - "account_id": "rc-asdfghjkl", - "client_id": "rc-123456789", - "client_secret": "rc-test-secret", - "authorization_endpoint": "https://example.zoom.com/oauth/token" - } - parameters = config - client = ServerToServerOauthAuthenticator( - config=config, - account_id=config["account_id"], - client_id=config["client_id"], - client_secret=config["client_secret"], - authorization_endpoint=config["authorization_endpoint"], - parameters=parameters, - ) - - # Encode the client credentials in base64 - token = base64.b64encode(f'{config.get("client_id")}:{config.get("client_secret")}'.encode("ascii")).decode("utf-8") - - # Define the headers that should be sent in the request - headers = {"Authorization": f"Basic {token}", "Content-type": "application/json"} - - # Define the URL containing the grant_type and account_id as query parameters - url = f'{config.get("authorization_endpoint")}?grant_type=account_credentials&account_id={config.get("account_id")}' - - with requests_mock.Mocker() as m: - # Mock the requests.post call with the expected URL, headers and token response - m.post(url, json=except_token_response, request_headers=headers, status_code=HTTPStatus.OK) - - # Call the generate_access_token function and assert it returns the expected access token - self.assertEqual(client.generate_access_token(), except_access_token) - - # Test case when the endpoint has some error, like a timeout - with requests_mock.Mocker() as m: - m.post(url, exc=requests.exceptions.RequestException) - with self.assertRaises(Exception) as cm: - client.generate_access_token() - self.assertIn("Error while generating access token", str(cm.exception)) - - -if __name__ == "__main__": - unittest.main() diff --git a/docs/integrations/sources/zoom.md b/docs/integrations/sources/zoom.md index cbd10a9738af..a6d8fe5acf78 100644 --- a/docs/integrations/sources/zoom.md +++ b/docs/integrations/sources/zoom.md @@ -71,6 +71,7 @@ JWT Tokens are deprecated, only Server-to-Server works now. [link to Zoom](https | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------------------------- | +| 1.2.0 | 2024-10-29 | [47299](https://github.com/airbytehq/airbyte/pull/47299) | Migrate to manifest only format | | 1.1.22 | 2024-10-29 | [47755](https://github.com/airbytehq/airbyte/pull/47755) | Update dependencies | | 1.1.21 | 2024-10-28 | [47094](https://github.com/airbytehq/airbyte/pull/47094) | Update dependencies | | 1.1.20 | 2024-10-12 | [46824](https://github.com/airbytehq/airbyte/pull/46824) | Update dependencies |