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.
- airbyte_agent_gitlab-0.1.0/.gitignore +34 -0
- airbyte_agent_gitlab-0.1.0/AUTH.md +223 -0
- airbyte_agent_gitlab-0.1.0/CHANGELOG.md +6 -0
- airbyte_agent_gitlab-0.1.0/PKG-INFO +159 -0
- airbyte_agent_gitlab-0.1.0/README.md +126 -0
- airbyte_agent_gitlab-0.1.0/REFERENCE.md +3627 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/__init__.py +285 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/__init__.py +1 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/__init__.py +83 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/auth_strategies.py +1171 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/auth_template.py +135 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/cloud_utils/client.py +454 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/connector_model_loader.py +1053 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/constants.py +78 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/exceptions.py +23 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/executor/__init__.py +31 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/executor/hosted_executor.py +242 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/executor/local_executor.py +1885 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/executor/models.py +202 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/extensions.py +693 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/__init__.py +37 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/adapters/httpx_adapter.py +258 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/config.py +98 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/exceptions.py +119 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/protocols.py +114 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http/response.py +118 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/http_client.py +719 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/introspection.py +493 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/logging/__init__.py +11 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/logging/logger.py +273 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/logging/types.py +93 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/__init__.py +11 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/config.py +179 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/models.py +19 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/redactor.py +81 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/observability/session.py +103 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/performance/__init__.py +6 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/performance/instrumentation.py +57 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/performance/metrics.py +93 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/__init__.py +71 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/base.py +256 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/components.py +244 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/connector.py +120 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/extensions.py +281 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/operations.py +159 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/schema/security.py +305 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/secrets.py +182 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/telemetry/__init__.py +10 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/telemetry/config.py +32 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/telemetry/events.py +59 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/telemetry/tracker.py +155 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/types.py +346 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/utils.py +127 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/__init__.py +38 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/cache.py +169 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/manifest.py +115 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/models.py +17 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/overview.py +1005 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/readiness.py +1047 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/_vendored/connector_sdk/validation/replication.py +1549 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/connector.py +3243 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/connector_model.py +5306 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/models.py +1367 -0
- airbyte_agent_gitlab-0.1.0/airbyte_agent_gitlab/types.py +4952 -0
- 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,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)
|