API - lehoffma/memo GitHub Wiki

LoginServlet

Methode: POST

Url: /api/login

Body: { 'email': <email> 'password': <password> }

Returns on success: HttpStatusCode 200, Body: { 'id': UserID als int, 'auth_token': Json Web Token/was auch immer wir am Ende benutzen }

Returns on failure: HttpStatusCode 403, Body: { 'id': null }


Methode: POST

Url: /api/logout

Body: { 'auth_token': Json Web Token/was auch immer wir am Ende benutzen }

Returns on success: HttpStatusCode 200, Body: { }

Returns on failure: HttpStatusCode 404, Body: { }


EventServlet

Methode: GET

Url: /api/event

Body: { 'id': event-ID (optional) 'searchTerm': Sucheingabe (optional, default='') 'type': Merch/Tour/Party enum (optional, default=ALL) }

Returns on success: HttpStatusCode 200, Body: { 'events': Array mit allen Events, die auf den searchTerm matchen }

Returns on failure: HttpStatusCode 404, Body: { }


Methode: POST

Url: /api/event

Body: { 'event': Event-Objekt als JSON }

Returns on success: HttpStatusCode 201, Body: { 'id': Die ID des neu angelegten Event-Objekts }

Returns on failure: HttpStatusCode 404, Body: { }

example body (tour & party):

{
  "event": {
    "id": 0,
    "title": "BER",
    "date": 1470096000000,
    "description": "ushfgifg",
    "expectedReadRole": 1,
    "expectedCheckInRole": 1,
    "expectedWriteRole": 5,
    "route": [ 0, 1 ],
    "imagePath": "https://placekitten.com/504/505",
    "capacity": 50,
    "priceMember": 10,
    "price": 10,
    "vehicle": "Bus",
    "miles": 300,
    "emptySeats": 46,
    "participants": [
      {
        "id": 0,
        "isDriver": true,
        "hasPaid": false
      },
      {
        "id": 1,
        "isDriver": true,
        "hasPaid": false
      },
      {
        "id": 2,
        "isDriver": true,
        "hasPaid": false
      },
      {
        "id": 3,
        "isDriver": true,
        "hasPaid": false
      }
    ],
    "meetingPoint": 0,
    "destination": 1,
    "type" : 1
  }
}

example body (merch):

