ModReleaser/docs/modrinth/get-project.md
2026-07-13 16:42:52 +08:00

265 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Get Project
获取 Modrinth 上的单个或多个 project 的基本数据。
---
## GET `/project/{id|slug}`
获取单个 project 的完整信息。
### 路径参数
| 参数 | 位置 | 类型 | 必填 | 说明 |
|------|------|------|------|------|
| `id\|slug` | path | `string` | ✅ | Project 的 IDbase62 编码)或 slug用于自定义 URL。 |
### 响应 `200 OK`
返回 [`Project`](#project-模型) 对象。
### 响应 `404 Not Found`
指定的 project 不存在或无权限访问。
---
## GET `/projects`
批量获取多个 project 的完整信息。
### 查询参数
| 参数 | 位置 | 类型 | 必填 | 说明 |
|------|------|------|------|------|
| `ids` | query | `string` | ✅ | 以 JSON 数组格式指定要获取的 project ID 或 slug。例如 `["AABBCCDD", "my_project"]`。 |
### 响应 `200 OK`
返回 [`Project`](#project-模型) 对象数组。
---
## Project 模型
`Project` 继承自多个层级 schema完整字段如下。
> **🔗 Schema 继承关系:** `Project` = `NonSearchProject` + `ServerRenderedProject` + 自身字段
>
> 其中 `NonSearchProject` 和 `ServerRenderedProject` 均继承自 `BaseProject`。
```
Project
├── BaseProject (基础信息)
│ ├── slug
│ ├── title
│ ├── description
│ ├── categories
│ ├── client_side
│ └── server_side
├── NonSearchProject (非搜索专属字段)
│ ├── body
│ ├── status
│ ├── requested_status
│ ├── additional_categories
│ ├── issues_url
│ ├── source_url
│ ├── wiki_url
│ ├── discord_url
│ └── donation_urls
├── ServerRenderedProject (服务端渲染字段)
│ ├── project_type
│ ├── downloads
│ ├── icon_url
│ ├── color
│ ├── thread_id
│ └── monetization_status
└── Project (自身字段)
├── id
├── team
├── body_url ⚠️
├── moderator_message ⚠️
├── published
├── updated
├── approved
├── queued
├── followers
├── license
├── versions
├── game_versions
├── loaders
└── gallery
```
### 字段一览
| 字段 | 类型 | 来源 | 说明 |
|------|------|------|------|
| `id` | `string` | Project | Project IDbase62 编码)。 |
| `slug` | `string` | BaseProject | 用于自定义 URL 的简短标识符,正则 `^[\w!@$().`+,"'-]{3,64}$`。 |
| `title` | `string` | BaseProject | Project 名称或标题。 |
| `description` | `string` | BaseProject | 简短描述。 |
| `body` | `string` | NonSearchProject | 长描述(支持 Markdown。 |
| `categories` | `string[]` | BaseProject | 主分类列表。 |
| `additional_categories` | `string[]` | NonSearchProject | 附加分类(可搜索但非主要)。 |
| `client_side` | `string` | BaseProject | 客户端支持类型。`required` / `optional` / `unsupported` / `unknown`。 |
| `server_side` | `string` | BaseProject | 服务端支持类型。`required` / `optional` / `unsupported` / `unknown`。 |
| `project_type` | `string` | ServerRenderedProject | 项目类型。`mod` / `modpack` / `resourcepack` / `shader`。 |
| `downloads` | `integer` | ServerRenderedProject | 总下载次数。 |
| `followers` | `integer` | Project | 关注者数量。 |
| `status` | `string` | NonSearchProject | 项目状态:`approved` / `archived` / `rejected` / `draft` / `unlisted` / `processing` / `withheld` / `scheduled` / `private` / `unknown`。 |
| `requested_status` | `string` ⚠️ | NonSearchProject | 申请中的状态。`approved` / `archived` / `unlisted` / `private` / `draft`。可为 `null`。 |
| `license` | [`ProjectLicense`](#projectlicense) | Project | 许可证信息。 |
| `team` | `string` | Project | 拥有此 project 的团队 ID。 |
| `published` | `string` (ISO-8601) | Project | 发布日期。 |
| `updated` | `string` (ISO-8601) | Project | 最后更新日期。 |
| `approved` | `string` (ISO-8601) ⚠️ | Project | 审核通过日期。可为 `null`。 |
| `queued` | `string` (ISO-8601) ⚠️ | Project | 提交审核日期。可为 `null`。 |
| `icon_url` | `string` ⚠️ | ServerRenderedProject | 图标 URL。可为 `null`。 |
| `color` | `integer` ⚠️ | ServerRenderedProject | 从图标自动生成的 RGB 颜色值。可为 `null`。 |
| `thread_id` | `string` | ServerRenderedProject | 关联的审核线程 ID。 |
| `monetization_status` | `string` | ServerRenderedProject | 变现状态。`monetized` / `demonetized` / `force-demonetized`。 |
| `issues_url` | `string` ⚠️ | NonSearchProject | 问题跟踪链接。可为 `null`。 |
| `source_url` | `string` ⚠️ | NonSearchProject | 源代码链接。可为 `null`。 |
| `wiki_url` | `string` ⚠️ | NonSearchProject | Wiki 链接。可为 `null`。 |
| `discord_url` | `string` ⚠️ | NonSearchProject | Discord 邀请链接。可为 `null`。 |
| `donation_urls` | [`ProjectDonationURL[]`](#projectdonationurl) | NonSearchProject | 捐赠链接列表。 |
| `body_url` | `string` ⚠️ ⛔ | Project | 已弃用,始终为 `null`。 |
| `moderator_message` | [`ModeratorMessage`](#moderatormessage) ⛔ | Project | 已弃用,始终为 `null`。 |
| `versions` | `string[]` | Project | 所有版本 ID 列表(`draft` 状态时为空)。 |
| `game_versions` | `string[]` | Project | 支持的 Minecraft 版本列表。 |
| `loaders` | `string[]` | Project | 支持的模组加载器列表。 |
| `gallery` | [`GalleryImage[]`](#galleryimage) | Project | 图库图片列表。 |
> ⚠️ 表示可为 `null`。⛔ 表示已弃用。
---
### ProjectLicense
| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | `string` | SPDX 许可证 ID`LGPL-3.0-or-later`)。 |
| `name` | `string` | 许可证全名(如 `GNU Lesser General Public License v3 or later`)。 |
| `url` | `string` ⚠️ | 许可证文本 URL可为 `null`。 |
### ProjectDonationURL
| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | `string` | 捐赠平台 ID`patreon`)。 |
| `platform` | `string` | 捐赠平台名称(如 `Patreon`)。 |
| `url` | `string` | 捐赠链接。 |
### GalleryImage
| 字段 | 类型 | 说明 |
|------|------|------|
| `url` | `string` | 图片 URL。 |
| `featured` | `boolean` | 是否为精选图片。 |
| `title` | `string` ⚠️ | 图片标题,可为 `null`。 |
| `description` | `string` ⚠️ | 图片描述,可为 `null`。 |
| `created` | `string` (ISO-8601) | 创建日期。 |
| `ordering` | `integer` | 排序序号(先按此字段排,再按标题字母序排)。 |
### ModeratorMessage
> ⛔ 已弃用,始终为 `null`。
| 字段 | 类型 | 说明 |
|------|------|------|
| `message` | `string` | 审核员留言。 |
| `body` | `string` ⚠️ | 留言详细内容,可为 `null`。 |
---
## 示例
### 请求 - 获取单个 project
```bash
curl -X GET "https://api.modrinth.com/v2/project/my_project"
```
### 响应
```json
{
"id": "AABBCCDD",
"slug": "my_project",
"team": "MMNNOOPP",
"title": "My Project",
"description": "A short description",
"body": "A long body describing my project in detail",
"categories": ["technology", "adventure", "fabric"],
"additional_categories": ["utility"],
"client_side": "required",
"server_side": "optional",
"project_type": "mod",
"status": "approved",
"requested_status": null,
"downloads": 52341,
"followers": 1203,
"license": {
"id": "MIT",
"name": "MIT License",
"url": "https://opensource.org/licenses/MIT"
},
"published": "2023-03-15T10:30:00Z",
"updated": "2024-01-20T14:22:00Z",
"approved": "2023-03-15T12:00:00Z",
"queued": null,
"icon_url": "https://cdn.modrinth.com/data/AABBCCDD/icon.png",
"color": 8703084,
"thread_id": "TTUUVVWW",
"monetization_status": "monetized",
"issues_url": "https://github.com/my_user/my_project/issues",
"source_url": "https://github.com/my_user/my_project",
"wiki_url": null,
"discord_url": "https://discord.gg/AaBbCcDd",
"donation_urls": [
{
"id": "patreon",
"platform": "Patreon",
"url": "https://www.patreon.com/my_user"
}
],
"body_url": null,
"moderator_message": null,
"versions": ["IIJJKKLL", "QaRSSTT"],
"game_versions": ["1.19", "1.19.1", "1.19.2", "1.19.3"],
"loaders": ["forge", "fabric", "quilt"],
"gallery": [
{
"url": "https://cdn.modrinth.com/data/AABBCCDD/images/009b7d8d6e8bf04968a29421117c59b3efe2351a.png",
"featured": true,
"title": "My awesome screenshot!",
"description": "This awesome screenshot shows all of the blocks in my mod!",
"created": "2023-06-01T08:15:00Z",
"ordering": 0
}
]
}
```
### 请求 - 批量获取多个 project
```bash
curl -X GET "https://api.modrinth.com/v2/projects?ids=%5B%22AABBCCDD%22%2C%22my_project%22%5D"
```
> URL 编码后的 `ids` 参数值为 `["AABBCCDD","my_project"]`。
### 响应
```json
[
{ "...": "..." },
{ "...": "..." }
]
```
返回 `Project` 对象数组,每个对象结构与单个获取一致。