airbyte-agent-greenhouse 0.17.48__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. airbyte_agent_greenhouse/__init__.py +105 -0
  2. airbyte_agent_greenhouse/_vendored/__init__.py +1 -0
  3. airbyte_agent_greenhouse/_vendored/connector_sdk/__init__.py +82 -0
  4. airbyte_agent_greenhouse/_vendored/connector_sdk/auth_strategies.py +1120 -0
  5. airbyte_agent_greenhouse/_vendored/connector_sdk/auth_template.py +135 -0
  6. airbyte_agent_greenhouse/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
  7. airbyte_agent_greenhouse/_vendored/connector_sdk/cloud_utils/client.py +213 -0
  8. airbyte_agent_greenhouse/_vendored/connector_sdk/connector_model_loader.py +965 -0
  9. airbyte_agent_greenhouse/_vendored/connector_sdk/constants.py +78 -0
  10. airbyte_agent_greenhouse/_vendored/connector_sdk/exceptions.py +23 -0
  11. airbyte_agent_greenhouse/_vendored/connector_sdk/executor/__init__.py +31 -0
  12. airbyte_agent_greenhouse/_vendored/connector_sdk/executor/hosted_executor.py +196 -0
  13. airbyte_agent_greenhouse/_vendored/connector_sdk/executor/local_executor.py +1724 -0
  14. airbyte_agent_greenhouse/_vendored/connector_sdk/executor/models.py +190 -0
  15. airbyte_agent_greenhouse/_vendored/connector_sdk/extensions.py +693 -0
  16. airbyte_agent_greenhouse/_vendored/connector_sdk/http/__init__.py +37 -0
  17. airbyte_agent_greenhouse/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
  18. airbyte_agent_greenhouse/_vendored/connector_sdk/http/adapters/httpx_adapter.py +251 -0
  19. airbyte_agent_greenhouse/_vendored/connector_sdk/http/config.py +98 -0
  20. airbyte_agent_greenhouse/_vendored/connector_sdk/http/exceptions.py +119 -0
  21. airbyte_agent_greenhouse/_vendored/connector_sdk/http/protocols.py +114 -0
  22. airbyte_agent_greenhouse/_vendored/connector_sdk/http/response.py +104 -0
  23. airbyte_agent_greenhouse/_vendored/connector_sdk/http_client.py +693 -0
  24. airbyte_agent_greenhouse/_vendored/connector_sdk/introspection.py +262 -0
  25. airbyte_agent_greenhouse/_vendored/connector_sdk/logging/__init__.py +11 -0
  26. airbyte_agent_greenhouse/_vendored/connector_sdk/logging/logger.py +273 -0
  27. airbyte_agent_greenhouse/_vendored/connector_sdk/logging/types.py +93 -0
  28. airbyte_agent_greenhouse/_vendored/connector_sdk/observability/__init__.py +11 -0
  29. airbyte_agent_greenhouse/_vendored/connector_sdk/observability/config.py +179 -0
  30. airbyte_agent_greenhouse/_vendored/connector_sdk/observability/models.py +19 -0
  31. airbyte_agent_greenhouse/_vendored/connector_sdk/observability/redactor.py +81 -0
  32. airbyte_agent_greenhouse/_vendored/connector_sdk/observability/session.py +103 -0
  33. airbyte_agent_greenhouse/_vendored/connector_sdk/performance/__init__.py +6 -0
  34. airbyte_agent_greenhouse/_vendored/connector_sdk/performance/instrumentation.py +57 -0
  35. airbyte_agent_greenhouse/_vendored/connector_sdk/performance/metrics.py +93 -0
  36. airbyte_agent_greenhouse/_vendored/connector_sdk/schema/__init__.py +75 -0
  37. airbyte_agent_greenhouse/_vendored/connector_sdk/schema/base.py +164 -0
  38. airbyte_agent_greenhouse/_vendored/connector_sdk/schema/components.py +239 -0
  39. airbyte_agent_greenhouse/_vendored/connector_sdk/schema/connector.py +120 -0
  40. airbyte_agent_greenhouse/_vendored/connector_sdk/schema/extensions.py +230 -0
  41. airbyte_agent_greenhouse/_vendored/connector_sdk/schema/operations.py +146 -0
  42. airbyte_agent_greenhouse/_vendored/connector_sdk/schema/security.py +223 -0
  43. airbyte_agent_greenhouse/_vendored/connector_sdk/secrets.py +182 -0
  44. airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/__init__.py +10 -0
  45. airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/config.py +32 -0
  46. airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/events.py +59 -0
  47. airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/tracker.py +155 -0
  48. airbyte_agent_greenhouse/_vendored/connector_sdk/types.py +245 -0
  49. airbyte_agent_greenhouse/_vendored/connector_sdk/utils.py +60 -0
  50. airbyte_agent_greenhouse/_vendored/connector_sdk/validation.py +828 -0
  51. airbyte_agent_greenhouse/connector.py +1391 -0
  52. airbyte_agent_greenhouse/connector_model.py +2356 -0
  53. airbyte_agent_greenhouse/models.py +281 -0
  54. airbyte_agent_greenhouse/types.py +136 -0
  55. airbyte_agent_greenhouse-0.17.48.dist-info/METADATA +116 -0
  56. airbyte_agent_greenhouse-0.17.48.dist-info/RECORD +57 -0
  57. airbyte_agent_greenhouse-0.17.48.dist-info/WHEEL +4 -0
