Skip to content
Jonas Knorr edited this page Dec 30, 2017 · 25 revisions

API

Hier werden die API Aufrufe beschrieben und dokumentiert.

GET /route-detail

Gibt alle Details zu einer Route zurück

Query Parameter:

  • id: die ID der Route die zurückgegeben werden soll

Response Body:

{
   "id":1,
   "name":"Tolle Route",
   "points":[
      [7.626335620, 50.31643520],
      [7.626045940, 50.31633930],
      [7.625927240, 50.31630920],
      [7.626092030, 50.31634150]
   ],
   "startPoint":[10.1, 17.2],
   "endPoint":[42.0, 120.3],
   "distance":12.3,
   "elevations":[200, 300],
   "duration":72,
   "difficultyAvg":3.8,
   "ratingAvg":2.7,
   "startCountry":"Deutschland",
   "endCountry":"Spanien",
   "sponsorPricePerKm":100,
   "pois":[
      {
         "id":13,
         "name":"Spannendes Monument 2",
         "description":" Dieses Monument sollte niemand gesehen haben und nun folgt: Damit Ihr indess erkennt, woher dieser ganze Irrthum gekommen ist, und weshalb man die Lust anklagt und den Schmerz lobet.",
         "location":[102.1, 31,2],
         "media":[
            {
               "type":"image",
               "reference":"s3_bucket_reference_thing"
            },
            {
               "type":"audio",
               "reference":"s3_bucket_reference_thing3"
            }
         ]
      },
      {
         "id":17,
         "name":"Spannendes Monument",
         "description":" Dieses Monument sollte jeder gesehen haben und nun folgt: Damit Ihr indess erkennt, woher dieser ganze Irrthum gekommen ist, und weshalb man die Lust anklagt und den Schmerz lobet.",
         "location":[102.1, 31, 2],
         "media":[
            {
               "type":"image",
               "reference":"s3_bucket_reference_thing"
            },
            {
               "type":"audio",
               "reference":"s3_bucket_reference_thing3"
            }
         ]
      }
   ],
   "stories":[
      {
         "id":1,
         "text":"Das ist ein ganz toller dext er Story: Damit Ihr indess erkennt, woher dieser ganze Irrthum gekommen ist, und weshalb man die Lust anklagt und den Schmerz lobet, so will ich Euch Alles eröffnen und auseinander setzen, was jener Begründer der Wahrheit und gleichsam Baumeister des glücklichen Lebens selbst darüber gesagt hat.",
         "title":"Tolle Story",
         "media":[
            {
               "type":"image",
               "reference":"s3_bucket_reference_thing"
            },
            {
               "type":"video",
               "reference":"s3_bucket_reference_thing2"
            },
            {
               "type":"audio",
               "reference":"s3_bucket_reference_thing3"
            }
         ],
         "point":[15.3, 74.8],
         "creationDate":1511349112
      }
   ],
   "ratings":[
      {
         "id":1,
         "userName":"HansGeorg3000",
         "rating":3,
         "duration":6,
         "difficulty":3,
         "creationDate":1511346112,
         "comment":"Ganz geil, gibt aber geilere!"
      },
      {
         "id":2,
         "userName":"Alpenflitzer76",
         "rating":5,
         "duration":5,
         "difficulty":4,
         "creationDate":1511336112,
         "comment":"Oberhammer! Haste nit gesehn!"
      }
   ],
   "sponsorParts":[
      {
         "id":1,
         "sponsorId":"1001",
         "sponsoredId":"2001",
         "startPoint":[7.626335620, 50.31643520],
         "endPoint":[7.620002200, 50.31549230],
         "distance":35,
         "price":3500,
         "comment":"Wir möchten das Rote Kreuz für die tolle Arbeit bei der Flüchtlingshilfe danken."
      },
      {
         "id":2,
         "sponsorId":"1002",
         "sponsoredId":"2002",
         "startPoint":[7.616762280, 50.31397620],
         "endPoint":[7.620710430, 50.31937490],
         "distance":25,
         "price":2500,
         "comment":"Für die Kinder in Afrika."
      }
   ]
}

GET /routes

Gibt eine gefilterte Liste aller Routen zurück.

Query Parameter:

  • name (optional):
  • startCountry(optional):
  • endCountry(optional):
  • minDistance(optional):
  • maxDistance(optional):
  • minDuration(optional):
  • maxDuration(optional):

Response Body (wenn ... mitgegeben wurde):

{
    
}

GET /sponsors

Gibt eine Liste aller Sponsoren zurück.

Response Body:

