omnidapter-sdk 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. omnidapter_sdk-0.3.2/.gitignore +30 -0
  2. omnidapter_sdk-0.3.2/PKG-INFO +14 -0
  3. omnidapter_sdk-0.3.2/README.md +134 -0
  4. omnidapter_sdk-0.3.2/omnidapter_sdk/__init__.py +94 -0
  5. omnidapter_sdk-0.3.2/omnidapter_sdk/api/__init__.py +8 -0
  6. omnidapter_sdk-0.3.2/omnidapter_sdk/api/calendar_api.py +3349 -0
  7. omnidapter_sdk-0.3.2/omnidapter_sdk/api/connections_api.py +1463 -0
  8. omnidapter_sdk-0.3.2/omnidapter_sdk/api/link_tokens_api.py +314 -0
  9. omnidapter_sdk-0.3.2/omnidapter_sdk/api/providers_api.py +542 -0
  10. omnidapter_sdk-0.3.2/omnidapter_sdk/api_client.py +808 -0
  11. omnidapter_sdk-0.3.2/omnidapter_sdk/api_response.py +21 -0
  12. omnidapter_sdk-0.3.2/omnidapter_sdk/client.py +16 -0
  13. omnidapter_sdk-0.3.2/omnidapter_sdk/configuration.py +582 -0
  14. omnidapter_sdk-0.3.2/omnidapter_sdk/exceptions.py +216 -0
  15. omnidapter_sdk-0.3.2/omnidapter_sdk/models/__init__.py +74 -0
  16. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_availability_response.py +97 -0
  17. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_calendar.py +97 -0
  18. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_calendar_event.py +97 -0
  19. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_connection_response.py +97 -0
  20. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_create_connection_response.py +97 -0
  21. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_link_token_data.py +97 -0
  22. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_list_calendar.py +101 -0
  23. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_list_provider_metadata.py +101 -0
  24. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_provider_metadata.py +97 -0
  25. omnidapter_sdk-0.3.2/omnidapter_sdk/models/api_response_reauthorize_connection_response.py +97 -0
  26. omnidapter_sdk-0.3.2/omnidapter_sdk/models/attendee.py +119 -0
  27. omnidapter_sdk-0.3.2/omnidapter_sdk/models/attendee_status.py +40 -0
  28. omnidapter_sdk-0.3.2/omnidapter_sdk/models/auth_kind.py +38 -0
  29. omnidapter_sdk-0.3.2/omnidapter_sdk/models/availability_response.py +109 -0
  30. omnidapter_sdk-0.3.2/omnidapter_sdk/models/calendar.py +128 -0
  31. omnidapter_sdk-0.3.2/omnidapter_sdk/models/calendar_event.py +241 -0
  32. omnidapter_sdk-0.3.2/omnidapter_sdk/models/conference_data.py +123 -0
  33. omnidapter_sdk-0.3.2/omnidapter_sdk/models/conference_entry_point.py +110 -0
  34. omnidapter_sdk-0.3.2/omnidapter_sdk/models/connect_create_connection_request.py +115 -0
  35. omnidapter_sdk-0.3.2/omnidapter_sdk/models/connect_session_request.py +87 -0
  36. omnidapter_sdk-0.3.2/omnidapter_sdk/models/connection_config_field.py +121 -0
  37. omnidapter_sdk-0.3.2/omnidapter_sdk/models/connection_response.py +129 -0
  38. omnidapter_sdk-0.3.2/omnidapter_sdk/models/create_calendar_request.py +117 -0
  39. omnidapter_sdk-0.3.2/omnidapter_sdk/models/create_connection_request.py +103 -0
  40. omnidapter_sdk-0.3.2/omnidapter_sdk/models/create_connection_response.py +91 -0
  41. omnidapter_sdk-0.3.2/omnidapter_sdk/models/create_event_request.py +184 -0
  42. omnidapter_sdk-0.3.2/omnidapter_sdk/models/create_link_token_request.py +121 -0
  43. omnidapter_sdk-0.3.2/omnidapter_sdk/models/end.py +139 -0
  44. omnidapter_sdk-0.3.2/omnidapter_sdk/models/end1.py +145 -0
  45. omnidapter_sdk-0.3.2/omnidapter_sdk/models/event_list_meta.py +93 -0
  46. omnidapter_sdk-0.3.2/omnidapter_sdk/models/event_list_response_calendar_event.py +101 -0
  47. omnidapter_sdk-0.3.2/omnidapter_sdk/models/event_pagination_meta.py +93 -0
  48. omnidapter_sdk-0.3.2/omnidapter_sdk/models/event_status.py +39 -0
  49. omnidapter_sdk-0.3.2/omnidapter_sdk/models/event_visibility.py +39 -0
  50. omnidapter_sdk-0.3.2/omnidapter_sdk/models/free_busy_interval.py +97 -0
  51. omnidapter_sdk-0.3.2/omnidapter_sdk/models/http_validation_error.py +95 -0
  52. omnidapter_sdk-0.3.2/omnidapter_sdk/models/link_token_data.py +92 -0
  53. omnidapter_sdk-0.3.2/omnidapter_sdk/models/list_meta.py +93 -0
  54. omnidapter_sdk-0.3.2/omnidapter_sdk/models/list_response_connection_response.py +101 -0
  55. omnidapter_sdk-0.3.2/omnidapter_sdk/models/o_auth_metadata.py +103 -0
  56. omnidapter_sdk-0.3.2/omnidapter_sdk/models/o_auth_scope_group.py +91 -0
  57. omnidapter_sdk-0.3.2/omnidapter_sdk/models/organizer.py +103 -0
  58. omnidapter_sdk-0.3.2/omnidapter_sdk/models/original_start_time.py +145 -0
  59. omnidapter_sdk-0.3.2/omnidapter_sdk/models/pagination_meta.py +93 -0
  60. omnidapter_sdk-0.3.2/omnidapter_sdk/models/provider_metadata.py +120 -0
  61. omnidapter_sdk-0.3.2/omnidapter_sdk/models/reauthorize_connection_request.py +87 -0
  62. omnidapter_sdk-0.3.2/omnidapter_sdk/models/reauthorize_connection_response.py +91 -0
  63. omnidapter_sdk-0.3.2/omnidapter_sdk/models/recurrence.py +112 -0
  64. omnidapter_sdk-0.3.2/omnidapter_sdk/models/reminder.py +97 -0
  65. omnidapter_sdk-0.3.2/omnidapter_sdk/models/reminder_override.py +89 -0
  66. omnidapter_sdk-0.3.2/omnidapter_sdk/models/request_meta.py +87 -0
  67. omnidapter_sdk-0.3.2/omnidapter_sdk/models/service_kind.py +37 -0
  68. omnidapter_sdk-0.3.2/omnidapter_sdk/models/start.py +139 -0
  69. omnidapter_sdk-0.3.2/omnidapter_sdk/models/start1.py +145 -0
  70. omnidapter_sdk-0.3.2/omnidapter_sdk/models/update_calendar_request.py +124 -0
  71. omnidapter_sdk-0.3.2/omnidapter_sdk/models/update_event_request.py +211 -0
  72. omnidapter_sdk-0.3.2/omnidapter_sdk/models/validation_error.py +108 -0
  73. omnidapter_sdk-0.3.2/omnidapter_sdk/models/validation_error_loc_inner.py +138 -0
  74. omnidapter_sdk-0.3.2/omnidapter_sdk/py.typed +0 -0
  75. omnidapter_sdk-0.3.2/omnidapter_sdk/rest.py +257 -0
  76. omnidapter_sdk-0.3.2/pyproject.toml +29 -0
  77. omnidapter_sdk-0.3.2/tests/__init__.py +0 -0
  78. omnidapter_sdk-0.3.2/tests/conftest.py +109 -0
  79. omnidapter_sdk-0.3.2/tests/test_calendar.py +64 -0
  80. omnidapter_sdk-0.3.2/tests/test_connections.py +45 -0
  81. omnidapter_sdk-0.3.2/tests/test_link_tokens.py +42 -0
  82. omnidapter_sdk-0.3.2/tests/test_providers.py +20 -0
