The API plugin's enabled/route/session_enabled/cors/rate_limit config lived only in the untracked user/plugins/api/api.yaml, so a fresh install (prod) had no working /api — Admin2, which authenticates via /api/v1, could not log in. Move the functional config into the tracked override user/config/plugins/api.yaml (merged over the plugin defaults). Secrets (JWT) stay in the gitignored api-private.php; the auto-generated popularity salt is intentionally not committed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Np4cMQLF77i664CAQXySzU
61 lines
1.0 KiB
YAML
61 lines
1.0 KiB
YAML
enabled: true
|
|
route: /api
|
|
version_prefix: v1
|
|
auth:
|
|
api_keys_enabled: true
|
|
jwt_enabled: true
|
|
jwt_algorithm: HS256
|
|
jwt_expiry: 3600
|
|
jwt_refresh_expiry: 604800
|
|
session_enabled: true
|
|
cors:
|
|
enabled: true
|
|
origins: { }
|
|
methods:
|
|
- GET
|
|
- POST
|
|
- PATCH
|
|
- DELETE
|
|
- OPTIONS
|
|
headers:
|
|
- Content-Type
|
|
- Authorization
|
|
- X-API-Key
|
|
- X-API-Token
|
|
- X-Grav-Environment
|
|
- If-Match
|
|
- If-None-Match
|
|
expose_headers:
|
|
- ETag
|
|
- X-Invalidates
|
|
- X-RateLimit-Limit
|
|
- X-RateLimit-Remaining
|
|
- X-RateLimit-Reset
|
|
max_age: 86400
|
|
credentials: false
|
|
rate_limit:
|
|
enabled: true
|
|
requests: 120
|
|
window: 60
|
|
storage: file
|
|
flex_backend:
|
|
pages: true
|
|
accounts: true
|
|
pagination:
|
|
default_per_page: 20
|
|
max_per_page: 1000
|
|
invitations:
|
|
expiration: 604800
|
|
popularity:
|
|
enabled: true
|
|
exclude_admin: true
|
|
exclude_ips: { }
|
|
history:
|
|
daily: 30
|
|
monthly: 12
|
|
visitors: 20
|
|
ignore:
|
|
- '/test*'
|
|
- /modular
|
|
salt: 37517ad926e4f900863af7f1b58718cdccc34f7265dedd09d33b6f820046c510
|