Security & Governance
워크스페이스 보안 프로젝트 인벤토리 목록 조회
Plan:
Enterprise
Scope: workspaces:read
검토 우선순위, 보안 발견 항목 수, 활동 수, 게시 정보를 포함한 워크스페이스 프로젝트 목록을 반환합니다. 개별 발견 항목은 GET /v1/projects/{project_id}/security-scans/{scan_id}/findings를 사용하세요. 검색과 필터를 지원합니다. 기본 정렬은 최근 편집순이며 query가 설정되어 있으면 검색 관련도순입니다. 프로젝트와 멤버십 데이터는 eventually consistent이므로 최근 변경 사항이 즉시 반영되지 않을 수 있습니다.
OpenAPI
| 항목 | 값 |
|---|---|
| Method | GET |
| Path | /v1/workspaces/{workspace_id}/security-center/insights/projects |
| Operation ID | listSecurityInsightProjects |
| Source spec | https://api.lovable.dev/v1/openapi.yaml |
| Local snapshot | YAML 스냅샷 (SHA-256: 90cac0eb29fe00f669c144ce12c8be61b57ecfab163b7dd63f34e5d0bcc20e72) |
GET /v1/workspaces/{workspace_id}/security-center/insights/projects인증 및 media type
- 인증은
Lovable-API-Keyheader에 API 키를 보내거나Authorization: Bearer <key>형식으로 보냅니다. - 키는 하나의 워크스페이스에 바인딩되고
public:v1audience를 가집니다. 다른 워크스페이스의 리소스는 존재하지 않는 리소스와 마찬가지로404를 반환합니다. - 응답 본문이 있는
public:v1엔드포인트는application/json을 반환합니다.Accept: application/json,Accept: */*를 보내거나Acceptheader를 생략하세요. JSON을 제외하는Acceptheader는406을 반환합니다. - 쓰기 스코프는 대응하는 읽기 스코프를 포함합니다.
projects:write는projects:read를,workspaces:write는workspaces:read를 포함합니다. 프로젝트 계열과 워크스페이스 계열 사이에는 권한이 넘어가지 않습니다. - 목록 작업은
limit과cursor를 받고data와pagination.next_cursor,pagination.has_more를 반환합니다. 다음 페이지는next_cursor를cursor로 전달해 가져옵니다. cursor는 opaque 값입니다.
매개변수
| 이름 | 위치 | 필수 | 타입 | 제약 | 설명 |
|---|---|---|---|---|---|
workspace_id | path | 예 | string | - | 워크스페이스 ID입니다. |
limit | query | 아니요 | integer | default: 50min: 1max: 100format: int64 | 페이지마다 반환할 최대 항목 수입니다. |
cursor | query | 아니요 | string | - | 다음 페이지를 가져오려면 이전 응답의 pagination.next_cursor를 전달합니다. 첫 페이지에서는 생략합니다. 페이지를 넘길 때 같은 필터와 정렬 순서를 유지하세요. |
query | query | 아니요 | string | maxLength: 1000 | 프로젝트 이름과 소유자를 자유 텍스트로 검색합니다. 3자보다 짧은 검색어는 무시됩니다. |
sort_by | query | 아니요 | string | enum: relevance, review_priority, name, publish_audience, last_edited_at, risk_factor_count, open_pii_finding_count, external_access_rank, edits_24h, edits_7d, edits_30d, visitors_24h, visitors_7d, visitors_30d, last_security_scan_at | 정렬 필드입니다. 생략하면 기본 순서를 사용합니다. 기본값은 가장 최근에 편집된 프로젝트 우선이며, query가 설정된 경우 가장 잘 일치하는 프로젝트 우선입니다. 별도 설명이 없으면 동률은 프로젝트 ID로 해소합니다. review_priority는 unscored 프로젝트를 양방향 모두 마지막에 두고 동률은 위험 점수로 해소합니다. name은 이름이 없는 프로젝트를 오름차순에서는 처음, 내림차순에서는 마지막에 둡니다. publish_audience는 미게시, workspace, custom, public 순위를 사용합니다. last_edited_at은 마지막 업데이트 시간으로 대체됩니다. risk_factor_count, open_pii_finding_count, external_access_rank는 누락된 값을 0으로 보고 동률은 이름으로 해소합니다. external_access_rank는 외부 협업자, 공유 사용자, 공개 게시 앱, 없음 순위를 사용합니다. 워크스페이스 플랜에서 개인정보 탐지를 사용할 수 없으면 open_pii_finding_count는 402를 반환합니다. edits_*와 visitors_*는 누락된 값을 0으로 봅니다. last_security_scan_at은 스캔된 적 없는 프로젝트를 양방향 모두 마지막에 둡니다. relevance는 query가 필요하며 동률은 마지막 업데이트 시간으로 해소합니다. |
sort_order | query | 아니요 | string | enum: asc, desc | sort_by의 정렬 방향입니다. 기본값은 내림차순입니다. sort_by가 필요합니다. |
activity_group | query | 아니요 | array of string | enum: last_14_days, last_60_days, older | activity_group 필드로 필터링합니다. 마지막 편집 이후 경과 시간이며 편집된 적 없는 프로젝트는 마지막 업데이트 시간을 기준으로 합니다. 14일과 60일 경계를 사용합니다. 여러 값 중 하나라도 일치하도록 반복할 수 있습니다. 필터링하지 않으려면 생략하세요. |
is_published | query | 아니요 | boolean | - | 프로젝트 게시 여부로 필터링합니다. 필터링하지 않으려면 생략하세요. |
visibility | query | 아니요 | array of string | enum: restricted, workspace_edit, workspace_view | visibility 필드로 필터링합니다. 여러 값 중 하나라도 일치하도록 매개변수를 반복할 수 있습니다. 필터링하지 않으려면 생략하세요. |
has_pii | query | 아니요 | boolean | - | has_pii 신호로 필터링합니다. false는 탐지된 개인정보가 없는 프로젝트를 선택합니다. 필터링하지 않으려면 생략하세요. 워크스페이스 플랜에서 개인정보 탐지를 사용할 수 없으면 402를 반환합니다. |
has_connectors | query | 아니요 | boolean | - | 프로젝트에 연결된 서비스가 있는지로 필터링합니다. false는 연결된 서비스가 없는 프로젝트를 선택합니다. 필터링하지 않으려면 생략하세요. |
publish_audience | query | 아니요 | array of string | enum: public, workspace, custom | 게시된 프로젝트를 publish_audience 필드로 필터링합니다. 여러 값 중 하나라도 일치하도록 반복할 수 있습니다. 필터링하지 않으려면 생략하세요. is_published가 true이거나 생략되어야 합니다. |
review_priority | query | 아니요 | array of string | enum: needs_review, review_recommended, no_review_needed, unscored | Security Center 검토 우선순위로 필터링합니다. 선택한 우선순위 중 하나라도 일치하도록 반복할 수 있습니다. unscored는 아직 점수가 매겨지지 않은 프로젝트와 일치합니다. 모든 프로젝트를 포함하려면 생략하세요. |
finding_type_id | query | 아니요 | array of string | - | GET /v1/workspaces/{workspace_id}/security-center/insights가 반환한 발견 유형 ID입니다. 선택한 유형 중 하나라도 일치하도록 반복할 수 있습니다. 알 수 없는 ID는 400을 반환합니다. 개인정보 탐지에 의존하는 유형은 워크스페이스 플랜에서 해당 기능을 사용할 수 없을 때 402를 반환합니다. |
Lovable-Version | header | 아니요 | string | - | 제공받을 안정 API 버전입니다. YYYY-MM-DD 날짜 형식으로 보냅니다. 생략하면 현재 가장 오래된 지원 안정 버전인 2026-09-11이 사용됩니다. |
Lovable-Beta | header | 아니요 | string | - | 안정 버전 위에 활성화할 베타 리비전 문자열입니다. 여러 개는 쉼표로 구분합니다. |
요청 본문
요청 본문은 없습니다.
응답
| 상태 | 본문 schema | 설명 |
|---|---|---|
200 | WorkspaceInsightsProjectPage | 요청이 성공했습니다. |
400 | ErrorResponse | 요청 본문이나 매개변수 형식이 잘못되었거나 검증에 실패했습니다. 실패한 각 필드는 errors에 나열됩니다. |
401 | ErrorResponse | API 키, session token, OAuth access token이 없거나 유효하지 않습니다. |
402 | ErrorResponse | Public API 접근에는 Business 이상 플랜이 필요합니다. 일부 작업이나 구성에는 추가 기능 권한이 필요합니다. |
403 | ErrorResponse | 키 또는 호출자에게 필요한 스코프나 권한이 없습니다. email_not_verified인 경우 계정 이메일을 인증한 뒤 다시 시도하세요. |
404 | ErrorResponse | 워크스페이스가 존재하지 않거나 삭제되었거나 자격 증명의 워크스페이스 범위 밖에 있습니다. |
406 | ErrorResponse | Accept 헤더가 이 엔드포인트가 생성하는 모든 media type을 제외했습니다. |
429 | ErrorResponse | 요청이 너무 많습니다. Retry-After가 있으면 해당 간격 뒤에 다시 시도하세요. |
503 | ErrorResponse | 서비스를 일시적으로 사용할 수 없거나 처리 기한이 만료되었습니다(request_timeout). mutation은 완료될 수 있으므로 다시 시도하기 전에 리소스 상태를 확인하세요. |
default | ErrorResponse | 오류입니다. 응답 본문은 표준 오류 envelope을 사용합니다. status는 HTTP 상태 코드와 같고 type은 machine-readable 오류 코드입니다. |
응답 헤더
| 상태 | 헤더 | 타입 | 설명 |
|---|---|---|---|
200 | Lovable-Beta | string | 요청에 적용된 beta revision입니다. 쉼표로 구분됩니다. 요청이 beta revision을 선택한 경우에만 있습니다. |
200 | Lovable-Version | string | 요청을 처리한 안정 API 버전입니다. 버전 선택 전에 요청이 거부되었거나 버전 선택 자체가 실패한 경우에는 없습니다. |
200 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
200 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
200 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
200 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
200 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
200 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
400 | Lovable-Beta | string | 요청에 적용된 beta revision입니다. 쉼표로 구분됩니다. 요청이 beta revision을 선택한 경우에만 있습니다. |
400 | Lovable-Version | string | 요청을 처리한 안정 API 버전입니다. 버전 선택 전에 요청이 거부되었거나 버전 선택 자체가 실패한 경우에는 없습니다. |
400 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
400 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
400 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
400 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
400 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
400 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
401 | WWW-Authenticate | string | 지원되는 인증 scheme을 식별하는 authentication challenge입니다. |
401 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
401 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
401 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
401 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
401 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
401 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
402 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
402 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
402 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
402 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
402 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
402 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
403 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
403 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
403 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
403 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
403 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
403 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
404 | Lovable-Beta | string | 요청에 적용된 beta revision입니다. 쉼표로 구분됩니다. 요청이 beta revision을 선택한 경우에만 있습니다. |
404 | Lovable-Version | string | 요청을 처리한 안정 API 버전입니다. 버전 선택 전에 요청이 거부되었거나 버전 선택 자체가 실패한 경우에는 없습니다. |
404 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
404 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
404 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
404 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
404 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
404 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
406 | Lovable-Beta | string | 요청에 적용된 beta revision입니다. 쉼표로 구분됩니다. 요청이 beta revision을 선택한 경우에만 있습니다. |
406 | Lovable-Version | string | 요청을 처리한 안정 API 버전입니다. 버전 선택 전에 요청이 거부되었거나 버전 선택 자체가 실패한 경우에는 없습니다. |
406 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
406 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
406 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
406 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
406 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
406 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
429 | Retry-After | integer | 다시 시도하기 전에 기다릴 초 단위 시간입니다. minimum: 1입니다. limiter가 재시도 지연 시간을 계산할 수 있을 때 제공됩니다. |
429 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
429 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
429 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
429 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
429 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
429 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
503 | Lovable-Beta | string | 요청에 적용된 beta revision입니다. 쉼표로 구분됩니다. 요청이 beta revision을 선택한 경우에만 있습니다. |
503 | Lovable-Version | string | 요청을 처리한 안정 API 버전입니다. 버전 선택 전에 요청이 거부되었거나 버전 선택 자체가 실패한 경우에는 없습니다. |
503 | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
503 | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
503 | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
503 | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
503 | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
503 | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
default | Lovable-Beta | string | 요청에 적용된 beta revision입니다. 쉼표로 구분됩니다. 요청이 beta revision을 선택한 경우에만 있습니다. |
default | Lovable-Version | string | 요청을 처리한 안정 API 버전입니다. 버전 선택 전에 요청이 거부되었거나 버전 선택 자체가 실패한 경우에는 없습니다. |
default | X-Lovable-Unknown-Query-Params | string | 요청에 이 작업이 선언하지 않은 query parameter가 포함된 경우에만 있습니다. 무시된 매개변수 이름을 URL escape 후 쉼표로 구분해 최대 20개까지 제공합니다. |
default | X-Lovable-Unknown-Query-Params-Omitted | integer | 알 수 없는 매개변수가 20개를 넘어 무시되었을 때 X-Lovable-Unknown-Query-Params와 함께 제공됩니다. 해당 헤더에서 빠진 이름의 수입니다. |
default | X-RateLimit-Limit | integer | 소진에 가장 가까운 속도 제한에서 시간 창마다 허용되는 최대 요청 수입니다. 세 X-RateLimit 헤더는 모두 같은 제한을 설명합니다. |
default | X-RateLimit-Remaining | integer | X-RateLimit-Limit가 설명하는 제한 안에서 아직 사용할 수 있는 요청 수입니다. |
default | X-RateLimit-Reset | integer | X-RateLimit-Limit가 설명하는 제한이 다음에 용량을 회복하는 시각입니다. Unix timestamp 초 단위입니다. 알 수 없으면 생략됩니다. |
default | X-Request-Id | string | 이 요청의 식별자입니다. 오류 envelope의 request_id와 일치합니다. 실패를 보고할 때 이 값을 인용하세요. |
Schema
필드 이름과 enum 값은 OpenAPI contract의 식별자를 그대로 유지합니다. 설명은 한국어로 옮겼습니다. null이 타입에 포함된 필드는 값이 없을 수 있습니다.
WorkspaceInsightsProjectPage
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
activity_as_of | 예 | oneOf(WorkspaceInsightsActivityFreshness \or null) | - | 이 페이지의 편집 수와 방문자 수에 대한 데이터 timestamp입니다. 사용할 수 없으면 null입니다. | - |
applied_finding | 예 | oneOf(WorkspaceInsightsFinding \or null) | - | 정확히 하나의 finding_type_id를 선택했을 때 필터로 사용된 발견 유형입니다. 그렇지 않으면 null입니다. project_count는 모든 필터가 적용된 뒤 일치하는 전체 프로젝트 수와 같습니다. | - |
as_of | 예 | `string \ | null` | format: date-time | 워크스페이스 검토 우선순위 데이터의 신선도를 나타내는 timestamp입니다. 개별 프로젝트에는 더 최신 결과가 있을 수 있습니다. 사용할 수 없으면 null입니다. 보안 스캔 완료 시각이 아닙니다. |
data | 예 | array of WorkspaceInsightsProject | - | 이 페이지의 항목입니다. 항목이 없으면 빈 배열입니다. | - |
pagination | 예 | Pagination | - | 더 많은 결과가 있는지와 다음 페이지를 가져올 cursor입니다. | - |
total | 예 | integer | format: int64 | 모든 페이지에 걸친 전체 일치 프로젝트 수입니다. | 42 |
ErrorResponse
공통 오류 응답입니다. 작업에 따라 특정 상태 코드에 다른 응답 본문이 문서화될 수 있습니다. 예를 들어 멤버별 credit 한도 일괄 업데이트 결과가 해당됩니다.
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
detail | 예 | `string \ | null` | - | 이번 오류에 대한 사람이 읽을 수 있는 안내입니다. 적용되지 않으면 null입니다. invalid_request에서는 validation failed이며 실행 가능한 필드 메시지는 errors에 있습니다. 다른 오류 유형은 재인증 안내 같은 정보를 제공할 수 있습니다. |
errors | 예 | `array \ | null` | - | 검증 실패 시 필드 단위 오류 상세 정보입니다. 필드 단위 상세 정보가 적용되지 않으면 null입니다. |
props | 예 | `object \ | null` | - | 오류별 metadata입니다. 적용되지 않으면 null입니다. key는 type에 따라 달라집니다. security_critical_findings에는 finding_refs 문자열 배열이 포함되고, retired_version과 retired_beta에는 migration_url 문자열 URL이 포함될 수 있습니다. 인식하지 못한 key는 무시하세요. |
request_id | 예 | string | - | X-Request-Id 응답 헤더에서 반복되는 이 요청의 식별자입니다. 실패를 보고할 때 이 값을 인용하세요. | 4bf92f3577b34da6a3ce929d0e0e4736 |
status | 예 | integer | - | 본문에 반복되는 HTTP 상태 코드입니다. | 429 |
title | 예 | string | - | 사람이 읽을 수 있는 오류 요약입니다. 문구는 바뀔 수 있으므로 애플리케이션의 오류 처리는 type을 기준으로 결정하세요. | Too Many Requests |
type | 예 | string | - | 안정적인 machine-readable 오류 유형입니다. URI가 아니라 rate_limited 같은 snake_case token입니다. 클라이언트는 이 값으로 분기할 수 있으며 새 유형은 추가될 수 있습니다. | rate_limited |
WorkspaceInsightsActivityFreshness
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
edits_as_of | 예 | `string \ | null` | format: date-time | 이 페이지의 저장된 편집 수에 사용된 최신 데이터 timestamp입니다. 사용할 수 없으면 null입니다. |
visitors_as_of | 예 | `string \ | null` | format: date-time | 이 페이지의 저장된 방문자 수에 사용된 최신 데이터 timestamp입니다. 카운트를 실시간으로 가져오거나 timestamp가 없으면 null입니다. |
WorkspaceInsightsFinding
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
category | 예 | string | enum: security, data, exposure, credentials, access, integrations, runtime | 발견 category입니다. 값이 추가될 수 있으므로 클라이언트는 알 수 없는 값을 허용해야 합니다. | exposure |
description | 예 | string | - | 이 발견 유형이 나타내는 조건의 설명입니다. | Publicly published projects with error-level security findings. |
id | 예 | string | - | 발견 유형의 안정적인 식별자입니다. 일치하는 프로젝트를 나열하려면 GET /v1/workspaces/{workspace_id}/security-center/insights/projects에서 finding_type_id로 사용하세요. 해당 엔드포인트에는 Enterprise가 필요합니다. | public_security_exposure |
project_count | 예 | integer | format: int64 | 이 발견 유형에 해당하는 고유 프로젝트 수입니다. 발견 유형 간 카운트는 겹칠 수 있으므로 고유 프로젝트 총계를 구하려고 합산하면 안 됩니다. | 12 |
review_priority | 예 | string | enum: needs_review, review_recommended, no_review_needed | 이 발견 유형에 지정된 검토 우선순위입니다. 개별 스캔 발견 항목의 severity, UI badge, 프로젝트의 전체 검토 우선순위와 다를 수 있습니다. 값이 추가될 수 있으므로 클라이언트는 알 수 없는 값을 허용해야 합니다. | needs_review |
title | 예 | string | - | 발견 유형의 짧은 표시 이름입니다. 프로그램에서 매칭할 때는 id를 사용하세요. | Public app with security errors |
WorkspaceInsightsProject
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
activity_group | 예 | `string \ | null` | enum: last_14_days, last_60_days, older, null | 마지막 편집의 최근성입니다. 14일과 60일 경계를 사용합니다. 프로젝트가 편집된 적 없으면 null입니다. 값이 추가될 수 있으므로 클라이언트는 알 수 없는 값을 허용해야 합니다. |
connectors | 예 | array of string | - | 프로젝트에 연결된 서비스 이름입니다. 없으면 빈 배열입니다. | - |
description | 예 | `string \ | null` | - | 프로젝트가 수행하는 일을 AI가 작성한 요약입니다. agent가 프로젝트에 대한 응답을 완료하기 전까지는 null입니다. |
edge_functions | 예 | array of WorkspaceInsightsEdgeFunction | - | 프로젝트에 배포된 backend function입니다. 없으면 빈 배열입니다. | - |
edit_count | 예 | integer | format: int64 | 프로젝트 전체 기간의 총 편집 수입니다. | 128 |
edits_7d | 예 | integer | format: int64 | 최근 7일의 편집 수입니다. | 21 |
edits_24h | 예 | integer | format: int64 | 최근 24시간의 편집 수입니다. | 4 |
edits_30d | 예 | integer | format: int64 | 최근 30일의 편집 수입니다. | 67 |
id | 예 | string | - | 프로젝트 ID입니다. | prj_01jw3k9m2xq8r5v0c7d4e6f2gh |
is_published | 예 | boolean | - | 프로젝트가 게시되었는지 여부입니다. | true |
last_edited_at | 예 | `string \ | null` | format: date-time | 프로젝트가 마지막으로 편집된 시각입니다. 편집된 적 없으면 null입니다. |
last_security_scan_at | 예 | `string \ | null` | format: date-time | 가장 최근 완료된 보안 스캔의 완료 시각입니다. 완료된 스캔이 없으면 null입니다. |
matched_reason | 예 | oneOf(WorkspaceInsightsReason \or null) | - | 정확히 하나의 발견 유형을 선택했을 때 finding_type_id 필터와 일치하는 조건입니다. 그렇지 않으면 null입니다. 더 구체적인 조건이 review_priority_explanation에 표시되면 여기에는 없을 수 있습니다. | - |
message_count | 예 | integer | format: int64 | 현재 UTC calendar month 동안 이 프로젝트에 기록된 agent message 사용량입니다. unlimited plan으로 포함되는 사용량은 제외합니다. | 56 |
name | 예 | `string \ | null` | - | 사람이 읽을 수 있는 프로젝트 이름입니다. 설정되지 않았으면 null입니다. |
owner | 예 | oneOf(WorkspaceInsightsOwner \or null) | - | 프로젝트 소유자입니다. 프로젝트에 활성 소유자가 없으면 null입니다. | - |
publish_audience | 예 | `string \ | null` | enum: public, workspace, custom, null | 게시된 사이트를 열 수 있는 대상입니다. POST 또는 PATCH /v1/projects/{project_id}/publish로 설정한 audience입니다. 사이트가 게시되지 않은 동안에는 null입니다. 값이 추가될 수 있으므로 클라이언트는 알 수 없는 값을 허용해야 합니다. |
review_priority | 예 | `string \ | null` | enum: needs_review, review_recommended, no_review_needed, unscored, null | Security Center 검토 우선순위입니다. 프로젝트가 아직 점수화되지 않았으면 unscored이고 사용할 수 있는 우선순위가 없으면 null입니다. 낮은 우선순위가 보안 문제가 없다는 보장은 아닙니다. 값이 추가될 수 있으므로 클라이언트는 알 수 없는 값을 허용해야 합니다. |
review_priority_explanation | 예 | array of WorkspaceInsightsReason | - | 프로젝트의 검토 우선순위에 기여하는 조건입니다. 모든 점수 입력이 나열되는 것은 아니며 관련 조건이 더 구체적인 설명 아래 합쳐질 수 있습니다. | - |
url | 예 | `string \ | null` | - | 현재 게시된 앱 URL입니다. 프로젝트가 게시되지 않았거나 URL을 사용할 수 없으면 null입니다. |
visibility | 예 | `string \ | null` | enum: restricted, workspace_edit, workspace_view, null | Lovable 에디터에서 프로젝트를 열 수 있는 사람입니다. restricted는 프로젝트 소유자, 초대된 협업자, 워크스페이스 소유자(Business 또는 Enterprise)만 접근할 수 있다는 뜻입니다. workspace_edit는 모든 워크스페이스 멤버가 자신의 워크스페이스 role이 부여하는 접근 수준으로 접근할 수 있다는 뜻입니다. workspace_view는 모든 워크스페이스 멤버가 자신의 role이 부여하는 접근 권한을 읽기 수준으로 제한해 접근한다는 뜻입니다. 명시적인 프로젝트, 폴더, group grant는 여전히 편집을 허용합니다(Business 또는 Enterprise). 게시된 앱 접근 권한은 publish_audience로 별도 구성됩니다. 값이 추가될 수 있으므로 클라이언트는 알 수 없는 값을 허용해야 합니다. |
visitors_7d | 예 | integer | format: int64 | 최근 7일의 고유 방문자 수입니다. | 210 |
visitors_24h | 예 | integer | format: int64 | 최근 24시간의 고유 방문자 수입니다. | 35 |
visitors_30d | 예 | integer | format: int64 | 최근 30일의 고유 방문자 수입니다. | 840 |
Pagination
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
has_more | 예 | boolean | - | 이 페이지 뒤에 더 많은 결과가 있는지 여부입니다. | true |
next_cursor | 예 | `string \ | null` | - | 다음 페이지를 가져오려면 이 값을 cursor query parameter로 전달합니다. opaque string으로 취급하세요. 더 이상 결과가 없으면 null입니다. |
WorkspaceInsightsEdgeFunction
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
name | 예 | string | - | 이 프로젝트에 배포된 backend function의 이름입니다. | send-welcome-email |
WorkspaceInsightsReason
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
category | 예 | string | enum: security, data, exposure, credentials, access, integrations, runtime | 검토 우선순위에 기여하는 조건의 topic입니다. 값이 추가될 수 있으므로 클라이언트는 알 수 없는 값을 허용해야 합니다. | data |
detail | 예 | string | - | 이 조건이 프로젝트 검토 우선순위에 어떻게 기여하는지에 대한 설명입니다. | A public table exposes personal data to anonymous callers. |
id | 예 | string | - | 이 프로젝트의 검토 우선순위에 기여하는 조건의 안정적인 식별자입니다. | public_pii_exposure |
label | 예 | string | - | 이 조건의 짧은 표시 이름입니다. 프로그램에서 매칭할 때는 id를 사용하세요. | Public PII exposure |
review_priority | 예 | string | enum: needs_review, review_recommended, no_review_needed | 이 조건에 지정된 검토 우선순위입니다. 프로젝트의 전체 우선순위와 다를 수 있습니다. 값이 추가될 수 있으므로 클라이언트는 알 수 없는 값을 허용해야 합니다. | needs_review |
values | 예 | oneOf(WorkspaceInsightsReasonValues \or null) | - | 이 조건과 관련된 카운트입니다. 적용되지 않는 카운트는 null입니다. 조건에 카운트가 없으면 전체가 null입니다. | - |
WorkspaceInsightsOwner
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
display_name | 예 | `string \ | null` | - | 프로젝트 소유자의 표시 이름입니다. 사용할 수 없으면 null입니다. |
WorkspaceInsightsReasonValues
| 필드 | 필수 | 타입 | 제약 | 설명 | 예시 |
|---|---|---|---|---|---|
connector_count | 예 | `integer \ | null` | format: int64 | 구성된 connector 수입니다. |
edge_function_count | 예 | `integer \ | null` | format: int64 | 배포된 edge function 수입니다. |
error_count | 예 | `integer \ | null` | format: int64 | error 수준 보안 발견 항목 수입니다. |
info_count | 예 | `integer \ | null` | format: int64 | info 수준 보안 발견 항목 수입니다. |
open_pii_finding_count | 예 | `integer \ | null` | format: int64 | 열린 PII 발견 항목 수입니다. |
secret_count | 예 | `integer \ | null` | format: int64 | 저장된 프로젝트 secret 수입니다. |
shared_user_count | 예 | `integer \ | null` | format: int64 | 프로젝트가 공유된 사용자 수입니다. |
warning_count | 예 | `integer \ | null` | format: int64 | warning 수준 보안 발견 항목 수입니다. |