Packages and their versions
Which version of the API client, Apps SDK, CLI, and contracts applies and what changed for developers in each version.
28 minute readChangesUpdated: 10/25/2026
On this page
Before you start
- For
- developers who work with one of these packages and want to know what changed in a version.
- Prerequisite
- none.
Version and changes of the packages for developers — API client, Apps SDK, CLI, and contracts, newest first.
The list is built with every new version from the change notes of the platform and shows their section for developers. There is no public way to obtain the packages today; the page says which version applies and what changed in it.
| Package | Version |
|---|---|
@szenera/cli |
0.4.0 |
@szenera/client |
0.6.0 |
@szenera/cli
0.4.0 · 2026-10-25
Breaking changes
- The stored sign-in state carries the fields
tokenandexpiresAt. Upgrade: An old sign-in state counts as signed out, and the next sign-in writes the new one. (#821)
Added
- New commands
szenera proof list,szenera proof show, andszenera proof download. (#822) - New commands
szenera analytics overview,szenera analytics explore, andszenera analytics delivery <acp_…>. (#822) - New commands
advertiser list,advertiser get,advertiser create,campaign list,campaign get,booking list,creative list, andcreative approve. (#822)
Changed
- The archive follows the client with the revenue statements, without a new command. (#822)
- The archive follows the client without the read routes of the minute counting and the insights. The commands stay. (#822)
- The archive follows the client with the panel sources
cec,ddc, andnone. The commands stay. (#822) - The command line ships the client that knows a sign-in host of its own. Without a setting, nothing changes. (#825)
- The archive follows the client with
campaignIdper proof of the campaign report. The commands stay. (#822) - The archive bundles the current state of the contracts, and the commands of
szenerastay the same. (#847) szenera playlist getshows an ad break as "Werbeblock · 3 Plätze à 10 s" with its duration. (#822)
0.3.0 · 2026-10-23
Breaking changes
- Die JSON-Ausgabe der Kommandozeile nennt dieselben Namen wie die API. Umstieg: Skripte, die die JSON-Ausgabe lesen, auf die englischen Feldnamen umstellen. (#761) (German only)
szenera api-key revoke <akm_…> --compromisednennt den Grund des Widerrufs.szenera api-key listmit einem Schlüssel-Profil antwortet 401. Umstieg: Fürszenera api-key listein Profil mit Sitzung verwenden. (#762) (German only)
Added
- Die Typen folgen der API: Feed-Katalog, Quellen für den Betrieb und der Fehlercode
FeedSource.NotFound. (#801) (German only) - Neue Aufrufe: Zusammenfassung, Sammelaktion und Wiederherstellen von Benachrichtigungen, dazu
stateundgroupKeyan der Liste. (#795) (German only) playerIdan der Vorschau der Widget-Daten und der Lesebereichplayer-location. (#801) (German only)- Standorte:
regionundopeningHours, dazu das Ereignisfleet.location.opening-hours-changed. (#801) (German only) - Widget-Definitionen des Katalogs kennen
sizeundpreview.states, Ansichten des Stores kennensize. (#801) (German only)
0.2.3
Changes
GET /v1/audit/bulk/:correlationIdentfällt und mit ihmclient.audit.auditBulkund das SchemaGetBulkActionDetailResponse. (#742) (German only)- Das Recht
audit.bulk.read, die Ereignisartaudit.bulk-action.completedund der FehlercodeInternal.AuditBulkActionDetailRepositoryUnavailableentfallen. (#742) (German only)
0.2.2
Changes
@szenera/contracts: neuCatalogAppSchema,AppReleaseNotesSchema(Notizen je Zielgruppe und Sprache),AppReleaseEventSchema,RestoreAppRelease*,ListAppReleaseHistory*undGetAppVersionHistory*. EinAppReleaseträgtnotes, die Wire-Form daneben weiterreleaseNotes.PATCH /v1/platform/app-catalog/apps/{appId}/releases/{id}nimmtnotesje Zielgruppe oder wie bisherreleaseNotes. (#677) (German only)- Ein Grant trägt
installedReleaseId,pendingReleaseId,pendingReasonsundpendingDeadline, ein Zustimmungs-NachweisreleaseId, eine offene ZustimmungfromVersion,toVersion,reasonsunddeadline. Entfallen sindautoUpgradeam Grant undConfigSchemaChangedPayloadSchema. (#677) (German only) GET /v1/apps/{appId}/historyliefert einer Organisation die Fassungen einer App, die stable erreicht haben, mit Datum und „Neu in dieser Fassung" in der erbetenen Sprache (?locale=en-US, ohne Angabe Deutsch). (#677) (German only)@szenera/api-client: neuclient.platform.appCatalogAppsHistory.list,client.platform.appCatalogAppsReleases.restoreundclient.appCatalog.appsHistory.list.@szenera/client: neuclient.appCatalog.appsHistory.list.@szenera/clibündelt die neuen Verträge, ihre Befehle bleiben, wie sie sind. (#677) (German only)- Das scenes-Bündel der Momentaufnahme trägt
appVersions(je App die eine Fassung des Displays) sowieappRendererHostsundappWidgetTypesje<appId>@<version>, alle mit der Vorgabe{}. Die Pins der Szenen und Widgets nennen dieselbe Fassung. (#683) (German only) displayAppVersion(pins, installed)in@szenera/contracts/compositionrechnet die Fassung eines Displays: die installierte, bei gehaltenen Pins älterer Hauptnummern die niedrigste davon. (#683) (German only)- Die neue Befundart
AppVersionHeldist immer eine Warnung und trägtappId,appName,version,installedVersionundwidgetIds. Die KI-Anbindung erklärt sie. (#683) (German only) @szenera/client: Der Filtertypeder Integritäts-Befunde einer Szene kenntAppVersionHeld.@szenera/clibündelt den erweiterten Vertrag, ihre Befehle bleiben, wie sie sind. (#683) (German only)- Ein Zustimmungs-Nachweis trägt
version, die Nummer der Fassung, der zugestimmt wurde (nullnur bei Nachweisen von davor, deren Fassung schon fehlte). Eine Installation trägtdeclinedAtnebendeclinedVersion. (#681) (German only) GET /v1/apps/{appId}/historynennt je FassungreleaseId, dieselbe Kennung wie an Installation, Nachweis und Update-Entscheidung. (#681) (German only)@szenera/client:client.appCatalog.appsHistory.listnennt je FassungreleaseId, eine Installation trägtdeclinedAt.@szenera/clibündelt die erweiterten Verträge, ihre Befehle bleiben, wie sie sind. (#681) (German only)@szenera/widget-editor:EditorShellnimmtappsAwaitingUpdate(Apps samt Weg zur Entscheidung). Der App-Bereich zeigt ihre Widgets mit „Update wartet“, ein Klick führt zur Entscheidung statt einzufügen. (#681) (German only)- Neue Routen der Organisation:
GET /v1/me/apps/updatesundGET /v1/me/apps/{appId}/updateliefern die Entscheidung über ein Update (Fassung von und nach, Gründe, Neues, Änderungen in Klartext, Folgen, Frist, ob Ablehnen noch geht),POST /v1/me/apps/{appId}/update/acceptund…/update/rejectentscheiden mit dem Hash der Ziel-Fassung. (#680) (German only) - Kanäle mit Publikum:
GET|PUT /v1/me/apps/beta-enrollmentundPOST|DELETE /v1/me/apps/{appId}/beta-enrollmenttragen eine Organisation für Fassungen aus beta ein, global oder je App. Store, App-Seite, Installation und Upgrade nehmen die höchste Fassung, die die Organisation sieht, die Liste trägt dazuchannel. (#680) (German only) - Schwimmende Pins:
effectiveAppVersion(pin, installed)in@szenera/contracts/composition. Die Momentaufnahme nennt die gespielte Fassung.GET /v1/me/apps/{appId}/scene-pinsundPOST …/scene-pins/liftheben alle Szenen auf die installierte Fassung, je Szene als neue veröffentlichte Fassung. (#680) (German only) POST /v1/marketplace/apps/{appId}/upgradegeht nur vorwärts und nur auf Fassungen, die die Organisation sieht. Neuer FehlercodeApp.UpdateUnavailable(409,details.reason:not-forward,none,not-rejectable). (#680) (German only)- Entfallen sind
GET /v1/me/pending-reacceptances,POST /v1/marketplace/apps/{appId}/acceptund…/rejectsamt ihren Verträgen.RetireAppReleaseRequestnimmtgraceundsecurityAdvisorystattgraceMonths. (#680) (German only) - Neue Ereignisse
marketplace.app.update-declined,marketplace.app.update-withdrawnundmarketplace.app.release-switched.app-catalog.app-release.retiredund…grace-expiredtragensuccessorVersion. Ein Grant trägtdeclinedReleaseIdunddeclinedVersion, ein Nachweisreasons, eine FassungsecurityAdvisory. (#680) (German only) @szenera/clientund@szenera/api-client: neume.appsUpdates.list,me.appsUpdate.list/accept/reject,me.appsBetaEnrollment.*undme.appsScenePins.list/lift, entfallenme.pendingReacceptancesundmarketplace.marketplaceApps.accept/reject.szenera app acceptundapp rejectnutzen die neuen Routen, ihre Aufrufe bleiben gleich. (#680) (German only)@szenera/clientund@szenera/clibündeln die erweiterten Verträge der Plattform. Ihre Aufrufe und Befehle bleiben, wie sie sind. (#697) (German only)@szenera/contractsbaut je Quelldatei ein Modul (dist/<domain>/<pfad>.js), und dieexports-Karte trägt das Muster./*: Jedes Blatt ist ladbar (@szenera/contracts/app-catalog/app-manifest/locked-app). Die benannten Subpaths bleiben, auch die drei des Host-Vertrags der App-Laufzeit (composition,media-library,shared):appRuntimeHostSpecifierssteht unverändert, die Import-Map der Anzeige kennt keinen neuen Namen. Ein Import aus einem Barrel kostet nur noch die Blätter, deren Exporte gebraucht werden (sideEffectsnennt alleinopenapi-extend). (#688) (German only)- Jede Datei, deren Code
.openapi(…)ruft, importiertopenapi-extendselbst. Wer ein Blatt direkt lädt, braucht den Barrel seiner Domäne nicht mehr, damit die Zod-Erweiterung vor dem Schema läuft. (#688) (German only) @szenera/apps-sdkliest Widget-Definition, Konfigurations-Schema und Manifest aus den Blättern des App-Katalogs statt aus dessen Barrel. (#688) (German only)@szenera/clientund@szenera/cli: Die Archive sind neu geschnitten, weil die eingebündelten Verträge ihre Nebenwirkungs-Importe je Blatt tragen. Oberfläche und Deckel bleiben, wie sie sind. (#688) (German only)- Neue Routen des Stores (session):
GET /v1/me/apps/store(Karten, Filter mit Zahlen, Zählung, Kernfunktionen),GET /v1/me/apps/store/{appId}(Eintrag mit fertig entschiedener Lage, Sprache perlocaleoderAccept-Language),GET /v1/me/apps/collections,GET /v1/me/apps/{appId}/installed(App-Seite der installierten Fassung),POST /v1/me/apps/{appId}/install-request,POST /v1/me/apps/{appId}/update/decision-request,GET /v1/me/apps/{appId}/data,POSTundDELETE /v1/me/apps/{appId}/data/deletion. FehlerOwnerRequest.NotApplicable,AppData.NotDeletableundAppData.DeletionNotFound. (#688) (German only) - Neue Pflege-Routen (Betreiber):
GET,POST /v1/platform/app-catalog/collections,PATCH …/collections/{collectionKey},PUT …/collections/order. (#688) (German only) @szenera/contracts:StoreEntryView,StoreCardView,StoreSituation(Lage, genau eine Handlung, Grund mit Zahlen), Sammlungen, Bitten, App-Daten. Das Manifest trägt am Ende den optionalen Blockcompatibility.preview.screenshotswird nicht mehr gelesen, und die Liste des Marktplatzes führt es nicht mehr (Bruch).InstalledApp.coreFeature,GetAppUpdateResponse.decisionRequest,SetPlayerProgramResponse.warnings,verticalan der Organisation und im Profil. (#688) (German only)@szenera/clientund@szenera/api-client:me.appsStore,me.appsCollections,me.appsInstalled,me.apps.installRequest,me.appsUpdate.decisionRequest,me.appsData,me.appsDataDeletion,platform.appCatalogCollections.@szenera/clibündelt die erweiterten Verträge, seine Befehle bleiben, wie sie sind.@szenera/agentkennt die neuen Fehlercodes. (#688) (German only)@szenera/apps-sdk:AppLifecycleHookshat zwei weitere freiwillige Punkte,inventory(tenantId)(Einträge je Datenbereich) undpurge(tenantId)(alles endgültig löschen, idempotent). Sie kommen nur zusammen, eine Klasse mit nur einem von beiden lehnt der Boot ab. (#688) (German only)@szenera/contracts: Das Manifest trägttranslations, je Sprache ein Block nur mit Texten (AppManifestTranslationsSchema). DazuappManifestLocales(),localizeAppManifest()undappManifestTranslationIssues(). Der Store antwortet inlocaleoderAccept-Languageund nennt die Sprache der Texte intextLocale. Entfallen sindMarketplaceAppListingSchemaund die Anwendungsfälle der entfallenen Routen,GetInstalledAppResponseträgthistory, die Store-ÜbersichtcoreFeaturesmit der angebotenen Fassung.PortalFeatureEntryträgt keinen Namen mehr, die Namen stehen in den Texten des Stores. (#699) (German only)@szenera/client:client.marketplace.apps.listund.getsowieclient.me.installedAppssind entfallen,client.me.apps.list({ locale })liefert die installierten Apps. (#699) (German only)@szenera/apps-sdk:defineAppManifestwirft bei einem unvollständigen Übersetzungsblock und nennt die Stelle. (#699) (German only)@szenera/widget-editor:schemaFieldText(schema, pfad)undsplitFieldDescription()lesen Beschriftung und Hilfe eines Felds aus.describe('Titel|Satz'),APP_CATEGORY_LABEL_KEYSordnet die Kategorien den Beschriftungen der Palette zu. (#699) (German only)@szenera/cliliest Apps über die Store-Routen, die Befehle bleiben, wie sie sind. (#699) (German only)
0.2.1
No entry for developers.
0.2.0
Breaking changes
- Die Kommandozeile heißt jetzt
szenera. Das Paket@szenera/cliliefert das Programm unter diesem Namen aus, der Namesignageentfällt ohne Übergang. (#618) (German only) - Die Umgebungsvariablen heißen
SZENERA_PROFILE,SZENERA_BASE_URL,SZENERA_API_KEY,SZENERA_OUTPUTundSZENERA_PROFILE_FILE. Variablen mit dem PräfixSIGNAGE_liest die Kommandozeile nicht mehr. (#618) (German only) - Die Profil-Datei liegt unter
~/.config/szenera/profile.json. Ein zwischengespeichertes Zugriffsmerkmal liegt daneben, nach dem Umzug meldet sich die Kommandozeile einmal neu an. (#618) (German only) - In der Sitzungsliste erscheint die Kommandozeile als
szenera-climit ihrer Fassung. (#618) (German only) - Die Befehle des Plattformbetriebs sind nicht mehr enthalten.
szeneraführt 122 Befehle für Organisationen: Medien, Szenen, Programme, Geräte, Team, Schlüssel, Abonnement und den Notausgangapi. (#618) (German only) - Ein Profil für den Plattformbetrieb (
"audience": "operator") weist die Kommandozeile beim Lesen ab. (#618) (German only) permission catalog --key-eligiblezeigt jetzt die Rechte, die ein Schlüssel der eigenen Organisation tragen darf. (#618) (German only)invoice listkennt die Flagge--statusnicht mehr. Für eine Organisation blieb sie bisher ohne Wirkung. (#618) (German only)- Die Pakete heißen jetzt
@szenera/*und die Apps@szenera-app/*, Importe und Abhängigkeiten sind entsprechend anzupassen. (#610) (German only)
Changes
POST /v1/devices/:id/releasemitreasonersetztPOST /v1/devices/:id/reset. (#601) (German only)- Neu sind
POST /v1/devices/:id/block,PATCH /v1/devices/:idsowierelease,blockundunblockunter/v1/platform/ops/devices/:id. (#601) (German only) POST /v1/players/:id/decommissionentfällt, undDELETE /v1/players/:idnimmt die Angabedevicemitreconnect,removeoderkeep. (#601) (German only)- Der Zustand eines Geräts ist nur noch
unclaimed,activeoderblocked. (#601) (German only) - Neue Fehlercodes sind
Auth.DeviceBlocked,Device.Blocked,Device.NotBlockedundPlayer.KeepDeviceNotAllowed, undAuth.DeviceSuspendedentfällt. (#601) (German only) - Die Ereignisse
identity.device.blockedundidentity.device.unblockedkommen hinzu,identity.device.decommissionedentfällt, undidentity.device.releasedträgt einenreason. (#601) (German only) POST /v1/devices/registerantwortet einem gekoppelten Gerät mit neuem Schlüssel mit409 Device.ReregistrationPendingund dem Gerätenamen indetails.deviceNameund ersetzt damit den CodeDevice.ReregistrationBlocked. (#607) (German only)- Neu ist
POST /v1/devices/:id/reregistrationmitdecisionkeep,reconnectoderblocksamtreason, dazu der FehlercodeDevice.ReregistrationNotPending. (#607) (German only) - Geräte tragen die Felder
reregistrationRequestedAt,reregistrationAttempts,reregistrationSourceIpundreregistrationAllowedUntil. (#607) (German only) - Die Ereignisse
identity.device.reregistration-requestedundidentity.device.reregistration-decidedkommen hinzu, ebenso die Benachrichtigungs-Artidentity.device-reregistration-requested. (#607) (German only) - Die Befehlsart
factory-resetentfällt, denn ein Gerät wird nur noch über die Freigabe geleert. (#607) (German only) - Die Erstanmeldung eines Browsers unter der Kennung eines gekoppelten WebDisplays antwortet mit
Device.AlreadyClaimed. (#607) (German only) - Der Block
hostder Gerätefähigkeiten kennt zwei weitere Plattformen:vegafür Fire TV mit Vega OS undextensionfür die Erweiterung für Chrome. Bisher meldet kein Gerät sie. (#636) (German only) - Die Fähigkeiten eines Geräts kennen den Block
remotenicht mehr. Die Erweiterung meldet sich im Blockhostmitplatform: extension. Der Blockhostträgt dazubridge(die Brückenfassung des Wirts) undbootStart(ob der Wirt von selbst startet). (#640) (German only) - Die Archive von
@szenera/clientund@szenera/cliwerden jetzt geprüft, bevor eine Fassung erscheinen darf: Sie tragen nur die eigenen Dateien, keine Route außerhalb der öffentlichen Spezifikation und keinen Verweis auf ein unveröffentlichtes Paket, und die Installation gelingt auf Node 22 und 24. (#620) (German only) - Die gepackte Größe jedes Archivs ist gedeckelt, und jedes Archiv trägt einen Fingerabdruck seiner Dateien. Ändert sich ein Archiv, gehört dazu eine neue Fassung. (#620) (German only)
@szenera/clibringt Kern, Befehle, die Module des öffentlichen Klienten und die Verträge in einer einzigen Datei mit.@szenera/clientbringt seine Typen je Unterpfad mit und braucht nebenzodnichts aus der Plattform. (#620) (German only)- Die Kommandozeile nimmt nur noch Schlüssel einer Organisation (
ak_…) an und nennt in ihrer Kennung die Fassung aus ihrem eigenen Manifest. (#620) (German only) - Veröffentlicht ist weiterhin nichts. (#620) (German only)
- Der Herzschlag eines Geräts nennt im Block
rendererdie Fassung, den Bau und die Quelle der Anzeige (bundleoderhosted), dazu die Folge der zuletzt angenommenen Freigabe und seit wann das Bündel aktiv ist. Alle Felder sind optional. (#633) (German only) - Geräte tragen statt
runtimeden Blocksoftware(je Baustein Fassung, Bau und angenommene Freigabe), dazuchannelundsoftwareTarget, das Soll ihres Kanals. Player tragen keincapabilitiesmehr, der gemeldete Zustand keinreportedState.capabilities. Was ein Gerät kann, steht in seinen Fähigkeiten, deren Blocksoftwareruntimeersetzt. (#642) (German only) - Der Zustand der Anzeige (
lastTelemetry.renderer) nennt das Bau-Profil (modernoderlegacy). (#642) (German only) PlayerCapabilitySchemaund die beidenOS_CHANNELSentfallen,ReleaseChannellebt in@szenera/contracts/sharednebenPROTOCOL_SERVED. Die Selbstsicht trägtchannelundsoftwareTarget.channelfehlt, solange die Cloud keinen Kanal für das Gerät führt,currentOsChannelbleibt für ältere Fernwartungen. (#642) (German only)- Beispiele der Vorfassungen je Naht liegen unter
packages/contracts/src/samples/protocols/, Tests in TypeScript und Go legen sie den heutigen Lesern vor. (#642) (German only) - Die Kommandozeile ändert kein Verhalten. Ihr Archiv trägt den neuen Stand der Verträge (Servicemenü am Gerät), deshalb ein neuer Fingerabdruck. (#628) (German only)
HOST_EDITIONS,HostEditionSchemaundHostEditionstehen in@szenera/contracts/fleetund im Einstieg@szenera/contracts/fleet/host-bridge. Die Beschreibung eines Wirts in@szenera/host-bridgenimmtedition. (#653) (German only)- Das Archiv von
@szenera/cliist mit esbuild 0.28 neu gebündelt. Befehle und Verhalten sind unverändert, nur der Fingerabdruck des Archivs ist neu. (#621) (German only)
0.1.0
Stand vor den Änderungsnotizen — die erste Fassung mit eigener Zahl. Was davor geschah, steht im Verlauf des Quellbaums; diese Liste beginnt mit der nächsten Fassung. (German only)
@szenera/client
0.6.0 · 2026-10-25
Breaking changes
analytics.analyticsReportsis@betaand carries aSavedExploreQueryas its query. The only formats arecsvandpdf. Upgrade: Recreate reports as a query of the ad hoc analysis. (#822)analytics.analyticsPlayback,analytics.playersPlayback,analytics.mediaAssetsPlayback,analytics.analyticsInsightsOverview, andanalytics.analyticsInsightsare removed. Upgrade: Read the new analytics throughanalytics.analyticsOverview,analytics.analyticsPlayersDay, andanalytics.analyticsExplore. (#822)- Entries of playlists and of the timeline of a display know the kind
adPod, the ad break with slots, spot length, and filler. Upgrade: Handle entries withkind: 'adPod'when reading playlists and timelines. (#822)
Added
analytics.analyticsExplore.createand.export,analytics.analyticsCatalog.listandanalytics.analyticsOverview.list(beta) for query, catalog, output, and overview. (#822)analytics.analyticsPlayersDay.list,analytics.analyticsPlayersPlays.list,analytics.analyticsContent.listand.byId,analytics.analyticsCampaignsDelivery.list(beta). (#822)fleet.playersScreenshots.listandfleet.playersScreenshots.byId(beta) read the time series of screenshots of a display. (#822)analytics.analyticsProofs(list,byId,interim),analytics.analyticsProofsFiles.byId, andanalytics.analyticsShareLinks(list,create,remove), all beta. (#822)analytics.publicProofKeys.list,analytics.publicProofs.verify, andanalytics.publicCampaignReports(open,proofFile) call without sign-in, all beta. (#822)advertising.advertisingRevenue.list(beta) reads the revenue statements of the organization, with allocation per ad campaign and a reference to the credit note. (#822)- The factory accepts
authBaseUrl. Sign-in, session, OAuth, SCIM, and invitation go to this host, everything else tobaseUrl. Without the setting, nothing changes. (#825) analytics.publicCampaignReports.openreturnscampaignIdper proof. (#822)- New module
advertising(beta): advertisers, ad campaigns, bookings, creatives, ad space, audience, participation, and settings. (#822) - Locations carry
venueType, the type of venue. (#822)
Changed
analytics.analyticsPlayersDay.listnamescec,ddc, ornoneas the source of the panel state and, as the reason for a plan revision, only what planning sets. (#822)- The bundled types follow the cleaned-up catalog of error codes and events. Codes and events of the removed distribution campaigns and the OS shelf no longer exist. (#847)
0.5.0 · 2026-10-23
Breaking changes
- Das Paket nutzt das englische API-Format. Felder, Typen und Werte in Billing, Lizenzen, Abbildern und Bündeln heißen anders. Umstieg: Die Namen im eigenen Code ersetzen, etwa
zielstanddurchtargetStateundherkunftdurchprovenance. (#761) (German only) me.apiKeys.remove(id, { reason })verlangt den Grundowner-rotationodercompromised. Unter/v1/meantworten mit einem Schlüssel nur noch fünf Lesewege, alle übrigen mit 401. Umstieg: Den Grund mitsenden und Automation auf die fünf Lesewege beschränken. (#762) (German only)
Added
- Dokumente: Varianten
page-<n>undpage-<n>-sm,pageCountan Medien und der BefundDocumentPagesChanged. (#801) (German only) - Die Typen folgen der API: Feed-Katalog, Quellen für den Betrieb und der Fehlercode
FeedSource.NotFound. (#801) (German only) - Neue Aufrufe: Zusammenfassung, Sammelaktion und Wiederherstellen von Benachrichtigungen, dazu
stateundgroupKeyan der Liste. (#795) (German only) playerIdan der Vorschau der Widget-Daten und der Lesebereichplayer-location. (#801) (German only)- Standorte:
regionundopeningHours, dazu das Ereignisfleet.location.opening-hours-changed. (#801) (German only) - Widget-Definitionen des Katalogs kennen
sizeundpreview.states, Ansichten des Stores kennensize. (#801) (German only)
Changed
- Billing:
zielstandheißttargetState,regelheißtrule,teilstornoheißtpartialCancellation,staffelheißttierScale,testphaseheißttrialCredit. (#761) (German only) - Billing:
belegteBildschirmeheißtusedDisplays,zyklusVormerkungheißtpendingBillingCycle,restguthabenCentsheißtremainingCreditCents,mindestBildschirmeheißtminDisplays. (#761) (German only) - Lizenzen:
konfliktBisheißtconflictUntil,lizenzKonfliktBisheißtlicenseConflictUntil,vormerkungWirktAmheißtpendingChangeEffectiveAt,mandantheißttenant. (#761) (German only) - Abbilder und Bündel:
herkunftheißtprovenancemitenvironment,appAnchorundotaAnchor. Die Liste der Abbilder filtert über?environment=. (#761) (German only) - Rollen liest der Client über
assignmentsmitroleIdundexpiresAtstatt überroleIds. (#762) (German only)
0.4.0
Breaking changes
GET /v1/audit/bulk/:correlationIdentfällt und mit ihmclient.audit.auditBulkund das SchemaGetBulkActionDetailResponse. (#742) (German only)- Das Recht
audit.bulk.read, die Ereignisartaudit.bulk-action.completedund der FehlercodeInternal.AuditBulkActionDetailRepositoryUnavailableentfallen. (#742) (German only)
0.3.0
Breaking changes
- Neue Routen der Organisation:
GET /v1/me/apps/updatesundGET /v1/me/apps/{appId}/updateliefern die Entscheidung über ein Update (Fassung von und nach, Gründe, Neues, Änderungen in Klartext, Folgen, Frist, ob Ablehnen noch geht),POST /v1/me/apps/{appId}/update/acceptund…/update/rejectentscheiden mit dem Hash der Ziel-Fassung. (#680) (German only) - Kanäle mit Publikum:
GET|PUT /v1/me/apps/beta-enrollmentundPOST|DELETE /v1/me/apps/{appId}/beta-enrollmenttragen eine Organisation für Fassungen aus beta ein, global oder je App. Store, App-Seite, Installation und Upgrade nehmen die höchste Fassung, die die Organisation sieht, die Liste trägt dazuchannel. (#680) (German only) - Schwimmende Pins:
effectiveAppVersion(pin, installed)in@szenera/contracts/composition. Die Momentaufnahme nennt die gespielte Fassung.GET /v1/me/apps/{appId}/scene-pinsundPOST …/scene-pins/liftheben alle Szenen auf die installierte Fassung, je Szene als neue veröffentlichte Fassung. (#680) (German only) POST /v1/marketplace/apps/{appId}/upgradegeht nur vorwärts und nur auf Fassungen, die die Organisation sieht. Neuer FehlercodeApp.UpdateUnavailable(409,details.reason:not-forward,none,not-rejectable). (#680) (German only)- Entfallen sind
GET /v1/me/pending-reacceptances,POST /v1/marketplace/apps/{appId}/acceptund…/rejectsamt ihren Verträgen.RetireAppReleaseRequestnimmtgraceundsecurityAdvisorystattgraceMonths. (#680) (German only) - Neue Ereignisse
marketplace.app.update-declined,marketplace.app.update-withdrawnundmarketplace.app.release-switched.app-catalog.app-release.retiredund…grace-expiredtragensuccessorVersion. Ein Grant trägtdeclinedReleaseIdunddeclinedVersion, ein Nachweisreasons, eine FassungsecurityAdvisory. (#680) (German only) @szenera/clientund@szenera/api-client: neume.appsUpdates.list,me.appsUpdate.list/accept/reject,me.appsBetaEnrollment.*undme.appsScenePins.list/lift, entfallenme.pendingReacceptancesundmarketplace.marketplaceApps.accept/reject.szenera app acceptundapp rejectnutzen die neuen Routen, ihre Aufrufe bleiben gleich. (#680) (German only)- Neue Routen des Stores (session):
GET /v1/me/apps/store(Karten, Filter mit Zahlen, Zählung, Kernfunktionen),GET /v1/me/apps/store/{appId}(Eintrag mit fertig entschiedener Lage, Sprache perlocaleoderAccept-Language),GET /v1/me/apps/collections,GET /v1/me/apps/{appId}/installed(App-Seite der installierten Fassung),POST /v1/me/apps/{appId}/install-request,POST /v1/me/apps/{appId}/update/decision-request,GET /v1/me/apps/{appId}/data,POSTundDELETE /v1/me/apps/{appId}/data/deletion. FehlerOwnerRequest.NotApplicable,AppData.NotDeletableundAppData.DeletionNotFound. (#688) (German only) - Neue Pflege-Routen (Betreiber):
GET,POST /v1/platform/app-catalog/collections,PATCH …/collections/{collectionKey},PUT …/collections/order. (#688) (German only) @szenera/contracts:StoreEntryView,StoreCardView,StoreSituation(Lage, genau eine Handlung, Grund mit Zahlen), Sammlungen, Bitten, App-Daten. Das Manifest trägt am Ende den optionalen Blockcompatibility.preview.screenshotswird nicht mehr gelesen, und die Liste des Marktplatzes führt es nicht mehr (Bruch).InstalledApp.coreFeature,GetAppUpdateResponse.decisionRequest,SetPlayerProgramResponse.warnings,verticalan der Organisation und im Profil. (#688) (German only)@szenera/clientund@szenera/api-client:me.appsStore,me.appsCollections,me.appsInstalled,me.apps.installRequest,me.appsUpdate.decisionRequest,me.appsData,me.appsDataDeletion,platform.appCatalogCollections.@szenera/clibündelt die erweiterten Verträge, seine Befehle bleiben, wie sie sind.@szenera/agentkennt die neuen Fehlercodes. (#688) (German only)@szenera/apps-sdk:AppLifecycleHookshat zwei weitere freiwillige Punkte,inventory(tenantId)(Einträge je Datenbereich) undpurge(tenantId)(alles endgültig löschen, idempotent). Sie kommen nur zusammen, eine Klasse mit nur einem von beiden lehnt der Boot ab. (#688) (German only)@szenera/contracts: Das Manifest trägttranslations, je Sprache ein Block nur mit Texten (AppManifestTranslationsSchema). DazuappManifestLocales(),localizeAppManifest()undappManifestTranslationIssues(). Der Store antwortet inlocaleoderAccept-Languageund nennt die Sprache der Texte intextLocale. Entfallen sindMarketplaceAppListingSchemaund die Anwendungsfälle der entfallenen Routen,GetInstalledAppResponseträgthistory, die Store-ÜbersichtcoreFeaturesmit der angebotenen Fassung.PortalFeatureEntryträgt keinen Namen mehr, die Namen stehen in den Texten des Stores. (#699) (German only)@szenera/client:client.marketplace.apps.listund.getsowieclient.me.installedAppssind entfallen,client.me.apps.list({ locale })liefert die installierten Apps. (#699) (German only)@szenera/apps-sdk:defineAppManifestwirft bei einem unvollständigen Übersetzungsblock und nennt die Stelle. (#699) (German only)@szenera/widget-editor:schemaFieldText(schema, pfad)undsplitFieldDescription()lesen Beschriftung und Hilfe eines Felds aus.describe('Titel|Satz'),APP_CATEGORY_LABEL_KEYSordnet die Kategorien den Beschriftungen der Palette zu. (#699) (German only)@szenera/cliliest Apps über die Store-Routen, die Befehle bleiben, wie sie sind. (#699) (German only)
Changes
@szenera/contracts: neuCatalogAppSchema,AppReleaseNotesSchema(Notizen je Zielgruppe und Sprache),AppReleaseEventSchema,RestoreAppRelease*,ListAppReleaseHistory*undGetAppVersionHistory*. EinAppReleaseträgtnotes, die Wire-Form daneben weiterreleaseNotes.PATCH /v1/platform/app-catalog/apps/{appId}/releases/{id}nimmtnotesje Zielgruppe oder wie bisherreleaseNotes. (#677) (German only)- Ein Grant trägt
installedReleaseId,pendingReleaseId,pendingReasonsundpendingDeadline, ein Zustimmungs-NachweisreleaseId, eine offene ZustimmungfromVersion,toVersion,reasonsunddeadline. Entfallen sindautoUpgradeam Grant undConfigSchemaChangedPayloadSchema. (#677) (German only) GET /v1/apps/{appId}/historyliefert einer Organisation die Fassungen einer App, die stable erreicht haben, mit Datum und „Neu in dieser Fassung" in der erbetenen Sprache (?locale=en-US, ohne Angabe Deutsch). (#677) (German only)@szenera/api-client: neuclient.platform.appCatalogAppsHistory.list,client.platform.appCatalogAppsReleases.restoreundclient.appCatalog.appsHistory.list.@szenera/client: neuclient.appCatalog.appsHistory.list.@szenera/clibündelt die neuen Verträge, ihre Befehle bleiben, wie sie sind. (#677) (German only)- Das scenes-Bündel der Momentaufnahme trägt
appVersions(je App die eine Fassung des Displays) sowieappRendererHostsundappWidgetTypesje<appId>@<version>, alle mit der Vorgabe{}. Die Pins der Szenen und Widgets nennen dieselbe Fassung. (#683) (German only) displayAppVersion(pins, installed)in@szenera/contracts/compositionrechnet die Fassung eines Displays: die installierte, bei gehaltenen Pins älterer Hauptnummern die niedrigste davon. (#683) (German only)- Die neue Befundart
AppVersionHeldist immer eine Warnung und trägtappId,appName,version,installedVersionundwidgetIds. Die KI-Anbindung erklärt sie. (#683) (German only) @szenera/client: Der Filtertypeder Integritäts-Befunde einer Szene kenntAppVersionHeld.@szenera/clibündelt den erweiterten Vertrag, ihre Befehle bleiben, wie sie sind. (#683) (German only)- Ein Zustimmungs-Nachweis trägt
version, die Nummer der Fassung, der zugestimmt wurde (nullnur bei Nachweisen von davor, deren Fassung schon fehlte). Eine Installation trägtdeclinedAtnebendeclinedVersion. (#681) (German only) GET /v1/apps/{appId}/historynennt je FassungreleaseId, dieselbe Kennung wie an Installation, Nachweis und Update-Entscheidung. (#681) (German only)@szenera/client:client.appCatalog.appsHistory.listnennt je FassungreleaseId, eine Installation trägtdeclinedAt.@szenera/clibündelt die erweiterten Verträge, ihre Befehle bleiben, wie sie sind. (#681) (German only)@szenera/widget-editor:EditorShellnimmtappsAwaitingUpdate(Apps samt Weg zur Entscheidung). Der App-Bereich zeigt ihre Widgets mit „Update wartet“, ein Klick führt zur Entscheidung statt einzufügen. (#681) (German only)@szenera/clientund@szenera/clibündeln die erweiterten Verträge der Plattform. Ihre Aufrufe und Befehle bleiben, wie sie sind. (#697) (German only)@szenera/contractsbaut je Quelldatei ein Modul (dist/<domain>/<pfad>.js), und dieexports-Karte trägt das Muster./*: Jedes Blatt ist ladbar (@szenera/contracts/app-catalog/app-manifest/locked-app). Die benannten Subpaths bleiben, auch die drei des Host-Vertrags der App-Laufzeit (composition,media-library,shared):appRuntimeHostSpecifierssteht unverändert, die Import-Map der Anzeige kennt keinen neuen Namen. Ein Import aus einem Barrel kostet nur noch die Blätter, deren Exporte gebraucht werden (sideEffectsnennt alleinopenapi-extend). (#688) (German only)- Jede Datei, deren Code
.openapi(…)ruft, importiertopenapi-extendselbst. Wer ein Blatt direkt lädt, braucht den Barrel seiner Domäne nicht mehr, damit die Zod-Erweiterung vor dem Schema läuft. (#688) (German only) @szenera/apps-sdkliest Widget-Definition, Konfigurations-Schema und Manifest aus den Blättern des App-Katalogs statt aus dessen Barrel. (#688) (German only)@szenera/clientund@szenera/cli: Die Archive sind neu geschnitten, weil die eingebündelten Verträge ihre Nebenwirkungs-Importe je Blatt tragen. Oberfläche und Deckel bleiben, wie sie sind. (#688) (German only)
0.2.1
No entry for developers.
0.2.0
Breaking changes
- Die Fähigkeiten eines Geräts kennen den Block
remotenicht mehr. Die Erweiterung meldet sich im Blockhostmitplatform: extension. Der Blockhostträgt dazubridge(die Brückenfassung des Wirts) undbootStart(ob der Wirt von selbst startet). (#640) (German only) - Geräte tragen statt
runtimeden Blocksoftware(je Baustein Fassung, Bau und angenommene Freigabe), dazuchannelundsoftwareTarget, das Soll ihres Kanals. Player tragen keincapabilitiesmehr, der gemeldete Zustand keinreportedState.capabilities. Was ein Gerät kann, steht in seinen Fähigkeiten, deren Blocksoftwareruntimeersetzt. (#642) (German only) - Der Zustand der Anzeige (
lastTelemetry.renderer) nennt das Bau-Profil (modernoderlegacy). (#642) (German only) PlayerCapabilitySchemaund die beidenOS_CHANNELSentfallen,ReleaseChannellebt in@szenera/contracts/sharednebenPROTOCOL_SERVED. Die Selbstsicht trägtchannelundsoftwareTarget.channelfehlt, solange die Cloud keinen Kanal für das Gerät führt,currentOsChannelbleibt für ältere Fernwartungen. (#642) (German only)- Beispiele der Vorfassungen je Naht liegen unter
packages/contracts/src/samples/protocols/, Tests in TypeScript und Go legen sie den heutigen Lesern vor. (#642) (German only) HOST_EDITIONS,HostEditionSchemaundHostEditionstehen in@szenera/contracts/fleetund im Einstieg@szenera/contracts/fleet/host-bridge. Die Beschreibung eines Wirts in@szenera/host-bridgenimmtedition. (#653) (German only)
Changes
- Der Block
hostder Gerätefähigkeiten kennt zwei weitere Plattformen:vegafür Fire TV mit Vega OS undextensionfür die Erweiterung für Chrome. Bisher meldet kein Gerät sie. (#636) (German only) - Neu ist das Paket
@szenera/client, der öffentliche TypeScript-Klient der Schnittstelle. Er spricht genau die Operationen der öffentlichen Spezifikation, je Bereich ein Namensraum, und weist sich mit einem API-Schlüsselak_…oder dem Zugriffstokenoat_…eines delegierten Zugangs aus. Veröffentlicht wird er noch nicht. (#617) (German only) - Jede Methode beider Klienten trägt die Kurzbeschreibung ihrer Operation als Kommentar. Junge Operationen tragen zusätzlich
@beta, auslaufende@deprecatedmit ihrem Abschalt-Tag. (#617) (German only) - Die anmeldefreien Routen
GET /v1/public/statusundGET /v1/public/maintenance-statusstehen im eigenen Bereichstatusstatt unterops-console. Im Klienten heißt ihr Namensraum deshalbstatusstattopsConsole. (#617) (German only) - Die öffentliche Spezifikation führt die Sitzung und die Einrichtung der Betreiber-Konten nicht mehr (
POST /v1/auth/operator/refresh,POST /v1/auth/onboarding/consume). Sie nennt keinen Server auflocalhostmehr und nur noch die Ausweisarten, die eine ihrer Operationen annimmt. (#617) (German only) - Das Sicherheitsverfahren
cookienennt das Cookie, das es wirklich gibt:refresh_token, gelesen nur vonPOST /v1/auth/refresh. (#617) (German only) - Die Beispiele der Spezifikation zeigen Geräte-Adressen aus dem Dokumentationsbereich
192.0.2.0/24. (#617) (German only) @szenera/api-client/factorybietet mitcreateBearerClientWitheinen Klienten mit festem Merkmal und frei gewählten Modulen. (#617) (German only)- Die Archive von
@szenera/clientund@szenera/cliwerden jetzt geprüft, bevor eine Fassung erscheinen darf: Sie tragen nur die eigenen Dateien, keine Route außerhalb der öffentlichen Spezifikation und keinen Verweis auf ein unveröffentlichtes Paket, und die Installation gelingt auf Node 22 und 24. (#620) (German only) - Die gepackte Größe jedes Archivs ist gedeckelt, und jedes Archiv trägt einen Fingerabdruck seiner Dateien. Ändert sich ein Archiv, gehört dazu eine neue Fassung. (#620) (German only)
@szenera/clibringt Kern, Befehle, die Module des öffentlichen Klienten und die Verträge in einer einzigen Datei mit.@szenera/clientbringt seine Typen je Unterpfad mit und braucht nebenzodnichts aus der Plattform. (#620) (German only)- Die Kommandozeile nimmt nur noch Schlüssel einer Organisation (
ak_…) an und nennt in ihrer Kennung die Fassung aus ihrem eigenen Manifest. (#620) (German only) - Veröffentlicht ist weiterhin nichts. (#620) (German only)
- Der Herzschlag eines Geräts nennt im Block
rendererdie Fassung, den Bau und die Quelle der Anzeige (bundleoderhosted), dazu die Folge der zuletzt angenommenen Freigabe und seit wann das Bündel aktiv ist. Alle Felder sind optional. (#633) (German only) - Neue Verträge
DeviceServiceStatus,RendererServiceStatusundServiceFindingin@szenera/contracts/fleet. (#628) (German only) GET /v1/devices/meliefertdeviceName, den Namen aus der Geräteakte. (#628) (German only)- Der Herzschlag nimmt
appFailuresan, höchstens 20 je Meldung mit dem Grundmissing,rejectedoderfailed. Der Agent füllttime.offsetMsmit dem Versatz seiner Uhr zur Cloud. (#628) (German only) - Die Ereignis-Kategorie
servicebringt die Codesservice.menu-opened(input) undservice.menu-closed(reason). Der Agent meldet jetzt auchcontent.bundle-failed. (#628) (German only) - Der Agent bedient auf
127.0.0.1:8081die Seite des Menüs undGET /v1/status,/v1/report,/v1/input,/v1/backdropsowiePOST /v1/openund/v1/close.service.menu-openedentsteht erst, wenn die Seite das Öffnen meldet.Origin: nullbekommt 403, außer die Startseite mit ihrem Schlüssel im KopfX-Service-Token. Der Eingabe-Wächterszenera-input-watchist ein eigenes Programm im selben Go-Modul. (#628) (German only) - Der Katalog der Befunde kennt
app-bundle-download-failed(appId,version,appName,httpStatus,since). Die App-Befunde tragenappName,wifi-weakundclock-skewden Auslösertrigger. (#628) (German only)
0.1.0
Die erste Fassung mit eigener Zahl, noch nicht veröffentlicht. Diese Liste beginnt mit der nächsten Fassung. (German only)