新增: 邀请项目链接接口文档

This commit is contained in:
yystopf 2022-06-16 11:56:09 +08:00
parent c42f3d5928
commit f6fb50529c
5 changed files with 597 additions and 43 deletions

View File

@ -13,7 +13,6 @@ class Projects::ProjectInviteLinksController < Projects::BaseController
puts params_data
Projects::ProjectInviteLinks::CreateForm.new(params_data).validate!
@project_invite_link = ProjectInviteLink.create!(params_data.merge(sign: ProjectInviteLink.random_hex_sign))
render_ok
end
rescue Exception => e
uid_logger_error(e.message)

View File

@ -1,4 +1,190 @@
# Projects
## 获取项目邀请链接
当前登录管理员用户获取项目邀请链接的接口第一次请求会默认生成role类型为developer和is_apply为true的链接
> 示例:
```shell
curl -X GET http://localhost:3000/api/yystopf/kellect/project_invite_links/current_link.json
```
```javascript
await octokit.request('GET /api/yystopf/kellect/project_invite_links/current_link.json')
```
### HTTP 请求
`GET /api/:owner/:repo/project_invite_links/current_link.json`
### 返回字段说明
参数 | 类型 | 字段说明
--------- | ----------- | -----------
|id |int |链接id |
|role |string |邀请角色|
|is_apply |boolean |是否需要审核 |
|sign |string |邀请标识(放在链接后面即可)|
|user.id |int |链接创建者的id |
|user.type |string |链接创建者的类型 |
|user.name |string |链接创建者的名称 |
|user.login |string |链接创建者的标识 |
|user.image_url |string |链接创建者头像 |
|project.id |int |链接关联项目的id |
|project.identifier |string |链接关联项目的标识 |
|project.name |string |链接关联项目的名称 |
|project.description |string |链接关联项目的描述 |
|project.is_public |bool |链接关联项目是否公开 |
|project.owner.id |bool |链接关联项目拥有者id |
|project.owner.type |string |链接关联项目拥有者类型 |
|project.owner.name |string |链接关联项目拥有者昵称 |
|project.owner.login |string |链接关联项目拥有者标识 |
|project.owner.image_url|string |链接关联项目拥有者头像 |
> 返回的JSON示例:
```json
{
"id": 7,
"role": "developer",
"is_apply": false,
"sign": "6b6b454843c291d4e52e60853cb8ad9f",
"user": {
"id": 2,
"type": "User",
"name": "heh",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png"
},
"project": {
"id": 474,
"identifier": "kellect",
"name": "kellect",
"description": null,
"is_public": true,
"owner": {
"id": 2,
"type": "User",
"name": "heh",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png"
}
}
}
```
## 生成项目邀请链接
当前登录管理员用户生成的项目邀请链接可选role和is_apply参数
> 示例:
```shell
curl -X POST http://localhost:3000/api/yystopf/kellect/project_invite_links/generate_link.json
```
```javascript
await octokit.request('POST /api/yystopf/kellect/project_invite_links/generate_link.json')
```
### HTTP 请求
`POST /api/:owner/:repo/project_invite_links/generate_link.json`
### 请求参数
参数 | 必选 | 默认 | 类型 | 字段说明
--------- | ------- | ------- | -------- | ----------
|role |是| |string |项目权限reporter: 报告者, developer: 开发者manager管理员 |
|is_apply |是| |boolean |是否需要审核 |
> 请求的JSON示例
```json
{
"role": "developer",
"is_apply": false
}
```
### 返回字段说明
参数 | 类型 | 字段说明
--------- | ----------- | -----------
|id |int |链接id |
|role |string |邀请角色|
|is_apply |boolean |是否需要审核 |
|sign |string |邀请标识(放在链接后面即可)|
|user.id |int |链接创建者的id |
|user.type |string |链接创建者的类型 |
|user.name |string |链接创建者的名称 |
|user.login |string |链接创建者的标识 |
|user.image_url |string |链接创建者头像 |
|project.id |int |链接关联项目的id |
|project.identifier |string |链接关联项目的标识 |
|project.name |string |链接关联项目的名称 |
|project.description |string |链接关联项目的描述 |
|project.is_public |bool |链接关联项目是否公开 |
|project.owner.id |bool |链接关联项目拥有者id |
|project.owner.type |string |链接关联项目拥有者类型 |
|project.owner.name |string |链接关联项目拥有者昵称 |
|project.owner.login |string |链接关联项目拥有者标识 |
|project.owner.image_url|string |链接关联项目拥有者头像 |
> 返回的JSON示例:
```json
{
"id": 7,
"role": "developer",
"is_apply": false,
"sign": "6b6b454843c291d4e52e60853cb8ad9f",
"user": {
"id": 2,
"type": "User",
"name": "heh",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png"
},
"project": {
"id": 474,
"identifier": "kellect",
"name": "kellect",
"description": null,
"is_public": true,
"owner": {
"id": 2,
"type": "User",
"name": "heh",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png"
}
}
}
```
## 请求项目邀请链接
当前登录(非项目)用户加入项目的接口,如果项目链接不需要审核,请求成功后即加入项目,如果需要审核,那么会提交一个申请,需要项目管理员审核
> 示例:
```shell
curl -X POST http://localhost:3000/api/yystopf/kellect/project_invite_links/redirect_link.json?invite_sign=d612df03aad63760445c187bcf83f2e6
```
```javascript
await octokit.request('POST /api/yystopf/kellect/project_invite_links/redirect_link.json?invite_sign=d612df03aad63760445c187bcf83f2e6')
```
### HTTP 请求
`POST /api/:owner/:repo/project_invite_links/generate_link.json?invite_sign=xxx`
### 请求参数
参数 | 必选 | 默认 | 类型 | 字段说明
--------- | ------- | ------- | -------- | ----------
|invite_sign |是| |string |项目邀请链接的标识 |
> 返回的JSON示例:
```json
{
"status": 0,
"message": "success"
}
```
## 申请加入项目
申请加入项目

