확장 API 문서가 인덱스·목차 어디에도 노출되지 않아 처음 온 개발자/AI 가
발견할 수 없던 간극을 해소했다. 코어에 확장명을 하드코딩하지 않고(동적 로딩 원칙),
파일 시스템 패턴 스캔 + 확장 소유 목차 규약으로 발견성을 확보한다.
- ApiDocScaffolder::readmeIndex — 각 대상의 docs/api/README.md 목차(도메인 파일·
엔드포인트 수)를 @generated 블록으로 생성(멱등, 사람 개요 보존). 커맨드가 대상별
README 를 방출(readmeFile 경로 헬퍼). 코어 + 9 확장 = 10개 목차 생성.
- generate-docs-index.cjs scanExtensionApiReadmes — {modules,plugins}/_bundled/*/
docs/api/README.md 를 패턴 스캔(확장명 하드코딩 0)해 ·AGENTS.md 에
"확장 API 레퍼런스" 표로 자동 편입. 확장 추가/삭제 시 재생성만으로 반영.
- api-documentation.md 에 README 목차 규약 + 발견 경로 명문화. coverage.json 에
api-doc-readme-index(manual-only) 등록. 루트 README API 레퍼런스 링크 갱신.
테스트: readmeIndex 목차 생성·멱등 2건 + 스캐너 편입·하드코딩부재 2건(node --test).
49 lines
2.3 KiB
Markdown
49 lines
2.3 KiB
Markdown
# API 레퍼런스 문서 목차
|
|
|
|
> **소유**: 코어 · **생성**: `php artisan api:docgen` (실측 기반).
|
|
> 아래 표는 자동 생성됩니다. 각 문서를 열면 엔드포인트별 파라미터·응답·예시를 볼 수 있습니다.
|
|
|
|
<!-- @generated:start:api-readme-index -->
|
|
- **문서 수**: 35 · **엔드포인트 수**: 291
|
|
|
|
| 문서 | 도메인 | 엔드포인트 |
|
|
| --- | --- | --- |
|
|
| [activity-logs.md](activity-logs.md) | `activity-logs` | 3 |
|
|
| [attachment.md](attachment.md) | `attachment` | 1 |
|
|
| [attachments.md](attachments.md) | `attachments` | 4 |
|
|
| [auth.md](auth.md) | `auth` | 15 |
|
|
| [avatar.md](avatar.md) | `avatar` | 2 |
|
|
| [broadcasting.md](broadcasting.md) | `broadcasting` | 1 |
|
|
| [changelog.md](changelog.md) | `changelog` | 1 |
|
|
| [core-update.md](core-update.md) | `core-update` | 2 |
|
|
| [dashboard.md](dashboard.md) | `dashboard` | 5 |
|
|
| [extensions.md](extensions.md) | `extensions` | 3 |
|
|
| [identity.md](identity.md) | `identity` | 27 |
|
|
| [language-packs.md](language-packs.md) | `language-packs` | 15 |
|
|
| [layouts.md](layouts.md) | `layouts` | 2 |
|
|
| [license.md](license.md) | `license` | 1 |
|
|
| [locales.md](locales.md) | `locales` | 1 |
|
|
| [me.md](me.md) | `me` | 3 |
|
|
| [menus.md](menus.md) | `menus` | 10 |
|
|
| [modules.md](modules.md) | `modules` | 25 |
|
|
| [notification-channels.md](notification-channels.md) | `notification-channels` | 1 |
|
|
| [notification-definitions.md](notification-definitions.md) | `notification-definitions` | 5 |
|
|
| [notification-logs.md](notification-logs.md) | `notification-logs` | 3 |
|
|
| [notification-templates.md](notification-templates.md) | `notification-templates` | 4 |
|
|
| [notifications.md](notifications.md) | `notifications` | 14 |
|
|
| [password.md](password.md) | `password` | 1 |
|
|
| [permissions.md](permissions.md) | `permissions` | 1 |
|
|
| [plugins.md](plugins.md) | `plugins` | 27 |
|
|
| [profile.md](profile.md) | `profile` | 4 |
|
|
| [roles.md](roles.md) | `roles` | 7 |
|
|
| [schedules.md](schedules.md) | `schedules` | 12 |
|
|
| [search.md](search.md) | `search` | 1 |
|
|
| [seo.md](seo.md) | `seo` | 5 |
|
|
| [settings.md](settings.md) | `settings` | 15 |
|
|
| [templates.md](templates.md) | `templates` | 57 |
|
|
| [users.md](users.md) | `users` | 12 |
|
|
| [verify-password.md](verify-password.md) | `verify-password` | 1 |
|
|
|
|
<!-- @generated:end -->
|
|
|