Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

Subscribe to our email list to receive updates about our API here.


Authentication

Before you start you need to obtain the following information

CLIENT_ID="my client id"
CLIENT_SECRET="my client secret"
API_USERNAME="my Infoland API username"
API_PASSWORD="my Infoland API password"

To get this information, please contact support@ambita.com

In order to obtain a token, run the following

curl -s -H  "Content-Type: application/json" https://beta-api.ambita.com:443/authentication/v2/token -d "
        {
                \"grant_type\": \"password\",
                \"client_id\": \"CLIENT_ID\",
                \"client_secret\": \"CLIENT_SECRET\",
                \"username\": \"API_USERNAME\",
                \"password\": \"API_PASSWORD\"
        }"

Example response

{
  "access_token": "ej577asf-a5k6-42yq-a3a2-fh03hb8cb58c",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "aj274ajd-t1s8-48sk-v5m1-shf64j9bq25a",
  "scope": [
    "shopping.read",
    "shopping.write",
    "productcatalog.read"
  ]
}

The access_token is valid for 1 hour and should be reused until it expires. When the token expires, the API will return 401 UNAUTHORIZED.

To get a new access_token you can use the refresh token grant_type

curl -s -H  "Content-Type: application/json" https://beta-api.ambita.com:443/authentication/v2/token -d "
        {
                \"grant_type\": \"refresh_token\",
                \"refresh_token\": \"aj274ajd-t1s8-48sk-v5m1-shf64j9bq25a\"
        }"

The refresh_token is valid for 30 days and should be stored securely and only be used to get new access_token. The refresh token grant_type will also return a new refresh_token, you should replace your existing refresh_token with the new one, the new refresh_token is valid for another 30 days. If the refresh_token expires, you need to authenticate with client, credentials and grant_type password again.

More information about OAuth can be found here: https://www.oauth.com/

How to integrate

You want to start with finding the product you want to order, this is done by looking up the product list for a given municipality, see Get products. You can also contact support if you are unsure about what product to order, support@ambita.com.

Then make sure you are handling push notifications correctly, see Push messages.

Next you want to create an order, this is described in Create an order.

When you have created the order, you should then wait for push messages. We recommend to put push messages on a queue and process them sequentially. What to do with the different statuses is described in the Push messages, but for UPDATE and FINISHED, there is a small difference to what should be done.

