플로우 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 GitLab Duo Agent Platform에서 플로우를 생성하고 관리합니다. 성공 시 201 Created 및 다음 응답 속성을 반환합니다: ai_catalog_item_consumer_id를 사용하기 전에 GraphQL API를 사용하여 AI 카탈로그에서 ID를 조회해야 합니다.
이 API를 사용하여 GitLab Duo Agent Platform에서 플로우를 생성하고 관리합니다. 플로우는 버그 수정, 코드 작성, 취약점 해결과 같은 개발자 작업을 완료하기 위해 함께 작동하는 AI 에이전트의 조합입니다.
플로우 생성#
새 플로우를 생성하고 시작합니다.
POST /ai/duo_workflows/workflows
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
additional_context |
객체 배열 | 아니요 | 플로우의 추가 컨텍스트. 각 요소는 최소한 Category (문자열) 및 Content (문자열, 직렬화된 JSON) 키를 포함하는 객체여야 합니다. |
agent_privileges |
정수 배열 | 아니요 | 에이전트가 사용할 수 있는 권한 ID. 기본값은 모든 권한입니다. 모든 에이전트 권한 나열을 참조하세요. |
ai_catalog_item_consumer_id |
정수 | 아니요 | 실행할 카탈로그 항목을 구성하는 AI 카탈로그 항목 소비자의 ID. project_id가 필요합니다. workflow_definition과 함께 사용할 수 없으며, 둘 다 제공되면 ai_catalog_item_consumer_id가 우선합니다. 소비자 ID 조회를 참조하세요. |
ai_catalog_item_version_id |
정수 | 아니요 | 플로우 구성의 소스인 AI 카탈로그 항목 버전의 ID. |
allow_agent_to_request_user |
부울 | 아니요 | true(기본값)이면 에이전트가 진행 전에 사용자에게 질문하기 위해 일시 중지할 수 있습니다. false이면 에이전트가 사용자 입력 없이 완료까지 실행됩니다. |
environment |
문자열 | 아니요 | 실행 환경. ide, web, chat_partial, chat, ambient 중 하나. |
goal |
문자열 | 아니요 | 에이전트가 완료해야 할 작업의 설명. 예: Fix the failing pipeline. |
image |
문자열 | 아니요 | CI 파이프라인에서 플로우를 실행할 때 사용할 컨테이너 이미지. 사용자 정의 이미지 요구 사항을 충족해야 합니다. 예: registry.gitlab.com/gitlab-org/duo-workflow/custom-image:latest. |
issue_id |
정수 | 아니요 | 플로우와 연결할 이슈의 IID. project_id가 필요합니다. |
merge_request_id |
정수 | 아니요 | 플로우와 연결할 머지 리퀘스트의 IID. project_id가 필요합니다. |
namespace_id |
문자열 | 아니요 | 플로우와 연결할 네임스페이스의 ID 또는 경로. |
pre_approved_agent_privileges |
정수 배열 | 아니요 | 에이전트가 사용자 승인 없이 사용할 수 있는 권한 ID. agent_privileges의 하위 집합이어야 합니다. |
project_id |
문자열 | 아니요 | 플로우와 연결할 프로젝트의 ID 또는 경로. |
shallow_clone |
부울 | 아니요 | 실행 중 저장소의 얕은 복사본을 사용할지 여부. 기본값: true. |
source_branch |
문자열 | 아니요 | CI 파이프라인의 소스 브랜치. 기본값은 프로젝트의 기본 브랜치. |
start_workflow |
부울 | 아니요 | true이면 생성 후 즉시 플로우를 시작합니다. |
workflow_definition |
문자열 | 아니요 | 플로우 유형 식별자. 예: developer/v1. ai_catalog_item_consumer_id와 함께 사용할 수 없으며, 둘 다 제공되면 ai_catalog_item_consumer_id가 우선합니다. |
성공 시 201 Created 및 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
agent_privileges |
정수 배열 | 에이전트에 할당된 권한 ID. |
agent_privileges_names |
문자열 배열 | agent_privileges에 대응하는 이름. |
ai_catalog_item_version_id |
정수 | AI 카탈로그 항목 버전의 ID. 설정되지 않은 경우 null. |
allow_agent_to_request_user |
부울 | true이면 에이전트가 사용자 입력을 위해 일시 중지할 수 있습니다. |
environment |
문자열 | 실행 환경. 설정되지 않은 경우 null. |
gitlab_url |
문자열 | GitLab 인스턴스의 기본 URL. |
id |
정수 | 플로우의 ID. |
image |
문자열 | CI 파이프라인 실행을 위한 컨테이너 이미지. 설정되지 않은 경우 null. |
mcp_enabled |
부울 | 이 플로우에 MCP(Model Context Protocol) 도구가 활성화되어 있는지 여부. |
namespace_id |
정수 | 연결된 네임스페이스의 ID. 설정되지 않은 경우 null. |
pre_approved_agent_privileges |
정수 배열 | 에이전트가 승인 없이 사용할 수 있는 권한 ID. |
pre_approved_agent_privileges_names |
문자열 배열 | pre_approved_agent_privileges에 대응하는 이름. |
project_id |
정수 | 연결된 프로젝트의 ID. 설정되지 않은 경우 null. |
status |
문자열 | 현재 플로우 상태. created, running, paused, finished, failed, stopped, input_required, plan_approval_required 또는 tool_call_approval_required 중 하나. |
summary |
문자열 | 워크플로우의 간단한 텍스트 요약. |
workflow_definition |
문자열 | 플로우 유형 식별자. |
workload |
객체 | 워크로드에 대한 정보. |
workload.id |
문자열 | 워크로드의 ID. |
workload.message |
문자열 | 워크로드의 상태 메시지. |
소비자 ID 조회#
ai_catalog_item_consumer_id를 사용하기 전에 GraphQL API를 사용하여 AI 카탈로그에서 ID를 조회해야 합니다. 항목이 이미 프로젝트에서 활성화되어 있어야 합니다.
query {
aiCatalogConfiguredItems(projectId: "gid://gitlab/Project/<project_id>") {
nodes {
id
item { name }
}
}
}
id 필드는 gid://gitlab/AiCatalogItemConsumer/<numeric_id> 형식의 전역 ID입니다. ai_catalog_item_consumer_id 값으로 숫자 접미사를 사용하세요.
기본 제공 플로우 유형을 사용하는 요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"project_id": "5",
"goal": "Fix the failing pipeline by correcting the syntax error in .gitlab-ci.yml",
"workflow_definition": "developer/v1",
"start_workflow": true
}' \
--url "https://gitlab.example.com/api/v4/ai/duo_workflows/workflows"
카탈로그 구성 플로우를 사용하는 요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"project_id": "5",
"goal": "Fix the failing pipeline by correcting the syntax error in .gitlab-ci.yml",
"ai_catalog_item_consumer_id": 12,
"start_workflow": true
}' \
--url "https://gitlab.example.com/api/v4/ai/duo_workflows/workflows"
응답 예시:
{
"id": 1,
"project_id": 5,
"namespace_id": null,
"agent_privileges": [1, 2, 3, 4, 5, 6],
"agent_privileges_names": [
"read_write_files",
"read_only_gitlab",
"read_write_gitlab",
"run_commands",
"use_git",
"run_mcp_tools"
],
"pre_approved_agent_privileges": [],
"pre_approved_agent_privileges_names": [],
"workflow_definition": "developer/v1",
"status": "running",
"allow_agent_to_request_user": true,
"image": null,
"environment": null,
"ai_catalog_item_version_id": null,
"workload": {
"id": "abc-123",
"message": "Workflow started"
},
"mcp_enabled": false,
"gitlab_url": "https://gitlab.example.com"
}
모든 에이전트 권한 나열#
모든 사용 가능한 에이전트 권한을 해당 ID, 이름, 설명 및 기본 활성화 여부와 함께 나열합니다.
GET /ai/duo_workflows/workflows/agent_privileges
이 엔드포인트에는 지원되는 속성이 없습니다.
성공 시 200 OK 및 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
all_privileges |
객체 배열 | 모든 사용 가능한 에이전트 권한. |
all_privileges[].default_enabled |
부울 | 권한이 기본적으로 활성화되어 있는지 여부. |
all_privileges[].description |
문자열 | 권한이 허용하는 것에 대한 사람이 읽을 수 있는 설명. |
all_privileges[].id |
정수 | 권한 ID. |
all_privileges[].name |
문자열 | 기계 판독 가능한 권한 이름. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/ai/duo_workflows/workflows/agent_privileges"
응답 예시:
{
"all_privileges": [
{
"id": 1,
"name": "read_write_files",
"description": "Allow local filesystem read/write access",
"default_enabled": true
},
{
"id": 2,
"name": "read_only_gitlab",
"description": "Allow read only access to GitLab APIs",
"default_enabled": true
},
{
"id": 3,
"name": "read_write_gitlab",
"description": "Allow write access to GitLab APIs",
"default_enabled": true
},
{
"id": 4,
"name": "run_commands",
"description": "Allow running any commands",
"default_enabled": true
},
{
"id": 5,
"name": "use_git",
"description": "Allow git commits, push and other git commands",
"default_enabled": true
},
{
"id": 6,
"name": "run_mcp_tools",
"description": "Allow running MCP tools",
"default_enabled": true
}
]
}
