CustomerChatroomMessage
Durchsucht die Nachrichten eines Chatrooms Abfrage: q (2 bis 100 Zeichen), limit (1-50, Vorgabe 30). Sichtbare Nachrichten, deren Text q enthält, neueste zuerst. Erfordert chatroom_search_enabled (sonst 8618).
GET/api/cp/chat/chatroom/{identifier}/search
Pfad-Parameter
identifierPflichtstring |
Query-Parameter
chatroomstring | _LIST |
participantstring | _LIST, LOGGED_IN_LIST |
deletedboolean | Diese Eigenschaft markiert eine Entität als gelöscht / archiviert | Benötigtes Zugriffsrecht: SCOPE_LIST |
createdstring | _LIST, LOGGED_IN_LIST |
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
200Nachrichten des Chatrooms, die den Suchbegriff enthaltenarray<ChatroomMessage>
Felder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
Felder anzeigen (7)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googledownloadlinkstringDownload-Link der Datei in Google Drive.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
Felder anzeigen (4)
idintegerPrimärschlüssel der Reaktion. Interne ID.
emojistringEmoji der Reaktion.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
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/cp/chat/chatroom/42/search \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom/42/search', 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/cp/chat/chatroom/42/search"
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/cp/chat/chatroom/42/search', [
'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/cp/chat/chatroom/42/search"),
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/cp/chat/chatroom/42/search")
.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/cp/chat/chatroom/42/search"
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/customer_chatroom_message_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 CustomerChatroomMessageController.search('42', '…');
if (result.success) {
print(result.data);
}[
{
"id": 42,
"message_text": "Text",
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
]Ergebnis der Umfrage einer ChatroomMessage.
GET/api/cp/chat/chatroom_message/{identifier}/poll
Zählt je Antwort, die eigenen Stimmen und, sofern die Umfrage nicht anonym ist, wer wofür gestimmt hat. Erfordert chatroom_polls_enabled (sonst 8618).
Pfad-Parameter
identifierPflichtstring |
Antworten
200Umfrageergebnis
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll', 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/cp/chat/chatroom_message/42/poll"
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/cp/chat/chatroom_message/42/poll', [
'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/cp/chat/chatroom_message/42/poll"),
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/cp/chat/chatroom_message/42/poll")
.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/cp/chat/chatroom_message/42/poll"
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/customer_chatroom_message_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 CustomerChatroomMessageController.getPoll('42');
if (result.success) {
print(result.data);
}Stimme in der Umfrage einer ChatroomMessage ab
PUT/api/cp/chat/chatroom_message/{identifier}/poll
Body: options (Liste der Antwortschlüssel); ersetzt die eigenen Stimmen, eine leere Liste nimmt die Stimme zurück. Nur ein Schlüssel, sofern die Umfrage nicht mehrere Antworten erlaubt. 8620, sobald die Umfrage geschlossen ist.
Pfad-Parameter
identifierPflichtstring |
Request-Body application/json
optionsarray<string>
Antworten
200Umfrageergebnis
curl --request PUT \
--url https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"options": [
"string"
]
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({options: ['string']})
};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll', 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/cp/chat/chatroom_message/42/poll"
payload = { "options": ["string"] }
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/cp/chat/chatroom_message/42/poll', [
'body' => '{"options":["string"]}',
'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/cp/chat/chatroom_message/42/poll"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"options\":[\"string\"]}")
{
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, "{\"options\":[\"string\"]}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll")
.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/cp/chat/chatroom_message/42/poll"
payload := strings.NewReader("{\"options\":[\"string\"]}")
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/customer_chatroom_message_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 CustomerChatroomMessageController.vote('42', ['42']);
if (result.success) {
print(result.data);
}Stimme in der Umfrage einer ChatroomMessage ab
PATCH/api/cp/chat/chatroom_message/{identifier}/poll
Body: options (Liste der Antwortschlüssel); ersetzt die eigenen Stimmen, eine leere Liste nimmt die Stimme zurück. Nur ein Schlüssel, sofern die Umfrage nicht mehrere Antworten erlaubt. 8620, sobald die Umfrage geschlossen ist.
Pfad-Parameter
identifierPflichtstring |
Request-Body application/json
optionsarray<string>
Antworten
200Umfrageergebnis
curl --request PATCH \
--url https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"options": [
"string"
]
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({options: ['string']})
};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll', 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/cp/chat/chatroom_message/42/poll"
payload = { "options": ["string"] }
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/cp/chat/chatroom_message/42/poll', [
'body' => '{"options":["string"]}',
'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/cp/chat/chatroom_message/42/poll"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"options\":[\"string\"]}")
{
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, "{\"options\":[\"string\"]}");
Request request = new Request.Builder()
.url("https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll")
.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/cp/chat/chatroom_message/42/poll"
payload := strings.NewReader("{\"options\":[\"string\"]}")
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/cp/chat/chatroom_message/42/poll'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"options": [
"string"
]
}),
);
print(response.body);Umfrage einer ChatroomMessage schließen
PUT/api/cp/chat/chatroom_message/{identifier}/poll/close
Der Ersteller, Raumadministratoren und die Verwaltung beenden eine Umfrage; danach kann niemand mehr abstimmen.
Pfad-Parameter
identifierPflichtstring |
Antworten
200Umfrageergebnis
curl --request PUT \
--url https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll/close \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'PUT', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll/close', 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/cp/chat/chatroom_message/42/poll/close"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.put(url, 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/cp/chat/chatroom_message/42/poll/close', [
'headers' => [
'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/cp/chat/chatroom_message/42/poll/close"),
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/cp/chat/chatroom_message/42/poll/close")
.put(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/cp/chat/chatroom_message/42/poll/close"
req, _ := http.NewRequest("PUT", 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/customer_chatroom_message_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 CustomerChatroomMessageController.closePoll('42');
if (result.success) {
print(result.data);
}Umfrage einer ChatroomMessage schließen
PATCH/api/cp/chat/chatroom_message/{identifier}/poll/close
Der Ersteller, Raumadministratoren und die Verwaltung beenden eine Umfrage; danach kann niemand mehr abstimmen.
Pfad-Parameter
identifierPflichtstring |
Antworten
200Umfrageergebnis
curl --request PATCH \
--url https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll/close \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'PATCH', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll/close', 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/cp/chat/chatroom_message/42/poll/close"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.patch(url, 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/cp/chat/chatroom_message/42/poll/close', [
'headers' => [
'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/cp/chat/chatroom_message/42/poll/close"),
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/cp/chat/chatroom_message/42/poll/close")
.patch(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/cp/chat/chatroom_message/42/poll/close"
req, _ := http.NewRequest("PATCH", 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.patch(
Uri.parse('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/42/poll/close'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);Liefert eine Liste aller ChatroomMessages-Objekte.
GET/api/cp/chat/chatroom_message
Query-Parameter
chatroomstring | _LIST |
participantstring | _LIST, LOGGED_IN_LIST |
deletedboolean | Diese Eigenschaft markiert eine Entität als gelöscht / archiviert | Benötigtes Zugriffsrecht: SCOPE_LIST |
createdstring | _LIST, LOGGED_IN_LIST |
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 aller ChatroomMessages-Objekte.array<ChatroomMessage>
Felder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
Felder anzeigen (7)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googledownloadlinkstringDownload-Link der Datei in Google Drive.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
Felder anzeigen (4)
idintegerPrimärschlüssel der Reaktion. Interne ID.
emojistringEmoji der Reaktion.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
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/cp/chat/chatroom_message \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message', 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/cp/chat/chatroom_message"
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/cp/chat/chatroom_message', [
'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/cp/chat/chatroom_message"),
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/cp/chat/chatroom_message")
.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/cp/chat/chatroom_message"
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/customer_chatroom_message_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 CustomerChatroomMessageController.getAll(chatroomIdentifier: '…');
if (result.success) {
print(result.data);
}[
{
"id": 42,
"message_text": "Text",
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
]Liefert einen einzelnen ChatroomMessage-Eintrag.
GET/api/cp/chat/chatroom_message/{identifier}
Pfad-Parameter
identifierPflichtstring |
Antworten
200Gibt ein einzelnes ChatroomMessage-Objekt zurück.ChatroomMessage
Felder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
Felder anzeigen (7)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googledownloadlinkstringDownload-Link der Datei in Google Drive.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
Felder anzeigen (4)
idintegerPrimärschlüssel der Reaktion. Interne ID.
emojistringEmoji der Reaktion.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
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/cp/chat/chatroom_message/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/cp/chat/chatroom_message/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/cp/chat/chatroom_message/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/cp/chat/chatroom_message/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/cp/chat/chatroom_message/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/cp/chat/chatroom_message/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/cp/chat/chatroom_message/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/customer_chatroom_message_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 CustomerChatroomMessageController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"message_text": "Text",
"attachments": [
{
"id": 42,
"filename": "string",
"filesize": "string",
"mimetype": "string",
"created": "2026-10-15T09:30:00+02:00",
"googledownloadlink": "string",
"virus_checked": true
}
],
"reactions": [
{
"id": 42,
"emoji": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
],
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Aktualisiert einen vorhandenen ChatroomMessage-Eintrag.
PUT/api/cp/chat/chatroom_message/{identifier}
Pfad-Parameter
identifierPflichtstring |
Request-Body application/json
dataChatroomMessageFelder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
Antworten
200ChatroomMessage einzeln aktualisierenChatroomMessage
Felder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
Felder anzeigen (7)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googledownloadlinkstringDownload-Link der Datei in Google Drive.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
Felder anzeigen (4)
idintegerPrimärschlüssel der Reaktion. Interne ID.
emojistringEmoji der Reaktion.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
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/cp/chat/chatroom_message/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"message_text": "Text",
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"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,
message_text: 'Text',
completed: true,
edited_at: '2026-10-15T09:30:00+02:00',
created: '2026-10-15T09:30:00+02:00',
updated: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/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/cp/chat/chatroom_message/42"
payload = { "data": {
"id": 42,
"message_text": "Text",
"completed": True,
"edited_at": "2026-10-15T09:30:00+02:00",
"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/cp/chat/chatroom_message/42', [
'body' => '{"data":{"id":42,"message_text":"Text","completed":true,"edited_at":"2026-10-15T09:30:00+02:00","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/cp/chat/chatroom_message/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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/cp/chat/chatroom_message/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/cp/chat/chatroom_message/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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/customer_chatroom_message_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/chatroom_message.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await CustomerChatroomMessageController.put(ChatroomMessage.fromJson({
"id": 42,
"message_text": "Text",
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"message_text": "Text",
"attachments": [
{
"id": 42,
"filename": "string",
"filesize": "string",
"mimetype": "string",
"created": "2026-10-15T09:30:00+02:00",
"googledownloadlink": "string",
"virus_checked": true
}
],
"reactions": [
{
"id": 42,
"emoji": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
],
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Aktualisiert einen vorhandenen ChatroomMessage-Eintrag.
PATCH/api/cp/chat/chatroom_message/{identifier}
Pfad-Parameter
identifierPflichtstring |
Request-Body application/json
dataChatroomMessageFelder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
Antworten
200ChatroomMessage einzeln aktualisierenChatroomMessage
Felder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
Felder anzeigen (7)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googledownloadlinkstringDownload-Link der Datei in Google Drive.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
Felder anzeigen (4)
idintegerPrimärschlüssel der Reaktion. Interne ID.
emojistringEmoji der Reaktion.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
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/cp/chat/chatroom_message/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"message_text": "Text",
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"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,
message_text: 'Text',
completed: true,
edited_at: '2026-10-15T09:30:00+02:00',
created: '2026-10-15T09:30:00+02:00',
updated: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/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/cp/chat/chatroom_message/42"
payload = { "data": {
"id": 42,
"message_text": "Text",
"completed": True,
"edited_at": "2026-10-15T09:30:00+02:00",
"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/cp/chat/chatroom_message/42', [
'body' => '{"data":{"id":42,"message_text":"Text","completed":true,"edited_at":"2026-10-15T09:30:00+02:00","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/cp/chat/chatroom_message/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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/cp/chat/chatroom_message/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/cp/chat/chatroom_message/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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/cp/chat/chatroom_message/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"id": 42,
"message_text": "Text",
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
}),
);
print(response.body);{
"id": 42,
"message_text": "Text",
"attachments": [
{
"id": 42,
"filename": "string",
"filesize": "string",
"mimetype": "string",
"created": "2026-10-15T09:30:00+02:00",
"googledownloadlink": "string",
"virus_checked": true
}
],
"reactions": [
{
"id": 42,
"emoji": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
],
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}ChatroomMessage neu anlegen
POST/api/cp/chat/chatroom_message/{chatroomIdentifier}
Pfad-Parameter
chatroomIdentifierPflichtstring |
Request-Body application/json
dataChatroomMessageFelder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
Antworten
200ChatroomMessage neu anlegenChatroomMessage
Felder anzeigen (8)
idintegerPrimärschlüssel der Chat-Nachricht. Interne ID.
message_textstringText der Chat-Nachricht.
attachmentsarray<Attachment2>Anhänge der Chatnachricht.
Felder anzeigen (7)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googledownloadlinkstringDownload-Link der Datei in Google Drive.
virus_checkedboolean1, sobald der Virenscan für diese Datei bestanden ist. Der Scan läuft im Hintergrund (AttachmentVirusScanCommand), daher beginnt eine neu hochgeladene Datei bei 0 und bleibt dort, bis sie tatsächlich geprüft wurde. Eine infizierte Datei erreicht nie 1 – sie wird stattdessen gelöscht. Die Oberflächen nutzen dies, um zu entscheiden, ob eine Datei an einen Benutzer ausgegeben werden darf; daher muss sie bis zum Nachweis des Gegenteils auf false bleiben.
reactionsarray<ChatroomMessageReaction4>Reaktionen auf die Chat-Nachricht.
Felder anzeigen (4)
idintegerPrimärschlüssel der Reaktion. Interne ID.
emojistringEmoji der Reaktion.
createdstring (date-time)Zeitpunkt, zu dem der Datensatz angelegt wurde.
updatedstring (date-time)Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.
completedbooleanKennzeichen, ob diese Nachricht abgeschlossen ist
edited_atstring (date-time)Wann der Text zuletzt bearbeitet wurde (Einstellung chatroom_message_edit_enabled).
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/cp/chat/chatroom_message/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"message_text": "Text",
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"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,
message_text: 'Text',
completed: true,
edited_at: '2026-10-15T09:30:00+02:00',
created: '2026-10-15T09:30:00+02:00',
updated: '2026-10-15T09:30:00+02:00'
}
})
};
fetch('https://eure-instanz.iw-erp.de/api/cp/chat/chatroom_message/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/cp/chat/chatroom_message/42"
payload = { "data": {
"id": 42,
"message_text": "Text",
"completed": True,
"edited_at": "2026-10-15T09:30:00+02:00",
"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/cp/chat/chatroom_message/42', [
'body' => '{"data":{"id":42,"message_text":"Text","completed":true,"edited_at":"2026-10-15T09:30:00+02:00","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/cp/chat/chatroom_message/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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/cp/chat/chatroom_message/42")
.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/cp/chat/chatroom_message/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"message_text\":\"Text\",\"completed\":true,\"edited_at\":\"2026-10-15T09:30:00+02:00\",\"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/customer_chatroom_message_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/chatroom_message.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await CustomerChatroomMessageController.post(ChatroomMessage.fromJson({
"id": 42,
"message_text": "Text",
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}), chatroomIdentifier: '42');
if (result.success) {
print(result.data);
}{
"id": 42,
"message_text": "Text",
"attachments": [
{
"id": 42,
"filename": "string",
"filesize": "string",
"mimetype": "string",
"created": "2026-10-15T09:30:00+02:00",
"googledownloadlink": "string",
"virus_checked": true
}
],
"reactions": [
{
"id": 42,
"emoji": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
],
"completed": true,
"edited_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}