{"ref":"artifact:abap2ui5-protocol","page":"/artifacts/abap2ui5-protocol","json":"/artifacts/abap2ui5-protocol.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"abap2ui5-protocol","name":"abap2UI5 protocol","artifact_type":"practice","ecosystem":"abap","serves_ecosystems":["ui5","cap"],"domain":"ui-and-frontend-bridge","secondary_domains":["protocols-and-apis","developer-experience"],"origin_ring":"community-org","use_as":"reference","description":{"one_line":"The [abap2UI5](artifact:abap2ui5-abap2ui5) roundtrip written down: a versioned specification of the wire between frontends and backends, JSON Schemas for its messages, and two conformance suites that test either side.","short":"Versioned specification of the abap2UI5 roundtrip protocol","what_it_solves":"[abap2UI5](artifact:abap2ui5-abap2ui5) is server-driven UI: the browser sends one JSON roundtrip per user event (the event, the model delta, the draft id) and the backend runs the app's `main( )` and answers with the views and the model, with messages and frontend actions queued beside them. Three backends and three frontends spoke that format before anyone wrote it down; this repository writes it down in eight specification files, every MUST and SHOULD naming the ABAP class or JavaScript module it was derived from, beside three view profiles (the full UI5 XML vocabulary, a 61-control portable subset, and the agent snapshot that carries the screen as data) and JSON Schemas 2020-12 for the request, the response, the snapshot and the portable profile. Two suites then test an implementation: `abap2ui5-conformance backend` plays the frontend over HTTP against conformance apps a backend serves under fixed class names, shipped as ABAP classes and as cap2UI5 twins, and `abap2ui5-conformance frontend` plays the backend with recorded and synthetic responses through one adapter per frontend. It carries two frontends of its own as well: a prototype mapping a response onto an Adaptive Card 1.5, and `abap2ui5-tui`, which runs an abap2UI5 app as a keyboard-driven text screen against an SAP system or either reference backend.","when_not_to_use":"Neither suite has been run against an ABAP system: the reference backends are the framework transpiled to Node and cap2UI5 on CAP, so what a check does on a real system is open. The portable profile is a subset of 61 controls, filled from a census of 247 core apps of which 64.8 % run unchanged, so an app outside it renders placeholders in the terminal and Adaptive Cards renderers.","to_build_on_it":"The frontend suite reserves an adapter name for [abap2UI5/headless-frontend](https://github.com/abap2UI5/headless-frontend) and states what driving it would take: a roundtrip seam in the simulator, or this suite written in ABAP. The Adaptive Cards renderer is marked a prototype, and `spec/open-questions.md` holds the decisions taken provisionally with their alternatives, for the maintainer to settle."},"links":{"repo":"https://github.com/abap2UI5/protocol"},"maintainers":["actor:abap2ui5"],"compat":{"runtimes":["node"]},"provides":[{"capability":"capability:abap-ui-from-abap","what_it_does":"Specifies the roundtrip that carries an abap2UI5 app's views, model, messages and actions between the backend in the ABAP system and a frontend, as RFC 2119 statements derived from the implementations, and ships two frontends that render it without a browser: Adaptive Cards and a terminal screen.","sources":[{"url":"https://github.com/abap2ui5/protocol","title":"abap2UI5/protocol — README","checked":"2026-10-17","quote":"The written, versioned contract between abap2UI5 frontends and backends"},{"url":"https://github.com/abap2ui5/protocol","title":"abap2UI5/protocol — README","checked":"2026-10-17","quote":"an abap2UI5 app in a terminal - `npx abap2ui5-tui <url> --app <CLASS>`"},{"url":"https://raw.githubusercontent.com/abap2UI5/protocol/main/AGENTS.md","title":"abap2UI5/protocol — AGENTS.md","checked":"2026-10-17","quote":"Every normative statement cites its source."}]}],"requires":[{"ref":"artifact:abap2ui5-abap2ui5","for":"The frontend under test when the frontend suite runs its `ui5` adapter: the official UI5 SPA is loaded from an abap2UI5 checkout and driven in Chromium.","requirement":"conditional","basis":"binding","role":"frontend-under-test","condition":"the frontend suite runs with --adapter ui5","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/frontend/README.md","title":"abap2UI5/protocol — frontend conformance suite","checked":"2026-10-17","quote":"What the `ui5` adapter needs: an abap2UI5 checkout"}]},{"ref":"artifact:abapgit-abapgit","for":"Getting the ABAP conformance apps into the system the backend suite drives; for cap2UI5 the same apps ship as JavaScript twins instead.","requirement":"conditional","basis":"binding","role":"app-deployment","condition":"the backend under test serves the ABAP conformance apps from an ABAP system","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/apps/README.md","title":"abap2UI5/protocol — conformance apps","checked":"2026-10-17","quote":"Pull them into any abap2UI5 system with abapGit"}]}],"connects":[{"ref":"artifact:abap2ui5-abap2ui5","kind":"data","direction":"outbound","for":"Both of its client sides call an abap2UI5 endpoint on an SAP system: the backend suite plays the frontend over HTTP against the conformance apps, and the terminal renderer's session sends keys as roundtrip requests and renders the answer as a screen.","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/README.md","title":"abap2UI5/protocol — conformance","checked":"2026-10-17","quote":"a backend, over HTTP, against the conformance apps"},{"url":"https://raw.githubusercontent.com/abap2UI5/protocol/main/renderers/terminal/README.md","title":"abap2UI5/protocol — terminal renderer","checked":"2026-10-17","quote":"on the abap2UI5 node runtime, on cap2UI5 or on an SAP system"},{"url":"https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/backend/README.md","title":"abap2UI5/protocol — backend conformance suite","checked":"2026-10-17","quote":"then point `--url` at the abap2UI5 ICF node."}]}],"provenance":{"discovered_via":[{"source":"source:github"}],"first_seen":"2026-10-17"},"drafted_with_ai":true,"contributors":["actor:oblomov-dev"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"2 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"good","evidence":"ci green, 2026-10-21"}],"practice":[{"label":"Tests","tier":"good","evidence":"23 test files"},{"label":"Docs","tier":"good","evidence":"README 8 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":0,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-10-21","license_spdx":"MIT","org_owned":true,"default_branch":"main","created_at":"2026-10-03T15:10:48Z","open_prs":0,"tree_truncated":false,"test_files":23,"workflows":1,"other_ci":false,"readme_bytes":8264,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"first_commit":"2026-10-03","last_commit":"2026-10-21","commits":14,"contributors":2,"ci_status":"success","ci_run_at":"2026-10-21","ci_workflow":"ci","ci_event":"push","readme_path":"README.md","readme_sha":"a705db3bdb52142107e969c10608178daabc6275","repo_read":"2026-10-24"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/abap2UI5/protocol/blob/main/CHANGELOG.md"},"format":"headings","releases":[{"version":"0.1.0","date":"2026-10-03","date_source":"heading","heading":"0.1.0 - 2026-10-03","url":"https://github.com/abap2UI5/protocol/blob/main/CHANGELOG.md#010---2026-10-03","sections":[{"kind":"other","heading":null,"items":6}],"hash":"8c6e74c7cb1e80f0"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:abap2ui5","name":"abap2UI5","json":"/actors/abap2ui5.json"}],"contributors":[{"ref":"actor:oblomov-dev","name":"oblomov-dev","json":"/actors/oblomov-dev.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}