airbyte-agent-gitlab 0.1.0__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 (67) hide show
  1. airbyte_agent_gitlab-0.1.0/.gitignore +34 -0
  2. airbyte_agent_gitlab-0.1.0/AUTH.md +223 -0
  3. airbyte_agent_gitlab-0.1.0/CHANGELOG.md +6 -0
  4. airbyte_agent_gitlab-0.1.0/PKG-INFO +159 -0
  5. airbyte_agent_gitlab-0.1.0/README.md +126 -0
  6. airbyte_agent_gitlab-0.1.0/REFERENCE.md +3627 -0
  7. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/__init__.py +285 -0
  8. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/__init__.py +1 -0
  9. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/__init__.py +83 -0
  10. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/auth_strategies.py +1171 -0
  11. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/auth_template.py +135 -0
  12. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
  13. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/cloud_utils/client.py +454 -0
  14. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/connector_model_loader.py +1053 -0
  15. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/constants.py +78 -0
  16. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/exceptions.py +23 -0
  17. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/executor/__init__.py +31 -0
  18. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/executor/hosted_executor.py +242 -0
  19. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/executor/local_executor.py +1885 -0
  20. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/executor/models.py +202 -0
  21. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/extensions.py +693 -0
  22. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/__init__.py +37 -0
  23. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
  24. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/adapters/httpx_adapter.py +258 -0
  25. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/config.py +98 -0
  26. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/exceptions.py +119 -0
  27. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/protocols.py +114 -0
  28. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/response.py +118 -0
  29. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http_client.py +719 -0
  30. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/introspection.py +493 -0
  31. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/logging/__init__.py +11 -0
  32. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/logging/logger.py +273 -0
  33. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/logging/types.py +93 -0
  34. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/__init__.py +11 -0
  35. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/config.py +179 -0
  36. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/models.py +19 -0
  37. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/redactor.py +81 -0
  38. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/session.py +103 -0
  39. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/performance/__init__.py +6 -0
  40. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/performance/instrumentation.py +57 -0
  41. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/performance/metrics.py +93 -0
  42. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/__init__.py +71 -0
  43. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/base.py +256 -0
  44. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/components.py +244 -0
  45. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/connector.py +120 -0
  46. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/extensions.py +281 -0
  47. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/operations.py +159 -0
  48. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/security.py +305 -0
  49. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/secrets.py +182 -0
  50. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/telemetry/__init__.py +10 -0
  51. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/telemetry/config.py +32 -0
  52. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/telemetry/events.py +59 -0
  53. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/telemetry/tracker.py +155 -0
  54. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/types.py +346 -0
  55. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/utils.py +127 -0
  56. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/__init__.py +38 -0
  57. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/cache.py +169 -0
  58. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/manifest.py +115 -0
  59. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/models.py +17 -0
  60. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/overview.py +1005 -0
  61. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/readiness.py +1047 -0
  62. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/replication.py +1549 -0
  63. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/connector.py +3243 -0
  64. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/connector_model.py +5306 -0
  65. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/models.py +1367 -0
  66. airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/types.py +4952 -0
  67. airbyte_agent_gitlab-0.1.0/pyproject.toml +50 -0
