API의 첫 릴리스야. 피드백을 바탕으로 기능을 확장 중이야 — 어떤 엔드포인트가 필요한지 알려줘!
- Availability: 엔터프라이즈 팀 전용
- Status: 알파(응답 구조와 필드는 변경될 수 있음)
인증
기본 URL
요청 한도
- 팀별·엔드포인트별 분당 5회 요청
쿼리 파라미터
Parameter | Type | Required | Description | |
---|---|---|---|---|
startDate | string | date | No | ISO 날짜 문자열, 리터럴 “now”, 또는 “7d”(지금 - 7일) 같은 상대 일수. 기본값: 지금 - 7일 |
endDate | string | date | No | ISO 날짜 문자열, 리터럴 “now”, 또는 “0d” 같은 상대 일수. 기본값: 지금 |
page | number | No | 페이지 번호(1부터 시작). 기본값: 1 | |
pageSize | number | No | 페이지당 결과 수. 기본값: 100, 최대: 1000 | |
user | string | No | 단일 사용자 필터(선택). 이메일(예: developer@company.com), 인코딩된 ID(예: user_abc123…), 또는 숫자 ID(예: 42) 허용 |
응답에서는 userId가 user_ 접두사가 붙은 인코딩된 외부 ID로 반환돼. API에서 안정적으로 사용할 수 있어.
시맨틱과 메트릭 계산 방식
- Sources: “TAB”는 수락된 인라인 자동완성을 의미하고, “COMPOSER”는 Composer에서 수락된 diff를 의미해
- Lines metrics: tabLinesAdded/Deleted와 composerLinesAdded/Deleted는 각각 별도로 집계돼; nonAiLinesAdded/Deleted는 max(0, totalLines - AI lines)로 계산돼
- Privacy mode: 클라이언트에서 활성화되면 일부 메타데이터(예: fileName)가 생략될 수 있어
- Branch info: 현재 브랜치가 리포지토리의 기본 브랜치와 동일하면 isPrimaryBranch는 true야; 리포지토리 정보를 사용할 수 없으면 undefined일 수도 있어
엔드포인트
AI 커밋 메트릭 조회 (JSON, 페이지네이션)
응답
AiCommitMetric 필드
필드 | 타입 | 설명 | |
---|---|---|---|
commitHash | string | Git 커밋 해시 | |
userId | string | 인코딩된 사용자 ID (예: user_abc123) | |
userEmail | string | 사용자 이메일 주소 | |
repoName | string | null | 리포지토리 이름 |
branchName | string | null | 브랜치 이름 |
isPrimaryBranch | boolean | null | 기본 브랜치 여부 |
totalLinesAdded | number | 커밋에서 추가된 총 라인 수 | |
totalLinesDeleted | number | 커밋에서 삭제된 총 라인 수 | |
tabLinesAdded | number | TAB 자동완성으로 추가된 라인 수 | |
tabLinesDeleted | number | TAB 자동완성으로 삭제된 라인 수 | |
composerLinesAdded | number | Composer로 추가된 라인 수 | |
composerLinesDeleted | number | Composer로 삭제된 라인 수 | |
nonAiLinesAdded | number | null | 비-AI로 추가된 라인 수 |
nonAiLinesDeleted | number | null | 비-AI로 삭제된 라인 수 |
message | string | null | 커밋 메시지 |
commitTs | string | null | 커밋 타임스탬프(ISO 형식) |
createdAt | string | 수집 타임스탬프(ISO 형식) |
응답 예시
요청 예시
AI 커밋 메트릭 다운로드 (CSV, 스트리밍)
응답
- Content-Type: text/csv; charset=utf-8
CSV 컬럼
Column | Type | Description |
---|---|---|
commit_hash | string | Git 커밋 해시 |
user_id | string | 인코딩된 사용자 ID |
user_email | string | 사용자 이메일 주소 |
repo_name | string | 리포지토리 이름 |
branch_name | string | 브랜치 이름 |
is_primary_branch | boolean | 기본 브랜치 여부 |
total_lines_added | number | 커밋에서 추가된 총 라인 수 |
total_lines_deleted | number | 커밋에서 삭제된 총 라인 수 |
tab_lines_added | number | TAB 자동완성으로 추가된 라인 수 |
tab_lines_deleted | number | TAB 자동완성으로 삭제된 라인 수 |
composer_lines_added | number | Composer로 추가된 라인 수 |
composer_lines_deleted | number | Composer로 삭제된 라인 수 |
non_ai_lines_added | number | 비 AI 추가 라인 수 |
non_ai_lines_deleted | number | 비 AI 삭제 라인 수 |
message | string | 커밋 메시지 |
commit_ts | string | 커밋 타임스탬프(ISO 형식) |
created_at | string | 수집 타임스탬프(ISO 형식) |
샘플 CSV 출력
예시 요청
AI 코드 변경 메트릭 가져오기(JSON, 페이지네이션)
응답
AiCodeChangeMetric 필드
Field | Type | Description | |
---|---|---|---|
changeId | string | 변경에 대한 결정적 ID | |
userId | string | 인코딩된 사용자 ID(예: user_abc123) | |
userEmail | string | 사용자 이메일 주소 | |
source | ”TAB" | "COMPOSER” | AI 변경의 소스 |
model | string | null | 사용된 AI 모델 |
totalLinesAdded | number | 추가된 총 라인 수 | |
totalLinesDeleted | number | 삭제된 총 라인 수 | |
createdAt | string | 수집 타임스탬프(ISO 형식) | |
metadata | Array | 파일 메타데이터(프라이버시 모드에선 fileName이 생략될 수 있음) |
예시 응답
예시 요청
AI 코드 변경 지표 다운로드(CSV, 스트리밍)
응답
- Content-Type: text/csv; charset=utf-8
CSV 컬럼
Column | Type | Description |
---|---|---|
change_id | string | 변경에 대한 결정적 ID |
user_id | string | 인코딩된 사용자 ID |
user_email | string | 사용자의 이메일 주소 |
source | string | AI 변경의 소스(TAB 또는 COMPOSER) |
model | string | 사용된 AI 모델 |
total_lines_added | number | 추가된 총 라인 수 |
total_lines_deleted | number | 삭제된 총 라인 수 |
created_at | string | 수집 타임스탬프(ISO 형식) |
metadata_json | string | 메타데이터 엔트리 배열을 JSON 문자열로 직렬화한 값 |
참고
- metadata_json은 메타데이터 엔트리 배열을 JSON 문자열로 직렬화한 값이야(프라이버시 모드에서는 fileName이 생략될 수 있어)
- CSV를 사용할 때는 따옴표로 감싼 필드를 반드시 파싱해
샘플 CSV 출력
예시 요청
팁
- 모든 엔드포인트에서 특정 사용자만 빠르게 필터링하려면
user
매개변수를 써 - 대용량 데이터 추출에는 CSV 엔드포인트를 권장해—서버에서 10,000건 단위로 페이지 스트리밍돼
- 클라이언트가 기본 브랜치를 확인하지 못하면
isPrimaryBranch
는 undefined일 수 있어 commitTs
는 커밋 타임스탬프고,createdAt
는 우리 서버에서의 수집 시각이야- 클라이언트에서 개인정보 보호 모드가 활성화되면 일부 필드가 없을 수 있어
변경 내역
- 알파 릴리스: 커밋과 변경 사항용 초기 엔드포인트. 피드백에 따라 응답 스키마가 변경될 수 있음