Back to Home

Ausgabeformate

Ausgabeformate


Das Ergebnis einer Abfrage ist im Standardfall XML. Durch Paramter im Anfrage Header kann das Ausgabeformat auf JSON geändert werden. Werden bei der Anfrage keine weiteren Angaben gemacht, entspricht die Ausgabe der  Defaultgranulierung eines POI.

Atom Feed

Das XML-Dokument richtet sich nach dem Atom Standard nach RFC4287. Man muss dabei zwischen dem Grundgerüst eines Atom Feed und den darin eingebetteten POI-Daten unterscheiden. Das folgende Beispiel zeigt exemplarisch den Aufbau des Feed-XML. Die eigentlichen POI-Daten sind im content-Element eines Feed-Entry enthalten und durch den xmlns:poi="http://api.123poi.com/poi/" definiert.

<feed xmlns="http://www.w3.org/2005/Atom" 
        xmlns:poi="http://api.123poi.com/poi/" 
        xmlns:media="http://search.yahoo.com/mrss/" 
        xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">
           
        <openSearch:totalResults>17246</openSearch:totalResults>
        <openSearch:startIndex>0</openSearch:startIndex>
        <openSearch:itemsPerPage>10</openSearch:itemsPerPage>
        <openSearch:Query access="VISIBLE"/>
           
        <updated>2010-05-11T08:04:02.015Z</updated>
        <link href="http://api.123poi.com/data/poi/api/all" rel="self"/>
        <title type="text">Allgemeine Suche nach Pois</title>
        <subtitle type="text"/>
        <id>http://api.123poi.com/data/poi/api/all</id>
        <author>
          <name/>
        </author>
        <entry>
            <title type="text">Filmmuseum</title>
            <summary type="text">Das Kino im Filmmuseum ...</summary>
            <link href="http://api.123poi.com/data/poi/api/poi/17248" rel="alternate"/>
            <updated>2010-05-10T10:11:53.000Z</updated>
            <published>2010-05-10T10:11:53.000Z</published>
            <content type="application/xml">
              ...
            </content>
           </entry>
     </feed>
    

Das content Element enthält zunächst ein poi-Element aus dem Namespace poi und beschreibt einen POI zunächst ganz allgemein:

<poi:poi xmlns:data="http://api.123poi.com/data/" 
              xmlns:falkgeo="http://api.123poi.com/geo/" 
              xmlns:user="http://api.123poi.com/user/" 
              xmlns:falkmedia="http://api.123poi.com/media/">
       <poi:id>17248</poi:id>
       <poi:creationDate>1273486313000</poi:creationDate>
       <poi:lastUpdate>1273486313000</poi:lastUpdate>
       <poi:publishedDate>1273486313000</poi:publishedDate>
       <poi:ratings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
       <poi:ratings>
         <poi:customerName/>
         <poi:lastUpdate>1273565041381</poi:lastUpdate>
         <poi:authAvg>0.0</poi:authAvg>
         <poi:authCount>0</poi:authCount>
         <poi:guestAvg>0.0</poi:guestAvg>
         <poi:guestCount>0</poi:guestCount>
       </poi:ratings>
       <poi:comments/>
       <poi:commentCount>0</poi:commentCount>
       <poi:poidata>
         ...
       </poi:poidata>
     </poi:poi>
    

Der Inhalt von <poi:poidata/> beschreibt die Beiträge von Usern zu diesem POI. Es werden nur die Elemente ausgegeben, die auch befüllt sind, <poi:poidata/> Elemente können dabei mehrfach, aber mind. einmal auftreten.

 <poi:poidata>
       <poi:type>Contribution</poi:type>
       <poi:title>Filmmuseum</poi:title>
       <user:author>
         <user:id>10</user:id>
         <user:name>FED</user:name>
       </user:author>
       <poi:externalId>_19372</poi:externalId>
       <data:language>de</data:language>
       <falkgeo:coordinates>
         <falkgeo:lat>52.39539</falkgeo:lat>
         <falkgeo:lon>13.05698</falkgeo:lon>
       </falkgeo:coordinates>
       <data:address>
         <data:country>Deutschland</data:country>
         <data:isoCountryCode>DE</data:isoCountryCode>
         <data:zip>14467</data:zip>
         <data:location>Potsdam</data:location>
         <data:street>Schlosstraße</data:street>
         <data:number>1</data:number>
       </data:address>
       <data:contact>
         <data:phone>+49 331 271810</data:phone>
       </data:contact>
       <poi:tags>
         <poi:tag>
           <poi:id>187</poi:id>
           <poi:language>de</poi:language>
           <poi:value>Kinos</poi:value>
         </poi:tag>
       </poi:tags>
       <poi:description>Das Kino im Filmmuseum mit moderner Vorf... und historische Filme.</poi:description>
       <poi:creationDate>1273486312000</poi:creationDate>
       <poi:published>true</poi:published>
       <poi:lastUpdate>1273486312000</poi:lastUpdate>
     </poi:poidata>
    

