Curse Subscriptions API

The Subscriptions API from Curse — 5 operation(s) for subscriptions.

OpenAPI Specification

curse-subscriptions-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: CurseForge Core Categories Subscriptions API
  description: All endpoints use the same base URL - [https://api.curseforge.com](https://api.curseforge.com)
  version: v1
servers:
- url: https://api.curseforge.com
security:
- API_KEY: []
tags:
- name: Subscriptions
paths:
  /v1/users/me/mods/subscriptions:
    get:
      tags:
      - Subscriptions
      description: Get the current user's subscribed mods for the given game key
      operationId: Get Mods Subscriptions
      parameters:
      - name: index
        in: query
        description: 'A zero based index of the first item to include in the response,  the limit is: (index + pageSize <= 10,000).'
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: pageSize
        in: query
        description: The number of items to include in the response,  the default/maximum value is 50.
        schema:
          type: integer
          format: int32
        x-position: 2
      - name: gameId
        in: query
        schema:
          type: integer
          format: int32
          nullable: true
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Search Mods Response'
        '500':
          description: ''
        '403':
          description: ''
        '405':
          description: ''
  /v1/users/me/mods/subscriptions/ids:
    get:
      tags:
      - Subscriptions
      description: Get the current user's subscribed mods for the given game key
      operationId: Get Mods Subscriptions2
      parameters:
      - name: index
        in: query
        description: 'A zero based index of the first item to include in the response,  the limit is: (index + pageSize <= 10,000).'
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: pageSize
        in: query
        description: The number of items to include in the response,  the default/maximum value is 50.
        schema:
          type: integer
          format: int32
        x-position: 2
      - name: gameId
        in: query
        schema:
          type: integer
          format: int32
          nullable: true
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Search Mods Response'
        '500':
          description: ''
        '403':
          description: ''
        '405':
          description: ''
  /v1/users/me/mods/subscriptions/subscribe:
    post:
      tags:
      - Subscriptions
      summary: ''
      operationId: Add a list of mod ids to the user's subscribed mods
      requestBody:
        x-name: request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscribeModIdsRequestBody'
        required: true
        x-position: 1
      responses:
        '500':
          description: ''
        '400':
          description: ''
  /v1/users/me/mods/subscriptions/subscribe/{modId}:
    post:
      tags:
      - Subscriptions
      summary: ''
      operationId: Add a mod id to the user's subscribed mods
      parameters:
      - name: modId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Get Mod Response'
        '500':
          description: ''
        '403':
          description: ''
        '405':
          description: ''
        '404':
          description: ''
        '400':
          description: ''
  /v1/users/me/mods/subscriptions/unsubscribe/{modId}:
    post:
      tags:
      - Subscriptions
      summary: ''
      operationId: Remove a mod id from the user's subscribed mods
      parameters:
      - name: modId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '500':
          description: ''
        '403':
          description: ''
        '405':
          description: ''
components:
  schemas:
    File:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          description: The file id
          format: int32
        gameId:
          type: integer
          description: The game id related to the mod that this file belongs to
          format: int32
        modId:
          type: integer
          description: The mod id
          format: int32
        isAvailable:
          type: boolean
          description: Whether the file is available to download
        displayName:
          type: string
          description: Display name of the file
        fileName:
          type: string
          description: Exact file name
        releaseType:
          description: The file release type
          $ref: '#/components/schemas/FileReleaseType'
        fileStatus:
          description: Status of the file
          $ref: '#/components/schemas/FileStatus'
        hashes:
          type: array
          description: The file hash (i.e. md5 or sha1)
          items:
            $ref: '#/components/schemas/FileHash'
        fileDate:
          type: string
          description: The file timestamp
          format: date-time
        fileLength:
          type: integer
          description: The file length in bytes
          format: int64
        downloadCount:
          type: integer
          description: The number of downloads for the file
          format: int64
        fileSizeOnDisk:
          type: integer
          description: The file's size on disk
          format: int64
          nullable: true
        downloadUrl:
          type: string
          description: The file download URL
        gameVersions:
          type: array
          description: List of game versions this file is relevant for
          items:
            type: string
        sortableGameVersions:
          type: array
          description: Metadata used for sorting by game versions
          items:
            $ref: '#/components/schemas/SortableGameVersion'
        dependencies:
          type: array
          description: List of dependencies files
          items:
            $ref: '#/components/schemas/FileDependency'
        exposeAsAlternative:
          type: boolean
          nullable: true
        parentProjectFileId:
          type: integer
          format: int32
          nullable: true
        alternateFileId:
          type: integer
          format: int32
          nullable: true
        isServerPack:
          type: boolean
          nullable: true
        serverPackFileId:
          type: integer
          format: int32
          nullable: true
        isEarlyAccessContent:
          type: boolean
          nullable: true
        earlyAccessEndDate:
          type: string
          format: date-time
          nullable: true
        fileFingerprint:
          type: integer
          format: int64
        modules:
          type: array
          items:
            $ref: '#/components/schemas/FileModule'
        cookingInfo:
          $ref: '#/components/schemas/CookerInfo'
    ModLinks:
      type: object
      additionalProperties: false
      properties:
        websiteUrl:
          type: string
        wikiUrl:
          type: string
        issuesUrl:
          type: string
        sourceUrl:
          type: string
    RatingDetails:
      type: object
      additionalProperties: false
      properties:
        rating:
          type: number
          format: decimal
          nullable: true
        totalRatings:
          type: integer
          format: int32
          nullable: true
        positiveRatings:
          type: integer
          format: int32
          nullable: true
        score:
          $ref: '#/components/schemas/RatingScore'
    FileHash:
      type: object
      additionalProperties: false
      properties:
        value:
          type: string
        algo:
          $ref: '#/components/schemas/HashAlgo'
    RatingScore:
      type: integer
      description: '0 = NotEnoughReviews

        1 = OverwhelminglyPositive

        2 = VeryPositive

        3 = Positive

        4 = MostlyPositive

        5 = Mixed

        6 = MostlyNegative

        7 = Negative

        8 = VeryNegative

        9 = OverwhelminglyNegative'
      x-enumNames:
      - NotEnoughReviews
      - OverwhelminglyPositive
      - VeryPositive
      - Positive
      - MostlyPositive
      - Mixed
      - MostlyNegative
      - Negative
      - VeryNegative
      - OverwhelminglyNegative
      enum:
      - 0
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
      - 7
      - 8
      - 9
    SubscribeModIdsRequestBody:
      type: object
      additionalProperties: false
      properties:
        modIds:
          type: array
          items:
            type: integer
            format: int32
    Mod:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          description: The mod id
          format: int32
        gameId:
          type: integer
          description: The game id this mod is for
          format: int32
        name:
          type: string
          description: The name of the mod
        slug:
          type: string
          description: The mod slug that would appear in the URL
        links:
          description: Relevant links for the mod such as Issue tracker and Wiki
          $ref: '#/components/schemas/ModLinks'
        summary:
          type: string
          description: Mod summary
        status:
          description: Current mod status
          $ref: '#/components/schemas/ModStatus'
        downloadCount:
          type: integer
          description: Number of downloads for the mod
          format: int64
        isFeatured:
          type: boolean
          description: Whether the mod is included in the featured mods list
        primaryCategoryId:
          type: integer
          description: The main category of the mod as it was chosen by the mod author
          format: int32
        categories:
          type: array
          description: List of categories that this mod is related to
          items:
            $ref: '#/components/schemas/Category'
        classId:
          type: integer
          description: The class id this mod belongs to
          format: int32
          nullable: true
        authors:
          type: array
          description: List of the mod's authors
          items:
            $ref: '#/components/schemas/ModAuthor'
        logo:
          description: The mod's logo asset
          $ref: '#/components/schemas/ModAsset'
        screenshots:
          type: array
          description: List of screenshots assets
          items:
            $ref: '#/components/schemas/ModAsset'
        videos:
          type: array
          description: List of videos assets
          items:
            $ref: '#/components/schemas/ModAsset'
        mainFileId:
          type: integer
          description: The id of the main file of the mod
          format: int32
        latestFiles:
          type: array
          description: List of latest files of the mod
          items:
            $ref: '#/components/schemas/File'
        latestFilesIndexes:
          type: array
          description: List of file related details for the latest files of the mod
          items:
            $ref: '#/components/schemas/FileIndex'
        latestEarlyAccessFilesIndexes:
          type: array
          description: List of file related details for the latest early access files of the mod
          items:
            $ref: '#/components/schemas/FileIndex'
        dateCreated:
          type: string
          description: The creation date of the mod
          format: date-time
        dateModified:
          type: string
          description: The last time the mod was modified
          format: date-time
        dateReleased:
          type: string
          description: The release date of the mod
          format: date-time
        dateLastReleasedFile:
          type: string
          description: The last file release date
          format: date-time
          nullable: true
        allowModDistribution:
          type: boolean
          description: Is mod allowed to be distributed
          nullable: true
        gamePopularityRank:
          type: integer
          description: The mod popularity rank for the game
          format: int32
        isAvailable:
          type: boolean
          description: Is the mod available for search. This can be false when a mod is experimental, in a deleted state or has only alpha files
        hasCommentsEnabled:
          type: boolean
          description: Does the mod enable comments
          nullable: true
        thumbsUpCount:
          type: integer
          description: The mod's thumbs up count
          format: int32
        ratingDetails:
          description: The mod's Rating Details
          $ref: '#/components/schemas/RatingDetails'
        serverAffiliation:
          description: The mod's server affiliation details
          $ref: '#/components/schemas/ServerAffiliation'
        socialLinks:
          type: array
          description: The mod's social links
          items:
            $ref: '#/components/schemas/SocialLink'
        galleryItems:
          type: array
          description: The mod's gallery items
          items:
            $ref: '#/components/schemas/GalleryItem'
        featuredProjectTag:
          $ref: '#/components/schemas/ClientFeaturedProjectTag'
    ModAuthor:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        url:
          type: string
        avatarUrl:
          type: string
    SocialLinkType:
      type: integer
      description: '1 = Mastodon

        2 = Discord

        3 = Website

        4 = Facebook

        5 = Twitter

        6 = Instagram

        7 = Patreon

        8 = Twitch

        9 = Reddit

        10 = Youtube

        11 = TikTok

        12 = Pinterest

        13 = Github

        14 = Bsky

        15 = Paypal

        16 = PaypalHosted

        17 = GithubSponsors

        18 = Kofi

        19 = BuyMeACoffee'
      x-enumNames:
      - Mastodon
      - Discord
      - Website
      - Facebook
      - Twitter
      - Instagram
      - Patreon
      - Twitch
      - Reddit
      - Youtube
      - TikTok
      - Pinterest
      - Github
      - Bsky
      - Paypal
      - PaypalHosted
      - GithubSponsors
      - Kofi
      - BuyMeACoffee
      enum:
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
      - 7
      - 8
      - 9
      - 10
      - 11
      - 12
      - 13
      - 14
      - 15
      - 16
      - 17
      - 18
      - 19
    FileModule:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
        fingerprint:
          type: integer
          format: int64
    ModAsset:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          format: int32
        modId:
          type: integer
          format: int32
        title:
          type: string
        description:
          type: string
        thumbnailUrl:
          type: string
        url:
          type: string
    HashAlgo:
      type: integer
      description: '1 = Sha1

        2 = Md5'
      x-enumNames:
      - Sha1
      - Md5
      enum:
      - 1
      - 2
    Search Mods Response:
      type: object
      additionalProperties: false
      properties:
        data:
          type: array
          description: The response data
          items:
            $ref: '#/components/schemas/Mod'
        pagination:
          description: The response pagination information
          $ref: '#/components/schemas/Pagination'
    Pagination:
      type: object
      additionalProperties: false
      properties:
        index:
          type: integer
          description: A zero based index of the first item that is included in the response
          format: int32
        pageSize:
          type: integer
          description: The requested number of items to be included in the response
          format: int32
        resultCount:
          type: integer
          description: The actual number of items that were included in the response
          format: int32
        totalCount:
          type: integer
          description: The total number of items available by the request
          format: int64
    FileIndex:
      type: object
      additionalProperties: false
      properties:
        gameVersion:
          type: string
        fileId:
          type: integer
          format: int32
        filename:
          type: string
        releaseType:
          $ref: '#/components/schemas/FileReleaseType'
        gameVersionTypeId:
          type: integer
          format: int32
          nullable: true
        modLoader:
          nullable: true
          $ref: '#/components/schemas/ModLoaderType'
    SortableGameVersion:
      type: object
      additionalProperties: false
      properties:
        gameVersionName:
          type: string
          description: Original version name (e.g. 1.5b)
        gameVersionPadded:
          type: string
          description: Used for sorting (e.g. 0000000001.0000000005)
        gameVersion:
          type: string
          description: game version clean name (e.g. 1.5)
        gameVersionReleaseDate:
          type: string
          description: Game version release date
          format: date-time
        gameVersionTypeId:
          type: integer
          description: Game version type id
          format: int32
          nullable: true
    ModLoaderType:
      type: integer
      description: '0 = Any

        1 = Forge

        2 = Cauldron

        3 = LiteLoader

        4 = Fabric

        5 = Quilt

        6 = NeoForge'
      x-enumNames:
      - Any
      - Forge
      - Cauldron
      - LiteLoader
      - Fabric
      - Quilt
      - NeoForge
      enum:
      - 0
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
    CookerInfo:
      type: object
      additionalProperties: false
      properties:
        cookerVersion:
          type: string
        cookerRevision:
          type: string
    AffiliationServiceType:
      type: integer
      description: 1 = Bisect
      x-enumNames:
      - Bisect
      enum:
      - 1
    FileStatus:
      type: integer
      description: '1 = Processing

        2 = ChangesRequired

        3 = UnderReview

        4 = Approved

        5 = Rejected

        6 = MalwareDetected

        7 = Deleted

        8 = Archived

        9 = Testing

        10 = Released

        11 = ReadyForReview

        12 = Deprecated

        13 = Baking

        14 = AwaitingPublishing

        15 = FailedPublishing'
      x-enumNames:
      - Processing
      - ChangesRequired
      - UnderReview
      - Approved
      - Rejected
      - MalwareDetected
      - Deleted
      - Archived
      - Testing
      - Released
      - ReadyForReview
      - Deprecated
      - Baking
      - AwaitingPublishing
      - FailedPublishing
      enum:
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
      - 7
      - 8
      - 9
      - 10
      - 11
      - 12
      - 13
      - 14
      - 15
    Category:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          description: The category id
          format: int32
        gameId:
          type: integer
          description: The game id related to the category
          format: int32
        name:
          type: string
          description: Category name
        slug:
          type: string
          description: The category slug as it appear in the URL
        url:
          type: string
          description: The category URL
        iconUrl:
          type: string
          description: URL for the category icon
        dateModified:
          type: string
          description: Last modified date of the category
          format: date-time
        isClass:
          type: boolean
          description: A top level category for other categories
          nullable: true
        classId:
          type: integer
          description: The class id of the category, meaning - the class of which this category is under
          format: int32
          nullable: true
        parentCategoryId:
          type: integer
          description: The parent category for this category
          format: int32
          nullable: true
        displayIndex:
          type: integer
          description: The display index for this category
          format: int32
          nullable: true
    FileReleaseType:
      type: integer
      description: '1 = Release

        2 = Beta

        3 = Alpha'
      x-enumNames:
      - Release
      - Beta
      - Alpha
      enum:
      - 1
      - 2
      - 3
    GalleryItemType:
      type: integer
      description: '0 = None

        1 = Screenshot

        2 = EmbeddedVideo'
      x-enumNames:
      - None
      - Screenshot
      - EmbeddedVideo
      enum:
      - 0
      - 1
      - 2
    ServerAffiliation:
      type: object
      additionalProperties: false
      properties:
        isEnabled:
          type: boolean
        isDefaultBanner:
          type: boolean
        hasDiscount:
          type: boolean
        affiliationService:
          $ref: '#/components/schemas/AffiliationServiceType'
        defaultBannerCustomTitle:
          type: string
        customImageUrl:
          type: string
        affiliationLink:
          type: string
    SocialLink:
      type: object
      additionalProperties: false
      properties:
        type:
          $ref: '#/components/schemas/SocialLinkType'
        url:
          type: string
    ModStatus:
      type: integer
      description: '1 = New

        2 = ChangesRequired

        3 = UnderSoftReview

        4 = Approved

        5 = Rejected

        6 = ChangesMade

        7 = Inactive

        8 = Abandoned

        9 = Deleted

        10 = UnderReview'
      x-enumNames:
      - New
      - ChangesRequired
      - UnderSoftReview
      - Approved
      - Rejected
      - ChangesMade
      - Inactive
      - Abandoned
      - Deleted
      - UnderReview
      enum:
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
      - 7
      - 8
      - 9
      - 10
    ClientFeaturedProjectTag:
      type: integer
      description: '0 = None

        1 = Sponsored

        2 = HiddenGem

        3 = Popular'
      x-enumNames:
      - None
      - Sponsored
      - HiddenGem
      - Popular
      enum:
      - 0
      - 1
      - 2
      - 3
    GalleryItem:
      type: object
      additionalProperties: false
      properties:
        description:
          type: string
        isFeatured:
          type: boolean
        displayIndex:
          type: integer
          format: int32
          nullable: true
        title:
          type: string
        url:
          type: string
        thumbnailUrl:
          type: string
        type:
          $ref: '#/components/schemas/GalleryItemType'
    FileDependency:
      type: object
      additionalProperties: false
      properties:
        modId:
          type: integer
          format: int32
        relationType:
          $ref: '#/components/schemas/FileRelationType'
    FileRelationType:
      type: integer
      description: '1 = EmbeddedLibrary

        2 = OptionalDependency

        3 = RequiredDependency

        4 = Tool

        5 = Incompatible

        6 = Include'
      x-enumNames:
      - EmbeddedLibrary
      - OptionalDependency
      - RequiredDependency
      - Tool
      - Incompatible
      - Include
      enum:
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
    Get Mod Response:
      type: object
      additionalProperties: false
      properties:
        data:
          description: The response data
          $ref: '#/components/schemas/Mod'
  securitySchemes:
    API_KEY:
      type: apiKey
      description: <br/>The API key can be generated in the CurseForge for Studios [developer console](https://console.curseforge.com/).
      name: x-api-key
      in: header
x-generator: NSwag v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v11.0.0.0))