HTTP-API

Allmänt

Gränssnittet använder sig av HTTP-protokollet. Anrop genomförs genom att skicka HTTP GET. Konstanten APIURL som används enligt nedan är kundspecifik och erhålls från BRP. Värdet är något i stil med "http://exempel.brp.se/brp/mesh"
Det finns två kategorier av anrop, bas och plus. Bas-anropen är fria att använda förutsatt att man tilldelats en apikey. Plus-anropen är en tjänst som tillhandahålls mot en månadsavgift.

För att testa anrop så kan APIURL=http://212.91.140.132:8080/appdemo/mesh användas.
Den går mot testdata och där körs senaste version av BRP.

Internetportalen för motsvarande system nås på http://212.91.140.132:8080/appdemo/.

Här av er till support@brpsystems.se med frågor kring API eller om ni önskar en apikey.

Lista gruppaktiviteter (bas)

Notera att gruppaktiviteter sorteras i tidföljd, så om flera anläggningsid:n anges kommer gruppaktiviteterna inte att grupperas per anläggning.

I rest-api

Anrop

APIURL/showGroupActivitiesXML.action?
date={datum att visa}
&toDate={till och med datum. om det saknas visas enbart en dag} 
&product={valfritt filter på produktid} 
&businessUnit={valfritt, filter på anläggningsidn, semikolonseparerad} 
&productLabel={valfri produktetikett} 
&productGroup={deprecated används productGroupId, valfri, filtrera på produktgruppnamn}
&productGroupId={valfri, filtrera på produktgrupps id}
&user={valfritt, krävs för att få bookingid och waitinglist*}
&password={lösenord}
&onlyInternet=true //Default true, hämtar då endast de pass vars produkt har "Bokningsbar via Internet" förkryssat

Svar

<passlista> 
    <datum>2010-02-01</datum> 
    <tilldatum>2010-02-02</tilldatum>  
    <pass> 
        <id>12345</id>                #Gruppaktivitetens id, används vid inbokning
        <businessunit>Centrum</businessunit>
        <businessunitid>11</businessunitid>
        <startTime>1298023236</startTime> #Millisekunder från 1970-01-01
        <endTime>1298033236</endTime> #Millisekunder från 1970-01-01
        <datum>2010-02-01</datum> 
        <tid>09:45 - 10:30</tid> 
        <aktivitet>Spinn B45</aktivitet>  
        <productid>11</productid>         #Från v25.202. 
        <beskrivning>Detta är beskrivningen av gruppaktivitetsprodukten.</beskrivning>
        <resurs>Lena Olsson</resurs> #personal, instruktör
        <resurskundnummer>12345</resurskundnummer> #instruktorens kundnummer
        <lokal>Spinnsal</lokal>
        <bookableFromInternet>true | false</bookableFromInternet> # Motsvarar "Bokningsbar via Internet"
        <bookableEarliest>2010-01-23 14:00</bookableEarliest> # När man tidigast får boka. Tom tag om bokningsregel saknas
        <bookableLatest>2010-02-01 09:15</bookableLatest>  # När man senast får boka. Tom tag om bokningsregel saknas
        <lediga>10</lediga>  
        <bokningsbara>10</bokningsbara>  
        <totalt>42</totalt>  
        <productlabels>  
            <productlabel>Spinning</productlabel>  
            <productlabel>Svår</productlabel>
        </productlabels> 
        <css-class>blue</css-class> 
        <notering>Detta är ett externt meddelande på gruppaktivitetsbokningen.</notering> 
        <installt>false</installt> 
        <group>produktgrupp</group>
        <groupid>11</groupid>           #Från v25.202. 
        <bookingid>54323</bookingid>    #Gruppaktivitetsboknings id, visas bara om parametern user är satt och om kunden har en bokning på passet
        <waitinglist>                   #Finns bara om köhantering används
            <waitinglistsize>3</waitinglistsize>
            <waitinglistposition># köplats (börjar på 1)</waitinglistposition>
            <waitinglistid>köplatsbokningens id</waitinglistid>
        </waitinglist>
    </pass> 
    <pass> 
        ...
    </pass> 
