문서/API 및 웹훅/API 개요

API 개요

SecureCodingHub 공개 REST API를 사용하면 관리자 UI를 스크랩하지 않고도 사용자를 프로비저닝하고, 과제를 생성하고, 스캐너 결과를 수집하고, 자체 시스템에서 이벤트를 구독할 수 있습니다.

API를 사용해야 할 때

SecureCodingHub가 별도의 대시보드가 아니라 인프라의 일부처럼 동작하도록 하려면 공개 API를 사용하세요. 일반적인 통합 사례는 다음과 같습니다:

  • CI/CD 파이프라인 — CodeQL, Snyk, Semgrep 또는 모든 SAST 도구의 SARIF 출력을 받아 커밋 작성자를 위한 타깃 교육 과제를 자동으로 생성합니다.
  • HR / IdP 동기화 — SCIM과 함께 채용 시 사용자를 프로비저닝하고 퇴사 시 비활성화합니다.
  • 티켓팅 및 SOAR — 개발자가 필수 과제를 실패할 때마다 Jira 티켓을 열거나, 인증서가 기한을 초과하면 PagerDuty 인시던트를 호출합니다.
  • 맞춤 보고 — 진행 상황과 감사 데이터를 자체 BI 도구(Looker, Metabase, Tableau)로 가져옵니다.
  • 화이트라벨 대시보드 — 완료 통계를 내부 포털에 임베드합니다.

기본 URL 및 버전 관리

모든 공개 엔드포인트는 경로에 버전이 고정된 단일 기본 URL을 통해 접근됩니다:

https://api.limeplate.com/api/public/v1

v1 계약은 안정적입니다. 호환되지 않는 변경 사항은 새 경로에서 v2로 배포됩니다. 새 메이저 버전이 일반 공급된 후에도 v1는 최소 12개월 동안 유지됩니다.

두 개의 표면, 하나의 플랫폼

app.securecodinghub.com 아래의 관리자 웹 앱과 api.limeplate.com/api/public/v1 아래의 공개 API는 의도적으로 분리되어 있습니다. 이들은 서로 다른 인증 방식, 서로 다른 속도 제한 정책 및 서로 다른 식별자 규약을 사용합니다. 내부 엔드포인트(/api/sch/...)는 사전 통지 없이 변경될 수 있습니다. 이 섹션에 문서화된 엔드포인트만 보장됩니다.

30초 투어

새 통합의 흐름은 거의 항상 다음과 같습니다:

1

관리자 콘솔의 조직 → API 키에서 API 키를 생성합니다. 필요한 범위(users:read, assignments:write 등)만 부여하세요.

2

scs_live_… 토큰을 복사하세요. 토큰은 생성 시 한 번만 표시되므로 즉시 시크릿 매니저에 저장하세요.

3

모든 엔드포인트에 Authorization: Bearer scs_live_…를 전송하여 첫 호출을 수행합니다.

4

SecureCodingHub 내부에서 발생하는 이벤트(과제가 완료되거나 SARIF 실행이 수집됨)의 경우, 웹훅 엔드포인트를 구독하고 각 전달에서 HMAC 서명을 검증하세요.

첫 번째 요청

이 호출은 API 키를 소유한 조직의 메타데이터를 반환합니다. 새 토큰 발급 후 권장되는 상태 확인입니다:

curl https://api.limeplate.com/api/public/v1/org \
  -H "Authorization: Bearer scs_live_yourkeyhere"

성공 응답은 다음과 같습니다:

{
  "id": "e188fc87-1334-48bd-84d7-5e3e64cecb52",
  "name": "Acme Corp",
  "slug": "acme",
  "domain": "acme.com",
  "plan": "growth",
  "maxSeats": 500,
  "trialExpiresAt": null,
  "isActive": true,
  "createdAt": "2026-01-12T08:42:11Z"
}

규약

주제규약
전송HTTPS만 지원합니다. 일반 HTTP 요청은 엣지에서 거부됩니다.
인코딩JSON 요청 및 응답 본문입니다. 모든 POST, PATCH에 Content-Type: application/json가 필요합니다.
표기법모든 필드명은 요청과 응답(및 웹훅 페이로드)에서 camelCase을 사용합니다.
타임스탬프ISO 8601 UTC 문자열(2026-05-29T13:45:12Z)입니다.
식별자모든 리소스 ID는 RFC 4122 v4 UUID입니다.
빈 본문작업을 단순히 확인하는 엔드포인트는 { "message": "..." }와 함께 200 OK를 반환합니다.
멱등성중요한 경우(예: SARIF 수집), 멱등성은 별도의 헤더가 아니라 요청의 자연 식별자를 키로 사용합니다.

OpenAPI 사양

모든 공개 엔드포인트를 설명하는 OpenAPI 3.0 문서가 동일한 호스트에서 제공됩니다:

https://api.limeplate.com/openapi/v1.json

해당 URL을 Postman, Insomnia, Stoplight 또는 코드 생성 도구(openapi-generator, @hey-api/openapi-ts, NSwag)에 직접 붙여넣어 타입이 지정된 클라이언트를 스캐폴드할 수 있습니다.

지원 및 상태

운영 이슈, 호환되지 않는 변경 사항 및 사용 중단 공지는 조직에 등록된 이메일 주소로 전송됩니다. 통합 문의 및 버그 신고는 support@securecodinghub.com로 보내주세요. 실패한 호출에서 X-Request-Id 헤더를 캡처할 수 있다면 함께 포함시키면 분류 속도가 크게 빨라집니다.