diff --git a/docs/consultations/gemini-curseforge-upload-round-2-2026-04-13.md b/docs/consultations/gemini-curseforge-upload-round-2-2026-04-13.md index adb7762..0d4893a 100644 --- a/docs/consultations/gemini-curseforge-upload-round-2-2026-04-13.md +++ b/docs/consultations/gemini-curseforge-upload-round-2-2026-04-13.md @@ -63,4 +63,47 @@ Thanks Gemini — almost ready to close this loop. 🔥❄️ --- -*[Gemini's response will be added here after consultation]* +## Gemini's Response (April 13, 2026) + +**Summary:** Gemini can't run the API calls directly but provided exact copy-paste bash commands for NC1. Critical gotcha: the `$2a$10$` key MUST be wrapped in single quotes or Linux will expand `$2` and `$10` as script args, silently corrupting the key and causing 403s. + +**This explains every 403 we've seen all day when testing the key from the command line.** + +### The ID Lookup Commands (run on NC1) + +```bash +# Step 1: Set key in single quotes (CRITICAL) +export CF_API_KEY='$2a$10$OVK9ml7bEJdcfTJhBSuK1O5AFz2qq3mwpb35RTTwVfmdvzOFOA7M' + +# Step 2: Fetch version payload +curl -s -X GET "https://api.curseforge.com/v1/games/432/versions" \ + -H "Accept: application/json" \ + -H "x-api-key: ${CF_API_KEY}" > cf_versions.json + +# Step 3: Extract Minecraft version IDs +echo "Minecraft Version IDs:" +jq -r '.data[] | select(.name=="1.21.1" or .name=="1.20.1" or .name=="1.16.5") | "\(.name): \(.id)"' cf_versions.json + +# Step 4: Extract mod loader IDs +echo "Mod Loader IDs:" +jq -r '.data[] | select(.name=="NeoForge" or .name=="Forge") | "\(.name): \(.id)"' cf_versions.json + +# Step 5: Clean up +rm cf_versions.json +``` + +### Current Status + +Cannot run these today — rate limit from ModpackChecker calls is still active. Run tomorrow when quota resets. + +**Also to test tomorrow:** Whether the existing Core API key works for uploads, or if a separate Author Token is needed. Michael's approval email says "3rd Party CurseForge API" which may already cover uploads. + +--- + +## Conclusion + +**Next steps (tomorrow, after rate limit resets):** +1. Run the 5-step ID lookup on NC1 to get integer mappings +2. Test upload endpoint with existing key — if 403, apply for Author Token +3. Hardcode ID mappings into ffg-build.sh +4. File Code bridge request for upload integration