JWT ApiAccess
Anmeldung / JWT ApiAccess
Legt als Super-Admin ein neues MqttToken an
GET/api/base/api_token/create_mqtt_jwt
Query-Parameter
allowedPathPflichtstring | erlaubter Pfad |
validSecondsnumber | Anzahl Sekunden in der Zukunft. 31536000 |
Antworten
200Legt als Super-Admin ein neues MqttToken anSession
Felder anzeigen (15)
idintegerPrimärschlüssel der Sitzung. Interne ID.
sessionidstringID der Sitzung.
selectedcustomerCustomerProfileIn der Sitzung ausgewähltes Kundenprofil.
Felder anzeigen (6)
idintegerPrimärschlüssel des Kundenprofils. Interne ID.
slackchannelstringSlack-Kanal des Kundenprofils.
displaynamestringAnzeigename des Kundenprofils.
deletedbooleanOb das Kundenprofil gelöscht ist.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Zeitpunkt, zu dem die Sitzung begonnen hat.
refreshed_startstring (date-time)Zeitpunkt, zu dem die Sitzung zuletzt erneuert wurde.
ipstringIP-Adresse des Clients.
validbooleanOb die Sitzung gültig ist.
is_api_keybooleanOb die Sitzung mit einem API-Schlüssel erstellt wurde.
is_dgbooleanOb die Sitzung für den Kontext der DG (Mitgliedsorganisation) gilt.
missing2fabooleanOb die Zwei-Faktor-Authentifizierung noch fehlt.
start_in_vpnbooleanOb die Sitzung in einem VPN gestartet wurde.
auth_by_credentialsbooleanOb die Sitzung mit Benutzername und Passwort authentifiziert wurde.
auth_by_googlebooleanOb die Sitzung mit Google authentifiziert wurde.
auth_by_microsoftbooleanOb die Sitzung mit Microsoft authentifiziert wurde.
auth_by_cloudflarebooleanOb die Sitzung mit Cloudflare Access authentifiziert wurde.
curl --request GET \
--url 'https://eure-instanz.iw-erp.de/api/base/api_token/create_mqtt_jwt?allowedPath=string' \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/base/api_token/create_mqtt_jwt?allowedPath=string', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/base/api_token/create_mqtt_jwt?allowedPath=string"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/base/api_token/create_mqtt_jwt?allowedPath=string', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/base/api_token/create_mqtt_jwt?allowedPath=string"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/base/api_token/create_mqtt_jwt?allowedPath=string")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/base/api_token/create_mqtt_jwt?allowedPath=string"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/api_access_token_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ApiAccessTokenController.createMqttJwtAction();
if (result.success) {
print(result.data);
}{
"id": 42,
"sessionid": "string",
"selectedcustomer": {
"id": 42,
"slackchannel": "string",
"displayname": "string",
"deleted": true,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"start": "2026-10-15T09:30:00+02:00",
"refreshed_start": "2026-10-15T09:30:00+02:00",
"ip": "string",
"valid": true,
"is_api_key": true,
"is_dg": true,
"missing2fa": true
}Legt ein neues JWT-Anmeldetoken an
GET/api/base/api_token/create_jwt
Query-Parameter
scopesstring | kommagetrennte Liste von Scopes |
allowedPathstring | erlaubter Pfad |
allowedMethodstring | erlaubter Pfad |
validSecondsnumber | Anzahl Sekunden in der Zukunft. 86400 |
maxUserAccessTypenumber | maximaler Benutzer-Zugriffstyp, der dem JWT hinzugefügt wird. 2 = schreiben, 1 = bearbeiten, 0 = lesen |
extraShortstring | den Algorithmus-Teil des JWT durch den Standardwert ersetzen, um 32 Zeichen zu sparen. true / false |
Antworten
200Legt ein neues JWT-Anmeldetoken anSession
Felder anzeigen (15)
idintegerPrimärschlüssel der Sitzung. Interne ID.
sessionidstringID der Sitzung.
selectedcustomerCustomerProfileIn der Sitzung ausgewähltes Kundenprofil.
Felder anzeigen (6)
idintegerPrimärschlüssel des Kundenprofils. Interne ID.
slackchannelstringSlack-Kanal des Kundenprofils.
displaynamestringAnzeigename des Kundenprofils.
deletedbooleanOb das Kundenprofil gelöscht ist.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
startstring (date-time)Zeitpunkt, zu dem die Sitzung begonnen hat.
refreshed_startstring (date-time)Zeitpunkt, zu dem die Sitzung zuletzt erneuert wurde.
ipstringIP-Adresse des Clients.
validbooleanOb die Sitzung gültig ist.
is_api_keybooleanOb die Sitzung mit einem API-Schlüssel erstellt wurde.
is_dgbooleanOb die Sitzung für den Kontext der DG (Mitgliedsorganisation) gilt.
missing2fabooleanOb die Zwei-Faktor-Authentifizierung noch fehlt.
start_in_vpnbooleanOb die Sitzung in einem VPN gestartet wurde.
auth_by_credentialsbooleanOb die Sitzung mit Benutzername und Passwort authentifiziert wurde.
auth_by_googlebooleanOb die Sitzung mit Google authentifiziert wurde.
auth_by_microsoftbooleanOb die Sitzung mit Microsoft authentifiziert wurde.
auth_by_cloudflarebooleanOb die Sitzung mit Cloudflare Access authentifiziert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/base/api_token/create_jwt \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/base/api_token/create_jwt', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/base/api_token/create_jwt"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/base/api_token/create_jwt', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/base/api_token/create_jwt"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/base/api_token/create_jwt")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/base/api_token/create_jwt"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/api_access_token_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ApiAccessTokenController.createJwtAction();
if (result.success) {
print(result.data);
}{
"id": 42,
"sessionid": "string",
"selectedcustomer": {
"id": 42,
"slackchannel": "string",
"displayname": "string",
"deleted": true,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"start": "2026-10-15T09:30:00+02:00",
"refreshed_start": "2026-10-15T09:30:00+02:00",
"ip": "string",
"valid": true,
"is_api_key": true,
"is_dg": true,
"missing2fa": true
}Liefert einen einzelnen ApiAccessToken-Eintrag.
GET/api/base/api_access_token/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200Gibt ein einzelnes ApiAccessToken-Objekt zurück.ApiAccessToken
Felder anzeigen (18)
idintegerPrimärschlüssel des API-Zugriffstokens. Interne ID.
allow_super_adminbooleanDer Token darf Super-Admin-Rechte nutzen. Nur gesetzt, wenn ein Super-Admin den Token erstellt und allowSuperAdmin=true anfordert.
allow_adminbooleanDer Token darf Admin-Rechte nutzen.
allow_userbooleanDer Token darf reguläre Benutzerrechte nutzen.
is_dgbooleanSitzungskennzeichen, übernommen aus der Sitzung, die den Token erstellt hat.
tokenstringKurzer Zugriffstoken. Wird beim Erstellen des Tokens zurückgegeben.
allowed_pathstringPfad, den der Token aufrufen darf. Beschränkt den Token auf API-Routen, die mit diesem Pfad beginnen.
allowed_methodsstringHTTP-Methoden, die der Token nutzen darf, zum Beispiel GET oder POST.
rwe_scopestringLese-, Schreib- und Bearbeiten-Scopes, die der Token nutzen darf.
r_scopestringLese-Scopes, die der Token nutzen darf.
e_scopestringBearbeiten-Scopes, die der Token nutzen darf.
w_scopestringSchreib-Scopes, die der Token nutzen darf.
scopesobjectListe der Scopes, die der Token nutzen darf.
token_versionstringVersion des Token-Formats. Wird verwendet, um alte Tokens ungültig zu machen.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
namestringName der Einheit.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/base/api_access_token/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/base/api_access_token/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/base/api_access_token/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/base/api_access_token/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/base/api_access_token/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/base/api_access_token/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/base/api_access_token/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/api_access_token_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ApiAccessTokenController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"name": "Beispiel",
"allow_super_admin": true,
"allow_admin": true,
"allow_user": true,
"is_dg": true,
"token": "string",
"allowed_path": "string",
"allowed_methods": "string",
"rwe_scope": "string"
}Löscht einen einzelnen ApiAccessToken-Eintrag.
DELETE/api/base/api_access_token/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200Einzelnes ApiAccessToken löschenApiAccessToken
Felder anzeigen (18)
idintegerPrimärschlüssel des API-Zugriffstokens. Interne ID.
allow_super_adminbooleanDer Token darf Super-Admin-Rechte nutzen. Nur gesetzt, wenn ein Super-Admin den Token erstellt und allowSuperAdmin=true anfordert.
allow_adminbooleanDer Token darf Admin-Rechte nutzen.
allow_userbooleanDer Token darf reguläre Benutzerrechte nutzen.
is_dgbooleanSitzungskennzeichen, übernommen aus der Sitzung, die den Token erstellt hat.
tokenstringKurzer Zugriffstoken. Wird beim Erstellen des Tokens zurückgegeben.
allowed_pathstringPfad, den der Token aufrufen darf. Beschränkt den Token auf API-Routen, die mit diesem Pfad beginnen.
allowed_methodsstringHTTP-Methoden, die der Token nutzen darf, zum Beispiel GET oder POST.
rwe_scopestringLese-, Schreib- und Bearbeiten-Scopes, die der Token nutzen darf.
r_scopestringLese-Scopes, die der Token nutzen darf.
e_scopestringBearbeiten-Scopes, die der Token nutzen darf.
w_scopestringSchreib-Scopes, die der Token nutzen darf.
scopesobjectListe der Scopes, die der Token nutzen darf.
token_versionstringVersion des Token-Formats. Wird verwendet, um alte Tokens ungültig zu machen.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
namestringName der Einheit.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
curl --request DELETE \
--url https://eure-instanz.iw-erp.de/api/base/api_access_token/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/base/api_access_token/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/base/api_access_token/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.delete(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://eure-instanz.iw-erp.de/api/base/api_access_token/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/base/api_access_token/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/base/api_access_token/42")
.delete(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/base/api_access_token/42"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/api_access_token_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ApiAccessTokenController.delete('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"name": "Beispiel",
"allow_super_admin": true,
"allow_admin": true,
"allow_user": true,
"is_dg": true,
"token": "string",
"allowed_path": "string",
"allowed_methods": "string",
"rwe_scope": "string"
}Liefert eine Liste der eigenen ApiAccessToken-Objekte.
GET/api/base/api_access_token
Query-Parameter
searchStringstring | Text, nach dem in der Liste gesucht wird |
orderFieldNamestring | Name des Bestellfelds |
orderFieldSortstring | SortiermodusErlaubt: DESCASC |
pageinteger | Seite der Liste |
pageSizeinteger | Anzahl der Einträge je Seite |
withMaxPageNumberstring | gibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist |
Antworten
200Liefert eine Liste der eigenen ApiAccessToken-Objekte.array<ApiAccessToken>
Felder anzeigen (18)
idintegerPrimärschlüssel des API-Zugriffstokens. Interne ID.
allow_super_adminbooleanDer Token darf Super-Admin-Rechte nutzen. Nur gesetzt, wenn ein Super-Admin den Token erstellt und allowSuperAdmin=true anfordert.
allow_adminbooleanDer Token darf Admin-Rechte nutzen.
allow_userbooleanDer Token darf reguläre Benutzerrechte nutzen.
is_dgbooleanSitzungskennzeichen, übernommen aus der Sitzung, die den Token erstellt hat.
tokenstringKurzer Zugriffstoken. Wird beim Erstellen des Tokens zurückgegeben.
allowed_pathstringPfad, den der Token aufrufen darf. Beschränkt den Token auf API-Routen, die mit diesem Pfad beginnen.
allowed_methodsstringHTTP-Methoden, die der Token nutzen darf, zum Beispiel GET oder POST.
rwe_scopestringLese-, Schreib- und Bearbeiten-Scopes, die der Token nutzen darf.
r_scopestringLese-Scopes, die der Token nutzen darf.
e_scopestringBearbeiten-Scopes, die der Token nutzen darf.
w_scopestringSchreib-Scopes, die der Token nutzen darf.
scopesobjectListe der Scopes, die der Token nutzen darf.
token_versionstringVersion des Token-Formats. Wird verwendet, um alte Tokens ungültig zu machen.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
namestringName der Einheit.
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/base/api_access_token \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/base/api_access_token', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/base/api_access_token"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/base/api_access_token', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/base/api_access_token"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/base/api_access_token")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/base/api_access_token"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/api_access_token_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ApiAccessTokenController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"name": "Beispiel",
"allow_super_admin": true,
"allow_admin": true,
"allow_user": true,
"is_dg": true,
"token": "string",
"allowed_path": "string",
"allowed_methods": "string",
"rwe_scope": "string"
}
]Prüft, ob das API-Zugriffs-Token gültig ist. Mit mode=info werden Token-Details, Benutzerinformationen und die verfügbaren Scopes abgerufen.
GET/api/base/api_access_token_test
Query-Parameter
modestring | Auf „info“ setzen, um Token-Details, Benutzerinformationen und verfügbare Scopes zu liefern |
Antworten
200Liefert true, wenn das API-Zugangs-Token gültig istSuccess
Felder anzeigen (3)
successbooleanmessagestringerror_codesarray<integer>
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/base/api_access_token_test \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/base/api_access_token_test', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/base/api_access_token_test"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/base/api_access_token_test', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/base/api_access_token_test"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/base/api_access_token_test")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/base/api_access_token_test"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/api_access_token_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await ApiAccessTokenController.testApiToken();
if (result.success) {
print(result.data);
}{
"success": true,
"message": "string",
"error_codes": [
1
]
}Alle MCP-Tools und API-Routen (PATCH/POST von api_patch/api_post), die ein Filter erlauben kann (für die Verwaltungsoberfläche). alwaysAllowed-Tools werden nie gefiltert. Texte folgen ?lang= / Accept-Language.
GET/api/opendata/mcp_access_filter_catalog
Antworten
200tools: [{name, title, description, readOnly, alwaysAllowed}], api_routes: [{route, method, path, entity, summary}]
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter_catalog \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter_catalog', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter_catalog"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter_catalog', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter_catalog"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter_catalog")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter_catalog"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/mcp_access_filter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await McpAccessFilterController.getCatalog();
if (result.success) {
print(result.data);
}Liefert die MCP-Tool-Filter der eigenen API-Zugangs-Tokens (Filter mit ?apiAccessToken=<id>)
GET/api/opendata/mcp_access_filter
Query-Parameter
searchStringstring | Text, nach dem in der Liste gesucht wird |
orderFieldNamestring | Name des Bestellfelds |
orderFieldSortstring | SortiermodusErlaubt: DESCASC |
pageinteger | Seite der Liste |
pageSizeinteger | Anzahl der Einträge je Seite |
withMaxPageNumberstring | gibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist |
Antworten
200Liefert die MCP-Tool-Filter der eigenen API-Zugangs-Tokensarray<McpAccessFilter>
Felder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/mcp_access_filter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await McpAccessFilterController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
]Fügt den MCP-Tool-Filter eines eigenen API-Zugriffs-Tokens hinzu (ein Filter pro Token).
POST/api/opendata/mcp_access_filter
allowed_tools / allowed_api_routes: Listen von Namen aus dem Katalog, null = keine Begrenzung.
Request-Body application/json
dataMcpAccessFilterFelder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
Antworten
200Fügt den MCP-Tool-Filter eines API-Zugriffs-Tokens hinzuMcpAccessFilter
Felder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
api_access_token: 1,
created: '2026-10-15T09:30:00+02:00',
updated: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter"
payload = { "data": {
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
} }
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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter', [
'body' => '{"data":{"id":42,"api_access_token":1,"created":"2026-10-15T09:30:00+02:00","updated":"2026-10-15T09:30:00+02:00"}}',
'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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}")
{
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, "{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter")
.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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter"
payload := strings.NewReader("{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}")
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 mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/mcp_access_filter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/mcp_access_filter.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await McpAccessFilterController.post(McpAccessFilter.fromJson({
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Liefert einen einzelnen MCP-Tool-Filter eines eigenen API-Zugriffstokens.
GET/api/opendata/mcp_access_filter/{identifier}
Pfad-Parameter
identifierPflichtstring |
Antworten
200Liefert einen einzelnen MCP-Tool-Filter.McpAccessFilter
Felder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/mcp_access_filter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await McpAccessFilterController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Ändert den MCP-Tool-Filter eines eigenen API-Zugriffstokens (PATCH: nur die gesendeten Felder)
PUT/api/opendata/mcp_access_filter/{identifier}
Pfad-Parameter
identifierPflichtstring |
Request-Body application/json
dataMcpAccessFilterFelder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
Antworten
200Ändert den MCP-Tool-Filter eines API-ZugriffstokensMcpAccessFilter
Felder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request PUT \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
api_access_token: 1,
created: '2026-10-15T09:30:00+02:00',
updated: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"
payload = { "data": {
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
} }
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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42', [
'body' => '{"data":{"id":42,"api_access_token":1,"created":"2026-10-15T09:30:00+02:00","updated":"2026-10-15T09:30:00+02:00"}}',
'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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}")
{
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, "{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42")
.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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}")
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 mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/mcp_access_filter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/mcp_access_filter.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await McpAccessFilterController.put(McpAccessFilter.fromJson({
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Ändert den MCP-Tool-Filter eines eigenen API-Zugriffstokens (PATCH: nur die gesendeten Felder)
PATCH/api/opendata/mcp_access_filter/{identifier}
Pfad-Parameter
identifierPflichtstring |
Request-Body application/json
dataMcpAccessFilterFelder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
Antworten
200Ändert den MCP-Tool-Filter eines API-ZugriffstokensMcpAccessFilter
Felder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request PATCH \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
api_access_token: 1,
created: '2026-10-15T09:30:00+02:00',
updated: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"
payload = { "data": {
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
} }
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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42', [
'body' => '{"data":{"id":42,"api_access_token":1,"created":"2026-10-15T09:30:00+02:00","updated":"2026-10-15T09:30:00+02:00"}}',
'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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}")
{
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, "{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42")
.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://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"api_access_token\":1,\"created\":\"2026-10-15T09:30:00+02:00\",\"updated\":\"2026-10-15T09:30:00+02:00\"}}")
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 mit package:http (kein Controller im Package iw_erp_api)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.patch(
Uri.parse('https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
}),
);
print(response.body);{
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Entfernt den MCP-Tool-Filter eines eigenen API-Zugriffstokens (das Token darf danach wieder alle Tools verwenden)
DELETE/api/opendata/mcp_access_filter/{identifier}
Pfad-Parameter
identifierPflichtstring |
Antworten
200Entfernt den MCP-Tool-Filter eines API-Zugriffstokens.McpAccessFilter
Felder anzeigen (4)
api_access_tokenintegeridintegerPrimärschlüssel des Zugriffsfilters. Interne ID.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request DELETE \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.delete(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42")
.delete(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_access_filter/42"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/mcp_access_filter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await McpAccessFilterController.delete('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"api_access_token": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Liefert die sichtbaren Freigabeanfragen, neueste zuerst (?status=pending,failed&actionType=&page=&pageSize=).
GET/api/opendata/mcp_approval_request
Die Antwort-Header X-IW-MAX-RESULTS / X-IW-MAX-PAGES enthalten die Summen.
Query-Parameter
searchStringstring | Text, nach dem in der Liste gesucht wird |
orderFieldNamestring | Name des Bestellfelds |
orderFieldSortstring | SortiermodusErlaubt: DESCASC |
pageinteger | Seite der Liste |
pageSizeinteger | Anzahl der Einträge je Seite |
withMaxPageNumberstring | gibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist |
Antworten
200Liefert die sichtbaren Freigabeanfragen von KI-Agentenarray<McpApprovalRequest>
Felder anzeigen (20)
idintegerPrimärschlüssel der Genehmigungsanfrage. Interne ID.
statusstringStatus der Anfrage: pending, approved, executed, failed, rejected, cancelled oder expired.
action_typestringAktionstyp aus der statischen MCP-Freigabe-Aktionszuordnung.
titlestringKurze Zusammenfassung, die vom Server und nicht vom Agenten geschrieben wird.
reasonstringVom Agenten angegebene Begründung. Nicht vertrauenswürdiger Text. Nur als Klartext anzeigen.
target_classstringKurzer Klassenname des Hauptdatensatzes, zum Beispiel crm_person.
target_idintegerID des Hauptdatensatzes.
requested_by_user_idintegerID des Benutzers, der die Aktion angefordert hat.
requested_bystringName des Benutzers, der die Aktion angefordert hat.
requested_auth_typestringWie sich der Anforderer angemeldet hat.
requested_clientstringClient, der die Anfrage gestellt hat.
expires_atstring (date-time)Zeitpunkt, nach dem die Anfrage abläuft.
decided_by_user_idintegerID des Benutzers, der die Anfrage genehmigt oder abgelehnt hat.
decided_bystringName des Benutzers, der den Antrag genehmigt oder abgelehnt hat.
decided_atstring (date-time)Zeitpunkt der Entscheidung.
decision_commentstringMit der Entscheidung abgegebener Kommentar.
executed_atstring (date-time)Zeitpunkt, zu dem die Aktion ausgeführt wurde.
error_messagestringFehlermeldung, falls die Ausführung fehlgeschlagen ist.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/mcp_approval_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await McpApprovalRequestController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"title": "Beispiel",
"decision_comment": "Text",
"status": "string",
"action_type": "string",
"reason": "string",
"target_class": "string",
"target_id": 42,
"requested_by_user_id": 42,
"requested_by": "string"
}
]Liefert eine Freigabeanfrage mit Vorschau, Payload, Entscheidung und Ergebnis
GET/api/opendata/mcp_approval_request/{identifier}
Pfad-Parameter
identifierPflichtstring |
Antworten
200Liefert eine FreigabeanfrageMcpApprovalRequest
Felder anzeigen (20)
idintegerPrimärschlüssel der Genehmigungsanfrage. Interne ID.
statusstringStatus der Anfrage: pending, approved, executed, failed, rejected, cancelled oder expired.
action_typestringAktionstyp aus der statischen MCP-Freigabe-Aktionszuordnung.
titlestringKurze Zusammenfassung, die vom Server und nicht vom Agenten geschrieben wird.
reasonstringVom Agenten angegebene Begründung. Nicht vertrauenswürdiger Text. Nur als Klartext anzeigen.
target_classstringKurzer Klassenname des Hauptdatensatzes, zum Beispiel crm_person.
target_idintegerID des Hauptdatensatzes.
requested_by_user_idintegerID des Benutzers, der die Aktion angefordert hat.
requested_bystringName des Benutzers, der die Aktion angefordert hat.
requested_auth_typestringWie sich der Anforderer angemeldet hat.
requested_clientstringClient, der die Anfrage gestellt hat.
expires_atstring (date-time)Zeitpunkt, nach dem die Anfrage abläuft.
decided_by_user_idintegerID des Benutzers, der die Anfrage genehmigt oder abgelehnt hat.
decided_bystringName des Benutzers, der den Antrag genehmigt oder abgelehnt hat.
decided_atstring (date-time)Zeitpunkt der Entscheidung.
decision_commentstringMit der Entscheidung abgegebener Kommentar.
executed_atstring (date-time)Zeitpunkt, zu dem die Aktion ausgeführt wurde.
error_messagestringFehlermeldung, falls die Ausführung fehlgeschlagen ist.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit dem Package iw_erp_api
import 'package:iw_erp_api/clients/mcp_approval_request_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await McpApprovalRequestController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"title": "Beispiel",
"decision_comment": "Text",
"status": "string",
"action_type": "string",
"reason": "string",
"target_class": "string",
"target_id": 42,
"requested_by_user_id": 42,
"requested_by": "string"
}Genehmigt die Anfrage und führt die Aktion mit den Rechten des Aufrufers aus. Nur für Personen, die in der ERP angemeldet sind (x-session-token-Header). Body: {„comment“: „...“} (optional). Die Antwort ist die Anfrage mit Status executed (result) oder failed (error_message); eine fehlgeschlagene Aktion hat nichts gespeichert.
POST/api/opendata/mcp_approval_request/{identifier}/approve
Pfad-Parameter
identifierPflichtstring |
Antworten
200Genehmigt eine Genehmigungsanfrage und führt sie ausMcpApprovalRequest
Felder anzeigen (20)
idintegerPrimärschlüssel der Genehmigungsanfrage. Interne ID.
statusstringStatus der Anfrage: pending, approved, executed, failed, rejected, cancelled oder expired.
action_typestringAktionstyp aus der statischen MCP-Freigabe-Aktionszuordnung.
titlestringKurze Zusammenfassung, die vom Server und nicht vom Agenten geschrieben wird.
reasonstringVom Agenten angegebene Begründung. Nicht vertrauenswürdiger Text. Nur als Klartext anzeigen.
target_classstringKurzer Klassenname des Hauptdatensatzes, zum Beispiel crm_person.
target_idintegerID des Hauptdatensatzes.
requested_by_user_idintegerID des Benutzers, der die Aktion angefordert hat.
requested_bystringName des Benutzers, der die Aktion angefordert hat.
requested_auth_typestringWie sich der Anforderer angemeldet hat.
requested_clientstringClient, der die Anfrage gestellt hat.
expires_atstring (date-time)Zeitpunkt, nach dem die Anfrage abläuft.
decided_by_user_idintegerID des Benutzers, der die Anfrage genehmigt oder abgelehnt hat.
decided_bystringName des Benutzers, der den Antrag genehmigt oder abgelehnt hat.
decided_atstring (date-time)Zeitpunkt der Entscheidung.
decision_commentstringMit der Entscheidung abgegebener Kommentar.
executed_atstring (date-time)Zeitpunkt, zu dem die Aktion ausgeführt wurde.
error_messagestringFehlermeldung, falls die Ausführung fehlgeschlagen ist.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/approve \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/approve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/approve"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/approve', [
'headers' => [
'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://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/approve"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/approve")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/approve"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'package:http/http.dart' as http;
final response = await http.post(
Uri.parse('https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/approve'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);{
"id": 42,
"title": "Beispiel",
"decision_comment": "Text",
"status": "string",
"action_type": "string",
"reason": "string",
"target_class": "string",
"target_id": 42,
"requested_by_user_id": 42,
"requested_by": "string"
}Lehnt die Anfrage ab; es wird nichts ausgeführt. Nur für Personen, die im ERP angemeldet sind (Header x-session-token).
POST/api/opendata/mcp_approval_request/{identifier}/reject
Body: {"comment": "..."} (optional, wird vom Agenten gelesen).
Pfad-Parameter
identifierPflichtstring |
Antworten
200Lehnt eine Genehmigungsanfrage abMcpApprovalRequest
Felder anzeigen (20)
idintegerPrimärschlüssel der Genehmigungsanfrage. Interne ID.
statusstringStatus der Anfrage: pending, approved, executed, failed, rejected, cancelled oder expired.
action_typestringAktionstyp aus der statischen MCP-Freigabe-Aktionszuordnung.
titlestringKurze Zusammenfassung, die vom Server und nicht vom Agenten geschrieben wird.
reasonstringVom Agenten angegebene Begründung. Nicht vertrauenswürdiger Text. Nur als Klartext anzeigen.
target_classstringKurzer Klassenname des Hauptdatensatzes, zum Beispiel crm_person.
target_idintegerID des Hauptdatensatzes.
requested_by_user_idintegerID des Benutzers, der die Aktion angefordert hat.
requested_bystringName des Benutzers, der die Aktion angefordert hat.
requested_auth_typestringWie sich der Anforderer angemeldet hat.
requested_clientstringClient, der die Anfrage gestellt hat.
expires_atstring (date-time)Zeitpunkt, nach dem die Anfrage abläuft.
decided_by_user_idintegerID des Benutzers, der die Anfrage genehmigt oder abgelehnt hat.
decided_bystringName des Benutzers, der den Antrag genehmigt oder abgelehnt hat.
decided_atstring (date-time)Zeitpunkt der Entscheidung.
decision_commentstringMit der Entscheidung abgegebener Kommentar.
executed_atstring (date-time)Zeitpunkt, zu dem die Aktion ausgeführt wurde.
error_messagestringFehlermeldung, falls die Ausführung fehlgeschlagen ist.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/reject \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/reject', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/reject"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/reject', [
'headers' => [
'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://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/reject"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/reject")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/reject"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'package:http/http.dart' as http;
final response = await http.post(
Uri.parse('https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/reject'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);{
"id": 42,
"title": "Beispiel",
"decision_comment": "Text",
"status": "string",
"action_type": "string",
"reason": "string",
"target_class": "string",
"target_id": 42,
"requested_by_user_id": 42,
"requested_by": "string"
}Zieht eine offene Anfrage zurück; nur die Anmeldung (Benutzer), die sie vorgeschlagen hat.
POST/api/opendata/mcp_approval_request/{identifier}/cancel
Pfad-Parameter
identifierPflichtstring |
Antworten
200Zieht eine eigene offene Genehmigungsanfrage zurückMcpApprovalRequest
Felder anzeigen (20)
idintegerPrimärschlüssel der Genehmigungsanfrage. Interne ID.
statusstringStatus der Anfrage: pending, approved, executed, failed, rejected, cancelled oder expired.
action_typestringAktionstyp aus der statischen MCP-Freigabe-Aktionszuordnung.
titlestringKurze Zusammenfassung, die vom Server und nicht vom Agenten geschrieben wird.
reasonstringVom Agenten angegebene Begründung. Nicht vertrauenswürdiger Text. Nur als Klartext anzeigen.
target_classstringKurzer Klassenname des Hauptdatensatzes, zum Beispiel crm_person.
target_idintegerID des Hauptdatensatzes.
requested_by_user_idintegerID des Benutzers, der die Aktion angefordert hat.
requested_bystringName des Benutzers, der die Aktion angefordert hat.
requested_auth_typestringWie sich der Anforderer angemeldet hat.
requested_clientstringClient, der die Anfrage gestellt hat.
expires_atstring (date-time)Zeitpunkt, nach dem die Anfrage abläuft.
decided_by_user_idintegerID des Benutzers, der die Anfrage genehmigt oder abgelehnt hat.
decided_bystringName des Benutzers, der den Antrag genehmigt oder abgelehnt hat.
decided_atstring (date-time)Zeitpunkt der Entscheidung.
decision_commentstringMit der Entscheidung abgegebener Kommentar.
executed_atstring (date-time)Zeitpunkt, zu dem die Aktion ausgeführt wurde.
error_messagestringFehlermeldung, falls die Ausführung fehlgeschlagen ist.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
curl --request POST \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/cancel \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/cancel"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/cancel', [
'headers' => [
'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://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/cancel"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/cancel")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/cancel"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'package:http/http.dart' as http;
final response = await http.post(
Uri.parse('https://eure-instanz.iw-erp.de/api/opendata/mcp_approval_request/42/cancel'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);{
"id": 42,
"title": "Beispiel",
"decision_comment": "Text",
"status": "string",
"action_type": "string",
"reason": "string",
"target_class": "string",
"target_id": 42,
"requested_by_user_id": 42,
"requested_by": "string"
}Liefert die MCP-Tool-Aufrufe, neueste zuerst (?toolName=&userId=&outcome=ok|error|denied&approvalRequest=&from=&to=&page=&pageSize=).
GET/api/opendata/mcp_tool_call_log
Die Antwort-Header X-IW-MAX-RESULTS / X-IW-MAX-PAGES enthalten die Summen.
Query-Parameter
searchStringstring | Text, nach dem in der Liste gesucht wird |
orderFieldNamestring | Name des Bestellfelds |
orderFieldSortstring | SortiermodusErlaubt: DESCASC |
pageinteger | Seite der Liste |
pageSizeinteger | Anzahl der Einträge je Seite |
withMaxPageNumberstring | gibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist |
Antworten
200Liefert das Audit-Protokoll des MCP-Serversarray<McpToolCallLog>
Felder anzeigen (15)
idintegerPrimärschlüssel des Protokolleintrags. Interne ID.
createdstring (date-time)Zeitpunkt des Tool-Aufrufs.
tool_namestringName des aufgerufenen MCP-Tools.
outcomestringErgebnis des Aufrufs: ok, error oder denied.
writingbooleanOb das Werkzeug Daten ändern kann, also nicht nur lesend ist. Null bei unbekannten Werkzeugen.
user_idintegerID des aufrufenden Benutzers.
user_stringstringAnzeigename des aufrufenden Benutzers.
auth_typestringWie der Aufrufer sich angemeldet hat: anonymous, public, session, api_token, oauth oder sso_durable.
api_access_token_idintegerID des API-Zugriffstokens, das für den Aufruf verwendet wurde.
oauth_clientstringKennung des OAuth-Clients, der für den Aufruf verwendet wird.
client_namestringName des für den Aufruf verwendeten Clients.
client_ipstringIP-Adresse des Aufrufers.
error_messagestringFehlermeldung, falls der Aufruf fehlgeschlagen ist.
duration_msintegerDauer des Anrufs in Millisekunden.
approval_request_idintegerID der Genehmigungsanfrage, die durch den Aufruf erzeugt wurde, falls vorhanden.
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/opendata/mcp_tool_call_log \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/opendata/mcp_tool_call_log', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://eure-instanz.iw-erp.de/api/opendata/mcp_tool_call_log"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://eure-instanz.iw-erp.de/api/opendata/mcp_tool_call_log', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/opendata/mcp_tool_call_log"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/opendata/mcp_tool_call_log")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://eure-instanz.iw-erp.de/api/opendata/mcp_tool_call_log"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart mit package:http (kein Controller im Package iw_erp_api)
import 'package:http/http.dart' as http;
final response = await http.get(
Uri.parse('https://eure-instanz.iw-erp.de/api/opendata/mcp_tool_call_log'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);[
{
"id": 42,
"tool_name": "Beispiel",
"client_name": "Beispiel",
"created": "2026-10-15T09:30:00+02:00",
"outcome": "string",
"writing": true,
"user_id": 42,
"user_string": "string",
"auth_type": "string",
"api_access_token_id": 42
}
]