Skip to content

CurseForge PowerShell Module — Full API Coverage #4

@MariusStorhaug

Description

A PowerShell module developer working with games on CurseForge needs a way to interact with the CurseForge platform programmatically from PowerShell. No PSModule-framework-compliant module currently exists for this purpose.

CurseForge exposes two distinct APIs:

  1. CurseForge Core APIhttps://api.curseforge.com — read access to games, mods, files, categories, fingerprints, and Minecraft-specific data. Authenticated via x-api-key header with a key from the CurseForge for Studios Console.
  2. CurseForge Upload API — site-relative endpoints for managing project files. Authenticated via X-Api-Token header with a token from the API Tokens page.

The module uses the Context module to persist credentials locally, follows PSModule Standards, and provides an ergonomic PowerShell experience over the raw REST surface.

Acceptance criteria:

  • v1.0 delivers working auth, central client, and Games endpoints (foundation proving the pattern)
  • Subsequent features add non-breaking functionality (Minor version bumps only)
  • All 28 API endpoints across both APIs are eventually covered (~25 public functions)
  • Every domain delivers complete vertical slices (classes, enums, types, formats, functions, tests)
  • Verbose, unabbreviated PascalCase naming throughout (no abbreviated class names or properties)

Naming convention (applies to all child issues):

  • Module prefix: CurseForge on all public commands and classes
  • Full unabbreviated PascalCase properties (e.g., DownloadCount, FileSizeOnDisk, GameVersionTypeId)
  • Domain term Mod is preserved (term of art, not an abbreviation)
  • Standard conventions: Id, Url kept per .NET/PowerShell norms
  • Boolean properties: Is, Has, Can prefix

Versioning strategy:

  • PBI 1 (Foundation + Auth + Games) = v1.0.0
  • All subsequent PBIs = non-breaking Minor bumps (v1.1, v1.2, ...)
  • Upload API additions are additive, not breaking

Sub-issues

Child PBIs (Features) covering the full API surface — see linked sub-issues below.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No fields configured for Epic.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions