Feedback Subscriptions
Returns a list of subscriptions.
GET/api/media/feedback_subscription
Query parameters
idinteger | |
deletedboolean | This property is used to mark an entity as deleted / archived |
entrystring | |
socialProfilestring | |
sourcestring | |
createdstring | |
updatedstring | |
searchStringstring | text to search for in the list |
orderFieldNamestring | name of the order field |
orderFieldSortstring | sorting modeAllowed: DESCASC |
pageinteger | page of the list |
pageSizeinteger | number of entries for each page |
withMaxPageNumberstring | returns the number of pages available as a header if this is set |
Responses
200Returns a list of MediaFeedbackSubscription objectsarray<MediaFeedbackSubscription>
Show fields (7)
idintegerPrimary key of the feedback subscription. Internal ID.
entryMediaFeedbackEntry7Feedback entry the subscription belongs to.
Show fields (17)
author_namestringDisplay name of the author, honouring the pseudonymity the person chose on their social profile. Falls back to the guest name, then to a neutral label — never to an email address.
idintegerPrimary key of the feedback entry. Internal ID.
boardMediaFeedbackBoard5Feedback board the entry belongs to.
headlinestringHeadline of the feedback entry.
textstringText of the feedback entry.
feedback_typestringType of the feedback, for example idea or problem.
statusstringStatus of the feedback, for example open, planned or done.
status_notestringPublicly visible reason for the current status. A declined wish without a reason is worse than no board at all, so this is exposed to every access tier.
moderation_statusstringModeration status, for example pending or approved.
social_profileMediaSocialProfile10Author when submitted by a logged-in person. Reuses the social profile so the pseudonymity settings a person already chose apply here too.
guest_namestringName of the guest who wrote the entry.
vote_countintegerDenormalized so lists can sort by popularity without a join. Maintained by MediaFeedbackVoteHelper; MediaFeedbackRecountCommand repairs it.
comment_countintegerNumber of comments on the entry.
duplicate_ofMediaFeedbackEntry7Merge target. Set together with STATUS_DUPLICATE.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
social_profileMediaSocialProfile10Profile of the subscriber.
Show fields (11)
idintegerPrimary key of the social profile. Internal ID.
public_namestringName shown publicly.
profile_picture_urlstringURL of the profile picture.
public_about_mestringText about the person shown publicly.
global_profilebooleanThe profile is a global profile across installations.
name_display_typestringHow the name is shown, for example full name or first name only.
show_profile_picturebooleanThe profile picture is shown.
profile_picture_check_statusstringPruefstatus des Profilbilds (KI-Pruefung, siehe MediaSocialProfilePictureHelper): null = nie geprueft (Pruefung aus), pending, approved, rejected. Nur ein freigegebenes Bild landet in profilePictureUrl, solange die Pruefung eingeschaltet ist.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
sourcestringSource of the subscription, for example the app or an e-mail.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request GET \
--url https://your-instance.iw-erp.de/api/media/feedback_subscription \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/media/feedback_subscription', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/media/feedback_subscription"
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://your-instance.iw-erp.de/api/media/feedback_subscription', [
'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://your-instance.iw-erp.de/api/media/feedback_subscription"),
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://your-instance.iw-erp.de/api/media/feedback_subscription")
.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://your-instance.iw-erp.de/api/media/feedback_subscription"
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 with the iw_erp_api package
import 'package:iw_erp_api/clients/media_feedback_subscription_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await MediaFeedbackSubscriptionController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"entry": {
"author_name": "Beispiel",
"id": 42,
"text": "Text",
"guest_name": "Beispiel",
"headline": "string",
"feedback_type": "string",
"status": "string",
"status_note": "string",
"moderation_status": "string",
"vote_count": 1
},
"social_profile": {
"id": 42,
"public_name": "Beispiel",
"profile_picture_url": "https://vynst.de",
"public_about_me": "string",
"global_profile": true,
"name_display_type": "string",
"show_profile_picture": true,
"profile_picture_check_status": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"source": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
}
]Returns the entries the caller follows.
GET/api/media/feedback_subscription/user
Its own endpoint rather than a filter on cget, because cget needs the feedback scope and a member following their own wishes has no scope at all.
Query parameters
idinteger | |
deletedboolean | This property is used to mark an entity as deleted / archived |
entrystring | |
socialProfilestring | |
sourcestring | |
createdstring | |
updatedstring | |
searchStringstring | text to search for in the list |
orderFieldNamestring | name of the order field |
orderFieldSortstring | sorting modeAllowed: DESCASC |
pageinteger | page of the list |
pageSizeinteger | number of entries for each page |
withMaxPageNumberstring | returns the number of pages available as a header if this is set |
Responses
200Returns the caller's subscriptionsarray<MediaFeedbackSubscription>
Show fields (7)
idintegerPrimary key of the feedback subscription. Internal ID.
entryMediaFeedbackEntry7Feedback entry the subscription belongs to.
Show fields (17)
author_namestringDisplay name of the author, honouring the pseudonymity the person chose on their social profile. Falls back to the guest name, then to a neutral label — never to an email address.
idintegerPrimary key of the feedback entry. Internal ID.
boardMediaFeedbackBoard5Feedback board the entry belongs to.
headlinestringHeadline of the feedback entry.
textstringText of the feedback entry.
feedback_typestringType of the feedback, for example idea or problem.
statusstringStatus of the feedback, for example open, planned or done.
status_notestringPublicly visible reason for the current status. A declined wish without a reason is worse than no board at all, so this is exposed to every access tier.
moderation_statusstringModeration status, for example pending or approved.
social_profileMediaSocialProfile10Author when submitted by a logged-in person. Reuses the social profile so the pseudonymity settings a person already chose apply here too.
guest_namestringName of the guest who wrote the entry.
vote_countintegerDenormalized so lists can sort by popularity without a join. Maintained by MediaFeedbackVoteHelper; MediaFeedbackRecountCommand repairs it.
comment_countintegerNumber of comments on the entry.
duplicate_ofMediaFeedbackEntry7Merge target. Set together with STATUS_DUPLICATE.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
social_profileMediaSocialProfile10Profile of the subscriber.
Show fields (11)
idintegerPrimary key of the social profile. Internal ID.
public_namestringName shown publicly.
profile_picture_urlstringURL of the profile picture.
public_about_mestringText about the person shown publicly.
global_profilebooleanThe profile is a global profile across installations.
name_display_typestringHow the name is shown, for example full name or first name only.
show_profile_picturebooleanThe profile picture is shown.
profile_picture_check_statusstringPruefstatus des Profilbilds (KI-Pruefung, siehe MediaSocialProfilePictureHelper): null = nie geprueft (Pruefung aus), pending, approved, rejected. Nur ein freigegebenes Bild landet in profilePictureUrl, solange die Pruefung eingeschaltet ist.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
sourcestringSource of the subscription, for example the app or an e-mail.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request GET \
--url https://your-instance.iw-erp.de/api/media/feedback_subscription/user \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/media/feedback_subscription/user', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/media/feedback_subscription/user"
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://your-instance.iw-erp.de/api/media/feedback_subscription/user', [
'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://your-instance.iw-erp.de/api/media/feedback_subscription/user"),
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://your-instance.iw-erp.de/api/media/feedback_subscription/user")
.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://your-instance.iw-erp.de/api/media/feedback_subscription/user"
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 with the iw_erp_api package
import 'package:iw_erp_api/clients/media_feedback_subscription_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await MediaFeedbackSubscriptionController.getOwn();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"entry": {
"author_name": "Beispiel",
"id": 42,
"text": "Text",
"guest_name": "Beispiel",
"headline": "string",
"feedback_type": "string",
"status": "string",
"status_note": "string",
"moderation_status": "string",
"vote_count": 1
},
"social_profile": {
"id": 42,
"public_name": "Beispiel",
"profile_picture_url": "https://vynst.de",
"public_about_me": "string",
"global_profile": true,
"name_display_type": "string",
"show_profile_picture": true,
"profile_picture_check_status": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"source": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
}
]Subscribes the caller to an entry.
POST/api/media/feedback_subscription/user
Idempotent: subscribing twice reports already_subscribed rather than failing.
Query parameters
entryIdentifierrequiredstring | Identifier of the entry to follow |
Responses
200User subscribes to a feedback entryMediaFeedbackSubscription
Show fields (7)
idintegerPrimary key of the feedback subscription. Internal ID.
entryMediaFeedbackEntry7Feedback entry the subscription belongs to.
Show fields (17)
author_namestringDisplay name of the author, honouring the pseudonymity the person chose on their social profile. Falls back to the guest name, then to a neutral label — never to an email address.
idintegerPrimary key of the feedback entry. Internal ID.
boardMediaFeedbackBoard5Feedback board the entry belongs to.
headlinestringHeadline of the feedback entry.
textstringText of the feedback entry.
feedback_typestringType of the feedback, for example idea or problem.
statusstringStatus of the feedback, for example open, planned or done.
status_notestringPublicly visible reason for the current status. A declined wish without a reason is worse than no board at all, so this is exposed to every access tier.
moderation_statusstringModeration status, for example pending or approved.
social_profileMediaSocialProfile10Author when submitted by a logged-in person. Reuses the social profile so the pseudonymity settings a person already chose apply here too.
guest_namestringName of the guest who wrote the entry.
vote_countintegerDenormalized so lists can sort by popularity without a join. Maintained by MediaFeedbackVoteHelper; MediaFeedbackRecountCommand repairs it.
comment_countintegerNumber of comments on the entry.
duplicate_ofMediaFeedbackEntry7Merge target. Set together with STATUS_DUPLICATE.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
social_profileMediaSocialProfile10Profile of the subscriber.
Show fields (11)
idintegerPrimary key of the social profile. Internal ID.
public_namestringName shown publicly.
profile_picture_urlstringURL of the profile picture.
public_about_mestringText about the person shown publicly.
global_profilebooleanThe profile is a global profile across installations.
name_display_typestringHow the name is shown, for example full name or first name only.
show_profile_picturebooleanThe profile picture is shown.
profile_picture_check_statusstringPruefstatus des Profilbilds (KI-Pruefung, siehe MediaSocialProfilePictureHelper): null = nie geprueft (Pruefung aus), pending, approved, rejected. Nur ein freigegebenes Bild landet in profilePictureUrl, solange die Pruefung eingeschaltet ist.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
sourcestringSource of the subscription, for example the app or an e-mail.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request POST \
--url 'https://your-instance.iw-erp.de/api/media/feedback_subscription/user?entryIdentifier=42' \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/media/feedback_subscription/user?entryIdentifier=42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/media/feedback_subscription/user?entryIdentifier=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://your-instance.iw-erp.de/api/media/feedback_subscription/user?entryIdentifier=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://your-instance.iw-erp.de/api/media/feedback_subscription/user?entryIdentifier=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://your-instance.iw-erp.de/api/media/feedback_subscription/user?entryIdentifier=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://your-instance.iw-erp.de/api/media/feedback_subscription/user?entryIdentifier=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 with the iw_erp_api package
import 'package:iw_erp_api/clients/media_feedback_subscription_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await MediaFeedbackSubscriptionController.subscribe('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"entry": {
"author_name": "Beispiel",
"id": 42,
"text": "Text",
"guest_name": "Beispiel",
"board": {
"id": 42,
"name": "Beispiel",
"public_title": "Beispiel",
"public_description": "Text",
"image_url": "https://vynst.de",
"is_public": true,
"public_key": "string",
"sort_order": 1,
"allow_new_entries": true,
"allow_voting": true
},
"headline": "string",
"feedback_type": "string",
"status": "string",
"status_note": "string",
"moderation_status": "string"
},
"social_profile": {
"id": 42,
"public_name": "Beispiel",
"profile_picture_url": "https://vynst.de",
"public_about_me": "string",
"global_profile": true,
"name_display_type": "string",
"show_profile_picture": true,
"profile_picture_check_status": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"source": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
}Unsubscribes the caller from an entry.
DELETE/api/media/feedback_subscription/user/{entryIdentifier}
Path parameters
entryIdentifierrequiredstring |
Responses
200User unsubscribes from a feedback entryMediaFeedbackSubscription
Show fields (7)
idintegerPrimary key of the feedback subscription. Internal ID.
entryMediaFeedbackEntry7Feedback entry the subscription belongs to.
Show fields (17)
author_namestringDisplay name of the author, honouring the pseudonymity the person chose on their social profile. Falls back to the guest name, then to a neutral label — never to an email address.
idintegerPrimary key of the feedback entry. Internal ID.
boardMediaFeedbackBoard5Feedback board the entry belongs to.
headlinestringHeadline of the feedback entry.
textstringText of the feedback entry.
feedback_typestringType of the feedback, for example idea or problem.
statusstringStatus of the feedback, for example open, planned or done.
status_notestringPublicly visible reason for the current status. A declined wish without a reason is worse than no board at all, so this is exposed to every access tier.
moderation_statusstringModeration status, for example pending or approved.
social_profileMediaSocialProfile10Author when submitted by a logged-in person. Reuses the social profile so the pseudonymity settings a person already chose apply here too.
guest_namestringName of the guest who wrote the entry.
vote_countintegerDenormalized so lists can sort by popularity without a join. Maintained by MediaFeedbackVoteHelper; MediaFeedbackRecountCommand repairs it.
comment_countintegerNumber of comments on the entry.
duplicate_ofMediaFeedbackEntry7Merge target. Set together with STATUS_DUPLICATE.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
social_profileMediaSocialProfile10Profile of the subscriber.
Show fields (11)
idintegerPrimary key of the social profile. Internal ID.
public_namestringName shown publicly.
profile_picture_urlstringURL of the profile picture.
public_about_mestringText about the person shown publicly.
global_profilebooleanThe profile is a global profile across installations.
name_display_typestringHow the name is shown, for example full name or first name only.
show_profile_picturebooleanThe profile picture is shown.
profile_picture_check_statusstringPruefstatus des Profilbilds (KI-Pruefung, siehe MediaSocialProfilePictureHelper): null = nie geprueft (Pruefung aus), pending, approved, rejected. Nur ein freigegebenes Bild landet in profilePictureUrl, solange die Pruefung eingeschaltet ist.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
sourcestringSource of the subscription, for example the app or an e-mail.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request DELETE \
--url https://your-instance.iw-erp.de/api/media/feedback_subscription/user/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/media/feedback_subscription/user/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/media/feedback_subscription/user/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://your-instance.iw-erp.de/api/media/feedback_subscription/user/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://your-instance.iw-erp.de/api/media/feedback_subscription/user/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://your-instance.iw-erp.de/api/media/feedback_subscription/user/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://your-instance.iw-erp.de/api/media/feedback_subscription/user/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 with the iw_erp_api package
import 'package:iw_erp_api/clients/media_feedback_subscription_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await MediaFeedbackSubscriptionController.unsubscribe('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"entry": {
"author_name": "Beispiel",
"id": 42,
"text": "Text",
"guest_name": "Beispiel",
"board": {
"id": 42,
"name": "Beispiel",
"public_title": "Beispiel",
"public_description": "Text",
"image_url": "https://vynst.de",
"is_public": true,
"public_key": "string",
"sort_order": 1,
"allow_new_entries": true,
"allow_voting": true
},
"headline": "string",
"feedback_type": "string",
"status": "string",
"status_note": "string",
"moderation_status": "string"
},
"social_profile": {
"id": 42,
"public_name": "Beispiel",
"profile_picture_url": "https://vynst.de",
"public_about_me": "string",
"global_profile": true,
"name_display_type": "string",
"show_profile_picture": true,
"profile_picture_check_status": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"source": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
}Removes a subscription as an administrator.
DELETE/api/media/feedback_subscription/{identifier}
Path parameters
identifierrequiredstring |
Responses
200Delete a MediaFeedbackSubscriptionMediaFeedbackSubscription
Show fields (7)
idintegerPrimary key of the feedback subscription. Internal ID.
entryMediaFeedbackEntry7Feedback entry the subscription belongs to.
Show fields (17)
author_namestringDisplay name of the author, honouring the pseudonymity the person chose on their social profile. Falls back to the guest name, then to a neutral label — never to an email address.
idintegerPrimary key of the feedback entry. Internal ID.
boardMediaFeedbackBoard5Feedback board the entry belongs to.
headlinestringHeadline of the feedback entry.
textstringText of the feedback entry.
feedback_typestringType of the feedback, for example idea or problem.
statusstringStatus of the feedback, for example open, planned or done.
status_notestringPublicly visible reason for the current status. A declined wish without a reason is worse than no board at all, so this is exposed to every access tier.
moderation_statusstringModeration status, for example pending or approved.
social_profileMediaSocialProfile10Author when submitted by a logged-in person. Reuses the social profile so the pseudonymity settings a person already chose apply here too.
guest_namestringName of the guest who wrote the entry.
vote_countintegerDenormalized so lists can sort by popularity without a join. Maintained by MediaFeedbackVoteHelper; MediaFeedbackRecountCommand repairs it.
comment_countintegerNumber of comments on the entry.
duplicate_ofMediaFeedbackEntry7Merge target. Set together with STATUS_DUPLICATE.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
social_profileMediaSocialProfile10Profile of the subscriber.
Show fields (11)
idintegerPrimary key of the social profile. Internal ID.
public_namestringName shown publicly.
profile_picture_urlstringURL of the profile picture.
public_about_mestringText about the person shown publicly.
global_profilebooleanThe profile is a global profile across installations.
name_display_typestringHow the name is shown, for example full name or first name only.
show_profile_picturebooleanThe profile picture is shown.
profile_picture_check_statusstringPruefstatus des Profilbilds (KI-Pruefung, siehe MediaSocialProfilePictureHelper): null = nie geprueft (Pruefung aus), pending, approved, rejected. Nur ein freigegebenes Bild landet in profilePictureUrl, solange die Pruefung eingeschaltet ist.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
sourcestringSource of the subscription, for example the app or an e-mail.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
curl --request DELETE \
--url https://your-instance.iw-erp.de/api/media/feedback_subscription/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/media/feedback_subscription/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/media/feedback_subscription/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://your-instance.iw-erp.de/api/media/feedback_subscription/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://your-instance.iw-erp.de/api/media/feedback_subscription/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://your-instance.iw-erp.de/api/media/feedback_subscription/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://your-instance.iw-erp.de/api/media/feedback_subscription/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 with the iw_erp_api package
import 'package:iw_erp_api/clients/media_feedback_subscription_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await MediaFeedbackSubscriptionController.delete('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"entry": {
"author_name": "Beispiel",
"id": 42,
"text": "Text",
"guest_name": "Beispiel",
"board": {
"id": 42,
"name": "Beispiel",
"public_title": "Beispiel",
"public_description": "Text",
"image_url": "https://vynst.de",
"is_public": true,
"public_key": "string",
"sort_order": 1,
"allow_new_entries": true,
"allow_voting": true
},
"headline": "string",
"feedback_type": "string",
"status": "string",
"status_note": "string",
"moderation_status": "string"
},
"social_profile": {
"id": 42,
"public_name": "Beispiel",
"profile_picture_url": "https://vynst.de",
"public_about_me": "string",
"global_profile": true,
"name_display_type": "string",
"show_profile_picture": true,
"profile_picture_check_status": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"source": "string",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
}