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)
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 "Bokbar 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 "Bokbar 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.
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 bokbart 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
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.
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 "Bokbar 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 "Bokbar 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.
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.
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'.
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
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".
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.
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.
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.
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.
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.
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
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 "Bokbar 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 "Bokbar 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