Repository navigation
API Dokumentation
sebastianhoitz edited this page May 10, 2012
·
10 revisions
Wir benutzen eine REST API um dem Client die Möglichkeit zu geben, die Daten zu bekommen und zu verändern.
Endpunkte:
GET: http://wi2.de/cards
X-SessionToken: <sessionInfo>
{
offset: 0,
items: 50,
total: 132,
cards: [
{
id: 1,
creatorID: 1,
question: "Was ist das hier?",
response: "Das ist ganz toll",
createdAt: "2012-05-09 13:15:31",
updatedAt: "2012-05-09 13:15:31",
isBad: false,
metaInfo: {
score: 31
}
},
{
id: 2,
creatorID: 2,
question: "Was ist das hier? Hä?",
response: "Na das hier!",
createdAt: "2012-05-04 13:15:31",
updatedAt: "2012-05-04 13:15:31",
isBad: false,
metaInfo: {
score: 10
}
}
]
}Anmerkungen
- Die Score wird jedes mal on-the-fly berechnet, in dem die Summe aller Votes für jede Karte berechnet wird.
GET http://wi2.de/cards/1
X-SessionToken: <sessionInfo>
{
card: {
id: 1,
creatorID: 1,
question: "Was ist das hier?",
response: "Das ist ganz toll",
createdAt: "2012-05-04 13:15:31",
updatedAt: "2012-05-04 13:15:31",
isBad: false,
metaInfo: {
score: 10,
canVote: true
}
}
}Anmerkungen:
- score ist dynamisch berechnet
- canVote ergibt sich daraus, ob der aktuelle Benutzer (vom Session Token) diese Frage schon bewertet hat
GET http://wi2.de/cards/1/votes
X-SessionToken: <sessionInfo>
{
offset: 0,
items: 50,
total: 100
votes: [
{
cardID: 1,
userID: 1,
vote: 1,
createdAt: DateTime,
updatedAt: DateTime
},
{
cardID: 1,
userID: 2,
vote: -1,
createdAt: DateTime,
updatedAt: DateTime
}
]
}POST /cards/1/votes
X-SessionToken: <sessionInfo>
BODY: "{
vote: 1
}"
301 Temporary Redirect zu http://wi2.de/cards/1
POST /cards/1/answer
BODY "{
correct: true
}"
301 Temporary Redirect zu http://wi2.de/cards/1
PUT http://wi2.de/cards/1
X-SessionToken: <sessionInfo>
BODY "{
question: "Was ist ...",
response: "Das ist ganz toll!"
}"
301 Temporary Redirect zu http://wi2.de/cards/1
POST http://wi2.de/cards
X-SessionToken: <sessionInfo>
BODY "{
question: "Was ist die Antwort auf alle Fragen?",
response: "42! Noob."
}"
301 Temporary Redirect zu http://wi2.de/cards/3
GET: http://wi2.de/classes
X-SessionToken: <sessionInfo>
{
offset: 0,
items: 50,
total: 132,
classes: [
{
id: 1,
creatorID: 1,
name: "VWL 1",
createdAt: DateTime,
updatedAt: DateTime,
metaInfo: {
score: 310,
upvotes: 350,
downvotes: 40
}
},
{
id: 2,
creatorID: 1,
name: "BWL 1",
createdAt: DateTime,
updatedAt: DateTime,
metaInfo: {
score: 310,
upvotes: 350,
downvotes: 40
}
}
]
}Anmerkungen
- Die score ergibt sich aus allen Bewertungen der Karten
GET: http://wi2.de/classes/1
X-SessionToken: <sessionInfo>
{
class: {
id: 1,
creatorID: 1,
name: "VWL 1",
createdAt: DateTime,
updatedAt: DateTime
}
}PUT http://wi2.de/classes/1
X-SessionToken: <sessionInfo>
BODY "{
name: "VWL 2"
}"
301 Temporary Redirect zu http://wi2.de/classes/1
POST http://wi2.de/classes
X-SessionToken: <sessionInfo>
BODY "{
name: "VWL 3",
}"
301 Temporary Redirect zu http://wi2.de/classes/3
GET: http://wi2.de/users
X-SessionToken: <sessionInfo>
{
offset: 0,
items: 50,
total: 132,
users: [
{
id: 1,
email: "foo@tu-bs.de",
firstname: "Foo",
lastname: "Bar",
isAdmin: false,
createdAt: DateTime
updatedAt: DateTime
lastLoginAt: DateTime
},
{
id: 2,
email: "blub@tu-bs.de",
firstname: "Hans",
lastname: "Blubb",
isAdmin: true,
createdAt: DateTime
updatedAt: DateTime
lastLoginAt: DateTime
}
]
}GET http://wi2.de/users/1
X-SessionToken: <sessionInfo>
{
user: {
id: 1,
email: "foo@tu-bs.de",
firstname: "Foo",
lastname: "Bar",
isAdmin: false,
createdAt: DateTime
updatedAt: DateTime
lastLoginAt: DateTime
}
}PUT http://wi2.de/users/1
X-SessionToken: <sessionInfo>
BODY "{
firstname: "Hans",
lastname: "Meier",
password: "asdasdasd"
}"
301 Temporary Redirect zu http://wi2.de/users/1
POST http://wi2.de/users
X-SessionToken: <sessionInfo>
BODY "{
firstname: "Hans",
lastname: "Meyer",
password: "asdasdasd",
email: "h.meyer@tu-bs.de"
}"
301 Temporary Redirect zu http://wi2.de/users/3
GET http://wi2.de/users/1/classes
X-SessionToken: <sessionInfo>
{
offset: 0,
items: 50,
total: 100
classes: [
{
id: 1,
creatorID: 1,
name: "VWL 1",
createdAt: DateTime,
updatedAt: DateTime,
metaInfo: {
score: 310,
upvotes: 350,
downvotes: 40
}
},
{
id: 2,
creatorID: 1,
name: "BWL 1",
createdAt: DateTime,
updatedAt: DateTime,
metaInfo: {
score: 310,
upvotes: 350,
downvotes: 40
}
}
]
}GET http://wi2.de/users/1/folders
X-SessionToken: <sessionInfo>
{
offset: 0,
items: 50,
total: 100
folders: [
{
id: 1,
name: "VWL 1",
userID: 1,
createdAt: DateTime,
updatedAt: DateTime
},
{
id: 2,
name: "BWL 1",
userID: 1,
createdAt: DateTime,
updatedAt: DateTime
}
]
}GET: http://wi2.de/folders
X-SessionToken: <sessionInfo>
{
offset: 0,
items: 50,
total: 132,
folders: [
{
id: 1,
name: "VWL 1",
userID: 1,
createdAt: DateTime,
updatedAt: DateTime
},
{
id: 2,
name: "BWL 1",
userID: 2,
createdAt: DateTime,
updatedAt: DateTime
}
]
}GET: http://wi2.de/folders/1
X-SessionToken: <sessionInfo>
{
folder: {
id: 1,
name: "VWL 1",
userID: 1,
createdAt: DateTime,
updatedAt: DateTime
}
}PUT http://wi2.de/folders/1
X-SessionToken: <sessionInfo>
BODY "{
name: "VWL 2"
}"
301 Temporary Redirect zu http://wi2.de/folders/1
POST http://wi2.de/folders
X-SessionToken: <sessionInfo>
BODY "{
name: "VWL 3",
}"
301 Temporary Redirect zu http://wi2.de/folders/3
GET http://wi2.de/folders/1/classes
X-SessionToken: <sessionInfo>
{
offset: 0,
items: 50,
total: 100
classes: [
{
id: 1,
creatorID: 1,
name: "VWL 1",
createdAt: DateTime,
updatedAt: DateTime,
metaInfo: {
score: 310,
upvotes: 350,
downvotes: 40
}
},
{
id: 2,
creatorID: 2,
name: "BWL 1",
createdAt: DateTime,
updatedAt: DateTime,
metaInfo: {
score: 310,
upvotes: 350,
downvotes: 40
}
}
]
}