[关闭]
@yangxitian 2017-05-20T14:11:27.000000Z 字数 23668 阅读 1254

OKMAN API

OKMAN


一 文档说明

  1. base_url = http://okman.yangxitian.cn/
  2. 所有Ajax请求必须携带以下头
  1. X-Requested-With:XMLHttpRequest

二 错误返回说明

status说明:
401: forbidden 尚未登陆/请先退出登陆
403: 业务逻辑上权限不足
422: 参数错误或者业务逻辑上的错误
423: 请输入验证码或验证码错误
500: 系统错误
503: 系统维护中

后台统一了错误信息的返回,格式如下:

  1. {
  2. "status": xxx, //http码
  3. "position": "XXXXXXXXXX", //错误位置,debug模式才存在
  4. "inform": "XXX" //需要显示的错误通知,为数组或字符串
  5. }

三 用户认证模块

邮箱验证流程说明:
1.用户填写基本信息
2.注册成功(此时系统自动发送邮箱认证到用户邮箱)
3.选择talent,genere等等。
4.用户可以点击邮件认证中的连接,跳转到平台认证页面。
5.该页面根据code、email,请求 用户邮箱认证 API进行验证
6.用户邮箱认证完毕。

1. 用户注册

POST
auth/register

字段 描述 是否必须 备注
first_name 用户名 Y
last_name 用户姓 Y
name 用户昵称 Y
email 注册的邮箱 Y
password 用户密码 Y
password_confirmation 用户确定密码 Y
gender 性别 N 1 男 0 女
age 年龄 N
province_code 省份编号 N
city_code 城市编号 N
bio 自我简介 N

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

2. 发送用户邮箱认证邮件 NA

GET
auth/sendActivateEmail

防止用户不小心把认证邮件删了

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

3. 用户邮箱认证

POST
auth/activateEmail

字段 描述 是否必须 备注
email 邮箱 Y
code 验证码 Y

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

4. 获取登陆验证码

GET
captcha

Response

status 200

  1. 返回一张图片

example

  1. <img id="login_img" onclick="refresh_login_img();">
  2. <script type="text/javascript">
  3. function refresh_login_img() {
  4. $('#login_img').attr('src', base_url + 'captcha?random=' + Math.random());
  5. }
  6. refresh_login_img();
  7. </script>

5. 用户登陆

POST
auth/login

字段 描述 是否必须 备注
email 邮箱 Y
password 用户密码 Y
code 验证码 N 登陆失败过后,需要

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": 15 //认证成功的 user id
  4. }

6. 退出登陆 NA

GET
auth/logout

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

四 平台公用api

User

1. 首页列出User

GET
listUser

按照被关注人数排序

字段 描述 是否必须 备注
count 每页显示的条数 N 默认8
page 页数 N 默认1

Response

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "total": 6,
  5. "per_page": 8,
  6. "current_page": 1,
  7. "last_page": 1,
  8. "next_page_url": null,
  9. "prev_page_url": null,
  10. "from": 1,
  11. "to": 6,
  12. "data": [
  13. {
  14. "id": 15,
  15. "first_name": "shelter",
  16. "last_name": "ya",
  17. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg",
  18. "follower_project_number": 0, //关注project 数目
  19. "collaboration_number": 0, //参与项目数量
  20. "followers": 1, //被多少人关注
  21. "roles": [
  22. {
  23. "id": 7,
  24. "name": "Arranger",
  25. "pivot": {
  26. "user_id": 15,
  27. "role_id": 7
  28. }
  29. }
  30. ],
  31. "genres": [
  32. {
  33. "id": 19,
  34. "name": "great",
  35. "pivot": {
  36. "user_id": 15,
  37. "genre_id": 19
  38. }
  39. }
  40. ],
  41. "instruments": [
  42. {
  43. "id": 9,
  44. "name": "Piano",
  45. "pivot": {
  46. "user_id": 15,
  47. "instrument_id": 9
  48. }
  49. }
  50. ],
  51. "daws": [
  52. {
  53. "id": 6,
  54. "name": "Fruity",
  55. "pivot": {
  56. "user_id": 24,
  57. "daw_id": 6
  58. }
  59. }
  60. ]
  61. }
  62. ]
  63. }
  64. }

音乐风格

1.获取可选音乐风格列表

GET
listGenres

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 12,
  6. "name": "genre 123",
  7. "children": [
  8. {
  9. "id": 19,
  10. "name": "great"
  11. }
  12. ]
  13. }
  14. ]
  15. }

用户角色

1.获取可选用户角色

GET
listRoles

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 4,
  6. "name": "Music Composer"
  7. }
  8. ]
  9. }

Instruments

1.获取可选Instruments

GET
listInstruments

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 9,
  6. "name": "piano"
  7. }
  8. ]
  9. }

DAW

1.获取可选Instruments

GET
listDAW

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 1,
  6. "name": "test0"
  7. }
  8. ]
  9. }

Project

1. 平台首页项目列表

GET
listProject

按照关注数量进行排序

