CustomerAppUsage
Aufrufe von Ansichten der Mitglieder-App zaehlen (anonym)
POST/api/cp/app_usage/events
Die Antwort ist immer 204, auch wenn die Statistik aus ist oder der Batch verworfen wurde - die App soll daraus nichts ableiten muessen. Eine mitgeschickte Sitzung wird nicht gelesen.
Request body application/json
sessionstringZufaellige UUID v4, nur im Speicher der App
platformstringapp_versionstringlogged_inbooleanviewsarray<string>
Responses
204Angenommen
Request
curl --request POST \
--url https://your-instance.iw-erp.de/api/cp/app_usage/events \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"session": "3f2c1a9e-5b7d-4c1e-9a2b-1c3d5e7f9a0b",
"platform": "web",
"app_version": "26.10.1",
"logged_in": false,
"views": [
"HomeOverviewViewRoute",
"EventsViewRoute"
]
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
session: '3f2c1a9e-5b7d-4c1e-9a2b-1c3d5e7f9a0b',
platform: 'web',
app_version: '26.10.1',
logged_in: false,
views: ['HomeOverviewViewRoute', 'EventsViewRoute']
})
};
fetch('https://your-instance.iw-erp.de/api/cp/app_usage/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/cp/app_usage/events"
payload = {
"session": "3f2c1a9e-5b7d-4c1e-9a2b-1c3d5e7f9a0b",
"platform": "web",
"app_version": "26.10.1",
"logged_in": False,
"views": ["HomeOverviewViewRoute", "EventsViewRoute"]
}
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/cp/app_usage/events', [
'body' => '{"session":"3f2c1a9e-5b7d-4c1e-9a2b-1c3d5e7f9a0b","platform":"web","app_version":"26.10.1","logged_in":false,"views":["HomeOverviewViewRoute","EventsViewRoute"]}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/cp/app_usage/events"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"session\":\"3f2c1a9e-5b7d-4c1e-9a2b-1c3d5e7f9a0b\",\"platform\":\"web\",\"app_version\":\"26.10.1\",\"logged_in\":false,\"views\":[\"HomeOverviewViewRoute\",\"EventsViewRoute\"]}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"session\":\"3f2c1a9e-5b7d-4c1e-9a2b-1c3d5e7f9a0b\",\"platform\":\"web\",\"app_version\":\"26.10.1\",\"logged_in\":false,\"views\":[\"HomeOverviewViewRoute\",\"EventsViewRoute\"]}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/cp/app_usage/events")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/cp/app_usage/events"
payload := strings.NewReader("{\"session\":\"3f2c1a9e-5b7d-4c1e-9a2b-1c3d5e7f9a0b\",\"platform\":\"web\",\"app_version\":\"26.10.1\",\"logged_in\":false,\"views\":[\"HomeOverviewViewRoute\",\"EventsViewRoute\"]}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/customer_app_usage_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await CustomerAppUsageController.postEvents(session: '…', views: ['42'], platform: '…');
if (result.success) {
print(result.data);
}Widerspruch der eingeloggten Person gegen die anonyme Nutzungsstatistik setzen oder aufheben
PUT/api/cp/app_usage/opt_out
Gilt auf allen Geraeten der Person: die App liest ihn aus den StaticData
(app_usage_opt_out) und schickt dann nichts mehr.
Request body application/json
opt_outboolean
Responses
200Der neue Standobject
Show fields (1)
opt_outboolean
Request
curl --request PUT \
--url https://your-instance.iw-erp.de/api/cp/app_usage/opt_out \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '{"opt_out":true}'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({opt_out: true})
};
fetch('https://your-instance.iw-erp.de/api/cp/app_usage/opt_out', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/cp/app_usage/opt_out"
payload = { "opt_out": True }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://your-instance.iw-erp.de/api/cp/app_usage/opt_out', [
'body' => '{"opt_out":true}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/cp/app_usage/opt_out"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"opt_out\":true}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"opt_out\":true}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/cp/app_usage/opt_out")
.put(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/cp/app_usage/opt_out"
payload := strings.NewReader("{\"opt_out\":true}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/customer_app_usage_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await CustomerAppUsageController.setOptOut(true);
if (result.success) {
print(result.data);
}Response 200 application/json
{
"opt_out": true
}Widerspruch der eingeloggten Person gegen die anonyme Nutzungsstatistik setzen oder aufheben
PATCH/api/cp/app_usage/opt_out
Gilt auf allen Geraeten der Person: die App liest ihn aus den StaticData
(app_usage_opt_out) und schickt dann nichts mehr.
Request body application/json
opt_outboolean
Responses
200Der neue Standobject
Show fields (1)
opt_outboolean
Request
curl --request PATCH \
--url https://your-instance.iw-erp.de/api/cp/app_usage/opt_out \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '{"opt_out":true}'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({opt_out: true})
};
fetch('https://your-instance.iw-erp.de/api/cp/app_usage/opt_out', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/cp/app_usage/opt_out"
payload = { "opt_out": True }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://your-instance.iw-erp.de/api/cp/app_usage/opt_out', [
'body' => '{"opt_out":true}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/cp/app_usage/opt_out"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"opt_out\":true}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"opt_out\":true}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/cp/app_usage/opt_out")
.patch(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/cp/app_usage/opt_out"
payload := strings.NewReader("{\"opt_out\":true}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with package:http (no controller in the iw_erp_api package)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.patch(
Uri.parse('https://your-instance.iw-erp.de/api/cp/app_usage/opt_out'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"opt_out": true
}),
);
print(response.body);Response 200 application/json
{
"opt_out": true
}