
# API 목록

`GET /v1/apis` · 권한 `apis:read`

환경의 API(리소스 서버)를 최신순으로 커서 페이지로 반환합니다. 삭제된 API는 나열되지 않습니다. 환경은 자격증명에서만 가져옵니다. 시스템 API(`urn:idp:organization`)는 `is_system: true`로 포함됩니다.

## 요청

| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| `limit` | integer | 아니오 | 1-100, 기본값 20. |
| `after` | string | 아니오 | `list_metadata.after`의 커서입니다. `before`과 상호 배타적입니다. |
| `before` | string | 아니오 | `list_metadata.before`의 커서입니다. |
| `order` | string | 아니오 | `asc` 또는 `desc`(기본값). 커서는 동일한 `order`에서만 유효합니다. |

## 응답

`200 OK`

```json
{
  "data": [ {
  "id": "api_01h455vb4pex5vsknk084sn02q",
  "key": "orders",
  "identifier": "https://api.example.com/orders",
  "name": "Orders API",
  "is_system": false,
  "access_token_lifetime_s": 3600,
  "token_format": "jwt",
  "rbac_mode": "off",
  "allow_offline_access": true,
  "require_resource_indicator": false,
  "dpop_required": false,
  "mcp_profile": false,
  "first_party_access": "all",
  "introspection_applications": [],
  "created_at": "2026-10-05T12:00:00Z",
  "updated_at": "2026-10-05T12:00:00Z"
} ],
  "list_metadata": { "before": null, "after": "eyJ2IjoxLi4ufQ" }
}
```

`null` 커서는 해당 방향에 더 이상 레코드가 없음을 의미합니다. 전체 개수는 반환되지 않습니다.

## 오류

| HTTP | code | 언제 |
|---|---|---|
| 400 | `invalid_cursor` | 커서가 잘못되었거나, 변조되었거나, 다른 환경 또는 `order`에 대해 발급되었습니다. |
| 422 | `validation_failed` | 쿼리 매개변수가 유효하지 않습니다(`errors[].pointer`가 이를 지정합니다). |
| 403 | `insufficient_permissions` | 자격증명에 `apis:read`가 없습니다. |

## 예제

```bash
curl "https://api.eu.keenauth.com/v1/apis?limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
