Hjælp til integration af Enkelbillet.dks API med dit eget website

Ved at bruge Enkelbillets API kan du integrere billetsalget med dit eget website og gennemføre booking af billetter udenom Enkelbillets normale salgsmodul. Du kommunikerer med API'et vha. en række forskellige XML-kald - denne side forklarer hvordan.

1. Introduktion
2. API-operationer
3. Eksempler på API-kald
4. Element- og attributbeskrivelse
5. Datatyper og valideringsregler
6. Statuskoder

1. Introduktion

Før API'et kan bruges, skal følgende være på plads:
  • API-adgang skal være aktiveret (gøres under "Indstillinger")
  • URL-callback skal være sat op og aktiveret (gøres under "Indstillinger")
Når ovenstående indstillinger er foretaget i administrationsmodulet, kan bookinger gennemføres via API'et.

API'et bruges ved at du fra din webserver sender instruktioner i XML-format ("requests") til API'et, som udfører instuktionen og returnerer et XML-dokument (et "response"), som fortæller om instruktionen er korrekt udført. Alle XML-dokumenter er i UTF-8 encoding, og hvert request skal sendes til API'et ved at udføre http POST til følgende URL (bemærk den afsluttende skråstreg):
https://www.enkelbillet.dk/enkelbillet/api/

XML-dokumentet skal postes i en parameter med følgende navn:
apirequest

Det typisk flow ved oprettelse og gennemførsel af en booking via API'et er illustreret på figuren nedenfor. De blå pile repræsenterer requests (venstre mod højre) og responses (højre mod venstre).


Bemærk at du for at kunne oprette og manipulere en booking, skal kende Id'er på arrangementer og tilgængelige billetter. Dette opnås vha. requestet getEvents, som returnerer enten alle kommende arrangementer eller et specifikt arrangement (se næste afsnit).

Alle requests vil af serveren blive valideret før de udføres, se datatyper og valideringsregler. Vi forbeholder os desuden ret til at begrænse adgangen til API'et, såfremt brugen af dette overstiger tilgængelig serverkapacitet. Vi forventer du udvikler din integration med henblik på at minimere antal requests til API'et - vi frabeder os venligst at du udfører mere end eet kald til API'et for hver sidevisning på dit website.

2. API-operationer

Følgende operationer (requests) understøttes af API'et:
RequestBeskrivelse
getEvents Returnerer liste over samtlige kommende arrangementer, eller hvis eventId angives, det specifikke arrangement.
getBooking Returnerer komplet beskrivelse af den booking, der identificeres ved bookingId. Beskrivelsen svarer datamæssigt til XML-dokumentet som sendes via callback-funktionen når bookingen er gennemført.
createBooking Opretter ny booking. Såfremt der ikke medsendes information om kunde eller billetvalg, oprettes en tom booking som senere kan udvides med kunde- og billetinformation. Bookingen er gyldig 15 minutter, og skal gennemføres og betales i løbet af denne tid, ellers timer den ud og slettes. Bemærk: Det er valgfrit om der i createBooking-requestet sendes <customer> og/eller <tickets>.
deleteBooking Sletter den booking der identificeres ved bookingId. Kun ikke-gennemførte bookinger kan slettes.
setCustomer Opdaterer kundeinformation for den booking som identificeres ved bookingId. Kun ikke-gennemførte bookinger kan opdateres.
setTickets Opdaterer billetvalg for den booking som identificeres ved bookingId. Kun ikke-gennemførte bookinger kan opdateres.
getPaymentUrl Returnerer URL til godkendelse og betaling af bookingen som identificeres ved bookingId. Kun hvis bookingen er komplet (dvs. har kunde- og billetinformation) kan betaling gennemføres. Såfremt siden ønskes vist med engelsk oversættelse, skal URL'en postfixes med &lang=en.
scanTicket Udfører scanning (kontrol) af den billet som identificeres ved barcode (stregkode). Der returneres information om billettens gyldighed. Bookingen hvortil billetten hører skal være gennemført. Bemærk: Denne operation understøttes ikke når "Public API-nøgle" anvendes.
getBookedTickets Returnerer beskrivelse af alle gennemførte og igangværende bookinger, hvor der er valgt billetter til det arrangement, der beskrives ved eventId. Beskrivelsen af hver enkelt booking svarer datamæssigt til det XML-dokument som returneres ved requestet getBooking, begrænset så kun de <ticket>-elementer der matcher eventId medsendes. Bemærk: Denne operation understøttes ikke når "Public API-nøgle" anvendes.
getBookedSeats Returnerer alle bookede pladser (for gennemførte og igangværende bookinger) til det arrangement, der beskrives ved eventId og sectionId. Hver plads beskrives med et <seat>-element, datamæssigt svarende til den pladsinformation der blev angivet, da bookingen blev oprettet. Kun angivne pladser returneres, dvs. bookinger oprettet med <seat></seat> returnerer ingen pladsinformation ved dette request. Dette request er mere effektivt at bruge end getBookedTickets, når det skal kontrolleres hvilke pladser der er bookede i en sektion.