字段 描述 是否必须 备注
count 每页显示的条数 N 默认30
page 页数 N 默认1
status 状态 N 为以下值
1 制作中(默认)
2 制作完成

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "total": 7,
  5. "per_page": 30,
  6. "current_page": 1,
  7. "last_page": 1,
  8. "next_page_url": null,
  9. "prev_page_url": null,
  10. "from": 1,
  11. "to": 7,
  12. "data": [
  13. {
  14. "id": 4,
  15. "name": "test project",
  16. "status": "1",
  17. "is_public": true,
  18. "show_sound": "upload/video/project/6/zpIMiaqY.mp3", //完成project 才有此字段。即最终作品
  19. "followers": 0, //关注人数量
  20. "play_count": 0, //播放次数
  21. "comment_count": 0, //评论数量
  22. "cover_pic": "upload/img/project-cover/ePFCRKQW.jpg",
  23. "deleted_at": null,
  24. "created_at": "1 day ago",
  25. "has_follower": false, //是否以及关注
  26. "users": [
  27. {
  28. "id": 15,
  29. "first_name": "shelter",
  30. "last_name": "ya",
  31. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg",
  32. "pivot": {
  33. "project_id": 4,
  34. "user_id": 15,
  35. "role_id": 4,
  36. "created_at": "2017-03-30 14:47:33",
  37. "is_admin": 1
  38. }
  39. }
  40. ],
  41. "roles": [
  42. {
  43. "id": 4,
  44. "name": "Music Composer",
  45. "pivot": {
  46. "project_id": 4,
  47. "role_id": 4,
  48. "note": "aerfasdrfaev",
  49. "created_at": "2017-03-30 14:55:17"
  50. }
  51. }
  52. ],
  53. "genres": [
  54. {
  55. "id": 20,
  56. "name": "Romance",
  57. "pivot": {
  58. "project_id": 4,
  59. "genre_id": 20
  60. }
  61. }
  62. ],
  63. "instruments": [
  64. {
  65. "id": 11,
  66. "name": "Saxophone",
  67. "pivot": {
  68. "project_id": 18,
  69. "instrument_id": 11,
  70. "note": "",
  71. "created_at": "2017-04-07 12:02:41"
  72. }
  73. }
  74. ]
  75. }
  76. ]
  77. }
  78. }

2. 添加播放次数

GET
addProjectPlayCount/{project_id}

字段 描述 是否必须 备注
project_id 项目id Y 附加url

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

五 用户 api

Base Api

1. 修改个人信息 NA

PUT
user/0

ajax header头
Content-Type:application/x-www-form-urlencoded

字段 描述 是否必须 备注
first_name 用户名 N
last_name 用户姓 N
name 用户昵称 N
gender 性别 N 1 男 0 女
age 年龄 N
province_code 省份编号 N
city_code 城市编号 N
bio 自我简介 N
role_ids 用户角色id N 将用户选中的id 拼接起来
eg. 1,2,3,4,
instrument_ids instrument ids N 将用户选中的id 拼接起来
eg. 1,2,3,4,
genre_ids 风格id N 将用户选中的id 拼接起来
eg. 1,2,3,4,
daw_ids DAW id N 将用户选中的id 拼接起来
eg. 1,2,3,4,

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

2. 修改头像 NA

POST
user/uploadProfile

字段 描述 是否必须 备注
head img文件 Y png jpg
小于2M

Response

status 200

  1. {
  2. "head_url": "upload/img/user-head/MgIBhLoF.jpg"
  3. }

3. 获取个人信息

GET
user

字段 描述 是否必须 备注
id 用户 id N 默认当前登陆用户

Response

status 200

  1. {
  2. "message": {
  3. "id": 15,
  4. "first_name": "shelter",
  5. "last_name": "ya",
  6. "name": "assassin",
  7. "email": "2581318149@qq.com",
  8. "email_activate": true,
  9. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg", //默认空字符串
  10. "gender": 1,
  11. "age": 22,
  12. "province_code": 440000,
  13. "city_code": 440700,
  14. "bio": "A MAN",
  15. "has_follower": true, //当用户已经登陆,而且读取的不是本人的信息,会有此字段,判断是否已经关注此人。
  16. "collaboration_number": 5,
  17. "followers": 2, //被关注人数
  18. "roles": [
  19. {
  20. "id": 7,
  21. "name": "Arranger"
  22. }
  23. ],
  24. "instruments": [
  25. {
  26. "id": 9,
  27. "name": "piano"
  28. }
  29. ],
  30. "genres": [
  31. {
  32. "id": 20,
  33. "name": "shelter"
  34. }
  35. ],
  36. "daws": [
  37. {
  38. "id": 1,
  39. "name": "test0"
  40. }
  41. ]
  42. }
  43. }

用户关注

1. 关注用户

GET
user/follow/{user_id}

字段 描述 是否必须 备注
user_id 要关注的用户ID Y 附url

Response

  1. {
  2. "message": "操作成功"
  3. }

2. 取消用户

GET
user/cancelFollow/{user_id}

字段 描述 是否必须 备注
user_id 要取消关注的用户ID Y 附url

Response

  1. {
  2. "message": "操作成功"
  3. }

3. 查看关注我的人

GET
user/listFollower

Response

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 22,
  6. "first_name": "John",
  7. "last_name": "Zhang",
  8. "profile_pic": "upload/img/user-head/LUu5FDhm.jpg",
  9. "pivot": {
  10. "user_id": 15,
  11. "follower_id": 22
  12. }
  13. }
  14. ]
  15. }