Für eine vollständige Angabe der Elemente sehen sie bitte im Dokument   POI-Schema nach.

JSON

Um als Ausgabeformat JSON zu erhalten, muss der HTTP-Header "Accept" mit dem Wert "application/json" bei der Anfrage mitgegeben werden. Das ausgegebene JSON nutzt dasselbe Grundgerüst wie das Atom Feed, jedoch wird auf Atom-spezifische Felder verzichtet.

Das Hauptobjekt im JSON verfügt über die Felder "entries", "totalResults", "startIndex", "itemsPerPage" und "title":

{
        "entries": {
            ...
        }, 
        "totalResults": "1", 
        "startIndex": "0", 
        "itemsPerPage": "1", 
        "title": "Anzeigen eines Pois"
    }
    

Das Feld "entries" kann ein einzelnes POI-Objekt oder eine Liste von POI-Objekten beinhalten:

{
        "id": "61", 
        "creationDate": "1275390114000", 
        "lastUpdate": "1275390114000", 
        "publishedDate": "1275390114000", 
        "ratings": [
            {
                "customerName": "", 
                "lastUpdate": "1275396042093", 
                "authAvg": "0.0", 
                "authCount": "0", 
                "guestAvg": "0.0", 
                "guestCount": "0"
            }
        ], 
        "mediaStatistics": null, 
        "commentStatistics": null, 
        "poidata": [
            {
                "type": "Contribution", 
                "title": "Frankfurt-Hahn Airport", 
                "user": {
                    "id": "10", 
                    "name": "FED"
                }, 
                "externalId": "_135785", 
                "language": "de", 
                "coordinates": {
                    "lat": "49.9435435", 
                    "lon": "7.2666265"
                }, 
                "address": {
                    "country": "Deutschland", 
                    "isoCountryCode": "DE", 
                    "zip": "55483", 
                    "location": "Lautzenhausen Frankfurt-Hahn"
                }, 
                "contact": {
                    "phone": "+49 6543 509200", 
                    "fax": "+49 6543 509222"
                },
                           "medias": {
                                  "media": [
                                  {
                                   "thumbUrl": "/0/1w/gu/kg/j/t72/u/photo-1.jpg",
                                  },
                                  {
                                    "thumbUrl": "/0/1w/gu/kg/j/t72/u/photo-2.jpg",
                                  }
                             ]
                           },
                "tags": {
                    "tag": {
                        "id": "72", 
                        "language": "de", 
                        "value": "Flughäfen"
                    }
                }, 
                "description": "Behindertenparkplätze.\r\n\r\nMietwagen-Service und Geldwechsel.", 
                "creationDate": "1275390114000", 
                "published": "true", 
                "lastUpdate": "1275390114000", 
                "visibility": "PUBLIC"
            }, 
            {
                "type": "BasePoi", 
                "title": "Frankfurt-Hahn Airport", 
                "author": {
                    "id": "2", 
                    "name": "Falk"
                }, 
                "language": "all", 
                "coordinates": {
                    "lat": "49.9435435", 
                    "lon": "7.2666265"
                }, 
                "address": {
                    "country": "Deutschland", 
                    "isoCountryCode": "DE", 
                    "zip": "55483", 
                    "location": "Lautzenhausen", 
                    "subLocation": "", 
                    "street": "Street", 
                    "number": ""
                }, 
                "contact": {
                    "phone": "+49 6543 509200", 
                    "fax": "+49 6543 509222"
                },
                           "medias": {
                                  "media": {
                                         "author": {
                                                "id": "19",
                                                "name": "booking.com"
                                         },
                                         "thumbUrl": "/0/1w/gu/kg/j/t72/u/photo-1.jpg",
                                  }
                           }, 
                "creationDate": "1275390114000", 
                "lastUpdate": "1275390114000", 
                "visibility": "PUBLIC"
            }
        ], 
        "contributorId": "10"
    }
    

 

Interface-Änderungen Version 2.0 - Atom Feed

keine

Interface-Änderungen Version 2.0 - JSON

Collections

Datenstrukturen die als Collection definiert sind liefern jetzt immer ein Array auch wenn nur ein Objekt zurückkommt.

Die Elemente die im XML ein zuästzliches Wrapper haben, haben im JSON jetzt nur noch eine Ebene

alt:
    tags: {tag: {...}}
    
    neu:
    tags: [{...}]
    

Featured

Das bisherige featured Feld war nicht JSON konvorm.

alt: 
    "featured": { "@type": "DETAIL_INFO", "$": "true" } 
    
    neu: 
    "featured": { "type": "DETAIL_INFO", "value": true }
    

Zahlen, Booleans

Zahlen, Boolean und URL stehen nicht mehr in Hochkommas.

alt:
    "number": "2"
    
    neu:
    "number": 2
    

@type Felder

@type Felder wurden entfernt.

alt: 
    "@type": "poi:poiTO",