When you receive an UPDATE or FINISHED push message, you should follow this 3-step procedure:

  1. Use the orderId and get the order from our API described in Get order

  2. Loop through assets and do necessary actions

    Files can occur on both order level and order line level.

    Example (JavaScript)

     fetch('https://beta-api.ambita.com/kode/v1/orders/:orderId')
       .then(response => {
         response.orders.forEach(order => {
           if (order.assets.length > 0) {
             // loop through order assets and do necessary actions
           }
    
           order.orderLines.forEach(orderLine => {
             if (orderLine.assets.length > 0) {
               // loop through order line assets and do necessary actions
             }
           });
         })
       });
    
  3. Delete or save the file

    Response from https://beta-api.ambita.com/kode/v1/orders/:orderId

     {
       "id": 1234567,
       "status": "PROGRESS",
       ...
       "orders": [
         {
           "id": 1234567,
           "supplierName": "Infoland Kommune - demo",
           "assets": [
             ...
           ],
           ...
           "orderLines": [
             {
               "id": 12345678,
               "assets": [
                 ...
               ]
    

    Take a look at the Get delivered files section, the id of the asset will be unique and should be stored in your system. Use this id as a reference to check if you have downloaded the asset before, this way you won’t end up with duplicates. You should also check the status of the asset and delete the file if it has status DELETED.

Create an order

To create an order, you need to use the access_token that you previously obtained.

Take a look at our Swagger documentation for the API here: Swagger

Send a POST request to https://beta-api.ambita.com/kode/v1/orders/cadastre

Example request

curl -s \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer ej577asf-a5k6-42yq-a3a2-fh03hb8cb58c" \
      https://beta-api.ambita.com/kode/v1/orders/cadastre -d "
        {
                \"deliveryInformation\": {
                  // delivery information object
                },
                \"orderData\": {
                  \"address\": \"Infoveien 1, 9999 Infoland\",
                  \"cadastre\": \"9999-1-1-0-0\"
                },
                \"products\": [
                  {
                    \"code\": \"WI99990033\"
                  }
                ],
                \"reference\": \"some-reference\",
                \"technicalReference\": \"some-technical-reference\"
        }"

JSON body structure

Property

Description

deliveryInformation*

Object that includes information related to delivery of the products, see section below

orderData

Order data required to order the products specified which will differ based on the type of product being ordered between cadastre, share, map products, see section below

reference

This reference is used to connect multiple orders to one reference, usually an assignment key and commonly used for billing reference

technicalReference*

This reference is used to reference an order in our system, to a unique id in your system, good for debugging and lookups

products

Array of objects, see section below

* indicates optional fields

deliveryInformation object

Property

Description

address*

Address line

address2*

Address line 2

address3*

Address line 3

alias*

Alias

companyName*

Company name

email*

Email

name*

Name

phone*

Phone

postalCode*

Postal code

* indicates optional fields

orderData object

Property

Description

For ordering cadastre products, see example below

address

Important to use this format {Street address}, {Postal code} {Postal office}, for example, Infoveien 1, 9999 Infoland

cadastre

Cadastre should always include all required parts {Kommunenummer}-{Gårdsnummer}-{Bruksnummer}-{Festenummer}-{Seksjonsnummer}, for example, 0301-100-10-0-0

For ordering share products, see example below

organizationNumber

Organization number

shareNumber

Share number

For ordering map product, see example below

geometry

A closed GeoJSON polygon specified in ETRS89 / UTM zone 33N or ETRS89 / UTM zone 32N

spatialReference

Spatial reference the geometry is specified in either 25833 or 25832

Example cadastre products orderData

"orderData": {
  "address": "Infoveien 1, 9999 Infoland",
  "cadastre": "9999-1-1-0-0"
}

Example share products orderData

"orderData": {
  "organizationNumber": 988424587,
  "shareNumber": 136
}

Example map products orderData

"orderData": {
  "geometry": {
    "type": "Polygon",
    "coordinates": [[
      [679906.435383017,7741056.419552005],
      [679906.4572162632,7742527.458934937],
      [681832.6049002217,7742527.507026337],
      [681832.6139410603,7741056.365899973],
      [679906.435383017,7741056.419552005]
    ]]
  },
  "spatialReference": "25833"
}

products array of objects

Property

Description

code

Use product API to find correct product codes in given municipality

data*

Additional data required to order specific products that varies based on a product, see example below

* indicates optional fields

Example map products array with additional data

"products": [
  {
    "code": "WI54016101",
    "data": {
      "format": "UTM"
    }
  }
]

Example response

{
  "id": 1664984,
  "status": "NEW",
  "priceNet": 0,
  "priceVat": 0,
  "dateOrdered": "2021-01-28T09:10:15+0100",
  "dateStatus": "2021-01-28T09:10:15+0100",
  "orders": [
    {
      "id": 2640649,
      "supplierName": "Tromsø kommune",
      "user": "Test User",
      "technicalReference": null,
      "orderLines": [
        {
          "id": 11603164,
          "status": {
            "code": "NEW",
            "name": "New order. Has not been processed yet."
          },
          "product": "WI54016101",
          "productName": "Basiskart som vektordata",
          "productType": {
            "code": "0",
            "name": "NORMAL"
          },
          "mediaType": "Datafil",
          "delivery": "Elektronisk",
          "priceNet": 0,
          "priceVat": 0
        }
      ]
    }
  ]
}

Get products

To get products, you need to use the access_token that you previously obtained.

Send a GET request to https://beta-api.ambita.com/kode/v1/products?municipality={municipalityCode}

Take a look at our Swagger documentation for the API here: Swagger

Example request

curl -s \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer ej577asf-a5k6-42yq-a3a2-fh03hb8cb58c" \
      https://beta-api.ambita.com/kode/v1/products?municipality=9999

Example response

Get order

To get an order, you need to use the access_token that you previously obtained.

Send a GET request to https://beta-api.ambita.com/kode/v1/orders/1234567

Take a look at our Swagger documentation for the API here: Swagger

Example request

curl -s \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer ej577asf-a5k6-42yq-a3a2-fh03hb8cb58c" \
      https://beta-api.ambita.com/kode/v1/orders/1234567

Example response

Push messages

In order for us to notify your system about events on an order, you need to provide a callback URL, send this to support@ambita.com

When there is an event on an order, a push message is sent to your callback URL.

These are the statuses that can be pushed to your system

Status

Description

NEW

This status is the same as an order confirmation email, it confirms that our order system has received the order and is ready to process the order

UPDATED

This status is sent when a new file has arrived and you should get the new file. NB! This status can occur after an order is finished

FINISHED

This status is sent when an order is set to finished, you should check if you have received all the files

CANCELLED

This status is sent when the order is cancelled, you should delete the files that you have received on this order

REFUNDED

This status is sent when the order is refunded, you should delete the files that you have received on this order

Example request body

Get delivered files

Here you can find information about assets in our API

Asset object

{
  "name": "The-exact-name-of-the-file.pdf",
  "filename": "More-descriptive-name-of-the-file.pdf",
  "downloadUrl": "https://beta-api.ambita.com/shopping/v2/assets/d2f48dk9d267a86d2858244d0c2c1937",
  "assetStatus": "OK",
  "productCategory": "PRODUCT_UTEN_KATEGORI",
  "id": "d2f48dk9d267a86d2858244d0c2c1937"
}

Property

Description

name

The name of the file that is uploaded to our system

filename

A descriptive filename that we create based on product name

downloadUrl

The URL to where you can download the file

assetStatus

The status of the asset, see section below

productCategory

The category of the asset, can be used to categorize files or cost, see section below

id

Unique id for each asset

Asset status

Status

Description

OK

The asset is available and can be downloaded

DELETED

The asset is deleted and is no longer available, you should remove the file from your system

Product categories

Available product categories

Product category

PRODUKT_UTEN_KATEGORI

KOMMUNAL_INFORMASJON

PLAN_KART_REGULERING

FERDIGATTEST_OG_MIDLERTIDIG_BRUKSTILLATELSE

File types

Most of the files are PDFs, but we also deliver other file types, these are the most common types:

  • .pdf

  • .txt

  • .xlsx, .xls, .csv

  • .jpg, .png

  • .sos, .kof, .dxf, .dvg, .sketchup

  • .tiff, .zip

  • No labels