4. 查看我关注的人

GET
user/listMyFollow

Response

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 16,
  6. "first_name": "June",
  7. "last_name": "ya",
  8. "profile_pic": "upload/img/user-head/2Ovb4jiN.jpg",
  9. "pivot": {
  10. "follower_id": 23,
  11. "user_id": 16
  12. },
  13. "genres": [
  14. {
  15. "id": 25,
  16. "name": "Chinese Folk",
  17. "pivot": {
  18. "user_id": 16,
  19. "genre_id": 25
  20. }
  21. }
  22. ],
  23. "roles": [
  24. {
  25. "id": 5,
  26. "name": "Lyricist",
  27. "pivot": {
  28. "user_id": 16,
  29. "role_id": 5
  30. }
  31. }
  32. ]
  33. }
  34. ]
  35. }

用户私聊

1. 发送私信

POST
user/chat/{user_id}

字段 描述 是否必须 备注
user_id 用户id Y 附加url
content 消息内容 Y 不得超过255字

Response

  1. {
  2. "message": "操作成功"
  3. }

2. 查看我的私信列表

GET
user/chat

Response

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 5, // chat_id
  6. "user1_id": 16,
  7. "user2_id": 15,
  8. "show_status": "0",
  9. "last_at": 1493216908 //上一条消息时间
  10. }
  11. ]
  12. }

3. 查看某个私信内容

GET
user/chat/{chat_id}

字段 描述 是否必须 备注
chat_id 聊天 id Y 附加url

Response

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 6,
  6. "chat_id": 5,
  7. "content": "hello", //消息内容
  8. "user_id": 15, //哪个用户发送的,可以根据这个判断,决定显示的位置
  9. "created_at": 1493216908 //发送时间
  10. }
  11. ]
  12. }

4. 删除某个私信

DELETE
user/chat/{chat_id}

字段 描述 是否必须 备注
chat_id 聊天 id Y 附加url

Response

  1. {
  2. "message": "操作成功"
  3. }

消息提醒

1. 查看是否有新消息

GET
user/postbox/isNew

Response

  1. {
  2. "message": "操作成功",
  3. "data": true/false //是否拥有新消息
  4. }

2. 获取消息列表

GET
user/postbox/list

字段 描述 是否必须 备注
page 页数 N 默认1
count 每页显示的条数 N 默认5

Response

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "total": 1,
  5. "per_page": 5,
  6. "current_page": 1,
  7. "last_page": 1,
  8. "next_page_url": null,
  9. "prev_page_url": null,
  10. "from": 1,
  11. "to": 1,
  12. "data": [
  13. {
  14. "id": 9,
  15. "action": 0, //查看下表
  16. "content": null,
  17. "target_id": null, //目标id
  18. "target_type": null, //查看下表
  19. "sender_id": 15,
  20. "user_id": 20,
  21. "is_read": 0, //是否已经阅读 0否 / 1是
  22. "created_at": 1493364123,
  23. "sender": { //消息发起者,如私信发送人
  24. "id": 15,
  25. "first_name": "shelter",
  26. "last_name": "ya"
  27. },
  28. "project": { //当目标为项目时,有此值
  29. "id": 12,
  30. "name": "xxxx",
  31. "cover_pic": "xxx",
  32. "bio": "xxxx",
  33. }
  34. }
  35. ]
  36. }
  37. }
ACTION 备注
有用户关注 0
有新私信 1
有项目邀请 2
有项目有新文件上传 3
有项目有新的feature文件 4
有项目完成了 5
有项目有新成员加入 6 sender
即新成员信息
有项目有成员退出 7 sender
即退出成员信息
收到新评论(项目) 8
TARGET_TYPE 备注
项目 10 target_id 即 project_id

六 项目api

Base API

1. 创建项目

POST
user/project

字段 描述 是否必须 备注
project_name 项目名字 Y
is_public 是否公开 Y 1 是
2 否 (默认)
bio 项目简介 Y
composition_type 组成类型 Y 1 Keep all Composition rights exclusively
2 Based on a split sheet
3 Equally with other collaborators
sound_recording_type 录音权限 Y 1 Share Sound Recording rights based on a split sheet
2 Share Sound Recording rights equally with other collaborators

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "id": 6
  5. }
  6. }

2. 修改项目

PUT
user/project/{project_id}

ajax header头
Content-Type:application/x-www-form-urlencoded

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
project_name 项目名字 N
is_public 是否公开 N 1 是
2 否
bio 项目简介 N
composition_type 组成类型 N 1 Keep all Composition rights exclusively
2 Based on a split sheet
3 Equally with other collaborators
sound_recording_type 录音权限 N 1 Share Sound Recording rights based on a split sheet
2 Share Sound Recording rights equally with other collaborators

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

3. 更换项目封面

POST
user/project/{project_id}/uploadCover

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
cover 封面图片 Y png jpg 不大于2M

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

4. 删除项目

DELETE
user/project/{project_id}

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

5. 读取用户的项目列表

get
user/project