3. Eksempler på API-kald

Eksempler på kald (requests) og svar (responses). Det er ikke nødvendigt at formattere XML-dokumenterne med indrykninger som i disse eksempler - det er udelukkende gjort her for at forbedre læsevenligheden.
getEvents - hent alle kommende arrangementer og tilgængelige billetter
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <getEvents>
  </getEvents>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <events>
    <event id="2593">
      <name>Sommerkoncert</name>
      <description>Sommerens bedste koncert</description>
      <location>Den store plæne</location>
      <pictureUrl>http://www.enkelbillet.dk/....</pictureUrl>
      <totalSeatCount>150</totalSeatCount>
      <totalFreeSeatCount>53</totalFreeSeatCount>
      <eventTime>2018-08-25T20:00:00</eventTime>
      <isUpcoming>true</isUpcoming>
      <isOpenForBooking>true</isOpenForBooking>
      <sections>
        <section id="1">
          <name>Tribunen</name>
          <seatCount>100</seatCount>
          <freeSeatCount>36</freeSeatCount>
          <availableTickets>
            <availableTicket id="1">
              <name>Løssalgsbillet</name>
              <price>150</price>
            </availableTicket>
            <availableTicket id="2">
              <name>Studiebillet</name>
              <price>100</price>
            </availableTicket>
          </availableTickets>
        </section>
        <section id="2">
          <name>Ståplads</name>
          <seatCount>50</seatCount>
          <freeSeatCount>17</freeSeatCount>
          <availableTickets>
            <availableTicket id="1">
              <name>Løssalgsbillet</name>
              <price>150</price>
            </availableTicket>
          </availableTickets>
        </section>
      </sections>
    </event>
    <event id="2598">
      <name>Afterparty</name>
      <description>Fest efter koncerten!</description>
      <location>Teltet bagved den store plæne</location>
      <pictureUrl>http://www.enkelbillet.dk/....</pictureUrl>
      <totalSeatCount>40</totalSeatCount>
      <totalFreeSeatCount>7</totalFreeSeatCount>
      <eventTime>2018-08-25T23:00:00</eventTime>
      <sections>
        <section id="1">
          <name>Siddeplads</name>
          <seatCount>40</seatCount>
          <freeSeatCount>7</freeSeatCount>
          <availableTickets>
            <availableTicket id="1">
              <name>Festbillet</name>
              <price>250</price>
            </availableTicket>
          </availableTickets>
        </section>
      </sections>
    </event>
  </events>
  <status>
    <code>0</code>
    <message>ok</message>
  </status>
</eblResponse>
getEvents - hent specifikt arrangement (her Id 2593) og tilgængelige billetter
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <getEvents>
    <eventId>2593</eventId>
  </getEvents>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <events>
    <event id="2593">
      <name>Sommerkoncert</name>
      <description>Sommerens bedste koncert</description>
      <location>Den store plæne</location>
      <pictureUrl>http://www.enkelbillet.dk/....</pictureUrl>
      <totalSeatCount>150</totalSeatCount>
      <totalFreeSeatCount>53</totalFreeSeatCount>
      <eventTime>2018-08-25T20:00:00</eventTime>
      <isUpcoming>true</isUpcoming>
      <isOpenForBooking>true</isOpenForBooking>
      <sections>
        <section id="1">
          <name>Tribunen</name>
          <seatCount>100</seatCount>
          <freeSeatCount>36</freeSeatCount>
          <availableTickets>
            <availableTicket id="1">
              <name>Løssalgsbillet</name>
              <price>150</price>
            </availableTicket>
            <availableTicket id="2">
              <name>Studiebillet</name>
              <price>100</price>
            </availableTicket>
          </availableTickets>
        </section>
        <section id="2">
          <name>Ståplads</name>
          <seatCount>50</seatCount>
          <freeSeatCount>17</freeSeatCount>
          <availableTickets>
            <availableTicket id="1">
              <name>Løssalgsbillet</name>
              <price>150</price>
            </availableTicket>
          </availableTickets>
        </section>
      </sections>
    </event>
  </events>
  <status>
    <code>0</code>
    <message>ok</message>
  </status>
