Request Requirements
Include a User-Agent header on every API request. Sona requires this header, and requests without it may be blocked by the firewall. Choose a value that identifies your integration. For example:
GET /services/SonaAPI.svc/SonaGetPersonInfoByPersonID?api_key=YOUR_API_KEY&person_id=1234 HTTP/1.1
Host: myschool.sona-systems.com
User-Agent: myCustomClient/202309011456
Downloading documentation files¶
The documentation website, its Markdown files, and the OpenAPI specification can also be downloaded by scripts and AI tools. These downloads are public and do not require an API key.
When downloading documentation programmatically, use a descriptive User-Agent, such as MyIntegration/1.0. Some HTTP libraries' default User-Agent values may be blocked by the documentation host with HTTP 403. This is separate from the requirements for calling the API described above.
For example, use Python's standard library to download the OpenAPI specification:
from urllib.request import Request, urlopen
url = (
"https://www.sona-systems.com/api-documentation/"
"openapi/sona-api.openapi.yaml"
)
request = Request(url, headers={"User-Agent": "MyIntegration/1.0"})
with urlopen(request, timeout=30) as response:
openapi_yaml = response.read().decode("utf-8")
If your tool cannot set this header, download the files with a client that can and provide them to the tool locally.