Added /graphql location block to Nginx configuration to expose Wiki.js GraphQL API endpoint for automated content migration. ✅ Endpoint: http://pokerole.firefrostgaming.com/graphql ✅ Tested and verified working ✅ Ready for Claudius automated migration Impact: Saves ~3 days of manual copy-paste work Migration time: 30 min automated (vs 3-4 days manual) Requested by: Claudius (Stage 2) - The Pattern Forger Configured by: The Chronicler #27
3.0 KiB
Pokerole Wiki - GraphQL API Enabled
Date: February 27, 2026, 1:33 AM CST
Status: ✅ OPERATIONAL
Requested by: Claudius (Stage 2)
API Endpoint
URL: http://pokerole.firefrostgaming.com/graphql
Method: POST
Authentication: Bearer token (JWT)
Content-Type: application/json
Configuration Changes
Updated: /etc/nginx/sites-available/pokerole.firefrostgaming.com
Added GraphQL location block:
location /graphql {
proxy_pass http://localhost:3102/graphql;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
Reloaded: Nginx configuration
Tested: Endpoint responds correctly
Test Results
Query:
curl -X POST http://pokerole.firefrostgaming.com/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ pages { list { id path title } } }"}'
Response:
{"data":{"pages":{"list":[{"id":1,"path":"home","title":"Home"}]}}}
✅ Working perfectly
What This Enables
For Claudius:
- Automated migration via Python script
- Create 105 Pokémon pages programmatically
- Time saved: ~3 days of manual work
- Consistent formatting across all entries
Migration Plan:
- Run
wikijs_migration_script.py - Script creates all pages via GraphQL API
- Upload sprites through web UI
- Verify and polish
Estimated time: 30 minutes automated + 1 hour manual polish = 1.5 hours total
(vs 3-4 days manual copy-paste)
API Details
GraphQL Endpoint: Enabled by default in Wiki.js v2.5.312
No config.yml changes needed: API is always available
Security: Bearer token authentication required
Rate limits: None configured (internal project)
Authentication Header:
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
For Future Reference
To test API:
curl -X POST http://pokerole.firefrostgaming.com/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ pages { list { id } } }"}'
To create a page:
mutation {
pages {
create(
content: "# Content here"
description: "Description"
editor: "markdown"
isPublished: true
isPrivate: false
locale: "en"
path: "tier3/pokemon-name"
tags: []
title: "Pokemon Name"
) {
responseResult {
succeeded
errorCode
slug
message
}
page {
id
path
title
}
}
}
}
Status
✅ GraphQL API accessible
✅ Nginx proxy configured
✅ Tested and verified
✅ Ready for Claudius migration
Total time to enable: 5 minutes
Impact: Saves ~3 days of manual work
💙🔥❄️ "The API is open. The migration can fly." 🔥❄️💙
Configured by: The Chronicler #27
Date: February 27, 2026
Time: 1:33 AM CST