parent
a553e2db42
commit
e41b57d379
@ -1,361 +0,0 @@ |
|||||||
RocketChat.API.v1.addRoute 'info', authRequired: false, |
|
||||||
get: -> RocketChat.Info |
|
||||||
|
|
||||||
|
|
||||||
RocketChat.API.v1.addRoute 'me', authRequired: true, |
|
||||||
get: -> |
|
||||||
return _.pick @user, [ |
|
||||||
'_id' |
|
||||||
'name' |
|
||||||
'emails' |
|
||||||
'status' |
|
||||||
'statusConnection' |
|
||||||
'username' |
|
||||||
'utcOffset' |
|
||||||
'active' |
|
||||||
'language' |
|
||||||
] |
|
||||||
|
|
||||||
|
|
||||||
# Send Channel Message |
|
||||||
RocketChat.API.v1.addRoute 'chat.messageExamples', authRequired: true, |
|
||||||
get: -> |
|
||||||
return RocketChat.API.v1.success |
|
||||||
body: [ |
|
||||||
token: Random.id(24) |
|
||||||
channel_id: Random.id() |
|
||||||
channel_name: 'general' |
|
||||||
timestamp: new Date |
|
||||||
user_id: Random.id() |
|
||||||
user_name: 'rocket.cat' |
|
||||||
text: 'Sample text 1' |
|
||||||
trigger_word: 'Sample' |
|
||||||
, |
|
||||||
token: Random.id(24) |
|
||||||
channel_id: Random.id() |
|
||||||
channel_name: 'general' |
|
||||||
timestamp: new Date |
|
||||||
user_id: Random.id() |
|
||||||
user_name: 'rocket.cat' |
|
||||||
text: 'Sample text 2' |
|
||||||
trigger_word: 'Sample' |
|
||||||
, |
|
||||||
token: Random.id(24) |
|
||||||
channel_id: Random.id() |
|
||||||
channel_name: 'general' |
|
||||||
timestamp: new Date |
|
||||||
user_id: Random.id() |
|
||||||
user_name: 'rocket.cat' |
|
||||||
text: 'Sample text 3' |
|
||||||
trigger_word: 'Sample' |
|
||||||
] |
|
||||||
|
|
||||||
|
|
||||||
# Send Channel Message |
|
||||||
RocketChat.API.v1.addRoute 'chat.postMessage', authRequired: true, |
|
||||||
post: -> |
|
||||||
try |
|
||||||
messageReturn = processWebhookMessage @bodyParams, @user |
|
||||||
|
|
||||||
if not messageReturn? |
|
||||||
return RocketChat.API.v1.failure 'unknown-error' |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
ts: Date.now() |
|
||||||
channel: messageReturn.channel |
|
||||||
message: messageReturn.message |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.error |
|
||||||
|
|
||||||
# Set Channel Topic |
|
||||||
RocketChat.API.v1.addRoute 'channels.setTopic', authRequired: true, |
|
||||||
post: -> |
|
||||||
if not @bodyParams.channel? |
|
||||||
return RocketChat.API.v1.failure 'Body param "channel" is required' |
|
||||||
|
|
||||||
if not @bodyParams.topic? |
|
||||||
return RocketChat.API.v1.failure 'Body param "topic" is required' |
|
||||||
|
|
||||||
unless RocketChat.authz.hasPermission(@userId, 'edit-room', @bodyParams.channel) |
|
||||||
return RocketChat.API.v1.unauthorized() |
|
||||||
|
|
||||||
if not RocketChat.saveRoomTopic(@bodyParams.channel, @bodyParams.topic, @user) |
|
||||||
return RocketChat.API.v1.failure 'invalid_channel' |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
topic: @bodyParams.topic |
|
||||||
|
|
||||||
|
|
||||||
# Create Channel |
|
||||||
RocketChat.API.v1.addRoute 'channels.create', authRequired: true, |
|
||||||
post: -> |
|
||||||
if not @bodyParams.name? |
|
||||||
return RocketChat.API.v1.failure 'Body param "name" is required' |
|
||||||
|
|
||||||
if not RocketChat.authz.hasPermission(@userId, 'create-c') |
|
||||||
return RocketChat.API.v1.unauthorized() |
|
||||||
|
|
||||||
id = undefined |
|
||||||
try |
|
||||||
Meteor.runAsUser this.userId, => |
|
||||||
id = Meteor.call 'createChannel', @bodyParams.name, [] |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
channel: RocketChat.models.Rooms.findOneById(id.rid) |
|
||||||
|
|
||||||
RocketChat.API.v1.addRoute 'channels.history', authRequired: true, |
|
||||||
get: -> |
|
||||||
if not @queryParams.roomId? |
|
||||||
return RocketChat.API.v1.failure 'Query parameter "roomId" is required.' |
|
||||||
|
|
||||||
rid = @queryParams.roomId |
|
||||||
|
|
||||||
latestDate = new Date |
|
||||||
if @queryParams.latest? |
|
||||||
latestDate = new Date(@queryParams.latest) |
|
||||||
|
|
||||||
oldestDate = undefined |
|
||||||
if @queryParams.oldest? |
|
||||||
oldestDate = new Date(@queryParams.oldest) |
|
||||||
|
|
||||||
inclusive = false |
|
||||||
if @queryParams.inclusive? |
|
||||||
inclusive = @queryParams.inclusive |
|
||||||
|
|
||||||
count = 20 |
|
||||||
if @queryParams.count? |
|
||||||
count = parseInt @queryParams.count |
|
||||||
|
|
||||||
unreads = false |
|
||||||
if @queryParams.unreads? |
|
||||||
unreads = @queryParams.unreads |
|
||||||
|
|
||||||
result = {} |
|
||||||
|
|
||||||
try |
|
||||||
Meteor.runAsUser this.userId, => |
|
||||||
result = Meteor.call 'getChannelHistory', { rid, latest: latestDate, oldest: oldestDate, inclusive, count, unreads } |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
result: result |
|
||||||
|
|
||||||
RocketChat.API.v1.addRoute 'channels.cleanHistory', authRequired: true, |
|
||||||
post: -> |
|
||||||
if not @bodyParams.roomId? |
|
||||||
return RocketChat.API.v1.failure 'Body parameter "roomId" is required.' |
|
||||||
|
|
||||||
roomId = @bodyParams.roomId |
|
||||||
|
|
||||||
if not @bodyParams.latest? |
|
||||||
return RocketChat.API.v1.failure 'Body parameter "latest" is required.' |
|
||||||
|
|
||||||
if not @bodyParams.oldest? |
|
||||||
return RocketChat.API.v1.failure 'Body parameter "oldest" is required.' |
|
||||||
|
|
||||||
latest = new Date(@bodyParams.latest) |
|
||||||
oldest = new Date(@bodyParams.oldest) |
|
||||||
|
|
||||||
inclusive = false |
|
||||||
if @bodyParams.inclusive? |
|
||||||
inclusive = @bodyParams.inclusive |
|
||||||
|
|
||||||
try |
|
||||||
Meteor.runAsUser this.userId, => |
|
||||||
Meteor.call 'cleanChannelHistory', { roomId, latest, oldest, inclusive } |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
success: true |
|
||||||
|
|
||||||
# List Private Groups a user has access to |
|
||||||
RocketChat.API.v1.addRoute 'groups.list', authRequired: true, |
|
||||||
get: -> |
|
||||||
roomIds = _.pluck RocketChat.models.Subscriptions.findByTypeAndUserId('p', @userId).fetch(), 'rid' |
|
||||||
return { groups: RocketChat.models.Rooms.findByIds(roomIds).fetch() } |
|
||||||
|
|
||||||
# Add All Users to Channel |
|
||||||
RocketChat.API.v1.addRoute 'channel.addall', authRequired: true, |
|
||||||
post: -> |
|
||||||
|
|
||||||
id = undefined |
|
||||||
try |
|
||||||
Meteor.runAsUser this.userId, => |
|
||||||
id = Meteor.call 'addAllUserToRoom', @bodyParams.roomId, [] |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
channel: RocketChat.models.Rooms.findOneById(@bodyParams.roomId) |
|
||||||
|
|
||||||
# List all users |
|
||||||
RocketChat.API.v1.addRoute 'users.list', authRequired: true, |
|
||||||
get: -> |
|
||||||
if RocketChat.authz.hasRole(@userId, 'admin') is false |
|
||||||
return RocketChat.API.v1.unauthorized() |
|
||||||
|
|
||||||
return { users: RocketChat.models.Users.find().fetch() } |
|
||||||
|
|
||||||
# Create user |
|
||||||
RocketChat.API.v1.addRoute 'users.create', authRequired: true, |
|
||||||
post: -> |
|
||||||
try |
|
||||||
check @bodyParams, |
|
||||||
email: String |
|
||||||
name: String |
|
||||||
password: String |
|
||||||
username: String |
|
||||||
role: Match.Maybe(String) |
|
||||||
joinDefaultChannels: Match.Maybe(Boolean) |
|
||||||
requirePasswordChange: Match.Maybe(Boolean) |
|
||||||
sendWelcomeEmail: Match.Maybe(Boolean) |
|
||||||
verified: Match.Maybe(Boolean) |
|
||||||
customFields: Match.Maybe(Object) |
|
||||||
|
|
||||||
# check username availability first (to not create an user without a username) |
|
||||||
try |
|
||||||
nameValidation = new RegExp '^' + RocketChat.settings.get('UTF8_Names_Validation') + '$' |
|
||||||
catch |
|
||||||
nameValidation = new RegExp '^[0-9a-zA-Z-_.]+$' |
|
||||||
|
|
||||||
if not nameValidation.test @bodyParams.username |
|
||||||
return RocketChat.API.v1.failure 'Invalid username' |
|
||||||
|
|
||||||
unless RocketChat.checkUsernameAvailability @bodyParams.username |
|
||||||
return RocketChat.API.v1.failure 'Username not available' |
|
||||||
|
|
||||||
userData = {} |
|
||||||
|
|
||||||
newUserId = RocketChat.saveUser(@userId, @bodyParams) |
|
||||||
|
|
||||||
if @bodyParams.customFields? |
|
||||||
RocketChat.saveCustomFields(newUserId, @bodyParams.customFields) |
|
||||||
|
|
||||||
user = RocketChat.models.Users.findOneById(newUserId) |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
user: user |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
# Update user |
|
||||||
RocketChat.API.v1.addRoute 'user.update', authRequired: true, |
|
||||||
post: -> |
|
||||||
try |
|
||||||
check @bodyParams, |
|
||||||
userId: String |
|
||||||
data: |
|
||||||
email: Match.Maybe(String) |
|
||||||
name: Match.Maybe(String) |
|
||||||
password: Match.Maybe(String) |
|
||||||
username: Match.Maybe(String) |
|
||||||
role: Match.Maybe(String) |
|
||||||
joinDefaultChannels: Match.Maybe(Boolean) |
|
||||||
requirePasswordChange: Match.Maybe(Boolean) |
|
||||||
sendWelcomeEmail: Match.Maybe(Boolean) |
|
||||||
verified: Match.Maybe(Boolean) |
|
||||||
customFields: Match.Maybe(Object) |
|
||||||
|
|
||||||
userData = _.extend({ _id: @bodyParams.userId }, @bodyParams.data) |
|
||||||
|
|
||||||
RocketChat.saveUser(@userId, userData) |
|
||||||
|
|
||||||
if @bodyParams.data.customFields? |
|
||||||
RocketChat.saveCustomFields(@bodyParams.userId, @bodyParams.data.customFields) |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
user: RocketChat.models.Users.findOneById(@bodyParams.userId) |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
# Get User Information |
|
||||||
RocketChat.API.v1.addRoute 'user.info', authRequired: true, |
|
||||||
post: -> |
|
||||||
if RocketChat.authz.hasRole(@userId, 'admin') is false |
|
||||||
return RocketChat.API.v1.unauthorized() |
|
||||||
|
|
||||||
return { user: RocketChat.models.Users.findOneByUsername @bodyParams.name } |
|
||||||
|
|
||||||
# Get User Presence |
|
||||||
RocketChat.API.v1.addRoute 'user.getpresence', authRequired: true, |
|
||||||
post: -> |
|
||||||
return { user: RocketChat.models.Users.findOne( { username: @bodyParams.name} , {fields: {status: 1}} ) } |
|
||||||
|
|
||||||
# Delete User |
|
||||||
RocketChat.API.v1.addRoute 'users.delete', authRequired: true, |
|
||||||
post: -> |
|
||||||
if not @bodyParams.userId? |
|
||||||
return RocketChat.API.v1.failure 'Body param "userId" is required' |
|
||||||
|
|
||||||
if not RocketChat.authz.hasPermission(@userId, 'delete-user') |
|
||||||
return RocketChat.API.v1.unauthorized() |
|
||||||
|
|
||||||
id = undefined |
|
||||||
try |
|
||||||
Meteor.runAsUser this.userId, => |
|
||||||
id = Meteor.call 'deleteUser', @bodyParams.userId, [] |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
|
|
||||||
# Set user's avatar |
|
||||||
RocketChat.API.v1.addRoute 'users.setAvatar', authRequired: true, |
|
||||||
post: -> |
|
||||||
try |
|
||||||
check @bodyParams, |
|
||||||
avatarUrl: Match.Maybe(String) |
|
||||||
|
|
||||||
user = Meteor.users.findOne(@userId) |
|
||||||
|
|
||||||
if @bodyParams.avatarUrl |
|
||||||
RocketChat.setUserAvatar(user, @bodyParams.avatarUrl, '', 'url') |
|
||||||
else |
|
||||||
Busboy = Npm.require('busboy') |
|
||||||
busboy = new Busboy headers: @request.headers |
|
||||||
Meteor.wrapAsync((callback) => |
|
||||||
busboy.on 'file', Meteor.bindEnvironment (fieldname, file, filename, encoding, mimetype) => |
|
||||||
if fieldname isnt 'image' |
|
||||||
return callback(new Meteor.Error 'invalid-field') |
|
||||||
|
|
||||||
imageData = [] |
|
||||||
file.on 'data', Meteor.bindEnvironment (data) -> |
|
||||||
imageData.push data |
|
||||||
|
|
||||||
file.on 'end', Meteor.bindEnvironment () => |
|
||||||
RocketChat.setUserAvatar(user, Buffer.concat(imageData), mimetype, 'rest') |
|
||||||
callback() |
|
||||||
|
|
||||||
@request.pipe busboy |
|
||||||
)() |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
return RocketChat.API.v1.success() |
|
||||||
|
|
||||||
# Create Private Group |
|
||||||
RocketChat.API.v1.addRoute 'groups.create', authRequired: true, |
|
||||||
post: -> |
|
||||||
if not @bodyParams.name? |
|
||||||
return RocketChat.API.v1.failure 'Body param "name" is required' |
|
||||||
|
|
||||||
if not RocketChat.authz.hasPermission(@userId, 'create-p') |
|
||||||
return RocketChat.API.v1.unauthorized() |
|
||||||
|
|
||||||
id = undefined |
|
||||||
try |
|
||||||
if not @bodyParams.members? |
|
||||||
Meteor.runAsUser this.userId, => |
|
||||||
id = Meteor.call 'createPrivateGroup', @bodyParams.name, [] |
|
||||||
else |
|
||||||
Meteor.runAsUser this.userId, => |
|
||||||
id = Meteor.call 'createPrivateGroup', @bodyParams.name, @bodyParams.members, [] |
|
||||||
catch e |
|
||||||
return RocketChat.API.v1.failure e.name + ': ' + e.message |
|
||||||
|
|
||||||
return RocketChat.API.v1.success |
|
||||||
group: RocketChat.models.Rooms.findOneById(id.rid) |
|
@ -1,3 +1,3 @@ |
|||||||
# Important Information |
# Important Information |
||||||
|
|
||||||
The REST API has moved to `/api/v1/${endpoint}`, please see the [Rocket.Chat Documentation](https://rocket.chat/docs/developer-guides/rest-api) for details on the current REST API. If a feature is currently, feel free to open a new pull request to add it. :heart: |
The REST API has moved to `/api/v1/${endpoint}`, please see the [Rocket.Chat Documentation](https://rocket.chat/docs/developer-guides/rest-api) for details on the current REST API. If a feature is currently missing, feel free to open a new pull request to add it. :heart: |
||||||
|
Loading…
Reference in new issue