From c7335da65b5ea21fd125b0d47d5aa7708a3e5df0 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 26 Aug 2025 05:55:25 +0000
Subject: [PATCH 01/13] chore(internal): change ci workflow machines
---
.github/workflows/ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8e2df5a..b798809 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -42,7 +42,7 @@ jobs:
permissions:
contents: read
id-token: write
- runs-on: depot-ubuntu-24.04
+ runs-on: ${{ github.repository == 'stainless-sdks/openint-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@v4
From b388433332d18e139ff4d2ff5aa2f57edf4e4091 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 26 Aug 2025 20:11:17 +0000
Subject: [PATCH 02/13] feat(api): renaming connectionConfigs
---
.stats.yml | 2 +-
api.md | 4 +-
src/openint/_client.py | 216 +++++++++---------
src/openint/types/__init__.py | 6 +-
...> client_list_connector_configs_params.py} | 4 +-
....py => list_connector_configs_response.py} | 4 +-
tests/api_resources/test_client.py | 122 +++++-----
7 files changed, 178 insertions(+), 180 deletions(-)
rename src/openint/types/{client_list_connection_configs_params.py => client_list_connector_configs_params.py} (97%)
rename src/openint/types/{list_connection_configs_response.py => list_connector_configs_response.py} (99%)
diff --git a/.stats.yml b/.stats.yml
index 83e5743..bbc913c 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 20
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-b0f1cc110198f358326983457f50440f062a5cc7531eb0c5ed854e8bcc2eb78a.yml
openapi_spec_hash: 69a97c17db26ec2cc6da820a63baeb4f
-config_hash: bc2ed32362cf85854a332d7ee8bdd35a
+config_hash: 61b25dd271bd118bf6213c0ee305cfb8
diff --git a/api.md b/api.md
index 7637276..be3a2a5 100644
--- a/api.md
+++ b/api.md
@@ -18,8 +18,8 @@ from openint.types import (
GetConnectionResponse,
GetCurrentUserResponse,
ListAssignmentsResponse,
- ListConnectionConfigsResponse,
ListConnectionsResponse,
+ ListConnectorConfigsResponse,
ListConnectorsResponse,
ListConnnectorConfigsResponse,
ListCustomersResponse,
@@ -44,8 +44,8 @@ Methods:
- client.get_connection(id, \*\*params) -> GetConnectionResponse
- client.get_current_user() -> GetCurrentUserResponse
- client.list_assignments(id) -> ListAssignmentsResponse
-- client.list_connection_configs(\*\*params) -> SyncOffsetPagination[ListConnectionConfigsResponse]
- client.list_connections(\*\*params) -> SyncOffsetPagination[ListConnectionsResponse]
+- client.list_connector_configs(\*\*params) -> SyncOffsetPagination[ListConnectorConfigsResponse]
- client.list_connectors(\*\*params) -> SyncOffsetPagination[ListConnectorsResponse]
- client.list_connnector_configs(\*\*params) -> SyncOffsetPagination[ListConnnectorConfigsResponse]
- client.list_customers(\*\*params) -> SyncOffsetPagination[ListCustomersResponse]
diff --git a/src/openint/_client.py b/src/openint/_client.py
index e4be7d0..46203ca 100644
--- a/src/openint/_client.py
+++ b/src/openint/_client.py
@@ -20,7 +20,7 @@
client_list_connections_params,
client_create_connection_params,
client_get_conector_config_params,
- client_list_connection_configs_params,
+ client_list_connector_configs_params,
client_list_connnector_configs_params,
client_create_connnector_config_params,
client_upsert_connnector_config_params,
@@ -76,8 +76,8 @@
from .types.delete_connection_response import DeleteConnectionResponse
from .types.get_conector_config_response import GetConectorConfigResponse
from .types.upsert_organization_response import UpsertOrganizationResponse
+from .types.list_connector_configs_response import ListConnectorConfigsResponse
from .types.delete_connector_config_response import DeleteConnectorConfigResponse
-from .types.list_connection_configs_response import ListConnectionConfigsResponse
from .types.list_connnector_configs_response import ListConnnectorConfigsResponse
from .types.create_connnector_config_response import CreateConnnectorConfigResponse
from .types.upsert_connnector_config_response import UpsertConnnectorConfigResponse
@@ -722,9 +722,11 @@ def list_assignments(
cast_to=ListAssignmentsResponse,
)
- def list_connection_configs(
+ def list_connections(
self,
*,
+ connection_ids: List[str] | NotGiven = NOT_GIVEN,
+ connector_config_id: str | NotGiven = NOT_GIVEN,
connector_names: List[
Literal[
"accelo",
@@ -901,25 +903,42 @@ def list_connection_configs(
]
]
| NotGiven = NOT_GIVEN,
- expand: List[Literal["connector", "connector.schemas", "connection_count"]] | NotGiven = NOT_GIVEN,
+ customer_id: str | NotGiven = NOT_GIVEN,
+ expand: List[Literal["connector"]] | NotGiven = NOT_GIVEN,
+ include_secrets: bool | NotGiven = NOT_GIVEN,
limit: int | NotGiven = NOT_GIVEN,
offset: int | NotGiven = NOT_GIVEN,
- search_query: Optional[str] | NotGiven = NOT_GIVEN,
+ refresh_policy: Literal["none", "force", "auto"] | NotGiven = NOT_GIVEN,
+ repl_id: str | NotGiven = NOT_GIVEN,
+ search_query: str | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SyncOffsetPagination[ListConnectionConfigsResponse]:
- """
- List Configured Connectors
+ ) -> SyncOffsetPagination[ListConnectionsResponse]:
+ """List all connections with optional filtering.
+
+ Does not retrieve secrets or
+ perform any connection healthcheck. For that use `getConnection` or
+ `checkConnectionHealth`.
Args:
+ connector_config_id: The id of the connector config, starts with `ccfg_`
+
+ customer_id: The id of the customer in your application. Ensure it is unique for that
+ customer.
+
+ expand: Expand the response with additional optionals
+
limit: Limit the number of items returned
offset: Offset the items returned
+ refresh_policy: Controls credential refresh: none (never), force (always), or auto (when
+ expired, default)
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -929,8 +948,8 @@ def list_connection_configs(
timeout: Override the client-level default timeout for this request, in seconds
"""
return self.get_api_list(
- "/v2/connector-config",
- page=SyncOffsetPagination[ListConnectionConfigsResponse],
+ "/v2/connection",
+ page=SyncOffsetPagination[ListConnectionsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -938,25 +957,27 @@ def list_connection_configs(
timeout=timeout,
query=maybe_transform(
{
+ "connection_ids": connection_ids,
+ "connector_config_id": connector_config_id,
"connector_names": connector_names,
+ "customer_id": customer_id,
"expand": expand,
+ "include_secrets": include_secrets,
"limit": limit,
"offset": offset,
+ "refresh_policy": refresh_policy,
+ "repl_id": repl_id,
"search_query": search_query,
},
- client_list_connection_configs_params.ClientListConnectionConfigsParams,
+ client_list_connections_params.ClientListConnectionsParams,
),
),
- model=cast(
- Any, ListConnectionConfigsResponse
- ), # Union types cannot be passed in as arguments in the type system
+ model=cast(Any, ListConnectionsResponse), # Union types cannot be passed in as arguments in the type system
)
- def list_connections(
+ def list_connector_configs(
self,
*,
- connection_ids: List[str] | NotGiven = NOT_GIVEN,
- connector_config_id: str | NotGiven = NOT_GIVEN,
connector_names: List[
Literal[
"accelo",
@@ -1133,42 +1154,25 @@ def list_connections(
]
]
| NotGiven = NOT_GIVEN,
- customer_id: str | NotGiven = NOT_GIVEN,
- expand: List[Literal["connector"]] | NotGiven = NOT_GIVEN,
- include_secrets: bool | NotGiven = NOT_GIVEN,
+ expand: List[Literal["connector", "connector.schemas", "connection_count"]] | NotGiven = NOT_GIVEN,
limit: int | NotGiven = NOT_GIVEN,
offset: int | NotGiven = NOT_GIVEN,
- refresh_policy: Literal["none", "force", "auto"] | NotGiven = NOT_GIVEN,
- repl_id: str | NotGiven = NOT_GIVEN,
- search_query: str | NotGiven = NOT_GIVEN,
+ search_query: Optional[str] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SyncOffsetPagination[ListConnectionsResponse]:
- """List all connections with optional filtering.
-
- Does not retrieve secrets or
- perform any connection healthcheck. For that use `getConnection` or
- `checkConnectionHealth`.
+ ) -> SyncOffsetPagination[ListConnectorConfigsResponse]:
+ """
+ List Configured Connectors
Args:
- connector_config_id: The id of the connector config, starts with `ccfg_`
-
- customer_id: The id of the customer in your application. Ensure it is unique for that
- customer.
-
- expand: Expand the response with additional optionals
-
limit: Limit the number of items returned
offset: Offset the items returned
- refresh_policy: Controls credential refresh: none (never), force (always), or auto (when
- expired, default)
-
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -1178,8 +1182,8 @@ def list_connections(
timeout: Override the client-level default timeout for this request, in seconds
"""
return self.get_api_list(
- "/v2/connection",
- page=SyncOffsetPagination[ListConnectionsResponse],
+ "/v2/connector-config",
+ page=SyncOffsetPagination[ListConnectorConfigsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -1187,22 +1191,18 @@ def list_connections(
timeout=timeout,
query=maybe_transform(
{
- "connection_ids": connection_ids,
- "connector_config_id": connector_config_id,
"connector_names": connector_names,
- "customer_id": customer_id,
"expand": expand,
- "include_secrets": include_secrets,
"limit": limit,
"offset": offset,
- "refresh_policy": refresh_policy,
- "repl_id": repl_id,
"search_query": search_query,
},
- client_list_connections_params.ClientListConnectionsParams,
+ client_list_connector_configs_params.ClientListConnectorConfigsParams,
),
),
- model=cast(Any, ListConnectionsResponse), # Union types cannot be passed in as arguments in the type system
+ model=cast(
+ Any, ListConnectorConfigsResponse
+ ), # Union types cannot be passed in as arguments in the type system
)
def list_connectors(
@@ -2381,9 +2381,11 @@ async def list_assignments(
cast_to=ListAssignmentsResponse,
)
- def list_connection_configs(
+ def list_connections(
self,
*,
+ connection_ids: List[str] | NotGiven = NOT_GIVEN,
+ connector_config_id: str | NotGiven = NOT_GIVEN,
connector_names: List[
Literal[
"accelo",
@@ -2560,25 +2562,42 @@ def list_connection_configs(
]
]
| NotGiven = NOT_GIVEN,
- expand: List[Literal["connector", "connector.schemas", "connection_count"]] | NotGiven = NOT_GIVEN,
+ customer_id: str | NotGiven = NOT_GIVEN,
+ expand: List[Literal["connector"]] | NotGiven = NOT_GIVEN,
+ include_secrets: bool | NotGiven = NOT_GIVEN,
limit: int | NotGiven = NOT_GIVEN,
offset: int | NotGiven = NOT_GIVEN,
- search_query: Optional[str] | NotGiven = NOT_GIVEN,
+ refresh_policy: Literal["none", "force", "auto"] | NotGiven = NOT_GIVEN,
+ repl_id: str | NotGiven = NOT_GIVEN,
+ search_query: str | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncPaginator[ListConnectionConfigsResponse, AsyncOffsetPagination[ListConnectionConfigsResponse]]:
- """
- List Configured Connectors
+ ) -> AsyncPaginator[ListConnectionsResponse, AsyncOffsetPagination[ListConnectionsResponse]]:
+ """List all connections with optional filtering.
+
+ Does not retrieve secrets or
+ perform any connection healthcheck. For that use `getConnection` or
+ `checkConnectionHealth`.
Args:
+ connector_config_id: The id of the connector config, starts with `ccfg_`
+
+ customer_id: The id of the customer in your application. Ensure it is unique for that
+ customer.
+
+ expand: Expand the response with additional optionals
+
limit: Limit the number of items returned
offset: Offset the items returned
+ refresh_policy: Controls credential refresh: none (never), force (always), or auto (when
+ expired, default)
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -2588,8 +2607,8 @@ def list_connection_configs(
timeout: Override the client-level default timeout for this request, in seconds
"""
return self.get_api_list(
- "/v2/connector-config",
- page=AsyncOffsetPagination[ListConnectionConfigsResponse],
+ "/v2/connection",
+ page=AsyncOffsetPagination[ListConnectionsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -2597,25 +2616,27 @@ def list_connection_configs(
timeout=timeout,
query=maybe_transform(
{
+ "connection_ids": connection_ids,
+ "connector_config_id": connector_config_id,
"connector_names": connector_names,
+ "customer_id": customer_id,
"expand": expand,
+ "include_secrets": include_secrets,
"limit": limit,
"offset": offset,
+ "refresh_policy": refresh_policy,
+ "repl_id": repl_id,
"search_query": search_query,
},
- client_list_connection_configs_params.ClientListConnectionConfigsParams,
+ client_list_connections_params.ClientListConnectionsParams,
),
),
- model=cast(
- Any, ListConnectionConfigsResponse
- ), # Union types cannot be passed in as arguments in the type system
+ model=cast(Any, ListConnectionsResponse), # Union types cannot be passed in as arguments in the type system
)
- def list_connections(
+ def list_connector_configs(
self,
*,
- connection_ids: List[str] | NotGiven = NOT_GIVEN,
- connector_config_id: str | NotGiven = NOT_GIVEN,
connector_names: List[
Literal[
"accelo",
@@ -2792,42 +2813,25 @@ def list_connections(
]
]
| NotGiven = NOT_GIVEN,
- customer_id: str | NotGiven = NOT_GIVEN,
- expand: List[Literal["connector"]] | NotGiven = NOT_GIVEN,
- include_secrets: bool | NotGiven = NOT_GIVEN,
+ expand: List[Literal["connector", "connector.schemas", "connection_count"]] | NotGiven = NOT_GIVEN,
limit: int | NotGiven = NOT_GIVEN,
offset: int | NotGiven = NOT_GIVEN,
- refresh_policy: Literal["none", "force", "auto"] | NotGiven = NOT_GIVEN,
- repl_id: str | NotGiven = NOT_GIVEN,
- search_query: str | NotGiven = NOT_GIVEN,
+ search_query: Optional[str] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncPaginator[ListConnectionsResponse, AsyncOffsetPagination[ListConnectionsResponse]]:
- """List all connections with optional filtering.
-
- Does not retrieve secrets or
- perform any connection healthcheck. For that use `getConnection` or
- `checkConnectionHealth`.
+ ) -> AsyncPaginator[ListConnectorConfigsResponse, AsyncOffsetPagination[ListConnectorConfigsResponse]]:
+ """
+ List Configured Connectors
Args:
- connector_config_id: The id of the connector config, starts with `ccfg_`
-
- customer_id: The id of the customer in your application. Ensure it is unique for that
- customer.
-
- expand: Expand the response with additional optionals
-
limit: Limit the number of items returned
offset: Offset the items returned
- refresh_policy: Controls credential refresh: none (never), force (always), or auto (when
- expired, default)
-
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -2837,8 +2841,8 @@ def list_connections(
timeout: Override the client-level default timeout for this request, in seconds
"""
return self.get_api_list(
- "/v2/connection",
- page=AsyncOffsetPagination[ListConnectionsResponse],
+ "/v2/connector-config",
+ page=AsyncOffsetPagination[ListConnectorConfigsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -2846,22 +2850,18 @@ def list_connections(
timeout=timeout,
query=maybe_transform(
{
- "connection_ids": connection_ids,
- "connector_config_id": connector_config_id,
"connector_names": connector_names,
- "customer_id": customer_id,
"expand": expand,
- "include_secrets": include_secrets,
"limit": limit,
"offset": offset,
- "refresh_policy": refresh_policy,
- "repl_id": repl_id,
"search_query": search_query,
},
- client_list_connections_params.ClientListConnectionsParams,
+ client_list_connector_configs_params.ClientListConnectorConfigsParams,
),
),
- model=cast(Any, ListConnectionsResponse), # Union types cannot be passed in as arguments in the type system
+ model=cast(
+ Any, ListConnectorConfigsResponse
+ ), # Union types cannot be passed in as arguments in the type system
)
def list_connectors(
@@ -3441,12 +3441,12 @@ def __init__(self, client: Openint) -> None:
self.list_assignments = to_raw_response_wrapper(
client.list_assignments,
)
- self.list_connection_configs = to_raw_response_wrapper(
- client.list_connection_configs,
- )
self.list_connections = to_raw_response_wrapper(
client.list_connections,
)
+ self.list_connector_configs = to_raw_response_wrapper(
+ client.list_connector_configs,
+ )
self.list_connectors = to_raw_response_wrapper(
client.list_connectors,
)
@@ -3508,12 +3508,12 @@ def __init__(self, client: AsyncOpenint) -> None:
self.list_assignments = async_to_raw_response_wrapper(
client.list_assignments,
)
- self.list_connection_configs = async_to_raw_response_wrapper(
- client.list_connection_configs,
- )
self.list_connections = async_to_raw_response_wrapper(
client.list_connections,
)
+ self.list_connector_configs = async_to_raw_response_wrapper(
+ client.list_connector_configs,
+ )
self.list_connectors = async_to_raw_response_wrapper(
client.list_connectors,
)
@@ -3575,12 +3575,12 @@ def __init__(self, client: Openint) -> None:
self.list_assignments = to_streamed_response_wrapper(
client.list_assignments,
)
- self.list_connection_configs = to_streamed_response_wrapper(
- client.list_connection_configs,
- )
self.list_connections = to_streamed_response_wrapper(
client.list_connections,
)
+ self.list_connector_configs = to_streamed_response_wrapper(
+ client.list_connector_configs,
+ )
self.list_connectors = to_streamed_response_wrapper(
client.list_connectors,
)
@@ -3642,12 +3642,12 @@ def __init__(self, client: AsyncOpenint) -> None:
self.list_assignments = async_to_streamed_response_wrapper(
client.list_assignments,
)
- self.list_connection_configs = async_to_streamed_response_wrapper(
- client.list_connection_configs,
- )
self.list_connections = async_to_streamed_response_wrapper(
client.list_connections,
)
+ self.list_connector_configs = async_to_streamed_response_wrapper(
+ client.list_connector_configs,
+ )
self.list_connectors = async_to_streamed_response_wrapper(
client.list_connectors,
)
diff --git a/src/openint/types/__init__.py b/src/openint/types/__init__.py
index e3a3efc..0d45edf 100644
--- a/src/openint/types/__init__.py
+++ b/src/openint/types/__init__.py
@@ -28,15 +28,13 @@
from .client_upsert_customer_params import ClientUpsertCustomerParams as ClientUpsertCustomerParams
from .client_list_connections_params import ClientListConnectionsParams as ClientListConnectionsParams
from .client_create_connection_params import ClientCreateConnectionParams as ClientCreateConnectionParams
+from .list_connector_configs_response import ListConnectorConfigsResponse as ListConnectorConfigsResponse
from .delete_connector_config_response import DeleteConnectorConfigResponse as DeleteConnectorConfigResponse
-from .list_connection_configs_response import ListConnectionConfigsResponse as ListConnectionConfigsResponse
from .list_connnector_configs_response import ListConnnectorConfigsResponse as ListConnnectorConfigsResponse
from .client_get_conector_config_params import ClientGetConectorConfigParams as ClientGetConectorConfigParams
from .create_connnector_config_response import CreateConnnectorConfigResponse as CreateConnnectorConfigResponse
from .upsert_connnector_config_response import UpsertConnnectorConfigResponse as UpsertConnnectorConfigResponse
-from .client_list_connection_configs_params import (
- ClientListConnectionConfigsParams as ClientListConnectionConfigsParams,
-)
+from .client_list_connector_configs_params import ClientListConnectorConfigsParams as ClientListConnectorConfigsParams
from .client_list_connnector_configs_params import (
ClientListConnnectorConfigsParams as ClientListConnnectorConfigsParams,
)
diff --git a/src/openint/types/client_list_connection_configs_params.py b/src/openint/types/client_list_connector_configs_params.py
similarity index 97%
rename from src/openint/types/client_list_connection_configs_params.py
rename to src/openint/types/client_list_connector_configs_params.py
index 8d59f50..1002ca5 100644
--- a/src/openint/types/client_list_connection_configs_params.py
+++ b/src/openint/types/client_list_connector_configs_params.py
@@ -5,10 +5,10 @@
from typing import List, Optional
from typing_extensions import Literal, TypedDict
-__all__ = ["ClientListConnectionConfigsParams"]
+__all__ = ["ClientListConnectorConfigsParams"]
-class ClientListConnectionConfigsParams(TypedDict, total=False):
+class ClientListConnectorConfigsParams(TypedDict, total=False):
connector_names: List[
Literal[
"accelo",
diff --git a/src/openint/types/list_connection_configs_response.py b/src/openint/types/list_connector_configs_response.py
similarity index 99%
rename from src/openint/types/list_connection_configs_response.py
rename to src/openint/types/list_connector_configs_response.py
index b86432a..465b478 100644
--- a/src/openint/types/list_connection_configs_response.py
+++ b/src/openint/types/list_connector_configs_response.py
@@ -10,7 +10,7 @@
from .integration import Integration
__all__ = [
- "ListConnectionConfigsResponse",
+ "ListConnectorConfigsResponse",
"ConnectorAcceloDiscriminatedConnectorConfig",
"ConnectorAcceloDiscriminatedConnectorConfigConfig",
"ConnectorAcceloDiscriminatedConnectorConfigConfigOAuth",
@@ -8274,7 +8274,7 @@ class ConnectorYodleeDiscriminatedConnectorConfig(BaseModel):
updated_at: Optional[str] = None
-ListConnectionConfigsResponse: TypeAlias = Union[
+ListConnectorConfigsResponse: TypeAlias = Union[
ConnectorAcceloDiscriminatedConnectorConfig,
ConnectorAcmeApikeyDiscriminatedConnectorConfig,
ConnectorAcmeOauth2DiscriminatedConnectorConfig,
diff --git a/tests/api_resources/test_client.py b/tests/api_resources/test_client.py
index 0605ec3..0d41e56 100644
--- a/tests/api_resources/test_client.py
+++ b/tests/api_resources/test_client.py
@@ -26,8 +26,8 @@
DeleteConnectionResponse,
GetConectorConfigResponse,
UpsertOrganizationResponse,
+ ListConnectorConfigsResponse,
DeleteConnectorConfigResponse,
- ListConnectionConfigsResponse,
ListConnnectorConfigsResponse,
CreateConnnectorConfigResponse,
UpsertConnnectorConfigResponse,
@@ -625,87 +625,87 @@ def test_path_params_list_assignments(self, client: Openint) -> None:
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- def test_method_list_connection_configs(self, client: Openint) -> None:
- client_ = client.list_connection_configs()
- assert_matches_type(SyncOffsetPagination[ListConnectionConfigsResponse], client_, path=["response"])
+ def test_method_list_connections(self, client: Openint) -> None:
+ client_ = client.list_connections()
+ assert_matches_type(SyncOffsetPagination[ListConnectionsResponse], client_, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- def test_method_list_connection_configs_with_all_params(self, client: Openint) -> None:
- client_ = client.list_connection_configs(
+ def test_method_list_connections_with_all_params(self, client: Openint) -> None:
+ client_ = client.list_connections(
+ connection_ids=["conn_"],
+ connector_config_id="ccfg_",
connector_names=["accelo"],
+ customer_id="customer_id",
expand=["connector"],
+ include_secrets=True,
limit=0,
offset=0,
+ refresh_policy="none",
+ repl_id="repl_id",
search_query="search_query",
)
- assert_matches_type(SyncOffsetPagination[ListConnectionConfigsResponse], client_, path=["response"])
+ assert_matches_type(SyncOffsetPagination[ListConnectionsResponse], client_, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- def test_raw_response_list_connection_configs(self, client: Openint) -> None:
- response = client.with_raw_response.list_connection_configs()
+ def test_raw_response_list_connections(self, client: Openint) -> None:
+ response = client.with_raw_response.list_connections()
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
client_ = response.parse()
- assert_matches_type(SyncOffsetPagination[ListConnectionConfigsResponse], client_, path=["response"])
+ assert_matches_type(SyncOffsetPagination[ListConnectionsResponse], client_, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- def test_streaming_response_list_connection_configs(self, client: Openint) -> None:
- with client.with_streaming_response.list_connection_configs() as response:
+ def test_streaming_response_list_connections(self, client: Openint) -> None:
+ with client.with_streaming_response.list_connections() as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
client_ = response.parse()
- assert_matches_type(SyncOffsetPagination[ListConnectionConfigsResponse], client_, path=["response"])
+ assert_matches_type(SyncOffsetPagination[ListConnectionsResponse], client_, path=["response"])
assert cast(Any, response.is_closed) is True
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- def test_method_list_connections(self, client: Openint) -> None:
- client_ = client.list_connections()
- assert_matches_type(SyncOffsetPagination[ListConnectionsResponse], client_, path=["response"])
+ def test_method_list_connector_configs(self, client: Openint) -> None:
+ client_ = client.list_connector_configs()
+ assert_matches_type(SyncOffsetPagination[ListConnectorConfigsResponse], client_, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- def test_method_list_connections_with_all_params(self, client: Openint) -> None:
- client_ = client.list_connections(
- connection_ids=["conn_"],
- connector_config_id="ccfg_",
+ def test_method_list_connector_configs_with_all_params(self, client: Openint) -> None:
+ client_ = client.list_connector_configs(
connector_names=["accelo"],
- customer_id="customer_id",
expand=["connector"],
- include_secrets=True,
limit=0,
offset=0,
- refresh_policy="none",
- repl_id="repl_id",
search_query="search_query",
)
- assert_matches_type(SyncOffsetPagination[ListConnectionsResponse], client_, path=["response"])
+ assert_matches_type(SyncOffsetPagination[ListConnectorConfigsResponse], client_, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- def test_raw_response_list_connections(self, client: Openint) -> None:
- response = client.with_raw_response.list_connections()
+ def test_raw_response_list_connector_configs(self, client: Openint) -> None:
+ response = client.with_raw_response.list_connector_configs()
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
client_ = response.parse()
- assert_matches_type(SyncOffsetPagination[ListConnectionsResponse], client_, path=["response"])
+ assert_matches_type(SyncOffsetPagination[ListConnectorConfigsResponse], client_, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- def test_streaming_response_list_connections(self, client: Openint) -> None:
- with client.with_streaming_response.list_connections() as response:
+ def test_streaming_response_list_connector_configs(self, client: Openint) -> None:
+ with client.with_streaming_response.list_connector_configs() as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
client_ = response.parse()
- assert_matches_type(SyncOffsetPagination[ListConnectionsResponse], client_, path=["response"])
+ assert_matches_type(SyncOffsetPagination[ListConnectorConfigsResponse], client_, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -1589,87 +1589,87 @@ async def test_path_params_list_assignments(self, async_client: AsyncOpenint) ->
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- async def test_method_list_connection_configs(self, async_client: AsyncOpenint) -> None:
- client = await async_client.list_connection_configs()
- assert_matches_type(AsyncOffsetPagination[ListConnectionConfigsResponse], client, path=["response"])
+ async def test_method_list_connections(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.list_connections()
+ assert_matches_type(AsyncOffsetPagination[ListConnectionsResponse], client, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- async def test_method_list_connection_configs_with_all_params(self, async_client: AsyncOpenint) -> None:
- client = await async_client.list_connection_configs(
+ async def test_method_list_connections_with_all_params(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.list_connections(
+ connection_ids=["conn_"],
+ connector_config_id="ccfg_",
connector_names=["accelo"],
+ customer_id="customer_id",
expand=["connector"],
+ include_secrets=True,
limit=0,
offset=0,
+ refresh_policy="none",
+ repl_id="repl_id",
search_query="search_query",
)
- assert_matches_type(AsyncOffsetPagination[ListConnectionConfigsResponse], client, path=["response"])
+ assert_matches_type(AsyncOffsetPagination[ListConnectionsResponse], client, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- async def test_raw_response_list_connection_configs(self, async_client: AsyncOpenint) -> None:
- response = await async_client.with_raw_response.list_connection_configs()
+ async def test_raw_response_list_connections(self, async_client: AsyncOpenint) -> None:
+ response = await async_client.with_raw_response.list_connections()
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
client = await response.parse()
- assert_matches_type(AsyncOffsetPagination[ListConnectionConfigsResponse], client, path=["response"])
+ assert_matches_type(AsyncOffsetPagination[ListConnectionsResponse], client, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- async def test_streaming_response_list_connection_configs(self, async_client: AsyncOpenint) -> None:
- async with async_client.with_streaming_response.list_connection_configs() as response:
+ async def test_streaming_response_list_connections(self, async_client: AsyncOpenint) -> None:
+ async with async_client.with_streaming_response.list_connections() as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
client = await response.parse()
- assert_matches_type(AsyncOffsetPagination[ListConnectionConfigsResponse], client, path=["response"])
+ assert_matches_type(AsyncOffsetPagination[ListConnectionsResponse], client, path=["response"])
assert cast(Any, response.is_closed) is True
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- async def test_method_list_connections(self, async_client: AsyncOpenint) -> None:
- client = await async_client.list_connections()
- assert_matches_type(AsyncOffsetPagination[ListConnectionsResponse], client, path=["response"])
+ async def test_method_list_connector_configs(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.list_connector_configs()
+ assert_matches_type(AsyncOffsetPagination[ListConnectorConfigsResponse], client, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- async def test_method_list_connections_with_all_params(self, async_client: AsyncOpenint) -> None:
- client = await async_client.list_connections(
- connection_ids=["conn_"],
- connector_config_id="ccfg_",
+ async def test_method_list_connector_configs_with_all_params(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.list_connector_configs(
connector_names=["accelo"],
- customer_id="customer_id",
expand=["connector"],
- include_secrets=True,
limit=0,
offset=0,
- refresh_policy="none",
- repl_id="repl_id",
search_query="search_query",
)
- assert_matches_type(AsyncOffsetPagination[ListConnectionsResponse], client, path=["response"])
+ assert_matches_type(AsyncOffsetPagination[ListConnectorConfigsResponse], client, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- async def test_raw_response_list_connections(self, async_client: AsyncOpenint) -> None:
- response = await async_client.with_raw_response.list_connections()
+ async def test_raw_response_list_connector_configs(self, async_client: AsyncOpenint) -> None:
+ response = await async_client.with_raw_response.list_connector_configs()
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
client = await response.parse()
- assert_matches_type(AsyncOffsetPagination[ListConnectionsResponse], client, path=["response"])
+ assert_matches_type(AsyncOffsetPagination[ListConnectorConfigsResponse], client, path=["response"])
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
- async def test_streaming_response_list_connections(self, async_client: AsyncOpenint) -> None:
- async with async_client.with_streaming_response.list_connections() as response:
+ async def test_streaming_response_list_connector_configs(self, async_client: AsyncOpenint) -> None:
+ async with async_client.with_streaming_response.list_connector_configs() as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
client = await response.parse()
- assert_matches_type(AsyncOffsetPagination[ListConnectionsResponse], client, path=["response"])
+ assert_matches_type(AsyncOffsetPagination[ListConnectorConfigsResponse], client, path=["response"])
assert cast(Any, response.is_closed) is True
From d5af5d822322bc00c43778ecd388fcb1865ab778 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 26 Aug 2025 21:20:22 +0000
Subject: [PATCH 03/13] feat(api): org api updates
---
.stats.yml | 6 +-
api.md | 2 -
src/openint/_client.py | 81 ------------------
src/openint/types/__init__.py | 1 -
.../types/upsert_organization_response.py | 11 ---
tests/api_resources/test_client.py | 85 -------------------
6 files changed, 3 insertions(+), 183 deletions(-)
delete mode 100644 src/openint/types/upsert_organization_response.py
diff --git a/.stats.yml b/.stats.yml
index bbc913c..f7b0d60 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 20
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-b0f1cc110198f358326983457f50440f062a5cc7531eb0c5ed854e8bcc2eb78a.yml
-openapi_spec_hash: 69a97c17db26ec2cc6da820a63baeb4f
+configured_endpoints: 19
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-5d7be7748789c7dc809c42528c6d7a033a5836964ecbd673842714ef82ed8335.yml
+openapi_spec_hash: bc09645d3ed0e895692e7dba584e4a94
config_hash: 61b25dd271bd118bf6213c0ee305cfb8
diff --git a/api.md b/api.md
index be3a2a5..fa770fd 100644
--- a/api.md
+++ b/api.md
@@ -26,7 +26,6 @@ from openint.types import (
ListEventsResponse,
UpsertConnnectorConfigResponse,
UpsertCustomerResponse,
- UpsertOrganizationResponse,
)
```
@@ -52,4 +51,3 @@ Methods:
- client.list_events(\*\*params) -> SyncOffsetPagination[ListEventsResponse]
- client.upsert_connnector_config(id, \*\*params) -> UpsertConnnectorConfigResponse
- client.upsert_customer(\*\*params) -> UpsertCustomerResponse
-- client.upsert_organization(org_id) -> UpsertOrganizationResponse
diff --git a/src/openint/_client.py b/src/openint/_client.py
index 46203ca..5938082 100644
--- a/src/openint/_client.py
+++ b/src/openint/_client.py
@@ -75,7 +75,6 @@
from .types.delete_assignment_response import DeleteAssignmentResponse
from .types.delete_connection_response import DeleteConnectionResponse
from .types.get_conector_config_response import GetConectorConfigResponse
-from .types.upsert_organization_response import UpsertOrganizationResponse
from .types.list_connector_configs_response import ListConnectorConfigsResponse
from .types.delete_connector_config_response import DeleteConnectorConfigResponse
from .types.list_connnector_configs_response import ListConnnectorConfigsResponse
@@ -1676,40 +1675,6 @@ def upsert_customer(
cast_to=UpsertCustomerResponse,
)
- def upsert_organization(
- self,
- org_id: str,
- *,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> UpsertOrganizationResponse:
- """Upsert an organization by ID.
-
- Creates if it does not exist.
-
- Args:
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not org_id:
- raise ValueError(f"Expected a non-empty value for `org_id` but received {org_id!r}")
- return self.put(
- f"/v2/organization/{org_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=UpsertOrganizationResponse,
- )
-
@override
def _make_status_error(
self,
@@ -3335,40 +3300,6 @@ async def upsert_customer(
cast_to=UpsertCustomerResponse,
)
- async def upsert_organization(
- self,
- org_id: str,
- *,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> UpsertOrganizationResponse:
- """Upsert an organization by ID.
-
- Creates if it does not exist.
-
- Args:
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not org_id:
- raise ValueError(f"Expected a non-empty value for `org_id` but received {org_id!r}")
- return await self.put(
- f"/v2/organization/{org_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=UpsertOrganizationResponse,
- )
-
@override
def _make_status_error(
self,
@@ -3465,9 +3396,6 @@ def __init__(self, client: Openint) -> None:
self.upsert_customer = to_raw_response_wrapper(
client.upsert_customer,
)
- self.upsert_organization = to_raw_response_wrapper(
- client.upsert_organization,
- )
class AsyncOpenintWithRawResponse:
@@ -3532,9 +3460,6 @@ def __init__(self, client: AsyncOpenint) -> None:
self.upsert_customer = async_to_raw_response_wrapper(
client.upsert_customer,
)
- self.upsert_organization = async_to_raw_response_wrapper(
- client.upsert_organization,
- )
class OpenintWithStreamedResponse:
@@ -3599,9 +3524,6 @@ def __init__(self, client: Openint) -> None:
self.upsert_customer = to_streamed_response_wrapper(
client.upsert_customer,
)
- self.upsert_organization = to_streamed_response_wrapper(
- client.upsert_organization,
- )
class AsyncOpenintWithStreamedResponse:
@@ -3666,9 +3588,6 @@ def __init__(self, client: AsyncOpenint) -> None:
self.upsert_customer = async_to_streamed_response_wrapper(
client.upsert_customer,
)
- self.upsert_organization = async_to_streamed_response_wrapper(
- client.upsert_organization,
- )
Client = Openint
diff --git a/src/openint/types/__init__.py b/src/openint/types/__init__.py
index 0d45edf..e1667af 100644
--- a/src/openint/types/__init__.py
+++ b/src/openint/types/__init__.py
@@ -23,7 +23,6 @@
from .client_get_connection_params import ClientGetConnectionParams as ClientGetConnectionParams
from .client_list_customers_params import ClientListCustomersParams as ClientListCustomersParams
from .get_conector_config_response import GetConectorConfigResponse as GetConectorConfigResponse
-from .upsert_organization_response import UpsertOrganizationResponse as UpsertOrganizationResponse
from .client_list_connectors_params import ClientListConnectorsParams as ClientListConnectorsParams
from .client_upsert_customer_params import ClientUpsertCustomerParams as ClientUpsertCustomerParams
from .client_list_connections_params import ClientListConnectionsParams as ClientListConnectionsParams
diff --git a/src/openint/types/upsert_organization_response.py b/src/openint/types/upsert_organization_response.py
deleted file mode 100644
index ddad82a..0000000
--- a/src/openint/types/upsert_organization_response.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from .._models import BaseModel
-
-__all__ = ["UpsertOrganizationResponse"]
-
-
-class UpsertOrganizationResponse(BaseModel):
- id: str
-
- created: bool
diff --git a/tests/api_resources/test_client.py b/tests/api_resources/test_client.py
index 0d41e56..ce3713c 100644
--- a/tests/api_resources/test_client.py
+++ b/tests/api_resources/test_client.py
@@ -25,7 +25,6 @@
DeleteAssignmentResponse,
DeleteConnectionResponse,
GetConectorConfigResponse,
- UpsertOrganizationResponse,
ListConnectorConfigsResponse,
DeleteConnectorConfigResponse,
ListConnnectorConfigsResponse,
@@ -956,48 +955,6 @@ def test_streaming_response_upsert_customer(self, client: Openint) -> None:
assert cast(Any, response.is_closed) is True
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_method_upsert_organization(self, client: Openint) -> None:
- client_ = client.upsert_organization(
- "x",
- )
- assert_matches_type(UpsertOrganizationResponse, client_, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_raw_response_upsert_organization(self, client: Openint) -> None:
- response = client.with_raw_response.upsert_organization(
- "x",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- client_ = response.parse()
- assert_matches_type(UpsertOrganizationResponse, client_, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_streaming_response_upsert_organization(self, client: Openint) -> None:
- with client.with_streaming_response.upsert_organization(
- "x",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- client_ = response.parse()
- assert_matches_type(UpsertOrganizationResponse, client_, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_path_params_upsert_organization(self, client: Openint) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `org_id` but received ''"):
- client.with_raw_response.upsert_organization(
- "",
- )
-
class TestAsyncClient:
parametrize = pytest.mark.parametrize(
@@ -1919,45 +1876,3 @@ async def test_streaming_response_upsert_customer(self, async_client: AsyncOpeni
assert_matches_type(UpsertCustomerResponse, client, path=["response"])
assert cast(Any, response.is_closed) is True
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_method_upsert_organization(self, async_client: AsyncOpenint) -> None:
- client = await async_client.upsert_organization(
- "x",
- )
- assert_matches_type(UpsertOrganizationResponse, client, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_raw_response_upsert_organization(self, async_client: AsyncOpenint) -> None:
- response = await async_client.with_raw_response.upsert_organization(
- "x",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- client = await response.parse()
- assert_matches_type(UpsertOrganizationResponse, client, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_streaming_response_upsert_organization(self, async_client: AsyncOpenint) -> None:
- async with async_client.with_streaming_response.upsert_organization(
- "x",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- client = await response.parse()
- assert_matches_type(UpsertOrganizationResponse, client, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_path_params_upsert_organization(self, async_client: AsyncOpenint) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `org_id` but received ''"):
- await async_client.with_raw_response.upsert_organization(
- "",
- )
From e92ec0402cbf32aa6278345e5daad14d39c30255 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 26 Aug 2025 21:25:45 +0000
Subject: [PATCH 04/13] feat(api): casing
---
.stats.yml | 8 +-
api.md | 6 +-
src/openint/_client.py | 81 ++++++++++++
src/openint/types/__init__.py | 1 +
.../types/upsert_organization_response.py | 13 ++
tests/api_resources/test_client.py | 117 +++++++++++++++---
6 files changed, 204 insertions(+), 22 deletions(-)
create mode 100644 src/openint/types/upsert_organization_response.py
diff --git a/.stats.yml b/.stats.yml
index f7b0d60..1bf0e65 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 19
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-5d7be7748789c7dc809c42528c6d7a033a5836964ecbd673842714ef82ed8335.yml
-openapi_spec_hash: bc09645d3ed0e895692e7dba584e4a94
-config_hash: 61b25dd271bd118bf6213c0ee305cfb8
+configured_endpoints: 20
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-9393fb16ed1db4a42d88b8e5111c84a4425d35fd813b7ab57fec7649fa59aa3d.yml
+openapi_spec_hash: 6f286b7e5993a5e6c570a5e8e14ce7cb
+config_hash: d9cb78a553d174780d65e0f069519292
diff --git a/api.md b/api.md
index fa770fd..ca7e3ae 100644
--- a/api.md
+++ b/api.md
@@ -26,17 +26,18 @@ from openint.types import (
ListEventsResponse,
UpsertConnnectorConfigResponse,
UpsertCustomerResponse,
+ UpsertOrganizationResponse,
)
```
Methods:
-- client.assign_connection(repl_id, \*, id) -> AssignConnectionResponse
+- client.assign_connection(repl_id, \*, id) -> AssignConnectionResponse
- client.check_connection(id) -> CheckConnectionResponse
- client.create_connection(\*\*params) -> CreateConnectionResponse
- client.create_connnector_config(\*\*params) -> CreateConnnectorConfigResponse
- client.create_token(customer_id, \*\*params) -> CreateTokenResponse
-- client.delete_assignment(repl_id, \*, id) -> DeleteAssignmentResponse
+- client.delete_assignment(repl_id, \*, id) -> DeleteAssignmentResponse
- client.delete_connection(id) -> DeleteConnectionResponse
- client.delete_connector_config(id) -> DeleteConnectorConfigResponse
- client.get_conector_config(id, \*\*params) -> GetConectorConfigResponse
@@ -51,3 +52,4 @@ Methods:
- client.list_events(\*\*params) -> SyncOffsetPagination[ListEventsResponse]
- client.upsert_connnector_config(id, \*\*params) -> UpsertConnnectorConfigResponse
- client.upsert_customer(\*\*params) -> UpsertCustomerResponse
+- client.upsert_organization(org_id) -> UpsertOrganizationResponse
diff --git a/src/openint/_client.py b/src/openint/_client.py
index 5938082..46203ca 100644
--- a/src/openint/_client.py
+++ b/src/openint/_client.py
@@ -75,6 +75,7 @@
from .types.delete_assignment_response import DeleteAssignmentResponse
from .types.delete_connection_response import DeleteConnectionResponse
from .types.get_conector_config_response import GetConectorConfigResponse
+from .types.upsert_organization_response import UpsertOrganizationResponse
from .types.list_connector_configs_response import ListConnectorConfigsResponse
from .types.delete_connector_config_response import DeleteConnectorConfigResponse
from .types.list_connnector_configs_response import ListConnnectorConfigsResponse
@@ -1675,6 +1676,40 @@ def upsert_customer(
cast_to=UpsertCustomerResponse,
)
+ def upsert_organization(
+ self,
+ org_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> UpsertOrganizationResponse:
+ """Upsert an organization by ID.
+
+ Creates if it does not exist.
+
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not org_id:
+ raise ValueError(f"Expected a non-empty value for `org_id` but received {org_id!r}")
+ return self.put(
+ f"/v2/organization/{org_id}",
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=UpsertOrganizationResponse,
+ )
+
@override
def _make_status_error(
self,
@@ -3300,6 +3335,40 @@ async def upsert_customer(
cast_to=UpsertCustomerResponse,
)
+ async def upsert_organization(
+ self,
+ org_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> UpsertOrganizationResponse:
+ """Upsert an organization by ID.
+
+ Creates if it does not exist.
+
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not org_id:
+ raise ValueError(f"Expected a non-empty value for `org_id` but received {org_id!r}")
+ return await self.put(
+ f"/v2/organization/{org_id}",
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=UpsertOrganizationResponse,
+ )
+
@override
def _make_status_error(
self,
@@ -3396,6 +3465,9 @@ def __init__(self, client: Openint) -> None:
self.upsert_customer = to_raw_response_wrapper(
client.upsert_customer,
)
+ self.upsert_organization = to_raw_response_wrapper(
+ client.upsert_organization,
+ )
class AsyncOpenintWithRawResponse:
@@ -3460,6 +3532,9 @@ def __init__(self, client: AsyncOpenint) -> None:
self.upsert_customer = async_to_raw_response_wrapper(
client.upsert_customer,
)
+ self.upsert_organization = async_to_raw_response_wrapper(
+ client.upsert_organization,
+ )
class OpenintWithStreamedResponse:
@@ -3524,6 +3599,9 @@ def __init__(self, client: Openint) -> None:
self.upsert_customer = to_streamed_response_wrapper(
client.upsert_customer,
)
+ self.upsert_organization = to_streamed_response_wrapper(
+ client.upsert_organization,
+ )
class AsyncOpenintWithStreamedResponse:
@@ -3588,6 +3666,9 @@ def __init__(self, client: AsyncOpenint) -> None:
self.upsert_customer = async_to_streamed_response_wrapper(
client.upsert_customer,
)
+ self.upsert_organization = async_to_streamed_response_wrapper(
+ client.upsert_organization,
+ )
Client = Openint
diff --git a/src/openint/types/__init__.py b/src/openint/types/__init__.py
index e1667af..0d45edf 100644
--- a/src/openint/types/__init__.py
+++ b/src/openint/types/__init__.py
@@ -23,6 +23,7 @@
from .client_get_connection_params import ClientGetConnectionParams as ClientGetConnectionParams
from .client_list_customers_params import ClientListCustomersParams as ClientListCustomersParams
from .get_conector_config_response import GetConectorConfigResponse as GetConectorConfigResponse
+from .upsert_organization_response import UpsertOrganizationResponse as UpsertOrganizationResponse
from .client_list_connectors_params import ClientListConnectorsParams as ClientListConnectorsParams
from .client_upsert_customer_params import ClientUpsertCustomerParams as ClientUpsertCustomerParams
from .client_list_connections_params import ClientListConnectionsParams as ClientListConnectionsParams
diff --git a/src/openint/types/upsert_organization_response.py b/src/openint/types/upsert_organization_response.py
new file mode 100644
index 0000000..29635bd
--- /dev/null
+++ b/src/openint/types/upsert_organization_response.py
@@ -0,0 +1,13 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from .._models import BaseModel
+
+__all__ = ["UpsertOrganizationResponse"]
+
+
+class UpsertOrganizationResponse(BaseModel):
+ id: str
+
+ api_key: str
+
+ created: bool
diff --git a/tests/api_resources/test_client.py b/tests/api_resources/test_client.py
index ce3713c..660a3f3 100644
--- a/tests/api_resources/test_client.py
+++ b/tests/api_resources/test_client.py
@@ -25,6 +25,7 @@
DeleteAssignmentResponse,
DeleteConnectionResponse,
GetConectorConfigResponse,
+ UpsertOrganizationResponse,
ListConnectorConfigsResponse,
DeleteConnectorConfigResponse,
ListConnnectorConfigsResponse,
@@ -43,7 +44,7 @@ class TestClient:
@parametrize
def test_method_assign_connection(self, client: Openint) -> None:
client_ = client.assign_connection(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
)
assert_matches_type(AssignConnectionResponse, client_, path=["response"])
@@ -52,7 +53,7 @@ def test_method_assign_connection(self, client: Openint) -> None:
@parametrize
def test_raw_response_assign_connection(self, client: Openint) -> None:
response = client.with_raw_response.assign_connection(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
)
@@ -65,7 +66,7 @@ def test_raw_response_assign_connection(self, client: Openint) -> None:
@parametrize
def test_streaming_response_assign_connection(self, client: Openint) -> None:
with client.with_streaming_response.assign_connection(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
) as response:
assert not response.is_closed
@@ -81,7 +82,7 @@ def test_streaming_response_assign_connection(self, client: Openint) -> None:
def test_path_params_assign_connection(self, client: Openint) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
client.with_raw_response.assign_connection(
- repl_id="replId",
+ repl_id="repl_id",
id="",
)
@@ -316,7 +317,7 @@ def test_path_params_create_token(self, client: Openint) -> None:
@parametrize
def test_method_delete_assignment(self, client: Openint) -> None:
client_ = client.delete_assignment(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
)
assert_matches_type(DeleteAssignmentResponse, client_, path=["response"])
@@ -325,7 +326,7 @@ def test_method_delete_assignment(self, client: Openint) -> None:
@parametrize
def test_raw_response_delete_assignment(self, client: Openint) -> None:
response = client.with_raw_response.delete_assignment(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
)
@@ -338,7 +339,7 @@ def test_raw_response_delete_assignment(self, client: Openint) -> None:
@parametrize
def test_streaming_response_delete_assignment(self, client: Openint) -> None:
with client.with_streaming_response.delete_assignment(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
) as response:
assert not response.is_closed
@@ -354,7 +355,7 @@ def test_streaming_response_delete_assignment(self, client: Openint) -> None:
def test_path_params_delete_assignment(self, client: Openint) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
client.with_raw_response.delete_assignment(
- repl_id="replId",
+ repl_id="repl_id",
id="",
)
@@ -955,6 +956,48 @@ def test_streaming_response_upsert_customer(self, client: Openint) -> None:
assert cast(Any, response.is_closed) is True
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_method_upsert_organization(self, client: Openint) -> None:
+ client_ = client.upsert_organization(
+ "x",
+ )
+ assert_matches_type(UpsertOrganizationResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_raw_response_upsert_organization(self, client: Openint) -> None:
+ response = client.with_raw_response.upsert_organization(
+ "x",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ client_ = response.parse()
+ assert_matches_type(UpsertOrganizationResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_streaming_response_upsert_organization(self, client: Openint) -> None:
+ with client.with_streaming_response.upsert_organization(
+ "x",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ client_ = response.parse()
+ assert_matches_type(UpsertOrganizationResponse, client_, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_path_params_upsert_organization(self, client: Openint) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `org_id` but received ''"):
+ client.with_raw_response.upsert_organization(
+ "",
+ )
+
class TestAsyncClient:
parametrize = pytest.mark.parametrize(
@@ -965,7 +1008,7 @@ class TestAsyncClient:
@parametrize
async def test_method_assign_connection(self, async_client: AsyncOpenint) -> None:
client = await async_client.assign_connection(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
)
assert_matches_type(AssignConnectionResponse, client, path=["response"])
@@ -974,7 +1017,7 @@ async def test_method_assign_connection(self, async_client: AsyncOpenint) -> Non
@parametrize
async def test_raw_response_assign_connection(self, async_client: AsyncOpenint) -> None:
response = await async_client.with_raw_response.assign_connection(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
)
@@ -987,7 +1030,7 @@ async def test_raw_response_assign_connection(self, async_client: AsyncOpenint)
@parametrize
async def test_streaming_response_assign_connection(self, async_client: AsyncOpenint) -> None:
async with async_client.with_streaming_response.assign_connection(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
) as response:
assert not response.is_closed
@@ -1003,7 +1046,7 @@ async def test_streaming_response_assign_connection(self, async_client: AsyncOpe
async def test_path_params_assign_connection(self, async_client: AsyncOpenint) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
await async_client.with_raw_response.assign_connection(
- repl_id="replId",
+ repl_id="repl_id",
id="",
)
@@ -1238,7 +1281,7 @@ async def test_path_params_create_token(self, async_client: AsyncOpenint) -> Non
@parametrize
async def test_method_delete_assignment(self, async_client: AsyncOpenint) -> None:
client = await async_client.delete_assignment(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
)
assert_matches_type(DeleteAssignmentResponse, client, path=["response"])
@@ -1247,7 +1290,7 @@ async def test_method_delete_assignment(self, async_client: AsyncOpenint) -> Non
@parametrize
async def test_raw_response_delete_assignment(self, async_client: AsyncOpenint) -> None:
response = await async_client.with_raw_response.delete_assignment(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
)
@@ -1260,7 +1303,7 @@ async def test_raw_response_delete_assignment(self, async_client: AsyncOpenint)
@parametrize
async def test_streaming_response_delete_assignment(self, async_client: AsyncOpenint) -> None:
async with async_client.with_streaming_response.delete_assignment(
- repl_id="replId",
+ repl_id="repl_id",
id="conn_",
) as response:
assert not response.is_closed
@@ -1276,7 +1319,7 @@ async def test_streaming_response_delete_assignment(self, async_client: AsyncOpe
async def test_path_params_delete_assignment(self, async_client: AsyncOpenint) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
await async_client.with_raw_response.delete_assignment(
- repl_id="replId",
+ repl_id="repl_id",
id="",
)
@@ -1876,3 +1919,45 @@ async def test_streaming_response_upsert_customer(self, async_client: AsyncOpeni
assert_matches_type(UpsertCustomerResponse, client, path=["response"])
assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_method_upsert_organization(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.upsert_organization(
+ "x",
+ )
+ assert_matches_type(UpsertOrganizationResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_raw_response_upsert_organization(self, async_client: AsyncOpenint) -> None:
+ response = await async_client.with_raw_response.upsert_organization(
+ "x",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ client = await response.parse()
+ assert_matches_type(UpsertOrganizationResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_streaming_response_upsert_organization(self, async_client: AsyncOpenint) -> None:
+ async with async_client.with_streaming_response.upsert_organization(
+ "x",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ client = await response.parse()
+ assert_matches_type(UpsertOrganizationResponse, client, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_path_params_upsert_organization(self, async_client: AsyncOpenint) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `org_id` but received ''"):
+ await async_client.with_raw_response.upsert_organization(
+ "",
+ )
From b34e94febbd1048b02a79227728765a2b862338d Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 27 Aug 2025 05:23:56 +0000
Subject: [PATCH 05/13] feat(api): preconfigure, preconnect & rpc methods
---
.stats.yml | 8 +-
api.md | 4 +
src/openint/_client.py | 534 ++++++++++++++++++
src/openint/types/__init__.py | 6 +
.../types/client_connector_rpc_params.py | 15 +
.../types/client_create_connection_params.py | 14 +
.../types/client_create_token_params.py | 1 +
.../types/client_list_connections_params.py | 1 +
.../client_list_connector_configs_params.py | 1 +
.../client_list_connnector_configs_params.py | 1 +
.../client_pre_configure_connector_params.py | 186 ++++++
src/openint/types/connector_rpc_response.py | 8 +
.../types/create_connection_response.py | 41 ++
.../create_connnector_config_response.py | 60 ++
.../types/get_conector_config_response.py | 66 +++
src/openint/types/get_connection_response.py | 45 ++
src/openint/types/integration.py | 1 +
.../types/list_connections_response.py | 45 ++
.../types/list_connector_configs_response.py | 66 +++
.../types/list_connnector_configs_response.py | 66 +++
.../types/pre_configure_connector_response.py | 8 +
.../upsert_connnector_config_response.py | 60 ++
tests/api_resources/test_client.py | 184 ++++++
23 files changed, 1417 insertions(+), 4 deletions(-)
create mode 100644 src/openint/types/client_connector_rpc_params.py
create mode 100644 src/openint/types/client_pre_configure_connector_params.py
create mode 100644 src/openint/types/connector_rpc_response.py
create mode 100644 src/openint/types/pre_configure_connector_response.py
diff --git a/.stats.yml b/.stats.yml
index 1bf0e65..d083c7c 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 20
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-9393fb16ed1db4a42d88b8e5111c84a4425d35fd813b7ab57fec7649fa59aa3d.yml
-openapi_spec_hash: 6f286b7e5993a5e6c570a5e8e14ce7cb
-config_hash: d9cb78a553d174780d65e0f069519292
+configured_endpoints: 22
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-d1701d4f03bd59aed345f98c67778710a7f686a08c05aa65feeff96b934443f6.yml
+openapi_spec_hash: aef8b2d73cd4ade0067d31356091f4e6
+config_hash: 4653b579bed6c8e88c01a1d40bfa0b41
diff --git a/api.md b/api.md
index ca7e3ae..801e0a3 100644
--- a/api.md
+++ b/api.md
@@ -8,6 +8,7 @@ from openint.types import (
Integration,
AssignConnectionResponse,
CheckConnectionResponse,
+ ConnectorRpcResponse,
CreateConnectionResponse,
CreateConnnectorConfigResponse,
CreateTokenResponse,
@@ -24,6 +25,7 @@ from openint.types import (
ListConnnectorConfigsResponse,
ListCustomersResponse,
ListEventsResponse,
+ PreConfigureConnectorResponse,
UpsertConnnectorConfigResponse,
UpsertCustomerResponse,
UpsertOrganizationResponse,
@@ -34,6 +36,7 @@ Methods:
- client.assign_connection(repl_id, \*, id) -> AssignConnectionResponse
- client.check_connection(id) -> CheckConnectionResponse
+- client.connector_rpc(function_name, \*, connector_config_id, \*\*params) -> ConnectorRpcResponse
- client.create_connection(\*\*params) -> CreateConnectionResponse
- client.create_connnector_config(\*\*params) -> CreateConnnectorConfigResponse
- client.create_token(customer_id, \*\*params) -> CreateTokenResponse
@@ -50,6 +53,7 @@ Methods:
- client.list_connnector_configs(\*\*params) -> SyncOffsetPagination[ListConnnectorConfigsResponse]
- client.list_customers(\*\*params) -> SyncOffsetPagination[ListCustomersResponse]
- client.list_events(\*\*params) -> SyncOffsetPagination[ListEventsResponse]
+- client.pre_configure_connector(\*\*params) -> PreConfigureConnectorResponse
- client.upsert_connnector_config(id, \*\*params) -> UpsertConnnectorConfigResponse
- client.upsert_customer(\*\*params) -> UpsertCustomerResponse
- client.upsert_organization(org_id) -> UpsertOrganizationResponse
diff --git a/src/openint/_client.py b/src/openint/_client.py
index 46203ca..54d9890 100644
--- a/src/openint/_client.py
+++ b/src/openint/_client.py
@@ -13,6 +13,7 @@
from .types import (
client_list_events_params,
client_create_token_params,
+ client_connector_rpc_params,
client_get_connection_params,
client_list_customers_params,
client_list_connectors_params,
@@ -22,6 +23,7 @@
client_get_conector_config_params,
client_list_connector_configs_params,
client_list_connnector_configs_params,
+ client_pre_configure_connector_params,
client_create_connnector_config_params,
client_upsert_connnector_config_params,
)
@@ -62,6 +64,7 @@
)
from .types.list_events_response import ListEventsResponse
from .types.create_token_response import CreateTokenResponse
+from .types.connector_rpc_response import ConnectorRpcResponse
from .types.get_connection_response import GetConnectionResponse
from .types.list_customers_response import ListCustomersResponse
from .types.list_connectors_response import ListConnectorsResponse
@@ -79,6 +82,7 @@
from .types.list_connector_configs_response import ListConnectorConfigsResponse
from .types.delete_connector_config_response import DeleteConnectorConfigResponse
from .types.list_connnector_configs_response import ListConnnectorConfigsResponse
+from .types.pre_configure_connector_response import PreConfigureConnectorResponse
from .types.create_connnector_config_response import CreateConnnectorConfigResponse
from .types.upsert_connnector_config_response import UpsertConnnectorConfigResponse
@@ -301,6 +305,50 @@ def check_connection(
cast_to=CheckConnectionResponse,
)
+ def connector_rpc(
+ self,
+ function_name: str,
+ *,
+ connector_config_id: str,
+ input: Dict[str, object],
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> ConnectorRpcResponse:
+ """
+ Execute RPC function on connector
+
+ Args:
+ connector_config_id: The id of the connector config, starts with `ccfg_`
+
+ function_name: RPC function name to execute
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not connector_config_id:
+ raise ValueError(
+ f"Expected a non-empty value for `connector_config_id` but received {connector_config_id!r}"
+ )
+ if not function_name:
+ raise ValueError(f"Expected a non-empty value for `function_name` but received {function_name!r}")
+ return self.post(
+ f"/v2/connector-config/{connector_config_id}/rpc/{function_name}",
+ body=maybe_transform({"input": input}, client_connector_rpc_params.ClientConnectorRpcParams),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=ConnectorRpcResponse,
+ )
+
def create_connection(
self,
*,
@@ -857,6 +905,7 @@ def list_connections(
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
@@ -1108,6 +1157,7 @@ def list_connector_configs(
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
@@ -1389,6 +1439,7 @@ def list_connnector_configs(
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
@@ -1588,6 +1639,212 @@ def list_events(
model=cast(Any, ListEventsResponse), # Union types cannot be passed in as arguments in the type system
)
+ def pre_configure_connector(
+ self,
+ *,
+ connector_name: Literal[
+ "accelo",
+ "acme-apikey",
+ "acme-oauth2",
+ "adobe",
+ "adyen",
+ "aircall",
+ "airtable",
+ "amazon",
+ "apaleo",
+ "apollo",
+ "asana",
+ "attio",
+ "auth0",
+ "autodesk",
+ "aws",
+ "bamboohr",
+ "basecamp",
+ "battlenet",
+ "bigcommerce",
+ "bitbucket",
+ "bitly",
+ "blackbaud",
+ "boldsign",
+ "box",
+ "braintree",
+ "brex",
+ "calendly",
+ "clickup",
+ "close",
+ "coda",
+ "confluence",
+ "contentful",
+ "contentstack",
+ "copper",
+ "coros",
+ "datev",
+ "deel",
+ "dialpad",
+ "digitalocean",
+ "discord",
+ "docusign",
+ "dropbox",
+ "ebay",
+ "egnyte",
+ "envoy",
+ "eventbrite",
+ "exist",
+ "facebook",
+ "factorial",
+ "figma",
+ "finch",
+ "firebase",
+ "fitbit",
+ "foreceipt",
+ "fortnox",
+ "freshbooks",
+ "front",
+ "github",
+ "gitlab",
+ "gong",
+ "google-calendar",
+ "google-docs",
+ "google-drive",
+ "google-mail",
+ "google-sheet",
+ "gorgias",
+ "grain",
+ "greenhouse",
+ "gumroad",
+ "gusto",
+ "harvest",
+ "heron",
+ "highlevel",
+ "hubspot",
+ "instagram",
+ "intercom",
+ "jira",
+ "keap",
+ "lever",
+ "linear",
+ "linkedin",
+ "linkhut",
+ "lunchmoney",
+ "mailchimp",
+ "mercury",
+ "merge",
+ "miro",
+ "monday",
+ "moota",
+ "mural",
+ "namely",
+ "nationbuilder",
+ "netsuite",
+ "notion",
+ "odoo",
+ "okta",
+ "onebrick",
+ "openledger",
+ "osu",
+ "oura",
+ "outreach",
+ "pagerduty",
+ "pandadoc",
+ "payfit",
+ "paypal",
+ "pennylane",
+ "pinterest",
+ "pipedrive",
+ "plaid",
+ "podium",
+ "postgres",
+ "productboard",
+ "qualtrics",
+ "quickbooks",
+ "ramp",
+ "reddit",
+ "sage",
+ "salesforce",
+ "salesloft",
+ "saltedge",
+ "segment",
+ "servicem8",
+ "servicenow",
+ "sharepoint",
+ "sharepoint-onprem",
+ "shopify",
+ "signnow",
+ "slack",
+ "slack-agent",
+ "smartsheet",
+ "snowflake",
+ "splitwise",
+ "spotify",
+ "squarespace",
+ "squareup",
+ "stackexchange",
+ "strava",
+ "stripe",
+ "teamwork",
+ "teller",
+ "ticktick",
+ "timely",
+ "todoist",
+ "toggl",
+ "tremendous",
+ "tsheetsteam",
+ "tumblr",
+ "twenty",
+ "twinfield",
+ "twitch",
+ "twitter",
+ "typeform",
+ "uber",
+ "venmo",
+ "vimeo",
+ "wakatime",
+ "wealthbox",
+ "webflow",
+ "whoop",
+ "wise",
+ "wordpress",
+ "wrike",
+ "xero",
+ "yahoo",
+ "yandex",
+ "yodlee",
+ "zapier",
+ "zendesk",
+ "zenefits",
+ "zoho",
+ "zoho-desk",
+ "zoom",
+ ],
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> PreConfigureConnectorResponse:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ return self.post(
+ "/v2/connector-config/pre-configure",
+ body=maybe_transform(
+ {"connector_name": connector_name},
+ client_pre_configure_connector_params.ClientPreConfigureConnectorParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=PreConfigureConnectorResponse,
+ )
+
def upsert_connnector_config(
self,
id: str,
@@ -1960,6 +2217,50 @@ async def check_connection(
cast_to=CheckConnectionResponse,
)
+ async def connector_rpc(
+ self,
+ function_name: str,
+ *,
+ connector_config_id: str,
+ input: Dict[str, object],
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> ConnectorRpcResponse:
+ """
+ Execute RPC function on connector
+
+ Args:
+ connector_config_id: The id of the connector config, starts with `ccfg_`
+
+ function_name: RPC function name to execute
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not connector_config_id:
+ raise ValueError(
+ f"Expected a non-empty value for `connector_config_id` but received {connector_config_id!r}"
+ )
+ if not function_name:
+ raise ValueError(f"Expected a non-empty value for `function_name` but received {function_name!r}")
+ return await self.post(
+ f"/v2/connector-config/{connector_config_id}/rpc/{function_name}",
+ body=await async_maybe_transform({"input": input}, client_connector_rpc_params.ClientConnectorRpcParams),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=ConnectorRpcResponse,
+ )
+
async def create_connection(
self,
*,
@@ -2516,6 +2817,7 @@ def list_connections(
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
@@ -2767,6 +3069,7 @@ def list_connector_configs(
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
@@ -3048,6 +3351,7 @@ def list_connnector_configs(
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
@@ -3247,6 +3551,212 @@ def list_events(
model=cast(Any, ListEventsResponse), # Union types cannot be passed in as arguments in the type system
)
+ async def pre_configure_connector(
+ self,
+ *,
+ connector_name: Literal[
+ "accelo",
+ "acme-apikey",
+ "acme-oauth2",
+ "adobe",
+ "adyen",
+ "aircall",
+ "airtable",
+ "amazon",
+ "apaleo",
+ "apollo",
+ "asana",
+ "attio",
+ "auth0",
+ "autodesk",
+ "aws",
+ "bamboohr",
+ "basecamp",
+ "battlenet",
+ "bigcommerce",
+ "bitbucket",
+ "bitly",
+ "blackbaud",
+ "boldsign",
+ "box",
+ "braintree",
+ "brex",
+ "calendly",
+ "clickup",
+ "close",
+ "coda",
+ "confluence",
+ "contentful",
+ "contentstack",
+ "copper",
+ "coros",
+ "datev",
+ "deel",
+ "dialpad",
+ "digitalocean",
+ "discord",
+ "docusign",
+ "dropbox",
+ "ebay",
+ "egnyte",
+ "envoy",
+ "eventbrite",
+ "exist",
+ "facebook",
+ "factorial",
+ "figma",
+ "finch",
+ "firebase",
+ "fitbit",
+ "foreceipt",
+ "fortnox",
+ "freshbooks",
+ "front",
+ "github",
+ "gitlab",
+ "gong",
+ "google-calendar",
+ "google-docs",
+ "google-drive",
+ "google-mail",
+ "google-sheet",
+ "gorgias",
+ "grain",
+ "greenhouse",
+ "gumroad",
+ "gusto",
+ "harvest",
+ "heron",
+ "highlevel",
+ "hubspot",
+ "instagram",
+ "intercom",
+ "jira",
+ "keap",
+ "lever",
+ "linear",
+ "linkedin",
+ "linkhut",
+ "lunchmoney",
+ "mailchimp",
+ "mercury",
+ "merge",
+ "miro",
+ "monday",
+ "moota",
+ "mural",
+ "namely",
+ "nationbuilder",
+ "netsuite",
+ "notion",
+ "odoo",
+ "okta",
+ "onebrick",
+ "openledger",
+ "osu",
+ "oura",
+ "outreach",
+ "pagerduty",
+ "pandadoc",
+ "payfit",
+ "paypal",
+ "pennylane",
+ "pinterest",
+ "pipedrive",
+ "plaid",
+ "podium",
+ "postgres",
+ "productboard",
+ "qualtrics",
+ "quickbooks",
+ "ramp",
+ "reddit",
+ "sage",
+ "salesforce",
+ "salesloft",
+ "saltedge",
+ "segment",
+ "servicem8",
+ "servicenow",
+ "sharepoint",
+ "sharepoint-onprem",
+ "shopify",
+ "signnow",
+ "slack",
+ "slack-agent",
+ "smartsheet",
+ "snowflake",
+ "splitwise",
+ "spotify",
+ "squarespace",
+ "squareup",
+ "stackexchange",
+ "strava",
+ "stripe",
+ "teamwork",
+ "teller",
+ "ticktick",
+ "timely",
+ "todoist",
+ "toggl",
+ "tremendous",
+ "tsheetsteam",
+ "tumblr",
+ "twenty",
+ "twinfield",
+ "twitch",
+ "twitter",
+ "typeform",
+ "uber",
+ "venmo",
+ "vimeo",
+ "wakatime",
+ "wealthbox",
+ "webflow",
+ "whoop",
+ "wise",
+ "wordpress",
+ "wrike",
+ "xero",
+ "yahoo",
+ "yandex",
+ "yodlee",
+ "zapier",
+ "zendesk",
+ "zenefits",
+ "zoho",
+ "zoho-desk",
+ "zoom",
+ ],
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> PreConfigureConnectorResponse:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ return await self.post(
+ "/v2/connector-config/pre-configure",
+ body=await async_maybe_transform(
+ {"connector_name": connector_name},
+ client_pre_configure_connector_params.ClientPreConfigureConnectorParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=PreConfigureConnectorResponse,
+ )
+
async def upsert_connnector_config(
self,
id: str,
@@ -3411,6 +3921,9 @@ def __init__(self, client: Openint) -> None:
self.check_connection = to_raw_response_wrapper(
client.check_connection,
)
+ self.connector_rpc = to_raw_response_wrapper(
+ client.connector_rpc,
+ )
self.create_connection = to_raw_response_wrapper(
client.create_connection,
)
@@ -3459,6 +3972,9 @@ def __init__(self, client: Openint) -> None:
self.list_events = to_raw_response_wrapper(
client.list_events,
)
+ self.pre_configure_connector = to_raw_response_wrapper(
+ client.pre_configure_connector,
+ )
self.upsert_connnector_config = to_raw_response_wrapper(
client.upsert_connnector_config,
)
@@ -3478,6 +3994,9 @@ def __init__(self, client: AsyncOpenint) -> None:
self.check_connection = async_to_raw_response_wrapper(
client.check_connection,
)
+ self.connector_rpc = async_to_raw_response_wrapper(
+ client.connector_rpc,
+ )
self.create_connection = async_to_raw_response_wrapper(
client.create_connection,
)
@@ -3526,6 +4045,9 @@ def __init__(self, client: AsyncOpenint) -> None:
self.list_events = async_to_raw_response_wrapper(
client.list_events,
)
+ self.pre_configure_connector = async_to_raw_response_wrapper(
+ client.pre_configure_connector,
+ )
self.upsert_connnector_config = async_to_raw_response_wrapper(
client.upsert_connnector_config,
)
@@ -3545,6 +4067,9 @@ def __init__(self, client: Openint) -> None:
self.check_connection = to_streamed_response_wrapper(
client.check_connection,
)
+ self.connector_rpc = to_streamed_response_wrapper(
+ client.connector_rpc,
+ )
self.create_connection = to_streamed_response_wrapper(
client.create_connection,
)
@@ -3593,6 +4118,9 @@ def __init__(self, client: Openint) -> None:
self.list_events = to_streamed_response_wrapper(
client.list_events,
)
+ self.pre_configure_connector = to_streamed_response_wrapper(
+ client.pre_configure_connector,
+ )
self.upsert_connnector_config = to_streamed_response_wrapper(
client.upsert_connnector_config,
)
@@ -3612,6 +4140,9 @@ def __init__(self, client: AsyncOpenint) -> None:
self.check_connection = async_to_streamed_response_wrapper(
client.check_connection,
)
+ self.connector_rpc = async_to_streamed_response_wrapper(
+ client.connector_rpc,
+ )
self.create_connection = async_to_streamed_response_wrapper(
client.create_connection,
)
@@ -3660,6 +4191,9 @@ def __init__(self, client: AsyncOpenint) -> None:
self.list_events = async_to_streamed_response_wrapper(
client.list_events,
)
+ self.pre_configure_connector = async_to_streamed_response_wrapper(
+ client.pre_configure_connector,
+ )
self.upsert_connnector_config = async_to_streamed_response_wrapper(
client.upsert_connnector_config,
)
diff --git a/src/openint/types/__init__.py b/src/openint/types/__init__.py
index 0d45edf..9aa8b75 100644
--- a/src/openint/types/__init__.py
+++ b/src/openint/types/__init__.py
@@ -6,6 +6,7 @@
from .integration import Integration as Integration
from .list_events_response import ListEventsResponse as ListEventsResponse
from .create_token_response import CreateTokenResponse as CreateTokenResponse
+from .connector_rpc_response import ConnectorRpcResponse as ConnectorRpcResponse
from .get_connection_response import GetConnectionResponse as GetConnectionResponse
from .list_customers_response import ListCustomersResponse as ListCustomersResponse
from .list_connectors_response import ListConnectorsResponse as ListConnectorsResponse
@@ -20,6 +21,7 @@
from .create_connection_response import CreateConnectionResponse as CreateConnectionResponse
from .delete_assignment_response import DeleteAssignmentResponse as DeleteAssignmentResponse
from .delete_connection_response import DeleteConnectionResponse as DeleteConnectionResponse
+from .client_connector_rpc_params import ClientConnectorRpcParams as ClientConnectorRpcParams
from .client_get_connection_params import ClientGetConnectionParams as ClientGetConnectionParams
from .client_list_customers_params import ClientListCustomersParams as ClientListCustomersParams
from .get_conector_config_response import GetConectorConfigResponse as GetConectorConfigResponse
@@ -31,6 +33,7 @@
from .list_connector_configs_response import ListConnectorConfigsResponse as ListConnectorConfigsResponse
from .delete_connector_config_response import DeleteConnectorConfigResponse as DeleteConnectorConfigResponse
from .list_connnector_configs_response import ListConnnectorConfigsResponse as ListConnnectorConfigsResponse
+from .pre_configure_connector_response import PreConfigureConnectorResponse as PreConfigureConnectorResponse
from .client_get_conector_config_params import ClientGetConectorConfigParams as ClientGetConectorConfigParams
from .create_connnector_config_response import CreateConnnectorConfigResponse as CreateConnnectorConfigResponse
from .upsert_connnector_config_response import UpsertConnnectorConfigResponse as UpsertConnnectorConfigResponse
@@ -38,6 +41,9 @@
from .client_list_connnector_configs_params import (
ClientListConnnectorConfigsParams as ClientListConnnectorConfigsParams,
)
+from .client_pre_configure_connector_params import (
+ ClientPreConfigureConnectorParams as ClientPreConfigureConnectorParams,
+)
from .client_create_connnector_config_params import (
ClientCreateConnnectorConfigParams as ClientCreateConnnectorConfigParams,
)
diff --git a/src/openint/types/client_connector_rpc_params.py b/src/openint/types/client_connector_rpc_params.py
new file mode 100644
index 0000000..1d49a61
--- /dev/null
+++ b/src/openint/types/client_connector_rpc_params.py
@@ -0,0 +1,15 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Dict
+from typing_extensions import Required, TypedDict
+
+__all__ = ["ClientConnectorRpcParams"]
+
+
+class ClientConnectorRpcParams(TypedDict, total=False):
+ connector_config_id: Required[str]
+ """The id of the connector config, starts with `ccfg_`"""
+
+ input: Required[Dict[str, object]]
diff --git a/src/openint/types/client_create_connection_params.py b/src/openint/types/client_create_connection_params.py
index 07b59fe..50c6bf9 100644
--- a/src/openint/types/client_create_connection_params.py
+++ b/src/openint/types/client_create_connection_params.py
@@ -624,6 +624,8 @@
"DataConnectorSaltedgeDiscriminatedConnectionSettings",
"DataConnectorSharepointOnpremDiscriminatedConnectionSettings",
"DataConnectorSharepointOnpremDiscriminatedConnectionSettingsSettings",
+ "DataConnectorSlackAgentDiscriminatedConnectionSettings",
+ "DataConnectorSlackAgentDiscriminatedConnectionSettingsSettings",
"DataConnectorSplitwiseDiscriminatedConnectionSettings",
"DataConnectorSplitwiseDiscriminatedConnectionSettingsSettings",
"DataConnectorSplitwiseDiscriminatedConnectionSettingsSettingsCurrentUser",
@@ -7961,6 +7963,17 @@ class DataConnectorSharepointOnpremDiscriminatedConnectionSettings(TypedDict, to
settings: DataConnectorSharepointOnpremDiscriminatedConnectionSettingsSettings
+class DataConnectorSlackAgentDiscriminatedConnectionSettingsSettings(TypedDict, total=False):
+ bot_access_token: Required[str]
+ """Bot OAuth token - xoxb-..."""
+
+
+class DataConnectorSlackAgentDiscriminatedConnectionSettings(TypedDict, total=False):
+ connector_name: Required[Literal["slack-agent"]]
+
+ settings: DataConnectorSlackAgentDiscriminatedConnectionSettingsSettings
+
+
class DataConnectorSplitwiseDiscriminatedConnectionSettingsSettingsCurrentUserNotifications(TypedDict, total=False):
added_as_friend: Required[bool]
@@ -8328,6 +8341,7 @@ class DataConnectorYodleeDiscriminatedConnectionSettings(TypedDict, total=False)
DataConnectorRampDiscriminatedConnectionSettings,
DataConnectorSaltedgeDiscriminatedConnectionSettings,
DataConnectorSharepointOnpremDiscriminatedConnectionSettings,
+ DataConnectorSlackAgentDiscriminatedConnectionSettings,
DataConnectorSplitwiseDiscriminatedConnectionSettings,
DataConnectorStripeDiscriminatedConnectionSettings,
DataConnectorTellerDiscriminatedConnectionSettings,
diff --git a/src/openint/types/client_create_token_params.py b/src/openint/types/client_create_token_params.py
index 73543ab..7894246 100644
--- a/src/openint/types/client_create_token_params.py
+++ b/src/openint/types/client_create_token_params.py
@@ -150,6 +150,7 @@ class ConnectOptions(TypedDict, total=False):
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
diff --git a/src/openint/types/client_list_connections_params.py b/src/openint/types/client_list_connections_params.py
index c64cfa2..7349e40 100644
--- a/src/openint/types/client_list_connections_params.py
+++ b/src/openint/types/client_list_connections_params.py
@@ -144,6 +144,7 @@ class ClientListConnectionsParams(TypedDict, total=False):
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
diff --git a/src/openint/types/client_list_connector_configs_params.py b/src/openint/types/client_list_connector_configs_params.py
index 1002ca5..f47f0d9 100644
--- a/src/openint/types/client_list_connector_configs_params.py
+++ b/src/openint/types/client_list_connector_configs_params.py
@@ -139,6 +139,7 @@ class ClientListConnectorConfigsParams(TypedDict, total=False):
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
diff --git a/src/openint/types/client_list_connnector_configs_params.py b/src/openint/types/client_list_connnector_configs_params.py
index ae75f08..01265b8 100644
--- a/src/openint/types/client_list_connnector_configs_params.py
+++ b/src/openint/types/client_list_connnector_configs_params.py
@@ -139,6 +139,7 @@ class ClientListConnnectorConfigsParams(TypedDict, total=False):
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
diff --git a/src/openint/types/client_pre_configure_connector_params.py b/src/openint/types/client_pre_configure_connector_params.py
new file mode 100644
index 0000000..900b1f8
--- /dev/null
+++ b/src/openint/types/client_pre_configure_connector_params.py
@@ -0,0 +1,186 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Literal, Required, TypedDict
+
+__all__ = ["ClientPreConfigureConnectorParams"]
+
+
+class ClientPreConfigureConnectorParams(TypedDict, total=False):
+ connector_name: Required[
+ Literal[
+ "accelo",
+ "acme-apikey",
+ "acme-oauth2",
+ "adobe",
+ "adyen",
+ "aircall",
+ "airtable",
+ "amazon",
+ "apaleo",
+ "apollo",
+ "asana",
+ "attio",
+ "auth0",
+ "autodesk",
+ "aws",
+ "bamboohr",
+ "basecamp",
+ "battlenet",
+ "bigcommerce",
+ "bitbucket",
+ "bitly",
+ "blackbaud",
+ "boldsign",
+ "box",
+ "braintree",
+ "brex",
+ "calendly",
+ "clickup",
+ "close",
+ "coda",
+ "confluence",
+ "contentful",
+ "contentstack",
+ "copper",
+ "coros",
+ "datev",
+ "deel",
+ "dialpad",
+ "digitalocean",
+ "discord",
+ "docusign",
+ "dropbox",
+ "ebay",
+ "egnyte",
+ "envoy",
+ "eventbrite",
+ "exist",
+ "facebook",
+ "factorial",
+ "figma",
+ "finch",
+ "firebase",
+ "fitbit",
+ "foreceipt",
+ "fortnox",
+ "freshbooks",
+ "front",
+ "github",
+ "gitlab",
+ "gong",
+ "google-calendar",
+ "google-docs",
+ "google-drive",
+ "google-mail",
+ "google-sheet",
+ "gorgias",
+ "grain",
+ "greenhouse",
+ "gumroad",
+ "gusto",
+ "harvest",
+ "heron",
+ "highlevel",
+ "hubspot",
+ "instagram",
+ "intercom",
+ "jira",
+ "keap",
+ "lever",
+ "linear",
+ "linkedin",
+ "linkhut",
+ "lunchmoney",
+ "mailchimp",
+ "mercury",
+ "merge",
+ "miro",
+ "monday",
+ "moota",
+ "mural",
+ "namely",
+ "nationbuilder",
+ "netsuite",
+ "notion",
+ "odoo",
+ "okta",
+ "onebrick",
+ "openledger",
+ "osu",
+ "oura",
+ "outreach",
+ "pagerduty",
+ "pandadoc",
+ "payfit",
+ "paypal",
+ "pennylane",
+ "pinterest",
+ "pipedrive",
+ "plaid",
+ "podium",
+ "postgres",
+ "productboard",
+ "qualtrics",
+ "quickbooks",
+ "ramp",
+ "reddit",
+ "sage",
+ "salesforce",
+ "salesloft",
+ "saltedge",
+ "segment",
+ "servicem8",
+ "servicenow",
+ "sharepoint",
+ "sharepoint-onprem",
+ "shopify",
+ "signnow",
+ "slack",
+ "slack-agent",
+ "smartsheet",
+ "snowflake",
+ "splitwise",
+ "spotify",
+ "squarespace",
+ "squareup",
+ "stackexchange",
+ "strava",
+ "stripe",
+ "teamwork",
+ "teller",
+ "ticktick",
+ "timely",
+ "todoist",
+ "toggl",
+ "tremendous",
+ "tsheetsteam",
+ "tumblr",
+ "twenty",
+ "twinfield",
+ "twitch",
+ "twitter",
+ "typeform",
+ "uber",
+ "venmo",
+ "vimeo",
+ "wakatime",
+ "wealthbox",
+ "webflow",
+ "whoop",
+ "wise",
+ "wordpress",
+ "wrike",
+ "xero",
+ "yahoo",
+ "yandex",
+ "yodlee",
+ "zapier",
+ "zendesk",
+ "zenefits",
+ "zoho",
+ "zoho-desk",
+ "zoom",
+ ]
+ ]
diff --git a/src/openint/types/connector_rpc_response.py b/src/openint/types/connector_rpc_response.py
new file mode 100644
index 0000000..35a159d
--- /dev/null
+++ b/src/openint/types/connector_rpc_response.py
@@ -0,0 +1,8 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Dict
+from typing_extensions import TypeAlias
+
+__all__ = ["ConnectorRpcResponse"]
+
+ConnectorRpcResponse: TypeAlias = Dict[str, object]
diff --git a/src/openint/types/create_connection_response.py b/src/openint/types/create_connection_response.py
index cc5ec23..fca7e04 100644
--- a/src/openint/types/create_connection_response.py
+++ b/src/openint/types/create_connection_response.py
@@ -623,6 +623,8 @@
"ConnectorSaltedgeDiscriminatedConnectionSettings",
"ConnectorSharepointOnpremDiscriminatedConnectionSettings",
"ConnectorSharepointOnpremDiscriminatedConnectionSettingsSettings",
+ "ConnectorSlackAgentDiscriminatedConnectionSettings",
+ "ConnectorSlackAgentDiscriminatedConnectionSettingsSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettingsSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettingsSettingsCurrentUser",
@@ -12323,6 +12325,44 @@ class ConnectorSharepointOnpremDiscriminatedConnectionSettings(BaseModel):
updated_at: Optional[str] = None
+class ConnectorSlackAgentDiscriminatedConnectionSettingsSettings(BaseModel):
+ bot_access_token: str
+ """Bot OAuth token - xoxb-..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectionSettings(BaseModel):
+ connector_name: Literal["slack-agent"]
+
+ id: Optional[str] = None
+
+ connector_config_id: Optional[str] = None
+
+ created_at: Optional[str] = None
+
+ customer_id: Optional[str] = None
+
+ disabled: Optional[bool] = None
+
+ display_name: Optional[str] = None
+
+ integration_id: Optional[str] = None
+
+ metadata: Optional[Dict[str, object]] = None
+ """
+ JSON object can can be used to associate arbitrary metadata to avoid needing a
+ separate 1-1 table just for simple key values in your application. During
+ updates this object will be shallowly merged
+ """
+
+ settings: Optional[ConnectorSlackAgentDiscriminatedConnectionSettingsSettings] = None
+
+ status: Optional[Literal["healthy", "disconnected", "error", "manual", "unknown"]] = None
+
+ status_message: Optional[str] = None
+
+ updated_at: Optional[str] = None
+
+
class ConnectorSplitwiseDiscriminatedConnectionSettingsSettingsCurrentUserNotifications(BaseModel):
added_as_friend: bool
@@ -12901,6 +12941,7 @@ class ConnectorYodleeDiscriminatedConnectionSettings(BaseModel):
ConnectorRampDiscriminatedConnectionSettings,
ConnectorSaltedgeDiscriminatedConnectionSettings,
ConnectorSharepointOnpremDiscriminatedConnectionSettings,
+ ConnectorSlackAgentDiscriminatedConnectionSettings,
ConnectorSplitwiseDiscriminatedConnectionSettings,
ConnectorStripeDiscriminatedConnectionSettings,
ConnectorTellerDiscriminatedConnectionSettings,
diff --git a/src/openint/types/create_connnector_config_response.py b/src/openint/types/create_connnector_config_response.py
index 3d7b228..1406ae7 100644
--- a/src/openint/types/create_connnector_config_response.py
+++ b/src/openint/types/create_connnector_config_response.py
@@ -472,6 +472,8 @@
"ConnectorSaltedgeDiscriminatedConnectorConfig",
"ConnectorSaltedgeDiscriminatedConnectorConfigConfig",
"ConnectorSharepointOnpremDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfigConfig",
"ConnectorSplitwiseDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfigConfig",
@@ -6992,6 +6994,63 @@ class ConnectorSharepointOnpremDiscriminatedConnectorConfig(BaseModel):
updated_at: Optional[str] = None
+class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
+ challenge_code: str
+ """Previous challenge code - e.g. challenge_slack_abc123xyz"""
+
+ challenge_response: str
+ """USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
+
+ event_subscription_url: str
+ """Initial event subscription URL"""
+
+ service_token: str
+ """Service token - xoxb-..."""
+
+ app_id: Optional[str] = None
+ """App ID - A1234567890"""
+
+ client_id: Optional[str] = None
+ """Client ID - 1234567890.1234567890"""
+
+ client_secret: Optional[str] = None
+ """Client secret - abc123..."""
+
+ initial_oauth_url: Optional[str] = None
+ """Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+
+ signing_secret: Optional[str] = None
+ """Signing secret - abc123..."""
+
+ verification_token: Optional[str] = None
+ """Verification token - xyz123..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectorConfig(BaseModel):
+ config: ConnectorSlackAgentDiscriminatedConnectorConfigConfig
+
+ connector_name: Literal["slack-agent"]
+
+ id: Optional[str] = None
+
+ created_at: Optional[str] = None
+
+ disabled: Optional[bool] = None
+
+ display_name: Optional[str] = None
+
+ metadata: Optional[Dict[str, object]] = None
+ """
+ JSON object can can be used to associate arbitrary metadata to avoid needing a
+ separate 1-1 table just for simple key values in your application. During
+ updates this object will be shallowly merged
+ """
+
+ org_id: Optional[str] = None
+
+ updated_at: Optional[str] = None
+
+
class ConnectorSplitwiseDiscriminatedConnectorConfig(BaseModel):
config: object
@@ -7410,6 +7469,7 @@ class ConnectorYodleeDiscriminatedConnectorConfig(BaseModel):
ConnectorRampDiscriminatedConnectorConfig,
ConnectorSaltedgeDiscriminatedConnectorConfig,
ConnectorSharepointOnpremDiscriminatedConnectorConfig,
+ ConnectorSlackAgentDiscriminatedConnectorConfig,
ConnectorSplitwiseDiscriminatedConnectorConfig,
ConnectorStripeDiscriminatedConnectorConfig,
ConnectorTellerDiscriminatedConnectorConfig,
diff --git a/src/openint/types/get_conector_config_response.py b/src/openint/types/get_conector_config_response.py
index 963ca91..f86df63 100644
--- a/src/openint/types/get_conector_config_response.py
+++ b/src/openint/types/get_conector_config_response.py
@@ -474,6 +474,8 @@
"ConnectorSaltedgeDiscriminatedConnectorConfig",
"ConnectorSaltedgeDiscriminatedConnectorConfigConfig",
"ConnectorSharepointOnpremDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfigConfig",
"ConnectorSplitwiseDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfigConfig",
@@ -7972,6 +7974,69 @@ class ConnectorSharepointOnpremDiscriminatedConnectorConfig(BaseModel):
updated_at: Optional[str] = None
+class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
+ challenge_code: str
+ """Previous challenge code - e.g. challenge_slack_abc123xyz"""
+
+ challenge_response: str
+ """USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
+
+ event_subscription_url: str
+ """Initial event subscription URL"""
+
+ service_token: str
+ """Service token - xoxb-..."""
+
+ app_id: Optional[str] = None
+ """App ID - A1234567890"""
+
+ client_id: Optional[str] = None
+ """Client ID - 1234567890.1234567890"""
+
+ client_secret: Optional[str] = None
+ """Client secret - abc123..."""
+
+ initial_oauth_url: Optional[str] = None
+ """Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+
+ signing_secret: Optional[str] = None
+ """Signing secret - abc123..."""
+
+ verification_token: Optional[str] = None
+ """Verification token - xyz123..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectorConfig(BaseModel):
+ config: ConnectorSlackAgentDiscriminatedConnectorConfigConfig
+
+ connector_name: Literal["slack-agent"]
+
+ id: Optional[str] = None
+
+ connection_count: Optional[float] = None
+
+ connector: Optional[Connector] = None
+
+ created_at: Optional[str] = None
+
+ disabled: Optional[bool] = None
+
+ display_name: Optional[str] = None
+
+ integrations: Optional[Dict[str, Integration]] = None
+
+ metadata: Optional[Dict[str, object]] = None
+ """
+ JSON object can can be used to associate arbitrary metadata to avoid needing a
+ separate 1-1 table just for simple key values in your application. During
+ updates this object will be shallowly merged
+ """
+
+ org_id: Optional[str] = None
+
+ updated_at: Optional[str] = None
+
+
class ConnectorSplitwiseDiscriminatedConnectorConfig(BaseModel):
config: object
@@ -8438,6 +8503,7 @@ class ConnectorYodleeDiscriminatedConnectorConfig(BaseModel):
ConnectorRampDiscriminatedConnectorConfig,
ConnectorSaltedgeDiscriminatedConnectorConfig,
ConnectorSharepointOnpremDiscriminatedConnectorConfig,
+ ConnectorSlackAgentDiscriminatedConnectorConfig,
ConnectorSplitwiseDiscriminatedConnectorConfig,
ConnectorStripeDiscriminatedConnectorConfig,
ConnectorTellerDiscriminatedConnectorConfig,
diff --git a/src/openint/types/get_connection_response.py b/src/openint/types/get_connection_response.py
index 3ea9a4e..f2eb335 100644
--- a/src/openint/types/get_connection_response.py
+++ b/src/openint/types/get_connection_response.py
@@ -625,6 +625,8 @@
"ConnectorSaltedgeDiscriminatedConnectionSettings",
"ConnectorSharepointOnpremDiscriminatedConnectionSettings",
"ConnectorSharepointOnpremDiscriminatedConnectionSettingsSettings",
+ "ConnectorSlackAgentDiscriminatedConnectionSettings",
+ "ConnectorSlackAgentDiscriminatedConnectionSettingsSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettingsSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettingsSettingsCurrentUser",
@@ -12977,6 +12979,48 @@ class ConnectorSharepointOnpremDiscriminatedConnectionSettings(BaseModel):
updated_at: Optional[str] = None
+class ConnectorSlackAgentDiscriminatedConnectionSettingsSettings(BaseModel):
+ bot_access_token: str
+ """Bot OAuth token - xoxb-..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectionSettings(BaseModel):
+ connector_name: Literal["slack-agent"]
+
+ id: Optional[str] = None
+
+ connector: Optional[Connector] = None
+
+ connector_config_id: Optional[str] = None
+
+ created_at: Optional[str] = None
+
+ customer_id: Optional[str] = None
+
+ disabled: Optional[bool] = None
+
+ display_name: Optional[str] = None
+
+ integration: Optional[Integration] = None
+
+ integration_id: Optional[str] = None
+
+ metadata: Optional[Dict[str, object]] = None
+ """
+ JSON object can can be used to associate arbitrary metadata to avoid needing a
+ separate 1-1 table just for simple key values in your application. During
+ updates this object will be shallowly merged
+ """
+
+ settings: Optional[ConnectorSlackAgentDiscriminatedConnectionSettingsSettings] = None
+
+ status: Optional[Literal["healthy", "disconnected", "error", "manual", "unknown"]] = None
+
+ status_message: Optional[str] = None
+
+ updated_at: Optional[str] = None
+
+
class ConnectorSplitwiseDiscriminatedConnectionSettingsSettingsCurrentUserNotifications(BaseModel):
added_as_friend: bool
@@ -13587,6 +13631,7 @@ class ConnectorYodleeDiscriminatedConnectionSettings(BaseModel):
ConnectorRampDiscriminatedConnectionSettings,
ConnectorSaltedgeDiscriminatedConnectionSettings,
ConnectorSharepointOnpremDiscriminatedConnectionSettings,
+ ConnectorSlackAgentDiscriminatedConnectionSettings,
ConnectorSplitwiseDiscriminatedConnectionSettings,
ConnectorStripeDiscriminatedConnectionSettings,
ConnectorTellerDiscriminatedConnectionSettings,
diff --git a/src/openint/types/integration.py b/src/openint/types/integration.py
index e1cad7e..a7c975e 100644
--- a/src/openint/types/integration.py
+++ b/src/openint/types/integration.py
@@ -140,6 +140,7 @@ class Integration(BaseModel):
"shopify",
"signnow",
"slack",
+ "slack-agent",
"smartsheet",
"snowflake",
"splitwise",
diff --git a/src/openint/types/list_connections_response.py b/src/openint/types/list_connections_response.py
index 66722c5..49c910d 100644
--- a/src/openint/types/list_connections_response.py
+++ b/src/openint/types/list_connections_response.py
@@ -625,6 +625,8 @@
"ConnectorSaltedgeDiscriminatedConnectionSettings",
"ConnectorSharepointOnpremDiscriminatedConnectionSettings",
"ConnectorSharepointOnpremDiscriminatedConnectionSettingsSettings",
+ "ConnectorSlackAgentDiscriminatedConnectionSettings",
+ "ConnectorSlackAgentDiscriminatedConnectionSettingsSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettingsSettings",
"ConnectorSplitwiseDiscriminatedConnectionSettingsSettingsCurrentUser",
@@ -12977,6 +12979,48 @@ class ConnectorSharepointOnpremDiscriminatedConnectionSettings(BaseModel):
updated_at: Optional[str] = None
+class ConnectorSlackAgentDiscriminatedConnectionSettingsSettings(BaseModel):
+ bot_access_token: str
+ """Bot OAuth token - xoxb-..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectionSettings(BaseModel):
+ connector_name: Literal["slack-agent"]
+
+ id: Optional[str] = None
+
+ connector: Optional[Connector] = None
+
+ connector_config_id: Optional[str] = None
+
+ created_at: Optional[str] = None
+
+ customer_id: Optional[str] = None
+
+ disabled: Optional[bool] = None
+
+ display_name: Optional[str] = None
+
+ integration: Optional[Integration] = None
+
+ integration_id: Optional[str] = None
+
+ metadata: Optional[Dict[str, object]] = None
+ """
+ JSON object can can be used to associate arbitrary metadata to avoid needing a
+ separate 1-1 table just for simple key values in your application. During
+ updates this object will be shallowly merged
+ """
+
+ settings: Optional[ConnectorSlackAgentDiscriminatedConnectionSettingsSettings] = None
+
+ status: Optional[Literal["healthy", "disconnected", "error", "manual", "unknown"]] = None
+
+ status_message: Optional[str] = None
+
+ updated_at: Optional[str] = None
+
+
class ConnectorSplitwiseDiscriminatedConnectionSettingsSettingsCurrentUserNotifications(BaseModel):
added_as_friend: bool
@@ -13587,6 +13631,7 @@ class ConnectorYodleeDiscriminatedConnectionSettings(BaseModel):
ConnectorRampDiscriminatedConnectionSettings,
ConnectorSaltedgeDiscriminatedConnectionSettings,
ConnectorSharepointOnpremDiscriminatedConnectionSettings,
+ ConnectorSlackAgentDiscriminatedConnectionSettings,
ConnectorSplitwiseDiscriminatedConnectionSettings,
ConnectorStripeDiscriminatedConnectionSettings,
ConnectorTellerDiscriminatedConnectionSettings,
diff --git a/src/openint/types/list_connector_configs_response.py b/src/openint/types/list_connector_configs_response.py
index 465b478..45a2ccf 100644
--- a/src/openint/types/list_connector_configs_response.py
+++ b/src/openint/types/list_connector_configs_response.py
@@ -474,6 +474,8 @@
"ConnectorSaltedgeDiscriminatedConnectorConfig",
"ConnectorSaltedgeDiscriminatedConnectorConfigConfig",
"ConnectorSharepointOnpremDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfigConfig",
"ConnectorSplitwiseDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfigConfig",
@@ -7972,6 +7974,69 @@ class ConnectorSharepointOnpremDiscriminatedConnectorConfig(BaseModel):
updated_at: Optional[str] = None
+class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
+ challenge_code: str
+ """Previous challenge code - e.g. challenge_slack_abc123xyz"""
+
+ challenge_response: str
+ """USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
+
+ event_subscription_url: str
+ """Initial event subscription URL"""
+
+ service_token: str
+ """Service token - xoxb-..."""
+
+ app_id: Optional[str] = None
+ """App ID - A1234567890"""
+
+ client_id: Optional[str] = None
+ """Client ID - 1234567890.1234567890"""
+
+ client_secret: Optional[str] = None
+ """Client secret - abc123..."""
+
+ initial_oauth_url: Optional[str] = None
+ """Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+
+ signing_secret: Optional[str] = None
+ """Signing secret - abc123..."""
+
+ verification_token: Optional[str] = None
+ """Verification token - xyz123..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectorConfig(BaseModel):
+ config: ConnectorSlackAgentDiscriminatedConnectorConfigConfig
+
+ connector_name: Literal["slack-agent"]
+
+ id: Optional[str] = None
+
+ connection_count: Optional[float] = None
+
+ connector: Optional[Connector] = None
+
+ created_at: Optional[str] = None
+
+ disabled: Optional[bool] = None
+
+ display_name: Optional[str] = None
+
+ integrations: Optional[Dict[str, Integration]] = None
+
+ metadata: Optional[Dict[str, object]] = None
+ """
+ JSON object can can be used to associate arbitrary metadata to avoid needing a
+ separate 1-1 table just for simple key values in your application. During
+ updates this object will be shallowly merged
+ """
+
+ org_id: Optional[str] = None
+
+ updated_at: Optional[str] = None
+
+
class ConnectorSplitwiseDiscriminatedConnectorConfig(BaseModel):
config: object
@@ -8438,6 +8503,7 @@ class ConnectorYodleeDiscriminatedConnectorConfig(BaseModel):
ConnectorRampDiscriminatedConnectorConfig,
ConnectorSaltedgeDiscriminatedConnectorConfig,
ConnectorSharepointOnpremDiscriminatedConnectorConfig,
+ ConnectorSlackAgentDiscriminatedConnectorConfig,
ConnectorSplitwiseDiscriminatedConnectorConfig,
ConnectorStripeDiscriminatedConnectorConfig,
ConnectorTellerDiscriminatedConnectorConfig,
diff --git a/src/openint/types/list_connnector_configs_response.py b/src/openint/types/list_connnector_configs_response.py
index df9c242..507c291 100644
--- a/src/openint/types/list_connnector_configs_response.py
+++ b/src/openint/types/list_connnector_configs_response.py
@@ -474,6 +474,8 @@
"ConnectorSaltedgeDiscriminatedConnectorConfig",
"ConnectorSaltedgeDiscriminatedConnectorConfigConfig",
"ConnectorSharepointOnpremDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfigConfig",
"ConnectorSplitwiseDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfigConfig",
@@ -7972,6 +7974,69 @@ class ConnectorSharepointOnpremDiscriminatedConnectorConfig(BaseModel):
updated_at: Optional[str] = None
+class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
+ challenge_code: str
+ """Previous challenge code - e.g. challenge_slack_abc123xyz"""
+
+ challenge_response: str
+ """USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
+
+ event_subscription_url: str
+ """Initial event subscription URL"""
+
+ service_token: str
+ """Service token - xoxb-..."""
+
+ app_id: Optional[str] = None
+ """App ID - A1234567890"""
+
+ client_id: Optional[str] = None
+ """Client ID - 1234567890.1234567890"""
+
+ client_secret: Optional[str] = None
+ """Client secret - abc123..."""
+
+ initial_oauth_url: Optional[str] = None
+ """Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+
+ signing_secret: Optional[str] = None
+ """Signing secret - abc123..."""
+
+ verification_token: Optional[str] = None
+ """Verification token - xyz123..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectorConfig(BaseModel):
+ config: ConnectorSlackAgentDiscriminatedConnectorConfigConfig
+
+ connector_name: Literal["slack-agent"]
+
+ id: Optional[str] = None
+
+ connection_count: Optional[float] = None
+
+ connector: Optional[Connector] = None
+
+ created_at: Optional[str] = None
+
+ disabled: Optional[bool] = None
+
+ display_name: Optional[str] = None
+
+ integrations: Optional[Dict[str, Integration]] = None
+
+ metadata: Optional[Dict[str, object]] = None
+ """
+ JSON object can can be used to associate arbitrary metadata to avoid needing a
+ separate 1-1 table just for simple key values in your application. During
+ updates this object will be shallowly merged
+ """
+
+ org_id: Optional[str] = None
+
+ updated_at: Optional[str] = None
+
+
class ConnectorSplitwiseDiscriminatedConnectorConfig(BaseModel):
config: object
@@ -8438,6 +8503,7 @@ class ConnectorYodleeDiscriminatedConnectorConfig(BaseModel):
ConnectorRampDiscriminatedConnectorConfig,
ConnectorSaltedgeDiscriminatedConnectorConfig,
ConnectorSharepointOnpremDiscriminatedConnectorConfig,
+ ConnectorSlackAgentDiscriminatedConnectorConfig,
ConnectorSplitwiseDiscriminatedConnectorConfig,
ConnectorStripeDiscriminatedConnectorConfig,
ConnectorTellerDiscriminatedConnectorConfig,
diff --git a/src/openint/types/pre_configure_connector_response.py b/src/openint/types/pre_configure_connector_response.py
new file mode 100644
index 0000000..952e8fc
--- /dev/null
+++ b/src/openint/types/pre_configure_connector_response.py
@@ -0,0 +1,8 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Dict
+from typing_extensions import TypeAlias
+
+__all__ = ["PreConfigureConnectorResponse"]
+
+PreConfigureConnectorResponse: TypeAlias = Dict[str, object]
diff --git a/src/openint/types/upsert_connnector_config_response.py b/src/openint/types/upsert_connnector_config_response.py
index 49985c0..43f8341 100644
--- a/src/openint/types/upsert_connnector_config_response.py
+++ b/src/openint/types/upsert_connnector_config_response.py
@@ -472,6 +472,8 @@
"ConnectorSaltedgeDiscriminatedConnectorConfig",
"ConnectorSaltedgeDiscriminatedConnectorConfigConfig",
"ConnectorSharepointOnpremDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfig",
+ "ConnectorSlackAgentDiscriminatedConnectorConfigConfig",
"ConnectorSplitwiseDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfig",
"ConnectorStripeDiscriminatedConnectorConfigConfig",
@@ -6992,6 +6994,63 @@ class ConnectorSharepointOnpremDiscriminatedConnectorConfig(BaseModel):
updated_at: Optional[str] = None
+class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
+ challenge_code: str
+ """Previous challenge code - e.g. challenge_slack_abc123xyz"""
+
+ challenge_response: str
+ """USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
+
+ event_subscription_url: str
+ """Initial event subscription URL"""
+
+ service_token: str
+ """Service token - xoxb-..."""
+
+ app_id: Optional[str] = None
+ """App ID - A1234567890"""
+
+ client_id: Optional[str] = None
+ """Client ID - 1234567890.1234567890"""
+
+ client_secret: Optional[str] = None
+ """Client secret - abc123..."""
+
+ initial_oauth_url: Optional[str] = None
+ """Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+
+ signing_secret: Optional[str] = None
+ """Signing secret - abc123..."""
+
+ verification_token: Optional[str] = None
+ """Verification token - xyz123..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectorConfig(BaseModel):
+ config: ConnectorSlackAgentDiscriminatedConnectorConfigConfig
+
+ connector_name: Literal["slack-agent"]
+
+ id: Optional[str] = None
+
+ created_at: Optional[str] = None
+
+ disabled: Optional[bool] = None
+
+ display_name: Optional[str] = None
+
+ metadata: Optional[Dict[str, object]] = None
+ """
+ JSON object can can be used to associate arbitrary metadata to avoid needing a
+ separate 1-1 table just for simple key values in your application. During
+ updates this object will be shallowly merged
+ """
+
+ org_id: Optional[str] = None
+
+ updated_at: Optional[str] = None
+
+
class ConnectorSplitwiseDiscriminatedConnectorConfig(BaseModel):
config: object
@@ -7410,6 +7469,7 @@ class ConnectorYodleeDiscriminatedConnectorConfig(BaseModel):
ConnectorRampDiscriminatedConnectorConfig,
ConnectorSaltedgeDiscriminatedConnectorConfig,
ConnectorSharepointOnpremDiscriminatedConnectorConfig,
+ ConnectorSlackAgentDiscriminatedConnectorConfig,
ConnectorSplitwiseDiscriminatedConnectorConfig,
ConnectorStripeDiscriminatedConnectorConfig,
ConnectorTellerDiscriminatedConnectorConfig,
diff --git a/tests/api_resources/test_client.py b/tests/api_resources/test_client.py
index 660a3f3..7dd0cf7 100644
--- a/tests/api_resources/test_client.py
+++ b/tests/api_resources/test_client.py
@@ -12,6 +12,7 @@
from openint.types import (
ListEventsResponse,
CreateTokenResponse,
+ ConnectorRpcResponse,
GetConnectionResponse,
ListCustomersResponse,
GetCurrentUserResponse,
@@ -29,6 +30,7 @@
ListConnectorConfigsResponse,
DeleteConnectorConfigResponse,
ListConnnectorConfigsResponse,
+ PreConfigureConnectorResponse,
CreateConnnectorConfigResponse,
UpsertConnnectorConfigResponse,
)
@@ -134,6 +136,63 @@ def test_path_params_check_connection(self, client: Openint) -> None:
"",
)
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_method_connector_rpc(self, client: Openint) -> None:
+ client_ = client.connector_rpc(
+ function_name="function_name",
+ connector_config_id="ccfg_",
+ input={"foo": "bar"},
+ )
+ assert_matches_type(ConnectorRpcResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_raw_response_connector_rpc(self, client: Openint) -> None:
+ response = client.with_raw_response.connector_rpc(
+ function_name="function_name",
+ connector_config_id="ccfg_",
+ input={"foo": "bar"},
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ client_ = response.parse()
+ assert_matches_type(ConnectorRpcResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_streaming_response_connector_rpc(self, client: Openint) -> None:
+ with client.with_streaming_response.connector_rpc(
+ function_name="function_name",
+ connector_config_id="ccfg_",
+ input={"foo": "bar"},
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ client_ = response.parse()
+ assert_matches_type(ConnectorRpcResponse, client_, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_path_params_connector_rpc(self, client: Openint) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `connector_config_id` but received ''"):
+ client.with_raw_response.connector_rpc(
+ function_name="function_name",
+ connector_config_id="",
+ input={"foo": "bar"},
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `function_name` but received ''"):
+ client.with_raw_response.connector_rpc(
+ function_name="",
+ connector_config_id="ccfg_",
+ input={"foo": "bar"},
+ )
+
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
def test_method_create_connection(self, client: Openint) -> None:
@@ -866,6 +925,40 @@ def test_streaming_response_list_events(self, client: Openint) -> None:
assert cast(Any, response.is_closed) is True
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_method_pre_configure_connector(self, client: Openint) -> None:
+ client_ = client.pre_configure_connector(
+ connector_name="accelo",
+ )
+ assert_matches_type(PreConfigureConnectorResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_raw_response_pre_configure_connector(self, client: Openint) -> None:
+ response = client.with_raw_response.pre_configure_connector(
+ connector_name="accelo",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ client_ = response.parse()
+ assert_matches_type(PreConfigureConnectorResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_streaming_response_pre_configure_connector(self, client: Openint) -> None:
+ with client.with_streaming_response.pre_configure_connector(
+ connector_name="accelo",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ client_ = response.parse()
+ assert_matches_type(PreConfigureConnectorResponse, client_, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
def test_method_upsert_connnector_config(self, client: Openint) -> None:
@@ -1098,6 +1191,63 @@ async def test_path_params_check_connection(self, async_client: AsyncOpenint) ->
"",
)
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_method_connector_rpc(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.connector_rpc(
+ function_name="function_name",
+ connector_config_id="ccfg_",
+ input={"foo": "bar"},
+ )
+ assert_matches_type(ConnectorRpcResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_raw_response_connector_rpc(self, async_client: AsyncOpenint) -> None:
+ response = await async_client.with_raw_response.connector_rpc(
+ function_name="function_name",
+ connector_config_id="ccfg_",
+ input={"foo": "bar"},
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ client = await response.parse()
+ assert_matches_type(ConnectorRpcResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_streaming_response_connector_rpc(self, async_client: AsyncOpenint) -> None:
+ async with async_client.with_streaming_response.connector_rpc(
+ function_name="function_name",
+ connector_config_id="ccfg_",
+ input={"foo": "bar"},
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ client = await response.parse()
+ assert_matches_type(ConnectorRpcResponse, client, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_path_params_connector_rpc(self, async_client: AsyncOpenint) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `connector_config_id` but received ''"):
+ await async_client.with_raw_response.connector_rpc(
+ function_name="function_name",
+ connector_config_id="",
+ input={"foo": "bar"},
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `function_name` but received ''"):
+ await async_client.with_raw_response.connector_rpc(
+ function_name="",
+ connector_config_id="ccfg_",
+ input={"foo": "bar"},
+ )
+
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
async def test_method_create_connection(self, async_client: AsyncOpenint) -> None:
@@ -1830,6 +1980,40 @@ async def test_streaming_response_list_events(self, async_client: AsyncOpenint)
assert cast(Any, response.is_closed) is True
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_method_pre_configure_connector(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.pre_configure_connector(
+ connector_name="accelo",
+ )
+ assert_matches_type(PreConfigureConnectorResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_raw_response_pre_configure_connector(self, async_client: AsyncOpenint) -> None:
+ response = await async_client.with_raw_response.pre_configure_connector(
+ connector_name="accelo",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ client = await response.parse()
+ assert_matches_type(PreConfigureConnectorResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_streaming_response_pre_configure_connector(self, async_client: AsyncOpenint) -> None:
+ async with async_client.with_streaming_response.pre_configure_connector(
+ connector_name="accelo",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ client = await response.parse()
+ assert_matches_type(PreConfigureConnectorResponse, client, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
async def test_method_upsert_connnector_config(self, async_client: AsyncOpenint) -> None:
From 3344695e46661bed707c0a568123392ef59d094a Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 27 Aug 2025 05:26:36 +0000
Subject: [PATCH 06/13] feat(api): adding preconnect
---
.stats.yml | 6 +-
api.md | 2 +
src/openint/_client.py | 112 +
src/openint/types/__init__.py | 2 +
.../types/client_pre_connect_params.py | 2286 ++++++++++++++
.../create_connnector_config_response.py | 12 +-
.../types/get_conector_config_response.py | 12 +-
.../types/list_connector_configs_response.py | 12 +-
.../types/list_connnector_configs_response.py | 12 +-
src/openint/types/pre_connect_response.py | 2769 +++++++++++++++++
.../upsert_connnector_config_response.py | 12 +-
tests/api_resources/test_client.py | 131 +
12 files changed, 5335 insertions(+), 33 deletions(-)
create mode 100644 src/openint/types/client_pre_connect_params.py
create mode 100644 src/openint/types/pre_connect_response.py
diff --git a/.stats.yml b/.stats.yml
index d083c7c..0303ab3 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 22
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-d1701d4f03bd59aed345f98c67778710a7f686a08c05aa65feeff96b934443f6.yml
-openapi_spec_hash: aef8b2d73cd4ade0067d31356091f4e6
+configured_endpoints: 23
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openint%2Fopenint-2b8f2f26c935902e8db61d0ed193c7bc27d9295a9b803ab1dffbecff272d3df9.yml
+openapi_spec_hash: 362f13d2f3cc90f94f41b27f7bb2d467
config_hash: 4653b579bed6c8e88c01a1d40bfa0b41
diff --git a/api.md b/api.md
index 801e0a3..7798e52 100644
--- a/api.md
+++ b/api.md
@@ -26,6 +26,7 @@ from openint.types import (
ListCustomersResponse,
ListEventsResponse,
PreConfigureConnectorResponse,
+ PreConnectResponse,
UpsertConnnectorConfigResponse,
UpsertCustomerResponse,
UpsertOrganizationResponse,
@@ -54,6 +55,7 @@ Methods:
- client.list_customers(\*\*params) -> SyncOffsetPagination[ListCustomersResponse]
- client.list_events(\*\*params) -> SyncOffsetPagination[ListEventsResponse]
- client.pre_configure_connector(\*\*params) -> PreConfigureConnectorResponse
+- client.pre_connect(\*\*params) -> PreConnectResponse
- client.upsert_connnector_config(id, \*\*params) -> UpsertConnnectorConfigResponse
- client.upsert_customer(\*\*params) -> UpsertCustomerResponse
- client.upsert_organization(org_id) -> UpsertOrganizationResponse
diff --git a/src/openint/_client.py b/src/openint/_client.py
index 54d9890..9f5e2b8 100644
--- a/src/openint/_client.py
+++ b/src/openint/_client.py
@@ -12,6 +12,7 @@
from ._qs import Querystring
from .types import (
client_list_events_params,
+ client_pre_connect_params,
client_create_token_params,
client_connector_rpc_params,
client_get_connection_params,
@@ -63,6 +64,7 @@
make_request_options,
)
from .types.list_events_response import ListEventsResponse
+from .types.pre_connect_response import PreConnectResponse
from .types.create_token_response import CreateTokenResponse
from .types.connector_rpc_response import ConnectorRpcResponse
from .types.get_connection_response import GetConnectionResponse
@@ -1845,6 +1847,55 @@ def pre_configure_connector(
cast_to=PreConfigureConnectorResponse,
)
+ def pre_connect(
+ self,
+ *,
+ connector_config_id: str,
+ discriminated_data: client_pre_connect_params.DiscriminatedData,
+ options: client_pre_connect_params.Options,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> PreConnectResponse:
+ """Args:
+ connector_config_id: Must correspond to data.connector_name.
+
+ Technically id should imply
+ connector_name already but there is no way to specify a discriminated union with
+ id alone.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ return cast(
+ PreConnectResponse,
+ self.post(
+ "/v1/connect/pre-connect",
+ body=maybe_transform(
+ {
+ "connector_config_id": connector_config_id,
+ "discriminated_data": discriminated_data,
+ "options": options,
+ },
+ client_pre_connect_params.ClientPreConnectParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=cast(
+ Any, PreConnectResponse
+ ), # Union types cannot be passed in as arguments in the type system
+ ),
+ )
+
def upsert_connnector_config(
self,
id: str,
@@ -3757,6 +3808,55 @@ async def pre_configure_connector(
cast_to=PreConfigureConnectorResponse,
)
+ async def pre_connect(
+ self,
+ *,
+ connector_config_id: str,
+ discriminated_data: client_pre_connect_params.DiscriminatedData,
+ options: client_pre_connect_params.Options,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> PreConnectResponse:
+ """Args:
+ connector_config_id: Must correspond to data.connector_name.
+
+ Technically id should imply
+ connector_name already but there is no way to specify a discriminated union with
+ id alone.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ return cast(
+ PreConnectResponse,
+ await self.post(
+ "/v1/connect/pre-connect",
+ body=await async_maybe_transform(
+ {
+ "connector_config_id": connector_config_id,
+ "discriminated_data": discriminated_data,
+ "options": options,
+ },
+ client_pre_connect_params.ClientPreConnectParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=cast(
+ Any, PreConnectResponse
+ ), # Union types cannot be passed in as arguments in the type system
+ ),
+ )
+
async def upsert_connnector_config(
self,
id: str,
@@ -3975,6 +4075,9 @@ def __init__(self, client: Openint) -> None:
self.pre_configure_connector = to_raw_response_wrapper(
client.pre_configure_connector,
)
+ self.pre_connect = to_raw_response_wrapper(
+ client.pre_connect,
+ )
self.upsert_connnector_config = to_raw_response_wrapper(
client.upsert_connnector_config,
)
@@ -4048,6 +4151,9 @@ def __init__(self, client: AsyncOpenint) -> None:
self.pre_configure_connector = async_to_raw_response_wrapper(
client.pre_configure_connector,
)
+ self.pre_connect = async_to_raw_response_wrapper(
+ client.pre_connect,
+ )
self.upsert_connnector_config = async_to_raw_response_wrapper(
client.upsert_connnector_config,
)
@@ -4121,6 +4227,9 @@ def __init__(self, client: Openint) -> None:
self.pre_configure_connector = to_streamed_response_wrapper(
client.pre_configure_connector,
)
+ self.pre_connect = to_streamed_response_wrapper(
+ client.pre_connect,
+ )
self.upsert_connnector_config = to_streamed_response_wrapper(
client.upsert_connnector_config,
)
@@ -4194,6 +4303,9 @@ def __init__(self, client: AsyncOpenint) -> None:
self.pre_configure_connector = async_to_streamed_response_wrapper(
client.pre_configure_connector,
)
+ self.pre_connect = async_to_streamed_response_wrapper(
+ client.pre_connect,
+ )
self.upsert_connnector_config = async_to_streamed_response_wrapper(
client.upsert_connnector_config,
)
diff --git a/src/openint/types/__init__.py b/src/openint/types/__init__.py
index 9aa8b75..10002b2 100644
--- a/src/openint/types/__init__.py
+++ b/src/openint/types/__init__.py
@@ -5,6 +5,7 @@
from .connector import Connector as Connector
from .integration import Integration as Integration
from .list_events_response import ListEventsResponse as ListEventsResponse
+from .pre_connect_response import PreConnectResponse as PreConnectResponse
from .create_token_response import CreateTokenResponse as CreateTokenResponse
from .connector_rpc_response import ConnectorRpcResponse as ConnectorRpcResponse
from .get_connection_response import GetConnectionResponse as GetConnectionResponse
@@ -13,6 +14,7 @@
from .upsert_customer_response import UpsertCustomerResponse as UpsertCustomerResponse
from .check_connection_response import CheckConnectionResponse as CheckConnectionResponse
from .client_list_events_params import ClientListEventsParams as ClientListEventsParams
+from .client_pre_connect_params import ClientPreConnectParams as ClientPreConnectParams
from .get_current_user_response import GetCurrentUserResponse as GetCurrentUserResponse
from .list_assignments_response import ListAssignmentsResponse as ListAssignmentsResponse
from .list_connections_response import ListConnectionsResponse as ListConnectionsResponse
diff --git a/src/openint/types/client_pre_connect_params.py b/src/openint/types/client_pre_connect_params.py
new file mode 100644
index 0000000..976d29c
--- /dev/null
+++ b/src/openint/types/client_pre_connect_params.py
@@ -0,0 +1,2286 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Union, Iterable
+from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
+
+from .._utils import PropertyInfo
+
+__all__ = [
+ "ClientPreConnectParams",
+ "DiscriminatedData",
+ "DiscriminatedDataConnectorAcceloDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAcceloDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAcmeApikeyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAcmeOauth2DiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAcmeOauth2DiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAdobeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAdobeDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAdyenDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAdyenDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAircallDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAircallDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAmazonDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAmazonDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorApaleoDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorApaleoDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAsanaDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAsanaDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAttioDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAttioDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAuth0DiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAuth0DiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAutodeskDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAutodeskDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAwsDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorAwsDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBamboohrDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBamboohrDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBasecampDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBasecampDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBattlenetDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBattlenetDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBigcommerceDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBigcommerceDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBitbucketDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBitbucketDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBitlyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBitlyDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBlackbaudDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBlackbaudDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBoldsignDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBoldsignDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBoxDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBoxDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorBraintreeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBraintreeDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorCalendlyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorCalendlyDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorClickupDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorClickupDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorCloseDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorCloseDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorConfluenceDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorConfluenceDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorContentfulDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorContentfulDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorContentstackDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorContentstackDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorCopperDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorCopperDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorCorosDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorCorosDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorDatevDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorDatevDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorDeelDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorDeelDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorDialpadDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorDialpadDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorDigitaloceanDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorDigitaloceanDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorDiscordDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorDiscordDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorDocusignDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorDocusignDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorDropboxDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorDropboxDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorEbayDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorEbayDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorEgnyteDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorEgnyteDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorEnvoyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorEnvoyDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorEventbriteDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorEventbriteDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorExistDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorExistDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorFacebookDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFacebookDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorFactorialDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFactorialDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorFigmaDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFigmaDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorFitbitDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFitbitDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorFortnoxDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFortnoxDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorFreshbooksDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFreshbooksDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorFrontDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFrontDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGitHubDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGitHubDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGitlabDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGitlabDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGongDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGongDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGoogleCalendarDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGoogleCalendarDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGoogleDocsDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGoogleDocsDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGoogleDriveDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGoogleDriveDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGoogleMailDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGoogleMailDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGoogleSheetDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGoogleSheetDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGorgiasDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGorgiasDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGrainDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGrainDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGumroadDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGumroadDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorGustoDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGustoDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorHarvestDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorHarvestDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorHighlevelDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorHighlevelDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorHubspotDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorHubspotDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorInstagramDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorInstagramDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorIntercomDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorIntercomDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorJiraDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorJiraDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorKeapDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorKeapDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorLeverDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorLeverDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorLinearDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorLinearDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorLinkedinDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorLinkedinDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorLinkhutDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorLinkhutDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorMailchimpDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorMailchimpDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorMiroDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorMiroDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorMondayDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorMondayDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorMuralDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorMuralDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorNamelyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorNamelyDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorNationbuilderDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorNationbuilderDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorNetsuiteDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorNetsuiteDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorNotionDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorNotionDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorOdooDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorOdooDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorOktaDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorOktaDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorOsuDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorOsuDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorOuraDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorOuraDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorOutreachDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorOutreachDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPagerdutyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPagerdutyDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPandadocDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPandadocDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPayfitDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPayfitDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPaypalDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPaypalDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPennylaneDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPennylaneDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPinterestDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPinterestDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPipedriveDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPipedriveDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPodiumDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPodiumDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorProductboardDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorProductboardDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorQualtricsDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorQualtricsDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorQuickbooksDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorQuickbooksDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorRedditDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorRedditDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSageDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSageDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSalesforceDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSalesforceDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSalesloftDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSalesloftDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSegmentDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSegmentDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorServicem8DiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorServicem8DiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorServicenowDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorServicenowDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSharepointDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSharepointDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorShopifyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorShopifyDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSignnowDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSignnowDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSlackDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSlackDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSmartsheetDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSmartsheetDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSnowflakeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSnowflakeDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSpotifyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSpotifyDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSquarespaceDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSquarespaceDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorSquareupDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSquareupDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorStackexchangeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorStackexchangeDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorStravaDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorStravaDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTeamworkDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTeamworkDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTicktickDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTicktickDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTimelyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTimelyDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTodoistDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTodoistDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTremendousDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTremendousDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTsheetsteamDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTsheetsteamDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTumblrDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTumblrDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTwinfieldDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTwinfieldDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTwitchDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTwitchDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTwitterDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTwitterDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorTypeformDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTypeformDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorUberDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorUberDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorVimeoDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorVimeoDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorWakatimeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorWakatimeDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorWealthboxDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorWealthboxDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorWebflowDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorWebflowDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorWhoopDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorWhoopDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorWordpressDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorWordpressDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorWrikeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorWrikeDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorXeroDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorXeroDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorYahooDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorYahooDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorYandexDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorYandexDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorZapierDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorZapierDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorZendeskDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorZendeskDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorZenefitsDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorZenefitsDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorZohoDeskDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorZohoDeskDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorZohoDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorZohoDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorZoomDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorZoomDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorAirtableDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorApolloDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorBrexDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorCodaDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFinchDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorFinchDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorFirebaseDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorForeceiptDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorGreenhouseDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorHeronDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorLunchmoneyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorMercuryDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorMergeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorMergeDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorMootaDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorOnebrickDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorOpenledgerDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPlaidDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorPlaidDiscriminatedPreConnectInputPreConnectInput",
+ "DiscriminatedDataConnectorPostgresDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorRampDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSaltedgeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSharepointOnpremDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSlackAgentDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorSplitwiseDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorStripeDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTellerDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTogglDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorTwentyDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorVenmoDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorWiseDiscriminatedPreConnectInput",
+ "DiscriminatedDataConnectorYodleeDiscriminatedPreConnectInput",
+ "Options",
+]
+
+
+class ClientPreConnectParams(TypedDict, total=False):
+ connector_config_id: Required[str]
+ """
+ Must correspond to data.connector_name. Technically id should imply
+ connector_name already but there is no way to specify a discriminated union with
+ id alone.
+ """
+
+ discriminated_data: Required[DiscriminatedData]
+
+ options: Required[Options]
+
+
+class DiscriminatedDataConnectorAcceloDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAcceloDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["accelo"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAcceloDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAcmeApikeyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["acme-apikey"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorAcmeOauth2DiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAcmeOauth2DiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["acme-oauth2"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAcmeOauth2DiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAdobeDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAdobeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["adobe"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAdobeDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAdyenDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAdyenDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["adyen"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAdyenDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAircallDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAircallDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["aircall"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAircallDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAmazonDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAmazonDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["amazon"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAmazonDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorApaleoDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorApaleoDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["apaleo"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorApaleoDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAsanaDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAsanaDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["asana"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAsanaDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAttioDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAttioDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["attio"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAttioDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAuth0DiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAuth0DiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["auth0"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAuth0DiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAutodeskDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAutodeskDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["autodesk"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAutodeskDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAwsDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorAwsDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["aws"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorAwsDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBamboohrDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBamboohrDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["bamboohr"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBamboohrDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBasecampDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBasecampDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["basecamp"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBasecampDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBattlenetDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBattlenetDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["battlenet"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBattlenetDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBigcommerceDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBigcommerceDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["bigcommerce"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBigcommerceDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBitbucketDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBitbucketDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["bitbucket"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBitbucketDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBitlyDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBitlyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["bitly"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBitlyDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBlackbaudDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBlackbaudDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["blackbaud"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBlackbaudDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBoldsignDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBoldsignDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["boldsign"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBoldsignDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBoxDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBoxDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["box"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBoxDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorBraintreeDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorBraintreeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["braintree"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorBraintreeDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorCalendlyDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorCalendlyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["calendly"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorCalendlyDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorClickupDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorClickupDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["clickup"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorClickupDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorCloseDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorCloseDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["close"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorCloseDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorConfluenceDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorConfluenceDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["confluence"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorConfluenceDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorContentfulDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorContentfulDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["contentful"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorContentfulDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorContentstackDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorContentstackDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["contentstack"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorContentstackDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorCopperDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorCopperDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["copper"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorCopperDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorCorosDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorCorosDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["coros"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorCorosDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorDatevDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorDatevDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["datev"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorDatevDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorDeelDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorDeelDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["deel"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorDeelDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorDialpadDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorDialpadDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["dialpad"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorDialpadDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorDigitaloceanDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorDigitaloceanDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["digitalocean"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorDigitaloceanDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorDiscordDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorDiscordDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["discord"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorDiscordDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorDocusignDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorDocusignDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["docusign"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorDocusignDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorDropboxDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorDropboxDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["dropbox"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorDropboxDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorEbayDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorEbayDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["ebay"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorEbayDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorEgnyteDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorEgnyteDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["egnyte"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorEgnyteDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorEnvoyDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorEnvoyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["envoy"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorEnvoyDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorEventbriteDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorEventbriteDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["eventbrite"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorEventbriteDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorExistDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorExistDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["exist"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorExistDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorFacebookDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorFacebookDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["facebook"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorFacebookDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorFactorialDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorFactorialDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["factorial"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorFactorialDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorFigmaDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorFigmaDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["figma"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorFigmaDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorFitbitDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorFitbitDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["fitbit"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorFitbitDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorFortnoxDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorFortnoxDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["fortnox"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorFortnoxDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorFreshbooksDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorFreshbooksDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["freshbooks"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorFreshbooksDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorFrontDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorFrontDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["front"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorFrontDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGitHubDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGitHubDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["github"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGitHubDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGitlabDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGitlabDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["gitlab"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGitlabDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGongDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGongDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["gong"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGongDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGoogleCalendarDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGoogleCalendarDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["google-calendar"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGoogleCalendarDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGoogleDocsDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGoogleDocsDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["google-docs"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGoogleDocsDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGoogleDriveDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGoogleDriveDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["google-drive"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGoogleDriveDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGoogleMailDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGoogleMailDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["google-mail"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGoogleMailDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGoogleSheetDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGoogleSheetDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["google-sheet"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGoogleSheetDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGorgiasDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGorgiasDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["gorgias"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGorgiasDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGrainDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGrainDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["grain"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGrainDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGumroadDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGumroadDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["gumroad"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGumroadDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorGustoDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorGustoDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["gusto"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorGustoDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorHarvestDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorHarvestDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["harvest"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorHarvestDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorHighlevelDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorHighlevelDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["highlevel"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorHighlevelDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorHubspotDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorHubspotDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["hubspot"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorHubspotDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorInstagramDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorInstagramDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["instagram"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorInstagramDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorIntercomDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorIntercomDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["intercom"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorIntercomDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorJiraDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorJiraDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["jira"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorJiraDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorKeapDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorKeapDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["keap"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorKeapDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorLeverDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorLeverDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["lever"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorLeverDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorLinearDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorLinearDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["linear"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorLinearDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorLinkedinDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorLinkedinDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["linkedin"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorLinkedinDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorLinkhutDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorLinkhutDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["linkhut"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorLinkhutDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorMailchimpDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorMailchimpDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["mailchimp"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorMailchimpDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorMiroDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorMiroDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["miro"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorMiroDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorMondayDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorMondayDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["monday"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorMondayDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorMuralDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorMuralDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["mural"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorMuralDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorNamelyDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorNamelyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["namely"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorNamelyDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorNationbuilderDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorNationbuilderDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["nationbuilder"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorNationbuilderDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorNetsuiteDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorNetsuiteDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["netsuite"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorNetsuiteDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorNotionDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorNotionDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["notion"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorNotionDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorOdooDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorOdooDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["odoo"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorOdooDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorOktaDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorOktaDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["okta"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorOktaDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorOsuDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorOsuDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["osu"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorOsuDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorOuraDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorOuraDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["oura"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorOuraDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorOutreachDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorOutreachDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["outreach"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorOutreachDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPagerdutyDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorPagerdutyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["pagerduty"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPagerdutyDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPandadocDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorPandadocDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["pandadoc"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPandadocDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPayfitDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorPayfitDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["payfit"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPayfitDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPaypalDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorPaypalDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["paypal"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPaypalDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPennylaneDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorPennylaneDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["pennylane"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPennylaneDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPinterestDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorPinterestDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["pinterest"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPinterestDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPipedriveDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorPipedriveDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["pipedrive"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPipedriveDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPodiumDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorPodiumDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["podium"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPodiumDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorProductboardDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorProductboardDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["productboard"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorProductboardDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorQualtricsDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorQualtricsDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["qualtrics"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorQualtricsDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorQuickbooksDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorQuickbooksDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["quickbooks"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorQuickbooksDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorRedditDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorRedditDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["reddit"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorRedditDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSageDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSageDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["sage"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSageDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSalesforceDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSalesforceDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["salesforce"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSalesforceDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSalesloftDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSalesloftDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["salesloft"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSalesloftDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSegmentDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSegmentDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["segment"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSegmentDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorServicem8DiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorServicem8DiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["servicem8"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorServicem8DiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorServicenowDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorServicenowDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["servicenow"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorServicenowDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSharepointDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSharepointDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["sharepoint"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSharepointDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorShopifyDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorShopifyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["shopify"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorShopifyDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSignnowDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSignnowDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["signnow"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSignnowDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSlackDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSlackDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["slack"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSlackDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSmartsheetDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSmartsheetDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["smartsheet"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSmartsheetDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSnowflakeDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSnowflakeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["snowflake"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSnowflakeDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSpotifyDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSpotifyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["spotify"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSpotifyDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSquarespaceDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSquarespaceDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["squarespace"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSquarespaceDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorSquareupDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorSquareupDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["squareup"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorSquareupDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorStackexchangeDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorStackexchangeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["stackexchange"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorStackexchangeDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorStravaDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorStravaDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["strava"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorStravaDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTeamworkDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTeamworkDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["teamwork"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTeamworkDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTicktickDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTicktickDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["ticktick"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTicktickDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTimelyDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTimelyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["timely"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTimelyDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTodoistDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTodoistDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["todoist"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTodoistDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTremendousDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTremendousDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["tremendous"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTremendousDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTsheetsteamDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTsheetsteamDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["tsheetsteam"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTsheetsteamDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTumblrDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTumblrDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["tumblr"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTumblrDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTwinfieldDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTwinfieldDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["twinfield"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTwinfieldDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTwitchDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTwitchDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["twitch"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTwitchDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTwitterDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTwitterDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["twitter"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTwitterDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorTypeformDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorTypeformDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["typeform"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorTypeformDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorUberDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorUberDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["uber"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorUberDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorVimeoDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorVimeoDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["vimeo"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorVimeoDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorWakatimeDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorWakatimeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["wakatime"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorWakatimeDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorWealthboxDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorWealthboxDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["wealthbox"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorWealthboxDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorWebflowDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorWebflowDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["webflow"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorWebflowDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorWhoopDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorWhoopDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["whoop"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorWhoopDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorWordpressDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorWordpressDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["wordpress"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorWordpressDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorWrikeDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorWrikeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["wrike"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorWrikeDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorXeroDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorXeroDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["xero"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorXeroDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorYahooDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorYahooDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["yahoo"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorYahooDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorYandexDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorYandexDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["yandex"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorYandexDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorZapierDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorZapierDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["zapier"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorZapierDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorZendeskDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorZendeskDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["zendesk"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorZendeskDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorZenefitsDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorZenefitsDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["zenefits"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorZenefitsDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorZohoDeskDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorZohoDeskDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["zoho-desk"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorZohoDeskDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorZohoDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorZohoDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["zoho"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorZohoDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorZoomDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ connection_id: str
+ """In case of re-connecting, id of the existing connection"""
+
+
+class DiscriminatedDataConnectorZoomDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["zoom"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorZoomDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorAirtableDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["airtable"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorApolloDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["apollo"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorBrexDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["brex"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorCodaDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["coda"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorFinchDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ state: str
+
+
+class DiscriminatedDataConnectorFinchDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["finch"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorFinchDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorFirebaseDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["firebase"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorForeceiptDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["foreceipt"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorGreenhouseDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["greenhouse"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorHeronDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["heron"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorLunchmoneyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["lunchmoney"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorMercuryDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["mercury"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorMergeDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ categories: Required[Iterable[object]]
+
+ customer_email_address: str
+
+ customer_organization_name: str
+
+
+class DiscriminatedDataConnectorMergeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["merge"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorMergeDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorMootaDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["moota"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorOnebrickDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["onebrick"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorOpenledgerDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["openledger"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorPlaidDiscriminatedPreConnectInputPreConnectInput(TypedDict, total=False):
+ language: Literal["en", "fr", "es", "nl", "de"]
+
+ sandbox_public_token_create: Annotated[bool, PropertyInfo(alias="sandboxPublicTokenCreate")]
+
+
+class DiscriminatedDataConnectorPlaidDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["plaid"]]
+
+ pre_connect_input: Required[DiscriminatedDataConnectorPlaidDiscriminatedPreConnectInputPreConnectInput]
+
+
+class DiscriminatedDataConnectorPostgresDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["postgres"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorRampDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["ramp"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorSaltedgeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["saltedge"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorSharepointOnpremDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["sharepoint-onprem"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorSlackAgentDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["slack-agent"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorSplitwiseDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["splitwise"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorStripeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["stripe"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorTellerDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["teller"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorTogglDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["toggl"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorTwentyDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["twenty"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorVenmoDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["venmo"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorWiseDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["wise"]]
+
+ pre_connect_input: Required[object]
+
+
+class DiscriminatedDataConnectorYodleeDiscriminatedPreConnectInput(TypedDict, total=False):
+ connector_name: Required[Literal["yodlee"]]
+
+ pre_connect_input: Required[object]
+
+
+DiscriminatedData: TypeAlias = Union[
+ DiscriminatedDataConnectorAcceloDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAcmeApikeyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAcmeOauth2DiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAdobeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAdyenDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAircallDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAmazonDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorApaleoDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAsanaDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAttioDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAuth0DiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAutodeskDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAwsDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBamboohrDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBasecampDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBattlenetDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBigcommerceDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBitbucketDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBitlyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBlackbaudDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBoldsignDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBoxDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBraintreeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorCalendlyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorClickupDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorCloseDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorConfluenceDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorContentfulDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorContentstackDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorCopperDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorCorosDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorDatevDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorDeelDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorDialpadDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorDigitaloceanDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorDiscordDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorDocusignDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorDropboxDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorEbayDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorEgnyteDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorEnvoyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorEventbriteDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorExistDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFacebookDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFactorialDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFigmaDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFitbitDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFortnoxDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFreshbooksDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFrontDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGitHubDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGitlabDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGongDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGoogleCalendarDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGoogleDocsDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGoogleDriveDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGoogleMailDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGoogleSheetDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGorgiasDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGrainDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGumroadDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGustoDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorHarvestDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorHighlevelDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorHubspotDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorInstagramDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorIntercomDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorJiraDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorKeapDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorLeverDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorLinearDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorLinkedinDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorLinkhutDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorMailchimpDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorMiroDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorMondayDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorMuralDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorNamelyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorNationbuilderDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorNetsuiteDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorNotionDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorOdooDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorOktaDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorOsuDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorOuraDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorOutreachDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPagerdutyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPandadocDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPayfitDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPaypalDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPennylaneDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPinterestDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPipedriveDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPodiumDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorProductboardDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorQualtricsDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorQuickbooksDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorRedditDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSageDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSalesforceDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSalesloftDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSegmentDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorServicem8DiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorServicenowDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSharepointDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorShopifyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSignnowDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSlackDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSmartsheetDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSnowflakeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSpotifyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSquarespaceDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSquareupDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorStackexchangeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorStravaDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTeamworkDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTicktickDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTimelyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTodoistDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTremendousDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTsheetsteamDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTumblrDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTwinfieldDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTwitchDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTwitterDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTypeformDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorUberDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorVimeoDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorWakatimeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorWealthboxDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorWebflowDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorWhoopDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorWordpressDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorWrikeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorXeroDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorYahooDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorYandexDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorZapierDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorZendeskDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorZenefitsDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorZohoDeskDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorZohoDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorZoomDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorAirtableDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorApolloDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorBrexDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorCodaDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFinchDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorFirebaseDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorForeceiptDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorGreenhouseDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorHeronDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorLunchmoneyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorMercuryDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorMergeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorMootaDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorOnebrickDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorOpenledgerDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPlaidDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorPostgresDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorRampDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSaltedgeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSharepointOnpremDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSlackAgentDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorSplitwiseDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorStripeDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTellerDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTogglDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorTwentyDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorVenmoDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorWiseDiscriminatedPreConnectInput,
+ DiscriminatedDataConnectorYodleeDiscriminatedPreConnectInput,
+]
+
+
+class Options(TypedDict, total=False):
+ connection_external_id: Annotated[Union[str, float, None], PropertyInfo(alias="connectionExternalId")]
+
+ integration_external_id: Annotated[Union[str, float, None], PropertyInfo(alias="integrationExternalId")]
diff --git a/src/openint/types/create_connnector_config_response.py b/src/openint/types/create_connnector_config_response.py
index 1406ae7..eec01f0 100644
--- a/src/openint/types/create_connnector_config_response.py
+++ b/src/openint/types/create_connnector_config_response.py
@@ -7001,12 +7001,6 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
challenge_response: str
"""USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
- event_subscription_url: str
- """Initial event subscription URL"""
-
- service_token: str
- """Service token - xoxb-..."""
-
app_id: Optional[str] = None
"""App ID - A1234567890"""
@@ -7016,9 +7010,15 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
client_secret: Optional[str] = None
"""Client secret - abc123..."""
+ event_subscription_url: Optional[str] = None
+ """Initial event subscription URL"""
+
initial_oauth_url: Optional[str] = None
"""Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+ service_token: Optional[str] = None
+ """Service token - xoxb-..."""
+
signing_secret: Optional[str] = None
"""Signing secret - abc123..."""
diff --git a/src/openint/types/get_conector_config_response.py b/src/openint/types/get_conector_config_response.py
index f86df63..848ef81 100644
--- a/src/openint/types/get_conector_config_response.py
+++ b/src/openint/types/get_conector_config_response.py
@@ -7981,12 +7981,6 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
challenge_response: str
"""USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
- event_subscription_url: str
- """Initial event subscription URL"""
-
- service_token: str
- """Service token - xoxb-..."""
-
app_id: Optional[str] = None
"""App ID - A1234567890"""
@@ -7996,9 +7990,15 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
client_secret: Optional[str] = None
"""Client secret - abc123..."""
+ event_subscription_url: Optional[str] = None
+ """Initial event subscription URL"""
+
initial_oauth_url: Optional[str] = None
"""Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+ service_token: Optional[str] = None
+ """Service token - xoxb-..."""
+
signing_secret: Optional[str] = None
"""Signing secret - abc123..."""
diff --git a/src/openint/types/list_connector_configs_response.py b/src/openint/types/list_connector_configs_response.py
index 45a2ccf..31e40cb 100644
--- a/src/openint/types/list_connector_configs_response.py
+++ b/src/openint/types/list_connector_configs_response.py
@@ -7981,12 +7981,6 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
challenge_response: str
"""USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
- event_subscription_url: str
- """Initial event subscription URL"""
-
- service_token: str
- """Service token - xoxb-..."""
-
app_id: Optional[str] = None
"""App ID - A1234567890"""
@@ -7996,9 +7990,15 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
client_secret: Optional[str] = None
"""Client secret - abc123..."""
+ event_subscription_url: Optional[str] = None
+ """Initial event subscription URL"""
+
initial_oauth_url: Optional[str] = None
"""Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+ service_token: Optional[str] = None
+ """Service token - xoxb-..."""
+
signing_secret: Optional[str] = None
"""Signing secret - abc123..."""
diff --git a/src/openint/types/list_connnector_configs_response.py b/src/openint/types/list_connnector_configs_response.py
index 507c291..2341bde 100644
--- a/src/openint/types/list_connnector_configs_response.py
+++ b/src/openint/types/list_connnector_configs_response.py
@@ -7981,12 +7981,6 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
challenge_response: str
"""USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
- event_subscription_url: str
- """Initial event subscription URL"""
-
- service_token: str
- """Service token - xoxb-..."""
-
app_id: Optional[str] = None
"""App ID - A1234567890"""
@@ -7996,9 +7990,15 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
client_secret: Optional[str] = None
"""Client secret - abc123..."""
+ event_subscription_url: Optional[str] = None
+ """Initial event subscription URL"""
+
initial_oauth_url: Optional[str] = None
"""Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+ service_token: Optional[str] = None
+ """Service token - xoxb-..."""
+
signing_secret: Optional[str] = None
"""Signing secret - abc123..."""
diff --git a/src/openint/types/pre_connect_response.py b/src/openint/types/pre_connect_response.py
new file mode 100644
index 0000000..5ca02c4
--- /dev/null
+++ b/src/openint/types/pre_connect_response.py
@@ -0,0 +1,2769 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Union, Optional
+from typing_extensions import Literal, Annotated, TypeAlias
+
+from pydantic import Field as FieldInfo
+
+from .._utils import PropertyInfo
+from .._models import BaseModel
+
+__all__ = [
+ "PreConnectResponse",
+ "ConnectorAcceloDiscriminatedConnectInput",
+ "ConnectorAcceloDiscriminatedConnectInputConnectInput",
+ "ConnectorAcmeApikeyDiscriminatedConnectInput",
+ "ConnectorAcmeOauth2DiscriminatedConnectInput",
+ "ConnectorAcmeOauth2DiscriminatedConnectInputConnectInput",
+ "ConnectorAdobeDiscriminatedConnectInput",
+ "ConnectorAdobeDiscriminatedConnectInputConnectInput",
+ "ConnectorAdyenDiscriminatedConnectInput",
+ "ConnectorAdyenDiscriminatedConnectInputConnectInput",
+ "ConnectorAircallDiscriminatedConnectInput",
+ "ConnectorAircallDiscriminatedConnectInputConnectInput",
+ "ConnectorAmazonDiscriminatedConnectInput",
+ "ConnectorAmazonDiscriminatedConnectInputConnectInput",
+ "ConnectorApaleoDiscriminatedConnectInput",
+ "ConnectorApaleoDiscriminatedConnectInputConnectInput",
+ "ConnectorAsanaDiscriminatedConnectInput",
+ "ConnectorAsanaDiscriminatedConnectInputConnectInput",
+ "ConnectorAttioDiscriminatedConnectInput",
+ "ConnectorAttioDiscriminatedConnectInputConnectInput",
+ "ConnectorAuth0DiscriminatedConnectInput",
+ "ConnectorAuth0DiscriminatedConnectInputConnectInput",
+ "ConnectorAutodeskDiscriminatedConnectInput",
+ "ConnectorAutodeskDiscriminatedConnectInputConnectInput",
+ "ConnectorAwsDiscriminatedConnectInput",
+ "ConnectorAwsDiscriminatedConnectInputConnectInput",
+ "ConnectorBamboohrDiscriminatedConnectInput",
+ "ConnectorBamboohrDiscriminatedConnectInputConnectInput",
+ "ConnectorBasecampDiscriminatedConnectInput",
+ "ConnectorBasecampDiscriminatedConnectInputConnectInput",
+ "ConnectorBattlenetDiscriminatedConnectInput",
+ "ConnectorBattlenetDiscriminatedConnectInputConnectInput",
+ "ConnectorBigcommerceDiscriminatedConnectInput",
+ "ConnectorBigcommerceDiscriminatedConnectInputConnectInput",
+ "ConnectorBitbucketDiscriminatedConnectInput",
+ "ConnectorBitbucketDiscriminatedConnectInputConnectInput",
+ "ConnectorBitlyDiscriminatedConnectInput",
+ "ConnectorBitlyDiscriminatedConnectInputConnectInput",
+ "ConnectorBlackbaudDiscriminatedConnectInput",
+ "ConnectorBlackbaudDiscriminatedConnectInputConnectInput",
+ "ConnectorBoldsignDiscriminatedConnectInput",
+ "ConnectorBoldsignDiscriminatedConnectInputConnectInput",
+ "ConnectorBoxDiscriminatedConnectInput",
+ "ConnectorBoxDiscriminatedConnectInputConnectInput",
+ "ConnectorBraintreeDiscriminatedConnectInput",
+ "ConnectorBraintreeDiscriminatedConnectInputConnectInput",
+ "ConnectorCalendlyDiscriminatedConnectInput",
+ "ConnectorCalendlyDiscriminatedConnectInputConnectInput",
+ "ConnectorClickupDiscriminatedConnectInput",
+ "ConnectorClickupDiscriminatedConnectInputConnectInput",
+ "ConnectorCloseDiscriminatedConnectInput",
+ "ConnectorCloseDiscriminatedConnectInputConnectInput",
+ "ConnectorConfluenceDiscriminatedConnectInput",
+ "ConnectorConfluenceDiscriminatedConnectInputConnectInput",
+ "ConnectorContentfulDiscriminatedConnectInput",
+ "ConnectorContentfulDiscriminatedConnectInputConnectInput",
+ "ConnectorContentstackDiscriminatedConnectInput",
+ "ConnectorContentstackDiscriminatedConnectInputConnectInput",
+ "ConnectorCopperDiscriminatedConnectInput",
+ "ConnectorCopperDiscriminatedConnectInputConnectInput",
+ "ConnectorCorosDiscriminatedConnectInput",
+ "ConnectorCorosDiscriminatedConnectInputConnectInput",
+ "ConnectorDatevDiscriminatedConnectInput",
+ "ConnectorDatevDiscriminatedConnectInputConnectInput",
+ "ConnectorDeelDiscriminatedConnectInput",
+ "ConnectorDeelDiscriminatedConnectInputConnectInput",
+ "ConnectorDialpadDiscriminatedConnectInput",
+ "ConnectorDialpadDiscriminatedConnectInputConnectInput",
+ "ConnectorDigitaloceanDiscriminatedConnectInput",
+ "ConnectorDigitaloceanDiscriminatedConnectInputConnectInput",
+ "ConnectorDiscordDiscriminatedConnectInput",
+ "ConnectorDiscordDiscriminatedConnectInputConnectInput",
+ "ConnectorDocusignDiscriminatedConnectInput",
+ "ConnectorDocusignDiscriminatedConnectInputConnectInput",
+ "ConnectorDropboxDiscriminatedConnectInput",
+ "ConnectorDropboxDiscriminatedConnectInputConnectInput",
+ "ConnectorEbayDiscriminatedConnectInput",
+ "ConnectorEbayDiscriminatedConnectInputConnectInput",
+ "ConnectorEgnyteDiscriminatedConnectInput",
+ "ConnectorEgnyteDiscriminatedConnectInputConnectInput",
+ "ConnectorEnvoyDiscriminatedConnectInput",
+ "ConnectorEnvoyDiscriminatedConnectInputConnectInput",
+ "ConnectorEventbriteDiscriminatedConnectInput",
+ "ConnectorEventbriteDiscriminatedConnectInputConnectInput",
+ "ConnectorExistDiscriminatedConnectInput",
+ "ConnectorExistDiscriminatedConnectInputConnectInput",
+ "ConnectorFacebookDiscriminatedConnectInput",
+ "ConnectorFacebookDiscriminatedConnectInputConnectInput",
+ "ConnectorFactorialDiscriminatedConnectInput",
+ "ConnectorFactorialDiscriminatedConnectInputConnectInput",
+ "ConnectorFigmaDiscriminatedConnectInput",
+ "ConnectorFigmaDiscriminatedConnectInputConnectInput",
+ "ConnectorFitbitDiscriminatedConnectInput",
+ "ConnectorFitbitDiscriminatedConnectInputConnectInput",
+ "ConnectorFortnoxDiscriminatedConnectInput",
+ "ConnectorFortnoxDiscriminatedConnectInputConnectInput",
+ "ConnectorFreshbooksDiscriminatedConnectInput",
+ "ConnectorFreshbooksDiscriminatedConnectInputConnectInput",
+ "ConnectorFrontDiscriminatedConnectInput",
+ "ConnectorFrontDiscriminatedConnectInputConnectInput",
+ "ConnectorGitHubDiscriminatedConnectInput",
+ "ConnectorGitHubDiscriminatedConnectInputConnectInput",
+ "ConnectorGitlabDiscriminatedConnectInput",
+ "ConnectorGitlabDiscriminatedConnectInputConnectInput",
+ "ConnectorGongDiscriminatedConnectInput",
+ "ConnectorGongDiscriminatedConnectInputConnectInput",
+ "ConnectorGoogleCalendarDiscriminatedConnectInput",
+ "ConnectorGoogleCalendarDiscriminatedConnectInputConnectInput",
+ "ConnectorGoogleDocsDiscriminatedConnectInput",
+ "ConnectorGoogleDocsDiscriminatedConnectInputConnectInput",
+ "ConnectorGoogleDriveDiscriminatedConnectInput",
+ "ConnectorGoogleDriveDiscriminatedConnectInputConnectInput",
+ "ConnectorGoogleMailDiscriminatedConnectInput",
+ "ConnectorGoogleMailDiscriminatedConnectInputConnectInput",
+ "ConnectorGoogleSheetDiscriminatedConnectInput",
+ "ConnectorGoogleSheetDiscriminatedConnectInputConnectInput",
+ "ConnectorGorgiasDiscriminatedConnectInput",
+ "ConnectorGorgiasDiscriminatedConnectInputConnectInput",
+ "ConnectorGrainDiscriminatedConnectInput",
+ "ConnectorGrainDiscriminatedConnectInputConnectInput",
+ "ConnectorGumroadDiscriminatedConnectInput",
+ "ConnectorGumroadDiscriminatedConnectInputConnectInput",
+ "ConnectorGustoDiscriminatedConnectInput",
+ "ConnectorGustoDiscriminatedConnectInputConnectInput",
+ "ConnectorHarvestDiscriminatedConnectInput",
+ "ConnectorHarvestDiscriminatedConnectInputConnectInput",
+ "ConnectorHighlevelDiscriminatedConnectInput",
+ "ConnectorHighlevelDiscriminatedConnectInputConnectInput",
+ "ConnectorHubspotDiscriminatedConnectInput",
+ "ConnectorHubspotDiscriminatedConnectInputConnectInput",
+ "ConnectorInstagramDiscriminatedConnectInput",
+ "ConnectorInstagramDiscriminatedConnectInputConnectInput",
+ "ConnectorIntercomDiscriminatedConnectInput",
+ "ConnectorIntercomDiscriminatedConnectInputConnectInput",
+ "ConnectorJiraDiscriminatedConnectInput",
+ "ConnectorJiraDiscriminatedConnectInputConnectInput",
+ "ConnectorKeapDiscriminatedConnectInput",
+ "ConnectorKeapDiscriminatedConnectInputConnectInput",
+ "ConnectorLeverDiscriminatedConnectInput",
+ "ConnectorLeverDiscriminatedConnectInputConnectInput",
+ "ConnectorLinearDiscriminatedConnectInput",
+ "ConnectorLinearDiscriminatedConnectInputConnectInput",
+ "ConnectorLinkedinDiscriminatedConnectInput",
+ "ConnectorLinkedinDiscriminatedConnectInputConnectInput",
+ "ConnectorLinkhutDiscriminatedConnectInput",
+ "ConnectorLinkhutDiscriminatedConnectInputConnectInput",
+ "ConnectorMailchimpDiscriminatedConnectInput",
+ "ConnectorMailchimpDiscriminatedConnectInputConnectInput",
+ "ConnectorMiroDiscriminatedConnectInput",
+ "ConnectorMiroDiscriminatedConnectInputConnectInput",
+ "ConnectorMondayDiscriminatedConnectInput",
+ "ConnectorMondayDiscriminatedConnectInputConnectInput",
+ "ConnectorMuralDiscriminatedConnectInput",
+ "ConnectorMuralDiscriminatedConnectInputConnectInput",
+ "ConnectorNamelyDiscriminatedConnectInput",
+ "ConnectorNamelyDiscriminatedConnectInputConnectInput",
+ "ConnectorNationbuilderDiscriminatedConnectInput",
+ "ConnectorNationbuilderDiscriminatedConnectInputConnectInput",
+ "ConnectorNetsuiteDiscriminatedConnectInput",
+ "ConnectorNetsuiteDiscriminatedConnectInputConnectInput",
+ "ConnectorNotionDiscriminatedConnectInput",
+ "ConnectorNotionDiscriminatedConnectInputConnectInput",
+ "ConnectorOdooDiscriminatedConnectInput",
+ "ConnectorOdooDiscriminatedConnectInputConnectInput",
+ "ConnectorOktaDiscriminatedConnectInput",
+ "ConnectorOktaDiscriminatedConnectInputConnectInput",
+ "ConnectorOsuDiscriminatedConnectInput",
+ "ConnectorOsuDiscriminatedConnectInputConnectInput",
+ "ConnectorOuraDiscriminatedConnectInput",
+ "ConnectorOuraDiscriminatedConnectInputConnectInput",
+ "ConnectorOutreachDiscriminatedConnectInput",
+ "ConnectorOutreachDiscriminatedConnectInputConnectInput",
+ "ConnectorPagerdutyDiscriminatedConnectInput",
+ "ConnectorPagerdutyDiscriminatedConnectInputConnectInput",
+ "ConnectorPandadocDiscriminatedConnectInput",
+ "ConnectorPandadocDiscriminatedConnectInputConnectInput",
+ "ConnectorPayfitDiscriminatedConnectInput",
+ "ConnectorPayfitDiscriminatedConnectInputConnectInput",
+ "ConnectorPaypalDiscriminatedConnectInput",
+ "ConnectorPaypalDiscriminatedConnectInputConnectInput",
+ "ConnectorPennylaneDiscriminatedConnectInput",
+ "ConnectorPennylaneDiscriminatedConnectInputConnectInput",
+ "ConnectorPinterestDiscriminatedConnectInput",
+ "ConnectorPinterestDiscriminatedConnectInputConnectInput",
+ "ConnectorPipedriveDiscriminatedConnectInput",
+ "ConnectorPipedriveDiscriminatedConnectInputConnectInput",
+ "ConnectorPodiumDiscriminatedConnectInput",
+ "ConnectorPodiumDiscriminatedConnectInputConnectInput",
+ "ConnectorProductboardDiscriminatedConnectInput",
+ "ConnectorProductboardDiscriminatedConnectInputConnectInput",
+ "ConnectorQualtricsDiscriminatedConnectInput",
+ "ConnectorQualtricsDiscriminatedConnectInputConnectInput",
+ "ConnectorQuickbooksDiscriminatedConnectInput",
+ "ConnectorQuickbooksDiscriminatedConnectInputConnectInput",
+ "ConnectorRedditDiscriminatedConnectInput",
+ "ConnectorRedditDiscriminatedConnectInputConnectInput",
+ "ConnectorSageDiscriminatedConnectInput",
+ "ConnectorSageDiscriminatedConnectInputConnectInput",
+ "ConnectorSalesforceDiscriminatedConnectInput",
+ "ConnectorSalesforceDiscriminatedConnectInputConnectInput",
+ "ConnectorSalesloftDiscriminatedConnectInput",
+ "ConnectorSalesloftDiscriminatedConnectInputConnectInput",
+ "ConnectorSegmentDiscriminatedConnectInput",
+ "ConnectorSegmentDiscriminatedConnectInputConnectInput",
+ "ConnectorServicem8DiscriminatedConnectInput",
+ "ConnectorServicem8DiscriminatedConnectInputConnectInput",
+ "ConnectorServicenowDiscriminatedConnectInput",
+ "ConnectorServicenowDiscriminatedConnectInputConnectInput",
+ "ConnectorSharepointDiscriminatedConnectInput",
+ "ConnectorSharepointDiscriminatedConnectInputConnectInput",
+ "ConnectorShopifyDiscriminatedConnectInput",
+ "ConnectorShopifyDiscriminatedConnectInputConnectInput",
+ "ConnectorSignnowDiscriminatedConnectInput",
+ "ConnectorSignnowDiscriminatedConnectInputConnectInput",
+ "ConnectorSlackDiscriminatedConnectInput",
+ "ConnectorSlackDiscriminatedConnectInputConnectInput",
+ "ConnectorSmartsheetDiscriminatedConnectInput",
+ "ConnectorSmartsheetDiscriminatedConnectInputConnectInput",
+ "ConnectorSnowflakeDiscriminatedConnectInput",
+ "ConnectorSnowflakeDiscriminatedConnectInputConnectInput",
+ "ConnectorSpotifyDiscriminatedConnectInput",
+ "ConnectorSpotifyDiscriminatedConnectInputConnectInput",
+ "ConnectorSquarespaceDiscriminatedConnectInput",
+ "ConnectorSquarespaceDiscriminatedConnectInputConnectInput",
+ "ConnectorSquareupDiscriminatedConnectInput",
+ "ConnectorSquareupDiscriminatedConnectInputConnectInput",
+ "ConnectorStackexchangeDiscriminatedConnectInput",
+ "ConnectorStackexchangeDiscriminatedConnectInputConnectInput",
+ "ConnectorStravaDiscriminatedConnectInput",
+ "ConnectorStravaDiscriminatedConnectInputConnectInput",
+ "ConnectorTeamworkDiscriminatedConnectInput",
+ "ConnectorTeamworkDiscriminatedConnectInputConnectInput",
+ "ConnectorTicktickDiscriminatedConnectInput",
+ "ConnectorTicktickDiscriminatedConnectInputConnectInput",
+ "ConnectorTimelyDiscriminatedConnectInput",
+ "ConnectorTimelyDiscriminatedConnectInputConnectInput",
+ "ConnectorTodoistDiscriminatedConnectInput",
+ "ConnectorTodoistDiscriminatedConnectInputConnectInput",
+ "ConnectorTremendousDiscriminatedConnectInput",
+ "ConnectorTremendousDiscriminatedConnectInputConnectInput",
+ "ConnectorTsheetsteamDiscriminatedConnectInput",
+ "ConnectorTsheetsteamDiscriminatedConnectInputConnectInput",
+ "ConnectorTumblrDiscriminatedConnectInput",
+ "ConnectorTumblrDiscriminatedConnectInputConnectInput",
+ "ConnectorTwinfieldDiscriminatedConnectInput",
+ "ConnectorTwinfieldDiscriminatedConnectInputConnectInput",
+ "ConnectorTwitchDiscriminatedConnectInput",
+ "ConnectorTwitchDiscriminatedConnectInputConnectInput",
+ "ConnectorTwitterDiscriminatedConnectInput",
+ "ConnectorTwitterDiscriminatedConnectInputConnectInput",
+ "ConnectorTypeformDiscriminatedConnectInput",
+ "ConnectorTypeformDiscriminatedConnectInputConnectInput",
+ "ConnectorUberDiscriminatedConnectInput",
+ "ConnectorUberDiscriminatedConnectInputConnectInput",
+ "ConnectorVimeoDiscriminatedConnectInput",
+ "ConnectorVimeoDiscriminatedConnectInputConnectInput",
+ "ConnectorWakatimeDiscriminatedConnectInput",
+ "ConnectorWakatimeDiscriminatedConnectInputConnectInput",
+ "ConnectorWealthboxDiscriminatedConnectInput",
+ "ConnectorWealthboxDiscriminatedConnectInputConnectInput",
+ "ConnectorWebflowDiscriminatedConnectInput",
+ "ConnectorWebflowDiscriminatedConnectInputConnectInput",
+ "ConnectorWhoopDiscriminatedConnectInput",
+ "ConnectorWhoopDiscriminatedConnectInputConnectInput",
+ "ConnectorWordpressDiscriminatedConnectInput",
+ "ConnectorWordpressDiscriminatedConnectInputConnectInput",
+ "ConnectorWrikeDiscriminatedConnectInput",
+ "ConnectorWrikeDiscriminatedConnectInputConnectInput",
+ "ConnectorXeroDiscriminatedConnectInput",
+ "ConnectorXeroDiscriminatedConnectInputConnectInput",
+ "ConnectorYahooDiscriminatedConnectInput",
+ "ConnectorYahooDiscriminatedConnectInputConnectInput",
+ "ConnectorYandexDiscriminatedConnectInput",
+ "ConnectorYandexDiscriminatedConnectInputConnectInput",
+ "ConnectorZapierDiscriminatedConnectInput",
+ "ConnectorZapierDiscriminatedConnectInputConnectInput",
+ "ConnectorZendeskDiscriminatedConnectInput",
+ "ConnectorZendeskDiscriminatedConnectInputConnectInput",
+ "ConnectorZenefitsDiscriminatedConnectInput",
+ "ConnectorZenefitsDiscriminatedConnectInputConnectInput",
+ "ConnectorZohoDeskDiscriminatedConnectInput",
+ "ConnectorZohoDeskDiscriminatedConnectInputConnectInput",
+ "ConnectorZohoDiscriminatedConnectInput",
+ "ConnectorZohoDiscriminatedConnectInputConnectInput",
+ "ConnectorZoomDiscriminatedConnectInput",
+ "ConnectorZoomDiscriminatedConnectInputConnectInput",
+ "ConnectorAirtableDiscriminatedConnectInput",
+ "ConnectorApolloDiscriminatedConnectInput",
+ "ConnectorBrexDiscriminatedConnectInput",
+ "ConnectorCodaDiscriminatedConnectInput",
+ "ConnectorFinchDiscriminatedConnectInput",
+ "ConnectorFinchDiscriminatedConnectInputConnectInput",
+ "ConnectorFirebaseDiscriminatedConnectInput",
+ "ConnectorForeceiptDiscriminatedConnectInput",
+ "ConnectorForeceiptDiscriminatedConnectInputConnectInput",
+ "ConnectorGreenhouseDiscriminatedConnectInput",
+ "ConnectorHeronDiscriminatedConnectInput",
+ "ConnectorLunchmoneyDiscriminatedConnectInput",
+ "ConnectorMercuryDiscriminatedConnectInput",
+ "ConnectorMergeDiscriminatedConnectInput",
+ "ConnectorMergeDiscriminatedConnectInputConnectInput",
+ "ConnectorMootaDiscriminatedConnectInput",
+ "ConnectorOnebrickDiscriminatedConnectInput",
+ "ConnectorOnebrickDiscriminatedConnectInputConnectInput",
+ "ConnectorOpenledgerDiscriminatedConnectInput",
+ "ConnectorPlaidDiscriminatedConnectInput",
+ "ConnectorPlaidDiscriminatedConnectInputConnectInput",
+ "ConnectorPlaidDiscriminatedConnectInputConnectInputLinkToken",
+ "ConnectorPlaidDiscriminatedConnectInputConnectInputPublicToken",
+ "ConnectorPostgresDiscriminatedConnectInput",
+ "ConnectorRampDiscriminatedConnectInput",
+ "ConnectorRampDiscriminatedConnectInputConnectInput",
+ "ConnectorSaltedgeDiscriminatedConnectInput",
+ "ConnectorSharepointOnpremDiscriminatedConnectInput",
+ "ConnectorSlackAgentDiscriminatedConnectInput",
+ "ConnectorSlackAgentDiscriminatedConnectInputConnectInput",
+ "ConnectorSplitwiseDiscriminatedConnectInput",
+ "ConnectorStripeDiscriminatedConnectInput",
+ "ConnectorTellerDiscriminatedConnectInput",
+ "ConnectorTellerDiscriminatedConnectInputConnectInput",
+ "ConnectorTogglDiscriminatedConnectInput",
+ "ConnectorTogglDiscriminatedConnectInputConnectInput",
+ "ConnectorTwentyDiscriminatedConnectInput",
+ "ConnectorVenmoDiscriminatedConnectInput",
+ "ConnectorWiseDiscriminatedConnectInput",
+ "ConnectorWiseDiscriminatedConnectInputConnectInput",
+ "ConnectorYodleeDiscriminatedConnectInput",
+ "ConnectorYodleeDiscriminatedConnectInputConnectInput",
+ "ConnectorYodleeDiscriminatedConnectInputConnectInputAccessToken",
+]
+
+
+class ConnectorAcceloDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAcceloDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAcceloDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["accelo"]
+
+
+class ConnectorAcmeApikeyDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["acme-apikey"]
+
+
+class ConnectorAcmeOauth2DiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAcmeOauth2DiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAcmeOauth2DiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["acme-oauth2"]
+
+
+class ConnectorAdobeDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAdobeDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAdobeDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["adobe"]
+
+
+class ConnectorAdyenDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAdyenDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAdyenDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["adyen"]
+
+
+class ConnectorAircallDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAircallDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAircallDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["aircall"]
+
+
+class ConnectorAmazonDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAmazonDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAmazonDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["amazon"]
+
+
+class ConnectorApaleoDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorApaleoDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorApaleoDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["apaleo"]
+
+
+class ConnectorAsanaDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAsanaDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAsanaDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["asana"]
+
+
+class ConnectorAttioDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAttioDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAttioDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["attio"]
+
+
+class ConnectorAuth0DiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAuth0DiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAuth0DiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["auth0"]
+
+
+class ConnectorAutodeskDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAutodeskDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAutodeskDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["autodesk"]
+
+
+class ConnectorAwsDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorAwsDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorAwsDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["aws"]
+
+
+class ConnectorBamboohrDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBamboohrDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBamboohrDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["bamboohr"]
+
+
+class ConnectorBasecampDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBasecampDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBasecampDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["basecamp"]
+
+
+class ConnectorBattlenetDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBattlenetDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBattlenetDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["battlenet"]
+
+
+class ConnectorBigcommerceDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBigcommerceDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBigcommerceDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["bigcommerce"]
+
+
+class ConnectorBitbucketDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBitbucketDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBitbucketDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["bitbucket"]
+
+
+class ConnectorBitlyDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBitlyDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBitlyDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["bitly"]
+
+
+class ConnectorBlackbaudDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBlackbaudDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBlackbaudDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["blackbaud"]
+
+
+class ConnectorBoldsignDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBoldsignDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBoldsignDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["boldsign"]
+
+
+class ConnectorBoxDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBoxDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBoxDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["box"]
+
+
+class ConnectorBraintreeDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorBraintreeDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorBraintreeDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["braintree"]
+
+
+class ConnectorCalendlyDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorCalendlyDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorCalendlyDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["calendly"]
+
+
+class ConnectorClickupDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorClickupDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorClickupDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["clickup"]
+
+
+class ConnectorCloseDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorCloseDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorCloseDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["close"]
+
+
+class ConnectorConfluenceDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorConfluenceDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorConfluenceDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["confluence"]
+
+
+class ConnectorContentfulDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorContentfulDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorContentfulDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["contentful"]
+
+
+class ConnectorContentstackDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorContentstackDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorContentstackDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["contentstack"]
+
+
+class ConnectorCopperDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorCopperDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorCopperDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["copper"]
+
+
+class ConnectorCorosDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorCorosDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorCorosDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["coros"]
+
+
+class ConnectorDatevDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorDatevDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorDatevDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["datev"]
+
+
+class ConnectorDeelDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorDeelDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorDeelDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["deel"]
+
+
+class ConnectorDialpadDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorDialpadDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorDialpadDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["dialpad"]
+
+
+class ConnectorDigitaloceanDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorDigitaloceanDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorDigitaloceanDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["digitalocean"]
+
+
+class ConnectorDiscordDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorDiscordDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorDiscordDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["discord"]
+
+
+class ConnectorDocusignDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorDocusignDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorDocusignDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["docusign"]
+
+
+class ConnectorDropboxDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorDropboxDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorDropboxDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["dropbox"]
+
+
+class ConnectorEbayDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorEbayDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorEbayDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["ebay"]
+
+
+class ConnectorEgnyteDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorEgnyteDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorEgnyteDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["egnyte"]
+
+
+class ConnectorEnvoyDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorEnvoyDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorEnvoyDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["envoy"]
+
+
+class ConnectorEventbriteDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorEventbriteDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorEventbriteDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["eventbrite"]
+
+
+class ConnectorExistDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorExistDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorExistDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["exist"]
+
+
+class ConnectorFacebookDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorFacebookDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorFacebookDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["facebook"]
+
+
+class ConnectorFactorialDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorFactorialDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorFactorialDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["factorial"]
+
+
+class ConnectorFigmaDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorFigmaDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorFigmaDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["figma"]
+
+
+class ConnectorFitbitDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorFitbitDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorFitbitDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["fitbit"]
+
+
+class ConnectorFortnoxDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorFortnoxDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorFortnoxDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["fortnox"]
+
+
+class ConnectorFreshbooksDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorFreshbooksDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorFreshbooksDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["freshbooks"]
+
+
+class ConnectorFrontDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorFrontDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorFrontDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["front"]
+
+
+class ConnectorGitHubDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGitHubDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGitHubDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["github"]
+
+
+class ConnectorGitlabDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGitlabDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGitlabDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["gitlab"]
+
+
+class ConnectorGongDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGongDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGongDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["gong"]
+
+
+class ConnectorGoogleCalendarDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGoogleCalendarDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGoogleCalendarDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["google-calendar"]
+
+
+class ConnectorGoogleDocsDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGoogleDocsDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGoogleDocsDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["google-docs"]
+
+
+class ConnectorGoogleDriveDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGoogleDriveDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGoogleDriveDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["google-drive"]
+
+
+class ConnectorGoogleMailDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGoogleMailDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGoogleMailDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["google-mail"]
+
+
+class ConnectorGoogleSheetDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGoogleSheetDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGoogleSheetDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["google-sheet"]
+
+
+class ConnectorGorgiasDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGorgiasDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGorgiasDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["gorgias"]
+
+
+class ConnectorGrainDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGrainDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGrainDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["grain"]
+
+
+class ConnectorGumroadDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGumroadDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGumroadDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["gumroad"]
+
+
+class ConnectorGustoDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorGustoDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorGustoDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["gusto"]
+
+
+class ConnectorHarvestDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorHarvestDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorHarvestDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["harvest"]
+
+
+class ConnectorHighlevelDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorHighlevelDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorHighlevelDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["highlevel"]
+
+
+class ConnectorHubspotDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorHubspotDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorHubspotDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["hubspot"]
+
+
+class ConnectorInstagramDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorInstagramDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorInstagramDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["instagram"]
+
+
+class ConnectorIntercomDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorIntercomDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorIntercomDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["intercom"]
+
+
+class ConnectorJiraDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorJiraDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorJiraDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["jira"]
+
+
+class ConnectorKeapDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorKeapDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorKeapDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["keap"]
+
+
+class ConnectorLeverDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorLeverDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorLeverDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["lever"]
+
+
+class ConnectorLinearDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorLinearDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorLinearDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["linear"]
+
+
+class ConnectorLinkedinDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorLinkedinDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorLinkedinDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["linkedin"]
+
+
+class ConnectorLinkhutDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorLinkhutDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorLinkhutDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["linkhut"]
+
+
+class ConnectorMailchimpDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorMailchimpDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorMailchimpDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["mailchimp"]
+
+
+class ConnectorMiroDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorMiroDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorMiroDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["miro"]
+
+
+class ConnectorMondayDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorMondayDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorMondayDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["monday"]
+
+
+class ConnectorMuralDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorMuralDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorMuralDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["mural"]
+
+
+class ConnectorNamelyDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorNamelyDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorNamelyDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["namely"]
+
+
+class ConnectorNationbuilderDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorNationbuilderDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorNationbuilderDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["nationbuilder"]
+
+
+class ConnectorNetsuiteDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorNetsuiteDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorNetsuiteDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["netsuite"]
+
+
+class ConnectorNotionDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorNotionDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorNotionDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["notion"]
+
+
+class ConnectorOdooDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorOdooDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorOdooDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["odoo"]
+
+
+class ConnectorOktaDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorOktaDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorOktaDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["okta"]
+
+
+class ConnectorOsuDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorOsuDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorOsuDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["osu"]
+
+
+class ConnectorOuraDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorOuraDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorOuraDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["oura"]
+
+
+class ConnectorOutreachDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorOutreachDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorOutreachDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["outreach"]
+
+
+class ConnectorPagerdutyDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorPagerdutyDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPagerdutyDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["pagerduty"]
+
+
+class ConnectorPandadocDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorPandadocDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPandadocDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["pandadoc"]
+
+
+class ConnectorPayfitDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorPayfitDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPayfitDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["payfit"]
+
+
+class ConnectorPaypalDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorPaypalDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPaypalDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["paypal"]
+
+
+class ConnectorPennylaneDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorPennylaneDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPennylaneDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["pennylane"]
+
+
+class ConnectorPinterestDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorPinterestDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPinterestDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["pinterest"]
+
+
+class ConnectorPipedriveDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorPipedriveDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPipedriveDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["pipedrive"]
+
+
+class ConnectorPodiumDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorPodiumDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPodiumDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["podium"]
+
+
+class ConnectorProductboardDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorProductboardDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorProductboardDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["productboard"]
+
+
+class ConnectorQualtricsDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorQualtricsDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorQualtricsDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["qualtrics"]
+
+
+class ConnectorQuickbooksDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorQuickbooksDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorQuickbooksDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["quickbooks"]
+
+
+class ConnectorRedditDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorRedditDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorRedditDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["reddit"]
+
+
+class ConnectorSageDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSageDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSageDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["sage"]
+
+
+class ConnectorSalesforceDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSalesforceDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSalesforceDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["salesforce"]
+
+
+class ConnectorSalesloftDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSalesloftDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSalesloftDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["salesloft"]
+
+
+class ConnectorSegmentDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSegmentDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSegmentDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["segment"]
+
+
+class ConnectorServicem8DiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorServicem8DiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorServicem8DiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["servicem8"]
+
+
+class ConnectorServicenowDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorServicenowDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorServicenowDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["servicenow"]
+
+
+class ConnectorSharepointDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSharepointDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSharepointDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["sharepoint"]
+
+
+class ConnectorShopifyDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorShopifyDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorShopifyDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["shopify"]
+
+
+class ConnectorSignnowDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSignnowDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSignnowDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["signnow"]
+
+
+class ConnectorSlackDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSlackDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSlackDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["slack"]
+
+
+class ConnectorSmartsheetDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSmartsheetDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSmartsheetDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["smartsheet"]
+
+
+class ConnectorSnowflakeDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSnowflakeDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSnowflakeDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["snowflake"]
+
+
+class ConnectorSpotifyDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSpotifyDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSpotifyDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["spotify"]
+
+
+class ConnectorSquarespaceDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSquarespaceDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSquarespaceDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["squarespace"]
+
+
+class ConnectorSquareupDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorSquareupDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSquareupDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["squareup"]
+
+
+class ConnectorStackexchangeDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorStackexchangeDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorStackexchangeDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["stackexchange"]
+
+
+class ConnectorStravaDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorStravaDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorStravaDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["strava"]
+
+
+class ConnectorTeamworkDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTeamworkDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTeamworkDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["teamwork"]
+
+
+class ConnectorTicktickDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTicktickDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTicktickDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["ticktick"]
+
+
+class ConnectorTimelyDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTimelyDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTimelyDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["timely"]
+
+
+class ConnectorTodoistDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTodoistDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTodoistDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["todoist"]
+
+
+class ConnectorTremendousDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTremendousDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTremendousDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["tremendous"]
+
+
+class ConnectorTsheetsteamDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTsheetsteamDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTsheetsteamDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["tsheetsteam"]
+
+
+class ConnectorTumblrDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTumblrDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTumblrDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["tumblr"]
+
+
+class ConnectorTwinfieldDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTwinfieldDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTwinfieldDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["twinfield"]
+
+
+class ConnectorTwitchDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTwitchDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTwitchDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["twitch"]
+
+
+class ConnectorTwitterDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTwitterDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTwitterDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["twitter"]
+
+
+class ConnectorTypeformDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorTypeformDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTypeformDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["typeform"]
+
+
+class ConnectorUberDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorUberDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorUberDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["uber"]
+
+
+class ConnectorVimeoDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorVimeoDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorVimeoDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["vimeo"]
+
+
+class ConnectorWakatimeDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorWakatimeDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorWakatimeDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["wakatime"]
+
+
+class ConnectorWealthboxDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorWealthboxDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorWealthboxDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["wealthbox"]
+
+
+class ConnectorWebflowDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorWebflowDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorWebflowDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["webflow"]
+
+
+class ConnectorWhoopDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorWhoopDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorWhoopDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["whoop"]
+
+
+class ConnectorWordpressDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorWordpressDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorWordpressDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["wordpress"]
+
+
+class ConnectorWrikeDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorWrikeDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorWrikeDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["wrike"]
+
+
+class ConnectorXeroDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorXeroDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorXeroDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["xero"]
+
+
+class ConnectorYahooDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorYahooDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorYahooDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["yahoo"]
+
+
+class ConnectorYandexDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorYandexDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorYandexDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["yandex"]
+
+
+class ConnectorZapierDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorZapierDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorZapierDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["zapier"]
+
+
+class ConnectorZendeskDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorZendeskDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorZendeskDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["zendesk"]
+
+
+class ConnectorZenefitsDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorZenefitsDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorZenefitsDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["zenefits"]
+
+
+class ConnectorZohoDeskDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorZohoDeskDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorZohoDeskDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["zoho-desk"]
+
+
+class ConnectorZohoDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorZohoDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorZohoDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["zoho"]
+
+
+class ConnectorZoomDiscriminatedConnectInputConnectInput(BaseModel):
+ authorization_url: str
+ """URL to take user to for approval"""
+
+ code_verifier: Optional[str] = None
+ """Code verifier for PKCE"""
+
+
+class ConnectorZoomDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorZoomDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["zoom"]
+
+
+class ConnectorAirtableDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["airtable"]
+
+
+class ConnectorApolloDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["apollo"]
+
+
+class ConnectorBrexDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["brex"]
+
+
+class ConnectorCodaDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["coda"]
+
+
+class ConnectorFinchDiscriminatedConnectInputConnectInput(BaseModel):
+ client_id: str
+
+ products: List[
+ Literal["company", "directory", "individual", "ssn", "employment", "payment", "pay_statement", "benefits"]
+ ]
+
+
+class ConnectorFinchDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorFinchDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["finch"]
+
+
+class ConnectorFirebaseDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["firebase"]
+
+
+class ConnectorForeceiptDiscriminatedConnectInputConnectInput(BaseModel):
+ env_name: Literal["staging", "production"] = FieldInfo(alias="envName")
+
+ api_id: Optional[object] = FieldInfo(alias="_id", default=None)
+
+ credentials: Optional[object] = None
+
+
+class ConnectorForeceiptDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorForeceiptDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["foreceipt"]
+
+
+class ConnectorGreenhouseDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["greenhouse"]
+
+
+class ConnectorHeronDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["heron"]
+
+
+class ConnectorLunchmoneyDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["lunchmoney"]
+
+
+class ConnectorMercuryDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["mercury"]
+
+
+class ConnectorMergeDiscriminatedConnectInputConnectInput(BaseModel):
+ link_token: str
+
+
+class ConnectorMergeDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorMergeDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["merge"]
+
+
+class ConnectorMootaDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["moota"]
+
+
+class ConnectorOnebrickDiscriminatedConnectInputConnectInput(BaseModel):
+ public_token: Optional[str] = FieldInfo(alias="publicToken", default=None)
+
+ redirect_url: Optional[str] = None
+
+
+class ConnectorOnebrickDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorOnebrickDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["onebrick"]
+
+
+class ConnectorOpenledgerDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["openledger"]
+
+
+class ConnectorPlaidDiscriminatedConnectInputConnectInputLinkToken(BaseModel):
+ link_token: str
+
+
+class ConnectorPlaidDiscriminatedConnectInputConnectInputPublicToken(BaseModel):
+ public_token: str
+
+
+ConnectorPlaidDiscriminatedConnectInputConnectInput: TypeAlias = Union[
+ ConnectorPlaidDiscriminatedConnectInputConnectInputLinkToken,
+ ConnectorPlaidDiscriminatedConnectInputConnectInputPublicToken,
+]
+
+
+class ConnectorPlaidDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorPlaidDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["plaid"]
+
+
+class ConnectorPostgresDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["postgres"]
+
+
+class ConnectorRampDiscriminatedConnectInputConnectInput(BaseModel):
+ access_token: Optional[str] = FieldInfo(alias="accessToken", default=None)
+
+
+class ConnectorRampDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorRampDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["ramp"]
+
+
+class ConnectorSaltedgeDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["saltedge"]
+
+
+class ConnectorSharepointOnpremDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["sharepoint-onprem"]
+
+
+class ConnectorSlackAgentDiscriminatedConnectInputConnectInput(BaseModel):
+ configuration_url: str
+ """Configuration URL - https://api.slack.com/apps/A1234567890/oauth..."""
+
+
+class ConnectorSlackAgentDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorSlackAgentDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["slack-agent"]
+
+
+class ConnectorSplitwiseDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["splitwise"]
+
+
+class ConnectorStripeDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["stripe"]
+
+
+class ConnectorTellerDiscriminatedConnectInputConnectInput(BaseModel):
+ application_id: str = FieldInfo(alias="applicationId")
+
+ user_token: Optional[str] = FieldInfo(alias="userToken", default=None)
+
+
+class ConnectorTellerDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTellerDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["teller"]
+
+
+class ConnectorTogglDiscriminatedConnectInputConnectInput(BaseModel):
+ api_token: str = FieldInfo(alias="apiToken")
+
+
+class ConnectorTogglDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorTogglDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["toggl"]
+
+
+class ConnectorTwentyDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["twenty"]
+
+
+class ConnectorVenmoDiscriminatedConnectInput(BaseModel):
+ connect_input: object
+
+ connector_name: Literal["venmo"]
+
+
+class ConnectorWiseDiscriminatedConnectInputConnectInput(BaseModel):
+ client_id: str = FieldInfo(alias="clientId")
+
+ env_name: Literal["sandbox", "live"] = FieldInfo(alias="envName")
+
+ redirect_uri: str = FieldInfo(alias="redirectUri")
+
+
+class ConnectorWiseDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorWiseDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["wise"]
+
+
+class ConnectorYodleeDiscriminatedConnectInputConnectInputAccessToken(BaseModel):
+ access_token: str = FieldInfo(alias="accessToken")
+
+ expires_in: float = FieldInfo(alias="expiresIn")
+
+ issued_at: str = FieldInfo(alias="issuedAt")
+
+
+class ConnectorYodleeDiscriminatedConnectInputConnectInput(BaseModel):
+ access_token: ConnectorYodleeDiscriminatedConnectInputConnectInputAccessToken = FieldInfo(alias="accessToken")
+
+ env_name: Literal["sandbox", "development", "production"] = FieldInfo(alias="envName")
+
+
+class ConnectorYodleeDiscriminatedConnectInput(BaseModel):
+ connect_input: ConnectorYodleeDiscriminatedConnectInputConnectInput
+
+ connector_name: Literal["yodlee"]
+
+
+PreConnectResponse: TypeAlias = Annotated[
+ Union[
+ ConnectorAcceloDiscriminatedConnectInput,
+ ConnectorAcmeApikeyDiscriminatedConnectInput,
+ ConnectorAcmeOauth2DiscriminatedConnectInput,
+ ConnectorAdobeDiscriminatedConnectInput,
+ ConnectorAdyenDiscriminatedConnectInput,
+ ConnectorAircallDiscriminatedConnectInput,
+ ConnectorAmazonDiscriminatedConnectInput,
+ ConnectorApaleoDiscriminatedConnectInput,
+ ConnectorAsanaDiscriminatedConnectInput,
+ ConnectorAttioDiscriminatedConnectInput,
+ ConnectorAuth0DiscriminatedConnectInput,
+ ConnectorAutodeskDiscriminatedConnectInput,
+ ConnectorAwsDiscriminatedConnectInput,
+ ConnectorBamboohrDiscriminatedConnectInput,
+ ConnectorBasecampDiscriminatedConnectInput,
+ ConnectorBattlenetDiscriminatedConnectInput,
+ ConnectorBigcommerceDiscriminatedConnectInput,
+ ConnectorBitbucketDiscriminatedConnectInput,
+ ConnectorBitlyDiscriminatedConnectInput,
+ ConnectorBlackbaudDiscriminatedConnectInput,
+ ConnectorBoldsignDiscriminatedConnectInput,
+ ConnectorBoxDiscriminatedConnectInput,
+ ConnectorBraintreeDiscriminatedConnectInput,
+ ConnectorCalendlyDiscriminatedConnectInput,
+ ConnectorClickupDiscriminatedConnectInput,
+ ConnectorCloseDiscriminatedConnectInput,
+ ConnectorConfluenceDiscriminatedConnectInput,
+ ConnectorContentfulDiscriminatedConnectInput,
+ ConnectorContentstackDiscriminatedConnectInput,
+ ConnectorCopperDiscriminatedConnectInput,
+ ConnectorCorosDiscriminatedConnectInput,
+ ConnectorDatevDiscriminatedConnectInput,
+ ConnectorDeelDiscriminatedConnectInput,
+ ConnectorDialpadDiscriminatedConnectInput,
+ ConnectorDigitaloceanDiscriminatedConnectInput,
+ ConnectorDiscordDiscriminatedConnectInput,
+ ConnectorDocusignDiscriminatedConnectInput,
+ ConnectorDropboxDiscriminatedConnectInput,
+ ConnectorEbayDiscriminatedConnectInput,
+ ConnectorEgnyteDiscriminatedConnectInput,
+ ConnectorEnvoyDiscriminatedConnectInput,
+ ConnectorEventbriteDiscriminatedConnectInput,
+ ConnectorExistDiscriminatedConnectInput,
+ ConnectorFacebookDiscriminatedConnectInput,
+ ConnectorFactorialDiscriminatedConnectInput,
+ ConnectorFigmaDiscriminatedConnectInput,
+ ConnectorFitbitDiscriminatedConnectInput,
+ ConnectorFortnoxDiscriminatedConnectInput,
+ ConnectorFreshbooksDiscriminatedConnectInput,
+ ConnectorFrontDiscriminatedConnectInput,
+ ConnectorGitHubDiscriminatedConnectInput,
+ ConnectorGitlabDiscriminatedConnectInput,
+ ConnectorGongDiscriminatedConnectInput,
+ ConnectorGoogleCalendarDiscriminatedConnectInput,
+ ConnectorGoogleDocsDiscriminatedConnectInput,
+ ConnectorGoogleDriveDiscriminatedConnectInput,
+ ConnectorGoogleMailDiscriminatedConnectInput,
+ ConnectorGoogleSheetDiscriminatedConnectInput,
+ ConnectorGorgiasDiscriminatedConnectInput,
+ ConnectorGrainDiscriminatedConnectInput,
+ ConnectorGumroadDiscriminatedConnectInput,
+ ConnectorGustoDiscriminatedConnectInput,
+ ConnectorHarvestDiscriminatedConnectInput,
+ ConnectorHighlevelDiscriminatedConnectInput,
+ ConnectorHubspotDiscriminatedConnectInput,
+ ConnectorInstagramDiscriminatedConnectInput,
+ ConnectorIntercomDiscriminatedConnectInput,
+ ConnectorJiraDiscriminatedConnectInput,
+ ConnectorKeapDiscriminatedConnectInput,
+ ConnectorLeverDiscriminatedConnectInput,
+ ConnectorLinearDiscriminatedConnectInput,
+ ConnectorLinkedinDiscriminatedConnectInput,
+ ConnectorLinkhutDiscriminatedConnectInput,
+ ConnectorMailchimpDiscriminatedConnectInput,
+ ConnectorMiroDiscriminatedConnectInput,
+ ConnectorMondayDiscriminatedConnectInput,
+ ConnectorMuralDiscriminatedConnectInput,
+ ConnectorNamelyDiscriminatedConnectInput,
+ ConnectorNationbuilderDiscriminatedConnectInput,
+ ConnectorNetsuiteDiscriminatedConnectInput,
+ ConnectorNotionDiscriminatedConnectInput,
+ ConnectorOdooDiscriminatedConnectInput,
+ ConnectorOktaDiscriminatedConnectInput,
+ ConnectorOsuDiscriminatedConnectInput,
+ ConnectorOuraDiscriminatedConnectInput,
+ ConnectorOutreachDiscriminatedConnectInput,
+ ConnectorPagerdutyDiscriminatedConnectInput,
+ ConnectorPandadocDiscriminatedConnectInput,
+ ConnectorPayfitDiscriminatedConnectInput,
+ ConnectorPaypalDiscriminatedConnectInput,
+ ConnectorPennylaneDiscriminatedConnectInput,
+ ConnectorPinterestDiscriminatedConnectInput,
+ ConnectorPipedriveDiscriminatedConnectInput,
+ ConnectorPodiumDiscriminatedConnectInput,
+ ConnectorProductboardDiscriminatedConnectInput,
+ ConnectorQualtricsDiscriminatedConnectInput,
+ ConnectorQuickbooksDiscriminatedConnectInput,
+ ConnectorRedditDiscriminatedConnectInput,
+ ConnectorSageDiscriminatedConnectInput,
+ ConnectorSalesforceDiscriminatedConnectInput,
+ ConnectorSalesloftDiscriminatedConnectInput,
+ ConnectorSegmentDiscriminatedConnectInput,
+ ConnectorServicem8DiscriminatedConnectInput,
+ ConnectorServicenowDiscriminatedConnectInput,
+ ConnectorSharepointDiscriminatedConnectInput,
+ ConnectorShopifyDiscriminatedConnectInput,
+ ConnectorSignnowDiscriminatedConnectInput,
+ ConnectorSlackDiscriminatedConnectInput,
+ ConnectorSmartsheetDiscriminatedConnectInput,
+ ConnectorSnowflakeDiscriminatedConnectInput,
+ ConnectorSpotifyDiscriminatedConnectInput,
+ ConnectorSquarespaceDiscriminatedConnectInput,
+ ConnectorSquareupDiscriminatedConnectInput,
+ ConnectorStackexchangeDiscriminatedConnectInput,
+ ConnectorStravaDiscriminatedConnectInput,
+ ConnectorTeamworkDiscriminatedConnectInput,
+ ConnectorTicktickDiscriminatedConnectInput,
+ ConnectorTimelyDiscriminatedConnectInput,
+ ConnectorTodoistDiscriminatedConnectInput,
+ ConnectorTremendousDiscriminatedConnectInput,
+ ConnectorTsheetsteamDiscriminatedConnectInput,
+ ConnectorTumblrDiscriminatedConnectInput,
+ ConnectorTwinfieldDiscriminatedConnectInput,
+ ConnectorTwitchDiscriminatedConnectInput,
+ ConnectorTwitterDiscriminatedConnectInput,
+ ConnectorTypeformDiscriminatedConnectInput,
+ ConnectorUberDiscriminatedConnectInput,
+ ConnectorVimeoDiscriminatedConnectInput,
+ ConnectorWakatimeDiscriminatedConnectInput,
+ ConnectorWealthboxDiscriminatedConnectInput,
+ ConnectorWebflowDiscriminatedConnectInput,
+ ConnectorWhoopDiscriminatedConnectInput,
+ ConnectorWordpressDiscriminatedConnectInput,
+ ConnectorWrikeDiscriminatedConnectInput,
+ ConnectorXeroDiscriminatedConnectInput,
+ ConnectorYahooDiscriminatedConnectInput,
+ ConnectorYandexDiscriminatedConnectInput,
+ ConnectorZapierDiscriminatedConnectInput,
+ ConnectorZendeskDiscriminatedConnectInput,
+ ConnectorZenefitsDiscriminatedConnectInput,
+ ConnectorZohoDeskDiscriminatedConnectInput,
+ ConnectorZohoDiscriminatedConnectInput,
+ ConnectorZoomDiscriminatedConnectInput,
+ ConnectorAirtableDiscriminatedConnectInput,
+ ConnectorApolloDiscriminatedConnectInput,
+ ConnectorBrexDiscriminatedConnectInput,
+ ConnectorCodaDiscriminatedConnectInput,
+ ConnectorFinchDiscriminatedConnectInput,
+ ConnectorFirebaseDiscriminatedConnectInput,
+ ConnectorForeceiptDiscriminatedConnectInput,
+ ConnectorGreenhouseDiscriminatedConnectInput,
+ ConnectorHeronDiscriminatedConnectInput,
+ ConnectorLunchmoneyDiscriminatedConnectInput,
+ ConnectorMercuryDiscriminatedConnectInput,
+ ConnectorMergeDiscriminatedConnectInput,
+ ConnectorMootaDiscriminatedConnectInput,
+ ConnectorOnebrickDiscriminatedConnectInput,
+ ConnectorOpenledgerDiscriminatedConnectInput,
+ ConnectorPlaidDiscriminatedConnectInput,
+ ConnectorPostgresDiscriminatedConnectInput,
+ ConnectorRampDiscriminatedConnectInput,
+ ConnectorSaltedgeDiscriminatedConnectInput,
+ ConnectorSharepointOnpremDiscriminatedConnectInput,
+ ConnectorSlackAgentDiscriminatedConnectInput,
+ ConnectorSplitwiseDiscriminatedConnectInput,
+ ConnectorStripeDiscriminatedConnectInput,
+ ConnectorTellerDiscriminatedConnectInput,
+ ConnectorTogglDiscriminatedConnectInput,
+ ConnectorTwentyDiscriminatedConnectInput,
+ ConnectorVenmoDiscriminatedConnectInput,
+ ConnectorWiseDiscriminatedConnectInput,
+ ConnectorYodleeDiscriminatedConnectInput,
+ ],
+ PropertyInfo(discriminator="connector_name"),
+]
diff --git a/src/openint/types/upsert_connnector_config_response.py b/src/openint/types/upsert_connnector_config_response.py
index 43f8341..48ced39 100644
--- a/src/openint/types/upsert_connnector_config_response.py
+++ b/src/openint/types/upsert_connnector_config_response.py
@@ -7001,12 +7001,6 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
challenge_response: str
"""USER_PASTED_TOKEN - SLACK_ONETIME_CHALLENGE_CODE"""
- event_subscription_url: str
- """Initial event subscription URL"""
-
- service_token: str
- """Service token - xoxb-..."""
-
app_id: Optional[str] = None
"""App ID - A1234567890"""
@@ -7016,9 +7010,15 @@ class ConnectorSlackAgentDiscriminatedConnectorConfigConfig(BaseModel):
client_secret: Optional[str] = None
"""Client secret - abc123..."""
+ event_subscription_url: Optional[str] = None
+ """Initial event subscription URL"""
+
initial_oauth_url: Optional[str] = None
"""Initial OAuth URL - https://slack.com/oauth/v2/authorize?..."""
+ service_token: Optional[str] = None
+ """Service token - xoxb-..."""
+
signing_secret: Optional[str] = None
"""Signing secret - abc123..."""
diff --git a/tests/api_resources/test_client.py b/tests/api_resources/test_client.py
index 7dd0cf7..e2832e4 100644
--- a/tests/api_resources/test_client.py
+++ b/tests/api_resources/test_client.py
@@ -11,6 +11,7 @@
from tests.utils import assert_matches_type
from openint.types import (
ListEventsResponse,
+ PreConnectResponse,
CreateTokenResponse,
ConnectorRpcResponse,
GetConnectionResponse,
@@ -959,6 +960,71 @@ def test_streaming_response_pre_configure_connector(self, client: Openint) -> No
assert cast(Any, response.is_closed) is True
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_method_pre_connect(self, client: Openint) -> None:
+ client_ = client.pre_connect(
+ connector_config_id="connector_config_id",
+ discriminated_data={
+ "connector_name": "accelo",
+ "pre_connect_input": {},
+ },
+ options={},
+ )
+ assert_matches_type(PreConnectResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_method_pre_connect_with_all_params(self, client: Openint) -> None:
+ client_ = client.pre_connect(
+ connector_config_id="connector_config_id",
+ discriminated_data={
+ "connector_name": "accelo",
+ "pre_connect_input": {"connection_id": "connection_id"},
+ },
+ options={
+ "connection_external_id": "string",
+ "integration_external_id": "string",
+ },
+ )
+ assert_matches_type(PreConnectResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_raw_response_pre_connect(self, client: Openint) -> None:
+ response = client.with_raw_response.pre_connect(
+ connector_config_id="connector_config_id",
+ discriminated_data={
+ "connector_name": "accelo",
+ "pre_connect_input": {},
+ },
+ options={},
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ client_ = response.parse()
+ assert_matches_type(PreConnectResponse, client_, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ def test_streaming_response_pre_connect(self, client: Openint) -> None:
+ with client.with_streaming_response.pre_connect(
+ connector_config_id="connector_config_id",
+ discriminated_data={
+ "connector_name": "accelo",
+ "pre_connect_input": {},
+ },
+ options={},
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ client_ = response.parse()
+ assert_matches_type(PreConnectResponse, client_, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
def test_method_upsert_connnector_config(self, client: Openint) -> None:
@@ -2014,6 +2080,71 @@ async def test_streaming_response_pre_configure_connector(self, async_client: As
assert cast(Any, response.is_closed) is True
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_method_pre_connect(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.pre_connect(
+ connector_config_id="connector_config_id",
+ discriminated_data={
+ "connector_name": "accelo",
+ "pre_connect_input": {},
+ },
+ options={},
+ )
+ assert_matches_type(PreConnectResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_method_pre_connect_with_all_params(self, async_client: AsyncOpenint) -> None:
+ client = await async_client.pre_connect(
+ connector_config_id="connector_config_id",
+ discriminated_data={
+ "connector_name": "accelo",
+ "pre_connect_input": {"connection_id": "connection_id"},
+ },
+ options={
+ "connection_external_id": "string",
+ "integration_external_id": "string",
+ },
+ )
+ assert_matches_type(PreConnectResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_raw_response_pre_connect(self, async_client: AsyncOpenint) -> None:
+ response = await async_client.with_raw_response.pre_connect(
+ connector_config_id="connector_config_id",
+ discriminated_data={
+ "connector_name": "accelo",
+ "pre_connect_input": {},
+ },
+ options={},
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ client = await response.parse()
+ assert_matches_type(PreConnectResponse, client, path=["response"])
+
+ @pytest.mark.skip(reason="Prism tests are disabled")
+ @parametrize
+ async def test_streaming_response_pre_connect(self, async_client: AsyncOpenint) -> None:
+ async with async_client.with_streaming_response.pre_connect(
+ connector_config_id="connector_config_id",
+ discriminated_data={
+ "connector_name": "accelo",
+ "pre_connect_input": {},
+ },
+ options={},
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ client = await response.parse()
+ assert_matches_type(PreConnectResponse, client, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
@pytest.mark.skip(reason="Prism tests are disabled")
@parametrize
async def test_method_upsert_connnector_config(self, async_client: AsyncOpenint) -> None:
From a6c3bd3d6ec3516064cca83ec66310b6a6ad327c Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 27 Aug 2025 08:42:24 +0000
Subject: [PATCH 07/13] fix: avoid newer type syntax
---
src/openint/_models.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/openint/_models.py b/src/openint/_models.py
index b8387ce..92f7c10 100644
--- a/src/openint/_models.py
+++ b/src/openint/_models.py
@@ -304,7 +304,7 @@ def model_dump(
exclude_none=exclude_none,
)
- return cast(dict[str, Any], json_safe(dumped)) if mode == "json" else dumped
+ return cast("dict[str, Any]", json_safe(dumped)) if mode == "json" else dumped
@override
def model_dump_json(
From 81cb316c7362c1a2304d4528dc1aa5e60b026392 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 27 Aug 2025 09:00:33 +0000
Subject: [PATCH 08/13] chore(internal): update pyright exclude list
---
pyproject.toml | 1 +
1 file changed, 1 insertion(+)
diff --git a/pyproject.toml b/pyproject.toml
index cc95b84..9c73434 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -148,6 +148,7 @@ exclude = [
"_dev",
".venv",
".nox",
+ ".git",
]
reportImplicitOverride = true
From 614f2d0eb04ad768d4bee478e01be0cbbcd5c405 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sat, 30 Aug 2025 04:24:15 +0000
Subject: [PATCH 09/13] chore(internal): add Sequence related utils
---
src/openint/_types.py | 36 +++++++++++++++++++++++++++++++++-
src/openint/_utils/__init__.py | 1 +
src/openint/_utils/_typing.py | 5 +++++
tests/utils.py | 10 +++++++++-
4 files changed, 50 insertions(+), 2 deletions(-)
diff --git a/src/openint/_types.py b/src/openint/_types.py
index d59c1d1..3d0ab4b 100644
--- a/src/openint/_types.py
+++ b/src/openint/_types.py
@@ -13,10 +13,21 @@
Mapping,
TypeVar,
Callable,
+ Iterator,
Optional,
Sequence,
)
-from typing_extensions import Set, Literal, Protocol, TypeAlias, TypedDict, override, runtime_checkable
+from typing_extensions import (
+ Set,
+ Literal,
+ Protocol,
+ TypeAlias,
+ TypedDict,
+ SupportsIndex,
+ overload,
+ override,
+ runtime_checkable,
+)
import httpx
import pydantic
@@ -217,3 +228,26 @@ class _GenericAlias(Protocol):
class HttpxSendArgs(TypedDict, total=False):
auth: httpx.Auth
follow_redirects: bool
+
+
+_T_co = TypeVar("_T_co", covariant=True)
+
+
+if TYPE_CHECKING:
+ # This works because str.__contains__ does not accept object (either in typeshed or at runtime)
+ # https://github.com/hauntsaninja/useful_types/blob/5e9710f3875107d068e7679fd7fec9cfab0eff3b/useful_types/__init__.py#L285
+ class SequenceNotStr(Protocol[_T_co]):
+ @overload
+ def __getitem__(self, index: SupportsIndex, /) -> _T_co: ...
+ @overload
+ def __getitem__(self, index: slice, /) -> Sequence[_T_co]: ...
+ def __contains__(self, value: object, /) -> bool: ...
+ def __len__(self) -> int: ...
+ def __iter__(self) -> Iterator[_T_co]: ...
+ def index(self, value: Any, start: int = 0, stop: int = ..., /) -> int: ...
+ def count(self, value: Any, /) -> int: ...
+ def __reversed__(self) -> Iterator[_T_co]: ...
+else:
+ # just point this to a normal `Sequence` at runtime to avoid having to special case
+ # deserializing our custom sequence type
+ SequenceNotStr = Sequence
diff --git a/src/openint/_utils/__init__.py b/src/openint/_utils/__init__.py
index d4fda26..ca547ce 100644
--- a/src/openint/_utils/__init__.py
+++ b/src/openint/_utils/__init__.py
@@ -38,6 +38,7 @@
extract_type_arg as extract_type_arg,
is_iterable_type as is_iterable_type,
is_required_type as is_required_type,
+ is_sequence_type as is_sequence_type,
is_annotated_type as is_annotated_type,
is_type_alias_type as is_type_alias_type,
strip_annotated_type as strip_annotated_type,
diff --git a/src/openint/_utils/_typing.py b/src/openint/_utils/_typing.py
index 1bac954..845cd6b 100644
--- a/src/openint/_utils/_typing.py
+++ b/src/openint/_utils/_typing.py
@@ -26,6 +26,11 @@ def is_list_type(typ: type) -> bool:
return (get_origin(typ) or typ) == list
+def is_sequence_type(typ: type) -> bool:
+ origin = get_origin(typ) or typ
+ return origin == typing_extensions.Sequence or origin == typing.Sequence or origin == _c_abc.Sequence
+
+
def is_iterable_type(typ: type) -> bool:
"""If the given type is `typing.Iterable[T]`"""
origin = get_origin(typ) or typ
diff --git a/tests/utils.py b/tests/utils.py
index e67a21c..f66bc83 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -4,7 +4,7 @@
import inspect
import traceback
import contextlib
-from typing import Any, TypeVar, Iterator, cast
+from typing import Any, TypeVar, Iterator, Sequence, cast
from datetime import date, datetime
from typing_extensions import Literal, get_args, get_origin, assert_type
@@ -15,6 +15,7 @@
is_list_type,
is_union_type,
extract_type_arg,
+ is_sequence_type,
is_annotated_type,
is_type_alias_type,
)
@@ -71,6 +72,13 @@ def assert_matches_type(
if is_list_type(type_):
return _assert_list_type(type_, value)
+ if is_sequence_type(type_):
+ assert isinstance(value, Sequence)
+ inner_type = get_args(type_)[0]
+ for entry in value: # type: ignore
+ assert_type(inner_type, entry) # type: ignore
+ return
+
if origin == str:
assert isinstance(value, str)
elif origin == int:
From c1996fe4d4a7bd7d6018331a2935e369d982e037 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 3 Sep 2025 03:49:15 +0000
Subject: [PATCH 10/13] feat(types): replace List[str] with SequenceNotStr in
params
---
src/openint/_client.py | 5 +++--
src/openint/_utils/_transform.py | 6 ++++++
src/openint/types/client_list_connections_params.py | 4 +++-
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/openint/_client.py b/src/openint/_client.py
index 9f5e2b8..8056bbc 100644
--- a/src/openint/_client.py
+++ b/src/openint/_client.py
@@ -39,6 +39,7 @@
Transport,
ProxiesTypes,
RequestOptions,
+ SequenceNotStr,
)
from ._utils import (
is_given,
@@ -775,7 +776,7 @@ def list_assignments(
def list_connections(
self,
*,
- connection_ids: List[str] | NotGiven = NOT_GIVEN,
+ connection_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
connector_config_id: str | NotGiven = NOT_GIVEN,
connector_names: List[
Literal[
@@ -2736,7 +2737,7 @@ async def list_assignments(
def list_connections(
self,
*,
- connection_ids: List[str] | NotGiven = NOT_GIVEN,
+ connection_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
connector_config_id: str | NotGiven = NOT_GIVEN,
connector_names: List[
Literal[
diff --git a/src/openint/_utils/_transform.py b/src/openint/_utils/_transform.py
index b0cc20a..f0bcefd 100644
--- a/src/openint/_utils/_transform.py
+++ b/src/openint/_utils/_transform.py
@@ -16,6 +16,7 @@
lru_cache,
is_mapping,
is_iterable,
+ is_sequence,
)
from .._files import is_base64_file_input
from ._typing import (
@@ -24,6 +25,7 @@
extract_type_arg,
is_iterable_type,
is_required_type,
+ is_sequence_type,
is_annotated_type,
strip_annotated_type,
)
@@ -184,6 +186,8 @@ def _transform_recursive(
(is_list_type(stripped_type) and is_list(data))
# Iterable[T]
or (is_iterable_type(stripped_type) and is_iterable(data) and not isinstance(data, str))
+ # Sequence[T]
+ or (is_sequence_type(stripped_type) and is_sequence(data) and not isinstance(data, str))
):
# dicts are technically iterable, but it is an iterable on the keys of the dict and is not usually
# intended as an iterable, so we don't transform it.
@@ -346,6 +350,8 @@ async def _async_transform_recursive(
(is_list_type(stripped_type) and is_list(data))
# Iterable[T]
or (is_iterable_type(stripped_type) and is_iterable(data) and not isinstance(data, str))
+ # Sequence[T]
+ or (is_sequence_type(stripped_type) and is_sequence(data) and not isinstance(data, str))
):
# dicts are technically iterable, but it is an iterable on the keys of the dict and is not usually
# intended as an iterable, so we don't transform it.
diff --git a/src/openint/types/client_list_connections_params.py b/src/openint/types/client_list_connections_params.py
index 7349e40..be682cf 100644
--- a/src/openint/types/client_list_connections_params.py
+++ b/src/openint/types/client_list_connections_params.py
@@ -5,11 +5,13 @@
from typing import List
from typing_extensions import Literal, TypedDict
+from .._types import SequenceNotStr
+
__all__ = ["ClientListConnectionsParams"]
class ClientListConnectionsParams(TypedDict, total=False):
- connection_ids: List[str]
+ connection_ids: SequenceNotStr[str]
connector_config_id: str
"""The id of the connector config, starts with `ccfg_`"""
From 1193b57f35d7de48c4f823ba9e2f49a4098da5e0 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 4 Sep 2025 03:53:44 +0000
Subject: [PATCH 11/13] feat: improve future compat with pydantic v3
---
src/openint/_base_client.py | 6 +-
src/openint/_compat.py | 96 ++++++++---------
src/openint/_models.py | 80 +++++++-------
src/openint/_utils/__init__.py | 10 +-
src/openint/_utils/_compat.py | 45 ++++++++
src/openint/_utils/_datetime_parse.py | 136 ++++++++++++++++++++++++
src/openint/_utils/_transform.py | 6 +-
src/openint/_utils/_typing.py | 2 +-
src/openint/_utils/_utils.py | 1 -
tests/test_models.py | 48 ++++-----
tests/test_transform.py | 16 +--
tests/test_utils/test_datetime_parse.py | 110 +++++++++++++++++++
tests/utils.py | 8 +-
13 files changed, 432 insertions(+), 132 deletions(-)
create mode 100644 src/openint/_utils/_compat.py
create mode 100644 src/openint/_utils/_datetime_parse.py
create mode 100644 tests/test_utils/test_datetime_parse.py
diff --git a/src/openint/_base_client.py b/src/openint/_base_client.py
index c422d1a..8a0bf4a 100644
--- a/src/openint/_base_client.py
+++ b/src/openint/_base_client.py
@@ -59,7 +59,7 @@
ModelBuilderProtocol,
)
from ._utils import is_dict, is_list, asyncify, is_given, lru_cache, is_mapping
-from ._compat import PYDANTIC_V2, model_copy, model_dump
+from ._compat import PYDANTIC_V1, model_copy, model_dump
from ._models import GenericModel, FinalRequestOptions, validate_type, construct_type
from ._response import (
APIResponse,
@@ -232,7 +232,7 @@ def _set_private_attributes(
model: Type[_T],
options: FinalRequestOptions,
) -> None:
- if PYDANTIC_V2 and getattr(self, "__pydantic_private__", None) is None:
+ if (not PYDANTIC_V1) and getattr(self, "__pydantic_private__", None) is None:
self.__pydantic_private__ = {}
self._model = model
@@ -320,7 +320,7 @@ def _set_private_attributes(
client: AsyncAPIClient,
options: FinalRequestOptions,
) -> None:
- if PYDANTIC_V2 and getattr(self, "__pydantic_private__", None) is None:
+ if (not PYDANTIC_V1) and getattr(self, "__pydantic_private__", None) is None:
self.__pydantic_private__ = {}
self._model = model
diff --git a/src/openint/_compat.py b/src/openint/_compat.py
index 92d9ee6..bdef67f 100644
--- a/src/openint/_compat.py
+++ b/src/openint/_compat.py
@@ -12,14 +12,13 @@
_T = TypeVar("_T")
_ModelT = TypeVar("_ModelT", bound=pydantic.BaseModel)
-# --------------- Pydantic v2 compatibility ---------------
+# --------------- Pydantic v2, v3 compatibility ---------------
# Pyright incorrectly reports some of our functions as overriding a method when they don't
# pyright: reportIncompatibleMethodOverride=false
-PYDANTIC_V2 = pydantic.VERSION.startswith("2.")
+PYDANTIC_V1 = pydantic.VERSION.startswith("1.")
-# v1 re-exports
if TYPE_CHECKING:
def parse_date(value: date | StrBytesIntFloat) -> date: # noqa: ARG001
@@ -44,90 +43,92 @@ def is_typeddict(type_: type[Any]) -> bool: # noqa: ARG001
...
else:
- if PYDANTIC_V2:
- from pydantic.v1.typing import (
+ # v1 re-exports
+ if PYDANTIC_V1:
+ from pydantic.typing import (
get_args as get_args,
is_union as is_union,
get_origin as get_origin,
is_typeddict as is_typeddict,
is_literal_type as is_literal_type,
)
- from pydantic.v1.datetime_parse import parse_date as parse_date, parse_datetime as parse_datetime
+ from pydantic.datetime_parse import parse_date as parse_date, parse_datetime as parse_datetime
else:
- from pydantic.typing import (
+ from ._utils import (
get_args as get_args,
is_union as is_union,
get_origin as get_origin,
+ parse_date as parse_date,
is_typeddict as is_typeddict,
+ parse_datetime as parse_datetime,
is_literal_type as is_literal_type,
)
- from pydantic.datetime_parse import parse_date as parse_date, parse_datetime as parse_datetime
# refactored config
if TYPE_CHECKING:
from pydantic import ConfigDict as ConfigDict
else:
- if PYDANTIC_V2:
- from pydantic import ConfigDict
- else:
+ if PYDANTIC_V1:
# TODO: provide an error message here?
ConfigDict = None
+ else:
+ from pydantic import ConfigDict as ConfigDict
# renamed methods / properties
def parse_obj(model: type[_ModelT], value: object) -> _ModelT:
- if PYDANTIC_V2:
- return model.model_validate(value)
- else:
+ if PYDANTIC_V1:
return cast(_ModelT, model.parse_obj(value)) # pyright: ignore[reportDeprecated, reportUnnecessaryCast]
+ else:
+ return model.model_validate(value)
def field_is_required(field: FieldInfo) -> bool:
- if PYDANTIC_V2:
- return field.is_required()
- return field.required # type: ignore
+ if PYDANTIC_V1:
+ return field.required # type: ignore
+ return field.is_required()
def field_get_default(field: FieldInfo) -> Any:
value = field.get_default()
- if PYDANTIC_V2:
- from pydantic_core import PydanticUndefined
-
- if value == PydanticUndefined:
- return None
+ if PYDANTIC_V1:
return value
+ from pydantic_core import PydanticUndefined
+
+ if value == PydanticUndefined:
+ return None
return value
def field_outer_type(field: FieldInfo) -> Any:
- if PYDANTIC_V2:
- return field.annotation
- return field.outer_type_ # type: ignore
+ if PYDANTIC_V1:
+ return field.outer_type_ # type: ignore
+ return field.annotation
def get_model_config(model: type[pydantic.BaseModel]) -> Any:
- if PYDANTIC_V2:
- return model.model_config
- return model.__config__ # type: ignore
+ if PYDANTIC_V1:
+ return model.__config__ # type: ignore
+ return model.model_config
def get_model_fields(model: type[pydantic.BaseModel]) -> dict[str, FieldInfo]:
- if PYDANTIC_V2:
- return model.model_fields
- return model.__fields__ # type: ignore
+ if PYDANTIC_V1:
+ return model.__fields__ # type: ignore
+ return model.model_fields
def model_copy(model: _ModelT, *, deep: bool = False) -> _ModelT:
- if PYDANTIC_V2:
- return model.model_copy(deep=deep)
- return model.copy(deep=deep) # type: ignore
+ if PYDANTIC_V1:
+ return model.copy(deep=deep) # type: ignore
+ return model.model_copy(deep=deep)
def model_json(model: pydantic.BaseModel, *, indent: int | None = None) -> str:
- if PYDANTIC_V2:
- return model.model_dump_json(indent=indent)
- return model.json(indent=indent) # type: ignore
+ if PYDANTIC_V1:
+ return model.json(indent=indent) # type: ignore
+ return model.model_dump_json(indent=indent)
def model_dump(
@@ -139,14 +140,14 @@ def model_dump(
warnings: bool = True,
mode: Literal["json", "python"] = "python",
) -> dict[str, Any]:
- if PYDANTIC_V2 or hasattr(model, "model_dump"):
+ if (not PYDANTIC_V1) or hasattr(model, "model_dump"):
return model.model_dump(
mode=mode,
exclude=exclude,
exclude_unset=exclude_unset,
exclude_defaults=exclude_defaults,
# warnings are not supported in Pydantic v1
- warnings=warnings if PYDANTIC_V2 else True,
+ warnings=True if PYDANTIC_V1 else warnings,
)
return cast(
"dict[str, Any]",
@@ -159,9 +160,9 @@ def model_dump(
def model_parse(model: type[_ModelT], data: Any) -> _ModelT:
- if PYDANTIC_V2:
- return model.model_validate(data)
- return model.parse_obj(data) # pyright: ignore[reportDeprecated]
+ if PYDANTIC_V1:
+ return model.parse_obj(data) # pyright: ignore[reportDeprecated]
+ return model.model_validate(data)
# generic models
@@ -170,17 +171,16 @@ def model_parse(model: type[_ModelT], data: Any) -> _ModelT:
class GenericModel(pydantic.BaseModel): ...
else:
- if PYDANTIC_V2:
+ if PYDANTIC_V1:
+ import pydantic.generics
+
+ class GenericModel(pydantic.generics.GenericModel, pydantic.BaseModel): ...
+ else:
# there no longer needs to be a distinction in v2 but
# we still have to create our own subclass to avoid
# inconsistent MRO ordering errors
class GenericModel(pydantic.BaseModel): ...
- else:
- import pydantic.generics
-
- class GenericModel(pydantic.generics.GenericModel, pydantic.BaseModel): ...
-
# cached properties
if TYPE_CHECKING:
diff --git a/src/openint/_models.py b/src/openint/_models.py
index 92f7c10..3a6017e 100644
--- a/src/openint/_models.py
+++ b/src/openint/_models.py
@@ -50,7 +50,7 @@
strip_annotated_type,
)
from ._compat import (
- PYDANTIC_V2,
+ PYDANTIC_V1,
ConfigDict,
GenericModel as BaseGenericModel,
get_args,
@@ -81,11 +81,7 @@ class _ConfigProtocol(Protocol):
class BaseModel(pydantic.BaseModel):
- if PYDANTIC_V2:
- model_config: ClassVar[ConfigDict] = ConfigDict(
- extra="allow", defer_build=coerce_boolean(os.environ.get("DEFER_PYDANTIC_BUILD", "true"))
- )
- else:
+ if PYDANTIC_V1:
@property
@override
@@ -95,6 +91,10 @@ def model_fields_set(self) -> set[str]:
class Config(pydantic.BaseConfig): # pyright: ignore[reportDeprecated]
extra: Any = pydantic.Extra.allow # type: ignore
+ else:
+ model_config: ClassVar[ConfigDict] = ConfigDict(
+ extra="allow", defer_build=coerce_boolean(os.environ.get("DEFER_PYDANTIC_BUILD", "true"))
+ )
def to_dict(
self,
@@ -215,25 +215,25 @@ def construct( # pyright: ignore[reportIncompatibleMethodOverride]
if key not in model_fields:
parsed = construct_type(value=value, type_=extra_field_type) if extra_field_type is not None else value
- if PYDANTIC_V2:
- _extra[key] = parsed
- else:
+ if PYDANTIC_V1:
_fields_set.add(key)
fields_values[key] = parsed
+ else:
+ _extra[key] = parsed
object.__setattr__(m, "__dict__", fields_values)
- if PYDANTIC_V2:
- # these properties are copied from Pydantic's `model_construct()` method
- object.__setattr__(m, "__pydantic_private__", None)
- object.__setattr__(m, "__pydantic_extra__", _extra)
- object.__setattr__(m, "__pydantic_fields_set__", _fields_set)
- else:
+ if PYDANTIC_V1:
# init_private_attributes() does not exist in v2
m._init_private_attributes() # type: ignore
# copied from Pydantic v1's `construct()` method
object.__setattr__(m, "__fields_set__", _fields_set)
+ else:
+ # these properties are copied from Pydantic's `model_construct()` method
+ object.__setattr__(m, "__pydantic_private__", None)
+ object.__setattr__(m, "__pydantic_extra__", _extra)
+ object.__setattr__(m, "__pydantic_fields_set__", _fields_set)
return m
@@ -243,7 +243,7 @@ def construct( # pyright: ignore[reportIncompatibleMethodOverride]
# although not in practice
model_construct = construct
- if not PYDANTIC_V2:
+ if PYDANTIC_V1:
# we define aliases for some of the new pydantic v2 methods so
# that we can just document these methods without having to specify
# a specific pydantic version as some users may not know which
@@ -363,10 +363,10 @@ def _construct_field(value: object, field: FieldInfo, key: str) -> object:
if value is None:
return field_get_default(field)
- if PYDANTIC_V2:
- type_ = field.annotation
- else:
+ if PYDANTIC_V1:
type_ = cast(type, field.outer_type_) # type: ignore
+ else:
+ type_ = field.annotation # type: ignore
if type_ is None:
raise RuntimeError(f"Unexpected field type is None for {key}")
@@ -375,7 +375,7 @@ def _construct_field(value: object, field: FieldInfo, key: str) -> object:
def _get_extra_fields_type(cls: type[pydantic.BaseModel]) -> type | None:
- if not PYDANTIC_V2:
+ if PYDANTIC_V1:
# TODO
return None
@@ -628,30 +628,30 @@ def _build_discriminated_union_meta(*, union: type, meta_annotations: tuple[Any,
for variant in get_args(union):
variant = strip_annotated_type(variant)
if is_basemodel_type(variant):
- if PYDANTIC_V2:
- field = _extract_field_schema_pv2(variant, discriminator_field_name)
- if not field:
+ if PYDANTIC_V1:
+ field_info = cast("dict[str, FieldInfo]", variant.__fields__).get(discriminator_field_name) # pyright: ignore[reportDeprecated, reportUnnecessaryCast]
+ if not field_info:
continue
# Note: if one variant defines an alias then they all should
- discriminator_alias = field.get("serialization_alias")
-
- field_schema = field["schema"]
+ discriminator_alias = field_info.alias
- if field_schema["type"] == "literal":
- for entry in cast("LiteralSchema", field_schema)["expected"]:
+ if (annotation := getattr(field_info, "annotation", None)) and is_literal_type(annotation):
+ for entry in get_args(annotation):
if isinstance(entry, str):
mapping[entry] = variant
else:
- field_info = cast("dict[str, FieldInfo]", variant.__fields__).get(discriminator_field_name) # pyright: ignore[reportDeprecated, reportUnnecessaryCast]
- if not field_info:
+ field = _extract_field_schema_pv2(variant, discriminator_field_name)
+ if not field:
continue
# Note: if one variant defines an alias then they all should
- discriminator_alias = field_info.alias
+ discriminator_alias = field.get("serialization_alias")
- if (annotation := getattr(field_info, "annotation", None)) and is_literal_type(annotation):
- for entry in get_args(annotation):
+ field_schema = field["schema"]
+
+ if field_schema["type"] == "literal":
+ for entry in cast("LiteralSchema", field_schema)["expected"]:
if isinstance(entry, str):
mapping[entry] = variant
@@ -714,7 +714,7 @@ class GenericModel(BaseGenericModel, BaseModel):
pass
-if PYDANTIC_V2:
+if not PYDANTIC_V1:
from pydantic import TypeAdapter as _TypeAdapter
_CachedTypeAdapter = cast("TypeAdapter[object]", lru_cache(maxsize=None)(_TypeAdapter))
@@ -782,12 +782,12 @@ class FinalRequestOptions(pydantic.BaseModel):
json_data: Union[Body, None] = None
extra_json: Union[AnyMapping, None] = None
- if PYDANTIC_V2:
- model_config: ClassVar[ConfigDict] = ConfigDict(arbitrary_types_allowed=True)
- else:
+ if PYDANTIC_V1:
class Config(pydantic.BaseConfig): # pyright: ignore[reportDeprecated]
arbitrary_types_allowed: bool = True
+ else:
+ model_config: ClassVar[ConfigDict] = ConfigDict(arbitrary_types_allowed=True)
def get_max_retries(self, max_retries: int) -> int:
if isinstance(self.max_retries, NotGiven):
@@ -820,9 +820,9 @@ def construct( # type: ignore
key: strip_not_given(value)
for key, value in values.items()
}
- if PYDANTIC_V2:
- return super().model_construct(_fields_set, **kwargs)
- return cast(FinalRequestOptions, super().construct(_fields_set, **kwargs)) # pyright: ignore[reportDeprecated]
+ if PYDANTIC_V1:
+ return cast(FinalRequestOptions, super().construct(_fields_set, **kwargs)) # pyright: ignore[reportDeprecated]
+ return super().model_construct(_fields_set, **kwargs)
if not TYPE_CHECKING:
# type checkers incorrectly complain about this assignment
diff --git a/src/openint/_utils/__init__.py b/src/openint/_utils/__init__.py
index ca547ce..dc64e29 100644
--- a/src/openint/_utils/__init__.py
+++ b/src/openint/_utils/__init__.py
@@ -10,7 +10,6 @@
lru_cache as lru_cache,
is_mapping as is_mapping,
is_tuple_t as is_tuple_t,
- parse_date as parse_date,
is_iterable as is_iterable,
is_sequence as is_sequence,
coerce_float as coerce_float,
@@ -23,7 +22,6 @@
coerce_boolean as coerce_boolean,
coerce_integer as coerce_integer,
file_from_path as file_from_path,
- parse_datetime as parse_datetime,
strip_not_given as strip_not_given,
deepcopy_minimal as deepcopy_minimal,
get_async_library as get_async_library,
@@ -32,6 +30,13 @@
maybe_coerce_boolean as maybe_coerce_boolean,
maybe_coerce_integer as maybe_coerce_integer,
)
+from ._compat import (
+ get_args as get_args,
+ is_union as is_union,
+ get_origin as get_origin,
+ is_typeddict as is_typeddict,
+ is_literal_type as is_literal_type,
+)
from ._typing import (
is_list_type as is_list_type,
is_union_type as is_union_type,
@@ -56,3 +61,4 @@
function_has_argument as function_has_argument,
assert_signatures_in_sync as assert_signatures_in_sync,
)
+from ._datetime_parse import parse_date as parse_date, parse_datetime as parse_datetime
diff --git a/src/openint/_utils/_compat.py b/src/openint/_utils/_compat.py
new file mode 100644
index 0000000..dd70323
--- /dev/null
+++ b/src/openint/_utils/_compat.py
@@ -0,0 +1,45 @@
+from __future__ import annotations
+
+import sys
+import typing_extensions
+from typing import Any, Type, Union, Literal, Optional
+from datetime import date, datetime
+from typing_extensions import get_args as _get_args, get_origin as _get_origin
+
+from .._types import StrBytesIntFloat
+from ._datetime_parse import parse_date as _parse_date, parse_datetime as _parse_datetime
+
+_LITERAL_TYPES = {Literal, typing_extensions.Literal}
+
+
+def get_args(tp: type[Any]) -> tuple[Any, ...]:
+ return _get_args(tp)
+
+
+def get_origin(tp: type[Any]) -> type[Any] | None:
+ return _get_origin(tp)
+
+
+def is_union(tp: Optional[Type[Any]]) -> bool:
+ if sys.version_info < (3, 10):
+ return tp is Union # type: ignore[comparison-overlap]
+ else:
+ import types
+
+ return tp is Union or tp is types.UnionType
+
+
+def is_typeddict(tp: Type[Any]) -> bool:
+ return typing_extensions.is_typeddict(tp)
+
+
+def is_literal_type(tp: Type[Any]) -> bool:
+ return get_origin(tp) in _LITERAL_TYPES
+
+
+def parse_date(value: Union[date, StrBytesIntFloat]) -> date:
+ return _parse_date(value)
+
+
+def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime:
+ return _parse_datetime(value)
diff --git a/src/openint/_utils/_datetime_parse.py b/src/openint/_utils/_datetime_parse.py
new file mode 100644
index 0000000..7cb9d9e
--- /dev/null
+++ b/src/openint/_utils/_datetime_parse.py
@@ -0,0 +1,136 @@
+"""
+This file contains code from https://github.com/pydantic/pydantic/blob/main/pydantic/v1/datetime_parse.py
+without the Pydantic v1 specific errors.
+"""
+
+from __future__ import annotations
+
+import re
+from typing import Dict, Union, Optional
+from datetime import date, datetime, timezone, timedelta
+
+from .._types import StrBytesIntFloat
+
+date_expr = r"(?P\d{4})-(?P\d{1,2})-(?P\d{1,2})"
+time_expr = (
+ r"(?P\d{1,2}):(?P\d{1,2})"
+ r"(?::(?P\d{1,2})(?:\.(?P\d{1,6})\d{0,6})?)?"
+ r"(?PZ|[+-]\d{2}(?::?\d{2})?)?$"
+)
+
+date_re = re.compile(f"{date_expr}$")
+datetime_re = re.compile(f"{date_expr}[T ]{time_expr}")
+
+
+EPOCH = datetime(1970, 1, 1)
+# if greater than this, the number is in ms, if less than or equal it's in seconds
+# (in seconds this is 11th October 2603, in ms it's 20th August 1970)
+MS_WATERSHED = int(2e10)
+# slightly more than datetime.max in ns - (datetime.max - EPOCH).total_seconds() * 1e9
+MAX_NUMBER = int(3e20)
+
+
+def _get_numeric(value: StrBytesIntFloat, native_expected_type: str) -> Union[None, int, float]:
+ if isinstance(value, (int, float)):
+ return value
+ try:
+ return float(value)
+ except ValueError:
+ return None
+ except TypeError:
+ raise TypeError(f"invalid type; expected {native_expected_type}, string, bytes, int or float") from None
+
+
+def _from_unix_seconds(seconds: Union[int, float]) -> datetime:
+ if seconds > MAX_NUMBER:
+ return datetime.max
+ elif seconds < -MAX_NUMBER:
+ return datetime.min
+
+ while abs(seconds) > MS_WATERSHED:
+ seconds /= 1000
+ dt = EPOCH + timedelta(seconds=seconds)
+ return dt.replace(tzinfo=timezone.utc)
+
+
+def _parse_timezone(value: Optional[str]) -> Union[None, int, timezone]:
+ if value == "Z":
+ return timezone.utc
+ elif value is not None:
+ offset_mins = int(value[-2:]) if len(value) > 3 else 0
+ offset = 60 * int(value[1:3]) + offset_mins
+ if value[0] == "-":
+ offset = -offset
+ return timezone(timedelta(minutes=offset))
+ else:
+ return None
+
+
+def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime:
+ """
+ Parse a datetime/int/float/string and return a datetime.datetime.
+
+ This function supports time zone offsets. When the input contains one,
+ the output uses a timezone with a fixed offset from UTC.
+
+ Raise ValueError if the input is well formatted but not a valid datetime.
+ Raise ValueError if the input isn't well formatted.
+ """
+ if isinstance(value, datetime):
+ return value
+
+ number = _get_numeric(value, "datetime")
+ if number is not None:
+ return _from_unix_seconds(number)
+
+ if isinstance(value, bytes):
+ value = value.decode()
+
+ assert not isinstance(value, (float, int))
+
+ match = datetime_re.match(value)
+ if match is None:
+ raise ValueError("invalid datetime format")
+
+ kw = match.groupdict()
+ if kw["microsecond"]:
+ kw["microsecond"] = kw["microsecond"].ljust(6, "0")
+
+ tzinfo = _parse_timezone(kw.pop("tzinfo"))
+ kw_: Dict[str, Union[None, int, timezone]] = {k: int(v) for k, v in kw.items() if v is not None}
+ kw_["tzinfo"] = tzinfo
+
+ return datetime(**kw_) # type: ignore
+
+
+def parse_date(value: Union[date, StrBytesIntFloat]) -> date:
+ """
+ Parse a date/int/float/string and return a datetime.date.
+
+ Raise ValueError if the input is well formatted but not a valid date.
+ Raise ValueError if the input isn't well formatted.
+ """
+ if isinstance(value, date):
+ if isinstance(value, datetime):
+ return value.date()
+ else:
+ return value
+
+ number = _get_numeric(value, "date")
+ if number is not None:
+ return _from_unix_seconds(number).date()
+
+ if isinstance(value, bytes):
+ value = value.decode()
+
+ assert not isinstance(value, (float, int))
+ match = date_re.match(value)
+ if match is None:
+ raise ValueError("invalid date format")
+
+ kw = {k: int(v) for k, v in match.groupdict().items()}
+
+ try:
+ return date(**kw)
+ except ValueError:
+ raise ValueError("invalid date format") from None
diff --git a/src/openint/_utils/_transform.py b/src/openint/_utils/_transform.py
index f0bcefd..c19124f 100644
--- a/src/openint/_utils/_transform.py
+++ b/src/openint/_utils/_transform.py
@@ -19,6 +19,7 @@
is_sequence,
)
from .._files import is_base64_file_input
+from ._compat import get_origin, is_typeddict
from ._typing import (
is_list_type,
is_union_type,
@@ -29,7 +30,6 @@
is_annotated_type,
strip_annotated_type,
)
-from .._compat import get_origin, model_dump, is_typeddict
_T = TypeVar("_T")
@@ -169,6 +169,8 @@ def _transform_recursive(
Defaults to the same value as the `annotation` argument.
"""
+ from .._compat import model_dump
+
if inner_type is None:
inner_type = annotation
@@ -333,6 +335,8 @@ async def _async_transform_recursive(
Defaults to the same value as the `annotation` argument.
"""
+ from .._compat import model_dump
+
if inner_type is None:
inner_type = annotation
diff --git a/src/openint/_utils/_typing.py b/src/openint/_utils/_typing.py
index 845cd6b..193109f 100644
--- a/src/openint/_utils/_typing.py
+++ b/src/openint/_utils/_typing.py
@@ -15,7 +15,7 @@
from ._utils import lru_cache
from .._types import InheritsGeneric
-from .._compat import is_union as _is_union
+from ._compat import is_union as _is_union
def is_annotated_type(typ: type) -> bool:
diff --git a/src/openint/_utils/_utils.py b/src/openint/_utils/_utils.py
index ea3cf3f..f081859 100644
--- a/src/openint/_utils/_utils.py
+++ b/src/openint/_utils/_utils.py
@@ -22,7 +22,6 @@
import sniffio
from .._types import NotGiven, FileTypes, NotGivenOr, HeadersLike
-from .._compat import parse_date as parse_date, parse_datetime as parse_datetime
_T = TypeVar("_T")
_TupleT = TypeVar("_TupleT", bound=Tuple[object, ...])
diff --git a/tests/test_models.py b/tests/test_models.py
index 944d6ec..8088131 100644
--- a/tests/test_models.py
+++ b/tests/test_models.py
@@ -8,7 +8,7 @@
from pydantic import Field
from openint._utils import PropertyInfo
-from openint._compat import PYDANTIC_V2, parse_obj, model_dump, model_json
+from openint._compat import PYDANTIC_V1, parse_obj, model_dump, model_json
from openint._models import BaseModel, construct_type
@@ -294,12 +294,12 @@ class Model(BaseModel):
assert cast(bool, m.foo) is True
m = Model.construct(foo={"name": 3})
- if PYDANTIC_V2:
- assert isinstance(m.foo, Submodel1)
- assert m.foo.name == 3 # type: ignore
- else:
+ if PYDANTIC_V1:
assert isinstance(m.foo, Submodel2)
assert m.foo.name == "3"
+ else:
+ assert isinstance(m.foo, Submodel1)
+ assert m.foo.name == 3 # type: ignore
def test_list_of_unions() -> None:
@@ -426,10 +426,10 @@ class Model(BaseModel):
expected = datetime(2019, 12, 27, 18, 11, 19, 117000, tzinfo=timezone.utc)
- if PYDANTIC_V2:
- expected_json = '{"created_at":"2019-12-27T18:11:19.117000Z"}'
- else:
+ if PYDANTIC_V1:
expected_json = '{"created_at": "2019-12-27T18:11:19.117000+00:00"}'
+ else:
+ expected_json = '{"created_at":"2019-12-27T18:11:19.117000Z"}'
model = Model.construct(created_at="2019-12-27T18:11:19.117Z")
assert model.created_at == expected
@@ -531,7 +531,7 @@ class Model2(BaseModel):
assert m4.to_dict(mode="python") == {"created_at": datetime.fromisoformat(time_str)}
assert m4.to_dict(mode="json") == {"created_at": time_str}
- if not PYDANTIC_V2:
+ if PYDANTIC_V1:
with pytest.raises(ValueError, match="warnings is only supported in Pydantic v2"):
m.to_dict(warnings=False)
@@ -556,7 +556,7 @@ class Model(BaseModel):
assert m3.model_dump() == {"foo": None}
assert m3.model_dump(exclude_none=True) == {}
- if not PYDANTIC_V2:
+ if PYDANTIC_V1:
with pytest.raises(ValueError, match="round_trip is only supported in Pydantic v2"):
m.model_dump(round_trip=True)
@@ -580,10 +580,10 @@ class Model(BaseModel):
assert json.loads(m.to_json()) == {"FOO": "hello"}
assert json.loads(m.to_json(use_api_names=False)) == {"foo": "hello"}
- if PYDANTIC_V2:
- assert m.to_json(indent=None) == '{"FOO":"hello"}'
- else:
+ if PYDANTIC_V1:
assert m.to_json(indent=None) == '{"FOO": "hello"}'
+ else:
+ assert m.to_json(indent=None) == '{"FOO":"hello"}'
m2 = Model()
assert json.loads(m2.to_json()) == {}
@@ -595,7 +595,7 @@ class Model(BaseModel):
assert json.loads(m3.to_json()) == {"FOO": None}
assert json.loads(m3.to_json(exclude_none=True)) == {}
- if not PYDANTIC_V2:
+ if PYDANTIC_V1:
with pytest.raises(ValueError, match="warnings is only supported in Pydantic v2"):
m.to_json(warnings=False)
@@ -622,7 +622,7 @@ class Model(BaseModel):
assert json.loads(m3.model_dump_json()) == {"foo": None}
assert json.loads(m3.model_dump_json(exclude_none=True)) == {}
- if not PYDANTIC_V2:
+ if PYDANTIC_V1:
with pytest.raises(ValueError, match="round_trip is only supported in Pydantic v2"):
m.model_dump_json(round_trip=True)
@@ -679,12 +679,12 @@ class B(BaseModel):
)
assert isinstance(m, A)
assert m.type == "a"
- if PYDANTIC_V2:
- assert m.data == 100 # type: ignore[comparison-overlap]
- else:
+ if PYDANTIC_V1:
# pydantic v1 automatically converts inputs to strings
# if the expected type is a str
assert m.data == "100"
+ else:
+ assert m.data == 100 # type: ignore[comparison-overlap]
def test_discriminated_unions_unknown_variant() -> None:
@@ -768,12 +768,12 @@ class B(BaseModel):
)
assert isinstance(m, A)
assert m.foo_type == "a"
- if PYDANTIC_V2:
- assert m.data == 100 # type: ignore[comparison-overlap]
- else:
+ if PYDANTIC_V1:
# pydantic v1 automatically converts inputs to strings
# if the expected type is a str
assert m.data == "100"
+ else:
+ assert m.data == 100 # type: ignore[comparison-overlap]
def test_discriminated_unions_overlapping_discriminators_invalid_data() -> None:
@@ -833,7 +833,7 @@ class B(BaseModel):
assert UnionType.__discriminator__ is discriminator
-@pytest.mark.skipif(not PYDANTIC_V2, reason="TypeAliasType is not supported in Pydantic v1")
+@pytest.mark.skipif(PYDANTIC_V1, reason="TypeAliasType is not supported in Pydantic v1")
def test_type_alias_type() -> None:
Alias = TypeAliasType("Alias", str) # pyright: ignore
@@ -849,7 +849,7 @@ class Model(BaseModel):
assert m.union == "bar"
-@pytest.mark.skipif(not PYDANTIC_V2, reason="TypeAliasType is not supported in Pydantic v1")
+@pytest.mark.skipif(PYDANTIC_V1, reason="TypeAliasType is not supported in Pydantic v1")
def test_field_named_cls() -> None:
class Model(BaseModel):
cls: str
@@ -936,7 +936,7 @@ class Type2(BaseModel):
assert isinstance(model.value, InnerType2)
-@pytest.mark.skipif(not PYDANTIC_V2, reason="this is only supported in pydantic v2 for now")
+@pytest.mark.skipif(PYDANTIC_V1, reason="this is only supported in pydantic v2 for now")
def test_extra_properties() -> None:
class Item(BaseModel):
prop: int
diff --git a/tests/test_transform.py b/tests/test_transform.py
index 991c1b5..a8a6a2b 100644
--- a/tests/test_transform.py
+++ b/tests/test_transform.py
@@ -15,7 +15,7 @@
parse_datetime,
async_transform as _async_transform,
)
-from openint._compat import PYDANTIC_V2
+from openint._compat import PYDANTIC_V1
from openint._models import BaseModel
_T = TypeVar("_T")
@@ -189,7 +189,7 @@ class DateModel(BaseModel):
@pytest.mark.asyncio
async def test_iso8601_format(use_async: bool) -> None:
dt = datetime.fromisoformat("2023-02-23T14:16:36.337692+00:00")
- tz = "Z" if PYDANTIC_V2 else "+00:00"
+ tz = "+00:00" if PYDANTIC_V1 else "Z"
assert await transform({"foo": dt}, DatetimeDict, use_async) == {"foo": "2023-02-23T14:16:36.337692+00:00"} # type: ignore[comparison-overlap]
assert await transform(DatetimeModel(foo=dt), Any, use_async) == {"foo": "2023-02-23T14:16:36.337692" + tz} # type: ignore[comparison-overlap]
@@ -297,11 +297,11 @@ async def test_pydantic_unknown_field(use_async: bool) -> None:
@pytest.mark.asyncio
async def test_pydantic_mismatched_types(use_async: bool) -> None:
model = MyModel.construct(foo=True)
- if PYDANTIC_V2:
+ if PYDANTIC_V1:
+ params = await transform(model, Any, use_async)
+ else:
with pytest.warns(UserWarning):
params = await transform(model, Any, use_async)
- else:
- params = await transform(model, Any, use_async)
assert cast(Any, params) == {"foo": True}
@@ -309,11 +309,11 @@ async def test_pydantic_mismatched_types(use_async: bool) -> None:
@pytest.mark.asyncio
async def test_pydantic_mismatched_object_type(use_async: bool) -> None:
model = MyModel.construct(foo=MyModel.construct(hello="world"))
- if PYDANTIC_V2:
+ if PYDANTIC_V1:
+ params = await transform(model, Any, use_async)
+ else:
with pytest.warns(UserWarning):
params = await transform(model, Any, use_async)
- else:
- params = await transform(model, Any, use_async)
assert cast(Any, params) == {"foo": {"hello": "world"}}
diff --git a/tests/test_utils/test_datetime_parse.py b/tests/test_utils/test_datetime_parse.py
new file mode 100644
index 0000000..bf77083
--- /dev/null
+++ b/tests/test_utils/test_datetime_parse.py
@@ -0,0 +1,110 @@
+"""
+Copied from https://github.com/pydantic/pydantic/blob/v1.10.22/tests/test_datetime_parse.py
+with modifications so it works without pydantic v1 imports.
+"""
+
+from typing import Type, Union
+from datetime import date, datetime, timezone, timedelta
+
+import pytest
+
+from openint._utils import parse_date, parse_datetime
+
+
+def create_tz(minutes: int) -> timezone:
+ return timezone(timedelta(minutes=minutes))
+
+
+@pytest.mark.parametrize(
+ "value,result",
+ [
+ # Valid inputs
+ ("1494012444.883309", date(2017, 5, 5)),
+ (b"1494012444.883309", date(2017, 5, 5)),
+ (1_494_012_444.883_309, date(2017, 5, 5)),
+ ("1494012444", date(2017, 5, 5)),
+ (1_494_012_444, date(2017, 5, 5)),
+ (0, date(1970, 1, 1)),
+ ("2012-04-23", date(2012, 4, 23)),
+ (b"2012-04-23", date(2012, 4, 23)),
+ ("2012-4-9", date(2012, 4, 9)),
+ (date(2012, 4, 9), date(2012, 4, 9)),
+ (datetime(2012, 4, 9, 12, 15), date(2012, 4, 9)),
+ # Invalid inputs
+ ("x20120423", ValueError),
+ ("2012-04-56", ValueError),
+ (19_999_999_999, date(2603, 10, 11)), # just before watershed
+ (20_000_000_001, date(1970, 8, 20)), # just after watershed
+ (1_549_316_052, date(2019, 2, 4)), # nowish in s
+ (1_549_316_052_104, date(2019, 2, 4)), # nowish in ms
+ (1_549_316_052_104_324, date(2019, 2, 4)), # nowish in μs
+ (1_549_316_052_104_324_096, date(2019, 2, 4)), # nowish in ns
+ ("infinity", date(9999, 12, 31)),
+ ("inf", date(9999, 12, 31)),
+ (float("inf"), date(9999, 12, 31)),
+ ("infinity ", date(9999, 12, 31)),
+ (int("1" + "0" * 100), date(9999, 12, 31)),
+ (1e1000, date(9999, 12, 31)),
+ ("-infinity", date(1, 1, 1)),
+ ("-inf", date(1, 1, 1)),
+ ("nan", ValueError),
+ ],
+)
+def test_date_parsing(value: Union[str, bytes, int, float], result: Union[date, Type[Exception]]) -> None:
+ if type(result) == type and issubclass(result, Exception): # pyright: ignore[reportUnnecessaryIsInstance]
+ with pytest.raises(result):
+ parse_date(value)
+ else:
+ assert parse_date(value) == result
+
+
+@pytest.mark.parametrize(
+ "value,result",
+ [
+ # Valid inputs
+ # values in seconds
+ ("1494012444.883309", datetime(2017, 5, 5, 19, 27, 24, 883_309, tzinfo=timezone.utc)),
+ (1_494_012_444.883_309, datetime(2017, 5, 5, 19, 27, 24, 883_309, tzinfo=timezone.utc)),
+ ("1494012444", datetime(2017, 5, 5, 19, 27, 24, tzinfo=timezone.utc)),
+ (b"1494012444", datetime(2017, 5, 5, 19, 27, 24, tzinfo=timezone.utc)),
+ (1_494_012_444, datetime(2017, 5, 5, 19, 27, 24, tzinfo=timezone.utc)),
+ # values in ms
+ ("1494012444000.883309", datetime(2017, 5, 5, 19, 27, 24, 883, tzinfo=timezone.utc)),
+ ("-1494012444000.883309", datetime(1922, 8, 29, 4, 32, 35, 999117, tzinfo=timezone.utc)),
+ (1_494_012_444_000, datetime(2017, 5, 5, 19, 27, 24, tzinfo=timezone.utc)),
+ ("2012-04-23T09:15:00", datetime(2012, 4, 23, 9, 15)),
+ ("2012-4-9 4:8:16", datetime(2012, 4, 9, 4, 8, 16)),
+ ("2012-04-23T09:15:00Z", datetime(2012, 4, 23, 9, 15, 0, 0, timezone.utc)),
+ ("2012-4-9 4:8:16-0320", datetime(2012, 4, 9, 4, 8, 16, 0, create_tz(-200))),
+ ("2012-04-23T10:20:30.400+02:30", datetime(2012, 4, 23, 10, 20, 30, 400_000, create_tz(150))),
+ ("2012-04-23T10:20:30.400+02", datetime(2012, 4, 23, 10, 20, 30, 400_000, create_tz(120))),
+ ("2012-04-23T10:20:30.400-02", datetime(2012, 4, 23, 10, 20, 30, 400_000, create_tz(-120))),
+ (b"2012-04-23T10:20:30.400-02", datetime(2012, 4, 23, 10, 20, 30, 400_000, create_tz(-120))),
+ (datetime(2017, 5, 5), datetime(2017, 5, 5)),
+ (0, datetime(1970, 1, 1, 0, 0, 0, tzinfo=timezone.utc)),
+ # Invalid inputs
+ ("x20120423091500", ValueError),
+ ("2012-04-56T09:15:90", ValueError),
+ ("2012-04-23T11:05:00-25:00", ValueError),
+ (19_999_999_999, datetime(2603, 10, 11, 11, 33, 19, tzinfo=timezone.utc)), # just before watershed
+ (20_000_000_001, datetime(1970, 8, 20, 11, 33, 20, 1000, tzinfo=timezone.utc)), # just after watershed
+ (1_549_316_052, datetime(2019, 2, 4, 21, 34, 12, 0, tzinfo=timezone.utc)), # nowish in s
+ (1_549_316_052_104, datetime(2019, 2, 4, 21, 34, 12, 104_000, tzinfo=timezone.utc)), # nowish in ms
+ (1_549_316_052_104_324, datetime(2019, 2, 4, 21, 34, 12, 104_324, tzinfo=timezone.utc)), # nowish in μs
+ (1_549_316_052_104_324_096, datetime(2019, 2, 4, 21, 34, 12, 104_324, tzinfo=timezone.utc)), # nowish in ns
+ ("infinity", datetime(9999, 12, 31, 23, 59, 59, 999999)),
+ ("inf", datetime(9999, 12, 31, 23, 59, 59, 999999)),
+ ("inf ", datetime(9999, 12, 31, 23, 59, 59, 999999)),
+ (1e50, datetime(9999, 12, 31, 23, 59, 59, 999999)),
+ (float("inf"), datetime(9999, 12, 31, 23, 59, 59, 999999)),
+ ("-infinity", datetime(1, 1, 1, 0, 0)),
+ ("-inf", datetime(1, 1, 1, 0, 0)),
+ ("nan", ValueError),
+ ],
+)
+def test_datetime_parsing(value: Union[str, bytes, int, float], result: Union[datetime, Type[Exception]]) -> None:
+ if type(result) == type and issubclass(result, Exception): # pyright: ignore[reportUnnecessaryIsInstance]
+ with pytest.raises(result):
+ parse_datetime(value)
+ else:
+ assert parse_datetime(value) == result
diff --git a/tests/utils.py b/tests/utils.py
index f66bc83..ee33a52 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -19,7 +19,7 @@
is_annotated_type,
is_type_alias_type,
)
-from openint._compat import PYDANTIC_V2, field_outer_type, get_model_fields
+from openint._compat import PYDANTIC_V1, field_outer_type, get_model_fields
from openint._models import BaseModel
BaseModelT = TypeVar("BaseModelT", bound=BaseModel)
@@ -28,12 +28,12 @@
def assert_matches_model(model: type[BaseModelT], value: BaseModelT, *, path: list[str]) -> bool:
for name, field in get_model_fields(model).items():
field_value = getattr(value, name)
- if PYDANTIC_V2:
- allow_none = False
- else:
+ if PYDANTIC_V1:
# in v1 nullability was structured differently
# https://docs.pydantic.dev/2.0/migration/#required-optional-and-nullable-fields
allow_none = getattr(field, "allow_none", False)
+ else:
+ allow_none = False
assert_matches_type(
field_outer_type(field),
From 3353de9e526c20d6be9997fe93de2f3ab5c53d77 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 5 Sep 2025 04:27:01 +0000
Subject: [PATCH 12/13] chore(internal): move mypy configurations to
`pyproject.toml` file
---
mypy.ini | 50 ------------------------------------------------
pyproject.toml | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+), 50 deletions(-)
delete mode 100644 mypy.ini
diff --git a/mypy.ini b/mypy.ini
deleted file mode 100644
index 19f0e12..0000000
--- a/mypy.ini
+++ /dev/null
@@ -1,50 +0,0 @@
-[mypy]
-pretty = True
-show_error_codes = True
-
-# Exclude _files.py because mypy isn't smart enough to apply
-# the correct type narrowing and as this is an internal module
-# it's fine to just use Pyright.
-#
-# We also exclude our `tests` as mypy doesn't always infer
-# types correctly and Pyright will still catch any type errors.
-exclude = ^(src/openint/_files\.py|_dev/.*\.py|tests/.*)$
-
-strict_equality = True
-implicit_reexport = True
-check_untyped_defs = True
-no_implicit_optional = True
-
-warn_return_any = True
-warn_unreachable = True
-warn_unused_configs = True
-
-# Turn these options off as it could cause conflicts
-# with the Pyright options.
-warn_unused_ignores = False
-warn_redundant_casts = False
-
-disallow_any_generics = True
-disallow_untyped_defs = True
-disallow_untyped_calls = True
-disallow_subclassing_any = True
-disallow_incomplete_defs = True
-disallow_untyped_decorators = True
-cache_fine_grained = True
-
-# By default, mypy reports an error if you assign a value to the result
-# of a function call that doesn't return anything. We do this in our test
-# cases:
-# ```
-# result = ...
-# assert result is None
-# ```
-# Changing this codegen to make mypy happy would increase complexity
-# and would not be worth it.
-disable_error_code = func-returns-value,overload-cannot-match
-
-# https://github.com/python/mypy/issues/12162
-[mypy.overrides]
-module = "black.files.*"
-ignore_errors = true
-ignore_missing_imports = true
diff --git a/pyproject.toml b/pyproject.toml
index 9c73434..3bb5f65 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -157,6 +157,58 @@ reportOverlappingOverload = false
reportImportCycles = false
reportPrivateUsage = false
+[tool.mypy]
+pretty = true
+show_error_codes = true
+
+# Exclude _files.py because mypy isn't smart enough to apply
+# the correct type narrowing and as this is an internal module
+# it's fine to just use Pyright.
+#
+# We also exclude our `tests` as mypy doesn't always infer
+# types correctly and Pyright will still catch any type errors.
+exclude = ['src/openint/_files.py', '_dev/.*.py', 'tests/.*']
+
+strict_equality = true
+implicit_reexport = true
+check_untyped_defs = true
+no_implicit_optional = true
+
+warn_return_any = true
+warn_unreachable = true
+warn_unused_configs = true
+
+# Turn these options off as it could cause conflicts
+# with the Pyright options.
+warn_unused_ignores = false
+warn_redundant_casts = false
+
+disallow_any_generics = true
+disallow_untyped_defs = true
+disallow_untyped_calls = true
+disallow_subclassing_any = true
+disallow_incomplete_defs = true
+disallow_untyped_decorators = true
+cache_fine_grained = true
+
+# By default, mypy reports an error if you assign a value to the result
+# of a function call that doesn't return anything. We do this in our test
+# cases:
+# ```
+# result = ...
+# assert result is None
+# ```
+# Changing this codegen to make mypy happy would increase complexity
+# and would not be worth it.
+disable_error_code = "func-returns-value,overload-cannot-match"
+
+# https://github.com/python/mypy/issues/12162
+[[tool.mypy.overrides]]
+module = "black.files.*"
+ignore_errors = true
+ignore_missing_imports = true
+
+
[tool.ruff]
line-length = 120
output-format = "grouped"
From b76ab98d3611c0eaf9dbca151187409e1ea5601d Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 5 Sep 2025 04:27:18 +0000
Subject: [PATCH 13/13] release: 2.10.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 27 +++++++++++++++++++++++++++
pyproject.toml | 2 +-
src/openint/_version.py | 2 +-
4 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 427b8ec..21f6056 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.9.0"
+ ".": "2.10.0"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0184344..2c77061 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,32 @@
# Changelog
+## 2.10.0 (2025-09-05)
+
+Full Changelog: [v2.9.0...v2.10.0](https://github.com/openintegrations/python-sdk/compare/v2.9.0...v2.10.0)
+
+### Features
+
+* **api:** adding preconnect ([3344695](https://github.com/openintegrations/python-sdk/commit/3344695e46661bed707c0a568123392ef59d094a))
+* **api:** casing ([e92ec04](https://github.com/openintegrations/python-sdk/commit/e92ec0402cbf32aa6278345e5daad14d39c30255))
+* **api:** org api updates ([d5af5d8](https://github.com/openintegrations/python-sdk/commit/d5af5d822322bc00c43778ecd388fcb1865ab778))
+* **api:** preconfigure, preconnect & rpc methods ([b34e94f](https://github.com/openintegrations/python-sdk/commit/b34e94febbd1048b02a79227728765a2b862338d))
+* **api:** renaming connectionConfigs ([b388433](https://github.com/openintegrations/python-sdk/commit/b388433332d18e139ff4d2ff5aa2f57edf4e4091))
+* improve future compat with pydantic v3 ([1193b57](https://github.com/openintegrations/python-sdk/commit/1193b57f35d7de48c4f823ba9e2f49a4098da5e0))
+* **types:** replace List[str] with SequenceNotStr in params ([c1996fe](https://github.com/openintegrations/python-sdk/commit/c1996fe4d4a7bd7d6018331a2935e369d982e037))
+
+
+### Bug Fixes
+
+* avoid newer type syntax ([a6c3bd3](https://github.com/openintegrations/python-sdk/commit/a6c3bd3d6ec3516064cca83ec66310b6a6ad327c))
+
+
+### Chores
+
+* **internal:** add Sequence related utils ([614f2d0](https://github.com/openintegrations/python-sdk/commit/614f2d0eb04ad768d4bee478e01be0cbbcd5c405))
+* **internal:** change ci workflow machines ([c7335da](https://github.com/openintegrations/python-sdk/commit/c7335da65b5ea21fd125b0d47d5aa7708a3e5df0))
+* **internal:** move mypy configurations to `pyproject.toml` file ([3353de9](https://github.com/openintegrations/python-sdk/commit/3353de9e526c20d6be9997fe93de2f3ab5c53d77))
+* **internal:** update pyright exclude list ([81cb316](https://github.com/openintegrations/python-sdk/commit/81cb316c7362c1a2304d4528dc1aa5e60b026392))
+
## 2.9.0 (2025-08-26)
Full Changelog: [v2.8.0...v2.9.0](https://github.com/openintegrations/python-sdk/compare/v2.8.0...v2.9.0)
diff --git a/pyproject.toml b/pyproject.toml
index 3bb5f65..2fbd742 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openint"
-version = "2.9.0"
+version = "2.10.0"
description = "The official Python library for the Openint API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/openint/_version.py b/src/openint/_version.py
index 4ed8fb6..13cb095 100644
--- a/src/openint/_version.py
+++ b/src/openint/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "openint"
-__version__ = "2.9.0" # x-release-please-version
+__version__ = "2.10.0" # x-release-please-version