Skip to main content

Synkronus API (1.0.3)

Download OpenAPI specification:Download

Health

Health check endpoint

Returns the current health status of the service

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "timestamp": "2019-08-24T14:15:22Z",
  • "version": "string"
}

Get server version and system information

Returns detailed version information about the server, including build information and system details

Responses

Response samples

Content type
application/json
{
  • "server": {
    },
  • "database": {
    },
  • "system": {
    },
  • "build": {
    }
}

Get changes between two app bundle versions

Compares two versions of the app bundle and returns detailed changes

Authorizations:
bearerAuth
query Parameters
current
string

The current version (defaults to latest)

target
string

The target version to compare against (defaults to previous version)

header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Responses

Response samples

Content type
application/json
{
  • "compare_version_a": "string",
  • "compare_version_b": "string",
  • "form_changes": true,
  • "ui_changes": true,
  • "new_forms": [
    ],
  • "removed_forms": [
    ],
  • "modified_forms": [
    ]
}

Get the current custom app bundle manifest

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Responses

Response samples

Content type
application/json
{
  • "files": [
    ],
  • "version": "string",
  • "generatedAt": "2019-08-24T14:15:22Z",
  • "hash": "string"
}

Download a specific file from the app bundle

Authorizations:
bearerAuth
path Parameters
path
required
string
query Parameters
preview
boolean
Default: false

If true, returns the file from the latest version including unreleased changes

header Parameters
if-none-match
string
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Responses

Get a list of available app bundle versions

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Responses

Response samples

Content type
application/json
{
  • "versions": [
    ]
}

Upload a new app bundle (admin only)

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: multipart/form-data
required
bundle
string <binary>

ZIP file containing the new app bundle

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "manifest": {
    }
}

Switch to a specific app bundle version (admin only)

Authorizations:
bearerAuth
path Parameters
version
required
string

Version identifier to switch to

header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Responses

Response samples

Content type
application/json
{
  • "message": "Switched to app bundle version 20250507-123456"
}

Authenticate user and return JWT tokens

Obtain a JWT token by providing username and password

header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: application/json
required
username
required
string

User's username

password
required
string <password>

User's password

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "pa$$word"
}

Response samples

Content type
application/json
{
  • "token": "string",
  • "refreshToken": "string",
  • "expiresAt": 0
}

Refresh JWT token

Obtain a new JWT token using a refresh token

header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: application/json
required
refreshToken
required
string

Refresh token obtained from login or previous refresh

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "string"
}

Response samples

Content type
application/json
{
  • "token": "string",
  • "refreshToken": "string",
  • "expiresAt": 0
}

Create a new user (admin only)

Create a new user with specified username, password, and role

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: application/json
required
username
required
string

New user's username

password
required
string <password>

New user's password

role
required
string
Enum: "read-only" "read-write" "admin"

User's role

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "pa$$word",
  • "role": "read-only"
}

Response samples

Content type
application/json
{
  • "username": "string",
  • "role": "read-only",
  • "createdAt": "2019-08-24T14:15:22Z"
}

List all users (admin only)

Retrieve a list of all users in the system. Admin access required.

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Delete a user (admin only)

Delete a user by username

Authorizations:
bearerAuth
path Parameters
username
required
string

Username of the user to delete

header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Responses

Response samples

Content type
application/json
{
  • "message": "User deleted successfully"
}

Reset user password (admin only)

Reset password for a specified user

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: application/json
required
username
required
string

Username of the user whose password is being reset

newPassword
required
string <password>

New password for the user

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "newPassword": "pa$$word"
}

Response samples

Content type
application/json
{
  • "message": "Password reset successfully"
}

Change user password (authenticated user)'s password

Change password for the currently authenticated user

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: application/json
required
currentPassword
required
string <password>

Current password for verification

newPassword
required
string <password>

New password to set

Responses

Request samples

Content type
application/json
{
  • "currentPassword": "pa$$word",
  • "newPassword": "pa$$word"
}

Response samples

Content type
application/json
{
  • "message": "Password changed successfully"
}

Pull updated records since last sync

Retrieves records that have changed since a specified version.

Pagination Pattern:

  1. Send initial request with since.version (or omit for all records)
  2. Process returned records
  3. If has_more is true, make next request using change_cutoff as the new since.version
  4. Repeat until has_more is false

Example pagination flow:

  • Request 1: since: {version: 100} → Response: change_cutoff: 150, has_more: true
  • Request 2: since: {version: 150} → Response: change_cutoff: 200, has_more: false
Authorizations:
bearerAuth
query Parameters
schemaType
string

Filter by schemaType

limit
integer [ 1 .. 500 ]
Default: 50

Maximum number of records to return

header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: application/json
required
client_id
required
string
object

Optional pagination cursor indicating the last seen change

schema_types
Array of strings

Responses

Request samples

Content type
application/json
{
  • "client_id": "string",
  • "since": {
    },
  • "schema_types": [
    ]
}

Response samples

Content type
application/json
{
  • "current_version": 0,
  • "records": [
    ],
  • "change_cutoff": 0,
  • "has_more": true,
  • "sync_format_version": "1.0"
}

Push new or updated records to the server

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: application/json
required
transmission_id
required
string <uuid>
client_id
required
string
required
Array of objects (Observation)

Responses

Request samples

Content type
application/json
{
  • "transmission_id": "da08139c-7a56-4672-93e2-85353adf4d76",
  • "client_id": "string",
  • "records": [
    ]
}

Response samples

Content type
application/json
{
  • "current_version": 0,
  • "success_count": 0,
  • "failed_records": [
    ],
  • "warnings": [
    ]
}

Get attachment manifest for incremental sync

Returns a manifest of attachment changes (new, updated, deleted) since a specified data version

Authorizations:
bearerAuth
header Parameters
x-api-version
string^\d+\.\d+\.\d+$
Example: 1.0.0

Optional API version header using semantic versioning (MAJOR.MINOR.PATCH)

Request Body schema: application/json
required
client_id
required
string

Unique identifier for the client requesting the manifest

since_version
required
integer >= 0

Data version number from which to get attachment changes (0 for all attachments)

Responses

Request samples

Content type
application/json
{
  • "client_id": "mobile-app-123",
  • "since_version": 42
}

Response samples

Content type
application/json
{}

Upload a new attachment with specified ID

Authorizations:
bearerAuth
path Parameters
attachment_id
required
string
Example: abc123.jpg
Request Body schema: multipart/form-data
required
file
required
string <binary>

The binary file to upload

Responses

Response samples

Content type
application/json
{
  • "status": "success"
}

Download an attachment by ID

Authorizations:
bearerAuth
path Parameters
attachment_id
required
string
Example: abc123.jpg

Responses

Check if an attachment exists

Authorizations:
bearerAuth
path Parameters
attachment_id
required
string
Example: abc123.jpg

Responses

DataExport

Download a ZIP archive of Parquet exports

Returns a ZIP file containing multiple Parquet files, each representing a flattened export of observations per form type. Supports downloading the entire dataset as separate Parquet files bundled together.

Authorizations:
bearerAuth

Responses