字段 描述 是否必须 备注
type 类型 Y 为以下值:
All(默认)
Created
Joined
Released
Archive
id 用户id N 默认是当前登陆用户
page 页码 N 附加url

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "total": 5, //总条数
  5. "per_page": 30, //每页展示条数
  6. "current_page": 1, //当前页码
  7. "last_page": 1,
  8. "next_page_url": "",
  9. "prev_page_url": null,
  10. "from": 1, //起始id
  11. "to": 5, //最后id
  12. "data": [
  13. {
  14. "id": 4,
  15. "is_public": true,
  16. "name": "test project",
  17. "cover_pic": "upload/img/project-cover/ePFCRKQW.jpg",
  18. "bio": "just test",
  19. "status": "1", // 1 制作中 2 制作完成
  20. "deleted_at": null,
  21. "created_at": "1 day ago",
  22. "composition_type": "1",
  23. "sound_recording_type": "1",
  24. "show_sound": "upload/video/project/6/zpIMiaqY.mp3",
  25. "followers": 0, //关注 数量
  26. "has_follower": false //是否已经关注此项目
  27. "users": [
  28. {
  29. "id": 15,
  30. "first_name": "shelter",
  31. "last_name": "ya",
  32. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg",
  33. "pivot": {
  34. "project_id": 4,
  35. "user_id": 15,
  36. "role_id": 4,
  37. "created_at": "2017-03-30 14:47:33",
  38. "is_admin": 1
  39. }
  40. }
  41. ],
  42. "genres": [
  43. {
  44. "id": 20,
  45. "name": "shelter",
  46. "pivot": {
  47. "project_id": 4,
  48. "genre_id": 20
  49. }
  50. }
  51. ],
  52. "pivot": {
  53. "user_id": 15,
  54. "project_id": 4,
  55. "is_admin": 1,
  56. "role_id": 4,
  57. "created_at": "2017-03-30 14:47:33"
  58. }
  59. }
  60. ]
  61. }
  62. }

6. 查看项目详情

get
user/project/{project_id}

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "id": 4,
  5. "is_public": true,
  6. "name": "test project",
  7. "cover_pic": "upload/img/project-cover/ePFCRKQW.jpg",
  8. "bio": "just test",
  9. "status": "1", // 1 制作中 2 制作完成
  10. "deleted_at": null,
  11. "created_at": "19 hours ago",
  12. "composition_type": "1",
  13. "sound_recording_type": "1",
  14. "show_sound": "upload/video/project/6/zpIMiaqY.mp3",
  15. "followers": 1, //关注项目人数
  16. "play_count": 5,
  17. "comment_count": 2,
  18. "is_admin": true, //是否项目拥有者
  19. "is_member": true, //是否项目成员
  20. "roles": [
  21. {
  22. "id": 4,
  23. "name": "Music Composer",
  24. "pivot": {
  25. "project_id": 4,
  26. "role_id": 4,
  27. "note": "aerfasdrfaev", //备注
  28. "created_at": "2017-03-30 14:55:17"
  29. }
  30. },
  31. {
  32. "id": 6,
  33. "name": "Singer",
  34. "pivot": {
  35. "project_id": 4,
  36. "role_id": 6,
  37. "note": "aerfasdrfaev",
  38. "created_at": "2017-03-30 14:55:15"
  39. }
  40. }
  41. ],
  42. "genres": [
  43. {
  44. "id": 20,
  45. "name": "shelter",
  46. "pivot": {
  47. "project_id": 4,
  48. "genre_id": 20
  49. }
  50. },
  51. {
  52. "id": 21,
  53. "name": "Eunice",
  54. "pivot": {
  55. "project_id": 4,
  56. "genre_id": 21
  57. }
  58. },
  59. {
  60. "id": 22,
  61. "name": "Dance-Pop",
  62. "pivot": {
  63. "project_id": 4,
  64. "genre_id": 22
  65. }
  66. }
  67. ],
  68. "instruments": [
  69. {
  70. "id": 10,
  71. "name": "violin",
  72. "pivot": {
  73. "project_id": 4,
  74. "instrument_id": 10,
  75. "note": "update test", //备注
  76. "created_at": "2017-04-07 11:24:09"
  77. }
  78. }
  79. ],
  80. "users": [
  81. {
  82. "id": 15,
  83. "first_name": "shelter",
  84. "last_name": "ya",
  85. "email": "2581318149@qq.com",
  86. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg",
  87. "pivot": {
  88. "project_id": 4,
  89. "user_id": 15,
  90. "role_id": null, //用户担任的角色id
  91. "created_at": "2017-03-30 14:47:33",
  92. "is_admin": 1 //是否项目管理员
  93. },
  94. "roles_in_project": [ //用户担任的角色
  95. {
  96. "id": 4,
  97. "name": "Music Composer",
  98. "pivot": {
  99. "user_id": 15,
  100. "role_id": 4
  101. }
  102. }
  103. ]
  104. }
  105. ]
  106. }
  107. }

7. 批量修改genre、instrument、role

POST
user/project/{project_id}/updateOther

项目拥有者专用api

字段 描述 是否必须 备注
role_ids 所需角色id N 将用户选中的id 拼接起来
eg. 1,2,3,4,
instrument_ids instrument ids N 将用户选中的id 拼接起来
eg. 1,2,3,4,
genre_ids 风格id N 将用户选中的id 拼接起来
eg. 1,2,3,4,

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

8. 标志项目已经完成