@@ -0,0 +1,281 @@
1
+ """
2
+ Pydantic models for greenhouse connector.
3
+
4
+ This module contains Pydantic models used for authentication configuration
5
+ and response envelope types.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from pydantic import BaseModel, ConfigDict, Field
11
+ from typing import TypeVar, Generic, Union, Any
12
+
13
+ # Authentication configuration
14
+
15
+ class GreenhouseAuthConfig(BaseModel):
16
+ """Harvest API Key Authentication"""
17
+
18
+ model_config = ConfigDict(extra="forbid")
19
+
20
+ api_key: str
21
+ """Your Greenhouse Harvest API Key from the Dev Center"""
22
+
23
+ # ===== RESPONSE TYPE DEFINITIONS (PYDANTIC) =====
24
+
25
+ class Attachment(BaseModel):
26
+ """File attachment (resume, cover letter, etc.)"""
27
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
28
+
29
+ filename: Union[str, Any] = Field(default=None)
30
+ url: Union[str, Any] = Field(default=None)
31
+ type: Union[str, Any] = Field(default=None)
32
+ created_at: Union[str, Any] = Field(default=None)
33
+
34
+ class Candidate(BaseModel):
35
+ """Greenhouse candidate object"""
36
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
37
+
38
+ id: Union[int, Any] = Field(default=None)
39
+ first_name: Union[str, Any] = Field(default=None)
40
+ last_name: Union[str, Any] = Field(default=None)
41
+ company: Union[str | None, Any] = Field(default=None)
42
+ title: Union[str | None, Any] = Field(default=None)
43
+ created_at: Union[str, Any] = Field(default=None)
44
+ updated_at: Union[str, Any] = Field(default=None)
45
+ last_activity: Union[str, Any] = Field(default=None)
46
+ is_private: Union[bool, Any] = Field(default=None)
47
+ photo_url: Union[str | None, Any] = Field(default=None)
48
+ attachments: Union[list[Attachment], Any] = Field(default=None)
49
+ application_ids: Union[list[int], Any] = Field(default=None)
50
+ phone_numbers: Union[list[dict[str, Any]], Any] = Field(default=None)
51
+ addresses: Union[list[dict[str, Any]], Any] = Field(default=None)
52
+ email_addresses: Union[list[dict[str, Any]], Any] = Field(default=None)
53
+ website_addresses: Union[list[dict[str, Any]], Any] = Field(default=None)
54
+ social_media_addresses: Union[list[dict[str, Any]], Any] = Field(default=None)
55
+ recruiter: Union[dict[str, Any] | None, Any] = Field(default=None)
56
+ coordinator: Union[dict[str, Any] | None, Any] = Field(default=None)
57
+ can_email: Union[bool, Any] = Field(default=None)
58
+ tags: Union[list[str], Any] = Field(default=None)
59
+ custom_fields: Union[dict[str, Any], Any] = Field(default=None)
60
+
61
+ class Application(BaseModel):
62
+ """Greenhouse application object"""
63
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
64
+
65
+ id: Union[int, Any] = Field(default=None)
66
+ candidate_id: Union[int, Any] = Field(default=None)
67
+ prospect: Union[bool, Any] = Field(default=None)
68
+ applied_at: Union[str, Any] = Field(default=None)
69
+ rejected_at: Union[str | None, Any] = Field(default=None)
70
+ last_activity_at: Union[str, Any] = Field(default=None)
71
+ location: Union[dict[str, Any] | None, Any] = Field(default=None)
72
+ source: Union[dict[str, Any], Any] = Field(default=None)
73
+ credited_to: Union[dict[str, Any], Any] = Field(default=None)
74
+ rejection_reason: Union[dict[str, Any] | None, Any] = Field(default=None)
75
+ rejection_details: Union[dict[str, Any] | None, Any] = Field(default=None)
76
+ jobs: Union[list[dict[str, Any]], Any] = Field(default=None)
77
+ job_post_id: Union[int | None, Any] = Field(default=None)
78
+ status: Union[str, Any] = Field(default=None)
79
+ current_stage: Union[dict[str, Any] | None, Any] = Field(default=None)
80
+ answers: Union[list[dict[str, Any]], Any] = Field(default=None)
81
+ prospective_office: Union[dict[str, Any] | None, Any] = Field(default=None)
82
+ prospective_department: Union[dict[str, Any] | None, Any] = Field(default=None)
83
+ prospect_detail: Union[dict[str, Any], Any] = Field(default=None)
84
+ attachments: Union[list[Attachment], Any] = Field(default=None)
85
+ custom_fields: Union[dict[str, Any], Any] = Field(default=None)
86
+
87
+ class Job(BaseModel):
88
+ """Greenhouse job object"""
89
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
90
+
91
+ id: Union[int, Any] = Field(default=None)
92
+ name: Union[str, Any] = Field(default=None)
93
+ requisition_id: Union[str | None, Any] = Field(default=None)
94
+ notes: Union[str | None, Any] = Field(default=None)
95
+ confidential: Union[bool, Any] = Field(default=None)
96
+ status: Union[str, Any] = Field(default=None)
97
+ created_at: Union[str, Any] = Field(default=None)
98
+ opened_at: Union[str, Any] = Field(default=None)
99
+ closed_at: Union[str | None, Any] = Field(default=None)
100
+ updated_at: Union[str, Any] = Field(default=None)
101
+ departments: Union[list[dict[str, Any] | None], Any] = Field(default=None)
102
+ offices: Union[list[dict[str, Any]], Any] = Field(default=None)
103
+ custom_fields: Union[dict[str, Any], Any] = Field(default=None)
104
+ hiring_team: Union[dict[str, Any], Any] = Field(default=None)
105
+ openings: Union[list[dict[str, Any]], Any] = Field(default=None)
106
+
107
+ class Offer(BaseModel):
108
+ """Greenhouse offer object"""
109
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
110
+
111
+ id: Union[int, Any] = Field(default=None)
112
+ version: Union[int, Any] = Field(default=None)
113
+ application_id: Union[int, Any] = Field(default=None)
114
+ job_id: Union[int, Any] = Field(default=None)
115
+ candidate_id: Union[int, Any] = Field(default=None)
116
+ opening: Union[dict[str, Any] | None, Any] = Field(default=None)
117
+ created_at: Union[str, Any] = Field(default=None)
118
+ updated_at: Union[str, Any] = Field(default=None)
119
+ sent_at: Union[str | None, Any] = Field(default=None)
120
+ resolved_at: Union[str | None, Any] = Field(default=None)
121
+ starts_at: Union[str | None, Any] = Field(default=None)
122
+ status: Union[str, Any] = Field(default=None)
123
+ custom_fields: Union[dict[str, Any], Any] = Field(default=None)
124
+
125
+ class User(BaseModel):
126
+ """Greenhouse user object"""
127
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
128
+
129
+ id: Union[int, Any] = Field(default=None)
130
+ name: Union[str, Any] = Field(default=None)
131
+ first_name: Union[str, Any] = Field(default=None)
132
+ last_name: Union[str, Any] = Field(default=None)
133
+ primary_email_address: Union[str, Any] = Field(default=None)
134
+ updated_at: Union[str, Any] = Field(default=None)
135
+ created_at: Union[str, Any] = Field(default=None)
136
+ disabled: Union[bool, Any] = Field(default=None)
137
+ site_admin: Union[bool, Any] = Field(default=None)
138
+ emails: Union[list[str], Any] = Field(default=None)
139
+ employee_id: Union[str | None, Any] = Field(default=None)
140
+ linked_candidate_ids: Union[list[int], Any] = Field(default=None)
141
+ offices: Union[list[dict[str, Any]], Any] = Field(default=None)
142
+ departments: Union[list[dict[str, Any]], Any] = Field(default=None)
143
+
144
+ class Department(BaseModel):
145
+ """Greenhouse department object"""
146
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
147
+
148
+ id: Union[int, Any] = Field(default=None)
149
+ name: Union[str, Any] = Field(default=None)
150
+ parent_id: Union[int | None, Any] = Field(default=None)
151
+ parent_department_external_id: Union[str | None, Any] = Field(default=None)
152
+ child_ids: Union[list[int], Any] = Field(default=None)
153
+ child_department_external_ids: Union[list[str], Any] = Field(default=None)
154
+ external_id: Union[str | None, Any] = Field(default=None)
155
+
156
+ class Office(BaseModel):
157
+ """Greenhouse office object"""
158
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
159
+
160
+ id: Union[int, Any] = Field(default=None)
161
+ name: Union[str, Any] = Field(default=None)
162
+ location: Union[dict[str, Any] | None, Any] = Field(default=None)
163
+ primary_contact_user_id: Union[int | None, Any] = Field(default=None)
164
+ parent_id: Union[int | None, Any] = Field(default=None)
165
+ parent_office_external_id: Union[str | None, Any] = Field(default=None)
166
+ child_ids: Union[list[int], Any] = Field(default=None)
167
+ child_office_external_ids: Union[list[str], Any] = Field(default=None)
168
+ external_id: Union[str | None, Any] = Field(default=None)
169
+
170
+ class JobPost(BaseModel):
171
+ """Greenhouse job post object"""
172
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
173
+
174
+ id: Union[int, Any] = Field(default=None)
175
+ title: Union[str, Any] = Field(default=None)
176
+ location: Union[dict[str, Any] | None, Any] = Field(default=None)
177
+ internal: Union[bool, Any] = Field(default=None)
178
+ external: Union[bool, Any] = Field(default=None)
179
+ active: Union[bool, Any] = Field(default=None)
180
+ live: Union[bool, Any] = Field(default=None)
181
+ first_published_at: Union[str | None, Any] = Field(default=None)
182
+ job_id: Union[int, Any] = Field(default=None)
183
+ content: Union[str | None, Any] = Field(default=None)
184
+ internal_content: Union[str | None, Any] = Field(default=None)
185
+ updated_at: Union[str, Any] = Field(default=None)
186
+ created_at: Union[str, Any] = Field(default=None)
187
+ demographic_question_set_id: Union[int | None, Any] = Field(default=None)
188
+ questions: Union[list[dict[str, Any]], Any] = Field(default=None)
189
+
190
+ class Source(BaseModel):
191
+ """Greenhouse source object"""
192
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
193
+
194
+ id: Union[int, Any] = Field(default=None)
195
+ name: Union[str, Any] = Field(default=None)
196
+ type: Union[dict[str, Any] | None, Any] = Field(default=None)
197
+
198
+ class ScheduledInterview(BaseModel):
199
+ """Greenhouse scheduled interview object"""
200
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
201
+
202
+ id: Union[int, Any] = Field(default=None)
203
+ application_id: Union[int, Any] = Field(default=None)
204
+ external_event_id: Union[str | None, Any] = Field(default=None)
205
+ created_at: Union[str, Any] = Field(default=None)
206
+ updated_at: Union[str, Any] = Field(default=None)
207
+ start: Union[dict[str, Any] | None, Any] = Field(default=None)
208
+ end: Union[dict[str, Any] | None, Any] = Field(default=None)
209
+ location: Union[str | None, Any] = Field(default=None)
210
+ video_conferencing_url: Union[str | None, Any] = Field(default=None)
211
+ status: Union[str, Any] = Field(default=None)
212
+ interview: Union[dict[str, Any] | None, Any] = Field(default=None)
213
+ organizer: Union[dict[str, Any] | None, Any] = Field(default=None)
214
+ interviewers: Union[list[dict[str, Any]], Any] = Field(default=None)
215
+
216
+ # ===== METADATA TYPE DEFINITIONS (PYDANTIC) =====
217
+ # Meta types for operations that extract metadata (e.g., pagination info)
218
+
219
+ # ===== RESPONSE ENVELOPE MODELS =====
220
+
221
+ # Type variables for generic envelope models
222
+ T = TypeVar('T')
223
+ S = TypeVar('S')
224
+
225
+
226
+ class GreenhouseExecuteResult(BaseModel, Generic[T]):
227
+ """Response envelope with data only.
228
+
229
+ Used for actions that return data without metadata.
230
+ """
231
+ model_config = ConfigDict(extra="forbid")
232
+
233
+ data: T
234
+ """Response data containing the result of the action."""
235
+
236
+
237
+ class GreenhouseExecuteResultWithMeta(GreenhouseExecuteResult[T], Generic[T, S]):
238
+ """Response envelope with data and metadata.
239
+
240
+ Used for actions that return both data and metadata (e.g., pagination info).
241
+ """
242
+ meta: S
243
+ """Metadata about the response (e.g., pagination cursors, record counts)."""
244
+
245
+
246
+
247
+ # ===== OPERATION RESULT TYPE ALIASES =====
248
+
249
+ # Concrete type aliases for each operation result.
250
+ # These provide simpler, more readable type annotations than using the generic forms.
251
+
252
+ CandidatesListResult = GreenhouseExecuteResult[list[Candidate]]
253
+ """Result type for candidates.list operation."""
254
+
255
+ ApplicationsListResult = GreenhouseExecuteResult[list[Application]]
256
+ """Result type for applications.list operation."""
257
+
258
+ JobsListResult = GreenhouseExecuteResult[list[Job]]
259
+ """Result type for jobs.list operation."""
260
+
261
+ OffersListResult = GreenhouseExecuteResult[list[Offer]]
262
+ """Result type for offers.list operation."""
263
+
264
+ UsersListResult = GreenhouseExecuteResult[list[User]]
265
+ """Result type for users.list operation."""
266
+
267
+ DepartmentsListResult = GreenhouseExecuteResult[list[Department]]
268
+ """Result type for departments.list operation."""
269
+
270
+ OfficesListResult = GreenhouseExecuteResult[list[Office]]
271
+ """Result type for offices.list operation."""
272
+
273
+ JobPostsListResult = GreenhouseExecuteResult[list[JobPost]]
274
+ """Result type for job_posts.list operation."""
275
+
276
+ SourcesListResult = GreenhouseExecuteResult[list[Source]]
277
+ """Result type for sources.list operation."""
278
+
279
+ ScheduledInterviewsListResult = GreenhouseExecuteResult[list[ScheduledInterview]]
280
+ """Result type for scheduled_interviews.list operation."""
281
+
@@ -0,0 +1,136 @@
1
+ """
2
+ Type definitions for greenhouse connector.
3
+ """
4
+ from __future__ import annotations
5
+
6
+ # Use typing_extensions.TypedDict for Pydantic compatibility
7
+ try:
8
+ from typing_extensions import TypedDict, NotRequired
9
+ except ImportError:
10
+ from typing import TypedDict, NotRequired # type: ignore[attr-defined]
11
+
12
+
13
+
14
+ # ===== NESTED PARAM TYPE DEFINITIONS =====
15
+ # Nested parameter schemas discovered during parameter extraction
16
+
17
+ # ===== OPERATION PARAMS TYPE DEFINITIONS =====
18
+
19
+ class CandidatesListParams(TypedDict):
20
+ """Parameters for candidates.list operation"""
21
+ per_page: NotRequired[int]
22
+ page: NotRequired[int]
23
+
24
+ class CandidatesGetParams(TypedDict):
25
+ """Parameters for candidates.get operation"""
26
+ id: str
27
+
28
+ class ApplicationsListParams(TypedDict):
29
+ """Parameters for applications.list operation"""
30
+ per_page: NotRequired[int]
31
+ page: NotRequired[int]
32
+ created_before: NotRequired[str]
33
+ created_after: NotRequired[str]
34
+ last_activity_after: NotRequired[str]
35
+ job_id: NotRequired[int]
36
+ status: NotRequired[str]
37
+
38
+ class ApplicationsGetParams(TypedDict):
39
+ """Parameters for applications.get operation"""
40
+ id: str
41
+
42
+ class JobsListParams(TypedDict):
43
+ """Parameters for jobs.list operation"""
44
+ per_page: NotRequired[int]
45
+ page: NotRequired[int]
46
+
47
+ class JobsGetParams(TypedDict):
48
+ """Parameters for jobs.get operation"""
49
+ id: str
50
+
51
+ class OffersListParams(TypedDict):
52
+ """Parameters for offers.list operation"""
53
+ per_page: NotRequired[int]
54
+ page: NotRequired[int]
55
+ created_before: NotRequired[str]
56
+ created_after: NotRequired[str]
57
+ resolved_after: NotRequired[str]
58
+
59
+ class OffersGetParams(TypedDict):
60
+ """Parameters for offers.get operation"""
61
+ id: str
62
+
63
+ class UsersListParams(TypedDict):
64
+ """Parameters for users.list operation"""
65
+ per_page: NotRequired[int]
66
+ page: NotRequired[int]
67
+ created_before: NotRequired[str]
68
+ created_after: NotRequired[str]
69
+ updated_before: NotRequired[str]
70
+ updated_after: NotRequired[str]
71
+
72
+ class UsersGetParams(TypedDict):
73
+ """Parameters for users.get operation"""
74
+ id: str
75
+
76
+ class DepartmentsListParams(TypedDict):
77
+ """Parameters for departments.list operation"""
78
+ per_page: NotRequired[int]
79
+ page: NotRequired[int]
80
+
81
+ class DepartmentsGetParams(TypedDict):
82
+ """Parameters for departments.get operation"""
83
+ id: str
84
+
85
+ class OfficesListParams(TypedDict):
86
+ """Parameters for offices.list operation"""
87
+ per_page: NotRequired[int]
88
+ page: NotRequired[int]
89
+
90
+ class OfficesGetParams(TypedDict):
91
+ """Parameters for offices.get operation"""
92
+ id: str
93
+
94
+ class JobPostsListParams(TypedDict):
95
+ """Parameters for job_posts.list operation"""
96
+ per_page: NotRequired[int]
97
+ page: NotRequired[int]
98
+ live: NotRequired[bool]
99
+ active: NotRequired[bool]
100
+
101
+ class JobPostsGetParams(TypedDict):
102
+ """Parameters for job_posts.get operation"""
103
+ id: str
104
+
105
+ class SourcesListParams(TypedDict):
106
+ """Parameters for sources.list operation"""
107
+ per_page: NotRequired[int]
108
+ page: NotRequired[int]
109
+
110
+ class ScheduledInterviewsListParams(TypedDict):
111
+ """Parameters for scheduled_interviews.list operation"""
112
+ per_page: NotRequired[int]
113
+ page: NotRequired[int]
114
+ created_before: NotRequired[str]
115
+ created_after: NotRequired[str]
116
+ updated_before: NotRequired[str]
117
+ updated_after: NotRequired[str]
118
+ starts_after: NotRequired[str]
119
+ ends_before: NotRequired[str]
120
+
121
+ class ScheduledInterviewsGetParams(TypedDict):
122
+ """Parameters for scheduled_interviews.get operation"""
123
+ id: str
124
+
125
+ class ApplicationAttachmentDownloadParams(TypedDict):
126
+ """Parameters for application_attachment.download operation"""
127
+ id: str
128
+ attachment_index: str
129
+ range_header: NotRequired[str]
130
+
131
+ class CandidateAttachmentDownloadParams(TypedDict):
132
+ """Parameters for candidate_attachment.download operation"""
133
+ id: str
134
+ attachment_index: str
135
+ range_header: NotRequired[str]
136
+
@@ -0,0 +1,116 @@
1
+ Metadata-Version: 2.4
2
+ Name: airbyte-agent-greenhouse
3
+ Version: 0.17.48
4
+ Summary: Airbyte Greenhouse Connector for AI platforms
5
+ Project-URL: Homepage, https://github.com/airbytehq/airbyte-agent-connectors
6
+ Project-URL: Documentation, https://docs.airbyte.com/ai-agents/
7
+ Project-URL: Repository, https://github.com/airbytehq/airbyte-agent-connectors
8
+ Project-URL: Issues, https://github.com/airbytehq/airbyte-agent-connectors/issues
9
+ Author-email: Airbyte <contact@airbyte.io>
10
+ License: Elastic-2.0
11
+ Keywords: agent,ai,airbyte,api,connector,data-integration,greenhouse,llm,mcp
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: Other/Proprietary License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.13
22
+ Requires-Dist: httpx>=0.24.0
23
+ Requires-Dist: jinja2>=3.0.0
24
+ Requires-Dist: jsonpath-ng>=1.6.1
25
+ Requires-Dist: jsonref>=1.1.0
26
+ Requires-Dist: opentelemetry-api>=1.37.0
27
+ Requires-Dist: opentelemetry-sdk>=1.37.0
28
+ Requires-Dist: pydantic>=2.0.0
29
+ Requires-Dist: python-dotenv>=1.0.0
30
+ Requires-Dist: pyyaml>=6.0
31
+ Requires-Dist: segment-analytics-python>=2.2.0
32
+ Description-Content-Type: text/markdown
33
+
34
+ # Greenhouse agent connector
35
+
36
+ Greenhouse is an applicant tracking system (ATS) that helps companies manage their
37
+ hiring process. This connector provides access to candidates, applications, jobs,
38
+ offers, users, departments, offices, job posts, sources, and scheduled interviews
39
+ for recruiting analytics and talent acquisition insights.
40
+
41
+
42
+ ## Example questions
43
+
44
+ The Greenhouse connector is optimized to handle prompts like these.
45
+
46
+ - Show me candidates from \{company\} who applied last month
47
+ - What are the top 5 sources for our job applications this quarter?
48
+ - List all open jobs in the Sales department
49
+ - Analyze the interview schedules for our engineering candidates this week
50
+ - Get details of recent job offers for \{team_member\}
51
+ - Compare the number of applications across different offices
52
+ - Identify candidates who have multiple applications in our system
53
+ - Show me upcoming scheduled interviews for our marketing positions
54
+ - Summarize the candidate pipeline for our latest job posting
55
+ - Find the most active departments in recruiting this month
56
+
57
+ ## Unsupported questions
58
+
59
+ The Greenhouse connector isn't currently able to handle prompts like these.
60
+
61
+ - Create a new job posting for the marketing team
62
+ - Schedule an interview for \{candidate\}
63
+ - Update the status of \{candidate\}'s application
64
+ - Delete a candidate profile
65
+ - Send an offer letter to \{candidate\}
66
+ - Edit the details of a job description
67
+
68
+ ## Installation
69
+
70
+ ```bash
71
+ uv pip install airbyte-agent-greenhouse
72
+ ```
73
+
74
+ ## Usage
75
+
76
+ ```python
77
+ from airbyte_agent_greenhouse import GreenhouseConnector, GreenhouseAuthConfig
78
+
79
+ connector = GreenhouseConnector(
80
+ auth_config=GreenhouseAuthConfig(
81
+ api_key="..."
82
+ )
83
+ )
84
+ result = await connector.candidates.list()
85
+ ```
86
+
87
+
88
+ ## Full documentation
89
+
90
+ This connector supports the following entities and actions.
91
+
92
+ | Entity | Actions |
93
+ |--------|---------|
94
+ | Candidates | [List](./REFERENCE.md#candidates-list), [Get](./REFERENCE.md#candidates-get) |
95
+ | Applications | [List](./REFERENCE.md#applications-list), [Get](./REFERENCE.md#applications-get) |
96
+ | Jobs | [List](./REFERENCE.md#jobs-list), [Get](./REFERENCE.md#jobs-get) |
97
+ | Offers | [List](./REFERENCE.md#offers-list), [Get](./REFERENCE.md#offers-get) |
98
+ | Users | [List](./REFERENCE.md#users-list), [Get](./REFERENCE.md#users-get) |
99
+ | Departments | [List](./REFERENCE.md#departments-list), [Get](./REFERENCE.md#departments-get) |
100
+ | Offices | [List](./REFERENCE.md#offices-list), [Get](./REFERENCE.md#offices-get) |
101
+ | Job Posts | [List](./REFERENCE.md#job-posts-list), [Get](./REFERENCE.md#job-posts-get) |
102
+ | Sources | [List](./REFERENCE.md#sources-list) |
103
+ | Scheduled Interviews | [List](./REFERENCE.md#scheduled-interviews-list), [Get](./REFERENCE.md#scheduled-interviews-get) |
104
+ | Application Attachment | [Download](./REFERENCE.md#application-attachment-download) |
105
+ | Candidate Attachment | [Download](./REFERENCE.md#candidate-attachment-download) |
106
+
107
+
108
+ For detailed documentation on available actions and parameters, see this connector's [full reference documentation](./REFERENCE.md).
109
+
110
+ For the service's official API docs, see the [Greenhouse API reference](https://developers.greenhouse.io/harvest.html).
111
+
112
+ ## Version information
113
+
114
+ - **Package version:** 0.17.48
115
+ - **Connector version:** 0.1.2
116
+ - **Generated with Connector SDK commit SHA:** c46670b9e4ca5238c0372e143b44088a0d1a68ee
@@ -0,0 +1,57 @@
1
+ airbyte_agent_greenhouse/__init__.py,sha256=5uhqjwSB0X7tFuKwIjdnjMXQ6VsWrbX6NLkoVgtdUyk,2402
2
+ airbyte_agent_greenhouse/connector.py,sha256=u7rMNnIK9mIm-ePOnaaWBF2JnC90uL11jYPpXp7Qu1o,41943
3
+ airbyte_agent_greenhouse/connector_model.py,sha256=WwfFmPW6a0swSvmmRaattuG2myZpC9VjDImFA-mwkD4,123331
4
+ airbyte_agent_greenhouse/models.py,sha256=zZXLU-u4DMcMIa-pojQNgHdVf_pj1oh3V890Yxcraks,12455
5
+ airbyte_agent_greenhouse/types.py,sha256=QP2fSEm_yNTo0iamwMXkrs4_bw8Ud6sPV9mjqeWwm-I,3922
6
+ airbyte_agent_greenhouse/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
7
+ airbyte_agent_greenhouse/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
8
+ airbyte_agent_greenhouse/_vendored/connector_sdk/auth_strategies.py,sha256=BdjAzFRTwXCmLFqYWqZ4Dx9RsqtI7pAkw-8NynSK4sQ,39914
9
+ airbyte_agent_greenhouse/_vendored/connector_sdk/auth_template.py,sha256=nju4jqlFC_KI82ILNumNIyiUtRJcy7J94INIZ0QraI4,4454
10
+ airbyte_agent_greenhouse/_vendored/connector_sdk/connector_model_loader.py,sha256=b88aoMynHxtG2dhzclkWrLiJbefTiKMzReyj3lOiwJI,34940
11
+ airbyte_agent_greenhouse/_vendored/connector_sdk/constants.py,sha256=AtzOvhDMWbRJgpsQNWl5tkogHD6mWgEY668PgRmgtOY,2737
12
+ airbyte_agent_greenhouse/_vendored/connector_sdk/exceptions.py,sha256=ss5MGv9eVPmsbLcLWetuu3sDmvturwfo6Pw3M37Oq5k,481
13
+ airbyte_agent_greenhouse/_vendored/connector_sdk/extensions.py,sha256=XWRRoJOOrwUHSKbuQt5DU7CCu8ePzhd_HuP7c_uD77w,21376
14
+ airbyte_agent_greenhouse/_vendored/connector_sdk/http_client.py,sha256=yucwu3OvJh5wLQa1mk-gTKjtqjKKucMw5ltmlE7mk1c,28000
15
+ airbyte_agent_greenhouse/_vendored/connector_sdk/introspection.py,sha256=2CyKXZHT74-1Id97uw1RLeyOi6TV24_hoNbQ6-6y7uI,10335
16
+ airbyte_agent_greenhouse/_vendored/connector_sdk/secrets.py,sha256=J9ezMu4xNnLW11xY5RCre6DHP7YMKZCqwGJfk7ufHAM,6855
17
+ airbyte_agent_greenhouse/_vendored/connector_sdk/types.py,sha256=CStkOsLtmZZdXylkdCsbYORDzughxygt1-Ucma0j-qE,8287
18
+ airbyte_agent_greenhouse/_vendored/connector_sdk/utils.py,sha256=G4LUXOC2HzPoND2v4tQW68R9uuPX9NQyCjaGxb7Kpl0,1958
19
+ airbyte_agent_greenhouse/_vendored/connector_sdk/validation.py,sha256=4MPrxYmQh8TbCU0KdvvRKe35Lg1YYLEBd0u4aKySl_E,32122
20
+ airbyte_agent_greenhouse/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=4799Hv9f2zxDVj1aLyQ8JpTEuFTp_oOZMRz-NZCdBJg,134
21
+ airbyte_agent_greenhouse/_vendored/connector_sdk/cloud_utils/client.py,sha256=YxdRpQr9XjDzih6csSseBVGn9kfMtaqbOCXP0TPuzFY,7189
22
+ airbyte_agent_greenhouse/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
23
+ airbyte_agent_greenhouse/_vendored/connector_sdk/executor/hosted_executor.py,sha256=ydHcG-biRS1ITT5ELwPShdJW-KYpvK--Fos1ipNgHho,6995
24
+ airbyte_agent_greenhouse/_vendored/connector_sdk/executor/local_executor.py,sha256=oJDliuS7zU8GILJUjn7T_WNIu25sy5serJHxhnBKyB8,71411
25
+ airbyte_agent_greenhouse/_vendored/connector_sdk/executor/models.py,sha256=lYVT_bNcw-PoIks4WHNyl2VY-lJVf2FntzINSOBIheE,5845
26
+ airbyte_agent_greenhouse/_vendored/connector_sdk/http/__init__.py,sha256=y8fbzZn-3yV9OxtYz8Dy6FFGI5v6TOqADd1G3xHH3Hw,911
27
+ airbyte_agent_greenhouse/_vendored/connector_sdk/http/config.py,sha256=6J7YIIwHC6sRu9i-yKa5XvArwK2KU60rlnmxzDZq3lw,3283
28
+ airbyte_agent_greenhouse/_vendored/connector_sdk/http/exceptions.py,sha256=eYdYmxqcwA6pgrSoRXNfR6_nRBGRH6upp2-r1jcKaZo,3586
29
+ airbyte_agent_greenhouse/_vendored/connector_sdk/http/protocols.py,sha256=eV7NbBIQOcPLw-iu8mtkV2zCVgScDwP0ek1SbPNQo0g,3323
30
+ airbyte_agent_greenhouse/_vendored/connector_sdk/http/response.py,sha256=Q-RyM5D0D05ZhmZVJk4hVpmoS8YtyXNOTM5hqBt7rWI,3475
31
+ airbyte_agent_greenhouse/_vendored/connector_sdk/http/adapters/__init__.py,sha256=gjbWdU4LfzUG2PETI0TkfkukdzoCAhpL6FZtIEnkO-s,209
32
+ airbyte_agent_greenhouse/_vendored/connector_sdk/http/adapters/httpx_adapter.py,sha256=dkYhzBWiKBmzWZlc-cRTx50Hb6fy3OI8kOQvXRfS1CQ,8465
33
+ airbyte_agent_greenhouse/_vendored/connector_sdk/logging/__init__.py,sha256=IZoE5yXhwSA0m3xQqh0FiCifjp1sB3S8jnnFPuJLYf8,227
34
+ airbyte_agent_greenhouse/_vendored/connector_sdk/logging/logger.py,sha256=rUdKDEQe3pOODmBLEcvhgZeEZi48BvrgKXKq1xvCXu0,8387
35
+ airbyte_agent_greenhouse/_vendored/connector_sdk/logging/types.py,sha256=ONb9xKNXUkrR2lojSBMF7ruof7S2r92WjrO_kEZic84,3239
36
+ airbyte_agent_greenhouse/_vendored/connector_sdk/observability/__init__.py,sha256=ojx1n9vaWCXFFvb3-90Pwtg845trFdV2v6wcCoO75Ko,269
37
+ airbyte_agent_greenhouse/_vendored/connector_sdk/observability/config.py,sha256=uWvRAPHnEusVKviQQncqcpnHKNhoZ4ZoFK6nUOSVClY,5372
38
+ airbyte_agent_greenhouse/_vendored/connector_sdk/observability/models.py,sha256=IRGjlJia28_IU7BMSBb5RHWs47yAOLvE20JIIXHazLY,448
39
+ airbyte_agent_greenhouse/_vendored/connector_sdk/observability/redactor.py,sha256=HRbSwGxsfQYbYlG4QBVvv8Qnw0d4SMowMv0dTFHsHqQ,2361
40
+ airbyte_agent_greenhouse/_vendored/connector_sdk/observability/session.py,sha256=WYRIB3bVz9HhpElkUO9CILCRIrWs9p2MR2hmf8uJm3E,3086
41
+ airbyte_agent_greenhouse/_vendored/connector_sdk/performance/__init__.py,sha256=Sp5fSd1LvtIQkv-fnrKqPsM7-6IWp0sSZSK0mhzal_A,200
42
+ airbyte_agent_greenhouse/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
43
+ airbyte_agent_greenhouse/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
44
+ airbyte_agent_greenhouse/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
45
+ airbyte_agent_greenhouse/_vendored/connector_sdk/schema/base.py,sha256=4RYTkCWgyS5Z75z9TKj9vXySfO00HJ03QDtbdVYeHYM,5086
46
+ airbyte_agent_greenhouse/_vendored/connector_sdk/schema/components.py,sha256=x3YCM1p2n_xHi50fMeOX0mXUiPqjGlLHs3Go8jXokb0,7895
47
+ airbyte_agent_greenhouse/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
48
+ airbyte_agent_greenhouse/_vendored/connector_sdk/schema/extensions.py,sha256=f7VhHrcIYxaPOJHMc4g0lpy04pZTbx5nlroNzAu5B9Q,7135
49
+ airbyte_agent_greenhouse/_vendored/connector_sdk/schema/operations.py,sha256=RpzGtAI4yvAtMHAfMUMcUwgHv_qJojnKlNb75_agUF8,5729
50
+ airbyte_agent_greenhouse/_vendored/connector_sdk/schema/security.py,sha256=zQ9RRuF3LBgLQi_4cItmjXbG_5WKlmCNM3nCil30H90,8470
51
+ airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
52
+ airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
53
+ airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
54
+ airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/tracker.py,sha256=Ftrk0_ddfM7dZG8hF9xBuPwhbc9D6JZ7Q9qs5o3LEyA,5579
55
+ airbyte_agent_greenhouse-0.17.48.dist-info/METADATA,sha256=1d2a_bL-YWUR4hAWFqCjkrD6AeOmxKiQa53X0AY5w1w,4769
56
+ airbyte_agent_greenhouse-0.17.48.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
+ airbyte_agent_greenhouse-0.17.48.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any