6.2. The IDERI note REST API

The IDERI note REST API is part of IDERI note web. While there are many different ways of how to consume an API, we only point out a few ways of how to work with the IDERI note REST API in this chapter.

6.2.1. Swagger™ UI

The IDERI note REST API makes use of the Swagger™ UI API interface. It provides a browsable API for most of its endpoints, which you can inspect at http://<host>:<port>/IDERInote/api/.

Warning

IDERI note web uses IIS basic authentication by default. Using basic authentication over http is not secure as the credentials sent to the server are not encrypted. Therefore you should configure the IIS web site where IDERI note web has been installed to always use HTTPS/TLS. (See chapter 3.15.3.3)

When using an internet browser to connect to the API you will get prompted for your domain credentials (figure 6.22).

Authentication prompt for API

Figure 6.22: Authentication prompt for API

When successfully authenticated you will get an overview of all the endpoints available in the API (figure 6.23).

Swagger UI for the API

Figure 6.23: Swagger™ UI for the API

When you click on an endpoint in Swagger™ UI you can inspect the request schemas and given parameters (figure 6.24). You can also execute a request directly in Swagger™ UI by selecting Try it out.

Swagger UI details for GET message

Figure 6.24: Swagger™ UI details for GET message

6.2.2. PowerShell

You can use Windows PowerShell to consume the API as well. To do so, use the CmdLet Invoke-RestMethod.

The following example demonstrates how to query for license information from the associated IDERI note server using the API and PowerShell.

PS> $URI = "https://note-srv07.note.dev/IDERInote/api/v1/licenses"
PS> Invoke-RestMethod -Method Get -Uri $URI -Credential (Get-Credential)


licenseMode                   : 2
desktopLicenses               : 55
desktopLicensesUsed           : 1
desktopClientConnections      : 1
desktopUserConnections        : 1
desktopComputerConnections    : 0
desktopLicenseRequestsRefused : 0
mobileLicenses                : 57
mobileLicensesUsed            : 0
mobileClientConnections       : 0
mobileLicenseRequestsRefused  : 0

The next example shows how to create a new message with the priority ALERT and a validity of 1 hour from now on.

PS> # The API uri
PS> $URI = "https://note-srv07.note.dev/IDERInote/api/v1/messages"
PS>
PS> # Create an array for the recipients
PS> $recipients = @("homer.simpson","bart.simpson")
PS>
PS> # Create the message as a hash table
PS> $msgObj = @{
        Text = "Hello world"
        StartTime = (Get-Date -Format O)
        EndTime = ((Get-Date).AddHours(1).ToString("O"))
        Priority = "ALERT"
        Recipient = $recipients
        ShowPopup = $true
    }
PS> # Convert the message hash table to a json string
PS> $msgJson = $msgObj | ConvertTo-Json -Compress
PS>
PS> # Consume the API
PS> Invoke-RestMethod -Method Post -Uri $URI -Credential (Get-Credential) `
    -Body $msgJson -ContentType "application/json"

6.2.3. curl

The next example uses curl to query IDERI note license information from the IDERI note REST API. The --insecure parameter of curl ignores the SSL certificate.

curl -X 'GET' 'https://note-srv07.note.dev/IDERInote/api/v1/licenses' \
    -H 'accept: text/plain' -u 'note.dev\homer.simpson' --insecure