GET
user/project/{project_id}/finish

项目拥有者专用api
项目必须存在 feature mix 文件

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

所需角色

1. 查看已选角色列表

GET
user/project/{project_id}/role

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 4,
  6. "name": "Music Composer",
  7. "note": "update test 2"
  8. }
  9. ]
  10. }

2. 添加角色

POST
user/project/{project_id}/role

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
role_id 角色ID Y
note 备注 N 最长128字节

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

3. 修改角色

PUT
user/project/{project_id}/role/{role_id}

ajax header头
Content-Type:application/x-www-form-urlencoded

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
role_id 角色 id Y 附加在url后面
note 备注 N 修改的备注内容

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

4. 删除角色

DELETE
user/project/{project_id}/role/{role_id}

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
role_id 角色 id Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

5. 查看当前可以选择的角色(剔除已选角色)

GET
user/project/{project_id}/role/listRoleExpectHas

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 5,
  6. "name": "Lyricist"
  7. }
  8. ]
  9. }

项目风格

1. 查看已选风格列表

GET
user/project/{project_id}/genre

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 8,
  6. "name": "genre 3"
  7. }
  8. ]
  9. }

2. 添加风格

POST
user/project/{project_id}/genre

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
genre_id 风格ID Y

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

3. 移除风格

DELETE
user/project/{project_id}/genre/{genre_id}

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
genre_id 风格ID Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

4. 查看当前可以选择的风格(剔除已选风格)

GET
user/project/{project_id}/genre/listGenreExceptHas

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 12,
  6. "name": "Classical",
  7. "children": {
  8. "1": {
  9. "id": 20,
  10. "name": "shelter"
  11. }
  12. },
  13. {
  14. "id": 7,
  15. "name": "Blues",
  16. "children": null
  17. }
  18. ]
  19. }

Instrument 管理

1. 查看已选instrument列表

GET
user/project/{project_id}/instrument

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 10,
  6. "name": "violin",
  7. "note": "xxxx"
  8. }
  9. ]
  10. }

2. 添加 instrument

POST
user/project/{project_id}/instrument

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
instrument_id instrument ID Y
note 备注 N 默认空

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

3. 修改 instrument

PUT
user/project/{project_id}/instrument/{instrument_id}

ajax header头
Content-Type:application/x-www-form-urlencoded

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
instrument_id instrument id Y 附加在url后面
note 备注 N 修改的备注内容

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

4. 移除 instrument

DELETE
user/project/{project_id}/instrument/{instrument_id}

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url后面
instrument_id instrument id Y 附加在url后面

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

5. 查看当前可以选择的instrument(剔除已选instrument)

GET
user/project/{project_id}/instrument/listInstrumentExceptHas

项目拥有者专用api

字段 描述 是否必须 备注
project_id 项目id Y 附加在url

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 9,
  6. "name": "piano"
  7. }
  8. ]
  9. }

文件管理

1. 得到Mixes类型

GET
user/project_mixes_type

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "10": "Engineering",
  5. "11": "Engineering-Mastering",
  6. "12": "Engineering-Mixing",
  7. "13": "Engineering-Scratch Bedtrack",
  8. "14": "Engineering-Scratch Demo"
  9. }
  10. }

2. 得到Document类型

GET
user/project_document_type

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "20": "Songwriting",
  5. "21": "Songwriting-Arrangement",
  6. "22": "Songwriting-Lyrics"
  7. }
  8. }

3. 上传video文件

POST
user/project/{project_id}/uploadVideo

项目成员允许

字段 描述 是否必须 备注
project_id 项目id Y 附加在url
file 文件 Y 'wav', 'aif', 'flac', 'mp3', 'mid', 'ma4' 格式
最大10M
type 上传类型 N seps、mixes
name 为文件命名 N file_id为空时,必须
instrument_id 乐器ID N 当type为seps时,必须
mix_id miexs id N 当type为mixes时,必须
调用得到Mixes类型接口得到此id
file_id 文件id N 当提交高版本的文件时,传递此字段
上面四个字段会失效

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "path": "upload/video/project/4/dWIKUJaI.WAV"
  5. }
  6. }

4. 上传document文件

POST
user/project/{project_id}/uploadDocument

项目成员允许

字段 描述 是否必须 备注
project_id 项目id Y 附加在url
file 文件 Y 'pdf', 'txt', 'midi' 格式
最大10M
name 文件名字 N 当file_id不存在时,必须
document_type_id 文件类型 N 当file_id不存在时,必须
调用得到Document类型接口得到此id
file_id 文件id N 当提交高版本的文件时,传递此字段,上面2个字段会失效

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "path": "upload/video/project/4/ho6wWyQM.txt"
  5. }
  6. }

5. 上传IMG文件

POST
user/project/{project_id}/uploadIMG

项目成员允许

字段 描述 是否必须 备注
project_id 项目id Y 附加在url
file 文件 Y 'png', 'jpg', 'gif' 格式
最大10M
name 文件名字 N 当file_id不存在时,必须
file_id 文件id N 当提交高版本的文件时,传递此字段

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

6. 读取文件列表

GET
user/project/{project_id}/file

字段 描述 是否必须 备注
project_id 项目id Y 附于url
type 类型 N 为下列值:
All(默认)
Mixes
Seps
Documents

