Projekt- und Organisationslebenszyklus
Das aktuelle Projekt ist das zuletzt verwendete. Jeder JSON-Umschlag enthält Organisations- und Projektkontext; die menschliche Ausgabe benennt beide. Identitätsanmeldeinformationen sind durch die Mitgliedschaft des ausgewählten Projekts begrenzt. Der Wiederholungsstatus bleibt pro Projekt getrennt.
project list
project token --projects IDS
project use ID
project create NAME [--organization-id ID | --organization NAME]
project moves
project move --organization-id ID
project transfer-owner --user-id ID
project deletion-preview
project delete --name NAME --revision N --yes
organization list
organization rename ID NAME
project export DIR [--no-media] [--since YYYY-MM-DD]
agent disconnect --yes [--allow-lockout]
agent revoke-identity --yesproject list prüft die zugänglichen Mitgliedschaften. project token --projects IDS ersetzt die Projekte, die das Token dieser Anmeldung abdeckt, durch 1 bis 64 Projekt-IDs mit erteilter Zustimmung, durch Kommas oder Leerzeichen getrennt. project use wählt eines aus. Das Erstellen erfordert einen in der Organisation eindeutigen Namen und verwendet standardmäßig die Organisation des aktuellen Projekts, dann die Organisation, die Sie verwalten; ist keine genannt, hat die Organisation Vorrang, zu der die verifizierte E-Mail-Domain des Inhabers gehört. Die verantwortliche Person wird Inhaber. Jeder Plan begrenzt, wie viele Projekte eine Organisation enthält; jede Person hat eine kostenlose Standard-Organisation, und eine zweite erfordert Plus, Premium oder Enterprise. Ohne aktuelles Projekt und ohne genannte Organisation ordnet der Server das Projekt auf dieselbe Weise zu. --organization NAME startet nur für eine Person, die keine kostenlose hält, eine neue Organisation; andernfalls wird das Erstellen mit free_organization_limit abgelehnt, dessen Detail die zu verwendende Organisation nennt. Die Einschreibung unterliegt Ratenbegrenzungen.
Der Inhaber kann das Projekt in ein von project moves zurückgegebenes Ziel verschieben oder die Inhaberschaft an ein bestehendes verifiziertes Mitglied übertragen. Ein Verschieben nimmt die Bildschirme mit, und eine Zielorganisation, die bereits so viele Projekte enthält, wie ihr Plan erlaubt, lehnt es mit project_limit_reached ab. Das Löschen verwendet den exakten aktuellen Namen und die positive Revision aus seiner Vorschau. Es erfordert null nicht archivierte Bildschirme, keinen eigenen Plan und keine Live-Werbung. Nur der Inhaber des Projekts oder ein Administrator seiner Organisation darf es löschen; ein Agent löscht für seine verantwortliche Person, oder allein nur das Projekt, das er eingeschrieben hat, solange keine Person diese Einschreibung angenommen hat. Es sendet Mitgliedern eine E-Mail und behält einen Tombstone bei.
Organisationsnamen können sich wiederholen; verwenden Sie beim Umbenennen einer Organisation, die Sie verwalten, ausdrückliche IDs. Eine Organisation hat bestimmte Admins und Heimmitglieder; Admins laden weitere Admins und Mitglieder per E-Mail aus dem Dashboard ein. organization list markiert free- und plan_required-Organisationen, meldet new_organization_allowed und nennt das Bibliotheksprojekt einer Organisation in library_project_id, wenn sie eines hat. Ihre Projektliste gewährt keinen Zugriff auf Projektinhalte. Die Organisation zahlt: Ihr Plan, ihr Speicher und ihr Limit für Agentenanfragen werden von ihren Projekten gemeinsam genutzt.
login --project ID fragt nach diesem Projekt mit derselben Identität. Nur die ausdrückliche Genehmigung dieser Anfrage gewährt eine Mitgliedschaft. agent disconnect --yes widerruft eine Mitgliedschaft (--allow-lockout erlaubt außerdem, den letzten Agenten des Projekts zu widerrufen); agent revoke-identity --yes widerruft separat die Identität und alle Mitgliedschaften. Eine mehrdeutige Antwort behält lokale Anmeldeinformationen und Wiederholungsstatus für die Abstimmung bei.
Werbeberichte behalten Abrechnungsdaten über die Ereignisaufbewahrung hinaus. Lesen Sie deren Metadaten: Fehlende historische Wiedergaben oder unbekannte genehmigte Dauer sind unbekannt, niemals null. Ein Bericht kann vollständige finanzielle Gesamtsummen und unvollständige Ergebnisverläufe enthalten.
Projekte, Einladungen und Diagnosen
Projektbefehle listen Mitgliedschaften auf, wählen ein Projekt aus, erstellen Projekte und verwalten deren Namen, Eigentümer, Verschiebungen und Löschungen. Einladungen bringen Personen in Projekte oder Werbenetzwerke.
project show#
Den Projektdatensatz lesen.
project show
Keine Parameter.
screenrig project show
project rename#
Legen Sie den Namen fest, den Personen im Dashboard-Projektumschalter sehen.
project rename NAME
project token#
Die Projekte ersetzen, die das Token dieser Anmeldung abdeckt.
project token --projects IDS| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--projects IDS | string | ja | keine | 1 bis 64 verschiedene Projekt-IDs prj_, durch Kommas oder Leerzeichen getrennt, denen diese Identität jeweils zugestimmt hat. |
screenrig project token --projects prj_01EXAMPLEPROJECT0000,prj_01EXAMPLEOTHER000000Ersetzt die gesamte Teilmenge; project list allein gewährt keinen Zugriff. Eine verlorene Antwort behält die Rotationsanfrage-ID für eine identische Wiederholung.
project capabilities#
Lese den Plan des Projekts, unabhängige screens und advertiser Feature-Flags sowie den effektiven Funktionsumfang. Eine Routenverweigerung hat Vorrang vor einer veralteten Funktionslesung.
project capabilities
project uptime#
Lese die tägliche Bildschirmverfügbarkeit des Projekts über UTC-Tage.
project uptime [--day-from YYYY-MM-DD] [--day-to YYYY-MM-DD] [--format json|csv|xlsx|pdf] [--output FILE]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--day-from YYYY-MM-DD | string | nein | 29 Tage vor --day-to | Erster UTC-Tag, einschließlich. |
--day-to YYYY-MM-DD | string | nein | heute | Letzter UTC-Tag, inklusive. Maximal 366 Tage nach --day-from. |
--format FORMAT | string | nein | json | json ist die Antwort des Befehls. csv, xlsx oder pdf schreibt alle Zeilen nach --output und antwortet mit path, bytes, sha256, content_type und format der Datei. |
--output FILE | Pfad | nein | ./project-uptime.FORMAT | Die Datei für csv, xlsx oder pdf: ein Dateipfad, kein Verzeichnis und nicht -. Eine vorhandene Datei wird ersetzt. Nicht mit json. |
screenrig project uptime
screenrig project uptime --day-from 2026-09-01 --day-to 2026-09-30Bereich und Standardwerte entsprechen denen von screen uptime. data.items listet eine Zeile pro UTC-Tag, älteste zuerst: online_s und offline_s summiert über die Bildschirme mit an diesem Tag aufgezeichnetem Status, availability, coverage (der Anteil der Tageszeit dieser Bildschirme mit aufgezeichnetem Status) und screens (wie viele einen Status hatten). Die heutige Zeile umfasst bisher beendete Intervalle; screen list zeigt, wer jetzt online ist.
project health-trend#
Lese den Gesundheitszustand der Flotte nach UTC-Stunden: meldende Bildschirme, heiß, Display getrennt, Abstürze.
project health-trend [--from TIME] [--to TIME] [--format json|csv|xlsx|pdf] [--output FILE]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--from TIME | string | nein | 24 Stunden vor --to | Inklusive Stundenbeginn: ein RFC-3339-Zeitpunkt mit Sekunden und Offset (normalisiert auf UTC), now, oder ein Alter wie 7d, 12h oder 30m. |
--to TIME | string | nein | jetzt | Exklusives Ende, in denselben Formen. Höchstens 93 Tage nach --from. |
--format FORMAT | string | nein | json | json ist die Antwort des Befehls. csv, xlsx oder pdf schreibt alle Zeilen nach --output und antwortet mit path, bytes, sha256, content_type und format der Datei. |
--output FILE | Pfad | nein | ./health-trend.FORMAT | Die Datei für csv, xlsx oder pdf: ein Dateipfad, kein Verzeichnis und nicht -. Eine vorhandene Datei wird ersetzt. Nicht mit json. |
screenrig project health-trend
screenrig project health-trend --from 7ddata.items listet den Zustand der Flotte nach UTC-Stunden: hour, screens_reporting, hot (Spitzentemperatur bei oder über 80 °C), display_disconnected und crashing (3 oder mehr Abstürze in 24 Stunden). Die CLI folgt next_cursor bis zum Ende und antwortet jede Stunde mit next_cursor null. Stunden folgen Berichten um bis zu etwa 5 Minuten.
project export#
Die Daten dieses Projekts in offenen Formaten in ein Verzeichnis schreiben.
project export <DIR> [--no-media] [--since YYYY-MM-DD]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<DIR> | Pfad | ja | keine | Das zu schreibende Verzeichnis. Es wird bei Bedarf erstellt, und ein erneuter Lauf setzt es fort und aktualisiert es. |
--no-media | boolean | nein | aus | Die originalen Mediendateien überspringen; das Manifest listet sie weiterhin mit ihren Hashes auf. |
--since YYYY-MM-DD | string | nein | so weit zurück, wie der Plan die Daten aufbewahrt | Erster UTC-Tag der CSV-Dateien für Wiedergaben, Betriebszeit und Wiedergabeaufzeichnungen sowie des Ereignisprotokolls. |
screenrig project export ./export
screenrig project export ./export --no-media --since 2026-01-01DIR ruft JSON ab für das Projekt, Bildschirme, Bildschirmordner, Tags, Zeitpläne pro Bildschirm, Playlists mit jeder Revision, Kampagnen, Direktkampagnen, Karten und ihre Daten, Datenquellen (nie deren Anmeldeinformationen), Benachrichtigungen, Webhooks (ohne Signatur-Secrets oder Empfänger-URLs), Stummschaltungen, Anwendungsmetadaten, Trigger und Berichtsabonnements; die originalen Mediendateien in media/files, wobei media/manifest.json den SHA-256 jeder Datei enthält; CSV für Wiedergaben, Wiedergabeaufzeichnungen, Betriebszeit und Alarme in data/; und das Ereignisprotokoll in log/events.jsonl. export.json wird zuletzt geschrieben und listet jede Datei mit Größe und SHA-256 sowie das Ergebnis jedes Abschnitts auf (ok, skipped oder failed). Ein erneuter Lauf behält vollständige Mediendateien und setzt unvollständige fort. Ein Abschnitt, den die Anmeldeinformation nicht lesen kann, ist skipped; die Warnung export_section_failed bedeutet, dass die Kopie unvollständig ist, führen Sie also denselben Befehl erneut aus. Anwendungsdateien werden mit complete: false und der Warnung export_application_content_omitted als ausgelassen gemeldet, auch mit --no-media: Bewahren Sie die originalen Anwendungsarchive zur Wiederherstellung auf. Jede Anfrage ist eine abgerechnete API-Anfrage, und Mediendownloads sind Egress.
invitations#
Erstellen, auflisten oder widerrufen Sie Einladungen für Projektmitglieder, Uploader und Anzeigenkäufer.
invitations create (--email ADDRESS[,ADDRESS] | --link) [--kind member|uploader|ad-buyer]
[--screen-id IDS] [--screen-folder-id IDS] [--slot-id IDS] [--policy trusted|review_required]
[--folder-id IDS] [--playlist-id IDS] [--access propose|manage]
invitations list [--kind member|ad-buyer] [--status STATUS]
invitations revoke ID--kind verwendet standardmäßig member. E-Mail-Zustellung ist Standard und läuft nach sieben Tagen ab. --email akzeptiert durch Kommas getrennte Empfänger, bis zu fünfzig pro Anfrage. --link ist nur für Mitglieder, nennt keinen Empfänger und gibt eine 24-Stunden-Einladungs-URL einmalig zur direkten Übergabe an die vorgesehene Person zurück. Geben Sie diese URL niemals in Protokolle, Notizen oder ein geteiltes Transkript ein. Listen geben sie nie zurück. Pro Organisation dürfen höchstens 50 Einladungen offen sein.
Werbekäufer verwenden nur E-Mail und benötigen einen eigenen Bildschirm- oder Slot-Bereich (oder beides). --screen-id und --slot-id akzeptieren durch Kommas getrennte IDs; --policy wählt trusted oder review_required. Statusfilter sind queued, sent, issued, accepted, revoked, expired und failed.
--kind uploader lädt eine Person ein, die nur in den mit --folder-id angegebenen Medienordnern (mindestens einer) und den mit --playlist-id angegebenen Playlists arbeitet: Sie lädt Medien in diese Ordner hoch und fügt Seiten dieser Playlists hinzu, ersetzt und entfernt sie, sonst nichts. Ihre Änderungen warten auf eine Überprüfung, außer bei --access manage, was nur jemand gewähren darf, der Überprüfungen genehmigen kann. Eine --kind member-Einladung mit --screen-folder-id (jeder Ordner umfasst alle Ordner darin) oder --screen-id beschränkt die annehmende Person auf diese Bildschirme. --folder-id, --playlist-id und --access erfordern --kind uploader, und --slot-id und --policy erfordern --kind ad-buyer. Siehe Authentifizierung.
screenrig invitations create --email teammate@example.com
screenrig invitations create --kind ad-buyer --email buyer@example.com --screen-id scr_LOBBY --policy review_requiredAgenten akzeptieren keine Einladungen. Die eingeladene Person öffnet die E-Mail, meldet sich an oder erstellt eine Passkey und akzeptiert im Dashboard. Die Link-Anmeldung überprüft zuerst ihre E-Mail. Das Widerrufen einer akzeptierten Einladung hebt keine Mitgliedschaft auf; verwenden Sie die Käufer-Mitgliedschaftskontrollen, um den Werbezugang zu widerrufen.
agent status#
Melden, ob diese Installation eine verwendbare Anmeldeinformation enthält.
agent statusKeine Parameter.
screenrig agent statusNur lesend. Ändert niemals lokalen oder Serverzustand und kostet nichts. Das Ergebnis enthält die Sitzung access, deren effective_access und, wenn die Überprüfungseinstellung des Projekts oder ein Mitglied, das nicht genehmigen kann, sie niedriger hält, access_limited_by (project oder person). Beschränkt das Projekt diesen Agenten auf Bildschirmordner und Bildschirme, listet screen_scope sie auf (folder_ids, jeweils mit allen Ordnern darin, und screen_ids), und person_screen_scope ist der Bereich der für den Agenten verantwortlichen Person; der Agent handelt nur auf den Bildschirmen, die beide erlauben, und beide fehlen bei einem Agenten des gesamten Projekts. Außerhalb des Bereichs antwortet ein Befehl mit outside_screen_scope (Exit 3). Neue Projektnotizen oder zur Überprüfung fällige Notizen fügen die Warnung notes_waiting hinzu.
agent disconnect#
Die Mitgliedschaft dieses Agenten im aktuellen Projekt widerrufen.
agent disconnect --yes [--allow-lockout]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--yes | boolean | ja | aus | Den Widerruf bestätigen. Ohne dies wird nichts gesendet. |
--allow-lockout | boolean | nein | aus | Das Trennen des letzten Agenten des Projekts erlauben. Ohne dies lehnt der Server mit agent_lockout_risk ab. |
screenrig agent disconnect --yesWiderruft nur die Mitgliedschaft im aktuellen Projekt: Die Identität, die anderen Mitgliedschaften, das Projekt und seine Bildschirme bleiben bestehen. Lokale Anmeldeinformationen und Wiederholungsstatus bleiben erhalten, wenn die Antwort mehrdeutig ist, sodass ein erneutes Ausführen sicher ist.
agent revoke-identity#
Diese Identität und alle ihre Projektmitgliedschaften widerrufen.
agent revoke-identity --yes| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--yes | boolean | ja | aus | Den Widerruf für alle Projekte bestätigen. |
screenrig agent revoke-identity --yesEin bestätigter Widerruf löscht die lokalen Anmeldeinformationen und ausstehende Arbeit für jedes zwischengespeicherte Projekt. Ein mehrdeutiger Fehler behält sie bei.
login#
Diese Installation mit einem bestehenden Konto anmelden, mit Zustimmung einer Person im Dashboard, oder als Service-Client.
login [--project ID] [--access read|propose|manage] [--name NAME] [--no-wait] [--resume ID]
login --client-id ID (--client-key-file PATH | --client-secret-file PATH)| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--project ID | string | nein | keine | Schlagen Sie das prj_-Projekt vor, das die Person genehmigt. |
--access LEVEL | string | nein | verwalten | read, propose oder manage. Die Person trifft die endgültige Entscheidung. |
--name NAME | string | nein | keine | Benennen Sie diese Installation, maximal 80 Zeichen. |
--no-wait | boolean | nein | aus | Gibt status: pending mit der Adresse, dem Code und einem login_-Handle zurück. |
--resume ID | string | nein | keine | Warten Sie auf die ausstehende Anmeldung, die --no-wait gestartet hat. |
--client-id ID | string | nein | keine | Diese Konfiguration als Service-Client (scl_…) anmelden, statt als Person, ohne Zustimmung. Nicht mit --no-wait, --project, --access oder --name. |
--client-key-file PATH | Pfad | mit --client-id | keine | Der private Schlüssel des Clients, ein JWK oder PEM. Genau eine von Schlüsseldatei und Secret-Datei. |
--client-secret-file PATH | Pfad | mit --client-id | keine | Eine Datei, die das Secret des Clients enthält. |
screenrig login --access read
screenrig --config ci.json login --client-id scl_01EXAMPLECLIENT0000 --client-key-file ci-key.pemGibt die Dashboard-Adresse und einen achtstelligen Code auf stderr aus, wartet dann bis zu 24 Stunden. Die Person prüft, ob der Code übereinstimmt, und drückt einmal Verbinden, ohne dass nach einer Dashboard-Anmeldung in der letzten Stunde eine zweite Passkey-Abfrage erfolgt. Der Umschlag meldet status: signed_in, das Projekt, die Organisation und access. Ein erneutes Ausführen auf einer angemeldeten Installation fügt ein Projekt hinzu oder erhöht von Nur-Lesen oder Vorschlagen auf Verwalten. Ablehnung ist login_denied und Ablauf ist login_expired.
Die Konfiguration eines Service-Clients muss eine eigene Datei sein: Jeder spätere Befehl mit diesem --config meldet sich als der Client an, liest dabei jedes Mal die Schlüssel- oder Secret-Datei und hält das Token im Speicher.
logout#
Anmeldung dieser Installation beenden und deren Tokens entfernen.
logoutKeine Parameter.
screenrig logoutWiderruft die Anmeldung auf dem Server, entfernt dann die gespeicherten Tokens und meldet status: signed_out. In der Konfiguration eines Service-Clients entfernt es den gespeicherten Client und lässt dessen Schlüssel- oder Secret-Datei bestehen. Ein Fehler, der den Server möglicherweise nicht erreicht hat, behält sie, sodass ein erneutes Ausführen sicher ist. Führen Sie screenrig login aus, um sich erneut anzumelden.
dashboard#
Öffnen Sie die gewöhnliche Dashboard-URL. Dieser Befehl erstellt keinen Anmeldelink, keine Sitzung und benötigt keine Agenten-Anmeldeinformationen.
dashboard [open]
screenrig dashboard
Das Dashboard zeigt die Projekte der Person nach der Anmeldung an. Die Browser-Projektauswahl ändert nicht das an einen Agenten gebundene Projekt.
dashboard reset-sign-in#
Anmelderücksetzungs-E-Mail ohne Agenten-Anmeldeinformationen anfordern.
dashboard reset-sign-in --email ADDRESSDie Bestätigung verrät nicht, ob die E-Mail eine Anmeldung hat. Die per E-Mail gesendete Zurücksetzung läuft nach einer Stunde ab; die Person erstellt einen neuen Passkey. Die Fertigstellung ersetzt ihre Anmeldeinformationen und widerruft andere Sitzungen. Solange die Inhaberschaft des Projekts aus der Einschreibung noch aussteht, sendet --email mit der ursprünglichen Einschreibungsadresse außerdem eine neue siebentägige Einschreibungseinladung per E-Mail; die Person öffnet sie und nimmt sie mit ihrer Anmeldung an, um die Inhaberschaft zu übernehmen.
doctor#
Prüfen Sie diese Installation und melden Sie jede Prüfung mit Namen.
doctor [--repair-config]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--repair-config | boolean | nein | aus | Berechtigungen für eine vorhandene Konfigurationsdatei, die für Gruppe oder andere lesbar ist, verschärfen. |
screenrig doctordata.checks benennt jede Prüfung und ihren Status (pass, warn oder fail): die Node-Laufzeit, den aufgelösten Konfigurationspfad und dessen Berechtigungen, die gespeicherte Anmeldeinformation und das Ende der Anmeldung, die Steuerungsebene und ihre Service-Routen, die beworbene feedback-Fähigkeit und die optionale Medientoolchain (ffmpeg, ffprobe, encoder_libx264, encoder_libx265, encoder_libwebp, cwebp, filter_hdr_tonemap).
Jede fehlgeschlagene Prüfung lässt doctor mit einem Nicht-Null-Exit enden, ein warn dagegen nicht, lesen Sie also die einzelnen Namen, bevor Sie die Installation als nicht gesund markieren. Eine fehlende Medientoolchain betrifft nur die Befehle, die Medien konvertieren: media upload, media upload-batch, media replace und playlist init.
version#
Drucken Sie die gebündelte CLI-Version und ihren Protokolladapter.
version
Keine Parameter.
screenrig version
Führen Sie dies zuerst in einer Sitzung aus. Ein erfolgreiches Envelope beweist, dass der Launcher die gebündelte CLI aufgelöst hat. --version und -V machen dasselbe von überall in der Befehlszeile.
Abrechnung
Planlimits und Werbebeträge des Projekts. Anfragen, Speicher, Wiedergabe und alles andere, was ein Projekt tut, werden nie berechnet; die Beträge hier betreffen nur Werbung. Alle drei Befehle sind kostenlos, und Lesezugriffe auf /api/billing zählen nicht zum Stundenlimit für Agentenanfragen.
billing usage#
Die Speicher- und Agentenanfragelimits des Plans lesen.
billing usageKeine Parameter.
screenrig billing usagedata.stored_bytes ist der genutzte Speicher und data.allowance.storage_bytes das Speicherlimit des Plans; ein Upload darüber hinaus wird mit quota_exceeded abgelehnt. data.allowance.requests_per_hour ist das Stundenlimit für Agentenanfragen (agent_requests_per_hour in der Ausgabe für Menschen). Die in dieser Stunde verbleibenden Anfragen stehen im Header RateLimit jeder gezählten Antwort.
billing balance#
Werbebeträge in US-Dollar lesen: verbleibend, reserviert, verfügbar und auszahlbare Einnahmen.
billing balanceKeine Parameter.
screenrig billing balanceWerbetreibende zahlen per Karte oder x402-Maschinenzahlung, Preise und Einnahmen sind in US-Dollar, und Auszahlungen beginnen am 1. Januar 2027. Die Ausgabe für Menschen zeigt Dollar; das JSON behält die dezimalen mcr-Felder, wobei 10.000.000 mcr US$1 sind.
billing statement#
Die gebuchten Hauptbucheinträge lesen.
billing statement [--cursor CURSOR] [--limit COUNT]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--cursor CURSOR | string | nein | erste Seite | Die next_cursor eines vorherigen Abrechnungsbelegs. |
--limit COUNT | integer | nein | Server-Standard | Die maximale Anzahl zurückzugebender Einträge. |
screenrig billing statement --limit 20Einträge sind gebuchte Hauptbuchzeilen in US-Dollar in stabiler Reihenfolge. Reservierungen erscheinen als Sperren, nicht als gebuchte Einnahmen oder Ausgaben, und eine Korrektur verweist auf den ursprünglichen Eintrag, statt ihn umzuschreiben. Eine Werbebelastung ist für den Käufer sichtbar; ein Verkäufer sieht Brutto, Servicegebühr und Netto.