</passlista>

Skapa beställning (plus) (från version 25.189)

Skapar person och bokning med angivna parametrar, svarar med fellista eller URL direkt till betalning om ok. Vid fel skapas aldrig något, varken person eller beställning. Om epost eller personnummer används av någon befintlig kund kommer dennes uppgifter att uppdateras och kunden kommer att användas till beställningen.

I rest-api

Anrop

APIURL/createUserAndOrderXML.action?
apikey={tilldelad säkerhetsnyckel}
businessUnit={anläggning som order och person ska skapas på}
&productNumber={produktnummer, måste vara ett abonnemang eller värdekort samt vara bokningsbart via internet}
{Nedanstående fält behöver endast vara med om de är obligatoriska i BRP. Kontakta supporten för att få veta vilka fält som behövs på aktuell anläggning}
&firstName=
&lastName=
&workPhone=
&homePhone=
&mobilePhone=
&emailAddress=
&streetAddress=
&postalCity=
&zipCode=
&personNumber=
&gender=
&password=

Svar

<OrderReply> 
<FieldError> // vid fel, fel per fält, 'error' betyder generellt fel och 'duplicate' betyder att personen redan existerar, den kontrollen görs på personnummer och epostadress.
 <person.personnumber>duplicate</person.personnumber> 
<person.homephone>error</person.homephone> 
<product>error<product> 
</FieldError> 
<CustomerNumber>Kundnummer till den skapade kunden om allt gick bra, annars blankt</CustomerNumber> 
<OrderNumber>Ordernummer på den skapade beställningen om allt gick bra, annars blankt</OrderNumber> 
<RegisterUrl>URL direkt till kassan för den skapade beställningen om allt gick bra, annars blankt</RegisterUrl> 
</OrderReply>

Lista bokade gruppaktiviteter (plus)

Hämta bokade gruppaktiviteter för en användare

I rest-api

Anrop

APIURL/showBookedGroupActivitiesXML.action?
user={passdeltagarens epostadress/kortnummer}
&password={lösenord}
&apikey={tilldelad säkerhetsnyckel}

Svar

<passlista> Samma svar som för anropet Lista Gruppaktiviteter

Verifiera användare (bas)

Verifierar att en användare finns och har det angivna lösenordet.

I rest-api

Anrop

APIURL/verifyUser.action?
user=(email eller kortnummer) 
&username={kortnummer i BRP} 
&email={epostadress} 
&password={lösenord}

user, username eller email används tillsammans med password.

Svar

Vid lyckad verifiering:

<authresponse>
  <result>success</result>
  <user>
    <customerid>12345</customerid>
    <firstname>Förnamn</firstname>
    <surname>Efternamn</surname>
    <email>email@example.com</email>
    <mobile>123 45 67</mobile>
    <address>
      <street>Gatuadress 123</street>
      <zip>12345</zip>
      <city>POSTORT</city>
    </address>
    <cardnumber>67890</cardnumber>
    <businessunit>1</businessunit>
    <gender>Man/Kvinna/Odefinierad</gender>
    <staffmember>true/false</staffmember>
    <image>showImage.action?customerNumber=12345</image>
    <birthDate>1977-07-07</birthDate>
  </user>
</authresponse>

<image> är en relativ URL till användarens bild. I exemplet ovan gör man alltså ett anrop till APIURL/showImage.action?customerNumber=12345 för att hämta bilden. Om användaren inte har någon bild returneras felkod 404 vid försök att hämta bilden.

Svar

Vid misslyckad verifiering:

<authresponse>
  <result>failed</result>
</authresponse>

Lista Arrangemang (bas)

Alla arrangemang där slutdag ännu inte uppnåts listas

I rest-api respektive rest-api

Anrop:

APIURL/listActiveEvents.action?
productlabel={produktetikettnamn i BRP}
&businessunit={ID för anläggningen}
&customernumber={kundnummer i BRP}
&onlyInternet=true //Från version 25.172, Default true, hämtar då endast de arrangemang vars produkt har "Bokningsbar via Internet" förkryssat