</eblResponse>
createBooking - opretter booking med billet- og/eller kundeinformation
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <createBooking>
    <customer>
      <firstname>John</firstname>
      <lastname>Hansen</lastname>
      <address>Hovedgaden 1</address>
      <zipcode>1234</zipcode>
      <city>Johnsby</city>
      <phone>12345678</phone>
      <email>john@john.dk</email>
    </customer>   
    <tickets>
      <ticket>
        <ticketId>1</ticketId>
        <eventId>2593</eventId>
        <sectionId>1</sectionId>        
        <seat>Række 6 sæde 1</seat>    
      </ticket>
      <ticket>
        <ticketId>1</ticketId>
        <eventId>2593</eventId>
        <sectionId>1</sectionId>
        <seat>Række 6 sæde 3</seat>
      </ticket>
    </tickets>
  </createBooking>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <bookingId>0123456789abcdef0123456789abcdef0123</bookingId>
  <status>
    <code>0</code>
    <message>ok</message>
  </status>
</eblResponse>
createBooking - opretter tom booking
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
   <createBooking>
   </createBooking>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <bookingId>0123456789abcdef0123456789abcdef0123</bookingId>
  <status>
    <code>0</code>
    <message>ok</message>
  </status>
</eblResponse>
deleteBooking - slet aktiv booking
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <deleteBooking>
    <bookingId>0123456789abcdef0123456789abcdef0123</bookingId> 
  </deleteBooking>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <status>
    <code>0</code>
    <message>ok</message>
  </status>
</eblResponse>
setTickets - opdaterer billetvalg på booking. Bemærk: <seat>-elementet er valgfrit og kan undlades. Såfremt <seat> ikke angives, printes "Ikke nummereret" på billetten.
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <setTickets>
    <bookingId>0123456789abcdef0123456789abcdef0123</bookingId> 
    <tickets>
      <ticket>
        <ticketId>1</ticketId>
        <eventId>2593</eventId>
        <sectionId>1</sectionId>        
        <seat>Række 6 sæde 1</seat>    
      </ticket>
      <ticket>
        <ticketId>1</ticketId>
        <eventId>2593</eventId>
        <sectionId>1</sectionId>
        <seat>Række 6 sæde 3</seat>
      </ticket>
    </tickets>
  </setTickets>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <status>
    <code>0</code>
    <message>ok</message>
  </status>
</eblResponse>
setCustomer - opdaterer kundeinformation på booking
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <setCustomer>
    <bookingId>0123456789abcdef0123456789abcdef0123</bookingId>
    <customer>
      <firstname>John</firstname>
      <lastname>Hansen</lastname>
      <address>Hovedgaden 1</address>
      <zipcode>1234</zipcode>
      <city>Johnsby</city>
      <phone>12345678</phone>
      <email>john@john.dk</email>
    </customer>
  </setCustomer>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <status>
    <code>0</code>
    <message>ok</message>
  </status>
</eblResponse>
getBooking - henter booking
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <getBooking>
    <bookingId>0123456789abcdef0123456789abcdef0123</bookingId> 
  </getBooking>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
 <booking id="0123456789abcdef0123456789abcdef0123" ebo="0">
  <confirmed>2018-08-21T13:12:03</confirmed>
  <ticketDownloadUrl>http://tickets.enkel...</ticketDownloadUrl>
  <customer>
   <firstname>John</firstname>
   <lastname>Hansen</lastname>
   <address>Hovedgaden 1</address>
   <zipcode>1234</zipcode>
   <city>Johnsby</city>
   <phone>12345678</phone>
   <email>john@john.dk</email>
  </customer>
  <bookedTickets>
   <bookedTicket id="1">
    <name>Løssalgsbillet</name>
    <price>150.00</price>
    <seat>Række 6 sæde 1</seat>
    <barcode>1111111111111</barcode>
    <scanCount>0</scanCount>
    <eventId>2593</eventId>
    <eventName>Sommerkoncert</eventName>
    <eventDescription>Sommerens bedste koncert</eventDescription>
    <eventLocation>Den store plæne</eventLocation>
    <eventTime>2018-08-25T20:00:00</eventTime>
    <sectionId>1</sectionId>
    <sectionName>Tribunen</sectionName>
   </bookedTicket>
   <bookedTicket id="1">
    <name>Løssalgsbillet</name>
    <price>150.00</price>
    <seat>Række 6 sæde 3</seat>
    <barcode>2222222222222</barcode>
    <scanCount>0</scanCount>
    <eventId>2593</eventId>
    <eventName>Sommerkoncert</eventName>
    <eventDescription>Sommerens bedste koncert</eventDescription>
    <eventLocation>Den store plæne</eventLocation>
    <eventTime>2018-08-25T20:00:00</eventTime>
    <sectionId>1</sectionId>
    <sectionName>Tribunen</sectionName>
   </bookedTicket>
  </bookedTickets>
 </booking>
