-
Notifications
You must be signed in to change notification settings - Fork 7
Contacts API v1
The Contacts API v1 is a read-only REST API to get contact information to employees and to group contacts in the City of Malmö. It is an authenticated server-to-server API and is only accepting requests from registered applications. The information can only be used in applications governed by the City of Malmö.
Before you can use the API, you need to contact kominteamet@malmo.se to discuss the purpose of the usage of the data and the estimated traffic. Provide the IP-address for your test and production servers, the systems common name and the email address to the system manager.
You will get an app_token
and an app_secret
when you register a consuming application for a specific server or developing machine. Those parameters must be passed with each request.
You are responsible for caching requests in the consuming application. The caching policy depends on the amount of traffic the application will create and the need for fresh data. Please contact kominteamet@malmo.se to discuss an appropriate policy.
You must handle exceptions in the consuming application for responses. This includes both HTTP response codes and timeouts from the API server.
A request for a contact that has been removed will return:
HTTP/1.1 404 Not Found
{
"message": "404 Not Found"
}
Authentication failures will return:
HTTP/1.1 401 Unauthorized
{
"message": "401 Unauthorized. Your app_token, app_secret or ip address is not correct."
}
The API might use HTTP redirection. Clients should assume that any request may result in a redirection. Receiving an HTTP redirection is not an error and clients should follow that redirect.
All API access is over HTTPS and accessed from the following base address:
GET https://minsida.malmo.se/
All data is received as JSON.
Case insensitive search where the value of the q
parameter is matching the start of one of the following fields: first_name
, last_name
, first_name last_name
(combined) or email
.
Example request:
GET /api/v1/employees/search?q=jes
Response:
HTTP/1.1 200 OK
[
{
"catalog_id": "magiva",
"id": 111,
"first_name": "Jesper",
"last_name": "Bylund",
"title": "Enhetschef",
"email": "jesper.bylund@malmo.se",
"company": "102 Stadskontoret",
"department": "Kommunikationsavdelningen"
},
{
"catalog_id": "asajes",
"id": 50,
"first_name": "\u00c5sa",
"last_name": "Jespersson",
"title": "Processchef",
"email": "asa.jespersson@malmo.se",
"company": "040 Fritidsf\u00f6rvaltningen",
"department": null
},
...
]
Get the record for a single employee by the unique :id
or the :catalog_id
that is an unique identifier within the organization's systems.
GET /api/v1/employees/:id
GET /api/v1/employees/:catalog_id
Example requests:
GET /api/v1/employees/111
GET /api/v1/employees/magiva
Response:
HTTP/1.1 200 OK
{
"catalog_id": "magiva",
"id": 111,
"first_name": "Jesper",
"last_name": "Bylund",
"title": "Enhetschef",
"email": "jesper.bylund@malmo.se",
"phone": "040-342091",
"cell_phone": null,
"company": "102 Stadskontoret",
"department": null,
"room": "2413",
"address": "Krangatan 4",
"zip_code": "211 24",
"postal_town": "Malmö",
"geo_position_x": 119890,
"geo_position_y": 6165766,
"created_at": "2012-05-02T11:44:16.000+02:00",
"updated_at": "2015-04-22T09:59:55.000+02:00",
"roles": ["Stadskontoret", "IT", "Kommunikationsarbete", "Chef", "IT Malmö stad"],
"skills": ["responsiv design", "webb", "webbutveckling", "malmo.se", "Intranät", "Komin", "CSS", "CSS3", "media queries", "HTML5", "applikationer", "externwebb", "medborgarservice", "Digitala staden", "Digitala arbetsplatsen", "Digitala infrastrukturen"],
"languages": ["engelska"],
"contact_card": "https://minsida.malmo.se/users/magiva",
"avatars": {
"xlarge": "//profilbilder.malmo.se/magiva/xlarge.jpg",
"large": "//profilbilder.malmo.se/magiva/large.jpg",
"large_quadrat": "//profilbilder.malmo.se/magiva/large_quadrat.jpg",
"medium": "//profilbilder.malmo.se/magiva/medium.jpg",
"medium_quadrat": "//profilbilder.malmo.se/magiva/medium_quadrat.jpg",
"small": "//profilbilder.malmo.se/magiva/small.jpg",
"small_quadrat": "//profilbilder.malmo.se/magiva/small_quadrat.jpg",
"thumb_quadrat": "//profilbilder.malmo.se/magiva/thumb_quadrat.jpg",
"tiny_quadrat": "//profilbilder.malmo.se/magiva/tiny_quadrat.jpg",
"mini_quadrat": "//profilbilder.malmo.se/magiva/mini_quadrat.jpg"
}
}
To get profile pictures for an employee, use the employee's :catalog_id
as documented in the Avatar Service API.
Case insensitive search where the value of the q
parameter is matching the start of the name
field.
Example request:
GET /api/v1/group_contacts/search?q=Individ-%20&%20familjeomsorgen
Response:
HTTP/1.1 200 OK
[
{
"id": 16,
"name": "Individ- & familjeomsorgen Centrum"
},
{
"id": 23,
"name": "Individ- & familjeomsorgen Roseng\u00e5rd"
},
...
]
Get the record for a single contact by the unique :id
you get from the group contact search.
GET /api/v1/group_contacts/:id
Example request:
GET /api/v1/group_contacts/23
Response:
HTTP/1.1 200 OK
{
"id": 23,
"name": "Individ- & familjeomsorgen Roseng\u00e5rd",
"email": "iofrosengard@malmo.se",
"phone": "040-34 33 69",
"phone_hours": "M\u00e5n\u2013Tor: 08.00\u201316.00, lunchst\u00e4ngt 11.45\u201313.00. Fre 08.00\u201315.00 Lunchst\u00e4ngt 11.45\u201313.00",
"cell_phone": "",
"fax": "",
"address": "",
"zip_code": "",
"postal_town": "",
"visiting": {
"address": "von Troils v\u00e4g 8A",
"zip_code": "213 73",
"postal_town": "Malm\u00f6",
"district": "\u00d6ster",
"geo_position": {
"x": "121638",
"y": "6162531"
},
"hours": "M\u00e5n\u2013Tor 08.30\u201315.30, lunchst\u00e4ngt 11.45\u201313.00, Fre 08.30\u201315.00, lunchst\u00e4ngt 11.45\u201313.00",
},
"homepage": "",
"created_at": "2013-11-01T15:41:52+01:00",
"updated_at": "2013-11-05T13:59:56+01:00",
"legacy_dn": "cn=Individ- & familjeomsorgen Roseng\u00e5rd, ou=Funktionskonton, ou=Organisation och funktion, ou=Sitevision, o=malmo"
}
The geo_position
coordinates are using the SWEREF991330 standard.
Search requests will return 25 items by default. You can control this with the per_page
parameter. 100 items is the maximum. Use the 1-based page
parameter to access more pages.
This request will return items 51–100 for the given query:
GET /api/v1/employees/search?q=sven&per_page=50&page=2