View File

@ -32,7 +32,7 @@ class Projects::LinkJoinService < ApplicationService
end
def create_applied_project!
user.applied_projects.create!(project: project, role: role_value)
user.applied_projects.create!(project: project, role: role_value, project_invite_link_id: invite_link&.id)
end
def create_member!

View File

@ -0,0 +1 @@
json.partial! 'detail', locals: { project_invite_link: @project_invite_link }

View File

@ -425,6 +425,15 @@
<li>
<a href="#projects" class="toc-h1 toc-link" data-title="Projects">Projects</a>
<ul class="toc-list-h2">
<li>
<a href="#086d81b60d" class="toc-h2 toc-link" data-title="获取项目邀请链接">获取项目邀请链接</a>
</li>
<li>
<a href="#65f471580f" class="toc-h2 toc-link" data-title="生成项目邀请链接">生成项目邀请链接</a>
</li>
<li>
<a href="#316c752f05" class="toc-h2 toc-link" data-title="请求项目邀请链接">请求项目邀请链接</a>
</li>
<li>
<a href="#ac55469b06" class="toc-h2 toc-link" data-title="申请加入项目">申请加入项目</a>
</li>
@ -4390,7 +4399,366 @@ Success — a happy kitten is an authenticated kitten!
</span><span class="nl">"created_at"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2021-06-09 16:41"</span><span class="p">,</span><span class="w">
</span><span class="nl">"time_ago"</span><span class="p">:</span><span class="w"> </span><span class="s2">"7分钟前"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div><h1 id='projects'>Projects</h1><h2 id='ac55469b06'>申请加入项目</h2>
</span></code></pre></div><h1 id='projects'>Projects</h1><h2 id='086d81b60d'>获取项目邀请链接</h2>
<p>当前登录管理员用户获取项目邀请链接的接口第一次请求会默认生成role类型为developer和is_apply为true的链接</p>
<blockquote>
<p>示例:</p>
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/yystopf/kellect/project_invite_links/current_link.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/yystopf/kellect/project_invite_links/current_link.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http'>HTTP 请求</h3>
<p><code>GET /api/:owner/:repo/project_invite_links/current_link.json</code></p>
<h3 id='b302a98fa6'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
<th>类型</th>
<th>字段说明</th>
</tr>
</thead><tbody>
<tr>
<td>id</td>
<td>int</td>
<td>链接id</td>
</tr>
<tr>
<td>role</td>
<td>string</td>
<td>邀请角色</td>
</tr>
<tr>
<td>is_apply</td>
<td>boolean</td>
<td>是否需要审核</td>
</tr>
<tr>
<td>sign</td>
<td>string</td>
<td>邀请标识(放在链接后面即可)</td>
</tr>
<tr>
<td>user.id</td>
<td>int</td>
<td>链接创建者的id</td>
</tr>
<tr>
<td>user.type</td>
<td>string</td>
<td>链接创建者的类型</td>
</tr>
<tr>
<td>user.name</td>
<td>string</td>
<td>链接创建者的名称</td>
</tr>
<tr>
<td>user.login</td>
<td>string</td>
<td>链接创建者的标识</td>
</tr>
<tr>
<td>user.image_url</td>
<td>string</td>
<td>链接创建者头像</td>
</tr>
<tr>
<td>project.id</td>
<td>int</td>
<td>链接关联项目的id</td>
</tr>
<tr>
<td>project.identifier</td>
<td>string</td>
<td>链接关联项目的标识</td>
</tr>
<tr>
<td>project.name</td>
<td>string</td>
<td>链接关联项目的名称</td>
</tr>
<tr>
<td>project.description</td>
<td>string</td>
<td>链接关联项目的描述</td>
</tr>
<tr>
<td>project.is_public</td>
<td>bool</td>
<td>链接关联项目是否公开</td>
</tr>
<tr>
<td>project.owner.id</td>
<td>bool</td>
<td>链接关联项目拥有者id</td>
</tr>
<tr>
<td>project.owner.type</td>
<td>string</td>
<td>链接关联项目拥有者类型</td>
</tr>
<tr>
<td>project.owner.name</td>
<td>string</td>
<td>链接关联项目拥有者昵称</td>
</tr>
<tr>
<td>project.owner.login</td>
<td>string</td>
<td>链接关联项目拥有者标识</td>
</tr>
<tr>
<td>project.owner.image_url</td>
<td>string</td>
<td>链接关联项目拥有者头像</td>
</tr>
</tbody></table>
<blockquote>
<p>返回的JSON示例:</p>
</blockquote>
<div class="highlight"><pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w">
</span><span class="nl">"role"</span><span class="p">:</span><span class="w"> </span><span class="s2">"developer"</span><span class="p">,</span><span class="w">
</span><span class="nl">"is_apply"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
</span><span class="nl">"sign"</span><span class="p">:</span><span class="w"> </span><span class="s2">"6b6b454843c291d4e52e60853cb8ad9f"</span><span class="p">,</span><span class="w">
</span><span class="nl">"user"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"User"</span><span class="p">,</span><span class="w">
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"heh"</span><span class="p">,</span><span class="w">
</span><span class="nl">"login"</span><span class="p">:</span><span class="w"> </span><span class="s2">"yystopf"</span><span class="p">,</span><span class="w">
</span><span class="nl">"image_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"system/lets/letter_avatars/2/H/188_239_142/120.png"</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nl">"project"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">474</span><span class="p">,</span><span class="w">
</span><span class="nl">"identifier"</span><span class="p">:</span><span class="w"> </span><span class="s2">"kellect"</span><span class="p">,</span><span class="w">
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"kellect"</span><span class="p">,</span><span class="w">
</span><span class="nl">"description"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w">
</span><span class="nl">"is_public"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
</span><span class="nl">"owner"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"User"</span><span class="p">,</span><span class="w">
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"heh"</span><span class="p">,</span><span class="w">
</span><span class="nl">"login"</span><span class="p">:</span><span class="w"> </span><span class="s2">"yystopf"</span><span class="p">,</span><span class="w">
</span><span class="nl">"image_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"system/lets/letter_avatars/2/H/188_239_142/120.png"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div><h2 id='65f471580f'>生成项目邀请链接</h2>
<p>当前登录管理员用户生成的项目邀请链接可选role和is_apply参数</p>
<blockquote>
<p>示例:</p>
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/yystopf/kellect/project_invite_links/generate_link.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/yystopf/kellect/project_invite_links/generate_link.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-2'>HTTP 请求</h3>
<p><code>POST /api/:owner/:repo/project_invite_links/generate_link.json</code></p>
<h3 id='1f9ac54b15'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
<th>必选</th>
<th>默认</th>
<th>类型</th>
<th>字段说明</th>
</tr>
</thead><tbody>
<tr>
<td>role</td>
<td></td>
<td></td>
<td>string</td>
<td>项目权限reporter: 报告者, developer: 开发者manager管理员</td>
</tr>
<tr>
<td>is_apply</td>
<td></td>
<td></td>
<td>boolean</td>
<td>是否需要审核</td>
</tr>
</tbody></table>
<blockquote>
<p>请求的JSON示例</p>
</blockquote>
<div class="highlight"><pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="nl">"role"</span><span class="p">:</span><span class="w"> </span><span class="s2">"developer"</span><span class="p">,</span><span class="w">
</span><span class="nl">"is_apply"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div><h3 id='b302a98fa6-2'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
<th>类型</th>
<th>字段说明</th>
</tr>
</thead><tbody>
<tr>
<td>id</td>
<td>int</td>
<td>链接id</td>
</tr>
<tr>
<td>role</td>
<td>string</td>
<td>邀请角色</td>
</tr>
<tr>
<td>is_apply</td>
<td>boolean</td>
<td>是否需要审核</td>
</tr>
<tr>
<td>sign</td>
<td>string</td>
<td>邀请标识(放在链接后面即可)</td>
</tr>
<tr>
<td>user.id</td>
<td>int</td>
<td>链接创建者的id</td>
</tr>
<tr>
<td>user.type</td>
<td>string</td>
<td>链接创建者的类型</td>
</tr>
<tr>
<td>user.name</td>
<td>string</td>
<td>链接创建者的名称</td>
</tr>
<tr>
<td>user.login</td>
<td>string</td>
<td>链接创建者的标识</td>
</tr>
<tr>
<td>user.image_url</td>
<td>string</td>
<td>链接创建者头像</td>
</tr>
<tr>
<td>project.id</td>
<td>int</td>
<td>链接关联项目的id</td>
</tr>
<tr>
<td>project.identifier</td>
<td>string</td>
<td>链接关联项目的标识</td>
</tr>
<tr>
<td>project.name</td>
<td>string</td>
<td>链接关联项目的名称</td>
</tr>
<tr>
<td>project.description</td>
<td>string</td>
<td>链接关联项目的描述</td>
</tr>
<tr>
<td>project.is_public</td>
<td>bool</td>
<td>链接关联项目是否公开</td>
</tr>
<tr>
<td>project.owner.id</td>
<td>bool</td>
<td>链接关联项目拥有者id</td>
</tr>
<tr>
<td>project.owner.type</td>
<td>string</td>
<td>链接关联项目拥有者类型</td>
</tr>
<tr>
<td>project.owner.name</td>
<td>string</td>
<td>链接关联项目拥有者昵称</td>
</tr>
<tr>
<td>project.owner.login</td>
<td>string</td>
<td>链接关联项目拥有者标识</td>
</tr>
<tr>
<td>project.owner.image_url</td>
<td>string</td>
<td>链接关联项目拥有者头像</td>
</tr>
</tbody></table>
<blockquote>
<p>返回的JSON示例:</p>
</blockquote>
<div class="highlight"><pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w">
</span><span class="nl">"role"</span><span class="p">:</span><span class="w"> </span><span class="s2">"developer"</span><span class="p">,</span><span class="w">
</span><span class="nl">"is_apply"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
</span><span class="nl">"sign"</span><span class="p">:</span><span class="w"> </span><span class="s2">"6b6b454843c291d4e52e60853cb8ad9f"</span><span class="p">,</span><span class="w">
</span><span class="nl">"user"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"User"</span><span class="p">,</span><span class="w">
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"heh"</span><span class="p">,</span><span class="w">
</span><span class="nl">"login"</span><span class="p">:</span><span class="w"> </span><span class="s2">"yystopf"</span><span class="p">,</span><span class="w">
</span><span class="nl">"image_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"system/lets/letter_avatars/2/H/188_239_142/120.png"</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nl">"project"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">474</span><span class="p">,</span><span class="w">
</span><span class="nl">"identifier"</span><span class="p">:</span><span class="w"> </span><span class="s2">"kellect"</span><span class="p">,</span><span class="w">
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"kellect"</span><span class="p">,</span><span class="w">
</span><span class="nl">"description"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w">
</span><span class="nl">"is_public"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
</span><span class="nl">"owner"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"User"</span><span class="p">,</span><span class="w">
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"heh"</span><span class="p">,</span><span class="w">
</span><span class="nl">"login"</span><span class="p">:</span><span class="w"> </span><span class="s2">"yystopf"</span><span class="p">,</span><span class="w">
</span><span class="nl">"image_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"system/lets/letter_avatars/2/H/188_239_142/120.png"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div><h2 id='316c752f05'>请求项目邀请链接</h2>
<p>当前登录(非项目)用户加入项目的接口,如果项目链接不需要审核,请求成功后即加入项目,如果需要审核,那么会提交一个申请,需要项目管理员审核</p>
<blockquote>
<p>示例:</p>
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/yystopf/kellect/project_invite_links/redirect_link.json?invite_sign<span class="o">=</span>d612df03aad63760445c187bcf83f2e6
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/yystopf/kellect/project_invite_links/redirect_link.json?invite_sign=d612df03aad63760445c187bcf83f2e6</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-3'>HTTP 请求</h3>
<p><code>POST /api/:owner/:repo/project_invite_links/generate_link.json?invite_sign=xxx</code></p>
<h3 id='1f9ac54b15-2'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
<th>必选</th>
<th>默认</th>
<th>类型</th>
<th>字段说明</th>
</tr>
</thead><tbody>
<tr>
<td>invite_sign</td>
<td></td>
<td></td>
<td>string</td>
<td>项目邀请链接的标识</td>
</tr>
</tbody></table>
<blockquote>
<p>返回的JSON示例:</p>
</blockquote>
<div class="highlight"><pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
</span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div><h2 id='ac55469b06'>申请加入项目</h2>
<p>申请加入项目</p>
<blockquote>
@ -4398,9 +4766,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/applied_projects.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/appliedr_projects.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http'>HTTP 请求</h3>
</code></pre></div><h3 id='http-4'>HTTP 请求</h3>
<p><code>POST /api/applied_projects.json</code></p>
<h3 id='1f9ac54b15'>请求参数</h3>
<h3 id='1f9ac54b15-3'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -4435,7 +4803,7 @@ Success — a happy kitten is an authenticated kitten!
</span><span class="nl">"role"</span><span class="p">:</span><span class="w"> </span><span class="s2">"developer"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div><h3 id='b302a98fa6'>返回字段说明</h3>
</span></code></pre></div><h3 id='b302a98fa6-3'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -4576,9 +4944,9 @@ Success — a happy kitten is an authenticated kitten!
<span class="nt">-d</span> <span class="s2">"limit=5"</span> <span class="se">\</span>
http://localhost:3000/api/projects | jq
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/projects</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-2'>HTTP 请求</h3>
</code></pre></div><h3 id='http-5'>HTTP 请求</h3>
<p><code>GET api/projects</code></p>
<h3 id='1f9ac54b15-2'>请求参数</h3>
<h3 id='1f9ac54b15-4'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -4645,7 +5013,7 @@ http://localhost:3000/api/projects | jq
<td>项目类型, 取值为common、mirror; common:开源托管项目, mirror:开源镜像项目</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-2'>返回字段说明</h3>
<h3 id='b302a98fa6-4'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -4797,9 +5165,9 @@ Remember — a happy kitten is an authenticated kitten!
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET <span class="se">\</span>
http://localhost:3000/api/projects/recommend | jq
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/projects/recommend.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-3'>HTTP 请求</h3>
</code></pre></div><h3 id='http-6'>HTTP 请求</h3>
<p><code>GET api/projects/recommend</code></p>
<h3 id='b302a98fa6-3'>返回字段说明</h3>
<h3 id='b302a98fa6-5'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -4933,9 +5301,9 @@ Remember — a happy kitten is an authenticated kitten!
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET <span class="se">\</span>
http://localhost:3000/api/yystopf/ceshi/menu_list | jq
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/yystopf/ceshi/menu_list</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-4'>HTTP 请求</h3>
</code></pre></div><h3 id='http-7'>HTTP 请求</h3>
<p><code>GET api/:owner/:repo/menu_list</code></p>
<h3 id='1f9ac54b15-3'>请求参数</h3>
<h3 id='1f9ac54b15-5'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -4960,7 +5328,7 @@ http://localhost:3000/api/yystopf/ceshi/menu_list | jq
<td>项目标识identifier</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-4'>返回字段说明</h3>
<h3 id='b302a98fa6-6'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5001,9 +5369,9 @@ http://localhost:3000/api/yystopf/ceshi/menu_list | jq
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET <span class="se">\</span>
http://localhost:3000/api/jasder/forgeplus/about | jq
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/jasder/forgeplus/about</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-5'>HTTP 请求</h3>
</code></pre></div><h3 id='http-8'>HTTP 请求</h3>
<p><code>GET api/:owner/:repo/about</code></p>
<h3 id='1f9ac54b15-4'>请求参数</h3>
<h3 id='1f9ac54b15-6'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5028,7 +5396,7 @@ http://localhost:3000/api/jasder/forgeplus/about | jq
<td>项目标识identifier</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-5'>返回字段说明</h3>
<h3 id='b302a98fa6-7'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5074,7 +5442,7 @@ Remember — a happy kitten is an authenticated kitten!
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET <span class="se">\</span>
http://localhost:3000/api/yystopf/ceshi/project_units.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/yystopf/ceshi/project_units</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-6'>HTTP 请求</h3>
</code></pre></div><h3 id='http-9'>HTTP 请求</h3>
<p><code>GET /api/yystopf/ceshi/project_units</code></p>
<h3 id='7447e4874e'>返回字段说明:</h3>
<table><thead>
@ -5117,9 +5485,9 @@ http://localhost:3000/api/yystopf/ceshi/project_units.json
<span class="nt">-d</span> <span class="s2">"{ </span><span class="se">\"</span><span class="s2">unit_typs</span><span class="se">\"</span><span class="s2">: [</span><span class="se">\"</span><span class="s2">code</span><span class="se">\"</span><span class="s2">, </span><span class="se">\"</span><span class="s2">pulls</span><span class="se">\"</span><span class="s2">]}"</span> <span class="se">\</span>
http://localhost:3000/api/yystopf/ceshi/project_units.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/yystopf/ceshi/project_units</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-7'>HTTP 请求</h3>
</code></pre></div><h3 id='http-10'>HTTP 请求</h3>
<p><code>POST /api/yystopf/ceshi/project_units</code></p>
<h3 id='1f9ac54b15-5'>请求参数</h3>
<h3 id='1f9ac54b15-7'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5181,9 +5549,9 @@ http://localhost:3000/api/yystopf/ceshi/project_units.json
<span class="nt">-d</span> <span class="s2">"license_id=1"</span> <span class="se">\</span>
http://localhost:3000/api/projects.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/projects.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-8'>HTTP 请求</h3>
</code></pre></div><h3 id='http-11'>HTTP 请求</h3>
<p><code>POST api/projects</code></p>
<h3 id='1f9ac54b15-6'>请求参数</h3>
<h3 id='1f9ac54b15-8'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5257,7 +5625,7 @@ http://localhost:3000/api/projects.json
<td>项目是否私有, true为私有false: 公开,默认为公开</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-6'>返回字段说明</h3>
<h3 id='b302a98fa6-8'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5299,9 +5667,9 @@ http://localhost:3000/api/projects.json
<span class="nt">-d</span> <span class="s2">"project_language_id=2"</span> <span class="se">\</span>
http://localhost:3000/api/projects/migrate.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/projects/migrate.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-9'>HTTP 请求</h3>
</code></pre></div><h3 id='http-12'>HTTP 请求</h3>
<p><code>POST api/projects/migrate.json</code></p>
<h3 id='1f9ac54b15-7'>请求参数</h3>
<h3 id='1f9ac54b15-9'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5389,7 +5757,7 @@ http://localhost:3000/api/projects/migrate.json
<td>项目是否私有, true为私有false: 非私有,默认为公开</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-7'>返回字段说明</h3>
<h3 id='b302a98fa6-9'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5424,9 +5792,9 @@ http://localhost:3000/api/projects/migrate.json
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/repositories/1244/sync_mirror.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/repositories/1244/sync_mirror.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-10'>HTTP 请求</h3>
</code></pre></div><h3 id='http-13'>HTTP 请求</h3>
<p><code>POST api/repositories/:id/sync_mirror.json</code></p>
<h3 id='1f9ac54b15-8'>请求参数</h3>
<h3 id='1f9ac54b15-10'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5444,7 +5812,7 @@ http://localhost:3000/api/projects/migrate.json
<td>仓库id</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-8'>返回字段说明</h3>
<h3 id='b302a98fa6-10'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5479,9 +5847,9 @@ http://localhost:3000/api/projects/migrate.json
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/jasder/forgeplus/forks.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/jaser/jasder_test/forks.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-11'>HTTP 请求</h3>
</code></pre></div><h3 id='http-14'>HTTP 请求</h3>
<p><code>POST api/:owner/:repo/forks.json</code></p>
<h3 id='1f9ac54b15-9'>请求参数</h3>
<h3 id='1f9ac54b15-11'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5506,7 +5874,7 @@ http://localhost:3000/api/projects/migrate.json
<td>项目标识identifier</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-9'>返回字段说明</h3>
<h3 id='b302a98fa6-11'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5542,9 +5910,9 @@ http://localhost:3000/api/projects/migrate.json
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET <span class="se">\</span>
http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizations.json | jq
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/:owner/:repo/applied_transfer_projects/organizations</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-12'>HTTP 请求</h3>
</code></pre></div><h3 id='http-15'>HTTP 请求</h3>
<p><code>GET api/:owner/:repo/applied_transfer_projects/organizations</code></p>
<h3 id='1f9ac54b15-10'>请求参数</h3>
<h3 id='1f9ac54b15-12'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5569,7 +5937,7 @@ http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizat
<td>项目标识identifier</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-10'>返回字段说明</h3>
<h3 id='b302a98fa6-12'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5636,9 +6004,9 @@ http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizat
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/:owner/:repo/applied_transfer_projects.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-13'>HTTP 请求</h3>
</code></pre></div><h3 id='http-16'>HTTP 请求</h3>
<p><code>POST /api/:owner/:repo/applied_transfer_projects.json</code></p>
<h3 id='1f9ac54b15-11'>请求参数</h3>
<h3 id='1f9ac54b15-13'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5670,7 +6038,7 @@ http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizat
<td>迁移对象标识</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-11'>返回字段说明</h3>
<h3 id='b302a98fa6-13'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5840,9 +6208,9 @@ http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizat
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/cancel.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/:owner/:repo/applied_transfer_projects/cancel.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-14'>HTTP 请求</h3>
</code></pre></div><h3 id='http-17'>HTTP 请求</h3>
<p><code>POST /api/:owner/:repo/applied_transfer_projects/cancel.json</code></p>
<h3 id='1f9ac54b15-12'>请求参数</h3>
<h3 id='1f9ac54b15-14'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>
@ -5867,7 +6235,7 @@ http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizat
<td>项目标识identifier</td>
</tr>
</tbody></table>
<h3 id='b302a98fa6-12'>返回字段说明</h3>
<h3 id='b302a98fa6-14'>返回字段说明</h3>
<table><thead>
<tr>
<th>参数</th>
@ -6037,9 +6405,9 @@ http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizat
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/ceshi1/ceshi_repo1/quit.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST /api/:owner/:repo/quit.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-15'>HTTP 请求</h3>
</code></pre></div><h3 id='http-18'>HTTP 请求</h3>
<p><code>POST /api/:owner/:repo/quit.json</code></p>
<h3 id='1f9ac54b15-13'>请求参数</h3>
<h3 id='1f9ac54b15-15'>请求参数</h3>
<table><thead>
<tr>
<th>参数</th>