{
  "event": {
    "id": 0,
    "title": "Polo-Shirt",
    "date": 1483225200000,
    "description": "Cooles Polo-Shirt für den echten Fan!",
    "expectedRole": "Mitglied",
    "route": [-1,-1],
    "imagePath": "https://placekitten.com/505/1000",
    "capacity": 20,
    "priceMember": 19,
    "price": 19,
    "type": 3,
    "stock": [
      {
        "size": "XS",
        "color": {
          "name": "Weiss",
          "hex": "#ffffff"
        },
        "amount": 2
      },
      {
        "size": "S",
        "color": {
          "name": "Weiss",
          "hex": "#ffffff"
        },
        "amount": 1
      },
      {
        "size": "M",
        "color": {
          "name": "Weiss",
          "hex": "#ffffff"
        },
        "amount": 5
      },
      {
        "size": "L",
        "color": {
          "name": "Weiss",
          "hex": "#ffffff"
        },
        "amount": 2
      },
      {
        "size": "XL",
        "color": {
          "name": "Weiss",
          "hex": "#ffffff"
        },
        "amount": 4
      },
      {
        "size": "XS",
        "color": {
          "name": "Grün",
          "hex": "#00ff00"
        },
        "amount": 2
      },
      {
        "size": "S",
        "color": {
          "name": "Grün",
          "hex": "#00ff00"
        },
        "amount": 1
      },
      {
        "size": "M",
        "color": {
          "name": "Grün",
          "hex": "#00ff00"
        },
        "amount": 5
      },
      {
        "size": "L",
        "color": {
          "name": "Grün",
          "hex": "#00ff00"
        },
        "amount": 2
      },
      {
        "size": "XL",
        "color": {
          "name": "Grün",
          "hex": "#00ff00"
        },
        "amount": 4
      },
      {
        "size": "XS",
        "color": {
          "name": "Blau",
          "hex": "#0000ff"
        },
        "amount": 2
      },
      {
        "size": "S",
        "color": {
          "name": "Blau",
          "hex": "#0000ff"
        },
        "amount": 1
      },
      {
        "size": "M",
        "color": {
          "name": "Blau",
          "hex": "#0000ff"
        },
        "amount": 5
      },
      {
        "size": "L",
        "color": {
          "name": "Blau",
          "hex": "#0000ff"
        },
        "amount": 2
      },
      {
        "size": "XL",
        "color": {
          "name": "Blau",
          "hex": "#0000ff"
        },
        "amount": 4
      }
    ],
    "colors": [
      {
        "name": "Weiss",
        "hex": "#ffffff"
      },
      {
        "name": "Grün",
        "hex": "#00ff00"
      },
      {
        "name": "Blau",
        "hex": "#0000ff"
      }
    ],
    "material": "Baumwolle",
    "_sizeTable": {
      "XS": [{
          "name": "Brustumfang",
          "min": 78,
          "max": 81
      },{
          "name": "Tailenumfang",
          "min": 82,
          "max": 85
        },{
          "name": "Hüftumfang",
          "min": 86,
          "max": 89
        },{
          "name": "Modelllänge",
          "min": 90,
          "max": 93
        },{
          "name": "Schulterbreite",
          "min": 94,
          "max": 97
        
    	}],
      "S": [{
          "name": "Brustumfang",
          "min": 78,
          "max": 81
    	},{
          "name": "Tailenumfang",
          "min": 82,
          "max": 85
        },{
          "name": "Hüftumfang",
          "min": 86,
          "max": 89
        },{
          "name": "Modelllänge",
          "min": 90,
          "max": 93
        },{
          "name": "Schulterbreite",
          "min": 94,
          "max": 97
        
    	}],
      "M": [{
          "name": "Brustumfang",
          "min": 78,
          "max": 81
    	},{
          "name": "Tailenumfang",
          "min": 82,
          "max": 85
        },{
          "name": "Hüftumfang",
          "min": 86,
          "max": 89
        },{
          "name": "Modelllänge",
          "min": 90,
          "max": 93
        },{
          "name": "Schulterbreite",
          "min": 94,
          "max": 97
        
    	}],
      "L": [{
          "name": "Brustumfang",
          "min": 78,
          "max": 81
    	},{
          "name": "Tailenumfang",
          "min": 82,
          "max": 85
        },{
          "name": "Hüftumfang",
          "min": 86,
          "max": 89
        },{
          "name": "Modelllänge",
          "min": 90,
          "max": 93
        },{
          "name": "Schulterbreite",
          "min": 94,
          "max": 97
        
    	}],
      "XL": [{
          "name": "Brustumfang",
          "min": 78,
          "max": 81
    	},{
          "name": "Tailenumfang",
          "min": 82,
          "max": 85
        },{
          "name": "Hüftumfang",
          "min": 86,
          "max": 89
        },{
          "name": "Modelllänge",
          "min": 90,
          "max": 93
        },{
          "name": "Schulterbreite",
          "min": 94,
          "max": 97
        
    	}],
      "XXL": [{
          "name": "Brustumfang",
          "min": 78,
          "max": 81
    	},{
          "name": "Tailenumfang",
          "min": 82,
          "max": 85
        },{
          "name": "Hüftumfang",
          "min": 86,
          "max": 89
        },{
          "name": "Modelllänge",
          "min": 90,
          "max": 93
        },{
          "name": "Schulterbreite",
          "min": 94,
          "max": 97
        
    	}]
    },
    "meetingPoint": 0,
    "sizes": [
      "XS",
      "S",
      "M",
      "L",
      "XL",
      "XXL"
    ]
  }
}

Methode: PUT

Url: /api/event

Body: { 'event': Event-Objekt als JSON }

Returns on success: HttpStatusCode 201, Body: { 'id': Die ID des geupdateten Event-Objekts }

Returns on failure: HttpStatusCode 404, Body: {Not Found }


Methode: DELETE

Url: /api/event

Body: { 'id': Die ID des Event-Objekts }

