diff --git a/docs/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-min-availability-html.html b/docs/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-min-availability-html.html
new file mode 100644
index 0000000..c4bbe69
--- /dev/null
+++ b/docs/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-min-availability-html.html
@@ -0,0 +1,72 @@
+
+
+
+
diff --git a/docs/output/package-list b/docs/output/package-list
index 6370f54..41621ee 100644
--- a/docs/output/package-list
+++ b/docs/output/package-list
@@ -33,6 +33,7 @@ $dokka.location:com.geotab.mobile.sdk.publicInterfaces/DriveSdk/getAllUsers/#kot
$dokka.location:com.geotab.mobile.sdk.publicInterfaces/DriveSdk/getAvailability/#kotlin.String#kotlin.Function1[com.geotab.mobile.sdk.module.Result[com.geotab.mobile.sdk.module.Success[kotlin.String],com.geotab.mobile.sdk.module.Failure],kotlin.Unit]/PointingToDeclaration/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-availability.html
$dokka.location:com.geotab.mobile.sdk.publicInterfaces/DriveSdk/getDeviceEvents/#kotlin.Function1[com.geotab.mobile.sdk.module.Result[com.geotab.mobile.sdk.module.Success[kotlin.String],com.geotab.mobile.sdk.module.Failure],kotlin.Unit]/PointingToDeclaration/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-device-events.html
$dokka.location:com.geotab.mobile.sdk.publicInterfaces/DriveSdk/getHosRuleSet/#kotlin.String#kotlin.Function1[com.geotab.mobile.sdk.module.Result[com.geotab.mobile.sdk.module.Success[kotlin.String],com.geotab.mobile.sdk.module.Failure],kotlin.Unit]/PointingToDeclaration/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-hos-rule-set.html
+$dokka.location:com.geotab.mobile.sdk.publicInterfaces/DriveSdk/getMinAvailabilityHtml/#kotlin.String#kotlin.Function1[com.geotab.mobile.sdk.module.Result[com.geotab.mobile.sdk.module.Success[kotlin.String],com.geotab.mobile.sdk.module.Failure],kotlin.Unit]/PointingToDeclaration/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-min-availability-html.html
$dokka.location:com.geotab.mobile.sdk.publicInterfaces/DriveSdk/getOpenCabAvailability/#kotlin.String#kotlin.Function1[com.geotab.mobile.sdk.module.Result[com.geotab.mobile.sdk.module.Success[kotlin.String],com.geotab.mobile.sdk.module.Failure],kotlin.Unit]/PointingToDeclaration/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-open-cab-availability.html
$dokka.location:com.geotab.mobile.sdk.publicInterfaces/DriveSdk/getStateDevice/#kotlin.Function1[com.geotab.mobile.sdk.module.Result[com.geotab.mobile.sdk.module.Success[kotlin.String],com.geotab.mobile.sdk.module.Failure],kotlin.Unit]/PointingToDeclaration/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-state-device.html
$dokka.location:com.geotab.mobile.sdk.publicInterfaces/DriveSdk/getUserViolations/#kotlin.String#kotlin.Function1[com.geotab.mobile.sdk.module.Result[com.geotab.mobile.sdk.module.Success[kotlin.String],com.geotab.mobile.sdk.module.Failure],kotlin.Unit]/PointingToDeclaration/output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-user-violations.html
diff --git a/docs/scripts/pages.json b/docs/scripts/pages.json
index 52994c1..e4f3916 100644
--- a/docs/scripts/pages.json
+++ b/docs/scripts/pages.json
@@ -1 +1 @@
-[{"name":"abstract fun cancelLogin()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.cancelLogin","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/cancel-login.html","searchKeys":["cancelLogin","abstract fun cancelLogin()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.cancelLogin"]},{"name":"abstract fun clearDriverActionNecessaryCallback()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearDriverActionNecessaryCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/clear-driver-action-necessary-callback.html","searchKeys":["clearDriverActionNecessaryCallback","abstract fun clearDriverActionNecessaryCallback()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearDriverActionNecessaryCallback"]},{"name":"abstract fun clearLastServerAddressUpdatedCallback()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearLastServerAddressUpdatedCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/clear-last-server-address-updated-callback.html","searchKeys":["clearLastServerAddressUpdatedCallback","abstract fun clearLastServerAddressUpdatedCallback()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearLastServerAddressUpdatedCallback"]},{"name":"abstract fun clearLoginRequiredCallback()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearLoginRequiredCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/clear-login-required-callback.html","searchKeys":["clearLoginRequiredCallback","abstract fun clearLoginRequiredCallback()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearLoginRequiredCallback"]},{"name":"abstract fun clearPageNavigationCallback()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearPageNavigationCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/clear-page-navigation-callback.html","searchKeys":["clearPageNavigationCallback","abstract fun clearPageNavigationCallback()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearPageNavigationCallback"]},{"name":"abstract fun getAllUsers(includeAllUsers: Boolean = true, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getAllUsers","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-all-users.html","searchKeys":["getAllUsers","abstract fun getAllUsers(includeAllUsers: Boolean = true, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getAllUsers"]},{"name":"abstract fun getAvailability(userName: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getAvailability","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-availability.html","searchKeys":["getAvailability","abstract fun getAvailability(userName: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getAvailability"]},{"name":"abstract fun getDeviceEvents(callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getDeviceEvents","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-device-events.html","searchKeys":["getDeviceEvents","abstract fun getDeviceEvents(callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getDeviceEvents"]},{"name":"abstract fun getHosRuleSet(userName: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getHosRuleSet","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-hos-rule-set.html","searchKeys":["getHosRuleSet","abstract fun getHosRuleSet(userName: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getHosRuleSet"]},{"name":"abstract fun getOpenCabAvailability(version: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getOpenCabAvailability","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-open-cab-availability.html","searchKeys":["getOpenCabAvailability","abstract fun getOpenCabAvailability(version: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getOpenCabAvailability"]},{"name":"abstract fun getStateDevice(callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getStateDevice","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-state-device.html","searchKeys":["getStateDevice","abstract fun getStateDevice(callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getStateDevice"]},{"name":"abstract fun getUserViolations(userName: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getUserViolations","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-user-violations.html","searchKeys":["getUserViolations","abstract fun getUserViolations(userName: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getUserViolations"]},{"name":"abstract fun setCustomURLPath(path: String)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setCustomURLPath","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-custom-u-r-l-path.html","searchKeys":["setCustomURLPath","abstract fun setCustomURLPath(path: String)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setCustomURLPath"]},{"name":"abstract fun setDriveReadyListener(callback: () -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriveReadyListener","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-drive-ready-listener.html","searchKeys":["setDriveReadyListener","abstract fun setDriveReadyListener(callback: () -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriveReadyListener"]},{"name":"abstract fun setDriverActionNecessaryCallback(callback: DriverActionNecessaryCallbackType)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriverActionNecessaryCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-driver-action-necessary-callback.html","searchKeys":["setDriverActionNecessaryCallback","abstract fun setDriverActionNecessaryCallback(callback: DriverActionNecessaryCallbackType)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriverActionNecessaryCallback"]},{"name":"abstract fun setDriverSeat(driverId: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriverSeat","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-driver-seat.html","searchKeys":["setDriverSeat","abstract fun setDriverSeat(driverId: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriverSeat"]},{"name":"abstract fun setLastServerAddressUpdatedCallback(callback: LastServerUpdatedCallbackType)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setLastServerAddressUpdatedCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-last-server-address-updated-callback.html","searchKeys":["setLastServerAddressUpdatedCallback","abstract fun setLastServerAddressUpdatedCallback(callback: LastServerUpdatedCallbackType)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setLastServerAddressUpdatedCallback"]},{"name":"abstract fun setLoginRequiredCallback(callback: LoginRequiredCallbackType)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setLoginRequiredCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-login-required-callback.html","searchKeys":["setLoginRequiredCallback","abstract fun setLoginRequiredCallback(callback: LoginRequiredCallbackType)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setLoginRequiredCallback"]},{"name":"abstract fun setPageNavigationCallback(callback: PageNavigationCallbackType)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setPageNavigationCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-page-navigation-callback.html","searchKeys":["setPageNavigationCallback","abstract fun setPageNavigationCallback(callback: PageNavigationCallbackType)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setPageNavigationCallback"]},{"name":"abstract fun setSession(credentialResult: CredentialResult, isCoDriver: Boolean = false)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setSession","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-session.html","searchKeys":["setSession","abstract fun setSession(credentialResult: CredentialResult, isCoDriver: Boolean = false)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setSession"]},{"name":"abstract fun setSpeechEngine(speechEngine: SpeechEngine)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setSpeechEngine","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-speech-engine.html","searchKeys":["setSpeechEngine","abstract fun setSpeechEngine(speechEngine: SpeechEngine)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setSpeechEngine"]},{"name":"abstract fun shutdown()","description":"com.geotab.mobile.sdk.publicInterfaces.SpeechEngine.shutdown","location":"output/com.geotab.mobile.sdk.publicInterfaces/-speech-engine/shutdown.html","searchKeys":["shutdown","abstract fun shutdown()","com.geotab.mobile.sdk.publicInterfaces.SpeechEngine.shutdown"]},{"name":"abstract fun speak(text: String, rate: Float, language: String)","description":"com.geotab.mobile.sdk.publicInterfaces.SpeechEngine.speak","location":"output/com.geotab.mobile.sdk.publicInterfaces/-speech-engine/speak.html","searchKeys":["speak","abstract fun speak(text: String, rate: Float, language: String)","com.geotab.mobile.sdk.publicInterfaces.SpeechEngine.speak"]},{"name":"abstract val isCharging: Boolean","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.isCharging","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/is-charging.html","searchKeys":["isCharging","abstract val isCharging: Boolean","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.isCharging"]},{"name":"abstract var webAppLoadFailed: () -> Unit?","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.webAppLoadFailed","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/web-app-load-failed.html","searchKeys":["webAppLoadFailed","abstract var webAppLoadFailed: () -> Unit?","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.webAppLoadFailed"]},{"name":"abstract var webAppLoadFailed: () -> Unit?","description":"com.geotab.mobile.sdk.publicInterfaces.MyGeotabSdk.webAppLoadFailed","location":"output/com.geotab.mobile.sdk.publicInterfaces/-my-geotab-sdk/web-app-load-failed.html","searchKeys":["webAppLoadFailed","abstract var webAppLoadFailed: () -> Unit?","com.geotab.mobile.sdk.publicInterfaces.MyGeotabSdk.webAppLoadFailed"]},{"name":"constructor(credentials: GeotabCredentials, path: String)","description":"com.geotab.mobile.sdk.models.publicModels.CredentialResult.CredentialResult","location":"output/com.geotab.mobile.sdk.models.publicModels/-credential-result/-credential-result.html","searchKeys":["CredentialResult","constructor(credentials: GeotabCredentials, path: String)","com.geotab.mobile.sdk.models.publicModels.CredentialResult.CredentialResult"]},{"name":"constructor(database: String, userName: String, password: String)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.GeotabAuthParams","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/-geotab-auth-params.html","searchKeys":["GeotabAuthParams","constructor(database: String, userName: String, password: String)","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.GeotabAuthParams"]},{"name":"constructor(method: String, params: GeotabAuthParams)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.GeotabAuthRequest","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-request/-geotab-auth-request.html","searchKeys":["GeotabAuthRequest","constructor(method: String, params: GeotabAuthParams)","com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.GeotabAuthRequest"]},{"name":"constructor(result: CredentialResult?)","description":"com.geotab.mobile.sdk.models.publicModels.AuthResponse.AuthResponse","location":"output/com.geotab.mobile.sdk.models.publicModels/-auth-response/-auth-response.html","searchKeys":["AuthResponse","constructor(result: CredentialResult?)","com.geotab.mobile.sdk.models.publicModels.AuthResponse.AuthResponse"]},{"name":"constructor(userName: String, database: String, sessionId: String)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.GeotabCredentials","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/-geotab-credentials.html","searchKeys":["GeotabCredentials","constructor(userName: String, database: String, sessionId: String)","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.GeotabCredentials"]},{"name":"data class AuthResponse(val result: CredentialResult?)","description":"com.geotab.mobile.sdk.models.publicModels.AuthResponse","location":"output/com.geotab.mobile.sdk.models.publicModels/-auth-response/index.html","searchKeys":["AuthResponse","data class AuthResponse(val result: CredentialResult?)","com.geotab.mobile.sdk.models.publicModels.AuthResponse"]},{"name":"data class CredentialResult(val credentials: GeotabCredentials, val path: String) : Serializable","description":"com.geotab.mobile.sdk.models.publicModels.CredentialResult","location":"output/com.geotab.mobile.sdk.models.publicModels/-credential-result/index.html","searchKeys":["CredentialResult","data class CredentialResult(val credentials: GeotabCredentials, val path: String) : Serializable","com.geotab.mobile.sdk.models.publicModels.CredentialResult"]},{"name":"data class GeotabAuthParams(val database: String, val userName: String, val password: String)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/index.html","searchKeys":["GeotabAuthParams","data class GeotabAuthParams(val database: String, val userName: String, val password: String)","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams"]},{"name":"data class GeotabAuthRequest(val method: String, val params: GeotabAuthParams)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-request/index.html","searchKeys":["GeotabAuthRequest","data class GeotabAuthRequest(val method: String, val params: GeotabAuthParams)","com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest"]},{"name":"data class GeotabCredentials(val userName: String, val database: String, val sessionId: String) : Serializable","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/index.html","searchKeys":["GeotabCredentials","data class GeotabCredentials(val userName: String, val database: String, val sessionId: String) : Serializable","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials"]},{"name":"interface DriveSdk","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/index.html","searchKeys":["DriveSdk","interface DriveSdk","com.geotab.mobile.sdk.publicInterfaces.DriveSdk"]},{"name":"interface MyGeotabSdk","description":"com.geotab.mobile.sdk.publicInterfaces.MyGeotabSdk","location":"output/com.geotab.mobile.sdk.publicInterfaces/-my-geotab-sdk/index.html","searchKeys":["MyGeotabSdk","interface MyGeotabSdk","com.geotab.mobile.sdk.publicInterfaces.MyGeotabSdk"]},{"name":"interface SpeechEngine","description":"com.geotab.mobile.sdk.publicInterfaces.SpeechEngine","location":"output/com.geotab.mobile.sdk.publicInterfaces/-speech-engine/index.html","searchKeys":["SpeechEngine","interface SpeechEngine","com.geotab.mobile.sdk.publicInterfaces.SpeechEngine"]},{"name":"val credentials: GeotabCredentials","description":"com.geotab.mobile.sdk.models.publicModels.CredentialResult.credentials","location":"output/com.geotab.mobile.sdk.models.publicModels/-credential-result/credentials.html","searchKeys":["credentials","val credentials: GeotabCredentials","com.geotab.mobile.sdk.models.publicModels.CredentialResult.credentials"]},{"name":"val database: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.database","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/database.html","searchKeys":["database","val database: String","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.database"]},{"name":"val database: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.database","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/database.html","searchKeys":["database","val database: String","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.database"]},{"name":"val method: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.method","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-request/method.html","searchKeys":["method","val method: String","com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.method"]},{"name":"val params: GeotabAuthParams","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.params","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-request/params.html","searchKeys":["params","val params: GeotabAuthParams","com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.params"]},{"name":"val password: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.password","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/password.html","searchKeys":["password","val password: String","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.password"]},{"name":"val path: String","description":"com.geotab.mobile.sdk.models.publicModels.CredentialResult.path","location":"output/com.geotab.mobile.sdk.models.publicModels/-credential-result/path.html","searchKeys":["path","val path: String","com.geotab.mobile.sdk.models.publicModels.CredentialResult.path"]},{"name":"val result: CredentialResult?","description":"com.geotab.mobile.sdk.models.publicModels.AuthResponse.result","location":"output/com.geotab.mobile.sdk.models.publicModels/-auth-response/result.html","searchKeys":["result","val result: CredentialResult?","com.geotab.mobile.sdk.models.publicModels.AuthResponse.result"]},{"name":"val sessionId: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.sessionId","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/session-id.html","searchKeys":["sessionId","val sessionId: String","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.sessionId"]},{"name":"val userName: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.userName","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/user-name.html","searchKeys":["userName","val userName: String","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.userName"]},{"name":"val userName: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.userName","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/user-name.html","searchKeys":["userName","val userName: String","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.userName"]}]
+[{"name":"abstract fun cancelLogin()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.cancelLogin","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/cancel-login.html","searchKeys":["cancelLogin","abstract fun cancelLogin()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.cancelLogin"]},{"name":"abstract fun clearDriverActionNecessaryCallback()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearDriverActionNecessaryCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/clear-driver-action-necessary-callback.html","searchKeys":["clearDriverActionNecessaryCallback","abstract fun clearDriverActionNecessaryCallback()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearDriverActionNecessaryCallback"]},{"name":"abstract fun clearLastServerAddressUpdatedCallback()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearLastServerAddressUpdatedCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/clear-last-server-address-updated-callback.html","searchKeys":["clearLastServerAddressUpdatedCallback","abstract fun clearLastServerAddressUpdatedCallback()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearLastServerAddressUpdatedCallback"]},{"name":"abstract fun clearLoginRequiredCallback()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearLoginRequiredCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/clear-login-required-callback.html","searchKeys":["clearLoginRequiredCallback","abstract fun clearLoginRequiredCallback()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearLoginRequiredCallback"]},{"name":"abstract fun clearPageNavigationCallback()","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearPageNavigationCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/clear-page-navigation-callback.html","searchKeys":["clearPageNavigationCallback","abstract fun clearPageNavigationCallback()","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.clearPageNavigationCallback"]},{"name":"abstract fun getAllUsers(includeAllUsers: Boolean = true, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getAllUsers","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-all-users.html","searchKeys":["getAllUsers","abstract fun getAllUsers(includeAllUsers: Boolean = true, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getAllUsers"]},{"name":"abstract fun getAvailability(userName: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getAvailability","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-availability.html","searchKeys":["getAvailability","abstract fun getAvailability(userName: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getAvailability"]},{"name":"abstract fun getDeviceEvents(callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getDeviceEvents","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-device-events.html","searchKeys":["getDeviceEvents","abstract fun getDeviceEvents(callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getDeviceEvents"]},{"name":"abstract fun getHosRuleSet(userName: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getHosRuleSet","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-hos-rule-set.html","searchKeys":["getHosRuleSet","abstract fun getHosRuleSet(userName: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getHosRuleSet"]},{"name":"abstract fun getMinAvailabilityHtml(userName: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getMinAvailabilityHtml","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-min-availability-html.html","searchKeys":["getMinAvailabilityHtml","abstract fun getMinAvailabilityHtml(userName: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getMinAvailabilityHtml"]},{"name":"abstract fun getOpenCabAvailability(version: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getOpenCabAvailability","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-open-cab-availability.html","searchKeys":["getOpenCabAvailability","abstract fun getOpenCabAvailability(version: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getOpenCabAvailability"]},{"name":"abstract fun getStateDevice(callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getStateDevice","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-state-device.html","searchKeys":["getStateDevice","abstract fun getStateDevice(callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getStateDevice"]},{"name":"abstract fun getUserViolations(userName: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getUserViolations","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/get-user-violations.html","searchKeys":["getUserViolations","abstract fun getUserViolations(userName: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.getUserViolations"]},{"name":"abstract fun setCustomURLPath(path: String)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setCustomURLPath","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-custom-u-r-l-path.html","searchKeys":["setCustomURLPath","abstract fun setCustomURLPath(path: String)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setCustomURLPath"]},{"name":"abstract fun setDriveReadyListener(callback: () -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriveReadyListener","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-drive-ready-listener.html","searchKeys":["setDriveReadyListener","abstract fun setDriveReadyListener(callback: () -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriveReadyListener"]},{"name":"abstract fun setDriverActionNecessaryCallback(callback: DriverActionNecessaryCallbackType)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriverActionNecessaryCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-driver-action-necessary-callback.html","searchKeys":["setDriverActionNecessaryCallback","abstract fun setDriverActionNecessaryCallback(callback: DriverActionNecessaryCallbackType)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriverActionNecessaryCallback"]},{"name":"abstract fun setDriverSeat(driverId: String, callback: (Result, Failure>) -> Unit)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriverSeat","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-driver-seat.html","searchKeys":["setDriverSeat","abstract fun setDriverSeat(driverId: String, callback: (Result, Failure>) -> Unit)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setDriverSeat"]},{"name":"abstract fun setLastServerAddressUpdatedCallback(callback: LastServerUpdatedCallbackType)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setLastServerAddressUpdatedCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-last-server-address-updated-callback.html","searchKeys":["setLastServerAddressUpdatedCallback","abstract fun setLastServerAddressUpdatedCallback(callback: LastServerUpdatedCallbackType)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setLastServerAddressUpdatedCallback"]},{"name":"abstract fun setLoginRequiredCallback(callback: LoginRequiredCallbackType)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setLoginRequiredCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-login-required-callback.html","searchKeys":["setLoginRequiredCallback","abstract fun setLoginRequiredCallback(callback: LoginRequiredCallbackType)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setLoginRequiredCallback"]},{"name":"abstract fun setPageNavigationCallback(callback: PageNavigationCallbackType)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setPageNavigationCallback","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-page-navigation-callback.html","searchKeys":["setPageNavigationCallback","abstract fun setPageNavigationCallback(callback: PageNavigationCallbackType)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setPageNavigationCallback"]},{"name":"abstract fun setSession(credentialResult: CredentialResult, isCoDriver: Boolean = false)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setSession","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-session.html","searchKeys":["setSession","abstract fun setSession(credentialResult: CredentialResult, isCoDriver: Boolean = false)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setSession"]},{"name":"abstract fun setSpeechEngine(speechEngine: SpeechEngine)","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setSpeechEngine","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/set-speech-engine.html","searchKeys":["setSpeechEngine","abstract fun setSpeechEngine(speechEngine: SpeechEngine)","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.setSpeechEngine"]},{"name":"abstract fun shutdown()","description":"com.geotab.mobile.sdk.publicInterfaces.SpeechEngine.shutdown","location":"output/com.geotab.mobile.sdk.publicInterfaces/-speech-engine/shutdown.html","searchKeys":["shutdown","abstract fun shutdown()","com.geotab.mobile.sdk.publicInterfaces.SpeechEngine.shutdown"]},{"name":"abstract fun speak(text: String, rate: Float, language: String)","description":"com.geotab.mobile.sdk.publicInterfaces.SpeechEngine.speak","location":"output/com.geotab.mobile.sdk.publicInterfaces/-speech-engine/speak.html","searchKeys":["speak","abstract fun speak(text: String, rate: Float, language: String)","com.geotab.mobile.sdk.publicInterfaces.SpeechEngine.speak"]},{"name":"abstract val isCharging: Boolean","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.isCharging","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/is-charging.html","searchKeys":["isCharging","abstract val isCharging: Boolean","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.isCharging"]},{"name":"abstract var webAppLoadFailed: () -> Unit?","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk.webAppLoadFailed","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/web-app-load-failed.html","searchKeys":["webAppLoadFailed","abstract var webAppLoadFailed: () -> Unit?","com.geotab.mobile.sdk.publicInterfaces.DriveSdk.webAppLoadFailed"]},{"name":"abstract var webAppLoadFailed: () -> Unit?","description":"com.geotab.mobile.sdk.publicInterfaces.MyGeotabSdk.webAppLoadFailed","location":"output/com.geotab.mobile.sdk.publicInterfaces/-my-geotab-sdk/web-app-load-failed.html","searchKeys":["webAppLoadFailed","abstract var webAppLoadFailed: () -> Unit?","com.geotab.mobile.sdk.publicInterfaces.MyGeotabSdk.webAppLoadFailed"]},{"name":"constructor(credentials: GeotabCredentials, path: String)","description":"com.geotab.mobile.sdk.models.publicModels.CredentialResult.CredentialResult","location":"output/com.geotab.mobile.sdk.models.publicModels/-credential-result/-credential-result.html","searchKeys":["CredentialResult","constructor(credentials: GeotabCredentials, path: String)","com.geotab.mobile.sdk.models.publicModels.CredentialResult.CredentialResult"]},{"name":"constructor(database: String, userName: String, password: String)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.GeotabAuthParams","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/-geotab-auth-params.html","searchKeys":["GeotabAuthParams","constructor(database: String, userName: String, password: String)","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.GeotabAuthParams"]},{"name":"constructor(method: String, params: GeotabAuthParams)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.GeotabAuthRequest","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-request/-geotab-auth-request.html","searchKeys":["GeotabAuthRequest","constructor(method: String, params: GeotabAuthParams)","com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.GeotabAuthRequest"]},{"name":"constructor(result: CredentialResult?)","description":"com.geotab.mobile.sdk.models.publicModels.AuthResponse.AuthResponse","location":"output/com.geotab.mobile.sdk.models.publicModels/-auth-response/-auth-response.html","searchKeys":["AuthResponse","constructor(result: CredentialResult?)","com.geotab.mobile.sdk.models.publicModels.AuthResponse.AuthResponse"]},{"name":"constructor(userName: String, database: String, sessionId: String)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.GeotabCredentials","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/-geotab-credentials.html","searchKeys":["GeotabCredentials","constructor(userName: String, database: String, sessionId: String)","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.GeotabCredentials"]},{"name":"data class AuthResponse(val result: CredentialResult?)","description":"com.geotab.mobile.sdk.models.publicModels.AuthResponse","location":"output/com.geotab.mobile.sdk.models.publicModels/-auth-response/index.html","searchKeys":["AuthResponse","data class AuthResponse(val result: CredentialResult?)","com.geotab.mobile.sdk.models.publicModels.AuthResponse"]},{"name":"data class CredentialResult(val credentials: GeotabCredentials, val path: String) : Serializable","description":"com.geotab.mobile.sdk.models.publicModels.CredentialResult","location":"output/com.geotab.mobile.sdk.models.publicModels/-credential-result/index.html","searchKeys":["CredentialResult","data class CredentialResult(val credentials: GeotabCredentials, val path: String) : Serializable","com.geotab.mobile.sdk.models.publicModels.CredentialResult"]},{"name":"data class GeotabAuthParams(val database: String, val userName: String, val password: String)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/index.html","searchKeys":["GeotabAuthParams","data class GeotabAuthParams(val database: String, val userName: String, val password: String)","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams"]},{"name":"data class GeotabAuthRequest(val method: String, val params: GeotabAuthParams)","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-request/index.html","searchKeys":["GeotabAuthRequest","data class GeotabAuthRequest(val method: String, val params: GeotabAuthParams)","com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest"]},{"name":"data class GeotabCredentials(val userName: String, val database: String, val sessionId: String) : Serializable","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/index.html","searchKeys":["GeotabCredentials","data class GeotabCredentials(val userName: String, val database: String, val sessionId: String) : Serializable","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials"]},{"name":"interface DriveSdk","description":"com.geotab.mobile.sdk.publicInterfaces.DriveSdk","location":"output/com.geotab.mobile.sdk.publicInterfaces/-drive-sdk/index.html","searchKeys":["DriveSdk","interface DriveSdk","com.geotab.mobile.sdk.publicInterfaces.DriveSdk"]},{"name":"interface MyGeotabSdk","description":"com.geotab.mobile.sdk.publicInterfaces.MyGeotabSdk","location":"output/com.geotab.mobile.sdk.publicInterfaces/-my-geotab-sdk/index.html","searchKeys":["MyGeotabSdk","interface MyGeotabSdk","com.geotab.mobile.sdk.publicInterfaces.MyGeotabSdk"]},{"name":"interface SpeechEngine","description":"com.geotab.mobile.sdk.publicInterfaces.SpeechEngine","location":"output/com.geotab.mobile.sdk.publicInterfaces/-speech-engine/index.html","searchKeys":["SpeechEngine","interface SpeechEngine","com.geotab.mobile.sdk.publicInterfaces.SpeechEngine"]},{"name":"val credentials: GeotabCredentials","description":"com.geotab.mobile.sdk.models.publicModels.CredentialResult.credentials","location":"output/com.geotab.mobile.sdk.models.publicModels/-credential-result/credentials.html","searchKeys":["credentials","val credentials: GeotabCredentials","com.geotab.mobile.sdk.models.publicModels.CredentialResult.credentials"]},{"name":"val database: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.database","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/database.html","searchKeys":["database","val database: String","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.database"]},{"name":"val database: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.database","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/database.html","searchKeys":["database","val database: String","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.database"]},{"name":"val method: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.method","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-request/method.html","searchKeys":["method","val method: String","com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.method"]},{"name":"val params: GeotabAuthParams","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.params","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-request/params.html","searchKeys":["params","val params: GeotabAuthParams","com.geotab.mobile.sdk.models.publicModels.GeotabAuthRequest.params"]},{"name":"val password: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.password","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/password.html","searchKeys":["password","val password: String","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.password"]},{"name":"val path: String","description":"com.geotab.mobile.sdk.models.publicModels.CredentialResult.path","location":"output/com.geotab.mobile.sdk.models.publicModels/-credential-result/path.html","searchKeys":["path","val path: String","com.geotab.mobile.sdk.models.publicModels.CredentialResult.path"]},{"name":"val result: CredentialResult?","description":"com.geotab.mobile.sdk.models.publicModels.AuthResponse.result","location":"output/com.geotab.mobile.sdk.models.publicModels/-auth-response/result.html","searchKeys":["result","val result: CredentialResult?","com.geotab.mobile.sdk.models.publicModels.AuthResponse.result"]},{"name":"val sessionId: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.sessionId","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/session-id.html","searchKeys":["sessionId","val sessionId: String","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.sessionId"]},{"name":"val userName: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.userName","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-auth-params/user-name.html","searchKeys":["userName","val userName: String","com.geotab.mobile.sdk.models.publicModels.GeotabAuthParams.userName"]},{"name":"val userName: String","description":"com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.userName","location":"output/com.geotab.mobile.sdk.models.publicModels/-geotab-credentials/user-name.html","searchKeys":["userName","val userName: String","com.geotab.mobile.sdk.models.publicModels.GeotabCredentials.userName"]}]
diff --git a/geotabdrivesdk/build.gradle.kts b/geotabdrivesdk/build.gradle.kts
index e84f58c..1485ac8 100644
--- a/geotabdrivesdk/build.gradle.kts
+++ b/geotabdrivesdk/build.gradle.kts
@@ -1,6 +1,6 @@
import java.util.Properties
-val versionName = "6.7.0_72497"
+val versionName = "6.7.0_72511"
plugins {
id("com.android.library")
diff --git a/geotabdrivesdk/src/main/assets/ModuleFunction.GetMinAvailabilityHtmlFunction.Api.js b/geotabdrivesdk/src/main/assets/ModuleFunction.GetMinAvailabilityHtmlFunction.Api.js
new file mode 100644
index 0000000..2b910e7
--- /dev/null
+++ b/geotabdrivesdk/src/main/assets/ModuleFunction.GetMinAvailabilityHtmlFunction.Api.js
@@ -0,0 +1,23 @@
+(async (callerId) => {
+ try {
+ const userName = '{{userName}}';
+
+ if (userName == null || userName === '') {
+ throw new Error('No users');
+ }
+
+ const api = window.webViewLayer.getApi(userName);
+ const availabilityHtml = await api.mobile.user.getMinAvailabilityHtml();
+
+ window.geotabModules.{{moduleName}}.{{functionName}}(
+ { callerId, result: availabilityHtml },
+ () => {}
+ );
+ } catch (err) {
+ window.geotabModules.{{moduleName}}.{{functionName}}(
+ { callerId, error: err.message },
+ () => {}
+ );
+ throw err;
+ }
+})('{{callerId}}');
diff --git a/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/DriveFragment.kt b/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/DriveFragment.kt
index 12b4370..00ed0bd 100644
--- a/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/DriveFragment.kt
+++ b/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/DriveFragment.kt
@@ -62,6 +62,7 @@ import com.geotab.mobile.sdk.module.user.DriverActionNecessaryCallbackType
import com.geotab.mobile.sdk.module.user.GetAllUsersFunction
import com.geotab.mobile.sdk.module.user.GetAvailabilityFunction
import com.geotab.mobile.sdk.module.user.GetHosRuleSetFunction
+import com.geotab.mobile.sdk.module.user.GetMinAvailabilityHtmlFunction
import com.geotab.mobile.sdk.module.user.GetOpenCabAvailabilityFunction
import com.geotab.mobile.sdk.module.user.GetViolationsFunction
import com.geotab.mobile.sdk.module.user.LoginRequiredCallbackType
@@ -585,6 +586,16 @@ class DriveFragment :
}
}
+ override fun getMinAvailabilityHtml(
+ userName: String,
+ callback: (Result, Failure>) -> Unit
+ ) {
+ (findModuleFunction(UserModule.MODULE_NAME, "getMinAvailabilityHtml") as? GetMinAvailabilityHtmlFunction)?.let {
+ it.userName = userName
+ functionCall(callback, it)
+ }
+ }
+
override fun getOpenCabAvailability(
version: String,
callback: (Result, Failure>) -> Unit
diff --git a/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/module/user/GetMinAvailabilityHtmlFunction.kt b/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/module/user/GetMinAvailabilityHtmlFunction.kt
new file mode 100644
index 0000000..ec5e237
--- /dev/null
+++ b/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/module/user/GetMinAvailabilityHtmlFunction.kt
@@ -0,0 +1,48 @@
+package com.geotab.mobile.sdk.module.user
+
+import android.content.Context
+import com.geotab.mobile.sdk.Error
+import com.geotab.mobile.sdk.models.enums.GeotabDriveError
+import com.geotab.mobile.sdk.module.BaseCallbackFunction
+import com.geotab.mobile.sdk.module.Failure
+import com.geotab.mobile.sdk.module.ModuleFunction
+import com.geotab.mobile.sdk.module.Result
+import com.geotab.mobile.sdk.module.Success
+
+class GetMinAvailabilityHtmlFunction(
+ override val name: String = "getMinAvailabilityHtml",
+ override val module: UserModule
+) : ModuleFunction,
+ BaseCallbackFunction(name) {
+
+ var userName = ""
+
+ companion object {
+ const val TEMPLATE_FILE_NAME = "ModuleFunction.GetMinAvailabilityHtmlFunction.Api.js"
+ }
+
+ override fun handleJavascriptCall(
+ jsonString: String?,
+ jsCallback: (Result, Failure>) -> Unit
+ ) {
+ val response = this.transformOrInvalidate(jsonString, jsCallback) ?: return
+ val sdkCallback = this.getSdkCallbackOrInvalidate(response, jsCallback) ?: return
+ if (!response.result.isNullOrEmpty()) {
+ sdkCallback(Success(response.result))
+ } else {
+ jsCallback(Failure(Error(GeotabDriveError.JS_ISSUED_ERROR)))
+ callbacks.remove(response.callerId)
+ return
+ }
+
+ callbacks.remove(response.callerId)
+ jsCallback(Success("undefined"))
+ }
+
+ override fun getJavascript(context: Context, callerId: String): String {
+ val scriptParameter: HashMap =
+ hashMapOf("moduleName" to module.name, "functionName" to name, "userName" to userName)
+ scriptParameter.putAll(hashMapOf("callerId" to callerId))
+ return module.getScriptFromTemplate(context, TEMPLATE_FILE_NAME, scriptParameter)
+ }
+}
diff --git a/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/module/user/UserModule.kt b/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/module/user/UserModule.kt
index 0554e84..50746f9 100644
--- a/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/module/user/UserModule.kt
+++ b/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/module/user/UserModule.kt
@@ -18,6 +18,7 @@ class UserModule : Module(MODULE_NAME) {
functions.add(GetViolationsFunction(module = this))
functions.add(SetDriverSeatFunction(module = this))
functions.add(GetAvailabilityFunction(module = this))
+ functions.add(GetMinAvailabilityHtmlFunction(module = this))
functions.add(GetHosRuleSetFunction(module = this))
functions.add(DriverActionNecessaryFunction(module = this))
functions.add(PageNavigationFunction(module = this))
diff --git a/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/publicInterfaces/DriveSdk.kt b/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/publicInterfaces/DriveSdk.kt
index 6502dc2..0e8af0c 100644
--- a/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/publicInterfaces/DriveSdk.kt
+++ b/geotabdrivesdk/src/main/java/com/geotab/mobile/sdk/publicInterfaces/DriveSdk.kt
@@ -43,6 +43,12 @@ interface DriveSdk {
*/
fun getAvailability(userName: String, callback: (Result, Failure>) -> Unit)
+ /**
+ * Returns the active driver's Minimum availability as html
+ * @return Html string with the minimum availability
+ */
+ fun getMinAvailabilityHtml(userName: String, callback: (Result, Failure>) -> Unit)
+
/**
* Returns the active driver's availability hours for OpenCab
* @return Json string with the duty status availability