Summary
- You need to register a client on MyPage before you can access the API.
- Create an access token using client_credentials, and send this as a bearer token header.
Table of contents:
How to register your application
To use the BarentsWatch API application developers must register their applications with BarentsWatch. Please see: https://www.barentswatch.no/om/apnedata/ (Norwegain / English)
Please see www.barentswatch.no/om/api-vilkar for information in Norwegian about how to obtain an API user or send an e-mail to post@barentswatch.no
The API supports Open ID Connect flows like client credentials, authorization code, and device code. Self registered clients only supports client_credentials. You must contact BarentsWatch to set up other types of clients.
The OpenID discovery document is here: https://id.barentswatch.no/.well-known/openid-configuration (production).
How to request an access token
You need ClientID and ClientSecret from self-registration on MyPage/Minside, or obtained from BarentsWatch.
An application can obtain a token for use with the BarentsWatch API by posting a token request via HTTPS to https://id.barentswatch.no/connect/token:
- Use HTTPS POST
- URL must be id.barentswatch.no/connect/token
- Header-parameter 'content-type' must be 'application/x-www-form-urlencoded'
- Parameter 'grant_type' must be 'client_credentials'
- Parameter 'client_id' must be provided - use full ID which is often on the form myusername@example.com:myclient. If your client does not url-encode automatically, you must url-encode it on the form myusername%40example.com%3Amyclient
- Parameter 'client_secret' must be provided
- Parameter scope must be 'api'
Example request using curl:
curl -X POST --header "Content-Type: application/x-www-form-urlencoded" -d "client_id=YOUR_CLIENT_ID&scope=api&client_secret=YOUR_CLIENT_SECRET&grant_type=client_credentials" https://id.barentswatch.no/connect/token
Example success response:
{ "access_token":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3", "token_type":"bearer", "expires_in":3600 }
For more information see https://www.oauth.com/oauth2-servers/access-tokens/access-token-response/
How to use your access token to access the API
This is an example request to the BarentsWatch API for getting available forecast times for a particular fairway.
GET /bwapi/v1/geodata/waveforecast/available/?modelname=folda&fairwayid=1 HTTP/1.1 Host: www.barentswatch.no User-Agent: My Application Name Content-Type: application/x-www-form-urlencoded Authorization: bearer MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3
The same request with curl:
curl -X GET "https://www.barentswatch.no/bwapi/v1/geodata/waveforecast/available?modelname=folda&fairwayid=1" --header "accept: text/plain" --header "Authorization: Bearer MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"
These external websites might be useful for developers:
- List of OAuth libraries: https://oauth.net/code/
- About client_credentials grant https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/
How to log in to the OpenAPI documentation
You can log in to the OpenAPI-documentation with your own client.
- Go to https://www.barentswatch.no/bwapi/openapi/index.html
- Click 'Authorize'
- Under the headline "oauth2 (OAuth2, clientCredentials)":
- Replace client_id with your own client_id. It has to be URL-encoded. You can copy your URL-encoded client_id from MyPage/Minside.
- Enter your client_secret
- Select 'api' scope (tick the box)
- Click 'Authorize', and then 'Close'
You are now logged in. You can select the API documentation in the dropdown-menu in the upper-right corner.