Alla tre parametrarna är valfria, d.v.s. de kan, men behöver inte anges.

Svar:

Om parametern customernumber är angiven:

<events>
    <event>
        <registered>true/false</registered>
        <id>123</id>
        <name>Spinntour</name>
        <description>Beskrivning Internet från arrangemanget</description>
        <productdescription>Beskrivning från produkten</productdescription>  // Från version 25.172
        <numberofoccasions>60</numberofoccasions>
        <time>06:00</time> (här blir det 00:00 om ingen tid är angiven på eventet)
        <startday>2009-09-01</startday>
        <endday>2009-12-31</endday>
        <bookableFromInternet>true | false</bookableFromInternet> # Motsvarar "Bokningsbar via Internet"
        <bookableEarliest>2010-01-23 14:00</bookableEarliest> # När man tidigast får boka. Tom tag om bokningsregel saknas
        <bookableLatest>2010-02-01 09:15</bookableLatest>  # När man senast får boka. Tom tag om bokningsregel saknas

    </event>
    <event>
        ...
    </event>
</events>

Om parametern customernumber ej är angiven:

<events>
    <event>
        <id>123</id>
        <name>Spinntour</name>
        <description>En spinntour över hela sverige</description>
        <productdescription>Beskrivning från produkten</productdescription>  // Från version 25.172
        <numberofoccasions>60</numberofoccasions>
        <time>06:00</time> (här blir det 00:00 om ingen tid är angiven på eventet)
        <startday>2009-09-01</startday>
        <endday>2009-12-31</endday>
    </event>
    <event>
        ...
    </event>
</events>

Boka arrangemang (bas)

BRP bokar in kunden på arrangemanget men kontrollerar först att det inte redan är gjort.

I rest-api

Anrop:

APIURL/addParticipantToEvent?
eventid={arrangemangsid i BRP}
&customernumber={Kundnummer i BRP}

Svar:

<result>OK el felmeddelande</result>

Lista betalda deltagare (bas)

Anrop:

APIURL/listPaidParticipants?eventid={arrangemangsid i BRP}

Svar:

<participants>
    <participant>
        <customernumber>33445566</customernumber>
        <firstname>Jesper</firstname>
        <lastname>Wetterbrandt</lastname>
        <paidday>2009-07-11</paidday>
    </participant>
    <participant>
        ...
    </participant>
    ...
</participants>

Lista aktiviteter för deltagare (bas)

Enbart aktiviteter mellan max(startdag, betaldag) och slutdag listas.

Anrop:

APIURL/listActivitiesForParticipant?eventid={arrangemangsid i BRP}&customernumber=
{Kundnummer i BRP}&productlabel={produktetikettnamn i BRP}

Svar

<activities>
    <activity>
        <id>114567</id>
        <time>2009-07-11 18:00</time>
    </activity>
    <activity>
        <id>114567</id>
        <time>2009-07-13 18:00</time>
    </activity>
    ....
</activities>

Lista resultat av ett arrangemang (bas)

Resultatlista för deltagandet i ett arrangemang. Resultatlistan kan avse antingen deltagande i gruppaktiviteter som är taggade med viss produktetikett eller så visa resultatlistan antalet besök som deltagaren gjort i någon anläggning. Endast 1 besök per person och dag räknas vid besöksräkning.

Anrop 1: (vid arrangemang avseende gruppaktiviteter)

APIURL/listResultsForEvent.action?eventid={arrangemangsid i BRP}
&productlabel={produktetikett för att hitta giltiga aktiviteter i brp}

Anrop 2: (vid arrangemang avseende besök)

APIURL/listResultsForEvent.action?eventid={arrangemangsid i BRP}&visits=true

Svar:

<event>
  <id>123</id>
  <name>Spinntour</name>
  <startday>2009-09-01</startday>
  <endday>2009-12-31</endday>
  <results>
     <participant>
       <name>{Förnamn och Efternamn i BRP, t.ex. Edward Grönroos}</name>       
       <customerid>{kund id i BRP}</customerid>
       <businessunit>{anläggnings id i BRP}</businessunit>
       <gender>{kön, Man/Kvinna/Odefinierad}</gender>
       <staffmember>{true/false, om man är anställd}</staffmember>
       <activity>{Antal giltiga aktiviteter tillhörande arrangemanget, t.ex. 23}</activity>
     </participant>
     <participant>
       ...
     </participant>
  </results>
</event>

Lista lediga tider för tjänstebokning (bas)

Returnerar en semikolonseparerad lista med de tider som är bokningsbara för en produkt från och med nu och valbart antal timmar framåt.

I rest-api

APIURL/showAvailableTimes.action?
productNo={produktnr i BRP}
&businessUnit={Anläggnings id}
&hours={Antal timmar framåt sökningen ska göras}
2011-02-02 13:00;2011-02-02 22:00;2011-02-03 07:00;2011-02-03 13:00;2011-02-03 22:00;

Hämta datum för medlemskaps giltighetstid (bas)

Returnerar datum för en specifik persons medlemskaps utgång. Om personen inte existerar eller saknar medlemskap blir 'result' error och man får en felbeskrivning i 'message'.

I rest-api

Anrop

APIURL/getMemberUntil.action?
cardnumber={kunds kortnummer}
&apikey={tilldelad säkerhetsnyckel}

Svar:

<reply>
    <command>getMemberUntil</command>
    <result>success</result>
    <message>2011-12-31</message>
</reply>

<reply>
    <command>getMemberUntil</command>
    <result>error</result>
    <message>no membership</message>
</reply>

Lista Anläggningar (bas)

Hämtar vilka olika anläggningar som finns

I rest-api

Anrop

APIURL/loadBusinessUnitsXML.action?
filter=groupactivity (valfritt, hämtar bara de anläggningar som har gruppaktivitetsbokningar)
&excludeAppInfo=true|1 (valfritt, om true eller 1 exkluderas taggen appInfo i svaret)
&apikey={tilldelad säkerhetsnyckel}

Svar

<businessunitlist> 
    <businessunit>
        <id>1</id>
        <name>Centrum</name>
        <appinfo>Detta fält kan ställas in iinifrån BP per anläggning och tanken är 
        att lägga info om anläggning här i html-format för att visa i appar. Typ öppettider, 
        och telefonnr.</appinfo>
        <settings>
          <showavailableslots>true</showavailableslots>
		  <numberofdaysahead>7</numberofdaysahead>
        </settings>
    </businessunit>
    <businessunit>
        ...
    </businessunit>
</businessunitlist> 

Möjligheten att exkludera taggen appInfo finns pga att svaret kan bli stort om svaret innehåller många anläggningar. Appinfo kan hämtas ut med separat anrop. 
Taggen showavailableslots styrs av inställningen "Visa lediga platser på gruppaktiviteter".

Observera att inställningen numberofdaysahead endast ger systemvärdet och inte det anläggningsspecifika.

Lista produktgrupper (bas)

Hämtar de som produktgrupper som används för gruppering för web och mobilapplikationsbokning. Det gäller de produktgrupper som ligger under den produktgrupp som är inställd under systeminställningen "Produktgrupp för gruppering av gruppaktivitet".

I rest-api

Anrop

APIURL/loadProductGroupsXML.action?
businessUnit={valfritt filter på anläggningsid}
&apikey={tilldelad säkerhetsnyckel}

Svar

<productgrouplist> 
    <productgroup>
        <id></id>
        <name></name>
    </productgroup>
    <productgroup>
	    ...
    </productgroup>
<productgrouplist> 

Lista produkter (bas)

Hämtar produkter av specificerad typ.

I rest-api

Anrop

APIURL/loadProductsXML.action?
businessUnit={valfritt filter på anläggningsid}
&apikey={tilldelad säkerhetsnyckel}
&productType=[groupActivity | subscription | package | article | service | event | stockProduct | valueCard | entry]

