Skip to content

V2: Project API Structure #12

@sylv256

Description

@sylv256

Projects should have metadata determined by uploaded JARs or manually set. Mod IDs are important because they will be used in ballotbox and modpack scripts.

Structure

In the project data

{
    "id": "abcde", // Project ID
    "type": "mod", // The type of the project
    "metadata": {
        "mod_id": "mod_id", // Unchangeable (from latest JAR), only for mod projects
        "name": "Mod Name",
        "description": "Mod Description", // Short-form Mod Description
        "source_url": "https://github.com/ModOwner/Mod"
    },
    "team": {
        "abcde": "Member" // User IDs
    },
    "permissions": {
        "abcde": "1" // 64-bit permission bitfield, 1 being Administrator (All Permissions)
    },
    "submissions": [
        "abcde" // Submission ID
    ]
}

In the submission data

{
    "id": "abcde", // Submission ID
    "event": "abcde", // Event ID
    "time_submitted": 1234567890,
    "project": {
        "id": "abcde", // Project ID
        "type": "mod", // The type of the project
        "metadata": {
            "mod_id": "mod_id", // Unchangeable (from latest JAR), only for mod projects
            "name": "Mod Name",
            "description": "Mod Description", // Short-form Mod Description
            "source_url": "https://github.com/ModOwner/Mod"
        },
        "team": {
            "abcde": "Member" // User IDs
        },
        "permissions": {
            "abcde": "1" // 64-bit permission bitfield, 1 being Project Administrator
        },
        "submissions": [
            "abcde" // Submission ID
        ]
    },
    "platform": {
        // Because `type` can be an arbitrary string, clients are required to fail safe when an unexpected value is encountered.
        "type": "modrinth", // modrinth or download_url
        // type: modrinth
        "project_id": "aBCjdxoap", // Modrinth ID
        "version_id": "aBCjdxoap", // Modrinth Version ID
        // type: download_url
        "download_url": "https://example.com/mod.jar"
    }
}

Endpoints

Base: https://api.modgarden.net/v2

GET Project by ID

/project/{project_id}

GET Project by mod ID

/project/mod_id/{mod_id}

GET Submission by ID

/submission/{submission_id}

GET Submission by mod ID

/event/{event_type_slug}/{event_slug}/mod_id/{mod_id}
Example: /events/mod-garden/nature/mod_id/spud_slingers

POST Create Project (Auth)

/project/{project_slug}/create

POST Create Submission in Project (Auth)

/submission/{submission_slug}/create

POST Transfer Submission to Project (Auth)

/submission/{submission_id}/transfer

DELETE Delete Submission (Auth)

/submission/{submission_id}/delete

DELETE Delete Project (Auth)

/project/{project_id}/delete

PUT Add Existing Submission to Project (Auth)

/project/{project_id}/add_submission

PUT Set Team Member Role (Auth)

/project/{project_id}/set_role

{
  "abcde": "Meowmber"
}

PUT Set Team Member Permissions (Auth)

/project/{project_id}/set_permissions

{
  "abcde": "1"
}

PUT Add Team Member (Auth)

/project/{project_id}/add_member

"abcde"

PUT Remove Team Member (Auth)

/project/{project_id}/remove_member

"abcde"

Metadata

Metadata

Labels

enhancementNew feature or request

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions