자동 리메디에이션 PR (npm)
리메디에이션 dry-run이 package.json 편집을 미리보기만 한다면, 자동 리메디에이션 PR은 짧은 수명의 GitHub App 설치 토큰을 사용해 프로젝트의 GitHub 저장소에 실제로 풀 리퀘스트를 생성합니다 — 브랜치, 커밋, PR까지.
외부 저장소에 대한 권한 있는 쓰기 작업이므로 옵트인이며 팀 관리자 전용입니다.
대상 저장소를 결정하는 권한은 옵트인뿐입니다
포털은 프로젝트에 명시적으로 연결하지 않은 저장소에는 절대 PR을 생성하지 않습니다. 대상 저장소는 프로젝트가 옵트인한 GitHub App 설치에서만 도출됩니다 — 호출자가 저장소를 지정할 수 있는 요청 필드는 없습니다. 프로젝트가 옵트인되어 있지 않으면 요청은 409로 거부됩니다.
사전 조건
- 팀 관리자가 팀에 대한 GitHub App 자격 증명을 등록합니다.
- 해당 자격 증명의 설치가
repository_full_name과 함께 프로젝트에 연결(옵트인)되어 있어야 합니다. 연결된 설치의 자격 증명이 폐기되지 않은 상태여야 합니다.
엔드포인트
POST /v1/projects/{project_id}/remediation/npm/pull-request
인증이 필요합니다(JWT 또는 API 키). 호출자는 프로젝트 팀의 팀 관리자여야 합니다. 볼 수 없는 프로젝트는 404(존재 은닉)를 반환합니다.
요청 본문 (선택)
| 필드 | 타입 | 설명 |
|---|---|---|
manifest | string | null | 편집할 package.json 원문. 생략하면 프로젝트의 최신 보존 스캔 소스에서 best-effort로 읽습니다. 대상 저장소는 본문에 포함되지 않습니다 — 옵트인에서 도출됩니다. |
응답
| 상태 | 의미 |
|---|---|
201 Created | 새 리메디에이션 PR이 생성되었습니다. 본문은 PR 레코드입니다. |
200 OK | 동일한 버전 변경 집합을 가진 기존 open PR이 반환되었습니다(멱등 — 중복 PR 없음). |
204 No Content | 리메디에이션할 항목이 없습니다(매니페스트가 이미 수정본을 충족). |
멱등성
각 시도는 버전 변경 집합(package → 대상 버전)으로 지문화됩니다. 동일한 지문을 가진 open PR이 이미 존재하면 두 번째 PR을 만들지 않고 그 PR을 반환합니다. failed 또는 superseded 레코드는 새 시도를 막지 않습니다.
PR에 담기는 내용
- 저장소 기본 브랜치에서 분기한 새 브랜치
trustedoss/remediation-<짧은-지문>. package.json만 편집하는 단일 커밋.- 버전 변경을 설명하는 풀 리퀘스트.
락파일은 편집하지 않습니다 — 병합 전에 npm install