[
  {
    "id": 1001,
    "name": "Telekom",
    "desciption": "Die Telekom ist ein führender Hersteller in Kommunikationsbereich.",
    "trackColor": "#FF0000",
    "imageSmall": "s3_bucket_reference_thing",
    "imageLarge": "s3_bucket_reference_thing"
  },
  {
    "id": 1002,
    "name": "Amazon",
    "desciption": "Amazon ist der führender Hersteller im E-Commerce!",
    "trackColor": "#FFFF00",
    "imageSmall": "s3_bucket_reference_thing",
    "imageLarge": "s3_bucket_reference_thing"
  }
]

POST /add-story

Fügt der Route, mit der im url parameter übergebenen id, eine neue Story hinzu. Die Daten für das Story Objekt werden im Body mitgegeben. Zurückgegeben wird die für das Story Objekt erzeugte id.

Query Parameter:

  • id: Die id der Route, welcher das Rating hinzugefügt werden soll

Request Body:

{
   "text":"apigatewaytest",
   "creationDate":1524924248,
   "title":"DerTitel",
   "userName":"DerAdder",
   "media":[
      {
         "reference":"test.jpg",
         "type":"image"
      }
   ],
   "point":[
      10.2,
      10.3
   ]
}

Response Body:

{
   "id": 124124124
}

POST /add-poi

Fügt der Route, mit der im URL Query Parameter übergebenen id, eine neuen PoI hinzu. Die Daten für das PoI Objekt werden im Body mitgegeben. Zurückgegeben wird die für das PoI Objekt erzeugte id.

Query Parameter:

  • id: Die id der Route, welcher das Rating hinzugefügt werden soll

Request Body:

{
   "name":"super tolles ding api Gateway pü",
   "location":[
      10.10,
      10.2
   ],
   "description":"asfasf",
   "media":[
      {
         "reference":"test2.jpg",
         "type":"image"
      }
   ]
}

Response Body:

{
   "id": 124124124
}

POST /add-rating

Fügt der Route, mit der im id Query Parameter, mitgegeben id ein neues Rating hinzu. Es wird als Antwort die id der des Ratings zurückgeliefert. Zurückgegeben wird die für das Rating Objekt erzeugte id.

Query Parameter:

  • id: Die id der Route, welcher das Rating hinzugefügt werden soll

Request Body:

{
    "comment": "TestApiDeployment",
    "creationDate": 1512238662,
    "difficulty": 4,  
    "duration":351,
    "rating":2,
    "userName":"NameDesUsers"
}

Response Body:

{
   "id": 124124124
}

GET /media

Liefert eine Mediendatei aus dem s3 zurück.

Query Parameter:

  • id: die ID der Datei bzw. der Key im s3

Es wird direkt das file inklusive MIME-Type zurückgeliefert. Dieser Request kann also im src Attribut in einem <img> verwendet werden.

<img src='http:// [...] /api/media?id=my_file.jpg'>

POST /media

Lädt eine Mediendatei zum s3 hoch.

Hier muss eine multipart/form-data Anfrage gestellt werden. Die binären Daten werden im Feld media_file übermittelt.

Von HTML aus sähe das in etwa so aus:

<form action="http:// [...] /api/media" method="post" enctype="multipart/form-data">
    <input type="file" name="media_file">
    <input type="submit">
</form>

Von Angular aus kann man das so machen: https://stackoverflow.com/questions/28902727/multipart-request-with-angularjs

Response:

{
   "Success":true,
   "id":"3164275my_image.jpg",
   "type":"image/jpeg"
}

GET /check-sponsoring

Prüft ob ein Routenabschnitt gesponsert werden kann und gibt relevante Informationen zurück.

Query Parameter:

  • id: die Routen Id
  • x1: x-Koordinate des ersten Punktes
  • x2: x-Koordinate des zweiten Punktes
  • y1: y-Koordinate des ersten Punktes
  • y2: y-Koordinate des zweiten Punktes

Response:

{
  "distance": 10.13658633987749,
  "price": 1013.6586339877489,
  "startPoint": [
    7.62578154,
    50.3163205
  ],
  "endPoint": [
    7.62622614,
    50.3165709
  ]
}

POST /add-sponsor-part

Fügt einen Sponsorpart der Route, mit der im Query Parameter übergebenen id, hinzu.

Query Parameter:

  • id: die Routen Id

Request Body:

{
   "comment":"Comment",
   "endPoint":[
      7.62622614,
      50.3165709
   ],
   "sponsoredId":2222,
   "sponsorId":1111,
   "startPoint":[
      7.62578154,
      50.3163205
   ]
}

Response Body (Wenn eine Kollision erkannt wurde mit einem anderen Sponsorpart):

{
    "Success:": false
}

Response Body (Keine Kollision->Sponsorpart wurde der Route hinzugefügt):

{
   "id": 124124124
}
Clone this wiki locally