资源说明:
**Sign in an Existing User**
**Register a New User**
##Team Methods
**Search Teams**
Most standard odata search conventions can be used to search for teams.
**Get a Team**
**Create a Team**
**Update a Team**
**Delete a Team**
**Add a User to Team**
**Approve Pending Team Member**
**Deny User**
##Thing Methods
**Search Things**
Most standard odata search conventions can be used to search for things.
**Get a Thing**
**Create a new Thing**
**Update a Thing**
**Delete a Thing**
**Complete a Thing**
**Update a Things Status**
#TeamThing™ Demo App The TeamThing demo app is designed to show-off the capabilities of [Kendo UI Mobile](http://www.kendoui.com/mobile), a HTML5 mobile app framework that helps developers create apps that automatically adapt to the look-and-feel of different devices. **NOTE: TeamThing is not an official Kendo UI product. It is an unsupported demo, meant to be used as a learning tool. Use at your own risk.** ##What is TeamThing? TeamThing is an app that helps teams easily keep track of what everyone is doing. It's like a task list for teams. Users can do the following things in the TeamThing app: * Join a team * Create new Things * Update Thing status (InProgress/Completed/Delayed/Deleted) * Browse personal Things for current team * View other team members ##How do you use TeamThing? To use TeamThing, simply browse to the [TeamThing app](http://teamthing.apphb.com/mobile/index.html) from any supported mobile device. In the current version, iOS, Android, and BlackBerry are supported. To use the demo, you can log-in with the following credentials: * **User:** demo@demo.com * **Pass:** 1234 TeamThing will automatically adapt to the look-and-feel of your device, providing a "native" experience wherever you use it. No need for separate apps or code for each device. ##How is TeamThing built? TeamThing consists of two primary pieces: 1. Kendo UI Mobile powered HTML/JavaScript front-end app 2. JSON REST API (using Web API) The demo app is deployed to AppHarbor. An additional browser-based admin interface is also being developed. ###Kendo UI Mobile App You can find the files specific the Kendo UI Mobile app in: (Root) > TeamThing.Web > Mobile This folder contains the HTML, JavaScript, and CSS needed for the mobile app. The bulk of the app's logic is contained in two files: * teamthing.app.js * teamthing.data.js The starting point for the app, which includes the Kendo UI Mobile Application initialization is contained in: * index.html ###REST API The TeamThing RESTful API is built using ASP.NET MVC 4's Web API and [Telerik's free OpenAccess ORM](http://www.telerik.com/orm) communicating with a cloud-hosted SQL Server instance. The primary app endpoints can be found in: (Root) > TeamThing.Web > Controllers > Thing/Team/UserController.cs #Improving the Demo TeamThing is a living demo, far from finished or perfect. You can help make the demo better! Take a look at the existing Issues on GitHub and make your own suggestions for improvement. [TeamThing Issues on GitHub](https://github.com/toddanglin/TeamThing/issues) There are a number of features planned but not yet implemented, including things like data security and federated log-in. #TeamThing Service API Documentation of the TeamThing RESTful API ##User Methods **Search Users** Most standard odata search conventions can be used to search for users.
Request Type | Url | Result |
---|---|---|
GET | /api/user Example: /api/user?$filter=EmailAddress ne null and tolower(EmailAddress) eq 'jholt456@gmail.com' |
SUCCESS - 200 Ok
[{"EmailAddress":"jholt456@gmail.com", Id":6}]FAILURE - 200 OK Returns empty array for no results |
Request Type | Url | Params | Result |
---|---|---|---|
POST | /api/user/signin | {"EmailAddress":"jholt456@gmail.com"} | SUCCESS - 200 Ok
{"EmailAddress":"jholt456@gmail.com", "Id":6, "PendingTeams":[], "Teams":[{"Administrators":[6], "Id":6, "IsPublic":true, "Name":"567 asdfasdf", "OwnerId":6}, {"Administrators":[6], "Id":8, "IsPublic":false, "Name":"Test Team", "OwnerId":6}], "Things":[{"Description":"Test thing", "Id":5,"Status": "InProgress"}] }Failure 400: Bad Request Returns JSON error array ["A user does not exist with this user name."] |
Request Type | Url | Params | Result |
---|---|---|---|
POST | /api/user/register | {"EmailAddress":"newUser@test.com"} | SUCCESS - 200 Ok
{"EmailAddress":"newUser@test.com", "Id":7, "PendingTeams":[], "Teams":[], "Things":[] }Failure 400: Bad Request Returns JSON error array ["A user with this email address has already registered!"] |
Most standard odata search conventions can be used to search for teams.
Request Type | Url | Result |
---|---|---|
GET | /api/team Example: /api/team?$filter=Name ne null and tolower(Name) eq 'closed team' |
SUCCESS - 200 Ok
[{"Id":4, "IsPublic":false, "Name":"Closed Team", "PendingTeamMembers":[{"EmailAddress":"holt@telerik.com", "FullName":" ", "Id":5, "Role":"Viewer"}], "TeamMembers":[{"EmailAddress":"jholt456@gmail.com", "FullName":" ", "Id":6, "Role":"Administrator"}] }]FAILURE - 200 Ok Returns empty array for no results |
Request Type | Url | Params | Result |
---|---|---|---|
GET | /api/team/6 | SUCCESS - 200 Ok
{"Id":6, "IsPublic":true, "Name":"567 asdfasdf", "PendingTeamMembers":[], "TeamMembers":[{"EmailAddress":"jholt456@gmail.com", "FullName":" ", "Id":6, "Role":"Administrator"}]}Failure 400: Bad Request Returns JSON error array ["Invalid Team"] |
Request Type | Url | Params | Result |
---|---|---|---|
POST | /api/team |
{"name":"asdf", "ispublic":true, "createdById":6} |
SUCCESS - 201 Created
{"Administrators":[6], "Id":19, "IsPublic":false, "Name":"My new team", "OwnerId":6}Failure - 400 Bad Request When any data is invalid returns JSON error array ["A team must have a name"] |
Request Type | Url | Params | Result |
---|---|---|---|
PUT | /api/team/8 |
{"name": "Test Team2", "ispublic":true, "updatedbyid":6} |
SUCCESS - 201 Created
{"Id":8, "IsPublic":true, "Name":"Test Team2", "PendingTeamMembers":[], "TeamMembers":[{"EmailAddress":"jholt456@gmail.com", "FullName":" ", "Id":6, "Role":"Administrator"}, {"EmailAddress":"newUser@test.com", "FullName":" ", "Id":7, "Role":"Viewer"}]}Failure - 400 Bad Request When any data is invalid returns JSON error array ["Team name already in use"] |
Request Type | Url | Params | Result |
---|---|---|---|
DELETE | /api/team/8 |
{"userId":6} |
SUCCESS - 204 No Content FAILURE - 400 Bad Request When any data is invalid returns JSON error array ["Invalid Team"] |
Request Type | Url | Params | Result |
---|---|---|---|
PUT | /api/team/6/join |
{"userId":6} |
SUCCESS - 200 Ok
{"Id":6,"IsPublic":false, "Name":"Test Team", "PendingTeamMembers":[{"EmailAddress":"newUser@test.com", "FullName":" ", "Id":7, "Role":"Viewer"}], "TeamMembers":[{"EmailAddress":"jholt456@gmail.com", "FullName":" ", "Id":6, "Role":"Administrator"}]}Failure - 400 Bad Request When any data is invalid returns JSON error array ["Invalid Team"] |
Request Type | Url | Params | Result |
---|---|---|---|
PUT | /api/team/6/approvemember |
{"userId":7} |
SUCCESS - 200 OK FAILURE 404 Not Found - When invalid team or user Returns JSON error array ["Invalid Team"] |
Request Type | Url | Params | Result |
---|---|---|---|
PUT | /api/team/6/denymember |
{"userId":7} |
SUCCESS - 200 OK FAILURE 404 Not Found - When invalid team or user 400 Bad Request - When trying to deny access to team owner ["Invalid Team"] |
Most standard odata search conventions can be used to search for things.
Request Type | Url | Result |
---|---|---|
GET | /api/thing Example: /api/thing?$filter=Description ne null and indexof(Description, 'd') ge 1 |
SUCCESS - 200 Ok
[{"Description":"asdfasdf", "Id":3, "Status":"InProgress"}, {"Description":"vcdfasdfasdf", "Id":4, "Status":"InProgress"}, {"Description":"a sdfasdf ", "Id":6, "Status":"InProgress"}]FAILURE - 200 Ok Returns empty array for no results |
Request Type | Url | Params | Result |
---|---|---|---|
GET | /api/thing/8 | SUCCESS - 200 OK
{"Description":"a sdfasdf ", "Id":6, "Status":"InProgress"}Failure - 400 Bad Request When any data is invalid returns JSON error array ["Invalid Thing"] |
Request Type | Url | Params | Result |
---|---|---|---|
POST | /api/thing |
{"CreatedById":5, "Description":"My New Thing", "AssignedTo":[5,6], "teamId":10} |
SUCCESS - 200 Ok
{"AssignedTo":[{"EmailAddress":"newUser@test.com", "Id":7, "ImagePath":"\/images\/GenericUserImage.gif"}], "DateCreated":"\/Date(1333463568863-0500)\/", "Description":"test", "Id":52, "Owner":{"EmailAddress":"jholt456@gmail.com", "Id":11, "ImagePath":"\/images\/GenericUserImage.gif"}, "Status":"InProgress", "Team":{"Administrators":[7], "Id":20, "ImagePath": "\/images\/GenericUserImage.gif", "IsPublic":false, "Name":"A Sweet Team", "OwnerId":7}}Failure - 400 Bad Request When any data is invalid returns JSON error array ["A thing must be assigned to 1 or more people"] |
Request Type | Url | Params | Result |
---|---|---|---|
PUT | /api/thing/8 | SUCCESS - 200 OK Failure - 400 Bad Request When any data is invalid returns JSON error array ["A thing must be assigned to 1 or more people"] |
Request Type | Url | Params | Result |
---|---|---|---|
DELETE | /api/thing/8 |
{"DeletedById":6} |
SUCCESS - 204 No Content Failure - 400 Bad Request When any data is invalid returns JSON error array ["Invalid Thing"] |
Request Type | Url | Params | Result |
---|---|---|---|
PUT | /api/thing/8/complete |
{"UserId":10} |
SUCCESS - 200 OK
{"Description":"a sdfasdf ", "Id":8, "Status":"Complete"}Failure - 400 Bad Request When any data is invalid returns JSON error array ["Invalid Thing"] |
Request Type | Url | Params | Result |
---|---|---|---|
PUT | /api/thing/8/updatestatus |
{"UserId":10, "Status":"Completed"} |
SUCCESS - 200 OK
{"Description":"a sdfasdf ", "Id":8, "Status":"Completed"}Failure - 400 Bad Request When any data is invalid returns JSON error array ["Invalid Thing"] |
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。