</eblResponse>
getPaymentUrl - henter URL for godkendelse af booking
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <getPaymentUrl>
    <bookingId>0123456789abcdef0123456789abcdef0123</bookingId> 
  </getPaymentUrl>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <paymentUrl><![CDATA[http://www.enkelbillet...]]></paymentUrl>
  <status>
    <code>0</code> 
    <message>ok</message> 
  </status>
</eblResponse>
scanTicket - kontrollerer billet og returnerer gyldighed. Understøttes ikke når "Public API-nøgle" anvendes.
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <scanTicket>
    <barcode>1111111111111</barcode> 
  </scanTicket>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
   <bookedTicket id="1">
    <name>Løssalgsbillet</name>
    <price>150.00</price>
    <seat>Række 6 sæde 1</seat>
    <barcode>1111111111111</barcode>
    <scanCount>1</scanCount>
    <eventId>2593</eventId>
    <eventName>Sommerkoncert</eventName>
    <eventDescription>Sommerens bedste koncert</eventDescription>
    <eventLocation>Den store plæne</eventLocation>
    <eventTime>2018-08-25T20:00:00</eventTime>
    <sectionId>1</sectionId>
    <sectionName>Tribunen</sectionName>
   </bookedTicket>
  <status>
    <code>0</code> 
    <message>ok</message> 
  </status>
</eblResponse>
getBookedTickets - returnerer alle bookede billetter til et arrangement. Understøttes ikke når "Public API-nøgle" anvendes.
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <getBookedTickets>
    <eventId>2593</eventId>
  </getBookedTickets>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
 <bookings>
  <booking id="0123456789abcdef0123456789abcdef0123" ebo="0">
   <confirmed>2018-08-21T13:12:03</confirmed>
   <ticketDownloadUrl>http://tickets.enkel...</ticketDownloadUrl>
   <customer>
    <firstname>John</firstname>
    <lastname>Hansen</lastname>
    <address>Hovedgaden 1</address>
    <zipcode>1234</zipcode>
    <city>Johnsby</city>
    <phone>12345678</phone>
    <email>john@john.dk</email>
   </customer>
   <bookedTickets>
    <bookedTicket id="1">
     <name>Løssalgsbillet</name>
     <price>150.00</price>
     <seat>Række 6 sæde 1</seat>
     <barcode>1111111111111</barcode>
     <scanCount>0</scanCount>
     <eventId>2593</eventId>
     <eventName>Sommerkoncert</eventName>
     <eventDescription>Sommerens bedste koncert</eventDescription>
     <eventLocation>Den store plæne</eventLocation>
     <eventTime>2018-08-25T20:00:00</eventTime>
     <sectionId>1</sectionId>
     <sectionName>Tribunen</sectionName>
    </bookedTicket>
    <bookedTicket id="1">
     <name>Løssalgsbillet</name>
     <price>150.00</price>
     <seat>Række 6 sæde 3</seat>
     <barcode>2222222222222</barcode>
     <scanCount>0</scanCount>
     <eventId>2593</eventId>
     <eventName>Sommerkoncert</eventName>
     <eventDescription>Sommerens bedste koncert</eventDescription>
     <eventLocation>Den store plæne</eventLocation>
     <eventTime>2018-08-25T20:00:00</eventTime>
     <sectionId>1</sectionId>
     <sectionName>Tribunen</sectionName>
    </bookedTicket>
   </bookedTickets>
  </booking>
  <booking>
    .... osv.
  </booking>
 </bookings>
 <status>
  <code>0</code>
  <message>ok</message>
 </status>
</eblResponse>
getBookedSeats - returnerer alle bookede pladser til et arrangement
request
<?xml version="1.0" encoding="utf-8" ?>
<eblRequest username="BRUGERNAVN" apiKey="API-NØGLE">
  <getBookedSeats>
    <eventId>2593</eventId>
    <sectionId>1</sectionId>
  </getBookedSeats>
</eblRequest>
response
<?xml version="1.0" encoding="utf-8" ?>
<eblResponse>
  <bookedSeats>
    <seat>Række 6 sæde 1</seat>
    <seat>Række 6 sæde 3</seat>
  </bookedSeats>
  <status>
    <code>0</code>
    <message>ok</message>
  </status>
</eblResponse>

4. Element- og attributbeskrivelse

Følgende beskriver de forskellige attributter og elementer som bruges i requests og responses. For eksempler på brugen af disse elementer og attributter, se eksempler på API-kald.
Element-/attributBeskrivelse
usernameDit Enkelbillet.dk-brugernavn, altså det du plejer at logge ind med. Skal medsendes alle requests som attribut på <eblRequest>-elementet.
apiKeyAPI-nøglen som kan findes under "Indstillinger". Skal medsendes alle requests som attribut på <eblRequest>-elementet. Nøglen sikrer at det kun er dig der har adgang til API'et. Bemærk i denne sammenhæng at alle requests sendes SSL-krypteret via POST og således ikke er synlige for andre.
bookingIdIdentificerer en igangværende eller gennemført booking og skal bruges hver gang en booking opdateres eller hentes. bookingId returneres når bookingen oprettes vha. createBooking-operationen.
eventsSamling af 0 eller flere arrangementer, altså <event>-elementer.
eventArrangement, indeholdende bl.a. id, navn, beskrivelse, sted, tilgængelige billetter etc. Informationen svarer til det du angiver, når du opretter dit arrangement.
descriptionBeskrivelse af arrangement.
locationSted for arrangement.
pictureUrlAbsolut URL til det arrangements-billede du uploadede, da du oprettede arrangementet.
totalSeatCountAntal pladser til arrangementet ialt.
totalFreeSeatCountAntal ledige pladser til arrangementet ialt - svarende til antal pladser ialt minus antal bookede pladser ialt. Det totale antal bookede pladser kan således beregnes ved at trække antal ledige pladser ialt fra antal pladser ialt.
eventTimeDato og tidspunkt for arrangement. Format: XML Schema dateTime uden tidszone, se W3C dateTime.
isUpcomingAngiver om det er et kommende arrangement. Vil som udgangspunkt altid være true.
isOpenForBookingAngiver om arrangementet er i salg. Vil som udgangspunkt altid være true.
sectionsSamling af 1 eller flere sektioner, altså <section>-elementer.
sectionSektion oprettet til arrangementet. Sektioner definerer et antal pladser og tilgængelige billetter som kan bookes. Sektioner er beskrivet ved Id, navn og tilgængelige billetter.
seatCountAntal pladser i den pågældende sektion.
freeSeatCountAntal ledige pladser i den pågældende sektion. Antal bookede pladser i sektionen kan således beregnes ved at trække antal ledige pladser fra antal pladser.
availableTicketsSamling af 1 eller flere tilgængelige billetter, altså <availableTicket>-elementer, som kan bookes til arrangementet i den pågældende sektion.
availableTicketTilgængelig billet (billet som kan bookes til arrangementet i den pågældende sektion) indeholdende id, navn og pris.
paymentUrlAbsolut URL til den side, hvor brugeren skal betale for sit billetkøb. Når du via API'et har oprettet bookingen, skal du til sidst redirecte brugeren til denne URL, så betaling kan gennemføres.
bookedTicketsSamling af 0 eller flere bookede billetter, altså <bookedTicket>-elementer.
bookedTicketBooket billet indeholdende bl.a. id, navn, pris, pladsinformation, stregkode samt information om det arrangement billetten er booket til (svarende til teksten på billetten).
barcodeDen stregkode som printes på billetten.
bookedSeatsSamling af 0 eller flere bookede pladser, altså <seat>-elementer.
seatPladsinformation som printes på billetten. Såfremt pladsinformation ikke er angivet, printes "Ikke nummereret" på billetten.
scanCountAntal gange billetten er scannet (kontrolleret).
bookingsSamling af 0 eller flere bookinger, altså <booking>-elementer.
bookingInformation om igangværende eller gennemført booking. Svarer datamæssigt til det XML-dokument som sendes via URL-callback når bookingen er gennemført.
customerIndeholder information om kunden (billetkøber), bl.a. navn, adresse, telefon og email.
ticketDownloadUrlAbsolut URL til download af billetter for gennemført (betalt) booking. Hvis bookingen ikke er gennemført, vil feltet være tomt. Billetter i en booking kan refereres individuelt ved at appende billetstregkoden til download URL'en. Følgende skal appendes: &tif=<barcode>.
confirmedDato og tidspunkt for gennemførsel (betaling) af bookingen. Hvis bookingen ikke er gennemført, vil feltet være tomt. Format: XML Schema dateTime uden tidszone, se W3C dateTime.
statusIndeholder status-information som beskriver API-requestet. Medsendes altid og indeholder altid <code> og <message>-elementerne.
codeStatuskode som angiver om API-requestet er gennemført. API-requests kan fejle f.eks. pga. forkert syntax i XML-dokumentet, ulovlige dataformater (se datatyper og valideringsregler), for få ledige pladser til at gennemføre bookingen mv. Se Liste over statuskoder. Statuskoden bør altid kontrolleres efter hvert request.
messageTekstuel beskrivelse af status. Returneres f.eks. statuskode 1 (XML-syntaxfejl), vil elementet indeholde en beskrivelse af syntaxfejlen samt en henvisning til hvor i reqest-dokumentet fejlen findes.

5. Datatyper og valideringsregler

Ved alle API-kald valideres attribut- og elementværdier efter følgende regler:
Element-/attributDatatype / Regulært udtryk
usernameString / [a-zA-Z0-9]{2,20}
apiKeyGUID / [0-9a-f]{36}
bookingIdGUID / [0-9a-f]{36}
eventIdInteger / [0-9]+
sectionIdInteger / [0-9]+
ticketIdInteger / [0-9]+
barcodeInteger / [0-9]{13}
seatString / [\w0-9æøåÆØÅ \-,:;\(\)\.]{0,18}
firstnameString / [\w0-9æøåÆØÅèéêëàáâãäòóôõöùúûü \-!\?%,:;\/\(\)\.]{2,50}
lastnameString / [\w0-9æøåÆØÅèéêëàáâãäòóôõöùúûü \-!\?%,:;\/\(\)\.]{2,50}
addressString / [\w0-9æøåÆØÅèéêëàáâãäòóôõöùúûü \-!\?%,:;\/\(\)\.]{2,50}
zipcodeString / [\w0-9\-\+ ]{2,16}
cityString / [\w0-9æøåÆØÅèéêëàáâãäòóôõöùúûü \-,:;\(\)\.]{2,32}
phoneString / [0-9\-\+ ]{4,16}
emailString / [a-zA-Z0-9\._\%\+\-]{1,255}@[a-zA-Z0-9\.\-]{1,255}\.[a-zA-Z]{2,16}

6. Statuskoder

Følgende statuskoder kan returneres i <code>-elementet. Statuskoden bør altid kontrolleres efter hvert kald, før dit eget system opdateres. Udover statuskode returneres altid en tekstuel fejlbeskrivelse i <message>-elementet.
StatuskodeBeskrivelse
1 XML syntax error
2 Authentication error
3 Authentication error - operation not supported with public API-key
100Booking not found or timed out
101Booking already confirmed
102Booking not ready for confirmation
200Event not found
201Event has not enough free seats
202Price booked is too high
300Ticket not found
400Section not found
900Error updating data (invalid format, unknown identifier, security error or general error)
910Too many requests (allocated capacity per time unit exceeded for this user)
Sælg billetter med Enkelbillet.dk
- til din koncert, teaterforestilling, fest, skolekomedie, show, sportsarrangement...
0 kr 0 kr 5 kr 30 kr
Oprettelse Abonnement Gebyr Bankoverførsel
Klik her for at komme igang!
Enkelbillet.dk er et professionelt billetsystem, udviklet til mindre teatre, spillesteder og arrangører af sportsbegivenheder, shows, fester, workshops, foredrag etc. Enkelbillet.dk (tidligere kaldet "Regnecentralens Billetsystem") har siden 2003 formidlet hundredetusindevis af billetter for en række danske arrangører, og er et fleksibelt, effektivt og brugervenligt værktøj, som gør det daglige arbejde med planlægning og salg af billetter til en let og behagelig oplevelse - både for arrangør og kunder.

Du kan være igang med at sælge billetter om et øjeblik. Læs mere her.