SAVEA Express Bus Ticket API

500 tickets sold per company = get 10 000 SEK



Table of Contents

Preface
Searchable companies
Available stops
Get traveller types
Search departures
Create payment link
Send user to payment URL


Preface

SAVEA provides a ticket API. This is done in the following proccess:

   (0. Fetch company specific information (available stops / traveller types))
    1. Search departures
    2. Request payment link
    3. User pays for trip on payment link

Searching for departures partly follows Samtrafiken's BoB standard.

Searchable company URLs

Company URL prefixes:
=====================

barabuss         // test site
blaklintsbuss
bergkvarabuss
silverlinjen
masexpressen
harjedalingen
lapplandspilen
sgsbussen
svenskabuss
vastervikexpress
skaraborgaren
fjallexpressen
tapanis
lindbergsbuss
nikkaluoktaexpressen

(currently not active, but available)
sagarail

URL:
====
http://{company}.samtrafiken.savea.se    // example: http://barabuss.samtrafiken.savea.se


Get available stops

GET http://{company}.samtrafiken.savea.se/api/v1/stop

---

Example response:
[
{
        "name": "Stockholm, Cityterminalen",
        "lat": "59.33020",
        "lon": "18.05910",
        "rdb_id": "7400622"
    },
    ...
]


Get traveller types

GET http://{company}.samtrafiken.savea.se/api/v1/productcat/travellers

---

Example response:
{
    "15": "Vuxen",
    ...
}


Search departures

POST http://{company}.samtrafiken.savea.se/api/v1/product
Example payload:
{
    "route": [
        {
            "stopId": "7400020"                     //stop RDB (riksdatabasen) number (9 or 7 digits)
        },
        {
            "stopId": "740000622"
        }
    ],
    "travellersPerCategory": [
        {
            "cat": "15",                            // traveller type
            "tra": 1                                // traveller count
        }
    ],
    "temporal": {
        "earliestDepature": "2018-10-19T12:00:00Z", //departure leaving earliest (timestamp described in RFC 3339 (https://www.ietf.org/rfc/rfc3339.txt §5.8))
        "latestArrival": "2018-10-19T23:59:59Z"     //departure arriving latest
    }
}

---

Response:
[
    [
        {
            "productId": "38368-223-219-39460-219-224/15-1",
            "productDescription": "Biljett: Hållplats A → Hållplats B",
            "fares": [
                {
                    "amount": 261,
                    "currency": "SEK",
                    "vatAmount": 14.77,
                    "vatPercent": 6
                }
            ],
            "productProperties": {
                "date": "2018-10-19T14:00:00+02:00"
            },
            "travellersPerCategory": [
                [
                    {
                        "cat": "15",
                        "tra": "1"
                    }
                ]
            ]
        },
        {
            "productId": "38732-223-219-39824-219-224/15-1",
            "productDescription": "Biljett: Hållplats A → Hållplats B",
            "fares": [
                {
                    "amount": 106,
                    "currency": "SEK",
                    "vatAmount": 6.00,
                    "vatPercent": 6
                }
            ],
            "productProperties": {
                "date": "2018-10-19T17:00:00+02:00"
            },
            "travellersPerCategory": [
                [
                    {
                        "cat": "15",
                        "tra": "1"
                    }
                ]
            ]
        },
        ...
    ]
]


Create payment link

POST http://{company}.samtrafiken.savea.se/api/v1/productcat/product
Example payload:
{
    "productId": "{product id}", //example id: 38368-223-219-39460-219-224/15-1
    "apiKey": "{API key}"
}

---

Example response:
{
    "payUrl": "{payment url}"
}


Send user to payment URL

// send user to url. user pays, and gets ticket


During development, to test a purchase:

    1. Use the company barabuss
    2. Search a trip from Kalmar Centralstation (7400020) to Örebro Centralstation (7400133)
    3. Use payment method 'Faktura' and enter social security number 460509-2222.