Parent: #4
Delivers functions for uploading new files to CurseForge projects and updating existing file metadata. These are the primary write operations for mod authors managing their releases.
Acceptance criteria:
Endpoints:
| Function |
Method |
Path |
Content-Type |
Publish-CurseForgeProjectFile |
POST |
/api/projects/{projectId}/upload-file |
multipart/form-data |
Update-CurseForgeProjectFile |
POST |
/api/projects/{projectId}/update-file |
multipart/form-data |
Upload metadata fields:
{
"changelog": "string",
"changelogType": "text|html|markdown",
"displayName": "string",
"parentFileID": 42,
"gameVersions": [157, 158],
"releaseType": "alpha|beta|release",
"relations": {
"projects": [{
"slug": "string",
"type": "embeddedLibrary|incompatible|optionalDependency|requiredDependency|tool"
}]
}
}
Update metadata fields: Same as upload minus the file, plus mandatory fileID.
Decision: Publish- verb for new uploads (creating a release), Update- verb for modifying existing (matches PowerShell verb semantics). Both use SupportsShouldProcess since they mutate remote state.
Blocked by: #11 (needs Upload API client)
Sub-issues
See linked Tasks below.
Parent: #4
Delivers functions for uploading new files to CurseForge projects and updating existing file metadata. These are the primary write operations for mod authors managing their releases.
Acceptance criteria:
Publish-CurseForgeProjectFileuploads a file with metadata (multipart/form-data)Update-CurseForgeProjectFileupdates metadata on an existing fileSupportsShouldProcessenabled (state-mutating operations)Endpoints:
Publish-CurseForgeProjectFile/api/projects/{projectId}/upload-fileUpdate-CurseForgeProjectFile/api/projects/{projectId}/update-fileUpload metadata fields:
{ "changelog": "string", "changelogType": "text|html|markdown", "displayName": "string", "parentFileID": 42, "gameVersions": [157, 158], "releaseType": "alpha|beta|release", "relations": { "projects": [{ "slug": "string", "type": "embeddedLibrary|incompatible|optionalDependency|requiredDependency|tool" }] } }Update metadata fields: Same as upload minus the file, plus mandatory
fileID.Decision:
Publish-verb for new uploads (creating a release),Update-verb for modifying existing (matches PowerShell verb semantics). Both useSupportsShouldProcesssince they mutate remote state.Blocked by: #11 (needs Upload API client)
Sub-issues
See linked Tasks below.