Svar

<productlist> 
    <product>
        <id></id>
        <name></name>
        <description></description>
        <css-class></css-class>
        <bookableFromInternet></bookableFromInternet>
        <group></group>
    </product>
    <product>
	    ...
    </product>
<productlist> 

Boka gruppaktivitet (plus)

Bokar in en kund på en gruppaktivitet.

I rest-api

Anrop

APIURL/bookGroupActivityXML.action?
groupActivityId={passid i BRP}
&user={kundens epostadress/kortnummer}
&password={kundens lösenord}
&locale={sv/en/no}
&apikey={tilldelad säkerhetsnyckel}

Svar

<reply>
    <command>bookGroupActivity</command>
    <result>success eller error</result>
    <message>tomt vid success, annars felmeddelande</message>
</reply>

Boka reservplats (plus)

Bokar in en kund på reserplatslistan till en gruppaktiviteten.

I rest-api

Anrop

APIURL/bookWaitingListXML.action?
groupActivityId={passid i BRP}
&user={passdeltagarens epostadress/kortnummer}
&password={kundens lösenord}
&locale={sv/en/no}
&apikey={tilldelad säkerhetsnyckel}

Svar

<reply>
    <command>bookWaitingList</command>
    <result>success eller error</result>
    <message>tomt vid success, annars felmeddelande</message>
</reply>

Avboka gruppaktivitetsbokning (plus)

Avbokar en kund från en gruppaktivitetsbokning.

I rest-api

Anrop

APIURL/debookGroupActivityXML.action?
bookingId={bokningsid i BRP}
&user={passdeltagarens epostadress/kortnummer}
&password={kundens lösenord}
&locale={sv/en/no}
&apikey={tilldelad säkerhetsnyckel}

Svar

<reply>
    <command>debookGroupActivity</command>
    <result>success eller error</result>
    <message>tomt vid success, annars felmeddelande</message>
</reply>

Avboka reservplats (plus)

Avboka en kund från reservplatslistan till en gruppaktivitet.

I rest-api

Anrop

APIURL/debookWaitingListXML.action?
bookingId={postid i BRP}
&user={passdeltagarens epostadress/kortnummer}
&password={kundens lösenord}
&locale={sv/en/no}
&apikey={tilldelad säkerhetsnyckel}

Svar

<reply>
    <command>debookWaitingList</command>
    <result>success eller error</result>
    <message>tomt vid success, annars felmeddelande</message>
</reply>

Hämta infosida för anläggning

I rest-api

Anrop

APIURL/loadAppInfoXML.action?
businessUnitId={anläggningsid}

Svar

<reply>
    <command>loadAppInfo</command>
    <result>success eller error</result>
    <message>infosida vid success, annars felmeddelande</message>
</reply>

Ändringar

v25.172

  • showGroupActivitiesXML.action ny parameter onlyInternet=true|false, default true hämtar då endast de pass vars produkt har "Bokningsbar via Internet" förkryssat
  • listActiveEvents.action ger i svaret även <productdescription>Beskrivning från produkten</productdescription>

v25.186

  • showGroupActivitiesXML businessUnit kan nu ta en semikolonseparerad lista med anläggninsIDn
  • Skickat med <businessunitid> i svaret till showGroupActivitiesXML.

v25.189

  • Lagt till bookableFromInternet på showGroupActivitiesXML och listActiveEvents som motsvarar "Bokningsbar via Internet"
  • Lagt till bookableEarliest och bookableLatest på showGroupActivitiesXML och listActiveEvent som utgår från produktens bokningsregler.
  • Lagt till createUserAndOrderXML.action

v25.202

  • showGroupActivitiesXML har fått <productid /> och <groupid />

v25.205

  • Lagt till loadProductsXML. Metod för att hämta ut produktnamn för angiven produkttyp.

v25.209

  • Lagt till subscription som filter på productType i loadProductsXML.

v25.248

  • Lagt till showavailableslots på loadBusinessUnitsXML