Response

当不是All的时候,统一以下格式

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "name": "Piano", //这里是分类,seps mixes documents 都有自己的子类。
  6. "data": [ //子类下的文件
  7. {
  8. "id": 1,
  9. "type": 1,
  10. "name": "test file",
  11. "status": 0, //是否已经完成 0 1
  12. "is_featured": 0, //是否被采用 0 1
  13. "instrument_id": 9,
  14. "mix_id": null,
  15. "document_type_id": null,
  16. "created_at": "1 week ago",
  17. "project_id": 4,
  18. "user_id": 15,
  19. "user": {
  20. "id": 15,
  21. "first_name": "shelter",
  22. "last_name": "ya",
  23. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg"
  24. }
  25. }
  26. ]
  27. },
  28. {
  29. "name": "Saxophone",
  30. "data": [] //有可能为空 空直接可以参照那个平台,不显示
  31. }
  32. ]
  33. }

当为All类型的时候

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "Seps": [ //分类
  5. {
  6. "name": "Piano", //子分类
  7. "data": [ //这里面的字段,跟上面一样
  8. {
  9. "id": 1,
  10. "type": 1,
  11. "name": "test file",
  12. "status": 0,
  13. "is_featured": 0,
  14. "instrument_id": 9,
  15. "mix_id": null,
  16. "document_type_id": null,
  17. "created_at": "1 week ago",
  18. "project_id": 4,
  19. "user_id": 15,
  20. "user": {
  21. "id": 15,
  22. "first_name": "shelter",
  23. "last_name": "ya",
  24. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg"
  25. }
  26. }
  27. ]
  28. }
  29. ],
  30. "Mixes": [
  31. {
  32. "name": "Engineering-Mixing",
  33. "data": [
  34. {
  35. "id": 9,
  36. "type": 2,
  37. "name": "test file 7",
  38. "status": 0,
  39. "is_featured": 0,
  40. "instrument_id": null,
  41. "mix_id": 12,
  42. "document_type_id": null,
  43. "created_at": "1 week ago",
  44. "project_id": 4,
  45. "user_id": 15,
  46. "user": {
  47. "id": 15,
  48. "first_name": "shelter",
  49. "last_name": "ya",
  50. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg"
  51. }
  52. }
  53. ]
  54. }
  55. ],
  56. "Documents": [
  57. {
  58. "name": "Songwriting",
  59. "data": [
  60. {
  61. "id": 12,
  62. "type": 3,
  63. "name": "test document 1",
  64. "status": 0,
  65. "is_featured": 0,
  66. "instrument_id": null,
  67. "mix_id": null,
  68. "document_type_id": 20,
  69. "created_at": "1 week ago",
  70. "project_id": 4,
  71. "user_id": 15,
  72. "user": {
  73. "id": 15,
  74. "first_name": "shelter",
  75. "last_name": "ya",
  76. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg"
  77. }
  78. }
  79. ]
  80. }
  81. ]
  82. }
  83. }

7. 读取某文件各个version

GET
user/project/{project_id}/file/{file_id}/listVersion

字段 描述 是否必须 备注
project_id 项目 id Y 附于url
file_id 文件 id Y 附于url

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. "project_base_info": { //项目基本信息
  5. "id": 6,
  6. "name": "test project 2",
  7. "cover_pic": "",
  8. "bio": "just test"
  9. },
  10. "version": [
  11. {
  12. "id": 12, //version_id 删除的时候会用到
  13. "path": "upload/video/project/4/ho6wWyQM.txt", //各个版本路径
  14. "version": 1,
  15. "file_id": 12
  16. }
  17. ]
  18. }

8. 删除文件

DELETE
user/project/{project_id}/file/{file_id}

ajax header头
Content-Type:application/x-www-form-urlencoded

必须项目管理员才可调用此api,否则会报错,返回401
删除后,服务器会删除资源,不可恢复,需要提醒管理员

字段 描述 是否必须 备注
project_id 项目 id Y 附于url
file_id 文件 id Y 附于url
type 删除类型 Y 为以下值:
file 删除某个文件以及所有版本
file_version 删除文件中的某个版本
version_id 版本id N 当tpye == file_version 时,必须

9. 修改文件状态为完成(status)

GET
user/project/{project_id}/file/{file_id}/finish

文件上传者才可以调用此api,不然会没有任何效果。

字段 描述 是否必须 备注
project_id 项目 id Y 附于url
file_id 文件 id Y 附于url

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

10. 修改文件为采纳状态(feature)

GET
user/project/{project_id}/file/{file_id}/feature

项目admin 才可以调用此api,不然会没有任何效果。

字段 描述 是否必须 备注
project_id 项目 id Y 附于url
file_id 文件 id Y 附于url

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

关注

1. 关注项目

POST
user/projectLike

字段 描述 是否必须 备注
project_id 项目id Y

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

2. 取消关注项目

DELETE
user/projectLike/{project_id}

字段 描述 是否必须 备注
project_id 项目id Y 附加url

Response

status 200

  1. {
  2. "message": "操作成功"
  3. }

3. 查看我的关注项目

GET
user/projectLike

Response

