curl --request GET \
--url https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events \
--header 'OW-KEY: <api-key>' \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events"
headers = {
"X-API-KEY": "<api-key>",
"OW-KEY": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>', 'OW-KEY': '<api-key>'}};
fetch('https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"OW-KEY: <api-key>",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("OW-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events")
.header("X-API-KEY", "<api-key>")
.header("OW-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
request["OW-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"type": "<string>",
"data": [
{
"scheduleId": 123,
"supplierEmail": "<string>",
"eventType": "began_trip",
"supplierFacilityId": 123,
"isDeleted": true,
"id": 123,
"locationId": 123,
"workOrderId": 123,
"note": "<string>",
"serviceCallId": 123,
"deletedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z"
}
],
"count": 123,
"status": "ok"
}{
"message": "<string>",
"type": "<string>",
"status": "error",
"traceId": "<string>"
}{
"message": "<string>",
"type": "<string>",
"status": "error",
"traceId": "<string>"
}{
"message": "<string>",
"type": "<string>",
"status": "error",
"traceId": "<string>"
}List WrenchMode events (work logs)
Read-only external flavour of the internal WrenchMode work-log feed, tenant-scoped to the API key’s supplier. A present-but-memberless CSV filter (e.g. eventTypes=,) is rejected as malformed rather than ignored.
curl --request GET \
--url https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events \
--header 'OW-KEY: <api-key>' \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events"
headers = {
"X-API-KEY": "<api-key>",
"OW-KEY": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>', 'OW-KEY': '<api-key>'}};
fetch('https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"OW-KEY: <api-key>",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("OW-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events")
.header("X-API-KEY", "<api-key>")
.header("OW-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useopenwrench.com/api/external/v1/supplier/wrench_mode/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
request["OW-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"type": "<string>",
"data": [
{
"scheduleId": 123,
"supplierEmail": "<string>",
"eventType": "began_trip",
"supplierFacilityId": 123,
"isDeleted": true,
"id": 123,
"locationId": 123,
"workOrderId": 123,
"note": "<string>",
"serviceCallId": 123,
"deletedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z"
}
],
"count": 123,
"status": "ok"
}{
"message": "<string>",
"type": "<string>",
"status": "error",
"traceId": "<string>"
}{
"message": "<string>",
"type": "<string>",
"status": "error",
"traceId": "<string>"
}{
"message": "<string>",
"type": "<string>",
"status": "error",
"traceId": "<string>"
}Authorizations
OpenWrench shared secret. Required on every request alongside X-API-KEY; issued together with your API key.
Query Parameters
Filter to one WrenchMode schedule. When present, pagination is DISABLED and the schedule's full event timeline is returned.
Filter by work order id.
Filter by service call id.
Filter by location id.
Comma-separated list of event types. Valid values: began_trip, trip_paused, trip_resumed, arrived, trip_cancelled, drive_note, started_work, ended_work, location_started, location_paused, location_resumed, location_ended. Unknown values are rejected with 400.
Comma-separated list of technician emails, matched case-insensitively. (Only the plural key is exposed.)
Window start, yyyy-MM-dd. Malformed dates are rejected with 400.
Window end, yyyy-MM-dd. Malformed dates are rejected with 400.
Number of records to skip.
x >= 0Page size. Default 10, maximum 25.
Column name to sort by.
Sort direction.
asc, desc Response
Successful response
Entity type label, e.g. "WrenchModeEvent". Endpoints that derive it via Scala reflection (most generic list/get endpoints) may return the fully qualified server class name instead (e.g. "models.workorder.WorkOrder"); treat this field as informational.
Show child attributes
Show child attributes
Total number of matching records (across all pages)
"ok" on success
ok