From cd935619742fed5513fd8e3033a7414d7164b144 Mon Sep 17 00:00:00 2001 From: Dhroov Makwana Date: Wed, 22 May 2024 17:25:52 +0530 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8Source=20Okta:=20migrate=20to=20low-co?= =?UTF-8?q?de=20(#36509)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alexandre Girard Co-authored-by: Anatolii Yatsuk --- .../connectors/source-okta/.dockerignore | 7 - .../connectors/source-okta/CHANGELOG.md | 3 - .../connectors/source-okta/Dockerfile | 16 - .../connectors/source-okta/README.md | 97 +- .../connectors/source-okta/__init__.py | 3 + .../source-okta/acceptance-test-config.yml | 2 +- .../integration_tests/expected_records.jsonl | 160 +- .../connectors/source-okta/main.py | 2 +- .../connectors/source-okta/metadata.yaml | 31 +- .../connectors/source-okta/poetry.lock | 1314 ++++++++++++ .../connectors/source-okta/pyproject.toml | 27 + .../connectors/source-okta/requirements.txt | 1 - .../connectors/source-okta/setup.py | 47 - .../source-okta/source_okta/__init__.py | 26 +- .../source-okta/source_okta/authenticator.py | 30 - .../source_okta/config_migration.py | 82 + .../source_okta/custom_authenticators.py | 63 + .../source-okta/source_okta/manifest.yaml | 1904 +++++++++++++++++ .../connectors/source-okta/source_okta/run.py | 7 +- .../source_okta/schemas/custom_roles.json | 53 - .../source_okta/schemas/group_members.json | 215 -- .../schemas/group_role_assignments.json | 87 - .../source_okta/schemas/groups.json | 43 - .../source-okta/source_okta/schemas/logs.json | 269 --- .../source_okta/schemas/permissions.json | 96 - .../source_okta/schemas/resource_sets.json | 71 - .../schemas/user_role_assignments.json | 87 - .../source_okta/schemas/users.json | 216 -- .../source-okta/source_okta/source.py | 384 +--- .../source-okta/source_okta/spec.json | 84 - .../source-okta/source_okta/spec.yaml | 77 + .../source-okta/source_okta/utils.py | 81 - .../source-okta/unit_tests/conftest.py | 143 +- .../migration_configs/migrated_config.json | 8 + .../not_migrated_config.json | 5 + .../source-okta/unit_tests/test_migration.py | 42 + .../source-okta/unit_tests/test_source.py | 115 +- .../source-okta/unit_tests/test_streams.py | 406 +--- .../source-okta/unit_tests/test_utils.py | 32 - docs/integrations/sources/okta.md | 3 +- 40 files changed, 3880 insertions(+), 2459 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-okta/.dockerignore delete mode 100644 airbyte-integrations/connectors/source-okta/CHANGELOG.md delete mode 100644 airbyte-integrations/connectors/source-okta/Dockerfile create mode 100644 airbyte-integrations/connectors/source-okta/__init__.py create mode 100644 airbyte-integrations/connectors/source-okta/poetry.lock create mode 100644 airbyte-integrations/connectors/source-okta/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-okta/requirements.txt delete mode 100644 airbyte-integrations/connectors/source-okta/setup.py delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/authenticator.py create mode 100644 airbyte-integrations/connectors/source-okta/source_okta/config_migration.py create mode 100644 airbyte-integrations/connectors/source-okta/source_okta/custom_authenticators.py create mode 100644 airbyte-integrations/connectors/source-okta/source_okta/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/custom_roles.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/group_members.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/group_role_assignments.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/groups.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/logs.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/permissions.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/resource_sets.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/user_role_assignments.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/schemas/users.json delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/spec.json create mode 100644 airbyte-integrations/connectors/source-okta/source_okta/spec.yaml delete mode 100644 airbyte-integrations/connectors/source-okta/source_okta/utils.py create mode 100644 airbyte-integrations/connectors/source-okta/unit_tests/migration_configs/migrated_config.json create mode 100644 airbyte-integrations/connectors/source-okta/unit_tests/migration_configs/not_migrated_config.json create mode 100644 airbyte-integrations/connectors/source-okta/unit_tests/test_migration.py delete mode 100644 airbyte-integrations/connectors/source-okta/unit_tests/test_utils.py diff --git a/airbyte-integrations/connectors/source-okta/.dockerignore b/airbyte-integrations/connectors/source-okta/.dockerignore deleted file mode 100644 index a25bb38f53b2..000000000000 --- a/airbyte-integrations/connectors/source-okta/.dockerignore +++ /dev/null @@ -1,7 +0,0 @@ -* -!Dockerfile -!Dockerfile.test -!main.py -!source_okta -!setup.py -!secrets diff --git a/airbyte-integrations/connectors/source-okta/CHANGELOG.md b/airbyte-integrations/connectors/source-okta/CHANGELOG.md deleted file mode 100644 index 956d24dd46d7..000000000000 --- a/airbyte-integrations/connectors/source-okta/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -# Changelog - -See the [docs](https://docs.airbyte.io/integrations/sources/okta#changelog) diff --git a/airbyte-integrations/connectors/source-okta/Dockerfile b/airbyte-integrations/connectors/source-okta/Dockerfile deleted file mode 100644 index bf21b93a93f6..000000000000 --- a/airbyte-integrations/connectors/source-okta/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM python:3.9-slim - -# Bash is installed for more convenient debugging. -RUN apt-get update && apt-get install -y bash && rm -rf /var/lib/apt/lists/* - -WORKDIR /airbyte/integration_code -COPY source_okta ./source_okta -COPY main.py ./ -COPY setup.py ./ -RUN pip install . - -ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" -ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] - -LABEL io.airbyte.version=0.1.16 -LABEL io.airbyte.name=airbyte/source-okta diff --git a/airbyte-integrations/connectors/source-okta/README.md b/airbyte-integrations/connectors/source-okta/README.md index 63b74be94d40..4aa4881fcd93 100644 --- a/airbyte-integrations/connectors/source-okta/README.md +++ b/airbyte-integrations/connectors/source-okta/README.md @@ -1,86 +1,72 @@ # Okta Source -This is the repository for the Okta source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.io/integrations/sources/okta). +This is the repository for the Okta configuration based source connector. +For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/okta). ## Local development ### Prerequisites -**To iterate on this connector, make sure to complete this prerequisites section.** +* Python (`^3.9`) +* Poetry (`^1.7`) - installation instructions [here](https://python-poetry.org/docs/#installation) -#### Build & Activate Virtual Environment and install dependencies -From this connector directory, create a virtual environment: -```shell -python -m venv .venv -``` - -This will generate a virtualenv for this module in `.venv/`. Make sure this venv is active in your -development environment of choice. To activate it from the terminal, run: +### Installing the connector -```shell -source .venv/bin/activate -pip install -r requirements.txt +From this connector directory, run: +```bash +poetry install --with dev ``` -If you are in an IDE, follow your IDE's instructions to activate the virtualenv. - -Note that while we are installing dependencies from `requirements.txt`, you should only edit `setup.py` for your dependencies. `requirements.txt` is -used for editable installs (`pip install -e`) to pull in Python dependencies from the monorepo and will call `setup.py`. -If this is mumbo jumbo to you, don't worry about it, just put your deps in `setup.py` but install using `pip install -r requirements.txt` and everything -should work as you expect. -#### Create credentials +### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.io/integrations/sources/okta) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_okta/spec.json` file. +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/okta) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `src/source_okta/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. +See `sample_files/config.json` for a sample config file. -**If you are an Airbyte core member**, copy the credentials in Lastpass under the secret name `source okta test creds` -and place them into `secrets/config.json`. ### Locally running the connector -```shell -python main.py spec -python main.py check --config secrets/config.json -python main.py discover --config secrets/config.json -python main.py read --config secrets/config.json --catalog integration_tests/configured_catalog.json ``` +poetry run source-okta spec +poetry run source-okta check --config secrets/config.json +poetry run source-okta discover --config secrets/config.json +poetry run source-okta read --config secrets/config.json --catalog integration_tests/configured_catalog.json +``` + +### Running tests -### Locally running the connector docker image +To run tests locally, from the connector directory run: -#### Build +``` +poetry run pytest tests +``` -**Via [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) (recommended):** +### Building the docker image +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-okta build ``` -An image will be built with the tag `airbyte/source-okta:dev`. +An image will be available on your host with the tag `airbyte/source-okta:dev`. -**Via `docker build`:** -```bash -docker build -t airbyte/source-okta:dev . -``` - -#### Run +### Running as a docker container Then run any of the connector commands as follows: - -```shell +``` docker run --rm airbyte/source-okta:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-okta:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-okta:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-okta:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -## Testing +### Running our 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): @@ -90,25 +76,30 @@ airbyte-ci connectors --name=source-okta 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. +Customize `acceptance-test-config.yml` file to configure acceptance 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 +### 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: +All of your dependencies should be managed via Poetry. +To add a new dependency, run: +```bash +poetry add +``` -- required for your connector to work need to go to `MAIN_REQUIREMENTS` list. -- required for the testing need to go to `TEST_REQUIREMENTS` list +Please commit the changes to `pyproject.toml` and `poetry.lock` files. -### Publishing a new version of the connector +## 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? 1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-okta 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). +2. 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` + - bump the `version` value in `pyproject.toml` 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/okta.md`). +4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/okta.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-okta/__init__.py b/airbyte-integrations/connectors/source-okta/__init__.py new file mode 100644 index 000000000000..66f6de8cb2bb --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/__init__.py @@ -0,0 +1,3 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# diff --git a/airbyte-integrations/connectors/source-okta/acceptance-test-config.yml b/airbyte-integrations/connectors/source-okta/acceptance-test-config.yml index d34cae9702f9..c8a511692936 100644 --- a/airbyte-integrations/connectors/source-okta/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-okta/acceptance-test-config.yml @@ -3,7 +3,7 @@ test_strictness_level: high acceptance_tests: spec: tests: - - spec_path: "source_okta/spec.json" + - spec_path: "source_okta/spec.yaml" connection: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-okta/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-okta/integration_tests/expected_records.jsonl index f61349197f63..b79da77fff17 100644 --- a/airbyte-integrations/connectors/source-okta/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-okta/integration_tests/expected_records.jsonl @@ -1,120 +1,40 @@ -{"stream":"users","data":{"id":"00ua65e9m11opLyFx5d7","status":"ACTIVE","created":"2023-06-28T15:10:45.000Z","activated":null,"statusChanged":"2023-06-28T17:00:30.000Z","lastLogin":"2023-06-28T17:00:38.000Z","lastUpdated":"2023-06-28T17:00:30.000Z","passwordChanged":"2023-06-28T17:00:30.000Z","type":{"id":"otya65adpkOaHlmwo5d7"},"profile":{"firstName":"Sherif","lastName":"nada","mobilePhone":null,"secondEmail":null,"login":"integration-test@daxtarity.com","email":"integration-test@daxtarity.com"},"credentials":{"password":{},"provider":{"type":"OKTA","name":"OKTA"}},"_links":{"self":{"href":"https://dev-33855097.okta.com/api/v1/users/00ua65e9m11opLyFx5d7"}}},"emitted_at":1687974332246} -{"stream":"users","data":{"id":"00ua67q26u6ozRG5T5d7","status":"ACTIVE","created":"2023-06-28T17:09:06.000Z","activated":"2023-06-28T17:09:06.000Z","statusChanged":"2023-06-28T17:09:46.000Z","lastLogin":"2023-06-28T17:09:50.000Z","lastUpdated":"2023-06-28T17:09:46.000Z","passwordChanged":"2023-06-28T17:09:46.000Z","type":{"id":"otya65adpkOaHlmwo5d7"},"profile":{"firstName":"integration","lastName":"test1","mobilePhone":null,"secondEmail":null,"login":"integration-test+1@daxtarity.com","email":"integration-test+1@daxtarity.com"},"credentials":{"password":{},"provider":{"type":"OKTA","name":"OKTA"}},"_links":{"self":{"href":"https://dev-33855097.okta.com/api/v1/users/00ua67q26u6ozRG5T5d7"}}},"emitted_at":1687974332247} -{"stream":"groups","data":{"id":"00ga65adpbQSn1nX15d7","created":"2023-06-28T15:10:40.000Z","lastUpdated":"2023-06-28T15:10:40.000Z","lastMembershipUpdated":"2023-06-28T17:09:06.000Z","objectClass":["okta:user_group"],"type":"BUILT_IN","profile":{"name":"Everyone","description":"All users in your organization"},"_links":{"logo":[{"name":"medium","href":"https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-medium.1a5ebe44c4244fb796c235d86b47e3bb.png","type":"image/png"},{"name":"large","href":"https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-large.d9cfbd8a00a4feac1aa5612ba02e99c0.png","type":"image/png"}],"users":{"href":"https://dev-33855097.okta.com/api/v1/groups/00ga65adpbQSn1nX15d7/users"},"apps":{"href":"https://dev-33855097.okta.com/api/v1/groups/00ga65adpbQSn1nX15d7/apps"}}},"emitted_at":1687974332902} -{"stream":"groups","data":{"id":"00ga65e9kf1YwttUp5d7","created":"2023-06-28T15:10:44.000Z","lastUpdated":"2023-06-28T15:10:44.000Z","lastMembershipUpdated":"2023-06-28T15:10:44.000Z","objectClass":["okta:user_group"],"type":"BUILT_IN","profile":{"name":"Okta Administrators","description":"Okta manages this group, which contains all administrators in your organization."},"_links":{"logo":[{"name":"medium","href":"https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-medium.1a5ebe44c4244fb796c235d86b47e3bb.png","type":"image/png"},{"name":"large","href":"https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-large.d9cfbd8a00a4feac1aa5612ba02e99c0.png","type":"image/png"}],"users":{"href":"https://dev-33855097.okta.com/api/v1/groups/00ga65e9kf1YwttUp5d7/users"},"apps":{"href":"https://dev-33855097.okta.com/api/v1/groups/00ga65e9kf1YwttUp5d7/apps"}}},"emitted_at":1687974332904} -{"stream":"groups","data":{"id":"00ga67rapdEXY9PVo5d7","created":"2023-06-28T17:08:11.000Z","lastUpdated":"2023-06-28T17:08:11.000Z","lastMembershipUpdated":"2023-06-28T17:09:06.000Z","objectClass":["okta:user_group"],"type":"OKTA_GROUP","profile":{"name":"test-group-1","description":null},"_links":{"logo":[{"name":"medium","href":"https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-medium.1a5ebe44c4244fb796c235d86b47e3bb.png","type":"image/png"},{"name":"large","href":"https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-large.d9cfbd8a00a4feac1aa5612ba02e99c0.png","type":"image/png"}],"users":{"href":"https://dev-33855097.okta.com/api/v1/groups/00ga67rapdEXY9PVo5d7/users"},"apps":{"href":"https://dev-33855097.okta.com/api/v1/groups/00ga67rapdEXY9PVo5d7/apps"}}},"emitted_at":1687974332904} -{"stream":"group_members","data":{"id":"00ua65e9m11opLyFx5d7","status":"ACTIVE","created":"2023-06-28T15:10:45.000Z","activated":null,"statusChanged":"2023-06-28T17:00:30.000Z","lastLogin":"2023-06-28T17:00:38.000Z","lastUpdated":"2023-06-28T17:00:30.000Z","passwordChanged":"2023-06-28T17:00:30.000Z","type":{"id":"otya65adpkOaHlmwo5d7"},"profile":{"firstName":"Sherif","lastName":"nada","mobilePhone":null,"secondEmail":null,"login":"integration-test@daxtarity.com","email":"integration-test@daxtarity.com"},"credentials":{"password":{},"provider":{"type":"OKTA","name":"OKTA"}},"_links":{"self":{"href":"https://dev-33855097.okta.com/api/v1/users/00ua65e9m11opLyFx5d7"}},"groupId":"00ga65adpbQSn1nX15d7"},"emitted_at":1687974334544} -{"stream":"group_members","data":{"id":"00ua67q26u6ozRG5T5d7","status":"ACTIVE","created":"2023-06-28T17:09:06.000Z","activated":"2023-06-28T17:09:06.000Z","statusChanged":"2023-06-28T17:09:46.000Z","lastLogin":"2023-06-28T17:09:50.000Z","lastUpdated":"2023-06-28T17:09:46.000Z","passwordChanged":"2023-06-28T17:09:46.000Z","type":{"id":"otya65adpkOaHlmwo5d7"},"profile":{"firstName":"integration","lastName":"test1","mobilePhone":null,"secondEmail":null,"login":"integration-test+1@daxtarity.com","email":"integration-test+1@daxtarity.com"},"credentials":{"password":{},"provider":{"type":"OKTA","name":"OKTA"}},"_links":{"self":{"href":"https://dev-33855097.okta.com/api/v1/users/00ua67q26u6ozRG5T5d7"}},"groupId":"00ga65adpbQSn1nX15d7"},"emitted_at":1687974334545} -{"stream":"group_members","data":{"id":"00ua67q26u6ozRG5T5d7","status":"ACTIVE","created":"2023-06-28T17:09:06.000Z","activated":"2023-06-28T17:09:06.000Z","statusChanged":"2023-06-28T17:09:46.000Z","lastLogin":"2023-06-28T17:09:50.000Z","lastUpdated":"2023-06-28T17:09:46.000Z","passwordChanged":"2023-06-28T17:09:46.000Z","type":{"id":"otya65adpkOaHlmwo5d7"},"profile":{"firstName":"integration","lastName":"test1","mobilePhone":null,"secondEmail":null,"login":"integration-test+1@daxtarity.com","email":"integration-test+1@daxtarity.com"},"credentials":{"password":{},"provider":{"type":"OKTA","name":"OKTA"}},"_links":{"self":{"href":"https://dev-33855097.okta.com/api/v1/users/00ua67q26u6ozRG5T5d7"}},"groupId":"00ga67rapdEXY9PVo5d7"},"emitted_at":1687974334883} -{"stream":"resource_sets","data":{"id":"iama688hw0VLl1JrA5d7","label":"test-resource-set1","description":"test-resource-set1","created":"2023-06-28T17:39:57.000Z","lastUpdated":"2023-06-28T17:39:57.000Z","_links":{"bindings":{"href":"https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7/bindings"},"self":{"href":"https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7"},"resources":{"href":"https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7/resources"}}},"emitted_at":1687974335507} -{"stream":"custom_roles","data":{"id":"cr0a688qm6u91Un0m5d7","label":"user-viewer-role","description":"user-viewer-role","created":"2023-06-28T17:39:34.000Z","lastUpdated":"2023-06-28T17:39:34.000Z","_links":{"permissions":{"href":"https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7/permissions"},"self":{"href":"https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7"}}},"emitted_at":1687974336117} -{"stream":"user_role_assignments","data":{"id":"ra1a65e9m3XfWHtTL5d7","label":"Super Administrator","type":"SUPER_ADMIN","status":"ACTIVE","created":"2023-06-28T15:10:46.000Z","lastUpdated":"2023-06-28T15:10:46.000Z","assignmentType":"USER","_links":{"assignee":{"href":"https://dev-33855097.okta.com/api/v1/users/00ua65e9m11opLyFx5d7"}},"userId":"00ua65e9m11opLyFx5d7"},"emitted_at":1687974337567} -{"stream":"user_role_assignments","data":{"id":"irba68bi9rIDU5CrC5d7","label":"user-viewer-role","type":"CUSTOM","status":"ACTIVE","created":"2023-06-28T17:45:26.000Z","lastUpdated":"2023-06-28T17:45:26.000Z","assignmentType":"GROUP","resource-set":"iama688hw0VLl1JrA5d7","role":"cr0a688qm6u91Un0m5d7","_links":{"role":{"href":"https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7"},"resource-set":{"href":"https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7"},"permissions":{"href":"https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7/permissions"},"member":{"href":"https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7/bindings/cr0a688qm6u91Un0m5d7/members/irba68bi9rIDU5CrC5d7"},"assignee":{"href":"https://dev-33855097.okta.com/api/v1/groups/00ga67rapdEXY9PVo5d7"}},"userId":"00ua67q26u6ozRG5T5d7"},"emitted_at":1687974337756} -{"stream":"group_role_assignments","data":{"id":"irba68bi9rIDU5CrC5d7","label":"user-viewer-role","type":"CUSTOM","status":"ACTIVE","created":"2023-06-28T17:45:26.000Z","lastUpdated":"2023-06-28T17:45:26.000Z","assignmentType":"GROUP","resource-set":"iama688hw0VLl1JrA5d7","role":"cr0a688qm6u91Un0m5d7","_links":{"role":{"href":"https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7"},"resource-set":{"href":"https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7"},"permissions":{"href":"https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7/permissions"},"member":{"href":"https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7/bindings/cr0a688qm6u91Un0m5d7/members/irba68bi9rIDU5CrC5d7"},"assignee":{"href":"https://dev-33855097.okta.com/api/v1/groups/00ga67rapdEXY9PVo5d7"}},"groupId":"00ga67rapdEXY9PVo5d7"},"emitted_at":1687974339505} -{"stream":"permissions","data":{"label":"okta.users.read","created":"2023-06-28T17:39:34.000Z","lastUpdated":"2023-06-28T17:39:34.000Z","conditions":null,"_links":{"role":{"href":"https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7"},"self":{"href":"https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7/permissions/okta.users.read"}}},"emitted_at":1687974340829} -{"stream":"logs","data":{"actor":{"id":"00u4exiwtOxp3yrE35d5","type":"User","alternateId":"web@okta.com","displayName":"Developer Free","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Java/11.0.19","os":"Unknown","browser":"UNKNOWN"},"zone":"OFF_NETWORK","device":"Unknown","id":"capfx6SYTRNSWSMAOWNS","ipAddress":"34.202.149.224","geographicalContext":{"city":"Ashburn","state":"Virginia","country":"United States","postalCode":"20149","geolocation":{"lat":39.0469,"lon":-77.4903}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsF6rJgAWPTR282mSDMs0rzA"},"displayMessage":"Update application","eventType":"application.lifecycle.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxNbs2IKJWqWx3TDGU36AAAAEE","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf","requestUri":"/api/internal/orgs","url":"/api/internal/orgs?"}},"legacyEventType":"app.generic.config.app_updated","transaction":{"type":"WEB","id":"ZJxNbs2IKJWqWx3TDGU36AAAAEE","detail":{"requestApiTokenId":"00T1596qn2A3qlzpq5d7"}},"uuid":"f18fae84-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[{"ip":"34.202.149.224","geographicalContext":{"city":"Ashburn","state":"Virginia","country":"United States","postalCode":"20149","geolocation":{"lat":39.0469,"lon":-77.4903}},"version":"V4","source":null}]},"target":[{"id":"0oaa65adoxfVQdKKA5d7","type":"AppInstance","alternateId":"Okta Admin Console","displayName":"Okta Admin Console","detailEntry":null}]},"emitted_at":1687974341857} -{"stream":"logs","data":{"actor":{"id":"00u4exiwtOxp3yrE35d5","type":"User","alternateId":"web@okta.com","displayName":"Developer Free","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Java/11.0.19","os":"Unknown","browser":"UNKNOWN"},"zone":"OFF_NETWORK","device":"Unknown","id":"capfx6SYTRNSWSMAOWNS","ipAddress":"34.202.149.224","geographicalContext":{"city":"Ashburn","state":"Virginia","country":"United States","postalCode":"20149","geolocation":{"lat":39.0469,"lon":-77.4903}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsF6rJgAWPTR282mSDMs0rzA"},"displayMessage":"Update application","eventType":"application.lifecycle.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxNbs2IKJWqWx3TDGU36AAAAEE","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf","requestUri":"/api/internal/orgs","url":"/api/internal/orgs?"}},"legacyEventType":"app.generic.config.app_updated","transaction":{"type":"WEB","id":"ZJxNbs2IKJWqWx3TDGU36AAAAEE","detail":{"requestApiTokenId":"00T1596qn2A3qlzpq5d7"}},"uuid":"f1a24c2e-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[{"ip":"34.202.149.224","geographicalContext":{"city":"Ashburn","state":"Virginia","country":"United States","postalCode":"20149","geolocation":{"lat":39.0469,"lon":-77.4903}},"version":"V4","source":null}]},"target":[{"id":"0oaa65adp1JPNziXH5d7","type":"AppInstance","alternateId":"Okta Support User","displayName":"Okta Support User","detailEntry":null}]},"emitted_at":1687974341858} -{"stream":"logs","data":{"actor":{"id":"00u4exiwtOxp3yrE35d5","type":"User","alternateId":"web@okta.com","displayName":"Developer Free","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Java/11.0.19","os":"Unknown","browser":"UNKNOWN"},"zone":"OFF_NETWORK","device":"Unknown","id":"capfx6SYTRNSWSMAOWNS","ipAddress":"34.202.149.224","geographicalContext":{"city":"Ashburn","state":"Virginia","country":"United States","postalCode":"20149","geolocation":{"lat":39.0469,"lon":-77.4903}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsF6rJgAWPTR282mSDMs0rzA"},"displayMessage":"Brand was created","eventType":"system.brand.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxNbs2IKJWqWx3TDGU36AAAAEE","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf","requestUri":"/api/internal/orgs","url":"/api/internal/orgs?"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxNbs2IKJWqWx3TDGU36AAAAEE","detail":{"requestApiTokenId":"00T1596qn2A3qlzpq5d7"}},"uuid":"f1aecf52-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[{"ip":"34.202.149.224","geographicalContext":{"city":"Ashburn","state":"Virginia","country":"United States","postalCode":"20149","geolocation":{"lat":39.0469,"lon":-77.4903}},"version":"V4","source":null}]},"target":[{"id":"bnda65adp9OBUXHVz5d7","type":"Brand","alternateId":null,"displayName":"bnda65adp9OBUXHVz5d7","detailEntry":{"removePoweredByOkta":"false","brandId":"bnda65adp9OBUXHVz5d7"}}]},"emitted_at":1687974341859} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trspQRD5Y1CRjqnuy8mw5iEUQ"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f1b55f03-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65adpcdlL2iue5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"OktaSignOn"}}]},"emitted_at":1687974341859} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trspQRD5Y1CRjqnuy8mw5iEUQ"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f1bb7984-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65adpcdlL2iue5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"OktaSignOn"}},{"id":"0pra65adpda3WSCrJ5d7","type":"PolicyRule","alternateId":"00pa65adpcdlL2iue5d7","displayName":"Default Rule","detailEntry":null}]},"emitted_at":1687974341859} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs0TlhJY7uQzGeczepOhCiGw"},"displayMessage":"Bootstrap universal directory user profile","eventType":"directory.user_profile.bootstrap","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"cvd.user_profile_bootstrapped","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f1cc1b60-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"otya65adpkOaHlmwo5d7","type":"Schema","alternateId":"user","displayName":"User","detailEntry":null}]},"emitted_at":1687974341860} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsLMaUD5oNRaqqg5rnVsxkNQ"},"displayMessage":"Update universal directory mappings","eventType":"directory.mapping.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"attributesModified":"","attributesAdded":"{Attribute : login,Expression : user.email}","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf","attributesDeleted":""}},"legacyEventType":"cvd.mappings_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f1de43d4-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"prma65adppeINWNBN5d7","type":"ProfileMapping","alternateId":"unknown","displayName":"otya65adpkOaHlmwo5d72otya65adpkOaHlmwo5d7","detailEntry":{"targetProfile":"otya65adpkOaHlmwo5d7","direction":"Okta to App","sourceProfile":"otya65adpkOaHlmwo5d7"}}]},"emitted_at":1687974341860} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"A ThreatInsight configuration was updated","eventType":"security.threat.configuration.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"security.threat.configuration.update","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f1f43cda-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":null},"emitted_at":1687974341860} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsBy-zvvMSSU2rS-zeLoL4iw"},"displayMessage":"MFA factor enabled","eventType":"system.mfa.factor.activate","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f2070193-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00oa65adon5tfl0a05d7","type":"MFA Factor","alternateId":null,"displayName":null,"detailEntry":{"factorType":"PASSWORD_AS_FACTOR"}}]},"emitted_at":1687974341861} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs9zteQq18RgWxuKfBvuA5XA"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:40Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f20ec9c4-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65adpu5ZCmPaK5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"group rule default policy","detailEntry":{"policyType":"group_rule"}}]},"emitted_at":1687974341861} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs0efT00mKQHqIZmCpJu-CzA"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:41Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f27bbc87-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65e9ip7UdKkka5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"OAuthAuthzPolicy"}},{"id":"0pra65e9iqWJbin9V5d7","type":"PolicyRule","alternateId":"00pa65e9ip7UdKkka5d7","displayName":"Default Policy Rule","detailEntry":null}]},"emitted_at":1687974341861} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs0efT00mKQHqIZmCpJu-CzA"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:41Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f273f454-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65e9ip7UdKkka5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"OAuthAuthzPolicy"}}]},"emitted_at":1687974341862} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs0efT00mKQHqIZmCpJu-CzA"},"displayMessage":"Custom Authorization Server token signing key rolled over","eventType":"app.oauth2.as.key.rollover","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:41Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authorizationServer":"ausa65adpvhWi5CMk5d7","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf","kid":"XfQr9p3JwOGPdmYU3vBGecm4cuVZVHvycCN4DuJrkWQ","defaultAuthorizationServer":"true"}},"legacyEventType":"app.oauth2.as.key.rollover.legacy","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f26fae90-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"ausa65adpvhWi5CMk5d7","type":"AuthorizationServer","alternateId":null,"displayName":"default","detailEntry":null}]},"emitted_at":1687974341862} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs0efT00mKQHqIZmCpJu-CzA"},"displayMessage":"Authorization server is created.","eventType":"oauth2.as.created","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:41Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"api.oauth2.as.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f270c001-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"ausa65adpvhWi5CMk5d7","type":"AuthorizationServerEntity","alternateId":"unknown","displayName":"default","detailEntry":{"authorizationserverdescription":"Default Authorization Server for your Applications"}}]},"emitted_at":1687974341862} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsg-LN0-C3QvGNrTAqFnJNMg"},"displayMessage":"Update application","eventType":"application.lifecycle.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:42Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.generic.config.app_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f2d06c5d-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"0oaa65adoxfVQdKKA5d7","type":"AppInstance","alternateId":"Okta Admin Console","displayName":"Okta Admin Console","detailEntry":null}]},"emitted_at":1687974341863} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsHZLPJvGeRcO9huIw_timaw"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:42Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f2f7a37c-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65e9jp7O8BP0s5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"OktaMfaEnroll"}}]},"emitted_at":1687974341863} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsHZLPJvGeRcO9huIw_timaw"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:42Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f2fc857d-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65e9jp7O8BP0s5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"OktaMfaEnroll"}},{"id":"0pra65e9jqg1cpnPr5d7","type":"PolicyRule","alternateId":"00pa65e9jp7O8BP0s5d7","displayName":"Default Rule","detailEntry":null}]},"emitted_at":1687974341863} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trshbwpZRvaRLCblYCxCa1Vfg"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:42Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f332feeb-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65e9jvVs7Emde5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"Password"}}]},"emitted_at":1687974341863} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trshbwpZRvaRLCblYCxCa1Vfg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:42Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f33792cc-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65e9jvVs7Emde5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"Password"}},{"id":"0pra65e9jwKKLR16z5d7","type":"PolicyRule","alternateId":"00pa65e9jvVs7Emde5d7","displayName":"Default Rule","detailEntry":null}]},"emitted_at":1687974341864} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsOyIuUz1-QSGPqT8DLkvW9Q"},"displayMessage":"Network zone create","eventType":"zone.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:44Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"zoneData":"{\"type\":\"IP\",\"gateways\":[],\"proxies\":[]}","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"zone.create","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f41e48a9-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"nzoa65e9keckT6yEt5d7","type":"NetworkZoneEntity","alternateId":"unknown","displayName":"BlockedIpZone","detailEntry":null}]},"emitted_at":1687974341864} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsOyIuUz1-QSGPqT8DLkvW9Q"},"displayMessage":"Network zone create","eventType":"zone.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:44Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"zoneData":"{\"type\":\"IP\",\"gateways\":[],\"proxies\":[]}","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"zone.create","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f41d3738-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"nzoa65e9kdPIYigIu5d7","type":"NetworkZoneEntity","alternateId":"unknown","displayName":"LegacyIpZone","detailEntry":null}]},"emitted_at":1687974341864} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsXGSMOvStTPqd33ldAyQYzQ"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:44Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f456e4eb-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65e9kgRHu8Wpl5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Idp Discovery Policy","detailEntry":{"policyType":"IdpDiscovery"}}]},"emitted_at":1687974341865} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsXGSMOvStTPqd33ldAyQYzQ"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:44Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f45ab57e-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00pa65e9kgRHu8Wpl5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Idp Discovery Policy","detailEntry":{"policyType":"IdpDiscovery"}},{"id":"0pra65e9khVrNR5RG5d7","type":"PolicyRule","alternateId":"00pa65e9kgRHu8Wpl5d7","displayName":"Default Rule","detailEntry":null}]},"emitted_at":1687974341865} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsHbdv_gpyRuGvpGc9Mp0gyA"},"displayMessage":"Update application","eventType":"application.lifecycle.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:45Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.generic.config.app_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f48fcf4c-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"0oaa65e9knCbOow6Y5d7","type":"AppInstance","alternateId":"Okta Browser Plugin","displayName":"Okta Browser Plugin","detailEntry":null}]},"emitted_at":1687974341865} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsHbdv_gpyRuGvpGc9Mp0gyA"},"displayMessage":"Administrator consent granted.","eventType":"app.oauth2.admin.consent.grant","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:45Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.oauth2.admin.consent.grant_success","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f49acbcf-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"oag159d7fuimYAdzU5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.enduser.dashboard.manage","detailEntry":{"publicclientapp":"okta.ee074f99-1b5b-513e-8ea6-f8beeab8dbb9"}},{"id":"oag159d7fvkgZFA105d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.internal.enduser.read","detailEntry":{"publicclientapp":"okta.ee074f99-1b5b-513e-8ea6-f8beeab8dbb9"}},{"id":"oag159d7fwiIEmTid5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.internal.enduser.manage","detailEntry":{"publicclientapp":"okta.ee074f99-1b5b-513e-8ea6-f8beeab8dbb9"}},{"id":"oag159d7fxa0c2IrR5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.users.read.self","detailEntry":{"publicclientapp":"okta.ee074f99-1b5b-513e-8ea6-f8beeab8dbb9"}},{"id":"oag159d7fyUxXwWVc5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.enduser.dashboard.read","detailEntry":{"publicclientapp":"okta.ee074f99-1b5b-513e-8ea6-f8beeab8dbb9"}}]},"emitted_at":1687974341865} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trstdTiNxAmQgGbSU9CRk_zHA"},"displayMessage":"Update application","eventType":"application.lifecycle.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:45Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.generic.config.app_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f4b8b414-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":null}]},"emitted_at":1687974341866} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trstdTiNxAmQgGbSU9CRk_zHA"},"displayMessage":"Administrator consent granted.","eventType":"app.oauth2.admin.consent.grant","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:45Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.oauth2.admin.consent.grant_success","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f4c3d7aa-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"oag159d7fzWElso1O5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.enduser.dashboard.manage","detailEntry":{"publicclientapp":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26"}},{"id":"oag159d7g0GfzWPrZ5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.internal.enduser.read","detailEntry":{"publicclientapp":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26"}},{"id":"oag159d7g1d3zCiPg5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.internal.enduser.manage","detailEntry":{"publicclientapp":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26"}},{"id":"oag159d7g2YYwbklX5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.users.manage.self","detailEntry":{"publicclientapp":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26"}},{"id":"oag159d7g3V3mkrso5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.users.read.self","detailEntry":{"publicclientapp":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26"}},{"id":"oag159d7g4vmvv36p5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.enduser.dashboard.read","detailEntry":{"publicclientapp":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26"}}]},"emitted_at":1687974341866} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":"34.202.149.224","geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsG8dDGSGgSqmGSCQGdMZiTA"},"displayMessage":"Create okta user","eventType":"user.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:45Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"core.user.config.user_creation.success","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f506ad30-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"placeholder@okta.com","displayName":"Placeholder Admin","detailEntry":null}]},"emitted_at":1687974341866} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsG8dDGSGgSqmGSCQGdMZiTA"},"displayMessage":"Activate Okta user","eventType":"user.lifecycle.activate","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:46Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"core.user.config.user_activated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f5266a39-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"placeholder@okta.com","displayName":"Placeholder Admin","detailEntry":null}]},"emitted_at":1687974341867} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsG8dDGSGgSqmGSCQGdMZiTA"},"displayMessage":"Add user to application membership","eventType":"application.user_membership.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:46Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"appname":"saasure","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.generic.provision.assign_user_to_app","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f52b4c3a-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"0uaa65e9m588OBEHu5d7","type":"AppUser","alternateId":"unknown","displayName":"Placeholder Admin","detailEntry":null},{"id":"0oaa65adoxfVQdKKA5d7","type":"AppInstance","alternateId":"Okta Admin Console","displayName":"Okta Admin Console","detailEntry":null},{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"placeholder@okta.com","displayName":"Placeholder Admin","detailEntry":null}]},"emitted_at":1687974341867} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsapI5_zsKRcqWCTDutG7x1w"},"displayMessage":"Org Authorization Server token signing key rolled over","eventType":"app.oauth2.key.rollover","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:46Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf","kid":"BufyoxzYUBl2C0zPhvTS8wEIVBZpAs-wnfH-Zszdt7c"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f554cd42-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"00oa65adon5tfl0a05d7","type":"Org","alternateId":null,"displayName":null,"detailEntry":null}]},"emitted_at":1687974341867} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsqYLyXJH1SDmqNbn15yyFiQ"},"displayMessage":"Update application","eventType":"application.lifecycle.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:46Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.generic.config.app_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f5754da8-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"0oaa65e9mdDSZM97T5d7","type":"AppInstance","alternateId":"Okta ISV Portal App","displayName":"Okta ISV Portal App","detailEntry":null}]},"emitted_at":1687974341867} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsqYLyXJH1SDmqNbn15yyFiQ"},"displayMessage":"Administrator consent granted.","eventType":"app.oauth2.admin.consent.grant","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:46Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.oauth2.admin.consent.grant_success","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f587eb49-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"oag159d7g9nsywL975d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.apps.manage","detailEntry":{"publicclientapp":"okta.9305de5a-67d7-49a9-8dc2-f149ae5aadfa"}}]},"emitted_at":1687974341868} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsqYLyXJH1SDmqNbn15yyFiQ"},"displayMessage":"Add user to application membership","eventType":"application.user_membership.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:46Z","securityContext":{"asNumber":14618,"asOrg":"amazon technologies inc.","isp":"amazon.com inc.","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"appname":"okta_isv_portal","dtHash":"9daa13f3139775f20a0c7b5af644d4bbf9e1660c387c459c926934e1ddbfd1bf"}},"legacyEventType":"app.generic.provision.assign_user_to_app","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"f593840e-15c5-11ee-b293-a1499fcf9071","version":"0","request":{"ipChain":[]},"target":[{"id":"0uaa65e9mxTXfiUBc5d7","type":"AppUser","alternateId":"placeholder@okta.com","displayName":"Placeholder Admin","detailEntry":null},{"id":"0oaa65e9mdDSZM97T5d7","type":"AppInstance","alternateId":"Okta ISV Portal App","displayName":"Okta ISV Portal App","detailEntry":null},{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"placeholder@okta.com","displayName":"Placeholder Admin","detailEntry":null}]},"emitted_at":1687974341868} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsL9qgNz-mQzeeFI4a0t99Gg"},"displayMessage":"Update universal directory mappings","eventType":"directory.mapping.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:48Z","securityContext":{"asNumber":null,"asOrg":null,"isp":null,"domain":null,"isProxy":null},"severity":"INFO","debugContext":{"debugData":{"attributesModified":"","attributesAdded":"{Attribute : login,Expression : appuser.email},{Attribute : displayName,Expression : appuser.displayName},{Attribute : nickName,Expression : appuser.nickname},{Attribute : firstName,Expression : appuser.firstName},{Attribute : middleName,Expression : appuser.middleName},{Attribute : lastName,Expression : appuser.lastName},{Attribute : email,Expression : appuser.email},{Attribute : profileUrl,Expression : appuser.profile},{Attribute : timezone,Expression : appuser.zoneinfo == null ? \"America/Los_Angeles\" : appuser.zoneinfo},{Attribute : primaryPhone,Expression : appuser.phoneNumber},{Attribute : streetAddress,Expression : appuser.street_address},{Attribute : city,Expression : appuser.locality},{Attribute : state,Expression : appuser.region},{Attribute : zipCode,Expression : appuser.postalCode},{Attribute : countryCode,Expression : appuser.country}","attributesDeleted":""}},"legacyEventType":"cvd.mappings_updated","transaction":{"type":"JOB","id":"doca65cujkpyPnfNo5d7","detail":{}},"uuid":"f64e4807-15c5-11ee-a037-118e56108949","version":"0","request":{"ipChain":[]},"target":[{"id":"prma65ig0nC1Et9Xk5d7","type":"ProfileMapping","alternateId":"unknown","displayName":"otya65icx5eUXQQBM5d72otya65adpkOaHlmwo5d7","detailEntry":{"targetProfile":"otya65adpkOaHlmwo5d7","direction":"IDP to Okta","sourceProfile":"otya65icx5eUXQQBM5d7"}}]},"emitted_at":1687974341868} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsL9qgNz-mQzeeFI4a0t99Gg"},"displayMessage":"Update universal directory mappings","eventType":"directory.mapping.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T15:10:48Z","securityContext":{"asNumber":null,"asOrg":null,"isp":null,"domain":null,"isProxy":null},"severity":"INFO","debugContext":{"debugData":{"attributesModified":"","attributesAdded":"{Attribute : firstName,Expression : user.firstName},{Attribute : lastName,Expression : user.lastName},{Attribute : email,Expression : user.email}","attributesDeleted":""}},"legacyEventType":"cvd.mappings_updated","transaction":{"type":"JOB","id":"doca65cujkpyPnfNo5d7","detail":{}},"uuid":"f65525d9-15c5-11ee-a037-118e56108949","version":"0","request":{"ipChain":[]},"target":[{"id":"prma65ig1637yriOK5d7","type":"ProfileMapping","alternateId":"unknown","displayName":"otya65adpkOaHlmwo5d72otya65icx5eUXQQBM5d7","detailEntry":{"targetProfile":"otya65icx5eUXQQBM5d7","direction":"Okta to IDP","sourceProfile":"otya65adpkOaHlmwo5d7"}}]},"emitted_at":1687974341868} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"Create policy mapping","eventType":"policy.mapping.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:26Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"478fd640-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k79uM67VLqE5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Browser Plugin","detailEntry":{"policyType":"Okta:SignOn","previousPolicy":"false"}},{"id":"0oaa65e9knCbOow6Y5d7","type":"AppInstance","alternateId":"Okta Browser Plugin","displayName":"Okta Browser Plugin","detailEntry":null}]},"emitted_at":1687974341869} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"Create policy mapping","eventType":"policy.mapping.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:26Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"479617d4-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k79xLw5QD2v5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Dashboard","detailEntry":{"policyType":"Okta:SignOn","previousPolicy":"false"}},{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":null}]},"emitted_at":1687974341869} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"Create policy mapping","eventType":"policy.mapping.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:26Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"47828fc6-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k79oKDr6G2H5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Admin Console","detailEntry":{"policyType":"Okta:SignOn","previousPolicy":"false"}},{"id":"0oaa65adoxfVQdKKA5d7","type":"AppInstance","alternateId":"Okta Admin Console","displayName":"Okta Admin Console","detailEntry":null}]},"emitted_at":1687974341869} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsgsWDBk9PSKOxCf1JTlw66A"},"displayMessage":"Update application","eventType":"application.lifecycle.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:27Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"app.generic.config.app_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"481cac1c-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"0oaa67k7abD1ZgGrh5d7","type":"AppInstance","alternateId":"Okta Authenticator","displayName":"Okta Authenticator","detailEntry":null}]},"emitted_at":1687974341870} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsgsWDBk9PSKOxCf1JTlw66A"},"displayMessage":"Update application","eventType":"application.lifecycle.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:27Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"app.generic.config.app_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"48281dd5-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"0oaa67k7abD1ZgGrh5d7","type":"AppInstance","alternateId":"Okta Authenticator","displayName":"Okta Authenticator","detailEntry":null}]},"emitted_at":1687974341870} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsgsWDBk9PSKOxCf1JTlw66A"},"displayMessage":"Administrator consent granted.","eventType":"app.oauth2.admin.consent.grant","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:27Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"app.oauth2.admin.consent.grant_success","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"48316caf-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"oag159oivqIIPmp5M5d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.authenticators.manage.self","detailEntry":{"publicclientapp":"okta.63c081db-1f13-5084-882f-e79e1e5e2da7"}},{"id":"oag159oivrl64Ee375d7","type":"ConsentGrant","alternateId":null,"displayName":"okta.authenticators.read","detailEntry":{"publicclientapp":"okta.63c081db-1f13-5084-882f-e79e1e5e2da7"}}]},"emitted_at":1687974341870} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsVsvqPhsBQ6GY3JzGf1DOwA"},"displayMessage":"Bootstrap application user profile","eventType":"directory.app_user_profile.bootstrap","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:28Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"cvd.appuser_profile_bootstrapped","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"485a9fa8-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"otya67k7bcY620xKb5d7","type":"Schema","alternateId":"okta_authenticator","displayName":"Okta Authenticator User","detailEntry":null},{"id":"0oaa67k7abD1ZgGrh5d7","type":"AppInstance","alternateId":"Okta Authenticator","displayName":"Okta Authenticator","detailEntry":{"appEventIsPersonal":"false"}}]},"emitted_at":1687974341870} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsVsvqPhsBQ6GY3JzGf1DOwA"},"displayMessage":"Update universal directory mappings","eventType":"directory.mapping.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:28Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"attributesModified":"","attributesAdded":"","dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","attributesDeleted":"","threatSuspected":"false"}},"legacyEventType":"cvd.mappings_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"486fd560-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"prma67k7bhm8CPLoB5d7","type":"ProfileMapping","alternateId":"unknown","displayName":"otya65adpkOaHlmwo5d72otya67k7bcY620xKb5d7","detailEntry":{"targetProfile":"otya67k7bcY620xKb5d7","direction":"Okta to App","sourceProfile":"otya65adpkOaHlmwo5d7"}}]},"emitted_at":1687974341871} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsVsvqPhsBQ6GY3JzGf1DOwA"},"displayMessage":"Update universal directory mappings","eventType":"directory.mapping.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:28Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"attributesModified":"","attributesAdded":"","dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","attributesDeleted":"","threatSuspected":"false"}},"legacyEventType":"cvd.mappings_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"486b688e-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"prma67k7bgG6HyNKn5d7","type":"ProfileMapping","alternateId":"unknown","displayName":"otya67k7bcY620xKb5d72otya65adpkOaHlmwo5d7","detailEntry":{"targetProfile":"otya65adpkOaHlmwo5d7","direction":"App to Okta","sourceProfile":"otya67k7bcY620xKb5d7"}}]},"emitted_at":1687974341871} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsOpLGnuQBRsWBultDslNgXQ"},"displayMessage":"User profile linked object is created","eventType":"directory.linked_object.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:28Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"linkedObjectAdded":"users","dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"48501854-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"otya67k7b9lIY2aCi5d7","type":"Schema","alternateId":"okta_device_profile_v1","displayName":"Okta Device Profile","detailEntry":null}]},"emitted_at":1687974341871} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsBAdHUYVZSNyUPg4ZO1AFYA"},"displayMessage":"Update universal directory mappings","eventType":"directory.mapping.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:28Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"attributesModified":"","attributesAdded":"","dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","attributesDeleted":"{Attribute : login,Expression : user.email}","threatSuspected":"false"}},"legacyEventType":"cvd.mappings_updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"48acde6a-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"prma65adppeINWNBN5d7","type":"ProfileMapping","alternateId":"unknown","displayName":"otya65adpkOaHlmwo5d72otya65adpkOaHlmwo5d7","detailEntry":{"targetProfile":"otya65adpkOaHlmwo5d7","direction":"Okta to App","sourceProfile":"otya65adpkOaHlmwo5d7"}}]},"emitted_at":1687974341871} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"unknown"},"displayMessage":"Update policy rule","eventType":"policy.rule.update","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:28Z","securityContext":{"asNumber":null,"asOrg":null,"isp":null,"domain":null,"isProxy":null},"severity":"INFO","debugContext":{"debugData":{}},"legacyEventType":"policy.rule.updated","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"48dec3f2-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7b4yzob1A55d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"Okta:ProfileEnrollment"}},{"id":"rula67k7b5DSyQ2jG5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341872} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"49232019-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7c6I9f53rB5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Password only","detailEntry":{"policyType":"Okta:SignOn"}}]},"emitted_at":1687974341872} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"Create policy mapping","eventType":"policy.mapping.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"48fafe92-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7b4yzob1A55d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"Okta:ProfileEnrollment","previousPolicy":"false"}},{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":null}]},"emitted_at":1687974341872} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Delete policy rule","eventType":"policy.rule.delete","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.deleted","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"4921c087-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k79xLw5QD2v5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Dashboard","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k79yzWEFOUz5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341872} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"49256a0c-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7c86oOPtp85d7","type":"PolicyEntity","alternateId":"unknown","displayName":"One factor access","detailEntry":{"policyType":"Okta:SignOn"}}]},"emitted_at":1687974341872} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"492e43b6-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7caOHkTdny5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on risk context","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7cd0xHyOO85d7","type":"PolicyRule","alternateId":"unknown","displayName":"High risk","detailEntry":null}]},"emitted_at":1687974341873} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"4934fa81-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7cfAPAaiDp5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on network context","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7cgL6kWwhF5d7","type":"PolicyRule","alternateId":"unknown","displayName":"In network","detailEntry":null}]},"emitted_at":1687974341873} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Delete policy","eventType":"policy.lifecycle.delete","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.deleted","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"491f4f82-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k79uM67VLqE5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Browser Plugin","detailEntry":{"policyType":"Okta:SignOn"}}]},"emitted_at":1687974341873} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"49278cee-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7c86oOPtp85d7","type":"PolicyEntity","alternateId":"unknown","displayName":"One factor access","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7c9wlOFrvi5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341873} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"4924cdcb-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7c6I9f53rB5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Password only","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7c7sDaLnFr5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341874} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"4930dbcc-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7cfAPAaiDp5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on network context","detailEntry":{"policyType":"Okta:SignOn"}}]},"emitted_at":1687974341874} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"Create policy mapping","eventType":"policy.mapping.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"4912cc5a-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7b2PPGRaLl5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Classic Migrated","detailEntry":{"policyType":"Okta:SignOn","previousPolicy":"false"}},{"id":"rsta67k79uM67VLqE5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Browser Plugin","detailEntry":{"policyType":"Okta:SignOn","previousPolicy":"true"}},{"id":"0oaa65e9knCbOow6Y5d7","type":"AppInstance","alternateId":"Okta Browser Plugin","displayName":"Okta Browser Plugin","detailEntry":null}]},"emitted_at":1687974341874} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"Create policy mapping","eventType":"policy.mapping.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"491a466e-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7b2PPGRaLl5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Classic Migrated","detailEntry":{"policyType":"Okta:SignOn","previousPolicy":"false"}},{"id":"rsta67k79xLw5QD2v5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Dashboard","detailEntry":{"policyType":"Okta:SignOn","previousPolicy":"true"}},{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":null}]},"emitted_at":1687974341874} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Create policy","eventType":"policy.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.created","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"4928292f-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7caOHkTdny5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on risk context","detailEntry":{"policyType":"Okta:SignOn"}}]},"emitted_at":1687974341875} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"49371d63-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7cfAPAaiDp5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on network context","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7ci65nkQvO5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341875} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"4935e4e2-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7cfAPAaiDp5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on network context","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7chorJvFXu5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Off network","detailEntry":null}]},"emitted_at":1687974341875} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Delete policy rule","eventType":"policy.rule.delete","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.deleted","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"491e8c31-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k79uM67VLqE5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Browser Plugin","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k79vTu8PkuI5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341875} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"492bf9c1-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7caOHkTdny5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on risk context","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7cbhOj03nD5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Low risk","detailEntry":null}]},"emitted_at":1687974341876} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"Create policy mapping","eventType":"policy.mapping.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"48f72e01-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7b4yzob1A55d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"Okta:ProfileEnrollment","previousPolicy":"false"}},{"id":"0oaa65e9knCbOow6Y5d7","type":"AppInstance","alternateId":"Okta Browser Plugin","displayName":"Okta Browser Plugin","detailEntry":null}]},"emitted_at":1687974341876} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":null},"displayMessage":"Create policy mapping","eventType":"policy.mapping.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":null,"transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"48efdafe-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7b4yzob1A55d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Default Policy","detailEntry":{"policyType":"Okta:ProfileEnrollment","previousPolicy":"false"}},{"id":"0oaa65adoxfVQdKKA5d7","type":"AppInstance","alternateId":"Okta Admin Console","displayName":"Okta Admin Console","detailEntry":null}]},"emitted_at":1687974341876} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Delete policy","eventType":"policy.lifecycle.delete","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.deleted","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"49225cc8-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k79xLw5QD2v5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Okta Dashboard","detailEntry":{"policyType":"Okta:SignOn"}}]},"emitted_at":1687974341876} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"492f7c38-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7caOHkTdny5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on risk context","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7cerutwfpB5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341877} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs8I3WbDceQaO1BiZJK3tOLg"},"displayMessage":"Add policy rule","eventType":"policy.rule.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:29Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"policy.rule.added","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"492d0b32-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"rsta67k7caOHkTdny5d7","type":"PolicyEntity","alternateId":"unknown","displayName":"Seamless access based on risk context","detailEntry":{"policyType":"Okta:SignOn"}},{"id":"rula67k7ccRwq3Nek5d7","type":"PolicyRule","alternateId":"unknown","displayName":"Med risk","detailEntry":null}]},"emitted_at":1687974341877} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"placeholder@okta.com","displayName":"Placeholder Admin","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs1knynrpyT4uvhiNirg1_Yg"},"displayMessage":"User update password for Okta","eventType":"user.account.update_password","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:30Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"core.user.config.password_update.success","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"499c6eff-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null}]},"emitted_at":1687974341877} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs1knynrpyT4uvhiNirg1_Yg"},"displayMessage":"Reset factor for user","eventType":"user.mfa.factor.deactivate","outcome":{"result":"SUCCESS","reason":"User reset EMAIL_FACTOR factor"},"published":"2023-06-28T17:00:30Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"core.user.factor.deactivate","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"4997b40c-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null}]},"emitted_at":1687974341877} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trs1knynrpyT4uvhiNirg1_Yg"},"displayMessage":"Activate factor for user","eventType":"user.mfa.factor.activate","outcome":{"result":"SUCCESS","reason":"User set up EMAIL_FACTOR factor"},"published":"2023-06-28T17:00:30Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"dtHash":"10acfcc59d14f0ac4ca7615e95971a8ca689682780ce825c6ac6af5127ee6aa7","threatSuspected":"false"}},"legacyEventType":"core.user.factor.activate","transaction":{"type":null,"id":"unknown","detail":{}},"uuid":"49993aad-15d5-11ee-9810-c922c2b7dda6","version":"0","request":{"ipChain":[]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null}]},"emitted_at":1687974341877} -{"stream":"logs","data":{"actor":{"id":"spra65adoodAYMmER5d7","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":"SOCIAL","credentialProvider":null,"credentialType":"ASSERTION","issuer":{"id":"OIDC","type":null},"interface":"OIDC","authenticationStep":0,"externalSessionId":"idxPlzZVpyQT9eaUCwB5tkNtw"},"displayMessage":"Authenticate user with social login","eventType":"user.authentication.auth_via_social","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:35Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxnMA9nQjNl5EId95NC7wAAC7Q","requestId":"ZJxnMgM02SEJlzJJu8naWQAABYA","dtHash":"9b21b9e5015f3408488786e7e10f91c0db48e97f3eeaec560efcd9c190d90416","requestUri":"/idp/idx/introspect","threatSuspected":"false","url":"/idp/idx/introspect?"}},"legacyEventType":"core.user_auth.idp.social.login_success","transaction":{"type":"WEB","id":"ZJxnMgM02SEJlzJJu8naWQAABYA","detail":{}},"uuid":"4ca6ef4b-15d5-11ee-9a4b-710d97404f02","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"0oaa65icwnbIQth5i5d7","type":"AppInstance","alternateId":"Developer Registration SSO","displayName":"OpenID Connect IdP","detailEntry":null},{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null}]},"emitted_at":1687974341878} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxPlzZVpyQT9eaUCwB5tkNtw"},"displayMessage":"User login to Okta","eventType":"user.session.start","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:35Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxnMA9nQjNl5EId95NC7wAAC7Q","requestId":"ZJxnMgM02SEJlzJJu8naWQAABYA","dtHash":"9b21b9e5015f3408488786e7e10f91c0db48e97f3eeaec560efcd9c190d90416","origin":"https://dev-33855097.okta.com","requestUri":"/idp/idx/introspect","threatSuspected":"false","url":"/idp/idx/introspect?"}},"legacyEventType":"core.user_auth.login_success","transaction":{"type":"WEB","id":"ZJxnMgM02SEJlzJJu8naWQAABYA","detail":{}},"uuid":"4cb87b8b-15d5-11ee-9a4b-710d97404f02","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":null}]},"emitted_at":1687974341878} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxPlzZVpyQT9eaUCwB5tkNtw"},"displayMessage":"Verify user identity","eventType":"user.authentication.verify","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:35Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxnMA9nQjNl5EId95NC7wAAC7Q","requestId":"ZJxnMgM02SEJlzJJu8naWQAABYA","dtHash":"9b21b9e5015f3408488786e7e10f91c0db48e97f3eeaec560efcd9c190d90416","requestUri":"/idp/idx/introspect","threatSuspected":"false","url":"/idp/idx/introspect?"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxnMgM02SEJlzJJu8naWQAABYA","detail":{}},"uuid":"4cc37810-15d5-11ee-9a4b-710d97404f02","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":null},"emitted_at":1687974341878} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxPlzZVpyQT9eaUCwB5tkNtw"},"displayMessage":"Evaluation of sign-on policy","eventType":"policy.evaluate_sign_on","outcome":{"result":"ALLOW","reason":"Sign-on policy evaluation resulted in AUTHENTICATED"},"published":"2023-06-28T17:00:35Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxnMA9nQjNl5EId95NC7wAAC7Q","requestId":"ZJxnMgM02SEJlzJJu8naWQAABYA","authMethodFirstVerificationTime":"2023-06-28T17:00:35.336Z","dtHash":"9b21b9e5015f3408488786e7e10f91c0db48e97f3eeaec560efcd9c190d90416","authMethodFirstType":"SSO_SP_INIT","authMethodFirstEnrollment":"0oaa65icwnbIQth5i5d7","requestUri":"/idp/idx/introspect","threatSuspected":"false","url":"/idp/idx/introspect?"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxnMgM02SEJlzJJu8naWQAABYA","detail":{}},"uuid":"4cb8547a-15d5-11ee-9a4b-710d97404f02","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":{"signOnModeType":"OPENID_CONNECT","signOnModeEvaluationResult":"AUTHENTICATED"}},{"id":"0pra65adpda3WSCrJ5d7","type":"Rule","alternateId":"unknown","displayName":"Default Rule","detailEntry":null},{"id":"rula67k7b3eKaojXn5d7","type":"Rule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341878} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxPlzZVpyQT9eaUCwB5tkNtw"},"displayMessage":"Evaluation of sign-on policy","eventType":"policy.evaluate_sign_on","outcome":{"result":"ALLOW","reason":"Sign-on policy evaluation resulted in AUTHENTICATED"},"published":"2023-06-28T17:00:38Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"redirectUri":"https://dev-33855097-admin.okta.com/admin/sso/callback","authnRequestId":"ZJxnNW7Sm0yWs5HZanbtegAADww","requestId":"ZJxnNW7Sm0yWs5HZanbtegAADww","authMethodFirstVerificationTime":"2023-06-28T17:00:35.336Z","dtHash":"9b21b9e5015f3408488786e7e10f91c0db48e97f3eeaec560efcd9c190d90416","authMethodFirstType":"SSO_SP_INIT","authMethodFirstEnrollment":"0oaa65icwnbIQth5i5d7","requestUri":"/oauth2/v1/authorize","threatSuspected":"false","url":"/oauth2/v1/authorize?response_type=code&response_mode=query&client_id=okta.b58d5b75-07d4-5f25-bf59-368a1261a405&redirect_uri=https%3A%2F%2Fdev-33855097-admin.okta.com%2Fadmin%2Fsso%2Fcallback&scope=openid&state=7aDReRR8YWxXc6v_cEwFaLcOp_5nD3o2&nonce=blxIQEqpcYCbmcUhdUtWTfBEYscsGxpO&code_challenge=hmHCgLVX5wxrxUXRkqO2oo7FdwZUIFoOP_OqCFMSjoo&code_challenge_method=S256"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxnNW7Sm0yWs5HZanbtegAADww","detail":{}},"uuid":"4e411718-15d5-11ee-8bd1-b1062595cad2","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"0oaa65adoxfVQdKKA5d7","type":"AppInstance","alternateId":"Okta Admin Console","displayName":"Okta Admin Console","detailEntry":{"signOnModeType":"OPENID_CONNECT","signOnModeEvaluationResult":"AUTHENTICATED"}},{"id":"rula67k79pvxsWSVq5d7","type":"Rule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341879} -{"stream":"logs","data":{"actor":{"id":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","type":"PublicClientApp","alternateId":"0oaa65adoxfVQdKKA5d7","displayName":"Okta Admin Console","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxPlzZVpyQT9eaUCwB5tkNtw"},"displayMessage":"OIDC authorization code request","eventType":"app.oauth2.authorize.code","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:38Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"redirectUri":"https://dev-33855097-admin.okta.com/admin/sso/callback","grantedScopes":"openid","responseMode":"query","requestUri":"/oauth2/v1/authorize","requestedScopes":"openid","userId":"00ua65e9m11opLyFx5d7","url":"/oauth2/v1/authorize?response_type=code&response_mode=query&client_id=okta.b58d5b75-07d4-5f25-bf59-368a1261a405&redirect_uri=https%3A%2F%2Fdev-33855097-admin.okta.com%2Fadmin%2Fsso%2Fcallback&scope=openid&state=7aDReRR8YWxXc6v_cEwFaLcOp_5nD3o2&nonce=blxIQEqpcYCbmcUhdUtWTfBEYscsGxpO&code_challenge=hmHCgLVX5wxrxUXRkqO2oo7FdwZUIFoOP_OqCFMSjoo&code_challenge_method=S256","responseType":"code","authnRequestId":"ZJxnNW7Sm0yWs5HZanbtegAADww","requestId":"ZJxnNW7Sm0yWs5HZanbtegAADww","dtHash":"9b21b9e5015f3408488786e7e10f91c0db48e97f3eeaec560efcd9c190d90416","state":"7aDReRR8YWxXc6v_cEwFaLcOp_5nD3o2","threatSuspected":"false","grantType":"authorization_code"}},"legacyEventType":"app.oauth2.authorize.code_success","transaction":{"type":"WEB","id":"ZJxnNW7Sm0yWs5HZanbtegAADww","detail":{}},"uuid":"4e50324f-15d5-11ee-8bd1-b1062595cad2","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":null,"displayName":null,"detailEntry":null},{"id":"kdwcjJX6dfsZbeQXZ8aUhg","type":"code","alternateId":null,"displayName":"Authorization Code","detailEntry":null}]},"emitted_at":1687974341879} -{"stream":"logs","data":{"actor":{"id":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","type":"PublicClientApp","alternateId":"0oaa65adoxfVQdKKA5d7","displayName":"Okta Admin Console","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Okta-Integrations","os":"Unknown","browser":"UNKNOWN"},"zone":"null","device":"Unknown","id":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","ipAddress":"54.189.2.171","geographicalContext":{"city":"Boardman","state":"Oregon","country":"United States","postalCode":"97818","geolocation":{"lat":45.8234,"lon":-119.7257}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"unknown"},"displayMessage":"OIDC access token is granted","eventType":"app.oauth2.token.grant.access_token","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:38Z","securityContext":{"asNumber":16509,"asOrg":"amazon.com inc.","isp":"amazon.com inc","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"clientAuthType":"none","redirectUri":"https://dev-33855097-admin.okta.com/admin/sso/callback","grantedScopes":"openid","authCode":"kdwcjJX6dfsZbeQXZ8aUhg","requestId":"ZJxnNhQZPf1OaTNPsbg_eQAADGs","responseTime":"407","dtHash":"4bb3d570e1bf49120b770ff806c3884ec615a4c635d79d47e2f716c4dd18e62d","requestUri":"/oauth2/v1/token","requestedScopes":"","threatSuspected":"false","grantType":"authorization_code","url":"/oauth2/v1/token?"}},"legacyEventType":"app.oauth2.token.grant.access_token_success","transaction":{"type":"WEB","id":"ZJxnNhQZPf1OaTNPsbg_eQAADGs","detail":{}},"uuid":"4ec47876-15d5-11ee-9b7d-3348eeca6465","version":"0","request":{"ipChain":[{"ip":"54.189.2.171","geographicalContext":{"city":"Boardman","state":"Oregon","country":"United States","postalCode":"97818","geolocation":{"lat":45.8234,"lon":-119.7257}},"version":"V4","source":null}]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":null,"displayName":null,"detailEntry":null},{"id":"AT.-WfV3QSKhqV2RkPYs6Bju2D68grMj9aaTMLO-C0-eoY","type":"access_token","alternateId":null,"displayName":"Access Token","detailEntry":{"expires":"2023-06-28T18:00:38.000Z","subject":"00ua65e9m11opLyFx5d7","hash":"ZQFJPFflk82N5_8e5eZ2dw"}}]},"emitted_at":1687974341879} -{"stream":"logs","data":{"actor":{"id":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","type":"PublicClientApp","alternateId":"0oaa65adoxfVQdKKA5d7","displayName":"Okta Admin Console","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Okta-Integrations","os":"Unknown","browser":"UNKNOWN"},"zone":"null","device":"Unknown","id":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","ipAddress":"54.189.2.171","geographicalContext":{"city":"Boardman","state":"Oregon","country":"United States","postalCode":"97818","geolocation":{"lat":45.8234,"lon":-119.7257}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"unknown"},"displayMessage":"OIDC id token is granted","eventType":"app.oauth2.token.grant.id_token","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:38Z","securityContext":{"asNumber":16509,"asOrg":"amazon.com inc.","isp":"amazon.com inc","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"clientAuthType":"none","redirectUri":"https://dev-33855097-admin.okta.com/admin/sso/callback","grantedScopes":"openid","authCode":"kdwcjJX6dfsZbeQXZ8aUhg","requestId":"ZJxnNhQZPf1OaTNPsbg_eQAADGs","responseTime":"405","dtHash":"4bb3d570e1bf49120b770ff806c3884ec615a4c635d79d47e2f716c4dd18e62d","requestUri":"/oauth2/v1/token","requestedScopes":"","threatSuspected":"false","grantType":"authorization_code","url":"/oauth2/v1/token?"}},"legacyEventType":"app.oauth2.token.grant.id_token_success","transaction":{"type":"WEB","id":"ZJxnNhQZPf1OaTNPsbg_eQAADGs","detail":{}},"uuid":"4ec42a54-15d5-11ee-9b7d-3348eeca6465","version":"0","request":{"ipChain":[{"ip":"54.189.2.171","geographicalContext":{"city":"Boardman","state":"Oregon","country":"United States","postalCode":"97818","geolocation":{"lat":45.8234,"lon":-119.7257}},"version":"V4","source":null}]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":null,"displayName":null,"detailEntry":null},{"id":"ID.n4qmgCEY7qHbnryKXajJjwlXIpWf1IMGmJDZgtYUjaE","type":"id_token","alternateId":null,"displayName":"ID Token","detailEntry":{"audience":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","expires":"2023-06-28T18:00:38.000Z","subject":"00ua65e9m11opLyFx5d7","hash":"XVzwSxB1qa-9ZtH4eynVpQ"}}]},"emitted_at":1687974341879} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Okta-Integrations","os":"Unknown","browser":"UNKNOWN"},"zone":"null","device":"Unknown","id":"okta.b58d5b75-07d4-5f25-bf59-368a1261a405","ipAddress":"54.189.2.171","geographicalContext":{"city":"Boardman","state":"Oregon","country":"United States","postalCode":"97818","geolocation":{"lat":45.8234,"lon":-119.7257}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"unknown"},"displayMessage":"User single sign on to app","eventType":"user.authentication.sso","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:38Z","securityContext":{"asNumber":16509,"asOrg":"amazon.com inc.","isp":"amazon.com inc","domain":"amazonaws.com","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"initiationType":"NA","redirectUri":"https://dev-33855097-admin.okta.com/admin/sso/callback","requestId":"ZJxnNhQZPf1OaTNPsbg_eQAADGs","dtHash":"4bb3d570e1bf49120b770ff806c3884ec615a4c635d79d47e2f716c4dd18e62d","signOnMode":"OpenID Connect","requestUri":"/oauth2/v1/token","threatSuspected":"false","url":"/oauth2/v1/token?"}},"legacyEventType":"app.auth.sso","transaction":{"type":"WEB","id":"ZJxnNhQZPf1OaTNPsbg_eQAADGs","detail":{}},"uuid":"4ec45165-15d5-11ee-9b7d-3348eeca6465","version":"0","request":{"ipChain":[{"ip":"54.189.2.171","geographicalContext":{"city":"Boardman","state":"Oregon","country":"United States","postalCode":"97818","geolocation":{"lat":45.8234,"lon":-119.7257}},"version":"V4","source":null}]},"target":[{"id":"0oaa65adoxfVQdKKA5d7","type":"AppInstance","alternateId":"Okta Admin Console","displayName":"Okta Admin Console","detailEntry":{"signOnModeType":"OPENID_CONNECT"}},{"id":"0uaa65e9m588OBEHu5d7","type":"AppUser","alternateId":"unknown","displayName":"Sherif nada","detailEntry":null}]},"emitted_at":1687974341880} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"User accessing Okta admin app","eventType":"user.session.access_admin_app","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:00:38Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxnNrtrAPRWNWOcqksQ5AAADyo","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","requestUri":"/admin/sso/callback","url":"/admin/sso/callback?code=******&state=7aDReRR8YWxXc6v_cEwFaLcOp_5nD3o2"}},"legacyEventType":"app.admin.sso.login.success","transaction":{"type":"WEB","id":"ZJxnNrtrAPRWNWOcqksQ5AAADyo","detail":{}},"uuid":"4ed197be-15d5-11ee-8809-d7aec7422f96","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua65e9m11opLyFx5d7","type":"AppUser","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null}]},"emitted_at":1687974341880} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"Create API token","eventType":"system.api_token.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:05:38Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"concurrencyPercentage":"50","requestId":"ZJxoYgSJ0THbgswl5_LNZQAADoA","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","rateLimitPercentage":"50","requestUri":"/api/internal/tokens","url":"/api/internal/tokens?expand=user"}},"legacyEventType":"api.token.create","transaction":{"type":"WEB","id":"ZJxoYgSJ0THbgswl5_LNZQAADoA","detail":{}},"uuid":"01315a08-15d6-11ee-bceb-81ca998ea143","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00T159py03CikoIKe5d7","type":"Token","alternateId":"unknown","displayName":"Sandbox","detailEntry":null}]},"emitted_at":1687974341880} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"Create okta group","eventType":"group.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:08:11Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxo-5zjIR0nvsZU_bXH_QAADfU","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","requestUri":"/api/v1/groups","url":"/api/v1/groups?"}},"legacyEventType":"group.lifecycle.create","transaction":{"type":"WEB","id":"ZJxo-5zjIR0nvsZU_bXH_QAADfU","detail":{}},"uuid":"5c9d6ea6-15d6-11ee-8bd1-b1062595cad2","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ga67rapdEXY9PVo5d7","type":"UserGroup","alternateId":"unknown","displayName":"test-group-1","detailEntry":null}]},"emitted_at":1687974341881} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"Create okta user","eventType":"user.lifecycle.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:06Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","requestUri":"/api/v1/users","url":"/api/v1/users?activate=true"}},"legacyEventType":"core.user.config.user_creation.success","transaction":{"type":"WEB","id":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U","detail":{}},"uuid":"7d674b29-15d6-11ee-8f12-91efa33480e0","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null}]},"emitted_at":1687974341881} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"Activate factor for user","eventType":"user.mfa.factor.activate","outcome":{"result":"SUCCESS","reason":"User set up EMAIL_FACTOR factor"},"published":"2023-06-28T17:09:06Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","requestUri":"/api/v1/users","url":"/api/v1/users?activate=true"}},"legacyEventType":"core.user.factor.activate","transaction":{"type":"WEB","id":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U","detail":{}},"uuid":"7d65c486-15d6-11ee-8f12-91efa33480e0","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null}]},"emitted_at":1687974341881} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"Add user to group membership","eventType":"group.user_membership.add","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:06Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","requestUri":"/api/v1/users","url":"/api/v1/users?activate=true"}},"legacyEventType":"core.user_group_member.user_add","transaction":{"type":"WEB","id":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U","detail":{}},"uuid":"7d672417-15d6-11ee-8f12-91efa33480e0","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},{"id":"00ga67rapdEXY9PVo5d7","type":"UserGroup","alternateId":"unknown","displayName":"test-group-1","detailEntry":null}]},"emitted_at":1687974341882} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"Activate Okta user","eventType":"user.lifecycle.activate","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:06Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","requestUri":"/api/v1/users","url":"/api/v1/users?activate=true"}},"legacyEventType":"core.user.config.user_activated","transaction":{"type":"WEB","id":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U","detail":{}},"uuid":"7d847022-15d6-11ee-8f12-91efa33480e0","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null}]},"emitted_at":1687974341882} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxz5zZFpdRQyK1V_59BbGb1g"},"displayMessage":"Evaluation of sign-on policy","eventType":"policy.evaluate_sign_on","outcome":{"result":"CHALLENGE","reason":"Sign-on policy evaluation resulted in ENROLL"},"published":"2023-06-28T17:09:24Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"redirectUri":"https://dev-33855097.okta.com/enduser/callback","authnRequestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","requestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","dtHash":"b94009bd8cd0aa8ab2a708d5c999589988be2899fe8e311e5ca02c04491b616a","requestUri":"/oauth2/v1/authorize","threatSuspected":"false","url":"/oauth2/v1/authorize?client_id=okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26&code_challenge=l5huxrHnTz3XnPDd4TuJMMOQbZNTN0CMaN6nVolnrQg&code_challenge_method=S256&nonce=Wjhl0s0xiVnTfYlNNwRvJpGvSWOLSXuF10o50QTbOZDIxE0PGEhDe476N9hQfKRz&redirect_uri=https%3A%2F%2Fdev-33855097.okta.com%2Fenduser%2Fcallback&response_type=code&state=p6V5Fr0RphawgVxNOs8r2jMvJJPqc6ttjFIcWefTjKkM5CyUAfLCg6ZzLtn3e0uM&scope=openid+profile+email+okta.users.read.self+okta.users.manage.self+okta.internal.enduser.read+okta.internal.enduser.manage+okta.enduser.dashboard.read+okta.enduser.dashboard.manage"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","detail":{}},"uuid":"87f66352-15d6-11ee-9500-5b3272fdf952","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":{"signOnModeType":"OPENID_CONNECT","signOnModeEvaluationResult":"CHALLENGE"}},{"id":"0pra65adpda3WSCrJ5d7","type":"Rule","alternateId":"unknown","displayName":"Default Rule","detailEntry":null},{"id":"rula67k7b3eKaojXn5d7","type":"Rule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341882} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxz5zZFpdRQyK1V_59BbGb1g"},"displayMessage":"Fired when the user's Okta password is reset","eventType":"user.account.reset_password","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:46Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","requestId":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","dtHash":"b94009bd8cd0aa8ab2a708d5c999589988be2899fe8e311e5ca02c04491b616a","requestUri":"/idp/idx/challenge/answer","threatSuspected":"false","url":"/idp/idx/challenge/answer?"}},"legacyEventType":"core.user.config.user_status.password_reset","transaction":{"type":"WEB","id":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","detail":{}},"uuid":"95665471-15d6-11ee-ac29-216e0139dfde","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null}]},"emitted_at":1687974341882} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxz5zZFpdRQyK1V_59BbGb1g"},"displayMessage":"User update password for Okta","eventType":"user.account.update_password","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:46Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","requestId":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","dtHash":"b94009bd8cd0aa8ab2a708d5c999589988be2899fe8e311e5ca02c04491b616a","requestUri":"/idp/idx/challenge/answer","threatSuspected":"false","url":"/idp/idx/challenge/answer?"}},"legacyEventType":"core.user.config.password_update.success","transaction":{"type":"WEB","id":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","detail":{}},"uuid":"9562d1fe-15d6-11ee-ac29-216e0139dfde","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null}]},"emitted_at":1687974341883} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxz5zZFpdRQyK1V_59BbGb1g"},"displayMessage":"Activate factor for user","eventType":"user.mfa.factor.activate","outcome":{"result":"SUCCESS","reason":"User set up PASSWORD_AS_FACTOR factor"},"published":"2023-06-28T17:09:46Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","requestId":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","dtHash":"b94009bd8cd0aa8ab2a708d5c999589988be2899fe8e311e5ca02c04491b616a","requestUri":"/idp/idx/challenge/answer","threatSuspected":"false","url":"/idp/idx/challenge/answer?"}},"legacyEventType":"core.user.factor.activate","transaction":{"type":"WEB","id":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","detail":{}},"uuid":"9566c9a2-15d6-11ee-ac29-216e0139dfde","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null}]},"emitted_at":1687974341883} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxz5zZFpdRQyK1V_59BbGb1g"},"displayMessage":"User login to Okta","eventType":"user.session.start","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:46Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","requestId":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","dtHash":"b94009bd8cd0aa8ab2a708d5c999589988be2899fe8e311e5ca02c04491b616a","origin":"https://dev-33855097.okta.com","requestUri":"/idp/idx/challenge/answer","threatSuspected":"false","url":"/idp/idx/challenge/answer?"}},"legacyEventType":"core.user_auth.login_success","transaction":{"type":"WEB","id":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","detail":{}},"uuid":"95756fa8-15d6-11ee-ac29-216e0139dfde","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"lae159ppwdjvLJv4r5d7","type":"AuthenticatorEnrollment","alternateId":"unknown","displayName":"Password","detailEntry":null},{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":null}]},"emitted_at":1687974341883} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxz5zZFpdRQyK1V_59BbGb1g"},"displayMessage":"Evaluation of sign-on policy","eventType":"policy.evaluate_sign_on","outcome":{"result":"ALLOW","reason":"Sign-on policy evaluation resulted in AUTHENTICATED"},"published":"2023-06-28T17:09:46Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","requestId":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","authMethodFirstVerificationTime":"2023-06-28T17:09:46.908Z","dtHash":"b94009bd8cd0aa8ab2a708d5c999589988be2899fe8e311e5ca02c04491b616a","authMethodFirstType":"okta_password:password:auta67k7a2sFIKG5f5d7","authMethodFirstEnrollment":"lae159ppwdjvLJv4r5d7","requestUri":"/idp/idx/challenge/answer","threatSuspected":"false","url":"/idp/idx/challenge/answer?"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxpWpzjIR0nvsZU_bXMFgAADUg","detail":{}},"uuid":"95754897-15d6-11ee-ac29-216e0139dfde","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":{"signOnModeType":"OPENID_CONNECT","signOnModeEvaluationResult":"AUTHENTICATED"}},{"id":"0pra65adpda3WSCrJ5d7","type":"Rule","alternateId":"unknown","displayName":"Default Rule","detailEntry":null},{"id":"rula67k7b3eKaojXn5d7","type":"Rule","alternateId":"unknown","displayName":"Catch-all Rule","detailEntry":null}]},"emitted_at":1687974341883} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxz5zZFpdRQyK1V_59BbGb1g"},"displayMessage":"Verify user identity","eventType":"user.authentication.verify","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:50Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"authnRequestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","requestId":"ZJxpXdMS_hEOdUq2kuCkIAAADOA","dtHash":"b94009bd8cd0aa8ab2a708d5c999589988be2899fe8e311e5ca02c04491b616a","requestUri":"/idp/idx/skip","threatSuspected":"false","url":"/idp/idx/skip?"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxpXdMS_hEOdUq2kuCkIAAADOA","detail":{}},"uuid":"976fb87b-15d6-11ee-9eaf-b91961435c97","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":null},"emitted_at":1687974341884} -{"stream":"logs","data":{"actor":{"id":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","type":"PublicClientApp","alternateId":"0oaa65e9l9OO7WnUi5d7","displayName":"Okta Dashboard","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"idxz5zZFpdRQyK1V_59BbGb1g"},"displayMessage":"OIDC authorization code request","eventType":"app.oauth2.authorize.code","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:50Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"redirectUri":"https://dev-33855097.okta.com/enduser/callback","grantedScopes":"openid, profile, email, okta.users.read.self, okta.users.manage.self, okta.internal.enduser.read, okta.internal.enduser.manage, okta.enduser.dashboard.read, okta.enduser.dashboard.manage","responseMode":"query","requestUri":"/login/token/redirect","requestedScopes":"openid, profile, email, okta.users.read.self, okta.users.manage.self, okta.internal.enduser.read, okta.internal.enduser.manage, okta.enduser.dashboard.read, okta.enduser.dashboard.manage","userId":"00ua67q26u6ozRG5T5d7","url":"/login/token/redirect?stateToken=02.id.QkpU5lPEbO5BxuZPoy_VYTS-DIImlpOmMvlitInC","responseType":"code","authnRequestId":"ZJxpQ5zjIR0nvsZU_bXLLQAADUg","requestId":"ZJxpXm8gTiKzUr7sEzq9RwAAAnE","dtHash":"b94009bd8cd0aa8ab2a708d5c999589988be2899fe8e311e5ca02c04491b616a","state":"p6V5Fr0RphawgVxNOs8r2jMvJJPqc6ttjFIcWefTjKkM5CyUAfLCg6ZzLtn3e0uM","threatSuspected":"false","grantType":"authorization_code"}},"legacyEventType":"app.oauth2.authorize.code_success","transaction":{"type":"WEB","id":"ZJxpXm8gTiKzUr7sEzq9RwAAAnE","detail":{}},"uuid":"97d29955-15d6-11ee-9cdf-4584c76be0a6","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":null,"displayName":null,"detailEntry":null},{"id":"clfSVuVkZIYutqIiIg1R8g","type":"code","alternateId":null,"displayName":"Authorization Code","detailEntry":null}]},"emitted_at":1687974341884} -{"stream":"logs","data":{"actor":{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"unknown"},"displayMessage":"User single sign on to app","eventType":"user.authentication.sso","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:52Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"initiationType":"NA","redirectUri":"https://dev-33855097.okta.com/enduser/callback","requestId":"ZJxpX90Kxoie1BdGxh-9kgAAAEA","dtHash":"1fb541e6679bd3c23b60f744494acf958509855ef589847959170f752b98550e","signOnMode":"OpenID Connect","requestUri":"/oauth2/v1/token","threatSuspected":"false","url":"/oauth2/v1/token?"}},"legacyEventType":"app.auth.sso","transaction":{"type":"WEB","id":"ZJxpX90Kxoie1BdGxh-9kgAAAEA","detail":{}},"uuid":"98aaf79d-15d6-11ee-9247-addfd94b48e5","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"0oaa65e9l9OO7WnUi5d7","type":"AppInstance","alternateId":"Okta Dashboard","displayName":"Okta Dashboard","detailEntry":{"signOnModeType":"OPENID_CONNECT"}},{"id":"0uaa67nrx5MksUfnu5d7","type":"AppUser","alternateId":"integration-test+1@daxtarity.com","displayName":"integration test1","detailEntry":null}]},"emitted_at":1687974341884} -{"stream":"logs","data":{"actor":{"id":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","type":"PublicClientApp","alternateId":"0oaa65e9l9OO7WnUi5d7","displayName":"Okta Dashboard","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"unknown"},"displayMessage":"OIDC id token is granted","eventType":"app.oauth2.token.grant.id_token","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:52Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"clientAuthType":"none","redirectUri":"https://dev-33855097.okta.com/enduser/callback","grantedScopes":"openid, profile, email, okta.users.read.self, okta.users.manage.self, okta.internal.enduser.read, okta.internal.enduser.manage, okta.enduser.dashboard.read, okta.enduser.dashboard.manage","authCode":"clfSVuVkZIYutqIiIg1R8g","requestId":"ZJxpX90Kxoie1BdGxh-9kgAAAEA","responseTime":"419","dtHash":"1fb541e6679bd3c23b60f744494acf958509855ef589847959170f752b98550e","requestUri":"/oauth2/v1/token","requestedScopes":"","threatSuspected":"false","grantType":"authorization_code","url":"/oauth2/v1/token?"}},"legacyEventType":"app.oauth2.token.grant.id_token_success","transaction":{"type":"WEB","id":"ZJxpX90Kxoie1BdGxh-9kgAAAEA","detail":{}},"uuid":"98aad08c-15d6-11ee-9247-addfd94b48e5","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":null,"displayName":null,"detailEntry":null},{"id":"ID.a3SCrYn3t1S2GXvKp5Z7rUGotH6pSKI3WFQ2kTFN3zk","type":"id_token","alternateId":null,"displayName":"ID Token","detailEntry":{"audience":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","expires":"2023-06-28T18:09:52.000Z","subject":"00ua67q26u6ozRG5T5d7","hash":"YKR-p5_EqeRwJta2d1ykbQ"}}]},"emitted_at":1687974341884} -{"stream":"logs","data":{"actor":{"id":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","type":"PublicClientApp","alternateId":"0oaa65e9l9OO7WnUi5d7","displayName":"Okta Dashboard","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15","os":"Mac OS X","browser":"SAFARI"},"zone":"null","device":"Computer","id":"okta.2b1959c8-bcc0-56eb-a589-cfcfb7422f26","ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"unknown"},"displayMessage":"OIDC access token is granted","eventType":"app.oauth2.token.grant.access_token","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:09:52Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"clientAuthType":"none","redirectUri":"https://dev-33855097.okta.com/enduser/callback","grantedScopes":"openid, profile, email, okta.users.read.self, okta.users.manage.self, okta.internal.enduser.read, okta.internal.enduser.manage, okta.enduser.dashboard.read, okta.enduser.dashboard.manage","authCode":"clfSVuVkZIYutqIiIg1R8g","requestId":"ZJxpX90Kxoie1BdGxh-9kgAAAEA","responseTime":"421","dtHash":"1fb541e6679bd3c23b60f744494acf958509855ef589847959170f752b98550e","requestUri":"/oauth2/v1/token","requestedScopes":"","threatSuspected":"false","grantType":"authorization_code","url":"/oauth2/v1/token?"}},"legacyEventType":"app.oauth2.token.grant.access_token_success","transaction":{"type":"WEB","id":"ZJxpX90Kxoie1BdGxh-9kgAAAEA","detail":{}},"uuid":"98ab1eae-15d6-11ee-9247-addfd94b48e5","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"00ua67q26u6ozRG5T5d7","type":"User","alternateId":null,"displayName":null,"detailEntry":null},{"id":"AT.M0HSRBZ5ujSj4vEdfkk4OollCr1KuNZE_kUlwWyij0g","type":"access_token","alternateId":null,"displayName":"Access Token","detailEntry":{"expires":"2023-06-28T18:09:51.000Z","subject":"00ua67q26u6ozRG5T5d7","hash":"tEw6BNhWVaaeVsUKRh8wYw"}}]},"emitted_at":1687974341885} -{"stream":"logs","data":{"actor":{"id":"unknown","type":"SystemPrincipal","alternateId":"system@okta.com","displayName":"Okta System","detailEntry":null},"client":{"userAgent":null,"zone":null,"device":null,"id":null,"ipAddress":null,"geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsj5c_HKi0QUONgLplV8VJog"},"displayMessage":"Email delivery","eventType":"system.email.delivery","outcome":{"result":"SUCCESS","reason":"delivered"},"published":"2023-06-28T17:10:05Z","securityContext":{"asNumber":null,"asOrg":null,"isp":null,"domain":null,"isProxy":null},"severity":"INFO","debugContext":{"debugData":{"appContextName":"None","emailProvider":"sendgrid","category":"email.welcome","userId":"","emailRequestId":"ZJxpMiG2_rzg4ODYnbBwZQAAC6U"}},"legacyEventType":null,"transaction":{"type":"JOB","id":"ok12-jobecs02c.auw2-ok12.internal16879036778761687903702785","detail":{}},"uuid":"a07c9da5-15d6-11ee-be29-6f36b9971d20","version":"0","request":{"ipChain":[]},"target":[{"id":"integration-test+1@daxtarity.com","type":"email","alternateId":null,"displayName":"integration-test+1@daxtarity.com","detailEntry":null}]},"emitted_at":1687974341885} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"python-requests/2.31.0","os":"Unknown","browser":"UNKNOWN"},"zone":"null","device":"Unknown","id":null,"ipAddress":"107.115.45.34","geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsW1Uz2Px-TsSAosoTWzzHFA"},"displayMessage":"This API token has made too many requests","eventType":"system.operation.rate_limit.violation","outcome":null,"published":"2023-06-28T17:18:42Z","securityContext":{"asNumber":null,"asOrg":null,"isp":null,"domain":null,"isProxy":null},"severity":"WARN","debugContext":{"debugData":{"operationRateLimitSubtype":"ssws_token","operationRateLimitTimeUnit":"MINUTES","operationRateLimitScopeType":"token","operationRateLimitSecondsToReset":"36","requestId":"ZJxrcjnBHN2CsYaHyf_WUAAAASg","dtHash":"ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f","operationRateLimitThreshold":"10","operationRateLimitTimeSpan":"1","requestUri":"/api/v1/logs","operationRateLimitType":"web_request","url":"/api/v1/logs?limit=200&since=2023-06-28T17%3A10%3A05Z"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxrcjnBHN2CsYaHyf_WUAAAASg","detail":{"requestApiTokenId":"00T159py03CikoIKe5d7"}},"uuid":"d485e2ca-15d7-11ee-b270-0500528109a7","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":null,"version":"V4","source":null}]},"target":[{"id":"b192d91c-b242-36da-9332-d97a5579f865","type":"Bucket UUID","alternateId":null,"displayName":null,"detailEntry":null},{"id":"00T159py03CikoIKe5d7","type":"Token","alternateId":"unknown","displayName":"Sandbox","detailEntry":null}]},"emitted_at":1687974341885} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"python-requests/2.31.0","os":"Unknown","browser":"UNKNOWN"},"zone":"null","device":"Unknown","id":null,"ipAddress":"107.115.45.34","geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsH33-aJLRQOevPwEvkXjKow"},"displayMessage":"This API token has made too many requests","eventType":"system.operation.rate_limit.violation","outcome":null,"published":"2023-06-28T17:19:42Z","securityContext":{"asNumber":null,"asOrg":null,"isp":null,"domain":null,"isProxy":null},"severity":"WARN","debugContext":{"debugData":{"operationRateLimitSubtype":"ssws_token","operationRateLimitTimeUnit":"MINUTES","operationRateLimitScopeType":"token","operationRateLimitSecondsToReset":"41","requestId":"ZJxrrq5enWGYMHaiHXuD1AAADKY","dtHash":"ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f","operationRateLimitThreshold":"10","operationRateLimitTimeSpan":"1","requestUri":"/api/v1/logs","operationRateLimitType":"web_request","url":"/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00&after=1687972205543_1"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxrrq5enWGYMHaiHXuD1AAADKY","detail":{"requestApiTokenId":"00T159py03CikoIKe5d7"}},"uuid":"f849ec40-15d7-11ee-b43b-b18cf4dad6cb","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":null,"version":"V4","source":null}]},"target":[{"id":"b192d91c-b242-36da-9332-d97a5579f865","type":"Bucket UUID","alternateId":null,"displayName":null,"detailEntry":null},{"id":"00T159py03CikoIKe5d7","type":"Token","alternateId":"unknown","displayName":"Sandbox","detailEntry":null}]},"emitted_at":1687974341885} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"python-requests/2.31.0","os":"Unknown","browser":"UNKNOWN"},"zone":"null","device":"Unknown","id":null,"ipAddress":"107.115.45.34","geographicalContext":null},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"trsGJgqKQYtT7W-5bW2RGApYw"},"displayMessage":"This API token has made too many requests","eventType":"system.operation.rate_limit.violation","outcome":null,"published":"2023-06-28T17:20:47Z","securityContext":{"asNumber":null,"asOrg":null,"isp":null,"domain":null,"isProxy":null},"severity":"WARN","debugContext":{"debugData":{"operationRateLimitSubtype":"ssws_token","operationRateLimitTimeUnit":"MINUTES","operationRateLimitScopeType":"token","operationRateLimitSecondsToReset":"41","requestId":"ZJxr7yUlXOCBVe_VfeMAfQAAB5w","dtHash":"ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f","operationRateLimitThreshold":"10","operationRateLimitTimeSpan":"1","requestUri":"/api/v1/logs","operationRateLimitType":"web_request","url":"/api/v1/logs?limit=200&since=2023-06-28T17%3A10%3A05Z&after=1687972782382_1"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxr7yUlXOCBVe_VfeMAfQAAB5w","detail":{"requestApiTokenId":"00T159py03CikoIKe5d7"}},"uuid":"1ef5fa17-15d8-11ee-982b-0159ee9d4860","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":null,"version":"V4","source":null}]},"target":[{"id":"b192d91c-b242-36da-9332-d97a5579f865","type":"Bucket UUID","alternateId":null,"displayName":null,"detailEntry":null},{"id":"00T159py03CikoIKe5d7","type":"Token","alternateId":"unknown","displayName":"Sandbox","detailEntry":null}]},"emitted_at":1687974341886} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"Role created","eventType":"iam.role.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:39:34Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxwVpPigb6USF3bbX6xIgAACCE","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","requestUri":"/api/v1/iam/roles","url":"/api/v1/iam/roles?"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxwVpPigb6USF3bbX6xIgAACCE","detail":{}},"uuid":"bec5ed30-15da-11ee-b89b-8136c54c7096","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"cr0a688qm6u91Un0m5d7","type":"Role","alternateId":"unknown","displayName":"user-viewer-role","detailEntry":null},{"id":"okta.users.read","type":"Permission","alternateId":"unknown","displayName":"okta.users.read","detailEntry":null}]},"emitted_at":1687974341886} -{"stream":"logs","data":{"actor":{"id":"00ua65e9m11opLyFx5d7","type":"User","alternateId":"integration-test@daxtarity.com","displayName":"Sherif nada","detailEntry":null},"client":{"userAgent":{"rawUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","os":"Mac OS X","browser":"CHROME"},"zone":"null","device":"Computer","id":null,"ipAddress":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}}},"device":null,"authenticationContext":{"authenticationProvider":null,"credentialProvider":null,"credentialType":null,"issuer":null,"interface":null,"authenticationStep":0,"externalSessionId":"102CALG0t2iSlySu5Bvt2htFg"},"displayMessage":"Resource set created","eventType":"iam.resourceset.create","outcome":{"result":"SUCCESS","reason":null},"published":"2023-06-28T17:39:57Z","securityContext":{"asNumber":7018,"asOrg":"at&t mobility llc","isp":"att services inc","domain":".","isProxy":false},"severity":"INFO","debugContext":{"debugData":{"requestId":"ZJxwbQSL5n4Ain-wBU92KQAABfA","dtHash":"e6d02235b0ae0a1ddbf68aa2d6acfb39e4e570ca150b932e7180031a755782fd","requestUri":"/api/v1/iam/resource-sets","url":"/api/v1/iam/resource-sets?"}},"legacyEventType":null,"transaction":{"type":"WEB","id":"ZJxwbQSL5n4Ain-wBU92KQAABfA","detail":{}},"uuid":"cce5f39c-15da-11ee-b171-b9afd2e39b0a","version":"0","request":{"ipChain":[{"ip":"107.115.45.34","geographicalContext":{"city":"Las Vegas","state":"Nevada","country":"United States","postalCode":"89110","geolocation":{"lat":36.1724,"lon":-115.0677}},"version":"V4","source":null}]},"target":[{"id":"iama688hw0VLl1JrA5d7","type":"ResourceSet","alternateId":"unknown","displayName":"test-resource-set1","detailEntry":null},{"id":"00ga67rapdEXY9PVo5d7","type":"UserGroup","alternateId":null,"displayName":"All users within group test-group-1","detailEntry":null}]},"emitted_at":1687974341886} +{"stream": "users", "data": {"id": "00ua65e9m11opLyFx5d7", "status": "ACTIVE", "created": "2023-06-28T15:10:45.000Z", "activated": null, "statusChanged": "2023-06-28T17:00:30.000Z", "lastLogin": "2023-06-28T17:00:38.000Z", "lastUpdated": "2023-06-28T17:00:30.000Z", "passwordChanged": "2023-06-28T17:00:30.000Z", "type": {"id": "otya65adpkOaHlmwo5d7"}, "profile": {"firstName": "Sherif", "lastName": "nada", "mobilePhone": null, "secondEmail": null, "login": "integration-test@daxtarity.com", "email": "integration-test@daxtarity.com"}, "credentials": {"password": {}, "provider": {"type": "OKTA", "name": "OKTA"}}, "_links": {"self": {"href": "https://dev-33855097.okta.com/api/v1/users/00ua65e9m11opLyFx5d7"}}}, "emitted_at": 1715199432227} +{"stream": "users", "data": {"id": "00ua67q26u6ozRG5T5d7", "status": "ACTIVE", "created": "2023-06-28T17:09:06.000Z", "activated": "2023-06-28T17:09:06.000Z", "statusChanged": "2023-06-28T17:09:46.000Z", "lastLogin": "2023-06-28T17:09:50.000Z", "lastUpdated": "2023-06-28T17:09:46.000Z", "passwordChanged": "2023-06-28T17:09:46.000Z", "type": {"id": "otya65adpkOaHlmwo5d7"}, "profile": {"firstName": "integration", "lastName": "test1", "mobilePhone": null, "secondEmail": null, "login": "integration-test+1@daxtarity.com", "email": "integration-test+1@daxtarity.com"}, "credentials": {"password": {}, "provider": {"type": "OKTA", "name": "OKTA"}}, "_links": {"self": {"href": "https://dev-33855097.okta.com/api/v1/users/00ua67q26u6ozRG5T5d7"}}}, "emitted_at": 1715199432235} +{"stream": "groups", "data": {"id": "00ga65adpbQSn1nX15d7", "created": "2023-06-28T15:10:40.000Z", "lastUpdated": "2023-06-28T15:10:40.000Z", "lastMembershipUpdated": "2023-06-28T17:09:06.000Z", "objectClass": ["okta:user_group"], "type": "BUILT_IN", "profile": {"name": "Everyone", "description": "All users in your organization"}, "_links": {"logo": [{"name": "medium", "href": "https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-medium.30ce6d4085dff29412984e4c191bc874.png", "type": "image/png"}, {"name": "large", "href": "https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-large.c3cb8cda8ae0add1b4fe928f5844dbe3.png", "type": "image/png"}], "users": {"href": "https://dev-33855097.okta.com/api/v1/groups/00ga65adpbQSn1nX15d7/users"}, "apps": {"href": "https://dev-33855097.okta.com/api/v1/groups/00ga65adpbQSn1nX15d7/apps"}}}, "emitted_at": 1715199433306} +{"stream": "groups", "data": {"id": "00ga65e9kf1YwttUp5d7", "created": "2023-06-28T15:10:44.000Z", "lastUpdated": "2023-06-28T15:10:44.000Z", "lastMembershipUpdated": "2023-06-28T15:10:44.000Z", "objectClass": ["okta:user_group"], "type": "BUILT_IN", "profile": {"name": "Okta Administrators", "description": "Okta manages this group, which contains all administrators in your organization."}, "_links": {"logo": [{"name": "medium", "href": "https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-medium.30ce6d4085dff29412984e4c191bc874.png", "type": "image/png"}, {"name": "large", "href": "https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-large.c3cb8cda8ae0add1b4fe928f5844dbe3.png", "type": "image/png"}], "users": {"href": "https://dev-33855097.okta.com/api/v1/groups/00ga65e9kf1YwttUp5d7/users"}, "apps": {"href": "https://dev-33855097.okta.com/api/v1/groups/00ga65e9kf1YwttUp5d7/apps"}}}, "emitted_at": 1715199433314} +{"stream": "groups", "data": {"id": "00ga67rapdEXY9PVo5d7", "created": "2023-06-28T17:08:11.000Z", "lastUpdated": "2023-06-28T17:08:11.000Z", "lastMembershipUpdated": "2023-06-28T17:09:06.000Z", "objectClass": ["okta:user_group"], "type": "OKTA_GROUP", "profile": {"name": "test-group-1", "description": null}, "_links": {"logo": [{"name": "medium", "href": "https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-medium.30ce6d4085dff29412984e4c191bc874.png", "type": "image/png"}, {"name": "large", "href": "https://ok12static.oktacdn.com/assets/img/logos/groups/odyssey/okta-large.c3cb8cda8ae0add1b4fe928f5844dbe3.png", "type": "image/png"}], "users": {"href": "https://dev-33855097.okta.com/api/v1/groups/00ga67rapdEXY9PVo5d7/users"}, "apps": {"href": "https://dev-33855097.okta.com/api/v1/groups/00ga67rapdEXY9PVo5d7/apps"}}}, "emitted_at": 1715199433319} +{"stream": "group_members", "data": {"id": "00ua65e9m11opLyFx5d7", "status": "ACTIVE", "created": "2023-06-28T15:10:45.000Z", "activated": null, "statusChanged": "2023-06-28T17:00:30.000Z", "lastLogin": "2023-06-28T17:00:38.000Z", "lastUpdated": "2023-06-28T17:00:30.000Z", "passwordChanged": "2023-06-28T17:00:30.000Z", "type": {"id": "otya65adpkOaHlmwo5d7"}, "profile": {"firstName": "Sherif", "lastName": "nada", "mobilePhone": null, "secondEmail": null, "login": "integration-test@daxtarity.com", "email": "integration-test@daxtarity.com"}, "credentials": {"password": {}, "provider": {"type": "OKTA", "name": "OKTA"}}, "_links": {"self": {"href": "https://dev-33855097.okta.com/api/v1/users/00ua65e9m11opLyFx5d7"}}, "groupId": "00ga65adpbQSn1nX15d7"}, "emitted_at": 1715199434360} +{"stream": "group_members", "data": {"id": "00ua67q26u6ozRG5T5d7", "status": "ACTIVE", "created": "2023-06-28T17:09:06.000Z", "activated": "2023-06-28T17:09:06.000Z", "statusChanged": "2023-06-28T17:09:46.000Z", "lastLogin": "2023-06-28T17:09:50.000Z", "lastUpdated": "2023-06-28T17:09:46.000Z", "passwordChanged": "2023-06-28T17:09:46.000Z", "type": {"id": "otya65adpkOaHlmwo5d7"}, "profile": {"firstName": "integration", "lastName": "test1", "mobilePhone": null, "secondEmail": null, "login": "integration-test+1@daxtarity.com", "email": "integration-test+1@daxtarity.com"}, "credentials": {"password": {}, "provider": {"type": "OKTA", "name": "OKTA"}}, "_links": {"self": {"href": "https://dev-33855097.okta.com/api/v1/users/00ua67q26u6ozRG5T5d7"}}, "groupId": "00ga65adpbQSn1nX15d7"}, "emitted_at": 1715199434363} +{"stream": "group_members", "data": {"id": "00ua67q26u6ozRG5T5d7", "status": "ACTIVE", "created": "2023-06-28T17:09:06.000Z", "activated": "2023-06-28T17:09:06.000Z", "statusChanged": "2023-06-28T17:09:46.000Z", "lastLogin": "2023-06-28T17:09:50.000Z", "lastUpdated": "2023-06-28T17:09:46.000Z", "passwordChanged": "2023-06-28T17:09:46.000Z", "type": {"id": "otya65adpkOaHlmwo5d7"}, "profile": {"firstName": "integration", "lastName": "test1", "mobilePhone": null, "secondEmail": null, "login": "integration-test+1@daxtarity.com", "email": "integration-test+1@daxtarity.com"}, "credentials": {"password": {}, "provider": {"type": "OKTA", "name": "OKTA"}}, "_links": {"self": {"href": "https://dev-33855097.okta.com/api/v1/users/00ua67q26u6ozRG5T5d7"}}, "groupId": "00ga67rapdEXY9PVo5d7"}, "emitted_at": 1715199434954} +{"stream": "resource_sets", "data": {"id": "iama688hw0VLl1JrA5d7", "label": "test-resource-set1", "description": "test-resource-set1", "created": "2023-06-28T17:39:57.000Z", "lastUpdated": "2023-06-28T17:39:57.000Z", "_links": {"bindings": {"href": "https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7/bindings"}, "self": {"href": "https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7"}, "resources": {"href": "https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7/resources"}}}, "emitted_at": 1715199435969} +{"stream": "custom_roles", "data": {"id": "cr0a688qm6u91Un0m5d7", "label": "user-viewer-role", "description": "user-viewer-role", "created": "2023-06-28T17:39:34.000Z", "lastUpdated": "2023-06-28T17:39:34.000Z", "_links": {"permissions": {"href": "https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7/permissions"}, "self": {"href": "https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7"}}}, "emitted_at": 1715199436945} +{"stream": "user_role_assignments", "data": {"id": "ra1a65e9m3XfWHtTL5d7", "label": "Super Administrator", "type": "SUPER_ADMIN", "status": "ACTIVE", "created": "2023-06-28T15:10:46.000Z", "lastUpdated": "2023-06-28T15:10:46.000Z", "assignmentType": "USER", "_links": {"assignee": {"href": "https://dev-33855097.okta.com/api/v1/users/00ua65e9m11opLyFx5d7"}}, "userId": "00ua65e9m11opLyFx5d7"}, "emitted_at": 1715199438123} +{"stream": "user_role_assignments", "data": {"id": "irba68bi9rIDU5CrC5d7", "label": "user-viewer-role", "type": "CUSTOM", "status": "ACTIVE", "created": "2023-06-28T17:45:26.000Z", "lastUpdated": "2023-06-28T17:45:26.000Z", "assignmentType": "GROUP", "resource-set": "iama688hw0VLl1JrA5d7", "role": "cr0a688qm6u91Un0m5d7", "_links": {"role": {"href": "https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7"}, "resource-set": {"href": "https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7"}, "permissions": {"href": "https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7/permissions"}, "member": {"href": "https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7/bindings/cr0a688qm6u91Un0m5d7/members/irba68bi9rIDU5CrC5d7"}, "assignee": {"href": "https://dev-33855097.okta.com/api/v1/groups/00ga67rapdEXY9PVo5d7"}}, "userId": "00ua67q26u6ozRG5T5d7"}, "emitted_at": 1715199438486} +{"stream": "group_role_assignments", "data": {"id": "irba68bi9rIDU5CrC5d7", "label": "user-viewer-role", "type": "CUSTOM", "status": "ACTIVE", "created": "2023-06-28T17:45:26.000Z", "lastUpdated": "2023-06-28T17:45:26.000Z", "assignmentType": "GROUP", "resource-set": "iama688hw0VLl1JrA5d7", "role": "cr0a688qm6u91Un0m5d7", "_links": {"role": {"href": "https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7"}, "resource-set": {"href": "https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7"}, "permissions": {"href": "https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7/permissions"}, "member": {"href": "https://dev-33855097.okta.com/api/v1/iam/resource-sets/iama688hw0VLl1JrA5d7/bindings/cr0a688qm6u91Un0m5d7/members/irba68bi9rIDU5CrC5d7"}, "assignee": {"href": "https://dev-33855097.okta.com/api/v1/groups/00ga67rapdEXY9PVo5d7"}}, "groupId": "00ga67rapdEXY9PVo5d7"}, "emitted_at": 1715199440287} +{"stream": "permissions", "data": {"label": "okta.users.read", "created": "2023-06-28T17:39:34.000Z", "lastUpdated": "2023-06-28T17:39:34.000Z", "conditions": null, "_links": {"role": {"href": "https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7"}, "self": {"href": "https://dev-33855097-admin.okta.com/api/v1/iam/roles/cr0a688qm6u91Un0m5d7/permissions/okta.users.read"}}}, "emitted_at": 1715199441481} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.252.86.80", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsc_hFoZtbQJSi42UrVIM-yg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-03-07T10:08:26Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "47", "requestId": "bb609b57094713a8401363659fdfb798", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "bb609b57094713a8401363659fdfb798", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "a3a99cea-dc6a-11ee-986b-d9266ebb9a87", "version": "0", "request": {"ipChain": [{"ip": "20.252.86.80", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442829} +{"stream": "logs", "data": {"actor": {"id": "spra65adoodAYMmER5d7", "type": "SystemPrincipal", "alternateId": "system@okta.com", "displayName": "Okta System", "detailEntry": null}, "client": {"userAgent": null, "zone": null, "device": null, "id": null, "ipAddress": null, "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsWA1SNN88RGW52YeJgXu_XQ"}, "displayMessage": "Custom Authorization Server token signing key rolled over", "eventType": "app.oauth2.as.key.rollover", "outcome": {"result": "SUCCESS", "reason": null}, "published": "2024-03-26T06:43:02Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "INFO", "debugContext": {"debugData": {"authorizationServer": "ausa65adpvhWi5CMk5d7", "kid": "ftUapx6tpNBeMAvhW6xWoFvk13r83x-8618bx-sOgS4", "defaultAuthorizationServer": "true"}}, "legacyEventType": "app.oauth2.as.key.rollover.legacy", "transaction": {"type": "JOB", "id": "ok12-jobecs05a.auw2-ok12.internal17108878816371710888030852", "detail": {}}, "uuid": "1789b612-eb3c-11ee-b722-1978ce823dfa", "version": "0", "request": {"ipChain": []}, "target": [{"id": "ausa65adpvhWi5CMk5d7", "type": "AuthorizationServer", "alternateId": null, "displayName": "default", "detailEntry": null}]}, "emitted_at": 1715199442837} +{"stream": "logs", "data": {"actor": {"id": "spra65adoodAYMmER5d7", "type": "SystemPrincipal", "alternateId": "system@okta.com", "displayName": "Okta System", "detailEntry": null}, "client": {"userAgent": null, "zone": null, "device": null, "id": null, "ipAddress": null, "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsWA1SNN88RGW52YeJgXu_XQ"}, "displayMessage": "Org Authorization Server token signing key rolled over", "eventType": "app.oauth2.key.rollover", "outcome": {"result": "SUCCESS", "reason": null}, "published": "2024-03-26T06:43:02Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "INFO", "debugContext": {"debugData": {"kid": "_EdjQX-eJtVIo-ibuTL8-8BFXRXiGj8kfAr5snlf1nA"}}, "legacyEventType": null, "transaction": {"type": "JOB", "id": "ok12-jobecs05a.auw2-ok12.internal17108878816371710888030852", "detail": {}}, "uuid": "178437d1-eb3c-11ee-b722-1978ce823dfa", "version": "0", "request": {"ipChain": []}, "target": [{"id": "00oa65adon5tfl0a05d7", "type": "Org", "alternateId": null, "displayName": null, "detailEntry": null}]}, "emitted_at": 1715199442841} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "99.120.79.204", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trs3LWAayjRSPyl-F38bwqfVg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-03-26T22:52:23Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "8", "requestId": "339b2759a6ddd34917c31a7de8f73e8e", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "339b2759a6ddd34917c31a7de8f73e8e", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "82732bf9-ebc3-11ee-b94e-b3b150505fff", "version": "0", "request": {"ipChain": [{"ip": "99.120.79.204", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442845} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "99.120.79.204", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trso-0fkkp1S2ylhsW7UohY3w"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-03-27T22:20:06Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "14", "requestId": "7ac94cd59b65b977b05734e32cbbf376", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "7ac94cd59b65b977b05734e32cbbf376", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "2a82655f-ec88-11ee-aed2-2db3fa6a5365", "version": "0", "request": {"ipChain": [{"ip": "99.120.79.204", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442852} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.253.19.96", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsTgHDoRKZTVe14Xauqt3gBw"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-10T19:59:17Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "35", "requestId": "d6bc058e6e8d0b00d1e3364937c4b9bc", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "d6bc058e6e8d0b00d1e3364937c4b9bc", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "d00e29c7-f774-11ee-b57b-f557c2488aea", "version": "0", "request": {"ipChain": [{"ip": "20.253.19.96", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442856} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "172.171.170.80", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trs5S3UyNawRtqZoWRVGqh9Ww"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-10T21:35:30Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "35", "requestId": "f637253e43f689355b008f4558abe119", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "f637253e43f689355b008f4558abe119", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "40f0dc04-f782-11ee-b146-8557ac142833", "version": "0", "request": {"ipChain": [{"ip": "172.171.170.80", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442859} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.96.230.136", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsxlwZ5GjqS6uh1LmwEz-EVQ"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-10T21:58:15Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "34", "requestId": "5e1e445706c8cf0a63dff10366259e71", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "5e1e445706c8cf0a63dff10366259e71", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "6ec74c7d-f785-11ee-bc7a-91748b4dd42b", "version": "0", "request": {"ipChain": [{"ip": "20.96.230.136", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442865} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.12.101.112", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trskfnXZRS8RzqJ1Ea5B5nPJw"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-11T00:10:50Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "31", "requestId": "986196b352e42a47a268e18a185b7276", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "986196b352e42a47a268e18a185b7276", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "f41568a3-f797-11ee-bce0-d1f3b1b8aeb6", "version": "0", "request": {"ipChain": [{"ip": "20.12.101.112", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442871} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "52.177.249.200", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trs7y9wdH4_Sf-4q0906lt5hg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-11T06:52:38Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "35", "requestId": "a7ba861f5c6c70766d2431b04df35697", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "a7ba861f5c6c70766d2431b04df35697", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "1602465a-f7d0-11ee-8fdd-97b04c603fc5", "version": "0", "request": {"ipChain": [{"ip": "52.177.249.200", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442877} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.1.231.96", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsrpubYSXlQRGACcYJrJh1Tw"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-13T02:33:28Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "37", "requestId": "980c0e54a69c603f89fa23a031282bdf", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "980c0e54a69c603f89fa23a031282bdf", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "363dea9a-f93e-11ee-af8d-e747eb0310b5", "version": "0", "request": {"ipChain": [{"ip": "20.1.231.96", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442895} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.252.125.48", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trs2oQDAR_XTNy26ryDbhqYug"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-13T07:24:11Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "49", "requestId": "b82f7490d6c273474dc8799dcf0b02be", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "b82f7490d6c273474dc8799dcf0b02be", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "d310d522-f966-11ee-8186-a141b49f97b6", "version": "0", "request": {"ipChain": [{"ip": "20.252.125.48", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442901} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "4.153.57.64", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trs9-Z97QtsTtGgsIu-AnaAdg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-16T05:21:39Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "36", "requestId": "3ee41395a2d4522aa0f1f450605c1c56", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "3ee41395a2d4522aa0f1f450605c1c56", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "344082ae-fbb1-11ee-8570-41955432040c", "version": "0", "request": {"ipChain": [{"ip": "4.153.57.64", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442907} +{"stream": "logs", "data": {"actor": {"id": "spra65adoodAYMmER5d7", "type": "SystemPrincipal", "alternateId": "supportuser@okta.com", "displayName": "supportuser@okta.com", "detailEntry": null}, "client": {"userAgent": null, "zone": null, "device": null, "id": null, "ipAddress": null, "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trso9RDWhj_QPSc2WvupZtnpg"}, "displayMessage": "Update application", "eventType": "application.lifecycle.update", "outcome": {"result": "SUCCESS", "reason": null}, "published": "2024-04-17T17:18:37Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "INFO", "debugContext": {"debugData": {}}, "legacyEventType": "app.generic.config.app_updated", "transaction": {"type": "JOB", "id": "moigi6ryhfORFddfp5d7", "detail": {}}, "uuid": "87557d34-fcde-11ee-8522-fbc31e1a456f", "version": "0", "request": {"ipChain": []}, "target": [{"id": "0oaa65icwnbIQth5i5d7", "type": "AppInstance", "alternateId": "Developer Registration SSO", "displayName": "OpenID Connect IdP", "detailEntry": null}]}, "emitted_at": 1715199442926} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.12.101.112", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsbdxksTHVSTqo-xOyCDnNdg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-18T18:03:15Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "33", "requestId": "fc17e6179935da7040eedf36f614883e", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "fc17e6179935da7040eedf36f614883e", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "eddae7f7-fdad-11ee-82bc-fb0f08c8d356", "version": "0", "request": {"ipChain": [{"ip": "20.12.101.112", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442935} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "52.247.86.176", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trstiA5OnwJRbylPUl0pQBmvg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-19T23:40:53Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "34", "requestId": "77ee2782912f6cfa5d3fea4e20abade6", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "77ee2782912f6cfa5d3fea4e20abade6", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "43255431-fea6-11ee-bd49-9ba74b69f64c", "version": "0", "request": {"ipChain": [{"ip": "52.247.86.176", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442942} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.3.66.64", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsgRLj0MkGTtCf9Q3kBO14Lw"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-20T00:22:45Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "42", "requestId": "df33994c3d6481ed3c490a73803dd317", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "df33994c3d6481ed3c490a73803dd317", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "1be11666-feac-11ee-9126-a3207ed05a38", "version": "0", "request": {"ipChain": [{"ip": "20.3.66.64", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442951} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "52.247.86.176", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsred0O2ixT3-divTetn0vtw"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-20T01:38:53Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "34", "requestId": "081b733cf5f33ff7c02b12de00807bd4", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "081b733cf5f33ff7c02b12de00807bd4", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "bec0234b-feb6-11ee-9ac6-8b0a78d1be19", "version": "0", "request": {"ipChain": [{"ip": "52.247.86.176", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442957} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "52.177.29.16", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsTvXC_-VzTe2ISfsimoVYdA"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-20T12:14:25Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "35", "requestId": "df679de4b7476e069875879a06532741", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "df679de4b7476e069875879a06532741", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "87970e69-ff0f-11ee-9b84-99188e0e2457", "version": "0", "request": {"ipChain": [{"ip": "52.177.29.16", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442962} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "4.236.218.80", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsn-KMDphQQjGYp-9MThnwLg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-20T21:39:05Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "35", "requestId": "b9e406fd1c1ddabf7d7d897805a8ff9e", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "b9e406fd1c1ddabf7d7d897805a8ff9e", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "696b6acd-ff5e-11ee-b880-41e719e68eca", "version": "0", "request": {"ipChain": [{"ip": "4.236.218.80", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442970} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "52.177.90.16", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trs5CukrSTHTHCtB3EiSCGVJg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-23T23:41:01Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "35", "requestId": "ab793c794a63cc45280f02c7697bc078", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "ab793c794a63cc45280f02c7697bc078", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "f192b613-01ca-11ef-9126-a3207ed05a38", "version": "0", "request": {"ipChain": [{"ip": "52.177.90.16", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442977} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "52.188.131.128", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trs6I3bhQgRTs-6ZjOtlXm3Pg"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-24T00:05:02Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "36", "requestId": "3c745edf608e29e4e9e65c43e119bb65", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "3c745edf608e29e4e9e65c43e119bb65", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "4c33f971-01ce-11ef-9d69-d76889697758", "version": "0", "request": {"ipChain": [{"ip": "52.188.131.128", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442988} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.62.38.48", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsAPtmddQQTzyHgg4stKabTA"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-24T00:43:05Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "36", "requestId": "aba3d0ec971a1c8a6f1647a8c07de0b1", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "aba3d0ec971a1c8a6f1647a8c07de0b1", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "9cd5f7cf-01d3-11ef-9d69-d76889697758", "version": "0", "request": {"ipChain": [{"ip": "20.62.38.48", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199442996} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.253.33.208", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsNpZFDF16R4q3LbMBJ5FUwA"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-24T02:59:30Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "36", "requestId": "6a085e644970b1e4173563eeb788f060", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "6a085e644970b1e4173563eeb788f060", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "abad9388-01e6-11ef-af05-b9cdb0e889e3", "version": "0", "request": {"ipChain": [{"ip": "20.253.33.208", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199443006} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "52.247.86.176", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsFIv-MEcARzSMPS23f39xHw"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-04-28T18:31:11Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "34", "requestId": "10d86d68ebad07e06bac7cf0906d6f40", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?limit=200&since=2023-06-21T20%3A49%3A13%2B00%3A00"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "10d86d68ebad07e06bac7cf0906d6f40", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "7cc3aa16-058d-11ef-ab7c-fb0f7c911b6f", "version": "0", "request": {"ipChain": [{"ip": "52.247.86.176", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199443012} +{"stream": "logs", "data": {"actor": {"id": "00ua65e9m11opLyFx5d7", "type": "User", "alternateId": "integration-test@daxtarity.com", "displayName": "Sherif nada", "detailEntry": null}, "client": {"userAgent": {"rawUserAgent": "python-requests/2.31.0", "os": "Unknown", "browser": "UNKNOWN"}, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "20.253.20.32", "geographicalContext": null}, "device": null, "authenticationContext": {"authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsO_eywBoyTOemXzWvEX3aOQ"}, "displayMessage": "This API token has made too many requests", "eventType": "system.operation.rate_limit.violation", "outcome": null, "published": "2024-05-08T19:14:47Z", "securityContext": {"asNumber": null, "asOrg": null, "isp": null, "domain": null, "isProxy": null}, "severity": "WARN", "debugContext": {"debugData": {"operationRateLimitSubtype": "ssws_token", "operationRateLimitTimeUnit": "MINUTES", "operationRateLimitScopeType": "token", "operationRateLimitSecondsToReset": "34", "requestId": "151f639ca6627e2fa8d6d185a14ef82f", "dtHash": "ca286cee3ce2cc6a85e97ad17242ef2ca198cee2fdfa4991c0f65df26f7a444f", "operationRateLimitThreshold": "10", "operationRateLimitTimeSpan": "1", "requestUri": "/api/v1/logs", "operationRateLimitType": "web_request", "url": "/api/v1/logs?since=2023-06-21T20%3A49%3A13Z&limit=200"}}, "legacyEventType": null, "transaction": {"type": "WEB", "id": "151f639ca6627e2fa8d6d185a14ef82f", "detail": {"requestApiTokenId": "00T159py03CikoIKe5d7"}}, "uuid": "3c1f4d73-0d6f-11ef-915a-73217922f4b7", "version": "0", "request": {"ipChain": [{"ip": "20.253.20.32", "geographicalContext": null, "version": "V4", "source": null}]}, "target": [{"id": "b192d91c-b242-36da-9332-d97a5579f865", "type": "Bucket UUID", "alternateId": null, "displayName": null, "detailEntry": null}, {"id": "00T159py03CikoIKe5d7", "type": "Token", "alternateId": "unknown", "displayName": "Sandbox", "detailEntry": null}]}, "emitted_at": 1715199443020} \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-okta/main.py b/airbyte-integrations/connectors/source-okta/main.py index 488cb6ca1b6f..7b372b3507e7 100644 --- a/airbyte-integrations/connectors/source-okta/main.py +++ b/airbyte-integrations/connectors/source-okta/main.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. # from source_okta.run import run diff --git a/airbyte-integrations/connectors/source-okta/metadata.yaml b/airbyte-integrations/connectors/source-okta/metadata.yaml index a351f52e7c55..57ff4adb845f 100644 --- a/airbyte-integrations/connectors/source-okta/metadata.yaml +++ b/airbyte-integrations/connectors/source-okta/metadata.yaml @@ -2,30 +2,35 @@ data: ab_internal: ql: 200 sl: 100 + registries: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: true + packageName: airbyte-source-okta + connectorBuildOptions: + # Please update to the latest version of the connector base image. + # https://hub.docker.com/r/airbyte/python-connector-base + # Please use the full address with sha256 hash to guarantee build reproducibility. + baseImage: docker.io/airbyte/python-connector-base:1.0.0@sha256:dd17e347fbda94f7c3abff539be298a65af2d7fc27a307d89297df1081a45c27 connectorSubtype: api connectorType: source definitionId: 1d4fdb25-64fc-4569-92da-fcdca79a8372 - dockerImageTag: 0.1.16 + dockerImageTag: 0.2.0 dockerRepository: airbyte/source-okta - documentationUrl: https://docs.airbyte.com/integrations/sources/okta githubIssueLabel: source-okta - icon: okta.svg + icon: icon.svg license: MIT name: Okta - remoteRegistries: - pypi: - enabled: true - packageName: airbyte-source-okta - registries: - cloud: - enabled: true - oss: - enabled: true releaseStage: alpha supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/okta tags: - language:python - - cdk:python + - cdk:low-code connectorTestSuitesOptions: - suite: unitTests - suite: acceptanceTests diff --git a/airbyte-integrations/connectors/source-okta/poetry.lock b/airbyte-integrations/connectors/source-okta/poetry.lock new file mode 100644 index 000000000000..0b26964e1888 --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/poetry.lock @@ -0,0 +1,1314 @@ +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. + +[[package]] +name = "airbyte-cdk" +version = "0.88.0" +description = "A framework for writing Airbyte Connectors." +optional = false +python-versions = "<4.0,>=3.9" +files = [ + {file = "airbyte_cdk-0.88.0-py3-none-any.whl", hash = "sha256:72f9af784f731be99c95d7a0ef11579b17354ce1eeb59cf984fa5a53a3ba5fff"}, + {file = "airbyte_cdk-0.88.0.tar.gz", hash = "sha256:6a6a6330e954e4327cb21b8908da4ec27ae7b8fd9fae19073496bcc5246b7a45"}, +] + +[package.dependencies] +airbyte-protocol-models = ">=0.9.0,<1.0" +backoff = "*" +cachetools = "*" +cryptography = ">=42.0.5,<43.0.0" +Deprecated = ">=1.2,<1.3" +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,<0.3" +jsonschema = ">=3.2.0,<3.3.0" +langchain_core = "0.1.42" +pendulum = "<3.0.0" +pydantic = ">=1.10.8,<2.0.0" +pyjwt = ">=2.8.0,<3.0.0" +pyrate-limiter = ">=3.1.0,<3.2.0" +python-dateutil = "*" +PyYAML = ">=6.0.1,<7.0.0" +requests = "*" +requests_cache = "*" +wcmatch = "8.4" + +[package.extras] +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.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] +vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] + +[[package]] +name = "airbyte-protocol-models" +version = "0.9.0" +description = "Declares the Airbyte Protocol." +optional = false +python-versions = ">=3.8" +files = [ + {file = "airbyte_protocol_models-0.9.0-py3-none-any.whl", hash = "sha256:e972e140b5efd1edad5a338bcae8fdee9fc12545caf2c321e0f61b151c163a9b"}, + {file = "airbyte_protocol_models-0.9.0.tar.gz", hash = "sha256:40b69c33df23fe82d7078e84beb123bd604480e4d73cb277a890fcc92aedc8d2"}, +] + +[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 = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[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.4" +description = "Bash style brace expander." +optional = false +python-versions = ">=3.8" +files = [ + {file = "bracex-2.4-py3-none-any.whl", hash = "sha256:efdc71eff95eaff5e0f8cfebe7d01adf2c8637c8c92edaf63ef348c241a82418"}, + {file = "bracex-2.4.tar.gz", hash = "sha256:a27eaf1df42cf561fed58b7a8f3fdf129d1ea16a81e1fadd1d17989bc6384beb"}, +] + +[[package]] +name = "cachetools" +version = "5.3.3" +description = "Extensible memoizing collections and decorators" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, + {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, +] + +[[package]] +name = "cattrs" +version = "23.2.3" +description = "Composable complex class support for attrs and dataclasses." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, + {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, +] + +[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)"] +orjson = ["orjson (>=3.9.2)"] +pyyaml = ["pyyaml (>=6.0)"] +tomlkit = ["tomlkit (>=0.11.8)"] +ujson = ["ujson (>=5.7.0)"] + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "cffi" +version = "1.16.0" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +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.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[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 = "cryptography" +version = "42.0.7" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477"}, + {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7"}, + {file = "cryptography-42.0.7-cp37-abi3-win32.whl", hash = "sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b"}, + {file = "cryptography-42.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678"}, + {file = "cryptography-42.0.7-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886"}, + {file = "cryptography-42.0.7-cp39-abi3-win32.whl", hash = "sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda"}, + {file = "cryptography-42.0.7-cp39-abi3-win_amd64.whl", hash = "sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2954fccea107026512b15afb4aa664a5640cd0af630e2ee3962f2602693f0c82"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:362e7197754c231797ec45ee081f3088a27a47c6c01eff2ac83f60f85a50fe60"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4f698edacf9c9e0371112792558d2f705b5645076cc0aaae02f816a0171770fd"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5482e789294854c28237bba77c4c83be698be740e31a3ae5e879ee5444166582"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e9b2a6309f14c0497f348d08a065d52f3020656f675819fc405fb63bbcd26562"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d8e3098721b84392ee45af2dd554c947c32cc52f862b6a3ae982dbb90f577f14"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c65f96dad14f8528a447414125e1fc8feb2ad5a272b8f68477abbcc1ea7d94b9"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36017400817987670037fbb0324d71489b6ead6231c9604f8fc1f7d008087c68"}, + {file = "cryptography-42.0.7.tar.gz", hash = "sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] +nox = ["nox"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + +[[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.1" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, + {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, +] + +[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.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[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 = "jsonpatch" +version = "1.33" +description = "Apply JSON-Patches (RFC 6902)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, + {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, +] + +[package.dependencies] +jsonpointer = ">=1.9" + +[[package]] +name = "jsonpointer" +version = "2.4" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, + {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, +] + +[[package]] +name = "jsonref" +version = "0.2" +description = "An implementation of JSON Reference for Python" +optional = false +python-versions = "*" +files = [ + {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, + {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, +] + +[[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 = "langchain-core" +version = "0.1.42" +description = "Building applications with LLMs through composability" +optional = false +python-versions = "<4.0,>=3.8.1" +files = [ + {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, + {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, +] + +[package.dependencies] +jsonpatch = ">=1.33,<2.0" +langsmith = ">=0.1.0,<0.2.0" +packaging = ">=23.2,<24.0" +pydantic = ">=1,<3" +PyYAML = ">=5.3" +tenacity = ">=8.1.0,<9.0.0" + +[package.extras] +extended-testing = ["jinja2 (>=3,<4)"] + +[[package]] +name = "langsmith" +version = "0.1.55" +description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." +optional = false +python-versions = "<4.0,>=3.8.1" +files = [ + {file = "langsmith-0.1.55-py3-none-any.whl", hash = "sha256:c198b4019d0e0948fa2c94efcafa0312bd5e7ce36aae8d62a38af2d6b16584fc"}, + {file = "langsmith-0.1.55.tar.gz", hash = "sha256:08b75046471e3c32cb6b526e48ca4570bfe3911d6b0a3f8575ee062da940324c"}, +] + +[package.dependencies] +orjson = ">=3.9.14,<4.0.0" +pydantic = ">=1,<3" +requests = ">=2,<3" + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "orjson" +version = "3.10.3" +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orjson-3.10.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7"}, + {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d"}, + {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7"}, + {file = "orjson-3.10.3-cp310-none-win32.whl", hash = "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109"}, + {file = "orjson-3.10.3-cp310-none-win_amd64.whl", hash = "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b"}, + {file = "orjson-3.10.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16"}, + {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08"}, + {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5"}, + {file = "orjson-3.10.3-cp311-none-win32.whl", hash = "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b"}, + {file = "orjson-3.10.3-cp311-none-win_amd64.whl", hash = "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5"}, + {file = "orjson-3.10.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42"}, + {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069"}, + {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534"}, + {file = "orjson-3.10.3-cp312-none-win32.whl", hash = "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0"}, + {file = "orjson-3.10.3-cp312-none-win_amd64.whl", hash = "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0"}, + {file = "orjson-3.10.3-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754"}, + {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195"}, + {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b"}, + {file = "orjson-3.10.3-cp38-none-win32.whl", hash = "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134"}, + {file = "orjson-3.10.3-cp38-none-win_amd64.whl", hash = "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290"}, + {file = "orjson-3.10.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d"}, + {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25"}, + {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8"}, + {file = "orjson-3.10.3-cp39-none-win32.whl", hash = "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063"}, + {file = "orjson-3.10.3-cp39-none-win_amd64.whl", hash = "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912"}, + {file = "orjson-3.10.3.tar.gz", hash = "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818"}, +] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[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.2.1" +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.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, + {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] + +[[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 = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + +[[package]] +name = "pydantic" +version = "1.10.15" +description = "Data validation and settings management using python type hints" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydantic-1.10.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22ed12ee588b1df028a2aa5d66f07bf8f8b4c8579c2e96d5a9c1f96b77f3bb55"}, + {file = "pydantic-1.10.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:75279d3cac98186b6ebc2597b06bcbc7244744f6b0b44a23e4ef01e5683cc0d2"}, + {file = "pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50f1666a9940d3d68683c9d96e39640f709d7a72ff8702987dab1761036206bb"}, + {file = "pydantic-1.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82790d4753ee5d00739d6cb5cf56bceb186d9d6ce134aca3ba7befb1eedbc2c8"}, + {file = "pydantic-1.10.15-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d207d5b87f6cbefbdb1198154292faee8017d7495a54ae58db06762004500d00"}, + {file = "pydantic-1.10.15-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e49db944fad339b2ccb80128ffd3f8af076f9f287197a480bf1e4ca053a866f0"}, + {file = "pydantic-1.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:d3b5c4cbd0c9cb61bbbb19ce335e1f8ab87a811f6d589ed52b0254cf585d709c"}, + {file = "pydantic-1.10.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c3d5731a120752248844676bf92f25a12f6e45425e63ce22e0849297a093b5b0"}, + {file = "pydantic-1.10.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c365ad9c394f9eeffcb30a82f4246c0006417f03a7c0f8315d6211f25f7cb654"}, + {file = "pydantic-1.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3287e1614393119c67bd4404f46e33ae3be3ed4cd10360b48d0a4459f420c6a3"}, + {file = "pydantic-1.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be51dd2c8596b25fe43c0a4a59c2bee4f18d88efb8031188f9e7ddc6b469cf44"}, + {file = "pydantic-1.10.15-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6a51a1dd4aa7b3f1317f65493a182d3cff708385327c1c82c81e4a9d6d65b2e4"}, + {file = "pydantic-1.10.15-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4e316e54b5775d1eb59187f9290aeb38acf620e10f7fd2f776d97bb788199e53"}, + {file = "pydantic-1.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:0d142fa1b8f2f0ae11ddd5e3e317dcac060b951d605fda26ca9b234b92214986"}, + {file = "pydantic-1.10.15-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7ea210336b891f5ea334f8fc9f8f862b87acd5d4a0cbc9e3e208e7aa1775dabf"}, + {file = "pydantic-1.10.15-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3453685ccd7140715e05f2193d64030101eaad26076fad4e246c1cc97e1bb30d"}, + {file = "pydantic-1.10.15-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bea1f03b8d4e8e86702c918ccfd5d947ac268f0f0cc6ed71782e4b09353b26f"}, + {file = "pydantic-1.10.15-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:005655cabc29081de8243126e036f2065bd7ea5b9dff95fde6d2c642d39755de"}, + {file = "pydantic-1.10.15-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:af9850d98fc21e5bc24ea9e35dd80a29faf6462c608728a110c0a30b595e58b7"}, + {file = "pydantic-1.10.15-cp37-cp37m-win_amd64.whl", hash = "sha256:d31ee5b14a82c9afe2bd26aaa405293d4237d0591527d9129ce36e58f19f95c1"}, + {file = "pydantic-1.10.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5e09c19df304b8123938dc3c53d3d3be6ec74b9d7d0d80f4f4b5432ae16c2022"}, + {file = "pydantic-1.10.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7ac9237cd62947db00a0d16acf2f3e00d1ae9d3bd602b9c415f93e7a9fc10528"}, + {file = "pydantic-1.10.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:584f2d4c98ffec420e02305cf675857bae03c9d617fcfdc34946b1160213a948"}, + {file = "pydantic-1.10.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbc6989fad0c030bd70a0b6f626f98a862224bc2b1e36bfc531ea2facc0a340c"}, + {file = "pydantic-1.10.15-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d573082c6ef99336f2cb5b667b781d2f776d4af311574fb53d908517ba523c22"}, + {file = "pydantic-1.10.15-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6bd7030c9abc80134087d8b6e7aa957e43d35714daa116aced57269a445b8f7b"}, + {file = "pydantic-1.10.15-cp38-cp38-win_amd64.whl", hash = "sha256:3350f527bb04138f8aff932dc828f154847fbdc7a1a44c240fbfff1b57f49a12"}, + {file = "pydantic-1.10.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:51d405b42f1b86703555797270e4970a9f9bd7953f3990142e69d1037f9d9e51"}, + {file = "pydantic-1.10.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a980a77c52723b0dc56640ced396b73a024d4b74f02bcb2d21dbbac1debbe9d0"}, + {file = "pydantic-1.10.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67f1a1fb467d3f49e1708a3f632b11c69fccb4e748a325d5a491ddc7b5d22383"}, + {file = "pydantic-1.10.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:676ed48f2c5bbad835f1a8ed8a6d44c1cd5a21121116d2ac40bd1cd3619746ed"}, + {file = "pydantic-1.10.15-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:92229f73400b80c13afcd050687f4d7e88de9234d74b27e6728aa689abcf58cc"}, + {file = "pydantic-1.10.15-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2746189100c646682eff0bce95efa7d2e203420d8e1c613dc0c6b4c1d9c1fde4"}, + {file = "pydantic-1.10.15-cp39-cp39-win_amd64.whl", hash = "sha256:394f08750bd8eaad714718812e7fab615f873b3cdd0b9d84e76e51ef3b50b6b7"}, + {file = "pydantic-1.10.15-py3-none-any.whl", hash = "sha256:28e552a060ba2740d0d2aabe35162652c1459a0b9069fe0db7f4ee0e18e74d58"}, + {file = "pydantic-1.10.15.tar.gz", hash = "sha256:ca832e124eda231a60a041da4f013e3ff24949d94a01154b137fc2f2a43c3ffb"}, +] + +[package.dependencies] +typing-extensions = ">=4.2.0" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pyjwt" +version = "2.8.0" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, +] + +[package.extras] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] + +[[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.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[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.0" +description = "A persistent cache for python requests" +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests_cache-1.2.0-py3-none-any.whl", hash = "sha256:490324301bf0cb924ff4e6324bd2613453e7e1f847353928b08adb0fdfb7f722"}, + {file = "requests_cache-1.2.0.tar.gz", hash = "sha256:db1c709ca343cc1cd5b6c8b1a5387298eceed02306a6040760db538c885e3838"}, +] + +[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 = "69.5.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[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 = "tenacity" +version = "8.3.0" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tenacity-8.3.0-py3-none-any.whl", hash = "sha256:3649f6443dbc0d9b01b9d8020a9c4ec7a1ff5f6f3c6c8a036ef371f573fe9185"}, + {file = "tenacity-8.3.0.tar.gz", hash = "sha256:953d4e6ad24357bceffbc9707bc74349aca9d245f68eb65419cf0c249a1949a2"}, +] + +[package.extras] +doc = ["reno", "sphinx"] +test = ["pytest", "tornado (>=4.5)", "typeguard"] + +[[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.11.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, +] + +[[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.1" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, +] + +[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 = "25d79195c052c9654e64e6cd73809188b3aa16bd228841f214ff871a895c9c6c" diff --git a/airbyte-integrations/connectors/source-okta/pyproject.toml b/airbyte-integrations/connectors/source-okta/pyproject.toml new file mode 100644 index 000000000000..e2fdddad7306 --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/pyproject.toml @@ -0,0 +1,27 @@ +[build-system] +requires = [ "poetry-core>=1.0.0",] +build-backend = "poetry.core.masonry.api" + +[tool.poetry] +version = "0.2.0" +name = "source-okta" +description = "Source implementation for okta." +authors = [ "Airbyte ",] +license = "MIT" +readme = "README.md" +documentation = "https://docs.airbyte.com/integrations/sources/okta" +homepage = "https://airbyte.com" +repository = "https://github.com/airbytehq/airbyte" +packages = [ { include = "source_okta" }, {include = "main.py"} ] + +[tool.poetry.dependencies] +python = "^3.9,<3.12" +airbyte-cdk = "^0" + +[tool.poetry.scripts] +source-okta = "source_okta.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-okta/requirements.txt b/airbyte-integrations/connectors/source-okta/requirements.txt deleted file mode 100644 index d6e1198b1ab1..000000000000 --- a/airbyte-integrations/connectors/source-okta/requirements.txt +++ /dev/null @@ -1 +0,0 @@ --e . diff --git a/airbyte-integrations/connectors/source-okta/setup.py b/airbyte-integrations/connectors/source-okta/setup.py deleted file mode 100644 index 1d2c69920b88..000000000000 --- a/airbyte-integrations/connectors/source-okta/setup.py +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from setuptools import find_packages, setup - -MAIN_REQUIREMENTS = [ - "airbyte-cdk", - "pendulum==1.2.0", -] - -TEST_REQUIREMENTS = [ - "pytest~=6.1", - "pytest-mock~=3.6.1", - "requests-mock", -] - -setup( - entry_points={ - "console_scripts": [ - "source-okta=source_okta.run:run", - ], - }, - name="source_okta", - description="Source implementation for Okta.", - author="Airbyte", - author_email="contact@airbyte.io", - packages=find_packages(), - install_requires=MAIN_REQUIREMENTS, - package_data={ - "": [ - # Include yaml files in the package (if any) - "*.yml", - "*.yaml", - # Include all json files in the package, up to 4 levels deep - "*.json", - "*/*.json", - "*/*/*.json", - "*/*/*/*.json", - "*/*/*/*/*.json", - ] - }, - extras_require={ - "tests": TEST_REQUIREMENTS, - }, -) diff --git a/airbyte-integrations/connectors/source-okta/source_okta/__init__.py b/airbyte-integrations/connectors/source-okta/source_okta/__init__.py index 7b52aaf00071..6a75f70b0bf0 100644 --- a/airbyte-integrations/connectors/source-okta/source_okta/__init__.py +++ b/airbyte-integrations/connectors/source-okta/source_okta/__init__.py @@ -1,30 +1,8 @@ # -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. # -""" -MIT License -Copyright (c) 2020 Airbyte - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -""" from .source import SourceOkta -__all__ = ["SourceOkta"] +__all__ = ["SourceOkta", "custom_authenticators"] diff --git a/airbyte-integrations/connectors/source-okta/source_okta/authenticator.py b/airbyte-integrations/connectors/source-okta/source_okta/authenticator.py deleted file mode 100644 index b890ac914b6b..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/authenticator.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from typing import Any, Mapping, Tuple - -import requests -from airbyte_cdk.sources.streams.http.auth import Oauth2Authenticator - - -class OktaOauth2Authenticator(Oauth2Authenticator): - def get_refresh_request_body(self) -> Mapping[str, Any]: - return { - "grant_type": "refresh_token", - "refresh_token": self.refresh_token, - } - - def refresh_access_token(self) -> Tuple[str, int]: - try: - response = requests.request( - method="POST", - url=self.token_refresh_endpoint, - data=self.get_refresh_request_body(), - auth=(self.client_id, self.client_secret), - ) - response.raise_for_status() - response_json = response.json() - return response_json["access_token"], response_json["expires_in"] - except Exception as e: - raise Exception(f"Error while refreshing access token: {e}") from e diff --git a/airbyte-integrations/connectors/source-okta/source_okta/config_migration.py b/airbyte-integrations/connectors/source-okta/source_okta/config_migration.py new file mode 100644 index 000000000000..82fcef527e4b --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/source_okta/config_migration.py @@ -0,0 +1,82 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# + + +import logging +from typing import Any, List, Mapping + +from airbyte_cdk.config_observation import create_connector_config_control_message +from airbyte_cdk.entrypoint import AirbyteEntrypoint +from airbyte_cdk.sources import Source +from airbyte_cdk.sources.message import InMemoryMessageRepository, MessageRepository + +logger = logging.getLogger("airbyte") + + +class OktaConfigMigration: + """ + This class stands for migrating the config at runtime, + while providing the backward compatibility when falling back to the previous source version. + """ + + message_repository: MessageRepository = InMemoryMessageRepository() + + @classmethod + def should_migrate(cls, config: Mapping[str, Any]) -> bool: + """ + Uses the presence of the `domain` field to know if the config should be migrated. + Returns: + > True, if the transformation is necessary + > False, otherwise. + > Raises the Exception if the structure could not be migrated. + """ + return "domain" not in config + + @classmethod + def modify(cls, config: Mapping[str, Any]) -> Mapping[str, Any]: + config["domain"] = config["base_url"].split("https://")[1].split(".")[0] + if "credentials" not in config: + if "token" in config: + config["credentials"] = { + "auth_type": "api_token", + "api_token": config["token"], + } + else: + raise ValueError(f"Invalid config. got {config}") + return config + + @classmethod + def modify_and_save(cls, config_path: str, source: Source, config: Mapping[str, Any]) -> Mapping[str, Any]: + # modify the config + migrated_config = cls.modify(config) + # save the config + source.write_config(migrated_config, config_path) + # return modified config + return migrated_config + + @classmethod + def emit_control_message(cls, migrated_config: Mapping[str, Any]) -> None: + # add the Airbyte Control Message to message repo + cls.message_repository.emit_message(create_connector_config_control_message(migrated_config)) + # emit the Airbyte Control Message from message queue to stdout + for message in cls.message_repository._message_queue: + print(message.json(exclude_unset=True)) + + @classmethod + def migrate(cls, args: List[str], source: Source) -> None: + """ + This method checks the input args, should the config be migrated, + transform if necessary and emit the CONTROL message. + """ + # get config path + config_path = AirbyteEntrypoint(source).extract_config(args) + # proceed only if `--config` arg is provided + if config_path: + # read the existing config + config = source.read_config(config_path) + # migration check + if cls.should_migrate(config): + cls.emit_control_message( + cls.modify_and_save(config_path, source, config), + ) diff --git a/airbyte-integrations/connectors/source-okta/source_okta/custom_authenticators.py b/airbyte-integrations/connectors/source-okta/source_okta/custom_authenticators.py new file mode 100644 index 000000000000..c3ce2a4945a9 --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/source_okta/custom_authenticators.py @@ -0,0 +1,63 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# + +from dataclasses import InitVar, dataclass +from typing import Any, Mapping, Tuple + +import requests +from airbyte_cdk.sources.declarative.auth import DeclarativeOauth2Authenticator +from airbyte_cdk.sources.declarative.auth.declarative_authenticator import DeclarativeAuthenticator +from airbyte_cdk.sources.declarative.types import Config + + +@dataclass +class CustomBearerAuthenticator(DeclarativeAuthenticator): + """ + Custom authenticator that uses "SSWS" instead of "Bearer" in the authorization header. + """ + + config: Config + parameters: InitVar[Mapping[str, Any]] + + @property + def auth_header(self) -> str: + return "Authorization" + + @property + def token(self) -> str: + return f"SSWS {self.config['credentials']['api_token']}" + + +@dataclass +class CustomOauth2Authenticator(DeclarativeOauth2Authenticator): + @property + def auth_header(self) -> str: + return "Authorization" + + @property + def token(self) -> str: + return f"SSWS {self.get_access_token()}" + + def get_auth_header(self) -> Mapping[str, Any]: + return {"Authorization": f"SSWS {self.get_access_token()}"} + + def get_refresh_request_body(self) -> Mapping[str, Any]: + return { + "grant_type": "refresh_token", + "refresh_token": self.refresh_token, + } + + def refresh_access_token(self) -> Tuple[str, int]: + try: + response = requests.request( + method="POST", + url=self.token_refresh_endpoint, + data=self.get_refresh_request_body(), + auth=(self.client_id, self.client_secret), + ) + response.raise_for_status() + response_json = response.json() + return response_json["access_token"], response_json["expires_in"] + except Exception as e: + raise Exception(f"Error while refreshing access token: {e}") from e diff --git a/airbyte-integrations/connectors/source-okta/source_okta/manifest.yaml b/airbyte-integrations/connectors/source-okta/source_okta/manifest.yaml new file mode 100644 index 000000000000..249e9f10ae2c --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/source_okta/manifest.yaml @@ -0,0 +1,1904 @@ +version: 0.65.0 +type: DeclarativeSource + +definitions: + custom_oauth_authenticator: + type: CustomAuthenticator + class_name: source_okta.custom_authenticators.CustomOauth2Authenticator + client_id: "{{ config['credentials']['client_id'] }}" + client_secret: "{{ config['credentials']['client_secret'] }}" + refresh_token: "{{ config['credentials']['refresh_token'] }}" + refresh_request_body: {} + token_refresh_endpoint: "https://{{ config['domain'] }}.okta.com/oauth2/v1/token" + grant_type: refresh_token + + custom_bearer_authenticator: + type: CustomAuthenticator + class_name: source_okta.custom_authenticators.CustomBearerAuthenticator + + selective_authenticator: + type: SelectiveAuthenticator + authenticator_selection_path: ["credentials", "auth_type"] + authenticators: + oauth2.0: "#/definitions/custom_oauth_authenticator" + api_token: "#/definitions/custom_bearer_authenticator" + + paginator: + type: DefaultPaginator + page_token_option: + type: RequestPath + page_size_option: + inject_into: request_parameter + type: RequestOption + field_name: limit + pagination_strategy: + type: CursorPagination + page_size: 200 + cursor_value: "{{ headers['link']['next']['url'] }}" + stop_condition: >- + {{ headers.link.next is not defined or not headers.link.next or + (headers.link.self is defined and headers.link.self and + headers.link.next.url == headers.link.self.url) }} + + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + backoff_strategies: + - type: WaitUntilTimeFromHeader + header: X-Rate-Limit-Reset + min_wait: "60" + + groups_stream: + $parameters: + name: "groups" + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/groups + http_method: GET + request_parameters: + filter: >- + lastUpdated gt "{{ format_datetime(stream_interval.start_time, + '%Y-%m-%dT%H:%M:%S') }}.000Z" + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + $ref: "#/definitions/error_handler" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + $ref: "#/definitions/paginator" + partition_router: [] + incremental_sync: + type: DatetimeBasedCursor + cursor_field: lastUpdated + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config['start_date'] if 'start_date' in config else day_delta(-7, format='%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: + _links: + type: + - object + - "null" + created: + format: date-time + type: + - string + - "null" + id: + type: + - string + - "null" + lastMembershipUpdated: + format: date-time + type: + - string + - "null" + lastUpdated: + format: date-time + type: + - string + - "null" + objectClass: + items: + type: + - string + - "null" + type: + - array + - "null" + profile: + properties: + description: + type: + - string + - "null" + name: + type: + - string + - "null" + type: + - object + - "null" + type: + type: + - string + - "null" + + users_stream: + $parameters: + name: "users" + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/users + http_method: GET + request_parameters: + filter: >- + lastUpdated gt "{{ format_datetime(stream_interval.start_time, + '%Y-%m-%dT%H:%M:%S') }}.000Z" and (status eq "ACTIVE" or status eq + "DEPROVISIONED" or status eq "LOCKED_OUT" or status eq + "PASSWORD_EXPIRED" or status eq "PROVISIONED" or status eq + "RECOVERY" or status eq "STAGED" or status eq "SUSPENDED") + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + $ref: "#/definitions/error_handler" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + $ref: "#/definitions/paginator" + partition_router: [] + incremental_sync: + type: DatetimeBasedCursor + cursor_field: lastUpdated + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config['start_date'] if 'start_date' in config else day_delta(-7, format='%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: + _links: + type: + - object + - "null" + activated: + format: date-time + type: + - string + - "null" + created: + format: date-time + type: + - string + - "null" + credentials: + type: + - object + - "null" + additionalProperties: true + properties: + password: + type: + - object + - "null" + additionalProperties: true + properties: + hash: + additionalProperties: true + properties: + algorithm: + type: + - string + - "null" + salt: + type: + - string + - "null" + saltOrder: + type: + - string + - "null" + value: + type: + - string + - "null" + workFactor: + type: + - integer + - "null" + type: + - object + - "null" + hook: + additionalProperties: true + properties: + type: + type: + - string + - "null" + type: + - object + - "null" + value: + type: + - string + - "null" + provider: + additionalProperties: true + properties: + name: + type: + - string + - "null" + type: + type: + - string + - "null" + type: + - object + - "null" + recovery_question: + additionalProperties: true + properties: + answer: + type: + - string + - "null" + question: + type: + - string + - "null" + type: + - object + - "null" + id: + type: + - string + - "null" + lastLogin: + format: date-time + type: + - string + - "null" + lastUpdated: + format: date-time + type: + - string + - "null" + passwordChanged: + format: date-time + type: + - string + - "null" + profile: + additionalProperties: true + properties: + city: + type: + - string + - "null" + costCenter: + type: + - string + - "null" + countryCode: + type: + - string + - "null" + department: + type: + - string + - "null" + displayName: + type: + - string + - "null" + division: + type: + - string + - "null" + email: + type: + - string + - "null" + employeeNumber: + type: + - string + - "null" + firstName: + type: + - string + - "null" + honorificPrefix: + type: + - string + - "null" + honorificSuffix: + type: + - string + - "null" + lastName: + type: + - string + - "null" + locale: + type: + - string + - "null" + login: + type: + - string + - "null" + manager: + type: + - string + - "null" + managerId: + type: + - string + - "null" + middleName: + type: + - string + - "null" + mobilePhone: + type: + - string + - "null" + nickName: + type: + - string + - "null" + organization: + type: + - string + - "null" + postalAddress: + type: + - string + - "null" + preferredLanguage: + type: + - string + - "null" + primaryPhone: + type: + - string + - "null" + profileUrl: + type: + - string + - "null" + secondEmail: + type: + - string + - "null" + state: + type: + - string + - "null" + streetAddress: + type: + - string + - "null" + timezone: + type: + - string + - "null" + title: + type: + - string + - "null" + userType: + type: + - string + - "null" + zipCode: + type: + - string + - "null" + type: + - object + - "null" + status: + type: + - string + - "null" + statusChanged: + format: date-time + type: + - string + - "null" + type: + additionalProperties: true + properties: + id: + type: + - string + - "null" + type: + - object + - "null" + additionalProperties: true + + custom_roles_stream: + $parameters: + name: "custom_roles" + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/iam/roles + http_method: GET + request_parameters: {} + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + $ref: "#/definitions/error_handler" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - roles + paginator: + $ref: "#/definitions/paginator" + partition_router: [] + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + description: Gets a paginated list of Custom Roles + properties: + id: + type: + - "null" + - string + description: + type: + - "null" + - string + label: + type: + - "null" + - string + created: + format: date-time + type: + - "null" + - string + lastUpdated: + format: date-time + type: + - "null" + - string + _links: + type: + - "null" + - object + properties: + assignee: + type: + - "null" + - object + additionalProperties: true + properties: + self: + type: + - "null" + - object + additionalProperties: true + properties: + href: + type: + - "null" + - string + permissions: + type: + - "null" + - object + additionalProperties: true + properties: + href: + type: + - "null" + - string + additionalProperties: true + +check: + type: CheckStream + stream_names: + - users + +streams: + - type: DeclarativeStream + name: groups + $ref: "#/definitions/groups_stream" + + - type: DeclarativeStream + name: group_members + $parameters: + name: "group_members" + primary_key: + - groupId + - id + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/groups/{{ stream_partition['parent_id'] }}/users + http_method: GET + request_parameters: {} + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + $ref: "#/definitions/error_handler" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + $ref: "#/definitions/paginator" + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: parent_id + stream: + type: DeclarativeStream + name: groups + $ref: "#/definitions/groups_stream" + transformations: + - type: AddFields + fields: + - path: + - groupId + value: "{{ stream_partition['parent_id'] }}" + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: + _links: + type: + - "null" + - object + activated: + format: date-time + type: + - "null" + - string + created: + format: date-time + type: + - "null" + - string + credentials: + type: + - "null" + - object + additionalProperties: true + properties: + password: + type: + - "null" + - object + additionalProperties: true + properties: + hash: + type: + - "null" + - object + properties: + algorithm: + type: + - "null" + - string + salt: + type: + - "null" + - string + saltOrder: + type: + - "null" + - string + value: + type: + - "null" + - string + workFactor: + type: + - "null" + - integer + hook: + type: + - "null" + - object + properties: + type: + type: + - "null" + - string + value: + type: + - "null" + - string + provider: + properties: + name: + type: + - "null" + - string + type: + type: + - "null" + - string + type: + - "null" + - object + recovery_question: + properties: + answer: + type: + - "null" + - string + question: + type: + - "null" + - string + type: + - "null" + - object + groupId: + type: + - "null" + - string + id: + type: + - "null" + - string + lastLogin: + format: date-time + type: + - "null" + - string + lastUpdated: + format: date-time + type: + - "null" + - string + passwordChanged: + format: date-time + type: + - "null" + - string + profile: + additionalProperties: true + properties: + city: + type: + - "null" + - string + costCenter: + type: + - "null" + - string + countryCode: + type: + - "null" + - string + department: + type: + - "null" + - string + displayName: + type: + - "null" + - string + division: + type: + - "null" + - string + email: + type: + - "null" + - string + employeeNumber: + type: + - "null" + - string + firstName: + type: + - "null" + - string + honorificPrefix: + type: + - "null" + - string + honorificSuffix: + type: + - "null" + - string + lastName: + type: + - "null" + - string + locale: + type: + - "null" + - string + login: + type: + - "null" + - string + manager: + type: + - "null" + - string + managerId: + type: + - "null" + - string + middleName: + type: + - "null" + - string + mobilePhone: + type: + - "null" + - string + nickName: + type: + - "null" + - string + organization: + type: + - "null" + - string + postalAddress: + type: + - "null" + - string + preferredLanguage: + type: + - "null" + - string + primaryPhone: + type: + - "null" + - string + profileUrl: + type: + - "null" + - string + secondEmail: + type: + - "null" + - string + state: + type: + - "null" + - string + streetAddress: + type: + - "null" + - string + timezone: + type: + - "null" + - string + title: + type: + - "null" + - string + userType: + type: + - "null" + - string + zipCode: + type: + - "null" + - string + type: + - "null" + - object + status: + type: + - "null" + - string + statusChanged: + format: date-time + type: + - "null" + - string + type: + additionalProperties: true + properties: + id: + type: + - "null" + - string + type: + - "null" + - object + "required": ["groupId", "id"] + additionalProperties: true + + - type: DeclarativeStream + name: group_role_assignments + $parameters: + name: "group_role_assignments" + primary_key: + - groupId + - id + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/groups/{{ stream_partition['parent_id'] }}/roles + http_method: GET + request_parameters: {} + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + $ref: "#/definitions/error_handler" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + $ref: "#/definitions/paginator" + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: parent_id + stream: + type: DeclarativeStream + name: groups + $ref: "#/definitions/groups_stream" + transformations: + - type: AddFields + fields: + - path: + - groupId + value: "{{ stream_partition['parent_id'] }}" + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: + groupId: + type: + - "null" + - string + id: + type: + - "null" + - string + label: + type: + - "null" + - string + type: + type: + - "null" + - string + status: + type: + - "null" + - string + created: + format: date-time + type: + - "null" + - string + lastUpdated: + format: date-time + type: + - "null" + - string + assignmentType: + type: + - "null" + - string + resource-set: + type: + - string + - "null" + role: + type: + - "null" + - string + _links: + type: + - object + - "null" + properties: + assignee: + type: + - object + - "null" + properties: + assignee: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + role: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + resource-set: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + permissions: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + member: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + "required": ["groupId", "id"] + + - type: DeclarativeStream + name: logs + $parameters: + name: "logs" + primary_key: + - uuid + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/logs + http_method: GET + request_parameters: + since: >- + {{ stream_state.published if stream_state else config['start_date'] if 'start_date' in config else day_delta(-7, format='%Y-%m-%dT%H:%M:%SZ') + }} + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + backoff_strategies: + - type: WaitUntilTimeFromHeader + header: X-Rate-Limit-Reset + min_wait: "60" + response_filters: + - type: HttpResponseFilter + action: IGNORE + predicate: "{{ response.errorCode == 'E0000001' }}" + http_codes: + - 400 + error_message: "{{ response.errorSummary }}" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + $ref: "#/definitions/paginator" + partition_router: [] + transformations: + - type: AddFields + fields: + - path: + - published + value: "{{ format_datetime(record['published'], '%Y-%m-%dT%H:%M:%SZ') }}" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: published + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%SZ" + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config['start_date'] if 'start_date' in config else day_delta(-7, format='%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: + actor: + properties: + alternateId: + type: + - string + - "null" + detailEntry: + type: + - object + - "null" + displayName: + type: + - string + - "null" + id: + type: + - string + - "null" + type: + type: + - string + - "null" + type: + - object + - "null" + authenticationContext: + properties: + authenticationProvider: + type: + - string + - "null" + authenticationStep: + type: + - integer + credentialProvider: + type: + - string + - "null" + credentialType: + type: + - string + - "null" + externalSessionId: + type: + - string + - "null" + interface: + type: + - string + - "null" + issuer: + properties: + id: + type: + - string + - "null" + type: + type: + - string + - "null" + type: + - object + - "null" + type: + - object + - "null" + client: + properties: + device: + type: + - string + - "null" + geographicalContext: + properties: + city: + type: + - string + - "null" + country: + type: + - string + - "null" + geolocation: + properties: + lat: + type: + - number + - "null" + lon: + type: + - number + - "null" + type: + - object + - "null" + postalCode: + type: + - string + - "null" + state: + type: + - string + - "null" + type: + - object + - "null" + id: + type: + - string + - "null" + ipAddress: + type: + - string + - "null" + userAgent: + properties: + browser: + type: + - string + - "null" + os: + type: + - string + - "null" + rawUserAgent: + type: + - string + - "null" + type: + - object + - "null" + zone: + type: + - string + - "null" + type: + - object + - "null" + debugContext: + properties: + debugData: + type: + - object + - "null" + type: + - object + - "null" + device: + type: + - string + - "null" + displayMessage: + type: + - string + - "null" + eventType: + type: + - string + - "null" + legacyEventType: + type: + - string + - "null" + outcome: + properties: + reason: + type: + - string + - "null" + result: + type: + - string + - "null" + type: + - object + - "null" + published: + format: date-time + type: + - string + - "null" + request: + properties: + ipChain: + items: + properties: + geographicalContext: + properties: + city: + type: + - string + - "null" + country: + type: + - string + - "null" + geolocation: + properties: + lat: + type: + - number + - "null" + lon: + type: + - number + - "null" + type: + - object + - "null" + postalCode: + type: + - string + - "null" + state: + type: + - string + - "null" + type: + - object + - "null" + ip: + type: + - string + - "null" + source: + type: + - string + - "null" + version: + type: + - string + - "null" + type: + - object + - "null" + type: + - array + - "null" + type: + - object + - "null" + securityContext: + properties: + asNumber: + type: + - integer + - "null" + asOrg: + type: + - string + - "null" + domain: + type: + - string + - "null" + isProxy: + type: + - boolean + - "null" + isp: + type: + - string + - "null" + type: + - object + - "null" + severity: + type: + - string + - "null" + target: + items: + properties: + alternateId: + type: + - string + - "null" + detailEntry: + type: + - object + - "null" + displayName: + type: + - string + - "null" + id: + type: + - string + - "null" + type: + type: + - string + - "null" + type: + - object + - "null" + type: + - array + - "null" + transaction: + properties: + detail: + type: + - object + - "null" + id: + type: + - string + - "null" + type: + type: + - string + - "null" + type: + - object + - "null" + uuid: + type: + - string + - "null" + version: + type: + - string + - "null" + + - type: DeclarativeStream + name: users + $ref: "#/definitions/users_stream" + + - type: DeclarativeStream + name: resource_sets + $parameters: + name: "resource_sets" + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/iam/resource-sets + http_method: GET + request_parameters: {} + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + $ref: "#/definitions/error_handler" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - resource-sets + paginator: + type: DefaultPaginator + page_token_option: + type: RequestPath + page_size_option: + inject_into: request_parameter + type: RequestOption + field_name: limit + pagination_strategy: + type: CursorPagination + page_size: 200 + cursor_value: "{{ response['_links']['next']['href'] }}" + stop_condition: >- + {{ response._links.next is not defined or not response._links.next + or (response._links.self is defined and response._links.self and + response._links.next.url == response._links.self.url) }} + partition_router: [] + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: + id: + type: string + label: + type: string + description: + type: string + created: + format: date-time + type: + - string + - "null" + lastUpdated: + format: date-time + type: + - string + - "null" + _links: + properties: + assignee: + properties: + self: + type: + - "null" + - object + additionalProperties: true + properties: + href: + type: + - "null" + - string + description: gets this Resource Set + resources: + type: + - "null" + - object + additionalProperties: true + properties: + href: + type: + - "null" + - string + description: gets a paginable list of resources included in this set + bindings: + type: + - "null" + - object + additionalProperties: true + properties: + href: + type: + - "null" + - string + description: + gets a paginable list of admin Role Bindings assigned to + this set + next: + type: + - "null" + - object + additionalProperties: true + properties: + href: + type: + - "null" + - string + description: + the link for the next page, 'after' is the query string, + the cursor field is id + type: + - object + - "null" + + - type: DeclarativeStream + name: custom_roles + $ref: "#/definitions/custom_roles_stream" + + - type: DeclarativeStream + name: user_role_assignments + $parameters: + name: "user_role_assignments" + primary_key: + - userId + - id + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/users/{{ stream_partition['parent_id'] }}/roles + http_method: GET + request_parameters: {} + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + $ref: "#/definitions/error_handler" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + $ref: "#/definitions/paginator" + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: parent_id + stream: + type: DeclarativeStream + name: users + $ref: "#/definitions/users_stream" + transformations: + - type: AddFields + fields: + - path: + - userId + value: "{{ stream_partition['parent_id'] }}" + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: + userId: + type: + - "null" + - string + id: + type: + - "null" + - string + label: + type: + - "null" + - string + type: + type: + - "null" + - string + status: + type: + - "null" + - string + created: + format: date-time + type: + - "null" + - string + lastUpdated: + format: date-time + type: + - "null" + - string + assignmentType: + type: + - "null" + - string + resource-set: + type: + - string + - "null" + role: + type: + - string + - "null" + _links: + type: + - object + - "null" + properties: + assignee: + type: + - object + - "null" + properties: + assignee: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + role: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + resource-set: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + permissions: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + member: + type: + - object + - "null" + properties: + href: + type: + - "null" + - string + "required": ["userId", "id"] + + - type: DeclarativeStream + name: permissions + $parameters: + name: "permissions" + primary_key: + - label + retriever: + type: SimpleRetriever + requester: + type: HttpRequester + url_base: https://{{ config['domain'] }}.okta.com + path: /api/v1/iam/roles/{{ stream_partition['parent_id'] }}/permissions + http_method: GET + request_parameters: {} + authenticator: + $ref: "#/definitions/selective_authenticator" + error_handler: + $ref: "#/definitions/error_handler" + request_body_json: {} + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - permissions + paginator: + $ref: "#/definitions/paginator" + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: parent_id + stream: + type: DeclarativeStream + name: custom_roles + $ref: "#/definitions/custom_roles_stream" + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + description: + Gets the list of permissions included in a Custom Role identified by + its id + properties: + label: + enum: + - okta.users.manage + - okta.users.create + - okta.users.read + - okta.users.credentials.manage + - okta.users.credentials.resetFactors + - okta.users.credentials.resetPassword + - okta.users.credentials.expirePassword + - okta.users.userprofile.manage + - okta.users.lifecycle.manage + - okta.users.lifecycle.activate + - okta.users.lifecycle.deactivate + - okta.users.lifecycle.suspend + - okta.users.lifecycle.unsuspend + - okta.users.lifecycle.delete + - okta.users.lifecycle.unlock + - okta.users.lifecycle.clearSessions + - okta.users.groupMembership.manage + - okta.users.appAssignment.manage + - okta.groups.manage + - okta.groups.create + - okta.groups.members.manage + - okta.groups.read + - okta.groups.appAssignment.manage + - okta.apps.read + - okta.apps.manage + - okta.apps.assignment.manage + - okta.profilesources.import.run + - okta.authzServers.read + - okta.authzServers.manage + - okta.customizations.read + - okta.customizations.manage + - okta.workflows.invoke + type: string + description: Type of permissions + conditions: + type: + - "null" + - object + properties: + included: + type: array + items: + type: object + excluded: + type: array + items: + type: object + created: + format: date-time + type: string + lastUpdated: + format: date-time + type: string + _links: + properties: + assignee: + properties: + self: + type: + - "null" + - object + additionalProperties: true + properties: + href: + type: + - "null" + - string + role: + type: + - "null" + - object + additionalProperties: true + properties: + href: + type: + - "null" + - string + type: + - object + - "null" + +spec: + documentation_url: https://docs.airbyte.com/integrations/sources/okta + connection_specification: + $schema: http://json-schema.org/draft-07/schema# + type: object + required: [] + properties: + credentials: + title: Authorization Method + type: object + oneOf: + - type: object + title: OAuth2.0 + required: + - auth_type + - client_id + - client_secret + - refresh_token + properties: + auth_type: + type: string + const: oauth2.0 + order: 0 + client_id: + type: string + title: Client ID + description: The Client ID of your OAuth application. + airbyte_secret: true + client_secret: + type: string + title: Client Secret + description: The Client Secret of your OAuth application. + airbyte_secret: true + refresh_token: + type: string + title: Refresh Token + description: Refresh Token to obtain new Access Token, when it's expired. + airbyte_secret: true + - type: object + title: API Token + required: + - auth_type + - api_token + properties: + auth_type: + type: string + const: api_token + order: 0 + api_token: + type: string + title: Personal API Token + description: >- + An Okta token. See the docs + for instructions on how to generate it. + airbyte_secret: true + order: 0 + domain: + type: string + title: Okta domain + description: >- + The Okta domain. See the docs for + instructions on how to find it. + airbyte_secret: false + order: 1 + start_date: + type: string + title: Start Date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + description: >- + UTC date and time in the format YYYY-MM-DDTHH:MM:SSZ. Any data before + this date will not be replicated. + examples: + - "2022-07-22T00:00:00Z" + order: 2 + additionalProperties: true + type: Spec +metadata: + autoImportSchema: + groups: false + group_members: false + group_role_assignments: false + logs: false + users: false + resource_sets: false + custom_roles: false + user_role_assignments: false + permissions: false diff --git a/airbyte-integrations/connectors/source-okta/source_okta/run.py b/airbyte-integrations/connectors/source-okta/source_okta/run.py index f40c87dc0e37..a2e554051687 100644 --- a/airbyte-integrations/connectors/source-okta/source_okta/run.py +++ b/airbyte-integrations/connectors/source-okta/source_okta/run.py @@ -1,14 +1,17 @@ # -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. # import sys from airbyte_cdk.entrypoint import launch -from source_okta import SourceOkta + +from .config_migration import OktaConfigMigration +from .source import SourceOkta def run(): source = SourceOkta() + OktaConfigMigration.migrate(sys.argv[1:], source) launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/custom_roles.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/custom_roles.json deleted file mode 100644 index 0f1a9ad700fe..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/custom_roles.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "type": ["null", "object"], - "additionalProperties": true, - "description": "Gets a paginated list of Custom Roles", - "properties": { - "id": { - "type": ["null", "string"] - }, - "description": { - "type": ["null", "string"] - }, - "label": { - "type": ["null", "string"] - }, - "created": { - "format": "date-time", - "type": ["null", "string"] - }, - "lastUpdated": { - "format": "date-time", - "type": ["null", "string"] - }, - "_links": { - "type": ["null", "object"], - "properties": { - "assignee": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "self": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "href": { - "type": ["null", "string"] - } - } - }, - "permissions": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "href": { - "type": ["null", "string"] - } - } - } - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/group_members.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/group_members.json deleted file mode 100644 index e9e26b10714e..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/group_members.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "_links": { - "type": ["null", "object"] - }, - "activated": { - "format": "date-time", - "type": ["null", "string"] - }, - "created": { - "format": "date-time", - "type": ["null", "string"] - }, - "credentials": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "password": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "hash": { - "type": ["null", "object"], - "properties": { - "algorithm": { - "type": ["null", "string"] - }, - "salt": { - "type": ["null", "string"] - }, - "saltOrder": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - }, - "workFactor": { - "type": ["null", "integer"] - } - } - }, - "hook": { - "type": ["null", "object"], - "properties": { - "type": { - "type": ["null", "string"] - } - } - }, - "value": { - "type": ["null", "string"] - } - } - }, - "provider": { - "properties": { - "name": { - "type": ["null", "string"] - }, - "type": { - "type": ["null", "string"] - } - }, - "type": ["null", "object"] - }, - "recovery_question": { - "properties": { - "answer": { - "type": ["null", "string"] - }, - "question": { - "type": ["null", "string"] - } - }, - "type": ["null", "object"] - } - } - }, - "groupId": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "string"] - }, - "lastLogin": { - "format": "date-time", - "type": ["null", "string"] - }, - "lastUpdated": { - "format": "date-time", - "type": ["null", "string"] - }, - "passwordChanged": { - "format": "date-time", - "type": ["null", "string"] - }, - "profile": { - "additionalProperties": true, - "properties": { - "city": { - "type": ["null", "string"] - }, - "costCenter": { - "type": ["null", "string"] - }, - "countryCode": { - "type": ["null", "string"] - }, - "department": { - "type": ["null", "string"] - }, - "displayName": { - "type": ["null", "string"] - }, - "division": { - "type": ["null", "string"] - }, - "email": { - "type": ["null", "string"] - }, - "employeeNumber": { - "type": ["null", "string"] - }, - "firstName": { - "type": ["null", "string"] - }, - "honorificPrefix": { - "type": ["null", "string"] - }, - "honorificSuffix": { - "type": ["null", "string"] - }, - "lastName": { - "type": ["null", "string"] - }, - "locale": { - "type": ["null", "string"] - }, - "login": { - "type": ["null", "string"] - }, - "manager": { - "type": ["null", "string"] - }, - "managerId": { - "type": ["null", "string"] - }, - "middleName": { - "type": ["null", "string"] - }, - "mobilePhone": { - "type": ["null", "string"] - }, - "nickName": { - "type": ["null", "string"] - }, - "organization": { - "type": ["null", "string"] - }, - "postalAddress": { - "type": ["null", "string"] - }, - "preferredLanguage": { - "type": ["null", "string"] - }, - "primaryPhone": { - "type": ["null", "string"] - }, - "profileUrl": { - "type": ["null", "string"] - }, - "secondEmail": { - "type": ["null", "string"] - }, - "state": { - "type": ["null", "string"] - }, - "streetAddress": { - "type": ["null", "string"] - }, - "timezone": { - "type": ["null", "string"] - }, - "title": { - "type": ["null", "string"] - }, - "userType": { - "type": ["null", "string"] - }, - "zipCode": { - "type": ["null", "string"] - } - }, - "type": ["null", "object"] - }, - "status": { - "type": ["null", "string"] - }, - "statusChanged": { - "format": "date-time", - "type": ["null", "string"] - }, - "type": { - "additionalProperties": true, - "properties": { - "id": { - "type": ["null", "string"] - } - }, - "type": ["null", "object"] - } - } -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/group_role_assignments.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/group_role_assignments.json deleted file mode 100644 index 8a80731d4524..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/group_role_assignments.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "type": ["null", "object"], - "properties": { - "groupId": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "string"] - }, - "label": { - "type": ["null", "string"] - }, - "type": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "created": { - "format": "date-time", - "type": ["null", "string"] - }, - "lastUpdated": { - "format": "date-time", - "type": ["null", "string"] - }, - "assignmentType": { - "type": ["null", "string"] - }, - "resource-set": { - "type": ["string", "null"] - }, - "role": { - "type": ["null", "string"] - }, - "_links": { - "type": ["object", "null"], - "properties": { - "assignee": { - "type": ["object", "null"], - "properties": { - "assignee": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - }, - "role": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - }, - "resource-set": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - }, - "permissions": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - }, - "member": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - } - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/groups.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/groups.json deleted file mode 100644 index f9b7633e3094..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/groups.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "properties": { - "_links": { - "type": ["object", "null"] - }, - "created": { - "format": "date-time", - "type": ["string", "null"] - }, - "id": { - "type": ["string", "null"] - }, - "lastMembershipUpdated": { - "format": "date-time", - "type": ["string", "null"] - }, - "lastUpdated": { - "format": "date-time", - "type": ["string", "null"] - }, - "objectClass": { - "items": { - "type": ["string", "null"] - }, - "type": ["array", "null"] - }, - "profile": { - "properties": { - "description": { - "type": ["string", "null"] - }, - "name": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "type": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/logs.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/logs.json deleted file mode 100644 index 2070c9f6f7aa..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/logs.json +++ /dev/null @@ -1,269 +0,0 @@ -{ - "properties": { - "actor": { - "properties": { - "alternateId": { - "type": ["string", "null"] - }, - "detailEntry": { - "type": ["object", "null"] - }, - "displayName": { - "type": ["string", "null"] - }, - "id": { - "type": ["string", "null"] - }, - "type": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "authenticationContext": { - "properties": { - "authenticationProvider": { - "type": ["string", "null"] - }, - "authenticationStep": { - "type": ["integer"] - }, - "credentialProvider": { - "type": ["string", "null"] - }, - "credentialType": { - "type": ["string", "null"] - }, - "externalSessionId": { - "type": ["string", "null"] - }, - "interface": { - "type": ["string", "null"] - }, - "issuer": { - "properties": { - "id": { - "type": ["string", "null"] - }, - "type": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - } - }, - "type": ["object", "null"] - }, - "client": { - "properties": { - "device": { - "type": ["string", "null"] - }, - "geographicalContext": { - "properties": { - "city": { - "type": ["string", "null"] - }, - "country": { - "type": ["string", "null"] - }, - "geolocation": { - "properties": { - "lat": { - "type": ["number", "null"] - }, - "lon": { - "type": ["number", "null"] - } - }, - "type": ["object", "null"] - }, - "postalCode": { - "type": ["string", "null"] - }, - "state": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "id": { - "type": ["string", "null"] - }, - "ipAddress": { - "type": ["string", "null"] - }, - "userAgent": { - "properties": { - "browser": { - "type": ["string", "null"] - }, - "os": { - "type": ["string", "null"] - }, - "rawUserAgent": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "zone": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "debugContext": { - "properties": { - "debugData": { - "type": ["object", "null"] - } - }, - "type": ["object", "null"] - }, - "device": { - "type": ["string", "null"] - }, - "displayMessage": { - "type": ["string", "null"] - }, - "eventType": { - "type": ["string", "null"] - }, - "legacyEventType": { - "type": ["string", "null"] - }, - "outcome": { - "properties": { - "reason": { - "type": ["string", "null"] - }, - "result": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "published": { - "format": "date-time", - "type": ["string", "null"] - }, - "request": { - "properties": { - "ipChain": { - "items": { - "properties": { - "geographicalContext": { - "properties": { - "city": { - "type": ["string", "null"] - }, - "country": { - "type": ["string", "null"] - }, - "geolocation": { - "properties": { - "lat": { - "type": ["number", "null"] - }, - "lon": { - "type": ["number", "null"] - } - }, - "type": ["object", "null"] - }, - "postalCode": { - "type": ["string", "null"] - }, - "state": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "ip": { - "type": ["string", "null"] - }, - "source": { - "type": ["string", "null"] - }, - "version": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "type": ["array", "null"] - } - }, - "type": ["object", "null"] - }, - "securityContext": { - "properties": { - "asNumber": { - "type": ["integer", "null"] - }, - "asOrg": { - "type": ["string", "null"] - }, - "domain": { - "type": ["string", "null"] - }, - "isProxy": { - "type": ["boolean", "null"] - }, - "isp": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "severity": { - "type": ["string", "null"] - }, - "target": { - "items": { - "properties": { - "alternateId": { - "type": ["string", "null"] - }, - "detailEntry": { - "type": ["object", "null"] - }, - "displayName": { - "type": ["string", "null"] - }, - "id": { - "type": ["string", "null"] - }, - "type": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "type": ["array", "null"] - }, - "transaction": { - "properties": { - "detail": { - "type": ["object", "null"] - }, - "id": { - "type": ["string", "null"] - }, - "type": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "uuid": { - "type": ["string", "null"] - }, - "version": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/permissions.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/permissions.json deleted file mode 100644 index a69acbf0d047..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/permissions.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "description": "Gets the list of permissions included in a Custom Role identified by its id", - "properties": { - "label": { - "enum": [ - "okta.users.manage", - "okta.users.create", - "okta.users.read", - "okta.users.credentials.manage", - "okta.users.credentials.resetFactors", - "okta.users.credentials.resetPassword", - "okta.users.credentials.expirePassword", - "okta.users.userprofile.manage", - "okta.users.lifecycle.manage", - "okta.users.lifecycle.activate", - "okta.users.lifecycle.deactivate", - "okta.users.lifecycle.suspend", - "okta.users.lifecycle.unsuspend", - "okta.users.lifecycle.delete", - "okta.users.lifecycle.unlock", - "okta.users.lifecycle.clearSessions", - "okta.users.groupMembership.manage", - "okta.users.appAssignment.manage", - "okta.groups.manage", - "okta.groups.create", - "okta.groups.members.manage", - "okta.groups.read", - "okta.groups.appAssignment.manage", - "okta.apps.read", - "okta.apps.manage", - "okta.apps.assignment.manage", - "okta.profilesources.import.run", - "okta.authzServers.read", - "okta.authzServers.manage", - "okta.customizations.read", - "okta.customizations.manage", - "okta.workflows.invoke" - ], - "type": "string", - "description": "Type of permissions" - }, - "conditions": { - "type": ["null", "object"], - "properties": { - "included": { - "type": "array", - "items": { - "type": "object" - } - }, - "excluded": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "created": { - "format": "date-time", - "type": "string" - }, - "lastUpdated": { - "format": "date-time", - "type": "string" - }, - "_links": { - "properties": { - "assignee": { - "properties": { - "self": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "href": { - "type": ["null", "string"] - } - } - }, - "role": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "href": { - "type": ["null", "string"] - } - } - } - } - } - }, - "type": ["object", "null"] - } - }, - "type": "object" -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/resource_sets.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/resource_sets.json deleted file mode 100644 index a4bcd284f2e5..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/resource_sets.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "properties": { - "id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "description": { - "type": "string" - }, - "created": { - "format": "date-time", - "type": ["string", "null"] - }, - "lastUpdated": { - "format": "date-time", - "type": ["string", "null"] - }, - "_links": { - "properties": { - "assignee": { - "properties": { - "self": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "href": { - "type": ["null", "string"] - } - }, - "description": "gets this Resource Set" - }, - "resources": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "href": { - "type": ["null", "string"] - } - }, - "description": "gets a paginable list of resources included in this set" - }, - "bindings": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "href": { - "type": ["null", "string"] - } - }, - "description": "gets a paginable list of admin Role Bindings assigned to this set" - }, - "next": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "href": { - "type": ["null", "string"] - } - }, - "description": "the link for the next page, 'after' is the query string, the cursor field is id" - } - } - } - }, - "type": ["object", "null"] - } - }, - "type": "object" -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/user_role_assignments.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/user_role_assignments.json deleted file mode 100644 index 40abf57fc9cd..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/user_role_assignments.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "type": ["null", "object"], - "properties": { - "userId": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "string"] - }, - "label": { - "type": ["null", "string"] - }, - "type": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "created": { - "format": "date-time", - "type": ["null", "string"] - }, - "lastUpdated": { - "format": "date-time", - "type": ["null", "string"] - }, - "assignmentType": { - "type": ["null", "string"] - }, - "resource-set": { - "type": ["string", "null"] - }, - "role": { - "type": ["string", "null"] - }, - "_links": { - "type": ["object", "null"], - "properties": { - "assignee": { - "type": ["object", "null"], - "properties": { - "assignee": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - }, - "role": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - }, - "resource-set": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - }, - "permissions": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - }, - "member": { - "type": ["object", "null"], - "properties": { - "herf": { - "type": ["null", "string"] - } - } - } - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/schemas/users.json b/airbyte-integrations/connectors/source-okta/source_okta/schemas/users.json deleted file mode 100644 index 675124c1cd0f..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/schemas/users.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "type": ["object", "null"], - "additionalProperties": true, - "properties": { - "_links": { - "type": ["object", "null"] - }, - "activated": { - "format": "date-time", - "type": ["string", "null"] - }, - "created": { - "format": "date-time", - "type": ["string", "null"] - }, - "credentials": { - "type": ["object", "null"], - "additionalProperties": true, - "properties": { - "password": { - "type": ["object", "null"], - "additionalProperties": true, - "properties": { - "hash": { - "additionalProperties": true, - "properties": { - "algorithm": { - "type": ["string", "null"] - }, - "salt": { - "type": ["string", "null"] - }, - "saltOrder": { - "type": ["string", "null"] - }, - "value": { - "type": ["string", "null"] - }, - "workFactor": { - "type": ["integer", "null"] - } - }, - "type": ["object", "null"] - }, - "hook": { - "additionalProperties": true, - "properties": { - "type": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "value": { - "type": ["string", "null"] - } - } - }, - "provider": { - "additionalProperties": true, - "properties": { - "name": { - "type": ["string", "null"] - }, - "type": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "recovery_question": { - "additionalProperties": true, - "properties": { - "answer": { - "type": ["string", "null"] - }, - "question": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - } - } - }, - "id": { - "type": ["string", "null"] - }, - "lastLogin": { - "format": "date-time", - "type": ["string", "null"] - }, - "lastUpdated": { - "format": "date-time", - "type": ["string", "null"] - }, - "passwordChanged": { - "format": "date-time", - "type": ["string", "null"] - }, - "profile": { - "additionalProperties": true, - "properties": { - "city": { - "type": ["string", "null"] - }, - "costCenter": { - "type": ["string", "null"] - }, - "countryCode": { - "type": ["string", "null"] - }, - "department": { - "type": ["string", "null"] - }, - "displayName": { - "type": ["string", "null"] - }, - "division": { - "type": ["string", "null"] - }, - "email": { - "type": ["string", "null"] - }, - "employeeNumber": { - "type": ["string", "null"] - }, - "firstName": { - "type": ["string", "null"] - }, - "honorificPrefix": { - "type": ["string", "null"] - }, - "honorificSuffix": { - "type": ["string", "null"] - }, - "lastName": { - "type": ["string", "null"] - }, - "locale": { - "type": ["string", "null"] - }, - "login": { - "type": ["string", "null"] - }, - "manager": { - "type": ["string", "null"] - }, - "managerId": { - "type": ["string", "null"] - }, - "middleName": { - "type": ["string", "null"] - }, - "mobilePhone": { - "type": ["string", "null"] - }, - "nickName": { - "type": ["string", "null"] - }, - "organization": { - "type": ["string", "null"] - }, - "postalAddress": { - "type": ["string", "null"] - }, - "preferredLanguage": { - "type": ["string", "null"] - }, - "primaryPhone": { - "type": ["string", "null"] - }, - "profileUrl": { - "type": ["string", "null"] - }, - "secondEmail": { - "type": ["string", "null"] - }, - "state": { - "type": ["string", "null"] - }, - "streetAddress": { - "type": ["string", "null"] - }, - "timezone": { - "type": ["string", "null"] - }, - "title": { - "type": ["string", "null"] - }, - "userType": { - "type": ["string", "null"] - }, - "zipCode": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - }, - "status": { - "type": ["string", "null"] - }, - "statusChanged": { - "format": "date-time", - "type": ["string", "null"] - }, - "type": { - "additionalProperties": true, - "properties": { - "id": { - "type": ["string", "null"] - } - }, - "type": ["object", "null"] - } - } -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/source.py b/airbyte-integrations/connectors/source-okta/source_okta/source.py index 8afd364da703..b550116424cc 100644 --- a/airbyte-integrations/connectors/source-okta/source_okta/source.py +++ b/airbyte-integrations/connectors/source-okta/source_okta/source.py @@ -1,380 +1,18 @@ # -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. # +from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource -from abc import ABC, abstractmethod -from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Tuple -from urllib import parse +""" +This file provides the necessary constructs to interpret a provided declarative YAML configuration file into +source connector. -import pendulum -import requests -from airbyte_cdk.models import SyncMode -from airbyte_cdk.sources import AbstractSource -from airbyte_cdk.sources.streams import Stream -from airbyte_cdk.sources.streams.http import HttpStream +WARNING: Do not modify this file. +""" -from .utils import datetime_to_string, delete_milliseconds, get_api_endpoint, get_start_date, initialize_authenticator - -class OktaStream(HttpStream, ABC): - page_size = 200 - - def __init__(self, url_base: str, start_date: pendulum.datetime, *args, **kwargs): - super().__init__(*args, **kwargs) - # Inject custom url base to the stream - self._url_base = url_base.rstrip("/") + "/" - self.start_date = start_date - - @property - def url_base(self) -> str: - return self._url_base - - def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]: - # Follow the next page cursor - # https://developer.okta.com/docs/reference/api-overview/#pagination - links = response.links - if "next" in links: - next_url = links["next"]["url"] - parsed_link = parse.urlparse(next_url) - query_params = dict(parse.parse_qsl(parsed_link.query)) - - # Typically, the absence of the "next" link header indicates there are more pages to read - # However, some streams contain the "next" link header even when there are no more pages to read - # See https://developer.okta.com/docs/reference/api-overview/#link-header - if "self" in links: - if links["self"]["url"] == next_url: - return None - return query_params - - return None - - def request_params( - self, - stream_state: Mapping[str, Any], - stream_slice: Mapping[str, any] = None, - next_page_token: Mapping[str, Any] = None, - ) -> MutableMapping[str, Any]: - return { - "limit": self.page_size, - **(next_page_token or {}), - } - - def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]: - response_json = response.json() - if isinstance(response_json, list): - for record in response_json: - yield self.transform(record=record, **kwargs) - else: - yield self.transform(record=response_json, **kwargs) - - def transform(self, record: MutableMapping[str, Any], stream_slice: Mapping[str, Any], **kwargs) -> MutableMapping[str, Any]: - return record - - def backoff_time(self, response: requests.Response) -> Optional[float]: - # The rate limit resets on the timestamp indicated - # https://developer.okta.com/docs/reference/rate-limits - if response.status_code == requests.codes.TOO_MANY_REQUESTS: - next_reset_epoch = int(response.headers["x-rate-limit-reset"]) - next_reset = pendulum.from_timestamp(next_reset_epoch) - next_reset_duration = pendulum.utcnow().diff(next_reset) - return next_reset_duration.seconds - - -class IncrementalOktaStream(OktaStream, ABC): - min_id = "" - - @property - @abstractmethod - def cursor_field(self) -> str: - pass - - def get_updated_state(self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]) -> Mapping[str, Any]: - min_cursor_value = self.min_id if self.min_id else str(pendulum.datetime.min) - return { - self.cursor_field: max( - latest_record.get(self.cursor_field, min_cursor_value), - current_stream_state.get(self.cursor_field, min_cursor_value), - ) - } - - def request_params( - self, - stream_state: Mapping[str, Any], - stream_slice: Mapping[str, any] = None, - next_page_token: Mapping[str, Any] = None, - ) -> MutableMapping[str, Any]: - params = super().request_params(stream_state, stream_slice, next_page_token) - latest_entry = stream_state.get(self.cursor_field) if stream_state else datetime_to_string(self.start_date) - filter_param = {"filter": f'{self.cursor_field} gt "{latest_entry}"'} - params.update(filter_param) - return params - - -class Groups(IncrementalOktaStream): - cursor_field = "lastUpdated" - primary_key = "id" - - def path(self, **kwargs) -> str: - return "groups" - - -class GroupMembers(OktaStream): - cursor_field = "id" - primary_key = ["groupId", "id"] - use_cache = True - reset_token = False - min_id = "00u00000000000000000" - - def stream_slices(self, **kwargs): - group_stream = Groups(authenticator=self.authenticator, url_base=self.url_base, start_date=self.start_date) - for group in group_stream.read_records(sync_mode=SyncMode.full_refresh): - self.reset_token = True - yield {"group_id": group["id"]} - - def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str: - group_id = stream_slice["group_id"] - return f"groups/{group_id}/users" - - def request_params( - self, - stream_state: Mapping[str, Any], - stream_slice: Mapping[str, any] = None, - next_page_token: Mapping[str, Any] = None, - ) -> MutableMapping[str, Any]: - params = {"limit": self.page_size} - latest_entry = stream_state.get(self.cursor_field) if stream_state else self.min_id - if next_page_token: - latest_entry = next_page_token.get("after") - if self.reset_token: - latest_entry = self.min_id - self.reset_token = False - params["after"] = latest_entry - return params - - def transform(self, record: MutableMapping[str, Any], stream_slice: Mapping[str, Any], **kwargs) -> MutableMapping[str, Any]: - record["groupId"] = stream_slice["group_id"] - return record - - -class GroupRoleAssignments(OktaStream): - primary_key = ["groupId", "id"] - use_cache = True - - def stream_slices(self, **kwargs): - group_stream = Groups(authenticator=self.authenticator, url_base=self.url_base, start_date=self.start_date) - for group in group_stream.read_records(sync_mode=SyncMode.full_refresh): - yield {"group_id": group["id"]} - - def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str: - group_id = stream_slice["group_id"] - return f"groups/{group_id}/roles" - - def transform(self, record: MutableMapping[str, Any], stream_slice: Mapping[str, Any], **kwargs) -> MutableMapping[str, Any]: - record["groupId"] = stream_slice["group_id"] - return record - - -class Logs(IncrementalOktaStream): - - cursor_field = "published" - primary_key = "uuid" - - def __init__(self, url_base, **kwargs): - super().__init__(url_base=url_base, **kwargs) - self._raise_on_http_errors: bool = True - - @property - def raise_on_http_errors(self) -> bool: - return self._raise_on_http_errors - - def should_retry(self, response: requests.Response) -> bool: - """ - When the connector gets abnormal state API retrun errror with 400 status code - and internal error code E0000001. The connector ignores an error with 400 code - to finish successfully sync and inform the user about an error in logs with an - error message. - """ - - if response.status_code == 400 and response.json().get("errorCode") == "E0000001": - self.logger.info(f"{response.json()['errorSummary']}") - self._raise_on_http_errors = False - return False - return HttpStream.should_retry(self, response) - - def path(self, **kwargs) -> str: - return "logs" - - def request_params( - self, - stream_state: Mapping[str, Any], - stream_slice: Mapping[str, any] = None, - next_page_token: Mapping[str, Any] = None, - ) -> MutableMapping[str, Any]: - # The log stream use a different params to get data. - # Docs: https://developer.okta.com/docs/reference/api/system-log/#datetime-filter - # Filter param should be ignored SCIM filter expressions can't use the published - # attribute since it may conflict with the logic of the since, after, and until query params. - # Docs: https://developer.okta.com/docs/reference/api/system-log/#expression-filter - params = super(IncrementalOktaStream, self).request_params(stream_state, stream_slice, next_page_token) - latest_entry = stream_state.get(self.cursor_field) if stream_state else self.start_date - params["since"] = latest_entry - return params - - def parse_response( - self, - response: requests.Response, - **kwargs, - ) -> Iterable[Mapping]: - data = response.json() if isinstance(response.json(), list) else [] - - for record in data: - record[self.cursor_field] = delete_milliseconds(record[self.cursor_field]) - yield record - - -class Users(IncrementalOktaStream): - cursor_field = "lastUpdated" - primary_key = "id" - # Should add all statuses to filter. Considering Okta documentation https://developer.okta.com/docs/reference/api/users/#list-all-users, - # users with "DEPROVISIONED" status are not returned by default. - statuses = ["ACTIVE", "DEPROVISIONED", "LOCKED_OUT", "PASSWORD_EXPIRED", "PROVISIONED", "RECOVERY", "STAGED", "SUSPENDED"] - - def path(self, **kwargs) -> str: - return "users" - - def request_params( - self, - stream_state: Mapping[str, Any], - stream_slice: Mapping[str, any] = None, - next_page_token: Mapping[str, Any] = None, - ) -> MutableMapping[str, Any]: - params = super().request_params(stream_state, stream_slice, next_page_token) - status_filters = " or ".join([f'status eq "{status}"' for status in self.statuses]) - if "filter" in params: - # add status_filters to existing filters - params["filter"] = f'{params["filter"]} and ({status_filters})' - else: - params["filter"] = status_filters - return params - - -class ResourceSets(OktaStream): - primary_key = "id" - min_id = "iam00000000000000000" - - def path(self, **kwargs) -> str: - return "iam/resource-sets" - - def parse_response( - self, - response: requests.Response, - **kwargs, - ) -> Iterable[Mapping]: - yield from response.json()["resource-sets"] - - def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]: - # We can't follow the default pagination that takes query from header.links - # Instead, the payload contains _links that offers the next link - body = response.json() - if "_links" in body and "next" in body["_links"] and "href" in body["_links"]["next"]: - next_url = body["_links"]["next"]["href"] - parsed_link = parse.urlparse(next_url) - return dict(parse.parse_qsl(parsed_link.query)) - - return None - - -class CustomRoles(OktaStream): - # https://developer.okta.com/docs/reference/api/roles/#list-roles - primary_key = "id" - - def path(self, **kwargs) -> str: - return "iam/roles" - - def parse_response( - self, - response: requests.Response, - **kwargs, - ) -> Iterable[Mapping]: - yield from response.json()["roles"] - - -class UserRoleAssignments(OktaStream): - primary_key = ["userId", "id"] - use_cache = True - - def stream_slices(self, **kwargs): - user_stream = Users(authenticator=self.authenticator, url_base=self.url_base, start_date=self.start_date) - for user in user_stream.read_records(sync_mode=SyncMode.full_refresh): - yield {"user_id": user["id"]} - - def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str: - user_id = stream_slice["user_id"] - return f"users/{user_id}/roles" - - def transform(self, record: MutableMapping[str, Any], stream_slice: Mapping[str, Any], **kwargs) -> MutableMapping[str, Any]: - record["userId"] = stream_slice["user_id"] - return record - - -class Permissions(OktaStream): - # https://developer.okta.com/docs/reference/api/roles/#list-permissions - primary_key = "label" - use_cache = True - - def parse_response( - self, - response: requests.Response, - **kwargs, - ) -> Iterable[Mapping]: - yield from response.json()["permissions"] - - def stream_slices(self, **kwargs): - custom_roles = CustomRoles(authenticator=self.authenticator, url_base=self.url_base, start_date=self.start_date) - for role in custom_roles.read_records(sync_mode=SyncMode.full_refresh): - yield {"role_id": role["id"]} - - def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str: - role_id = stream_slice["role_id"] - return f"iam/roles/{role_id}/permissions" - - -class SourceOkta(AbstractSource): - def check_connection(self, logger, config) -> Tuple[bool, any]: - try: - auth = initialize_authenticator(config) - api_endpoint = get_api_endpoint(config) - url = parse.urljoin(api_endpoint, "users") - - response = requests.get( - url, - params={"limit": 1}, - headers=auth.get_auth_header(), - ) - - if response.status_code == requests.codes.ok: - return True, None - - return False, response.json() - except Exception: - return False, "Failed to authenticate with the provided credentials" - - def streams(self, config: Mapping[str, Any]) -> List[Stream]: - auth = initialize_authenticator(config) - api_endpoint = get_api_endpoint(config) - start_date = get_start_date(config) - - initialization_params = {"authenticator": auth, "url_base": api_endpoint, "start_date": start_date} - - return [ - Groups(**initialization_params), - Logs(**initialization_params), - Users(**initialization_params), - GroupMembers(**initialization_params), - CustomRoles(**initialization_params), - UserRoleAssignments(**initialization_params), - GroupRoleAssignments(**initialization_params), - Permissions(**initialization_params), - ResourceSets(**initialization_params), - ] +# Declarative Source +class SourceOkta(YamlDeclarativeSource): + def __init__(self): + super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-okta/source_okta/spec.json b/airbyte-integrations/connectors/source-okta/source_okta/spec.json deleted file mode 100644 index 15c88150dcff..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/spec.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "documentationUrl": "https://docs.airbyte.com/integrations/sources/okta", - "connectionSpecification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Okta Spec", - "type": "object", - "required": [], - "additionalProperties": true, - "properties": { - "domain": { - "type": "string", - "title": "Okta domain", - "description": "The Okta domain. See the docs for instructions on how to find it.", - "airbyte_secret": false - }, - "start_date": { - "type": "string", - "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", - "description": "UTC date and time in the format YYYY-MM-DDTHH:MM:SSZ. Any data before this date will not be replicated.", - "examples": ["2022-07-22T00:00:00Z"], - "title": "Start Date" - }, - "credentials": { - "title": "Authorization Method", - "type": "object", - "oneOf": [ - { - "type": "object", - "title": "OAuth2.0", - "required": [ - "auth_type", - "client_id", - "client_secret", - "refresh_token" - ], - "properties": { - "auth_type": { - "type": "string", - "const": "oauth2.0", - "order": 0 - }, - "client_id": { - "type": "string", - "title": "Client ID", - "description": "The Client ID of your OAuth application.", - "airbyte_secret": true - }, - "client_secret": { - "type": "string", - "title": "Client Secret", - "description": "The Client Secret of your OAuth application.", - "airbyte_secret": true - }, - "refresh_token": { - "type": "string", - "title": "Refresh Token", - "description": "Refresh Token to obtain new Access Token, when it's expired.", - "airbyte_secret": true - } - } - }, - { - "type": "object", - "title": "API Token", - "required": ["auth_type", "api_token"], - "properties": { - "auth_type": { - "type": "string", - "const": "api_token", - "order": 0 - }, - "api_token": { - "type": "string", - "title": "Personal API Token", - "description": "An Okta token. See the docs for instructions on how to generate it.", - "airbyte_secret": true - } - } - } - ] - } - } - } -} diff --git a/airbyte-integrations/connectors/source-okta/source_okta/spec.yaml b/airbyte-integrations/connectors/source-okta/source_okta/spec.yaml new file mode 100644 index 000000000000..d33c025df594 --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/source_okta/spec.yaml @@ -0,0 +1,77 @@ +documentationUrl: https://docs.airbyte.com/integrations/sources/okta +connectionSpecification: + $schema: http://json-schema.org/draft-07/schema# + type: object + required: [] + properties: + credentials: + title: Authorization Method + type: object + oneOf: + - type: object + title: OAuth2.0 + required: + - auth_type + - client_id + - client_secret + - refresh_token + properties: + auth_type: + type: string + const: oauth2.0 + order: 0 + client_id: + type: string + title: Client ID + description: The Client ID of your OAuth application. + airbyte_secret: true + client_secret: + type: string + title: Client Secret + description: The Client Secret of your OAuth application. + airbyte_secret: true + refresh_token: + type: string + title: Refresh Token + description: Refresh Token to obtain new Access Token, when it's expired. + airbyte_secret: true + - type: object + title: API Token + required: + - auth_type + - api_token + properties: + auth_type: + type: string + const: api_token + order: 0 + api_token: + type: string + title: Personal API Token + description: >- + An Okta token. See the docs + for instructions on how to generate it. + airbyte_secret: true + order: 0 + domain: + type: string + title: Okta domain + description: >- + The Okta domain. See the docs for + instructions on how to find it. + airbyte_secret: false + order: 1 + start_date: + type: string + title: Start Date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + description: >- + UTC date and time in the format YYYY-MM-DDTHH:MM:SSZ. Any data before + this date will not be replicated. + examples: + - "2022-07-22T00:00:00Z" + order: 2 + additionalProperties: true diff --git a/airbyte-integrations/connectors/source-okta/source_okta/utils.py b/airbyte-integrations/connectors/source-okta/source_okta/utils.py deleted file mode 100644 index 52639781d6ed..000000000000 --- a/airbyte-integrations/connectors/source-okta/source_okta/utils.py +++ /dev/null @@ -1,81 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -import datetime -import logging -from typing import Any, Mapping -from urllib import parse - -import pendulum -from airbyte_cdk.sources.streams.http.auth import TokenAuthenticator - -from .authenticator import OktaOauth2Authenticator - -logger = logging.getLogger("airbyte") - - -def get_token_refresh_endpoint(config: Mapping[str, Any]) -> str: - return parse.urljoin(get_url_base(config), "/oauth2/v1/token") - - -def initialize_authenticator(config: Mapping[str, Any]): - if "token" in config: - return TokenAuthenticator(config["token"], auth_method="SSWS") - - credentials = config.get("credentials") - if not credentials: - raise Exception("Config validation error. `credentials` not specified.") - - auth_type = credentials.get("auth_type") - if not auth_type: - raise Exception("Config validation error. `auth_type` not specified.") - - if auth_type == "api_token": - return TokenAuthenticator(credentials["api_token"], auth_method="SSWS") - - if auth_type == "oauth2.0": - return OktaOauth2Authenticator( - token_refresh_endpoint=get_token_refresh_endpoint(config), - client_secret=credentials["client_secret"], - client_id=credentials["client_id"], - refresh_token=credentials["refresh_token"], - ) - - -def get_url_base(config: Mapping[str, Any]) -> str: - return config.get("base_url") or f"https://{config['domain']}.okta.com" - - -def get_api_endpoint(config: Mapping[str, Any]) -> str: - return parse.urljoin(get_url_base(config), "/api/v1/") - - -def get_start_date(config: Mapping[str, Any]) -> pendulum.datetime: - # Set start date to default 7 days prior current date if not in config or set in future. - # Docs: https://developer.okta.com/docs/reference/api/system-log/#request-parameters - default_start_date = pendulum.now().subtract(days=7).replace(microsecond=0) - - if "start_date" in config: - start_date = pendulum.parse(config["start_date"]) - else: - message = "Set the start date to default 7 days prior current date." - logger.warning(message) - return default_start_date - - start_date_in_future = start_date.timestamp() > pendulum.now().timestamp() - - if start_date_in_future: - message = "The start date cannot be in the future. Set the start date to default 7 days prior current date." - logger.warning(message) - return default_start_date - - return start_date.replace(microsecond=0) - - -def delete_milliseconds(date: str) -> str: - return pendulum.parse(date).strftime("%Y-%m-%dT%H:%M:%SZ") - - -def datetime_to_string(date: datetime.datetime) -> str: - return date.strftime("%Y-%m-%dT%H:%M:%S.000Z") diff --git a/airbyte-integrations/connectors/source-okta/unit_tests/conftest.py b/airbyte-integrations/connectors/source-okta/unit_tests/conftest.py index c20ab91a7b6c..eef1e7e16ddf 100644 --- a/airbyte-integrations/connectors/source-okta/unit_tests/conftest.py +++ b/airbyte-integrations/connectors/source-okta/unit_tests/conftest.py @@ -1,12 +1,109 @@ # -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. # import pendulum -import pytest +from pytest import fixture -@pytest.fixture() +@fixture +def mock_opportunities_response(): + return { + "data": [ + { + "id": "test_id", + "name": "test_name", + "contact": "test_contact", + "headline": "test_headline", + "stage": "test_stage", + "confidentiality": "non-confidential", + "location": "test_location", + "phones": [{"type": "test_mobile", "value": "test_value"}], + "emails": ["test_emails"], + "links": ["test_link_1", "test_link_2"], + "archived": {"reason": "test_reason", "archivedAt": 1628513942512}, + "tags": [], + "sources": ["test_source_1"], + "stageChanges": [{"toStageId": "test_lead-new", "toStageIndex": 0, "updatedAt": 1628509001183, "userId": "test_userId"}], + "origin": "test_origin", + "sourcedBy": "test_sourcedBy", + "owner": "test_owner", + "followers": ["test_follower"], + "applications": ["test_application"], + "createdAt": 1738509001183, + "updatedAt": 1738542849132, + "lastInteractionAt": 1738513942512, + "lastAdvancedAt": 1738513942512, + "snoozedUntil": None, + "urls": {"list": "https://hire.sandbox.lever.co/candidates", "show": "https://hire.sandbox.lever.co/candidates/test_show"}, + "isAnonymized": False, + "dataProtection": None, + } + ], + "hasNext": False, + "next": "%5B1628543173558%2C%227bf8c1ac-4a68-450f-bea0-a1e2c3f5aeaf%22%5D", + } + + +@fixture +def mock_users_response(): + return { + "data": [ + { + "id": "fake_id", + "name": "fake_name", + "contact": "fake_contact", + "headline": "Airbyte", + "stage": "offer", + "confidentiality": "non-confidential", + "location": "Los Angeles, CA", + "origin": "referred", + "createdAt": 1628510997134, + "updatedAt": 1628542848755, + "isAnonymized": False, + }, + { + "id": "fake_id_2", + "name": "fake_name_2", + "contact": "fake_contact_2", + "headline": "Airbyte", + "stage": "applicant-new", + "confidentiality": "non-confidential", + "location": "Los Angeles, CA", + "origin": "sourced", + "createdAt": 1628509001183, + "updatedAt": 1628542849132, + "isAnonymized": False, + }, + ], + "hasNext": True, + "next": "%5B1628543173558%2C%227bf8c1ac-4a68-450f-bea0-a1e2c3f5aeaf%22%5D", + } + + +@fixture +def mock_users_response_no_next(): + return { + "data": [ + { + "id": "fake_id", + "name": "fake_name", + "contact": "fake_contact", + "headline": "Airbyte", + "stage": "offer", + "confidentiality": "non-confidential", + "location": "Los Angeles, CA", + "origin": "referred", + "createdAt": 1628510997134, + "updatedAt": 1628542848755, + "isAnonymized": False, + }, + ], + "hasNext": False, + } + + +@fixture def url_base(): """ URL base for test @@ -14,7 +111,7 @@ def url_base(): return "https://test_domain.okta.com" -@pytest.fixture() +@fixture def api_url(url_base): """ Just return API url based on url_base @@ -22,7 +119,7 @@ def api_url(url_base): return f"{url_base}" -@pytest.fixture() +@fixture def oauth_config(): """ Credentials for oauth2.0 authorization @@ -38,7 +135,7 @@ def oauth_config(): } -@pytest.fixture() +@fixture def wrong_oauth_config_bad_credentials_record(): """ Malformed Credentials for oauth2.0 authorization @@ -55,7 +152,7 @@ def wrong_oauth_config_bad_credentials_record(): } -@pytest.fixture() +@fixture def wrong_oauth_config_bad_auth_type(): """ Wrong Credentials format for oauth2.0 authorization @@ -71,7 +168,7 @@ def wrong_oauth_config_bad_auth_type(): } -@pytest.fixture() +@fixture def token_config(): """ Just test 'token' @@ -79,7 +176,7 @@ def token_config(): return {"token": "test_token", "start_date": "2021-03-21T20:49:13Z"} -@pytest.fixture() +@fixture def auth_token_config(): """ Credentials for Token Authorization connect @@ -87,13 +184,13 @@ def auth_token_config(): return {"start_date": "2021-03-21T20:49:13Z", "credentials": {"auth_type": "api_token", "api_token": "test_token"}} -@pytest.fixture() +@fixture def user_status_filter(): statuses = ["ACTIVE", "DEPROVISIONED", "LOCKED_OUT", "PASSWORD_EXPIRED", "PROVISIONED", "RECOVERY", "STAGED", "SUSPENDED"] return " or ".join([f'status eq "{status}"' for status in statuses]) -@pytest.fixture() +@fixture def users_instance(api_url): """ Users instance object response @@ -125,7 +222,7 @@ def users_instance(api_url): } -@pytest.fixture() +@fixture def custom_role_instance(api_url): """ Custom Role instance object response @@ -144,7 +241,7 @@ def custom_role_instance(api_url): } -@pytest.fixture() +@fixture def permission_instance(api_url): """ Custom Role instance object response @@ -162,7 +259,7 @@ def permission_instance(api_url): } -@pytest.fixture() +@fixture def groups_instance(api_url): """ Groups instance object response @@ -187,7 +284,7 @@ def groups_instance(api_url): } -@pytest.fixture() +@fixture def group_members_instance(api_url): """ Group Members instance object response @@ -221,7 +318,7 @@ def group_members_instance(api_url): } -@pytest.fixture() +@fixture def group_role_assignments_instance(): """ Group Role Assignment instance object response @@ -271,7 +368,7 @@ def group_role_assignments_instance(): } -@pytest.fixture() +@fixture def user_role_assignments_instance(api_url): """ User Role Assignment instance object response @@ -290,7 +387,7 @@ def user_role_assignments_instance(api_url): } -@pytest.fixture() +@fixture def logs_instance(): """ Logs instance object response @@ -381,7 +478,7 @@ def logs_instance(): } -@pytest.fixture() +@fixture def resource_set_instance(api_url): """ Resource set object instance @@ -401,7 +498,7 @@ def resource_set_instance(api_url): } -@pytest.fixture() +@fixture def latest_record_instance(url_base, api_url): """ Last Record instance object response @@ -425,7 +522,7 @@ def latest_record_instance(url_base, api_url): } -@pytest.fixture() +@fixture def error_while_refreshing_access_token(): """ Error raised when using incorrect access token @@ -433,7 +530,7 @@ def error_while_refreshing_access_token(): return "Error while refreshing access token: 'access_token'" -@pytest.fixture() +@fixture def error_failed_to_authorize_with_provided_credentials(): """ Error raised when using incorrect oauth2.0 credentials @@ -441,6 +538,6 @@ def error_failed_to_authorize_with_provided_credentials(): return "Failed to authenticate with the provided credentials" -@pytest.fixture() +@fixture def start_date(): return pendulum.parse("2021-03-21T20:49:13Z") diff --git a/airbyte-integrations/connectors/source-okta/unit_tests/migration_configs/migrated_config.json b/airbyte-integrations/connectors/source-okta/unit_tests/migration_configs/migrated_config.json new file mode 100644 index 000000000000..2602e8825d85 --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/unit_tests/migration_configs/migrated_config.json @@ -0,0 +1,8 @@ +{ + "domain": "myorg", + "start_date": "2022-07-22T00:00:00Z", + "credentials": { + "auth_type": "api_token", + "api_token": "00uItIsFake_DoNotUseTheTokenEoxoRw_2" + } +} diff --git a/airbyte-integrations/connectors/source-okta/unit_tests/migration_configs/not_migrated_config.json b/airbyte-integrations/connectors/source-okta/unit_tests/migration_configs/not_migrated_config.json new file mode 100644 index 000000000000..e511e21218ce --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/unit_tests/migration_configs/not_migrated_config.json @@ -0,0 +1,5 @@ +{ + "base_url": "https://myorg.abc.com", + "start_date": "2022-07-22T00:00:00Z", + "token": "00uItIsFake_DoNotUseTheTokenEoxoRw_2" +} diff --git a/airbyte-integrations/connectors/source-okta/unit_tests/test_migration.py b/airbyte-integrations/connectors/source-okta/unit_tests/test_migration.py new file mode 100644 index 000000000000..0211ef7e482f --- /dev/null +++ b/airbyte-integrations/connectors/source-okta/unit_tests/test_migration.py @@ -0,0 +1,42 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# + +import json +from typing import Any, Mapping + +from airbyte_cdk.models import OrchestratorType, Type +from airbyte_cdk.sources import Source +from source_okta.config_migration import OktaConfigMigration +from source_okta.source import SourceOkta + +CMD = "check" +SOURCE: Source = SourceOkta() + + +def load_config(config_path: str) -> Mapping[str, Any]: + with open(config_path, "r") as config: + return json.load(config) + + +class TestMigrateConfig: + test_not_migrated_config_path = "unit_tests/migration_configs/not_migrated_config.json" + test_migrated_config_path = "unit_tests/migration_configs/migrated_config.json" + + def test_migrate_config(self, capsys): + config = load_config(self.test_not_migrated_config_path) + assert "domain" not in config + migration_instance = OktaConfigMigration() + migration_instance.migrate([CMD, "--config", self.test_not_migrated_config_path], SOURCE) + control_msg = json.loads(capsys.readouterr().out) + assert control_msg["type"] == Type.CONTROL.value + assert control_msg["control"]["type"] == OrchestratorType.CONNECTOR_CONFIG.value + migrated_config = control_msg["control"]["connectorConfig"]["config"] + assert migrated_config["domain"] == "myorg" + assert migrated_config["credentials"]["auth_type"] == "api_token" + + def test_should_not_migrate(self): + config = load_config(self.test_migrated_config_path) + assert config["domain"] + migration_instance = OktaConfigMigration() + assert not migration_instance.should_migrate(config) diff --git a/airbyte-integrations/connectors/source-okta/unit_tests/test_source.py b/airbyte-integrations/connectors/source-okta/unit_tests/test_source.py index 613e3415177c..5f83eb47abb2 100644 --- a/airbyte-integrations/connectors/source-okta/unit_tests/test_source.py +++ b/airbyte-integrations/connectors/source-okta/unit_tests/test_source.py @@ -1,103 +1,82 @@ # -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. # -from unittest.mock import MagicMock +from source_okta.custom_authenticators import CustomBearerAuthenticator, CustomOauth2Authenticator +from source_okta.source import SourceOkta -from airbyte_cdk.sources.streams.http.auth import TokenAuthenticator -from source_okta.authenticator import OktaOauth2Authenticator -from source_okta.source import ( - CustomRoles, - GroupMembers, - GroupRoleAssignments, - Groups, - Logs, - SourceOkta, - UserRoleAssignments, - Users, - initialize_authenticator, -) + +def get_oauth_keys(oauth_config): + oauth_keys = {} + oauth_keys["client_id"] = oauth_config["client_id"] class TestAuthentication: def test_init_token_authentication_init(self, token_config, auth_token_config): - token_authenticator_instance = initialize_authenticator(config=token_config) - assert isinstance(token_authenticator_instance, TokenAuthenticator) + token_authenticator_instance = CustomBearerAuthenticator(parameters=None, config=token_config) + assert isinstance(token_authenticator_instance, CustomBearerAuthenticator) - token_authenticator_instance = initialize_authenticator(config=auth_token_config) - assert isinstance(token_authenticator_instance, TokenAuthenticator) + token_authenticator_instance = CustomBearerAuthenticator(parameters=None, config=auth_token_config) + assert isinstance(token_authenticator_instance, CustomBearerAuthenticator) def test_init_oauth2_authentication_init(self, oauth_config): - oauth_authentication_instance = initialize_authenticator(config=oauth_config) - assert isinstance(oauth_authentication_instance, OktaOauth2Authenticator) + oauth_kwargs = {key: value for key, value in oauth_config.get("credentials").items() if key != "auth_type"} + oauth_kwargs["token_refresh_endpoint"] = "https://okta.com/token-refresh" + oauth_authentication_instance = CustomOauth2Authenticator(config=oauth_config, **oauth_kwargs, parameters=None) + assert isinstance(oauth_authentication_instance, CustomOauth2Authenticator) def test_init_oauth2_authentication_wrong_credentials_record(self, wrong_oauth_config_bad_credentials_record): try: - initialize_authenticator(config=wrong_oauth_config_bad_credentials_record) + # Creating dummy kwargs so that the CustomOauth2Authenticator constructor does not throw errors + oauth_kwargs = { + "token_refresh_endpoint": "https://okta.com/token-refresh", + "client_id": "abc", + "client_secret": "def", + "refresh_token": "ghi", + } + CustomOauth2Authenticator(config=wrong_oauth_config_bad_credentials_record, **oauth_kwargs, parameters=None) except Exception as e: assert e.args[0] == "Config validation error. `credentials` not specified." def test_init_oauth2_authentication_wrong_oauth_config_bad_auth_type(self, wrong_oauth_config_bad_auth_type): try: - initialize_authenticator(config=wrong_oauth_config_bad_auth_type) + # Creating dummy kwargs so that the CustomOauth2Authenticator constructor does not throw errors + oauth_kwargs = { + "token_refresh_endpoint": "https://okta.com/token-refresh", + "client_id": "abc", + "client_secret": "def", + "refresh_token": "ghi", + } + CustomOauth2Authenticator(config=wrong_oauth_config_bad_auth_type, **oauth_kwargs, parameters=None) except Exception as e: assert e.args[0] == "Config validation error. `auth_type` not specified." - def test_check_connection_ok(self, requests_mock, oauth_config, api_url): - oauth_authentication_instance = initialize_authenticator(config=oauth_config) - assert isinstance(oauth_authentication_instance, OktaOauth2Authenticator) - - source_okta = SourceOkta() - requests_mock.get(f"{api_url}/api/v1/users?limit=1", json={"connect": "ok"}) - requests_mock.post(f"{api_url}/oauth2/v1/token", json={"access_token": "test_token", "expires_in": 948}) - assert source_okta.check_connection(logger=MagicMock(), config=oauth_config) == (True, None) - - def test_check_connection_error_status_code(self, requests_mock, oauth_config, api_url): - oauth_authentication_instance = initialize_authenticator(config=oauth_config) - assert isinstance(oauth_authentication_instance, OktaOauth2Authenticator) - - source_okta = SourceOkta() - requests_mock.get(f"{api_url}/api/v1/users?limit=1", status_code=400, json={}) - requests_mock.post(f"{api_url}/oauth2/v1/token", json={"access_token": "test_token", "expires_in": 948}) - - assert source_okta.check_connection(logger=MagicMock(), config=oauth_config) == (False, {}) - - def test_check_connection_error_with_exception( - self, requests_mock, oauth_config, api_url, error_failed_to_authorize_with_provided_credentials - ): - oauth_authentication_instance = initialize_authenticator(config=oauth_config) - assert isinstance(oauth_authentication_instance, OktaOauth2Authenticator) - - source_okta = SourceOkta() - requests_mock.get(f"{api_url}/api/v1/users?limit=1", status_code=400, json="ss") - requests_mock.post(f"{api_url}/oauth2/v1/token", json={"access_token": "test_token", "expires_in": 948}) - - assert source_okta.check_connection(logger=MagicMock(), config="wrong_config") == ( - False, - error_failed_to_authorize_with_provided_credentials, - ) - def test_check_streams(self, requests_mock, oauth_config, api_url): - oauth_authentication_instance = initialize_authenticator(config=oauth_config) - assert isinstance(oauth_authentication_instance, OktaOauth2Authenticator) - + oauth_kwargs = {key: value for key, value in oauth_config.get("credentials").items() if key != "auth_type"} + oauth_kwargs["token_refresh_endpoint"] = f"{api_url}/oauth2/v1/token" + oauth_authentication_instance = CustomOauth2Authenticator(config=oauth_config, **oauth_kwargs, parameters=None) + assert isinstance(oauth_authentication_instance, CustomOauth2Authenticator) source_okta = SourceOkta() - requests_mock.get(f"{api_url}/api/v1/users?limit=1", json={"connect": "ok"}) - requests_mock.post(f"{api_url}/oauth2/v1/token", json={"access_token": "test_token", "expires_in": 948}) streams = source_okta.streams(config=oauth_config) - for i, _ in enumerate([Groups, Logs, Users, GroupMembers, CustomRoles, UserRoleAssignments, GroupRoleAssignments]): - assert isinstance(streams[i], _) + for i, _ in enumerate(streams): + assert _.__class__.__name__ == "DeclarativeStream" def test_oauth2_refresh_token_ok(self, requests_mock, oauth_config, api_url): - oauth_authentication_instance = initialize_authenticator(config=oauth_config) - assert isinstance(oauth_authentication_instance, OktaOauth2Authenticator) + oauth_kwargs = {key: value for key, value in oauth_config.get("credentials").items() if key != "auth_type"} + oauth_kwargs["token_refresh_endpoint"] = f"{api_url}/oauth2/v1/token" + oauth_authentication_instance = CustomOauth2Authenticator(config=oauth_config, **oauth_kwargs, parameters=None) + assert isinstance(oauth_authentication_instance, CustomOauth2Authenticator) + oauth_authentication_instance.path = f"{api_url}/oauth2/v1/token" requests_mock.post(f"{api_url}/oauth2/v1/token", json={"access_token": "test_token", "expires_in": 948}) result = oauth_authentication_instance.refresh_access_token() assert result == ("test_token", 948) def test_oauth2_refresh_token_failed(self, requests_mock, oauth_config, api_url, error_while_refreshing_access_token): - oauth_authentication_instance = initialize_authenticator(config=oauth_config) - assert isinstance(oauth_authentication_instance, OktaOauth2Authenticator) + oauth_kwargs = {key: value for key, value in oauth_config.get("credentials").items() if key != "auth_type"} + oauth_kwargs["token_refresh_endpoint"] = f"{api_url}/oauth2/v1/token" + oauth_authentication_instance = CustomOauth2Authenticator(config=oauth_config, **oauth_kwargs, parameters=None) + assert isinstance(oauth_authentication_instance, CustomOauth2Authenticator) + oauth_authentication_instance.path = f"{api_url}/oauth2/v1/token" requests_mock.post(f"{api_url}/oauth2/v1/token", json={"token": "test_token", "expires_in": 948}) try: oauth_authentication_instance.refresh_access_token() diff --git a/airbyte-integrations/connectors/source-okta/unit_tests/test_streams.py b/airbyte-integrations/connectors/source-okta/unit_tests/test_streams.py index 2265d6ebf0e2..6e14236e362d 100644 --- a/airbyte-integrations/connectors/source-okta/unit_tests/test_streams.py +++ b/airbyte-integrations/connectors/source-okta/unit_tests/test_streams.py @@ -1,42 +1,25 @@ # -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. # -import datetime import time -from abc import ABC from http import HTTPStatus +from typing import Any, Mapping from unittest.mock import MagicMock import pytest import requests -from airbyte_cdk.models import SyncMode -from source_okta.source import ( - CustomRoles, - GroupMembers, - GroupRoleAssignments, - Groups, - IncrementalOktaStream, - Logs, - OktaStream, - Permissions, - ResourceSets, - UserRoleAssignments, - Users, -) +from airbyte_cdk.sources.streams import Stream +from source_okta.custom_authenticators import CustomBearerAuthenticator, CustomOauth2Authenticator +from source_okta.source import SourceOkta -@pytest.fixture -def patch_base_class(mocker): - """ - Base patcher for used streams - """ - mocker.patch.object(OktaStream, "path", "v0/example_endpoint") - mocker.patch.object(OktaStream, "primary_key", "test_primary_key") - mocker.patch.object(OktaStream, "__abstractmethods__", set()) - mocker.patch.object(IncrementalOktaStream, "path", "v0/example_endpoint") - mocker.patch.object(IncrementalOktaStream, "primary_key", "test_primary_key") - mocker.patch.object(IncrementalOktaStream, "__abstractmethods__", set()) +def get_stream_by_name(stream_name: str, config: Mapping[str, Any]) -> Stream: + source = SourceOkta() + matches_by_name = [stream_config for stream_config in source.streams(config) if stream_config.name == stream_name] + if not matches_by_name: + raise ValueError("Please provide a valid stream name.") + return matches_by_name[0] class TestStatusCodes: @@ -49,351 +32,90 @@ class TestStatusCodes: (HTTPStatus.INTERNAL_SERVER_ERROR, True), ], ) - def test_should_retry(self, patch_base_class, http_status, should_retry, url_base, start_date): + def test_should_retry(self, http_status, should_retry, url_base, start_date, requests_mock, oauth_config, api_url): + oauth_kwargs = {key: value for key, value in oauth_config.get("credentials").items() if key != "auth_type"} + oauth_kwargs["token_refresh_endpoint"] = f"{api_url}/oauth2/v1/token" + oauth_authentication_instance = CustomOauth2Authenticator(config=oauth_config, **oauth_kwargs, parameters=None) + oauth_authentication_instance.path = f"{api_url}/oauth2/v1/token" + assert isinstance(oauth_authentication_instance, CustomOauth2Authenticator) + source_okta = SourceOkta() + requests_mock.get(f"{api_url}/api/v1/users?limit=1", status_code=400, json={}) + requests_mock.post(f"{api_url}/oauth2/v1/token", json={"access_token": "test_token", "expires_in": 948}) response_mock = MagicMock() response_mock.status_code = http_status - stream = OktaStream(url_base=url_base, start_date=start_date) - assert stream.should_retry(response_mock) == should_retry + stream = source_okta.streams(config=oauth_config)[0] + assert stream.retriever.requester._should_retry(response_mock) == should_retry class TestOktaStream: - def test_okta_stream_request_params(self, patch_base_class, url_base, start_date): - stream = OktaStream(url_base=url_base, start_date=start_date) + def test_okta_stream_request_params(self, oauth_config, url_base, start_date): + stream = get_stream_by_name("custom_roles", config=oauth_config) inputs = {"stream_slice": None, "stream_state": None, "next_page_token": None} - expected_params = {"limit": 200} - assert stream.request_params(**inputs) == expected_params + expected_params = {} + assert stream.retriever.requester.get_request_params(**inputs) == expected_params - def test_okta_stream_parse_response(self, patch_base_class, requests_mock, url_base, api_url, start_date): - stream = OktaStream(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}", json=[{"a": 123}, {"b": "xx"}]) - resp = requests.get(f"{api_url}") - inputs = {"response": resp, "stream_state": MagicMock(), "stream_slice": {}} - expected_parsed_object = [{"a": 123}, {"b": "xx"}] - assert list(stream.parse_response(**inputs)) == expected_parsed_object - - def test_okta_stream_backoff_time(self, patch_base_class, url_base, start_date): + def test_okta_stream_backoff_time(self, url_base, start_date, oauth_config): response_mock = requests.Response() - stream = OktaStream(url_base=url_base, start_date=start_date) - expected_backoff_time = None - assert stream.backoff_time(response_mock) == expected_backoff_time + response_mock.status_code = 429 + stream = get_stream_by_name("custom_roles", config=oauth_config) + expected_backoff_time = 60.0 + assert stream.retriever.requester._backoff_time(response_mock) == expected_backoff_time - def test_okta_stream_incremental_request_params(self, patch_base_class, url_base, start_date): - stream = IncrementalOktaStream(url_base=url_base, start_date=start_date) + def test_okta_stream_incremental_request_params(self, oauth_config, url_base, start_date): + stream = get_stream_by_name("logs", config=oauth_config) inputs = {"stream_slice": None, "stream_state": None, "next_page_token": None} - expected_params = {"filter": 'None gt "2021-03-21T20:49:13.000Z"', "limit": 200} - assert stream.request_params(**inputs) == expected_params - - def test_incremental_okta_stream_parse_response(self, patch_base_class, requests_mock, url_base, api_url, start_date): - stream = IncrementalOktaStream(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}", json=[{"a": 123}, {"b": "xx"}]) - resp = requests.get(f"{api_url}") - inputs = {"response": resp, "stream_state": MagicMock(), "stream_slice": {}} - expected_parsed_object = [{"a": 123}, {"b": "xx"}] - assert list(stream.parse_response(**inputs)) == expected_parsed_object - - def test_incremental_okta_stream_backoff_time(self, patch_base_class, url_base, start_date): - response_mock = MagicMock() - stream = IncrementalOktaStream(url_base=url_base, start_date=start_date) - expected_backoff_time = None - assert stream.backoff_time(response_mock) == expected_backoff_time - - def test_okta_stream_incremental_backoff_time_empty(self, patch_base_class, url_base, start_date): - stream = IncrementalOktaStream(url_base=url_base, start_date=start_date) - response = MagicMock(requests.Response) - response.status_code = 200 - expected_params = None - inputs = {"response": response} - assert stream.backoff_time(**inputs) == expected_params + assert list(stream.retriever.requester.get_request_params(**inputs).keys())[0] == "since" - def test_okta_stream_incremental_back_off_now(self, patch_base_class, url_base, start_date): - stream = IncrementalOktaStream(url_base=url_base, start_date=start_date) - response = MagicMock(requests.Response) + def test_incremental_okta_stream_backoff_time(self, oauth_config, url_base, start_date): + response_mock = requests.Response() + response_mock.status_code = 501 + stream = get_stream_by_name("users", config=oauth_config) + expected_backoff_time = 60.0 + assert stream.retriever.requester._backoff_time(response_mock) == expected_backoff_time + + def test_okta_stream_incremental_back_off_now(self, oauth_config, url_base, start_date): + stream = get_stream_by_name("users", config=oauth_config) + response = requests.Response() response.status_code = requests.codes.TOO_MANY_REQUESTS - response.headers = {"x-rate-limit-reset": int(time.time())} - expected_params = (0, 2) + response.headers = {"x-rate-limit-reset": int(time.time()) + 130} + expected_params = (60, 120) inputs = {"response": response} - get_backoff_time = stream.backoff_time(**inputs) + get_backoff_time = stream.retriever.requester._backoff_time(**inputs) assert expected_params[0] <= get_backoff_time <= expected_params[1] - def test_okta_stream_incremental_get_updated_state(self, patch_base_class, latest_record_instance, url_base, start_date): - class TestIncrementalOktaStream(IncrementalOktaStream, ABC): - def __init__(self, url_base: str, *args, **kwargs): - super().__init__(url_base, *args, **kwargs) - self._cursor_field = None - - @property - def cursor_field(self) -> str: - return self._cursor_field - - stream = TestIncrementalOktaStream(url_base=url_base, start_date=start_date) - stream._cursor_field = "lastUpdated" - current_stream_state = {"lastUpdated": "2021-04-21T21:03:55.000Z"} - update_state = stream.get_updated_state(current_stream_state=current_stream_state, latest_record=latest_record_instance) - expected_result = {"lastUpdated": "2022-07-18T07:58:11.000Z"} - assert update_state == expected_result - - def test_okta_stream_http_method(self, patch_base_class, url_base, start_date): - stream = OktaStream(url_base=url_base, start_date=start_date) + def test_okta_stream_http_method(self, oauth_config, url_base, start_date): + stream = get_stream_by_name("users", config=oauth_config) expected_method = "GET" - assert stream.http_method == expected_method + assert stream.retriever.requester.http_method.value == expected_method class TestNextPageToken: - def test_next_page_token(self, patch_base_class, users_instance, url_base, api_url, start_date): - stream = OktaStream(url_base=url_base, start_date=start_date) + def test_next_page_token(self, oauth_config, users_instance, url_base, api_url, start_date): + stream = get_stream_by_name("users", config=oauth_config) response = MagicMock(requests.Response) response.links = {"next": {"url": f"{api_url}?param1=test_value1¶m2=test_value2"}} + response.headers = {} inputs = {"response": response} - expected_token = {"param1": "test_value1", "param2": "test_value2"} - result = stream.next_page_token(**inputs) + expected_token = {"next_page_token": "https://test_domain.okta.com?param1=test_value1¶m2=test_value2"} + result = stream.retriever._next_page_token(**inputs) assert result == expected_token - def test_next_page_token_empty_params(self, patch_base_class, users_instance, url_base, api_url, start_date): - stream = OktaStream(url_base=url_base, start_date=start_date) + def test_next_page_token_empty_params(self, oauth_config, users_instance, url_base, api_url, start_date): + stream = get_stream_by_name("users", config=oauth_config) response = MagicMock(requests.Response) response.links = {"next": {"url": f"{api_url}"}} + response.headers = {} inputs = {"response": response} - expected_token = {} - result = stream.next_page_token(**inputs) + expected_token = {"next_page_token": "https://test_domain.okta.com"} + result = stream.retriever._next_page_token(**inputs) assert result == expected_token - def test_next_page_token_link_have_self_and_equal_next(self, patch_base_class, users_instance, url_base, api_url, start_date): - stream = OktaStream(url_base=url_base, start_date=start_date) + def test_next_page_token_link_have_self_and_equal_next(self, oauth_config, users_instance, url_base, api_url, start_date): + stream = get_stream_by_name("users", config=oauth_config) response = MagicMock(requests.Response) response.links = {"next": {"url": f"{api_url}"}, "self": {"url": f"{api_url}"}} + response.headers = {} inputs = {"response": response} expected_token = None - result = stream.next_page_token(**inputs) + result = stream.retriever._next_page_token(**inputs) assert result == expected_token - - -class TestStreamUsers: - def test_stream_users(self, requests_mock, patch_base_class, users_instance, url_base, api_url, start_date): - stream = Users(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}/users", json=[users_instance]) - inputs = {"sync_mode": SyncMode.incremental} - assert list(stream.read_records(**inputs)) == [users_instance] - - def test_users_request_params_out_of_next_page_token(self, patch_base_class, url_base, user_status_filter, start_date): - stream = Users(url_base=url_base, start_date=start_date) - inputs = {"stream_slice": None, "stream_state": None, "next_page_token": None} - expected_params = {"limit": 200, "filter": f'lastUpdated gt "2021-03-21T20:49:13.000Z" and ({user_status_filter})'} - assert stream.request_params(**inputs) == expected_params - - def test_users_source_request_params_have_next_cursor(self, patch_base_class, url_base, user_status_filter, start_date): - stream = Users(url_base=url_base, start_date=start_date) - inputs = {"stream_slice": None, "stream_state": None, "next_page_token": {"next_cursor": "123"}} - expected_params = { - "limit": 200, - "next_cursor": "123", - "filter": f'lastUpdated gt "2021-03-21T20:49:13.000Z" and ({user_status_filter})', - } - assert stream.request_params(**inputs) == expected_params - - def test_users_source_request_params_have_latest_entry(self, patch_base_class, url_base, user_status_filter, start_date): - stream = Users(url_base=url_base, start_date=start_date) - inputs = {"stream_slice": None, "stream_state": {"lastUpdated": "some_date"}, "next_page_token": {"next_cursor": "123"}} - expected_params = {"limit": 200, "next_cursor": "123", "filter": f'lastUpdated gt "some_date" and ({user_status_filter})'} - assert stream.request_params(**inputs) == expected_params - - def test_users_source_parse_response(self, requests_mock, patch_base_class, users_instance, url_base, api_url, start_date): - stream = Users(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}", json=[users_instance]) - inputs = {"response": requests.get(f"{api_url}"), "stream_state": MagicMock(), "stream_slice": {}} - assert list(stream.parse_response(**inputs)) == [users_instance] - - -class TestStreamCustomRoles: - def test_custom_roles(self, requests_mock, patch_base_class, custom_role_instance, url_base, api_url, start_date): - stream = CustomRoles(url_base=url_base, start_date=start_date) - record = {"roles": [custom_role_instance]} - requests_mock.get(f"{api_url}/iam/roles?limit=200", json=record) - inputs = {"sync_mode": SyncMode.incremental} - assert list(stream.read_records(**inputs)) == record["roles"] - - def test_custom_roles_parse_response(self, requests_mock, patch_base_class, custom_role_instance, url_base, api_url, start_date): - stream = CustomRoles(url_base=url_base, start_date=start_date) - record = {"roles": [custom_role_instance]} - requests_mock.get(f"{api_url}", json=record) - inputs = {"response": requests.get(f"{api_url}"), "stream_state": MagicMock(), "stream_slice": {}} - assert list(stream.parse_response(**inputs)) == [custom_role_instance] - - -class TestStreamPermissions: - def test_permissions(self, requests_mock, patch_base_class, permission_instance, url_base, api_url, start_date): - stream = Permissions(url_base=url_base, start_date=start_date) - record = {"permissions": [permission_instance]} - role_id = "test_role_id" - requests_mock.get(f"{api_url}/iam/roles/{role_id}/permissions", json=record) - inputs = {"sync_mode": SyncMode.full_refresh, "stream_state": {}, "stream_slice": {"role_id": role_id}} - assert list(stream.read_records(**inputs)) == record["permissions"] - - def test_permissions_parse_response(self, requests_mock, patch_base_class, permission_instance, url_base, api_url, start_date): - stream = Permissions(url_base=url_base, start_date=start_date) - record = {"permissions": [permission_instance]} - requests_mock.get(f"{api_url}", json=record) - inputs = {"response": requests.get(f"{api_url}"), "stream_state": MagicMock(), "stream_slice": {}} - assert list(stream.parse_response(**inputs)) == [permission_instance] - - -class TestStreamGroups: - def test_groups(self, requests_mock, patch_base_class, groups_instance, url_base, api_url, start_date): - stream = Groups(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}/groups?limit=200", json=[groups_instance]) - inputs = {"sync_mode": SyncMode.incremental} - assert list(stream.read_records(**inputs)) == [groups_instance] - - def test_groups_parse_response(self, requests_mock, patch_base_class, groups_instance, url_base, api_url, start_date): - stream = Groups(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}", json=[groups_instance]) - inputs = {"response": requests.get(f"{api_url}"), "stream_state": MagicMock(), "stream_slice": {}} - assert list(stream.parse_response(**inputs)) == [groups_instance] - - -class TestStreamGroupMembers: - def test_group_members(self, requests_mock, patch_base_class, group_members_instance, url_base, api_url, start_date): - stream = GroupMembers(url_base=url_base, start_date=start_date) - group_id = "test_group_id" - requests_mock.get(f"{api_url}/groups/{group_id}/users?limit=200", json=[group_members_instance]) - inputs = {"sync_mode": SyncMode.full_refresh, "stream_state": {}, "stream_slice": {"group_id": group_id}} - assert list(stream.read_records(**inputs)) == [group_members_instance] - - def test_group_members_parse_response(self, requests_mock, patch_base_class, group_members_instance, url_base, api_url, start_date): - stream = GroupMembers(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}", json=[group_members_instance]) - inputs = {"response": requests.get(f"{api_url}"), "stream_state": MagicMock(), "stream_slice": {"group_id": "test_group_id"}} - assert list(stream.parse_response(**inputs)) == [group_members_instance] - - def test_group_members_request_params_with_latest_entry(self, patch_base_class, group_members_instance, url_base, api_url, start_date): - stream = GroupMembers(url_base=url_base, start_date=start_date) - inputs = { - "stream_slice": {"group_id": "some_group"}, - "stream_state": {"id": "some_test_id"}, - } - assert stream.request_params(**inputs) == { - "limit": 200, - "after": "some_test_id", - } - - def test_group_members_slice_stream( - self, requests_mock, patch_base_class, group_members_instance, groups_instance, url_base, api_url, start_date - ): - stream = GroupMembers(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}/groups?limit=200", json=[groups_instance]) - assert list(stream.stream_slices()) == [{"group_id": "test_group_id"}] - - -class TestStreamGroupRoleAssignment: - def test_group_role_assignments(self, requests_mock, patch_base_class, group_role_assignments_instance, url_base, api_url, start_date): - stream = GroupRoleAssignments(url_base=url_base, start_date=start_date) - group_id = "test_group_id" - mock_address = f"{api_url}/groups/{group_id}/roles?limit=200" - requests_mock.get(mock_address, json=[group_role_assignments_instance]) - inputs = {"sync_mode": SyncMode.full_refresh, "stream_state": {}, "stream_slice": {"group_id": group_id}} - assert list(stream.read_records(**inputs)) == [group_role_assignments_instance] - - def test_group_role_assignments_parse_response( - self, requests_mock, patch_base_class, group_role_assignments_instance, url_base, api_url, start_date - ): - stream = GroupRoleAssignments(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}", json=[group_role_assignments_instance]) - inputs = {"response": requests.get(f"{api_url}"), "stream_state": MagicMock(), "stream_slice": {"group_id": "test_group_id"}} - assert list(stream.parse_response(**inputs)) == [group_role_assignments_instance] - - def test_group_role_assignments_slice_stream( - self, requests_mock, patch_base_class, group_members_instance, groups_instance, url_base, api_url, start_date - ): - stream = GroupRoleAssignments(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}/groups?limit=200", json=[groups_instance]) - assert list(stream.stream_slices()) == [{"group_id": "test_group_id"}] - - -class TestStreamLogs: - def test_logs(self, requests_mock, patch_base_class, logs_instance, url_base, api_url, start_date): - stream = Logs(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}/logs?limit=200", json=[logs_instance]) - inputs = {"sync_mode": SyncMode.incremental} - assert list(stream.read_records(**inputs)) == [logs_instance] - - def test_logs_parse_response(self, requests_mock, patch_base_class, logs_instance, url_base, api_url, start_date): - stream = Logs(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}/logs?limit=200", json=[logs_instance]) - inputs = {"response": requests.get(f"{api_url}/logs?limit=200"), "stream_state": MagicMock(), "stream_slice": {}} - assert list(stream.parse_response(**inputs)) == [logs_instance] - - def test_logs_request_params_for_since(self, patch_base_class, logs_instance, url_base, start_date): - stream = Logs(url_base=url_base, start_date=start_date) - inputs = {"stream_state": {"published": "2022-07-19T15:54:11.545Z"}, "stream_slice": None} - assert stream.request_params(**inputs) == { - "limit": 200, - "since": "2022-07-19T15:54:11.545Z", - } - - def test_logs_request_params_for_until(self, patch_base_class, logs_instance, url_base, start_date): - stream = Logs(url_base=url_base, start_date=start_date) - testing_date = datetime.datetime.utcnow() + datetime.timedelta(days=10) - inputs = {"stream_state": {"published": testing_date.isoformat()}, "stream_slice": None} - assert stream.request_params(**inputs) == {"limit": 200, "since": testing_date.isoformat()} - - -class TestStreamUserRoleAssignment: - def test_user_role_assignments(self, requests_mock, patch_base_class, user_role_assignments_instance, url_base, api_url, start_date): - stream = UserRoleAssignments(url_base=url_base, start_date=start_date) - user_id = "test_user_id" - mock_address = f"{api_url}/users/{user_id}/roles?limit=200" - requests_mock.get(mock_address, json=[user_role_assignments_instance]) - inputs = {"sync_mode": SyncMode.full_refresh, "stream_state": {}, "stream_slice": {"user_id": user_id}} - assert list(stream.read_records(**inputs)) == [user_role_assignments_instance] - - def test_user_role_assignments_parse_response( - self, requests_mock, patch_base_class, user_role_assignments_instance, url_base, api_url, start_date - ): - stream = UserRoleAssignments(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}", json=[user_role_assignments_instance]) - inputs = {"response": requests.get(f"{api_url}"), "stream_state": MagicMock(), "stream_slice": {"user_id": "test_user_id"}} - assert list(stream.parse_response(**inputs)) == [user_role_assignments_instance] - - def test_user_role_assignments_slice_stream( - self, requests_mock, patch_base_class, group_members_instance, users_instance, url_base, api_url, start_date - ): - stream = UserRoleAssignments(url_base=url_base, start_date=start_date) - requests_mock.get(f"{api_url}/users?limit=200", json=[users_instance]) - assert list(stream.stream_slices()) == [{"user_id": "test_user_id"}] - - -class TestStreamResourceSets: - def test_resource_sets(self, requests_mock, patch_base_class, resource_set_instance, url_base, api_url, start_date): - stream = ResourceSets(url_base=url_base, start_date=start_date) - record = {"resource-sets": [resource_set_instance]} - requests_mock.get(f"{api_url}/iam/resource-sets", json=record) - inputs = {"sync_mode": SyncMode.incremental} - assert list(stream.read_records(**inputs)) == record["resource-sets"] - - def test_resource_sets_parse_response(self, requests_mock, patch_base_class, resource_set_instance, url_base, api_url, start_date): - stream = ResourceSets(url_base=url_base, start_date=start_date) - record = {"resource-sets": [resource_set_instance]} - requests_mock.get(f"{api_url}", json=record) - inputs = {"response": requests.get(f"{api_url}"), "stream_state": MagicMock(), "stream_slice": {}} - assert list(stream.parse_response(**inputs)) == [resource_set_instance] - - def test_resource_sets_next_page_token(self, requests_mock, patch_base_class, resource_set_instance, url_base, api_url, start_date): - stream = ResourceSets(url_base=url_base, start_date=start_date) - cursor = "iam5cursorFybecursor" - response = MagicMock(requests.Response) - next_link = f"{url_base}/iam/resource-sets?after={cursor}" - response.json = MagicMock(return_value={"_links": {"next": {"href": next_link}}, "resource-sets": [resource_set_instance]}) - inputs = {"response": response} - result = stream.next_page_token(**inputs) - assert result == {"after": cursor} - - response.json = MagicMock(return_value={"resource-sets": [resource_set_instance]}) - inputs = {"response": response} - result = stream.next_page_token(**inputs) - assert result is None - - def test_resource_sets_request_params(self, requests_mock, patch_base_class, resource_set_instance, url_base, api_url, start_date): - stream = ResourceSets(url_base=url_base, start_date=start_date) - cursor = "iam5cursorFybecursor" - inputs = {"stream_slice": None, "stream_state": {"id": cursor}, "next_page_token": {"after": cursor}} - expected_params = {"limit": 200, "after": "iam5cursorFybecursor"} - assert stream.request_params(**inputs) == expected_params diff --git a/airbyte-integrations/connectors/source-okta/unit_tests/test_utils.py b/airbyte-integrations/connectors/source-okta/unit_tests/test_utils.py deleted file mode 100644 index b5a62f801e43..000000000000 --- a/airbyte-integrations/connectors/source-okta/unit_tests/test_utils.py +++ /dev/null @@ -1,32 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -import pendulum -import pytest -from source_okta.utils import get_start_date - - -@pytest.mark.parametrize( - "config, expected_date, expected_messages", - [ - ( - {"start_date": "2022-07-22T00:00:00Z"}, - pendulum.parse("2022-07-22T00:00:00Z"), - [], - ), - ( - {"start_date": "3033-07-22T00:00:00Z"}, - pendulum.now().subtract(days=7).replace(microsecond=0), - ["The start date cannot be in the future. Set the start date to default 7 days prior current date."], - ), - ( - {}, - pendulum.now().subtract(days=7).replace(microsecond=0), - ["Set the start date to default 7 days prior current date."], - ), - ], -) -def test_get_start_date(caplog, config, expected_date, expected_messages): - assert get_start_date(config).date() == expected_date.date() - assert caplog.messages == expected_messages diff --git a/docs/integrations/sources/okta.md b/docs/integrations/sources/okta.md index ae0de902d20c..8e1ba5a882d7 100644 --- a/docs/integrations/sources/okta.md +++ b/docs/integrations/sources/okta.md @@ -82,7 +82,8 @@ The connector is restricted by normal Okta [requests limitation](https://develop ## Changelog | Version | Date | Pull Request | Subject | -| :------ | :--------- | :------------------------------------------------------- | :----------------------------------------------------------------------------- | +|:--------|:-----------|:---------------------------------------------------------|:-------------------------------------------------------------------------------| +| 0.2.0 | 2024-05-16 | [36509](https://github.com/airbytehq/airbyte/pull/36509) | Migrate to Low Code | | 0.1.16 | 2023-07-07 | [20833](https://github.com/airbytehq/airbyte/pull/20833) | Fix infinite loop for GroupMembers stream | | 0.1.15 | 2023-06-20 | [27533](https://github.com/airbytehq/airbyte/pull/27533) | Fixed group member stream and resource sets stream pagination | | 0.1.14 | 2022-12-24 | [20877](https://github.com/airbytehq/airbyte/pull/20877) | Disabled OAuth2.0 authorization method |