status 200

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 18,
  6. "is_public": true,
  7. "name": "test3",
  8. "cover_pic": "upload/img/project-cover/m1A2ttm0.jpg",
  9. "bio": "test3",
  10. "status": "1",
  11. "deleted_at": null,
  12. "created_at": "1 hour ago",
  13. "composition_type": "3",
  14. "sound_recording_type": "1",
  15. "followers": 1, //关注人数
  16. "play_count": 0, //播放次数
  17. "pivot": {
  18. "user_id": 15,
  19. "project_id": 18
  20. },
  21. "genres": [
  22. {
  23. "id": 20,
  24. "name": "shelter",
  25. "pivot": {
  26. "project_id": 18,
  27. "genre_id": 20
  28. }
  29. }
  30. ]
  31. }
  32. ]
  33. }

成员管理

0. 得到推荐的艺术家列表

GET
user/project/{project_id}/nominator

项目管理员才能调用此api

字段 描述 是否必须 备注
page 页数 N 默认第一页

Response

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "total": 2, //总条数
  5. "per_page": 15, //每页显示的条数
  6. "current_page": 1, //当前页
  7. "last_page": 1,
  8. "next_page_url": null,
  9. "prev_page_url": null,
  10. "from": 1,
  11. "to": 2,
  12. "data": [
  13. {
  14. "id": 16,
  15. "first_name": "June",
  16. "last_name": "ya",
  17. "profile_pic": "upload/img/user-head/2Ovb4jiN.jpg", //默认空字符串
  18. "genres": [
  19. {
  20. "id": 20,
  21. "name": "Romance",
  22. "pivot": {
  23. "user_id": 16,
  24. "genre_id": 20
  25. }
  26. }
  27. ],
  28. "roles": [
  29. {
  30. "id": 5,
  31. "name": "Lyricist",
  32. "pivot": {
  33. "user_id": 16,
  34. "role_id": 5
  35. }
  36. }
  37. ],
  38. "instruments": [
  39. {
  40. "id": 9,
  41. "name": "Piano",
  42. "pivot": {
  43. "user_id": 16,
  44. "instrument_id": 9
  45. }
  46. }
  47. ]
  48. }
  49. ]
  50. }
  51. }

1. 邀请成员

POST
user/project/{project_id}/invite

项目管理员才能调用此api

字段 描述 是否必须 备注
project_id 项目id Y 附加url
user_id 邀请的用户Id Y 推过推荐api获得
note 留言 N 最大128

Response

  1. {
  2. "message": "操作成功"
  3. }

2. 用户查看我的邀请/申请

GET
user/project_invite

字段 描述 是否必须 备注
type 项目id N 为以下值:
1 收到的邀请(默认)
2 发出的申请

Response

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "project_id": 20,
  6. "user_id": 16,
  7. "note": "Do you want to join our team?",
  8. "created_at": "4 hours ago",
  9. "is_agree": 1, //是否同意邀请 0 默认 1 已同意 2 拒绝
  10. "project": { //project 信息
  11. "id": 20,
  12. "name": "add new fields", //project name
  13. "cover_pic": "",
  14. "bio": "just test" //project 简介
  15. }
  16. }
  17. ]
  18. }

3. 项目查看发出的邀请

GET
user/project/{project_id}/invite

项目管理员才能调用此api

字段 描述 是否必须 备注
project_id 项目id Y 附加url
type 项目id N 为以下值:
1 发出的邀请(默认)
2 收到的申请

Response

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "project_id": 20,
  6. "user_id": 16,
  7. "note": "Do you want to join our team?",
  8. "created_at": "4 hours ago",
  9. "is_agree": 1, //是否同意邀请 0 默认 1 已同意 2 拒绝
  10. "type": "1", // 1 project 邀请用户 2 用户申请 project
  11. "user": { //user 信息
  12. "id": 16,
  13. "email": "582604267@qq.com",
  14. "first_name": "June",
  15. "last_name": "ya",
  16. "profile_pic": "upload/img/user-head/2Ovb4jiN.jpg"
  17. }
  18. }
  19. ]
  20. }

4. 用户同意邀请

GET
user/project/{project_id}/agreeInvite

注意判断invite 消息的 status,同意已经同意的邀请,会返回422错误。

字段 描述 是否必须 备注
project_id 项目id Y 附加url

Response

  1. {
  2. "message": "操作成功"
  3. }

5. 用户拒绝邀请

GET
user/project/{project_id}/disagreeInvite

注意判断invite 消息的 status,拒绝已经拒绝的邀请,会返回422错误。

字段 描述 是否必须 备注
project_id 项目id Y 附加url

Response

  1. {
  2. "message": "操作成功"
  3. }

6. 退出项目

GET
user/project/{project_id}/quit

管理员不可退出项目

字段 描述 是否必须 备注
project_id 项目id Y 附加url

Response

  1. {
  2. "message": "操作成功"
  3. }

7. 用户删除 收到的邀请/发出的申请

DELETE
user/project_invite

ajax header头
Content-Type:application/x-www-form-urlencoded

字段 描述 是否必须 备注
ids 选中的 project ids Y 用逗号隔开,如 1,2,3,4

Response

  1. {
  2. "message": "操作成功"
  3. }

8. Project 删除项目 发出的邀请/收到的申请

DELETE
user/project/{project_id}/invite