@@ -0,0 +1,30 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.pyo
4
+ *.pyd
5
+ .Python
6
+ *.egg
7
+ *.egg-info/
8
+ dist/
9
+ build/
10
+ .eggs/
11
+ .venv/
12
+ venv/
13
+ .pytest_cache/
14
+ .mypy_cache/
15
+ .ruff_cache/
16
+ *.so
17
+ .coverage
18
+ htmlcov/
19
+ .env
20
+ .env.*
21
+ !**/.env.example
22
+ node_modules/
23
+
24
+ # Generated SDK files — regenerated by scripts/generate_sdks.sh
25
+ omnidapter-sdk/omnidapter_sdk/*
26
+ !omnidapter-sdk/omnidapter_sdk/client.py
27
+ !omnidapter-sdk/omnidapter_sdk/api_client.py
28
+ client/packages/sdk/src/*
29
+ !client/packages/sdk/src/OmnidapterClient.ts
30
+ !client/packages/sdk/src/index.ts
@@ -0,0 +1,14 @@
1
+ Metadata-Version: 2.4
2
+ Name: omnidapter-sdk
3
+ Version: 0.3.2
4
+ Summary: Omnidapter API client SDK
5
+ License: MIT
6
+ Requires-Python: >=3.10
7
+ Requires-Dist: pydantic>=2.0
8
+ Requires-Dist: python-dateutil>=2.8.2
9
+ Requires-Dist: urllib3>=1.25.3
10
+ Provides-Extra: test
11
+ Requires-Dist: omnidapter-server; extra == 'test'
12
+ Requires-Dist: pytest>=8.0; extra == 'test'
13
+ Requires-Dist: testcontainers[postgres]>=4.0; extra == 'test'
14
+ Requires-Dist: uvicorn>=0.30; extra == 'test'
@@ -0,0 +1,134 @@
1
+ # omnidapter-sdk
2
+
3
+ Python client for the [Omnidapter](https://omnidapter.heckerlabs.ai) API.
4
+
5
+ Omnidapter lets you connect to your users' calendars (and other services) through a single unified API. You create a link token, send the user through the Connect UI to authorise their account, and then read their data using the connection that comes back.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ pip install omnidapter-sdk
11
+ ```
12
+
13
+ Requires Python 3.10+.
14
+
15
+ ## Getting started
16
+
17
+ Create a client with your API key and the base URL of your Omnidapter instance:
18
+
19
+ ```python
20
+ from omnidapter_sdk import OmnidapterClient
21
+
22
+ client = OmnidapterClient(
23
+ base_url="https://api.example.com",
24
+ api_key="omni_live_...",
25
+ )
26
+ ```
27
+
28
+ All methods are synchronous and return typed response objects. The actual payload is always on `.data`.
29
+
30
+ ---
31
+
32
+ ## Providers
33
+
34
+ Providers are the services Omnidapter can connect to (e.g. Google, Microsoft). You typically list them once to populate a picker in your UI.
35
+
36
+ ```python
37
+ providers = client.providers.list_providers()
38
+ for provider in providers.data:
39
+ print(provider.key, provider.display_name)
40
+
41
+ # Fetch a single provider by its key
42
+ google = client.providers.get_provider(provider_key="google")
43
+ print(google.data.display_name)
44
+ ```
45
+
46
+ ---
47
+
48
+ ## Connections
49
+
50
+ A connection represents an authorised link between one of your end users and a provider. Once a user completes the Connect flow, their connection appears here.
51
+
52
+ ```python
53
+ # List all connections, optionally filtering by status or provider
54
+ connections = client.connections.list_connections(status="active", provider="google")
55
+ for conn in connections.data:
56
+ print(conn.id, conn.provider_key, conn.status)
57
+
58
+ # Fetch a single connection
59
+ conn = client.connections.get_connection(connection_id="conn_...")
60
+ print(conn.data.status)
61
+
62
+ # Revoke a connection — this also invalidates any stored credentials
63
+ client.connections.delete_connection(connection_id="conn_...")
64
+ ```
65
+
66
+ ---
67
+
68
+ ## Link tokens
69
+
70
+ A link token is a short-lived, single-use token that grants an end user access to the Connect UI. Generate one server-side, pass it to your frontend, and redirect the user to `connect_url`. Omnidapter will handle the OAuth flow and create a connection on success.
71
+
72
+ ```python
73
+ from omnidapter_sdk.models import CreateLinkTokenRequest
74
+
75
+ result = client.link_tokens.create_link_token(
76
+ create_link_token_request=CreateLinkTokenRequest(
77
+ end_user_id="user_123", # your internal user ID
78
+ allowed_providers=["google", "microsoft"], # restrict which providers are shown
79
+ )
80
+ )
81
+
82
+ token = result.data
83
+ print(token.token) # lt_... — pass this to your frontend
84
+ print(token.connect_url) # redirect the user here to start the Connect flow
85
+ print(token.expires_at) # datetime — tokens are short-lived, generate them on demand
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Calendar
91
+
92
+ Once a user has a connection, you can read their calendar data. All calendar operations require a `connection_id`.
93
+
94
+ ```python
95
+ from datetime import datetime, timezone
96
+
97
+ # List the calendars available on a connection
98
+ calendars = client.calendar.list_calendars(connection_id="conn_...")
99
+ for cal in calendars.data:
100
+ print(cal.id, cal.name)
101
+
102
+ # List events within a time range across a specific calendar
103
+ events = client.calendar.list_events(
104
+ connection_id="conn_...",
105
+ calendar_id="cal_...",
106
+ start=datetime(2026, 4, 1, tzinfo=timezone.utc),
107
+ end=datetime(2026, 4, 30, tzinfo=timezone.utc),
108
+ )
109
+ for event in events.data:
110
+ print(event.id, event.title, event.start)
111
+ ```
112
+
113
+ ---
114
+
115
+ ## Error handling
116
+
117
+ The SDK raises `ApiException` for any non-2xx response. You can inspect the HTTP status code and the raw response body to handle errors appropriately.
118
+
119
+ ```python
120
+ from omnidapter_sdk.exceptions import ApiException
121
+
122
+ try:
123
+ conn = client.connections.get_connection(connection_id="conn_unknown")
124
+ except ApiException as e:
125
+ print(e.status) # e.g. 404
126
+ print(e.body) # JSON error body from the server
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Notes
132
+
133
+ - The SDK is generated from the server's OpenAPI spec via `scripts/generate_sdks.sh`.
134
+ Run that script after pulling changes to regenerate the client code.
@@ -0,0 +1,94 @@
1
+ # coding: utf-8
2
+
3
+ # flake8: noqa
4
+
5
+ """
6
+ Omnidapter Server
7
+
8
+ Self-hosted REST API wrapping the Omnidapter calendar integration library
9
+
10
+ The version of the OpenAPI document: 0.3.2
11
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
12
+
13
+ Do not edit the class manually.
14
+ """ # noqa: E501
15
+
16
+
17
+ __version__ = "1.0.0"
18
+
19
+ # import apis into sdk package
20
+ from omnidapter_sdk.api.calendar_api import CalendarApi
21
+ from omnidapter_sdk.api.connections_api import ConnectionsApi
22
+ from omnidapter_sdk.api.link_tokens_api import LinkTokensApi
23
+ from omnidapter_sdk.api.providers_api import ProvidersApi
24
+
25
+ # import ApiClient
26
+ from omnidapter_sdk.api_response import ApiResponse
27
+ from omnidapter_sdk.api_client import ApiClient
28
+ from omnidapter_sdk.configuration import Configuration
29
+ from omnidapter_sdk.exceptions import OpenApiException
30
+ from omnidapter_sdk.exceptions import ApiTypeError
31
+ from omnidapter_sdk.exceptions import ApiValueError
32
+ from omnidapter_sdk.exceptions import ApiKeyError
33
+ from omnidapter_sdk.exceptions import ApiAttributeError
34
+ from omnidapter_sdk.exceptions import ApiException
35
+
36
+ # import models into sdk package
37
+ from omnidapter_sdk.models.api_response_availability_response import ApiResponseAvailabilityResponse
38
+ from omnidapter_sdk.models.api_response_calendar import ApiResponseCalendar
39
+ from omnidapter_sdk.models.api_response_calendar_event import ApiResponseCalendarEvent
40
+ from omnidapter_sdk.models.api_response_connection_response import ApiResponseConnectionResponse
41
+ from omnidapter_sdk.models.api_response_create_connection_response import ApiResponseCreateConnectionResponse
42
+ from omnidapter_sdk.models.api_response_link_token_data import ApiResponseLinkTokenData
43
+ from omnidapter_sdk.models.api_response_list_calendar import ApiResponseListCalendar
44
+ from omnidapter_sdk.models.api_response_list_provider_metadata import ApiResponseListProviderMetadata
45
+ from omnidapter_sdk.models.api_response_provider_metadata import ApiResponseProviderMetadata
46
+ from omnidapter_sdk.models.api_response_reauthorize_connection_response import ApiResponseReauthorizeConnectionResponse
47
+ from omnidapter_sdk.models.attendee import Attendee
48
+ from omnidapter_sdk.models.attendee_status import AttendeeStatus
49
+ from omnidapter_sdk.models.auth_kind import AuthKind
50
+ from omnidapter_sdk.models.availability_response import AvailabilityResponse
51
+ from omnidapter_sdk.models.calendar import Calendar
52
+ from omnidapter_sdk.models.calendar_event import CalendarEvent
53
+ from omnidapter_sdk.models.conference_data import ConferenceData
54
+ from omnidapter_sdk.models.conference_entry_point import ConferenceEntryPoint
55
+ from omnidapter_sdk.models.connect_create_connection_request import ConnectCreateConnectionRequest
56
+ from omnidapter_sdk.models.connect_session_request import ConnectSessionRequest
57
+ from omnidapter_sdk.models.connection_config_field import ConnectionConfigField
58
+ from omnidapter_sdk.models.connection_response import ConnectionResponse
59
+ from omnidapter_sdk.models.create_calendar_request import CreateCalendarRequest
60
+ from omnidapter_sdk.models.create_connection_request import CreateConnectionRequest
61
+ from omnidapter_sdk.models.create_connection_response import CreateConnectionResponse
62
+ from omnidapter_sdk.models.create_event_request import CreateEventRequest
63
+ from omnidapter_sdk.models.create_link_token_request import CreateLinkTokenRequest
64
+ from omnidapter_sdk.models.end import End
65
+ from omnidapter_sdk.models.end1 import End1
66
+ from omnidapter_sdk.models.event_list_meta import EventListMeta
67
+ from omnidapter_sdk.models.event_list_response_calendar_event import EventListResponseCalendarEvent
68
+ from omnidapter_sdk.models.event_pagination_meta import EventPaginationMeta
69
+ from omnidapter_sdk.models.event_status import EventStatus
70
+ from omnidapter_sdk.models.event_visibility import EventVisibility
71
+ from omnidapter_sdk.models.free_busy_interval import FreeBusyInterval
72
+ from omnidapter_sdk.models.http_validation_error import HTTPValidationError
73
+ from omnidapter_sdk.models.link_token_data import LinkTokenData
74
+ from omnidapter_sdk.models.list_meta import ListMeta
75
+ from omnidapter_sdk.models.list_response_connection_response import ListResponseConnectionResponse
76
+ from omnidapter_sdk.models.o_auth_metadata import OAuthMetadata
77
+ from omnidapter_sdk.models.o_auth_scope_group import OAuthScopeGroup
78
+ from omnidapter_sdk.models.organizer import Organizer
79
+ from omnidapter_sdk.models.original_start_time import OriginalStartTime
80
+ from omnidapter_sdk.models.pagination_meta import PaginationMeta
81
+ from omnidapter_sdk.models.provider_metadata import ProviderMetadata
82
+ from omnidapter_sdk.models.reauthorize_connection_request import ReauthorizeConnectionRequest
83
+ from omnidapter_sdk.models.reauthorize_connection_response import ReauthorizeConnectionResponse
84
+ from omnidapter_sdk.models.recurrence import Recurrence
85
+ from omnidapter_sdk.models.reminder import Reminder
86
+ from omnidapter_sdk.models.reminder_override import ReminderOverride
87
+ from omnidapter_sdk.models.request_meta import RequestMeta
88
+ from omnidapter_sdk.models.service_kind import ServiceKind
89
+ from omnidapter_sdk.models.start import Start
90
+ from omnidapter_sdk.models.start1 import Start1
91
+ from omnidapter_sdk.models.update_calendar_request import UpdateCalendarRequest
92
+ from omnidapter_sdk.models.update_event_request import UpdateEventRequest
93
+ from omnidapter_sdk.models.validation_error import ValidationError
94
+ from omnidapter_sdk.models.validation_error_loc_inner import ValidationErrorLocInner
@@ -0,0 +1,8 @@
1
+ # flake8: noqa
2
+
3
+ # import apis into api package
4
+ from omnidapter_sdk.api.calendar_api import CalendarApi
5
+ from omnidapter_sdk.api.connections_api import ConnectionsApi
6
+ from omnidapter_sdk.api.link_tokens_api import LinkTokensApi
7
+ from omnidapter_sdk.api.providers_api import ProvidersApi
8
+