One feature's use and outcomes by organization
curl --request GET \
--url https://api.openworklabs.com/v1/admin/feature-usage/{key} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.openworklabs.com/v1/admin/feature-usage/{key}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.openworklabs.com/v1/admin/feature-usage/{key}', 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.openworklabs.com/v1/admin/feature-usage/{key}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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.openworklabs.com/v1/admin/feature-usage/{key}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-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.openworklabs.com/v1/admin/feature-usage/{key}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/admin/feature-usage/{key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"range": "7d",
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"organizations": 0,
"feature": {
"key": "desktopUpdateDownloadWindow",
"organizationsOn": 0,
"membersUsing": 0,
"lastUsedAt": "2023-11-07T05:31:56Z",
"health": {
"status": "not_used",
"count": 0
},
"outcomes": {
"runs": 0,
"succeeded": 0,
"failed": 0,
"skipped": 0,
"delivered": 0,
"limited": 0,
"lastRunAt": "2023-11-07T05:31:56Z",
"unit": "run",
"days": [
{
"day": "<string>",
"runs": 0,
"failed": 0
}
],
"coverage": {
"from": "2023-11-07T05:31:56Z",
"counts": "all"
}
},
"reasons": [
{
"reason": "<string>",
"outcome": "failed",
"count": 0
}
],
"byOrganization": [
{
"organizationId": "<string>",
"name": "<string>",
"enabled": true,
"membersUsing": 0,
"lastUsedAt": "2023-11-07T05:31:56Z",
"outcomes": {
"runs": 0,
"succeeded": 0,
"failed": 0,
"skipped": 0,
"delivered": 0,
"limited": 0,
"lastRunAt": "2023-11-07T05:31:56Z"
}
}
]
},
"generatedAt": "2023-11-07T05:31:56Z"
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Admin
One feature's use and outcomes by organization
The same counts as GET /v1/admin/feature-usage for one feature, plus failed and skipped runs by reason code and one row per organization that used it, has outcomes in the range or overrides it: its name, whether the feature is on for it now, members using it, last use and its outcome totals. At most 200 organizations, busiest first. Counts only. Platform administrators only.
GET
/
v1
/
admin
/
feature-usage
/
{key}
One feature's use and outcomes by organization
curl --request GET \
--url https://api.openworklabs.com/v1/admin/feature-usage/{key} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.openworklabs.com/v1/admin/feature-usage/{key}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.openworklabs.com/v1/admin/feature-usage/{key}', 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.openworklabs.com/v1/admin/feature-usage/{key}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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.openworklabs.com/v1/admin/feature-usage/{key}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-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.openworklabs.com/v1/admin/feature-usage/{key}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/admin/feature-usage/{key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"range": "7d",
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"organizations": 0,
"feature": {
"key": "desktopUpdateDownloadWindow",
"organizationsOn": 0,
"membersUsing": 0,
"lastUsedAt": "2023-11-07T05:31:56Z",
"health": {
"status": "not_used",
"count": 0
},
"outcomes": {
"runs": 0,
"succeeded": 0,
"failed": 0,
"skipped": 0,
"delivered": 0,
"limited": 0,
"lastRunAt": "2023-11-07T05:31:56Z",
"unit": "run",
"days": [
{
"day": "<string>",
"runs": 0,
"failed": 0
}
],
"coverage": {
"from": "2023-11-07T05:31:56Z",
"counts": "all"
}
},
"reasons": [
{
"reason": "<string>",
"outcome": "failed",
"count": 0
}
],
"byOrganization": [
{
"organizationId": "<string>",
"name": "<string>",
"enabled": true,
"membersUsing": 0,
"lastUsedAt": "2023-11-07T05:31:56Z",
"outcomes": {
"runs": 0,
"succeeded": 0,
"failed": 0,
"skipped": 0,
"delivered": 0,
"limited": 0,
"lastRunAt": "2023-11-07T05:31:56Z"
}
}
]
},
"generatedAt": "2023-11-07T05:31:56Z"
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
denApiKeybearerAuth
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
Path Parameters
Query Parameters
Available options:
7d, 30d Response
Feature outcomes returned.
Available options:
7d, 30d Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Required range:
-9007199254740991 <= x <= 9007199254740991Show child attributes
Show child attributes
Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Was this page helpful?