Returns on success: HttpStatusCode 200, Body: { }

Returns on failure: HttpStatusCode 404, Body: { }

UserServlet

Methode: GET

Url: /api/user

Params 'id': user-ID (optional) 'searchTerm': Sucheingabe (optional, default='')

Returns on success: HttpStatusCode 200, Body: { 'users': Array mit allen Usern, die auf den searchTerm matchen }

Returns on failure: HttpStatusCode 400, Body: {Bad ID Value }

Returns on failure: HttpStatusCode 404, Body: {Not Found }


Methode: POST

Url: /api/user

Body: { 'user': User-Objekt (JSON) }

Returns on success: HttpStatusCode 201, Body: { 'id': Die ID des neu angelegten Users }

Returns on failure: HttpStatusCode 400, Body: {Email must not be empty **(aber es gibt doch wohl noch andere fehler als das?)** }

Returns on failure: HttpStatusCode 400, Body: {Email already taken }

Example body:

{
  "user": {
    "id": 0,
    "firstName": "Nils",
    "surname": "Pöcking",
    "gender": "male",
    "birthDate": 776642400000,
    "telephone": "+(49) 176 / 84 80 62 85",
    "clubRole": "4",
    "joinDate": 1407794400000,
    "addresses": [
      0,
      1
    ],
    "permissions": {
      "funds": 2,
      "party": 2,
      "user": 2,
      "merch": 2,
      "tour": 2,
      "stock": 2,
      "account": 3
    },
    "miles": 1337,
    "email": "[email protected]",
    "passwordHash": "tohuuihgrohujt0uiwe89jg7",
    "isWoelfeClubMember": false,
    "hasSeasonTicket": false,
    "isStudent": true,
    "hasDebitAuth": true,
    "imagePath": "https://placekitten.com/504/504"
  },
  "profilePicture": null,
  "paymentInfo": null
}

Methode: PUT

Url: /api/user

Body: { 'user': User-Objekt (JSON) }

Returns on success: HttpStatusCode 200, Body: { 'id': Die ID des geupdateten Users }

Returns on failure: HttpStatusCode 400, Body: {Bad Data }

Returns on failure: HttpStatusCode 404, Body: {Not Found }


Methode: DELETE

Url: /api/user

Params: { 'id': Die ID des zu löschenden Users }

Returns on success: HttpStatusCode 200, Body: { }

Returns on failure: HttpStatusCode 400, Body: {Bad ID Value }

Returns on failure: HttpStatusCode 404, Body: {Not Found }

EntryServlet

Methode: GET

Url: /api/entry

Body: { 'eventId': ID des Events, welches dem Posten zugewiesen ist (optional) 'eventType': Merch/Tour/Party enum (optional) 'entryId': ID des Entries (optional) 'minDate': Startdatum (optional) 'maxDate': Enddatum (optional) }

Returns on success: HttpStatusCode 200, Body: { 'entries': Array mit allen Entry-Objekten, die auf die übergebenen parameter matchen }

Returns on failure: HttpStatusCode 404, Body: { }


Methode: POST

Url: /api/entry

Body: { 'entry': Entry-Objekt (JSON), 'eventId': ID des Events, dem das Entry Objekt zugewiesen wird 'eventType': Merch/Tour/Party enum }

Returns on success: HttpStatusCode 200, Body: { 'id': Die ID des neu angelegten oder geupdateten Entry-Objektes }

Returns on failure: HttpStatusCode 404, Body: { }


Methode: DELETE

Url: /api/entry

Body: { 'id': Die ID des zu löschenden Entries }

Returns on success: HttpStatusCode 200, Body: { }

Returns on failure: HttpStatusCode 404, Body: { }

ParticipantsServlet

Methode: GET

Url: /api/participants

Body: { 'eventId': ID des Events, dem die Participant-Liste zugewiesen ist 'eventType': Merch/Tour/Party enum }

Returns on success: HttpStatusCode 200, Body: { 'participants': Array mit allen Participant-Objekten, die auf die übergebenen parameter matchen }

Returns on failure: HttpStatusCode 404, Body: { }


Methode: POST

Url: /api/participants