@@ -0,0 +1,34 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .eggs/
9
+
10
+ # Testing
11
+ .pytest_cache/
12
+ .coverage
13
+ htmlcov/
14
+
15
+ # Virtual environments
16
+ .venv/
17
+ venv/
18
+
19
+ # IDE
20
+ .idea/
21
+ .vscode/
22
+ *.swp
23
+
24
+ # OS
25
+ .DS_Store
26
+ Thumbs.db
27
+
28
+ .env
29
+ configured_connectors.yaml
30
+
31
+ # Claude Code development symlink
32
+ # Contributors: Create this symlink locally for skill testing
33
+ # mkdir -p .claude/skills && ln -s ../../skills/airbyte-agent-connectors .claude/skills/airbyte-agent-connectors
34
+ .claude/skills/airbyte-agent-connectors
@@ -0,0 +1,223 @@
1
+ # Gitlab authentication
2
+
3
+ This page documents the authentication and configuration options for the Gitlab agent connector.
4
+
5
+ ## Authentication
6
+
7
+ ### Open source execution
8
+
9
+ In open source mode, you provide API credentials directly to the connector.
10
+
11
+ #### OAuth
12
+
13
+ `credentials` fields you need:
14
+
15
+
16
+ | Field Name | Type | Required | Description |
17
+ |------------|------|----------|-------------|
18
+ | `client_id` | `str` | Yes | The API ID of the GitLab developer application. |
19
+ | `client_secret` | `str` | Yes | The API Secret of the GitLab developer application. |
20
+ | `access_token` | `str` | Yes | Access Token for making authenticated requests. |
21
+ | `refresh_token` | `str` | Yes | The key to refresh the expired access token. |
22
+
23
+ Example request:
24
+
25
+ ```python
26
+ from airbyte_agent_gitlab import GitlabConnector
27
+ from airbyte_agent_gitlab.models import GitlabOauth20AuthConfig
28
+
29
+ connector = GitlabConnector(
30
+ auth_config=GitlabOauth20AuthConfig(
31
+ client_id="<The API ID of the GitLab developer application.>",
32
+ client_secret="<The API Secret of the GitLab developer application.>",
33
+ access_token="<Access Token for making authenticated requests.>",
34
+ refresh_token="<The key to refresh the expired access token.>"
35
+ )
36
+ )
37
+ ```
38
+
39
+ #### Token
40
+
41
+ `credentials` fields you need:
42
+
43
+ | Field Name | Type | Required | Description |
44
+ |------------|------|----------|-------------|
45
+ | `access_token` | `str` | Yes | Log into your GitLab account and generate a personal access token. |
46
+
47
+ Example request:
48
+
49
+ ```python
50
+ from airbyte_agent_gitlab import GitlabConnector
51
+ from airbyte_agent_gitlab.models import GitlabPersonalAccessTokenAuthConfig
52
+
53
+ connector = GitlabConnector(
54
+ auth_config=GitlabPersonalAccessTokenAuthConfig(
55
+ access_token="<Log into your GitLab account and generate a personal access token.>"
56
+ )
57
+ )
58
+ ```
59
+
60
+ ### Hosted execution
61
+
62
+ In hosted mode, you first create a connector via the Airbyte API (providing your OAuth or Token credentials), then execute operations using either the Python SDK or API. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/quickstarts/tutorial-hosted).
63
+
64
+ #### OAuth
65
+ Create a connector with OAuth credentials.
66
+
67
+ `credentials` fields you need:
68
+
69
+
70
+ | Field Name | Type | Required | Description |
71
+ |------------|------|----------|-------------|
72
+ | `client_id` | `str` | Yes | The API ID of the GitLab developer application. |
73
+ | `client_secret` | `str` | Yes | The API Secret of the GitLab developer application. |
74
+ | `access_token` | `str` | Yes | Access Token for making authenticated requests. |
75
+ | `refresh_token` | `str` | Yes | The key to refresh the expired access token. |
76
+
77
+ `replication_config` fields you need:
78
+
79
+ | Field Name | Type | Required | Description |
80
+ |------------|------|----------|-------------|
81
+ | `start_date` | `str (date-time)` | No | UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data. If not set, all data will be replicated. |
82
+
83
+ Example request:
84
+
85
+ ```bash
86
+ curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors" \
87
+ -H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
88
+ -H "Content-Type: application/json" \
89
+ -d '{
90
+ "customer_name": "<CUSTOMER_NAME>",
91
+ "connector_type": "Gitlab",
92
+ "name": "My Gitlab Connector",
93
+ "credentials": {
94
+ "client_id": "<The API ID of the GitLab developer application.>",
95
+ "client_secret": "<The API Secret of the GitLab developer application.>",
96
+ "access_token": "<Access Token for making authenticated requests.>",
97
+ "refresh_token": "<The key to refresh the expired access token.>"
98
+ },
99
+ "replication_config": {
100
+ "start_date": "<UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data. If not set, all data will be replicated.>"
101
+ }
102
+ }'
103
+ ```
104
+
105
+
106
+
107
+ #### Bring your own OAuth flow
108
+ To implement your own OAuth flow, use Airbyte's server-side OAuth API endpoints. For a complete guide, see [Build your own OAuth flow](https://docs.airbyte.com/ai-agents/platform/authenticate/build-auth/build-your-own).
109
+
110
+ ##### Step 1: Initiate the OAuth flow
111
+
112
+ Request a consent URL for your user.
113
+
114
+ | Field Name | Type | Required | Description |
115
+ |------------|------|----------|-------------|
116
+ | `customer_name` | `string` | Yes | Your unique identifier for the customer |
117
+ | `connector_type` | `string` | Yes | The connector type (e.g., "Gitlab") |
118
+ | `redirect_url` | `string` | Yes | URL to redirect to after OAuth authorization |
119
+
120
+ Example request:
121
+
122
+ ```bash
123
+ curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors/oauth/initiate" \
124
+ -H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
125
+ -H "Content-Type: application/json" \
126
+ -d '{
127
+ "customer_name": "<CUSTOMER_NAME>",
128
+ "connector_type": "Gitlab",
129
+ "redirect_url": "https://yourapp.com/oauth/callback"
130
+ }'
131
+ ```
132
+
133
+ Redirect your user to the `consent_url` from the response.
134
+
135
+ ##### Step 2: Handle the callback
136
+
137
+ After the user authorizes access, Airbyte automatically creates the connector and redirects them to your `redirect_url` with a `connector_id` query parameter. You don't need to make a separate API call to create the connector.
138
+
139
+ ```text
140
+ https://yourapp.com/oauth/callback?connector_id=<connector_id>
141
+ ```
142
+
143
+ Extract the `connector_id` from the callback URL and store it for future operations. For error handling and a complete implementation example, see [Build your own OAuth flow](https://docs.airbyte.com/ai-agents/platform/authenticate/build-auth/build-your-own#part-3-handle-the-callback).
144
+
145
+ #### Token
146
+ Create a connector with Token credentials.
147
+
148
+
149
+ `credentials` fields you need:
150
+
151
+ | Field Name | Type | Required | Description |
152
+ |------------|------|----------|-------------|
153
+ | `access_token` | `str` | Yes | Log into your GitLab account and generate a personal access token. |
154
+
155
+ `replication_config` fields you need:
156
+
157
+ | Field Name | Type | Required | Description |
158
+ |------------|------|----------|-------------|
159
+ | `start_date` | `str (date-time)` | No | UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data. If not set, all data will be replicated. |
160
+
161
+ Example request:
162
+
163
+
164
+ ```bash
165
+ curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors" \
166
+ -H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
167
+ -H "Content-Type: application/json" \
168
+ -d '{
169
+ "customer_name": "<CUSTOMER_NAME>",
170
+ "connector_type": "Gitlab",
171
+ "name": "My Gitlab Connector",
172
+ "credentials": {
173
+ "access_token": "<Log into your GitLab account and generate a personal access token.>"
174
+ },
175
+ "replication_config": {
176
+ "start_date": "<UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data. If not set, all data will be replicated.>"
177
+ }
178
+ }'
179
+ ```
180
+
181
+ #### Execution
182
+
183
+ After creating the connector, execute operations using either the Python SDK or API.
184
+ If your Airbyte client can access multiple organizations, include `organization_id` in `AirbyteAuthConfig` and `X-Organization-Id` in raw API calls.
185
+
186
+ **Python SDK**
187
+
188
+ ```python
189
+ from airbyte_agent_gitlab import GitlabConnector, AirbyteAuthConfig
190
+
191
+ connector = GitlabConnector(
192
+ auth_config=AirbyteAuthConfig(
193
+ customer_name="<your_customer_name>",
194
+ organization_id="<your_organization_id>", # Optional for multi-org clients
195
+ airbyte_client_id="<your-client-id>",
196
+ airbyte_client_secret="<your-client-secret>"
197
+ )
198
+ )
199
+
200
+ @agent.tool_plain # assumes you're using Pydantic AI
201
+ @GitlabConnector.tool_utils
202
+ async def gitlab_execute(entity: str, action: str, params: dict | None = None):
203
+ return await connector.execute(entity, action, params or {})
204
+ ```
205
+
206
+ **API**
207
+
208
+ ```bash
209
+ curl -X POST 'https://api.airbyte.ai/api/v1/integrations/connectors/<connector_id>/execute' \
210
+ -H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
211
+ -H 'X-Organization-Id: <YOUR_ORGANIZATION_ID>' \
212
+ -H 'Content-Type: application/json' \
213
+ -d '{"entity": "<entity>", "action": "<action>", "params": {}}'
214
+ ```
215
+
216
+
217
+ ## Configuration
218
+
219
+ The Gitlab connector requires the following configuration variables. These variables are used to construct the base API URL. Pass them via the `config` parameter when initializing the connector.
220
+
221
+ | Variable | Type | Required | Default | Description |
222
+ |----------|------|----------|---------|-------------|
223
+ | `api_url` | `string` | Yes | gitlab.com | GitLab instance hostname |
@@ -0,0 +1,6 @@
1
+ # Gitlab changelog
2
+
3
+ ## [0.1.0] - 2026-03-05
4
+ - Updated connector definition (YAML version 1.0.1)
5
+ - Source commit: 61c1d075
6
+ - SDK version: 0.1.0
@@ -0,0 +1,159 @@
1
+ Metadata-Version: 2.4
2
+ Name: airbyte-agent-gitlab
3
+ Version: 0.1.0
4
+ Summary: Airbyte Gitlab 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,gitlab,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
+ # Gitlab
35
+
36
+ The Gitlab agent connector is a Python package that equips AI agents to interact with Gitlab through strongly typed, well-documented tools. It's ready to use directly in your Python app, in an agent framework, or exposed through an MCP.
37
+
38
+ Connector for the GitLab REST API (v4). Provides access to projects, issues, merge requests, commits, pipelines, groups, branches, releases, tags, members, milestones, and users. Supports both Personal Access Token and OAuth2 authentication.
39
+
40
+
41
+ ## Example questions
42
+
43
+ The Gitlab connector is optimized to handle prompts like these.
44
+
45
+ - List all projects I have access to
46
+ - Get the details of a specific project
47
+ - List all open issues in a project
48
+ - Show merge requests for a project
49
+ - List all groups I belong to
50
+ - Show recent commits in a project
51
+ - List pipelines for a project
52
+ - Show all branches in a project
53
+ - Find issues updated in the last week
54
+ - What are the most active projects?
55
+ - Show merge requests that are still open
56
+ - List projects with the most commits
57
+
58
+ ## Unsupported questions
59
+
60
+ The Gitlab connector isn't currently able to handle prompts like these.
61
+
62
+ - Create a new project
63
+ - Delete an issue
64
+ - Merge a merge request
65
+ - Trigger a pipeline
66
+
67
+ ## Installation
68
+
69
+ ```bash
70
+ uv pip install airbyte-agent-gitlab
71
+ ```
72
+
73
+ ## Usage
74
+
75
+ Connectors can run in open source or hosted mode.
76
+
77
+ ### Open source
78
+
79
+ In open source mode, you provide API credentials directly to the connector.
80
+
81
+ ```python
82
+ from airbyte_agent_gitlab import GitlabConnector
83
+ from airbyte_agent_gitlab.models import GitlabPersonalAccessTokenAuthConfig
84
+
85
+ connector = GitlabConnector(
86
+ auth_config=GitlabPersonalAccessTokenAuthConfig(
87
+ access_token="<Log into your GitLab account and generate a personal access token.>"
88
+ )
89
+ )
90
+
91
+ @agent.tool_plain # assumes you're using Pydantic AI
92
+ @GitlabConnector.tool_utils
93
+ async def gitlab_execute(entity: str, action: str, params: dict | None = None):
94
+ return await connector.execute(entity, action, params or {})
95
+ ```
96
+
97
+ ### Hosted
98
+
99
+ In hosted mode, API credentials are stored securely in Airbyte Cloud. You provide your Airbyte credentials instead.
100
+ If your Airbyte client can access multiple organizations, also set `organization_id`.
101
+
102
+ This example assumes you've already authenticated your connector with Airbyte. See [Authentication](AUTH.md) to learn more about authenticating. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/quickstarts/tutorial-hosted).
103
+
104
+ ```python
105
+ from airbyte_agent_gitlab import GitlabConnector, AirbyteAuthConfig
106
+
107
+ connector = GitlabConnector(
108
+ auth_config=AirbyteAuthConfig(
109
+ customer_name="<your_customer_name>",
110
+ organization_id="<your_organization_id>", # Optional for multi-org clients
111
+ airbyte_client_id="<your-client-id>",
112
+ airbyte_client_secret="<your-client-secret>"
113
+ )
114
+ )
115
+
116
+ @agent.tool_plain # assumes you're using Pydantic AI
117
+ @GitlabConnector.tool_utils
118
+ async def gitlab_execute(entity: str, action: str, params: dict | None = None):
119
+ return await connector.execute(entity, action, params or {})
120
+ ```
121
+
122
+ ## Full documentation
123
+
124
+ ### Entities and actions
125
+
126
+ This connector supports the following entities and actions. For more details, see this connector's [full reference documentation](REFERENCE.md).
127
+
128
+ | Entity | Actions |
129
+ |--------|---------|
130
+ | Projects | [List](./REFERENCE.md#projects-list), [Get](./REFERENCE.md#projects-get), [Search](./REFERENCE.md#projects-search) |
131
+ | Issues | [List](./REFERENCE.md#issues-list), [Get](./REFERENCE.md#issues-get), [Search](./REFERENCE.md#issues-search) |
132
+ | Merge Requests | [List](./REFERENCE.md#merge-requests-list), [Get](./REFERENCE.md#merge-requests-get), [Search](./REFERENCE.md#merge-requests-search) |
133
+ | Users | [List](./REFERENCE.md#users-list), [Get](./REFERENCE.md#users-get), [Search](./REFERENCE.md#users-search) |
134
+ | Commits | [List](./REFERENCE.md#commits-list), [Get](./REFERENCE.md#commits-get), [Search](./REFERENCE.md#commits-search) |
135
+ | Groups | [List](./REFERENCE.md#groups-list), [Get](./REFERENCE.md#groups-get), [Search](./REFERENCE.md#groups-search) |
136
+ | Branches | [List](./REFERENCE.md#branches-list), [Get](./REFERENCE.md#branches-get), [Search](./REFERENCE.md#branches-search) |
137
+ | Pipelines | [List](./REFERENCE.md#pipelines-list), [Get](./REFERENCE.md#pipelines-get), [Search](./REFERENCE.md#pipelines-search) |
138
+ | Group Members | [List](./REFERENCE.md#group-members-list), [Get](./REFERENCE.md#group-members-get), [Search](./REFERENCE.md#group-members-search) |
139
+ | Project Members | [List](./REFERENCE.md#project-members-list), [Get](./REFERENCE.md#project-members-get), [Search](./REFERENCE.md#project-members-search) |
140
+ | Releases | [List](./REFERENCE.md#releases-list), [Get](./REFERENCE.md#releases-get), [Search](./REFERENCE.md#releases-search) |
141
+ | Tags | [List](./REFERENCE.md#tags-list), [Get](./REFERENCE.md#tags-get), [Search](./REFERENCE.md#tags-search) |
142
+ | Group Milestones | [List](./REFERENCE.md#group-milestones-list), [Get](./REFERENCE.md#group-milestones-get), [Search](./REFERENCE.md#group-milestones-search) |
143
+ | Project Milestones | [List](./REFERENCE.md#project-milestones-list), [Get](./REFERENCE.md#project-milestones-get), [Search](./REFERENCE.md#project-milestones-search) |
144
+
145
+
146
+ ### Authentication
147
+
148
+ For all authentication options, see the connector's [authentication documentation](AUTH.md).
149
+
150
+ ### Gitlab API docs
151
+
152
+ See the official [Gitlab API reference](https://docs.gitlab.com/ee/api/rest/).
153
+
154
+ ## Version information
155
+
156
+ - **Package version:** 0.1.0
157
+ - **Connector version:** 1.0.1
158
+ - **Generated with Connector SDK commit SHA:** 61c1d075030e7c6e84f9e5f04149b8f8ab4a14ae
159
+ - **Changelog:** [View changelog](https://github.com/airbytehq/airbyte-agent-connectors/blob/main/connectors/gitlab/CHANGELOG.md)
@@ -0,0 +1,126 @@
1
+ # Gitlab
2
+
3
+ The Gitlab agent connector is a Python package that equips AI agents to interact with Gitlab through strongly typed, well-documented tools. It's ready to use directly in your Python app, in an agent framework, or exposed through an MCP.
4
+
5
+ Connector for the GitLab REST API (v4). Provides access to projects, issues, merge requests, commits, pipelines, groups, branches, releases, tags, members, milestones, and users. Supports both Personal Access Token and OAuth2 authentication.
6
+
7
+
8
+ ## Example questions
9
+
10
+ The Gitlab connector is optimized to handle prompts like these.
11
+
12
+ - List all projects I have access to
13
+ - Get the details of a specific project
14
+ - List all open issues in a project
15
+ - Show merge requests for a project
16
+ - List all groups I belong to
17
+ - Show recent commits in a project
18
+ - List pipelines for a project
19
+ - Show all branches in a project
20
+ - Find issues updated in the last week
21
+ - What are the most active projects?
22
+ - Show merge requests that are still open
23
+ - List projects with the most commits
24
+
25
+ ## Unsupported questions
26
+
27
+ The Gitlab connector isn't currently able to handle prompts like these.
28
+
29
+ - Create a new project
30
+ - Delete an issue
31
+ - Merge a merge request
32
+ - Trigger a pipeline
33
+
34
+ ## Installation
35
+
36
+ ```bash
37
+ uv pip install airbyte-agent-gitlab
38
+ ```
39
+
40
+ ## Usage
41
+
42
+ Connectors can run in open source or hosted mode.
43
+
44
+ ### Open source
45
+
46
+ In open source mode, you provide API credentials directly to the connector.
47
+
48
+ ```python
49
+ from airbyte_agent_gitlab import GitlabConnector
50
+ from airbyte_agent_gitlab.models import GitlabPersonalAccessTokenAuthConfig
51
+
52
+ connector = GitlabConnector(
53
+ auth_config=GitlabPersonalAccessTokenAuthConfig(
54
+ access_token="<Log into your GitLab account and generate a personal access token.>"
55
+ )
56
+ )
57
+
58
+ @agent.tool_plain # assumes you're using Pydantic AI
59
+ @GitlabConnector.tool_utils
60
+ async def gitlab_execute(entity: str, action: str, params: dict | None = None):
61
+ return await connector.execute(entity, action, params or {})
62
+ ```
63
+
64
+ ### Hosted
65
+
66
+ In hosted mode, API credentials are stored securely in Airbyte Cloud. You provide your Airbyte credentials instead.
67
+ If your Airbyte client can access multiple organizations, also set `organization_id`.
68
+
69
+ This example assumes you've already authenticated your connector with Airbyte. See [Authentication](AUTH.md) to learn more about authenticating. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/quickstarts/tutorial-hosted).
70
+
71
+ ```python
72
+ from airbyte_agent_gitlab import GitlabConnector, AirbyteAuthConfig
73
+
74
+ connector = GitlabConnector(
75
+ auth_config=AirbyteAuthConfig(
76
+ customer_name="<your_customer_name>",
77
+ organization_id="<your_organization_id>", # Optional for multi-org clients
78
+ airbyte_client_id="<your-client-id>",
79
+ airbyte_client_secret="<your-client-secret>"
80
+ )
81
+ )
82
+
83
+ @agent.tool_plain # assumes you're using Pydantic AI
84
+ @GitlabConnector.tool_utils
85
+ async def gitlab_execute(entity: str, action: str, params: dict | None = None):
86
+ return await connector.execute(entity, action, params or {})
87
+ ```
88
+
89
+ ## Full documentation
90
+
91
+ ### Entities and actions
92
+
93
+ This connector supports the following entities and actions. For more details, see this connector's [full reference documentation](REFERENCE.md).
94
+
95
+ | Entity | Actions |
96
+ |--------|---------|
97
+ | Projects | [List](./REFERENCE.md#projects-list), [Get](./REFERENCE.md#projects-get), [Search](./REFERENCE.md#projects-search) |
98
+ | Issues | [List](./REFERENCE.md#issues-list), [Get](./REFERENCE.md#issues-get), [Search](./REFERENCE.md#issues-search) |
99
+ | Merge Requests | [List](./REFERENCE.md#merge-requests-list), [Get](./REFERENCE.md#merge-requests-get), [Search](./REFERENCE.md#merge-requests-search) |
100
+ | Users | [List](./REFERENCE.md#users-list), [Get](./REFERENCE.md#users-get), [Search](./REFERENCE.md#users-search) |
101
+ | Commits | [List](./REFERENCE.md#commits-list), [Get](./REFERENCE.md#commits-get), [Search](./REFERENCE.md#commits-search) |
102
+ | Groups | [List](./REFERENCE.md#groups-list), [Get](./REFERENCE.md#groups-get), [Search](./REFERENCE.md#groups-search) |
103
+ | Branches | [List](./REFERENCE.md#branches-list), [Get](./REFERENCE.md#branches-get), [Search](./REFERENCE.md#branches-search) |
104
+ | Pipelines | [List](./REFERENCE.md#pipelines-list), [Get](./REFERENCE.md#pipelines-get), [Search](./REFERENCE.md#pipelines-search) |
105
+ | Group Members | [List](./REFERENCE.md#group-members-list), [Get](./REFERENCE.md#group-members-get), [Search](./REFERENCE.md#group-members-search) |
106
+ | Project Members | [List](./REFERENCE.md#project-members-list), [Get](./REFERENCE.md#project-members-get), [Search](./REFERENCE.md#project-members-search) |
107
+ | Releases | [List](./REFERENCE.md#releases-list), [Get](./REFERENCE.md#releases-get), [Search](./REFERENCE.md#releases-search) |
108
+ | Tags | [List](./REFERENCE.md#tags-list), [Get](./REFERENCE.md#tags-get), [Search](./REFERENCE.md#tags-search) |
109
+ | Group Milestones | [List](./REFERENCE.md#group-milestones-list), [Get](./REFERENCE.md#group-milestones-get), [Search](./REFERENCE.md#group-milestones-search) |
110
+ | Project Milestones | [List](./REFERENCE.md#project-milestones-list), [Get](./REFERENCE.md#project-milestones-get), [Search](./REFERENCE.md#project-milestones-search) |
111
+
112
+
113
+ ### Authentication
114
+
115
+ For all authentication options, see the connector's [authentication documentation](AUTH.md).
116
+
117
+ ### Gitlab API docs
118
+
119
+ See the official [Gitlab API reference](https://docs.gitlab.com/ee/api/rest/).
120
+
121
+ ## Version information
122
+
123
+ - **Package version:** 0.1.0
124
+ - **Connector version:** 1.0.1
125
+ - **Generated with Connector SDK commit SHA:** 61c1d075030e7c6e84f9e5f04149b8f8ab4a14ae
126
+ - **Changelog:** [View changelog](https://github.com/airbytehq/airbyte-agent-connectors/blob/main/connectors/gitlab/CHANGELOG.md)