CrmMessage
CustomerMessage für ein Unternehmen neu anlegen
POST/api/crm/messages/{companyId}
Pfad-Parameter
companyIdPflichtstring |
Antworten
200CustomerMessage für ein Unternehmen neu anlegenCustomerMessage
Felder anzeigen (9)
idintegerPrimärschlüssel der Kundennachricht. Interne ID.
usernamestringBenutzername des Autors.
displaynamestringAnzeigename des Verfassers.
userpositionstringPosition des Verfassers, die mit der Nachricht angezeigt wird.
profile_picture_urlstringURL des Profilbilds des Autors.
textstringText der Nachricht.
attachmentsarray<Attachment10>Anhänge der Nachricht.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
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.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
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/crm/messages/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/messages/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/crm/messages/42"
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/crm/messages/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.Post,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/messages/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/crm/messages/42")
.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/crm/messages/42"
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 dem Package iw_erp_api
import 'package:iw_erp_api/clients/crm_message_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/customer_message.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await CrmMessageController.post('42', CustomerMessage.fromJson({}));
if (result.success) {
print(result.data);
}{
"id": 42,
"username": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"text": "Text",
"displayname": "string",
"userposition": "string",
"attachments": [
{
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
}
],
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Diese Methode liefert ein einzelnes CustomerMessage-Objekt mit der angegebenen ID
GET/api/crm/messages/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200Liefert ein einzelnes CustomerMessage-Objekt.CustomerMessage
Felder anzeigen (9)
idintegerPrimärschlüssel der Kundennachricht. Interne ID.
usernamestringBenutzername des Autors.
displaynamestringAnzeigename des Verfassers.
userpositionstringPosition des Verfassers, die mit der Nachricht angezeigt wird.
profile_picture_urlstringURL des Profilbilds des Autors.
textstringText der Nachricht.
attachmentsarray<Attachment10>Anhänge der Nachricht.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
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.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
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/crm/messages/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/crm/messages/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/crm/messages/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/crm/messages/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/crm/messages/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/crm/messages/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/crm/messages/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/crm_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 CrmMessageController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"username": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"text": "Text",
"displayname": "string",
"userposition": "string",
"attachments": [
{
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
}
],
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Diese Methode aktualisiert ein CustomerMessage-Objekt
PUT/api/crm/messages/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200CustomerMessage aktualisierenCustomerMessage
Felder anzeigen (9)
idintegerPrimärschlüssel der Kundennachricht. Interne ID.
usernamestringBenutzername des Autors.
displaynamestringAnzeigename des Verfassers.
userpositionstringPosition des Verfassers, die mit der Nachricht angezeigt wird.
profile_picture_urlstringURL des Profilbilds des Autors.
textstringText der Nachricht.
attachmentsarray<Attachment10>Anhänge der Nachricht.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
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.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
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/crm/messages/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'PUT', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/messages/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/crm/messages/42"
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/crm/messages/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.Put,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/messages/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/crm/messages/42")
.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/crm/messages/42"
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/crm_message_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/customer_message.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await CrmMessageController.put(CustomerMessage.fromJson({}));
if (result.success) {
print(result.data);
}{
"id": 42,
"username": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"text": "Text",
"displayname": "string",
"userposition": "string",
"attachments": [
{
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
}
],
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Diese Methode aktualisiert ein CustomerMessage-Objekt
PATCH/api/crm/messages/{id}
Pfad-Parameter
idPflichtstring |
Antworten
200CustomerMessage aktualisierenCustomerMessage
Felder anzeigen (9)
idintegerPrimärschlüssel der Kundennachricht. Interne ID.
usernamestringBenutzername des Autors.
displaynamestringAnzeigename des Verfassers.
userpositionstringPosition des Verfassers, die mit der Nachricht angezeigt wird.
profile_picture_urlstringURL des Profilbilds des Autors.
textstringText der Nachricht.
attachmentsarray<Attachment10>Anhänge der Nachricht.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
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.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
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/crm/messages/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'PATCH', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/messages/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/crm/messages/42"
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/crm/messages/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.Patch,
RequestUri = new Uri("https://eure-instanz.iw-erp.de/api/crm/messages/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/crm/messages/42")
.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/crm/messages/42"
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/crm/messages/42'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);{
"id": 42,
"username": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"text": "Text",
"displayname": "string",
"userposition": "string",
"attachments": [
{
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
}
],
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Diese Methode liefert alle CustomerMessage-Objekte
GET/api/crm/messages/{companyId}/{timestamp}/new
Pfad-Parameter
companyIdPflichtstring | |
timestampPflichtstring |
Antworten
default
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/crm/messages/42/42/new \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/messages/42/42/new', 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/crm/messages/42/42/new"
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/crm/messages/42/42/new', [
'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/crm/messages/42/42/new"),
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/crm/messages/42/42/new")
.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/crm/messages/42/42/new"
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/crm_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 CrmMessageController.getNewMessages('42', 42);
if (result.success) {
print(result.data);
}Diese Methode liefert CustomerMessages ab dem angegebenen Zeitstempel (Limit 500), gruppiert nach ihrem Datum
GET/api/crm/messages/{companyId}/{timestamp}/daily
Pfad-Parameter
companyIdPflichtstring | |
timestampPflichtstring |
Antworten
default
curl --request GET \
--url https://eure-instanz.iw-erp.de/api/crm/messages/42/42/daily \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/messages/42/42/daily', 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/crm/messages/42/42/daily"
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/crm/messages/42/42/daily', [
'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/crm/messages/42/42/daily"),
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/crm/messages/42/42/daily")
.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/crm/messages/42/42/daily"
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/crm_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 CrmMessageController.getDailyMessages('42', 42);
if (result.success) {
print(result.data);
}Anhang zu einer Message hinzufügen
POST/api/crm/messages/{id}/adds/attachments
Pfad-Parameter
idPflichtstring |
Antworten
200Anhang zu einer CustomerMessage hinzufügenCustomerMessage
Felder anzeigen (9)
idintegerPrimärschlüssel der Kundennachricht. Interne ID.
usernamestringBenutzername des Autors.
displaynamestringAnzeigename des Verfassers.
userpositionstringPosition des Verfassers, die mit der Nachricht angezeigt wird.
profile_picture_urlstringURL des Profilbilds des Autors.
textstringText der Nachricht.
attachmentsarray<Attachment10>Anhänge der Nachricht.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
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.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
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/crm/messages/42/adds/attachments \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/messages/42/adds/attachments', 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/crm/messages/42/adds/attachments"
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/crm/messages/42/adds/attachments', [
'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/crm/messages/42/adds/attachments"),
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/crm/messages/42/adds/attachments")
.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/crm/messages/42/adds/attachments"
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 dem Package iw_erp_api
import 'package:iw_erp_api/clients/crm_message_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/attachment.dart';
import 'package:iw_erp_api/model/customer_message.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await CrmMessageController.addAttachment(CustomerMessage.fromJson({}), Attachment.fromJson({}));
if (result.success) {
print(result.data);
}{
"id": 42,
"username": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"text": "Text",
"displayname": "string",
"userposition": "string",
"attachments": [
{
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
}
],
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Einen Anhang aus CustomerMessage entfernen
POST/api/crm/messages/{id}/deletes/attachments
Pfad-Parameter
idPflichtstring |
Antworten
200Einen Anhang aus einer CustomerMessage entfernenCustomerMessage
Felder anzeigen (9)
idintegerPrimärschlüssel der Kundennachricht. Interne ID.
usernamestringBenutzername des Autors.
displaynamestringAnzeigename des Verfassers.
userpositionstringPosition des Verfassers, die mit der Nachricht angezeigt wird.
profile_picture_urlstringURL des Profilbilds des Autors.
textstringText der Nachricht.
attachmentsarray<Attachment10>Anhänge der Nachricht.
Felder anzeigen (25)
idintegerPrimärschlüssel des Anhangs. Interne ID.
filenamestringUrsprünglicher Dateiname.
filesizestringGröße der Datei in Bytes.
mimetypestringMIME-Typ der Datei.
createdbyusernamestringName des Benutzers, der die Datei hochgeladen hat, als Text.
createdstring (date-time)Zeitpunkt, zu dem der Anhang angelegt wurde.
googleidstringID der Datei in Google Drive.
scopestringScope, der steuert, wer den Anhang sehen kann.
ocr_document_typestringDokumenttyp, der per OCR erkannt wurde.
ocr_from_namestringPer OCR erkannter Absendername.
ocr_from_companystringPer OCR erkanntes Absenderunternehmen.
ocr_from_addressstringPer OCR erkannte Absenderadresse.
ocr_from_emailstringPer OCR erkannte Absender-E-Mail-Adresse.
ocr_from_phonestringPer OCR erkannte Absender-Telefonnummer.
ocr_to_namestringPer OCR erkannter Name des Empfängers.
ocr_to_companystringPer OCR erkanntes Empfängerunternehmen.
ocr_to_addressstringPer OCR erkannte Empfängeradresse.
ocr_to_emailstringPer OCR erkannte E-Mail-Adresse des Empfängers.
ocr_to_phonestringPer OCR erkannte Telefonnummer des Empfängers.
ocr_summarystringZusammenfassung des per OCR erstellten Dokuments.
ocr_statusstringOCR-Verarbeitungsstatus: null = nicht verarbeitet, pending, processing, done, error
ocr_errorstringGrund des letzten fehlgeschlagenen oder unvollständigen OCR-Laufs, null wenn er erfolgreich war
ocr_processed_atstring (date-time)Zeitpunkt, zu dem die OCR-Verarbeitung abgeschlossen wurde.
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.
virus_checked_atstring (date-time)Wann der Virenscan bestanden wurde. Null, solange die Datei noch wartet.
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/crm/messages/42/deletes/attachments \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://eure-instanz.iw-erp.de/api/crm/messages/42/deletes/attachments', 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/crm/messages/42/deletes/attachments"
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/crm/messages/42/deletes/attachments', [
'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/crm/messages/42/deletes/attachments"),
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/crm/messages/42/deletes/attachments")
.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/crm/messages/42/deletes/attachments"
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 dem Package iw_erp_api
import 'package:iw_erp_api/clients/crm_message_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/attachment.dart';
import 'package:iw_erp_api/model/customer_message.dart';
IwApiState().host = 'eure-instanz.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await CrmMessageController.deleteAttachment(CustomerMessage.fromJson({}), Attachment.fromJson({}));
if (result.success) {
print(result.data);
}{
"id": 42,
"username": "lena.hartmann@example.org",
"profile_picture_url": "https://vynst.de",
"text": "Text",
"displayname": "string",
"userposition": "string",
"attachments": [
{
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
}
],
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}