Skip to main content

Gitlab authentication

This page documents the authentication and configuration options for the Gitlab agent connector.

Authentication​

Open source execution​

In open source mode, you provide API credentials directly to the connector.

OAuth​

credentials fields you need:

Field NameTypeRequiredDescription
client_idstrYesThe API ID of the GitLab developer application.
client_secretstrYesThe API Secret of the GitLab developer application.
access_tokenstrYesAccess Token for making authenticated requests.
refresh_tokenstrYesThe key to refresh the expired access token.

Example request:

from airbyte_agent_sdk.connectors.gitlab import GitlabConnector
from airbyte_agent_sdk.connectors.gitlab.models import GitlabOauth20AuthConfig

connector = GitlabConnector(
auth_config=GitlabOauth20AuthConfig(
client_id="<The API ID of the GitLab developer application.>",
client_secret="<The API Secret of the GitLab developer application.>",
access_token="<Access Token for making authenticated requests.>",
refresh_token="<The key to refresh the expired access token.>"
)
)

Token​

credentials fields you need:

Field NameTypeRequiredDescription
access_tokenstrYesLog into your GitLab account and generate a personal access token.

Example request:

from airbyte_agent_sdk.connectors.gitlab import GitlabConnector
from airbyte_agent_sdk.connectors.gitlab.models import GitlabPersonalAccessTokenAuthConfig

connector = GitlabConnector(
auth_config=GitlabPersonalAccessTokenAuthConfig(
access_token="<Log into your GitLab account and generate a personal access token.>"
)
)

Hosted execution​

In hosted mode, you first create a connector via the Airbyte Agent 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 developer quickstart.

OAuth​

Create a connector with OAuth credentials.

credentials fields you need:

Field NameTypeRequiredDescription
client_idstrYesThe API ID of the GitLab developer application.
client_secretstrYesThe API Secret of the GitLab developer application.
access_tokenstrYesAccess Token for making authenticated requests.
refresh_tokenstrYesThe key to refresh the expired access token.

replication_config fields you need:

Field NameTypeRequiredDescription
start_datestr (date-time)NoUTC 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.

Example request:

curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors" \
-H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"workspace_name": "<WORKSPACE_NAME>",
"connector_type": "Gitlab",
"name": "My Gitlab Connector",
"credentials": {
"client_id": "<The API ID of the GitLab developer application.>",
"client_secret": "<The API Secret of the GitLab developer application.>",
"access_token": "<Access Token for making authenticated requests.>",
"refresh_token": "<The key to refresh the expired access token.>"
},
"replication_config": {
"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.>"
}
}'

Bring your own OAuth flow​

To implement your own OAuth flow, use Airbyte's server-side OAuth API endpoints. For a complete guide, see Build your own OAuth flow.

Step 1: Initiate the OAuth flow​

Request a consent URL for your user.

Field NameTypeRequiredDescription
workspace_namestringYesYour unique identifier for the workspace
connector_typestringYesThe connector type (e.g., "Gitlab")
redirect_urlstringYesURL to redirect to after OAuth authorization

Example request:

curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors/oauth/initiate" \
-H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"workspace_name": "<WORKSPACE_NAME>",
"connector_type": "Gitlab",
"redirect_url": "https://yourapp.com/oauth/callback"
}'

Redirect your user to the consent_url from the response.

Step 2: Handle the callback​

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.

https://yourapp.com/oauth/callback?connector_id=<connector_id>

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.

Token​

Create a connector with Token credentials.

credentials fields you need:

Field NameTypeRequiredDescription
access_tokenstrYesLog into your GitLab account and generate a personal access token.

replication_config fields you need:

Field NameTypeRequiredDescription
start_datestr (date-time)NoUTC 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.

Example request:

curl -X POST "https://api.airbyte.ai/api/v1/integrations/connectors" \
-H "Authorization: Bearer <YOUR_BEARER_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"workspace_name": "<WORKSPACE_NAME>",
"connector_type": "Gitlab",
"name": "My Gitlab Connector",
"credentials": {
"access_token": "<Log into your GitLab account and generate a personal access token.>"
},
"replication_config": {
"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.>"
}
}'

Execution​

After creating the connector, execute operations using either the Python SDK or API. If your Airbyte client can access multiple organizations, include organization_id in AirbyteAuthConfig and X-Organization-Id in raw API calls.

Python SDK

The connect() factory returns a fully typed GitlabConnector and reads AIRBYTE_CLIENT_ID / AIRBYTE_CLIENT_SECRET from the environment:

Pydantic AI
from pydantic_ai import Agent
from airbyte_agent_sdk import connect
from airbyte_agent_sdk.connectors.gitlab import GitlabConnector

connector = connect("gitlab", workspace_name="<your_workspace_name>")

agent = Agent("openai:gpt-4o")

@agent.tool_plain
@GitlabConnector.tool_utils
async def gitlab_execute(entity: str, action: str, params: dict | None = None):
return await connector.execute(entity, action, params or {})

Or pass credentials explicitly (equivalent, useful when you're not loading them from the environment): Pydantic AI

Pydantic AI
from pydantic_ai import Agent
from airbyte_agent_sdk.connectors.gitlab import GitlabConnector
from airbyte_agent_sdk.types import AirbyteAuthConfig

connector = GitlabConnector(
auth_config=AirbyteAuthConfig(
workspace_name="<your_workspace_name>",
organization_id="<your_organization_id>", # Optional for multi-org clients
airbyte_client_id="<your-client-id>",
airbyte_client_secret="<your-client-secret>"
)
)

agent = Agent("openai:gpt-4o")

@agent.tool_plain
@GitlabConnector.tool_utils
async def gitlab_execute(entity: str, action: str, params: dict | None = None):
return await connector.execute(entity, action, params or {})

API

curl -X POST 'https://api.airbyte.ai/api/v1/integrations/connectors/<connector_id>/execute' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
-H 'X-Organization-Id: <YOUR_ORGANIZATION_ID>' \
-H 'Content-Type: application/json' \
-d '{"entity": "<entity>", "action": "<action>", "params": {}}'

Configuration​

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.

VariableTypeRequiredDefaultDescription
api_urlstringYesgitlab.comGitLab instance hostname