InfoGrab Docs

플로우 API

요약

이 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
    }
  ]
}

플로우 API

Tier: Premium, Ultimate
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
    }
  ]
}