ajax header头
Content-Type:application/x-www-form-urlencoded

字段 描述 是否必须 备注
project_id 项目ID Y 附于 url 上
ids 选中的 ids Y 用逗号隔开,如 1,2,3,4

Response

  1. {
  2. "message": "操作成功"
  3. }

9. 任命成员为项目的某个role

PUT
user/project/{project_id}/role/set

ajax header头
Content-Type:application/x-www-form-urlencoded

字段 描述 是否必须 备注
project_id 项目ID Y 附于 url 上
user_id 成员 id Y
role_id 设置的角色Id Y 调用user/project/{project_id}/role得到

Response

  1. {
  2. "message": "操作成功"
  3. }

10. 用户申请参与某个项目

POST
user/project/{project_id}/apply

字段 描述 是否必须 备注
project_id 项目id Y 附加url
note 自我备注 N 用户可以自我描述,提高参与成功率

Response

  1. {
  2. "message": "操作成功"
  3. }

11. 用户查看我发出的申请

查看此子类第2个api

12. 项目管理员查看项目收到的参与申请

查看此子类第3个api

13. 项目管理员同意用户申请

GET
user/project/{project_id}/agreeApply/{user_id}

注意判断invite 消息的 is_agree,同意已经同意的申请,会返回422错误。

字段 描述 是否必须 备注
project_id 项目id Y 附加url
user_id 用户id Y 附加url

Response

  1. {
  2. "message": "操作成功"
  3. }

14. 项目管理员拒绝用户申请

GET
user/project/{project_id}/disagreeApply/{user_id}

注意判断invite 消息的 is_aggree,拒绝已经拒绝的申请,会返回422错误。

字段 描述 是否必须 备注
project_id 项目id Y 附加url
user_id 用户id Y 附加url

Response

  1. {
  2. "message": "操作成功"
  3. }

七 评论

针对项目

1. 评论项目

POST
user/comment/project

字段 描述 是否必须 备注
project_id 项目id Y
content 评论内容 Y 最大126个字
(不够可以调节)
如果是二级评论,建议前面自动拼接 @用户名
emotion 存放表情 N 最大45字节
parent_id 父级评论 id N 此时必须发送 parent_user_id
parent_user_id 父级评论 的发出 用户id N

Response

  1. {
  2. "message": "操作成功"
  3. }

2. 打印某个项目的评论

GET
listProjectComment/{project_id}

字段 描述 是否必须 备注
project_id 项目 id Y 附于 url
page 页数 N 默认第一页
count 每页显示的条数 N 默认10

Response

  1. {
  2. "message": "操作成功",
  3. "data": {
  4. "total": 2,
  5. "per_page": 10,
  6. "current_page": 1,
  7. "last_page": 1,
  8. "next_page_url": null,
  9. "prev_page_url": null,
  10. "from": 1,
  11. "to": 2,
  12. "data": [
  13. {
  14. "id": 18,
  15. "parent_id": null,
  16. "user_id": 15,
  17. "content": "针对项目评论测试",
  18. "project_id": 5,
  19. "version_id": null,
  20. "point_start": null,
  21. "point_end": null,
  22. "emotion": "6666",
  23. "page": null,
  24. "created_at": "4 hours ago",
  25. "user": {
  26. "id": 15,
  27. "name": "assassin",
  28. "profile_pic": "upload/img/user-head/FuXzkWfE.png"
  29. },
  30. "children": [
  31. {
  32. "id": 19,
  33. "content": "针对项目评论测试",
  34. "created_at": "4 hours ago",
  35. "user_id": 15,
  36. "emotion": "6666",
  37. "parent_id": 18,
  38. "user": {
  39. "id": 15,
  40. "name": "assassin",
  41. "profile_pic": "upload/img/user-head/FuXzkWfE.png"
  42. }
  43. }
  44. ]
  45. }
  46. ]
  47. }
  48. }

针对项目文件

1. 评论文件

POST
user/comment/version

字段 描述 是否必须 备注
project_id 项目id Y 统计数目需要
version_id 具体文件id Y
content 评论内容 Y 最大126个字
(不够可以调节)
emotion 存放表情 N 最大45字节
point_start 开始时间 N 什么时候开始评论
精确到秒s
point_end 结束时间 N 什么时候结束评论
精确到秒。
page 页数 N 针对pdf等文件的评论

Response

  1. {
  2. "message": "操作成功"
  3. }

2. 打印某个文件的评论

GET
listVersionComment/{version_id}

字段 描述 是否必须 备注
version_id 具体文件id Y 附于 url

自动根据评论开始时间排序返回

Response

  1. {
  2. "message": "操作成功",
  3. "data": [
  4. {
  5. "id": 2,
  6. "user_id": 15,
  7. "content": "文件评论测试",
  8. "project_id": null,
  9. "version_id": 35,
  10. "point_start": 3,
  11. "point_end": 10,
  12. "emotion": "test", //表情存储
  13. "page": null,
  14. "created_at": "8 seconds ago",
  15. "user": { //发起评论的用户的基本信息
  16. "id": 15,
  17. "name": "assassin", //这里只返回昵称(可增加)
  18. "profile_pic": "upload/img/user-head/7ZqtihxR.jpg"
  19. }
  20. }
  21. ]
  22. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注