Body: { 'eventId': ID des Events, dem das Participant Objekt zugewiesen wird 'eventType': Merch/Tour/Party enum, 'participant': das Participant Object }

Returns on success: `HttpStatusCode 200, Body: {

}`

Returns on failure: HttpStatusCode 404, Body: { }


Methode: PUT

Url: /api/participants

Body: { 'eventId': ID des Events, dem das Participant Objekt zugewiesen wird 'eventType': Merch/Tour/Party enum, 'participant': das Participant Object }

Returns on success: `HttpStatusCode 200, Body: {

}`

Returns on failure: HttpStatusCode 404, Body: { }


Methode: DELETE

Url: /api/participants

Body: { 'eventId': ID des Events, dem das Participant Objekt zugewiesen wird 'eventType': Merch/Tour/Party enum, 'participantId': Die ID des zu löschenden Participants }

Returns on success: HttpStatusCode 200, Body: { }

Returns on failure: HttpStatusCode 404, Body: { }

AddressServlet

Methode: GET

Url: /api/address

Params 'id': Address-ID (optional) 'searchTerm': Sucheingabe (optional, default='')

Returns on success: HttpStatusCode 200, Body: { 'Address': Array mit allen Usern, die auf den searchTerm matchen }

Returns on failure: HttpStatusCode 400, Body: {Bad ID Value }

Returns on failure: HttpStatusCode 404, Body: {Not Found }


Methode: POST

Url: /api/address

Body: { 'Address': Address-Objekt (JSON) }

Returns on success: HttpStatusCode 201, Body: { 'id': Die ID der neu angelegten Adresse }

Returns on failure: HttpStatusCode 400, Body: {Email must not be empty **(aber es gibt doch wohl noch andere fehler als das?)** }

Returns on failure: HttpStatusCode 400, Body: {Email already taken }

Example body:

{
  
}

Methode: PUT

Url: /api/address

Body: { 'Address': Address-Objekt (JSON) }

Returns on success: HttpStatusCode 200, Body: { 'id': Die ID der geupdateten Adresse }

Returns on failure: HttpStatusCode 400, Body: {Bad Data }

Returns on failure: HttpStatusCode 404, Body: {Not Found }


Methode: DELETE

Url: /api/address

Params: { 'id': Die ID der zu löschenden Adresse }

Returns on success: HttpStatusCode 200, Body: { }

Returns on failure: HttpStatusCode 400, Body: {Bad ID Value }

Returns on failure: HttpStatusCode 404, Body: {Not Found }

StockServlet

Methode: GET

Url: /api/stock

Params 'id': Stock-ID (optional) 'eventID': Event-ID (optional) 'searchTerm': Sucheingabe (optional, default='')

Returns on success: HttpStatusCode 200, Body: { 'stock': Array mit allem stock, das auf den searchTerm matcht }

Returns on failure: HttpStatusCode 400, Body: {Bad ID Value }

Returns on failure: HttpStatusCode 404, Body: {Not Found }


Methode: POST

Url: /api/stock

Body: { 'stock': stock-Objekt (JSON) }

Returns on success: HttpStatusCode 201, Body: { 'id': Die ID des neu angelegten Stocks }

Returns on failure: HttpStatusCode 400, Body: {Email must not be empty **(aber es gibt doch wohl noch andere fehler als das?)** }

Returns on failure: HttpStatusCode 400, Body: {Email already taken }

Example body:

{
}

Methode: PUT

Url: /api/stock

Body: { 'stock': User-Objekt (JSON) }

Returns on success: HttpStatusCode 200, Body: { 'id': Die ID des geupdateten Stocks }

Returns on failure: HttpStatusCode 400, Body: {Bad Data }

Returns on failure: HttpStatusCode 404, Body: {Not Found }


Methode: DELETE

Url: /api/stock

Params: { 'id': Die ID des zu löschenden Stocks }

Returns on success: HttpStatusCode 200, Body: { }

Returns on failure: HttpStatusCode 400, Body: {Bad ID Value }

Returns on failure: HttpStatusCode 404, Body: {Not Found }

⚠️ **GitHub.com Fallback** ⚠️