generated: '2026-09-04' method: derived source: >- openapi/red5-admin-api-openapi.yml, openapi/red5-streams-api-openapi.yml, openapi/red5-provision-api-openapi.yml, openapi/red5-mixers-api-openapi.yml, openapi/red5-inputs-api-openapi.yml, openapi/red5-images-api-openapi.yml, openapi/red5-rtmp-restreamer-api-openapi.yml, openapi/red5-file-restreamer-api-openapi.yml, openapi/red5-servlet-configuration-api-openapi.yml note: >- Derived from components.schemas plus the id-bearing path parameters. Red5's model is deployment-shaped, not tenant-shaped: the root is a NodeGroup (a cluster the customer provisions), everything below it is addressed by caller-chosen natural keys (streamGuid, streamName, nodeGroupName) rather than server-issued opaque ids, and there is no account/organization/customer entity anywhere in the REST contract — tenancy lives in the Red5 Cloud console, not in the API. identifiers: - field: nodeGroupName kind: caller-chosen name scope: Stream Manager 2.0 - field: streamGuid kind: slash-bearing path (e.g. live/stream1 — app name plus short stream id) scope: Stream Manager 2.0 note: The Digest Token's `stream` field uses only the short id (stream1), not the full GUID. - field: streamName kind: caller-chosen name, scoped by appName scope: standalone Restreamer servlets - field: mixerId kind: server-issued id scope: Brew Mixer - field: inputId kind: server-issued id scope: Brew Mixer - field: imageId kind: server-issued id scope: Brew Mixer entities: - name: NodeGroup schema: openapi/red5-admin-api-openapi.yml#/components/schemas/NodeGroup key: name fields: [name, cloudProvider, region, minNodes, maxNodes, currentNodes, status] description: An autoscaling cluster of Red5 Pro nodes in one cloud region. - name: Node schema: openapi/red5-admin-api-openapi.yml#/components/schemas/Node key: id fields: [id, host, status, activeStreams, connectedClients, cpuLoad, memoryUsed] description: >- A single server instance in a node group, in one of the origin / edge / relay / transcoder / mixer / video-packager roles. - name: SystemInfo schema: openapi/red5-admin-api-openapi.yml#/components/schemas/SystemInfo key: null fields: [version, javaVersion, uptime, totalMemory, freeMemory] description: Singleton snapshot of the Stream Manager host itself. - name: StreamProvision schema: openapi/red5-provision-api-openapi.yml#/components/schemas/StreamProvision key: streamGuid fields: [streamGuid, username, password, recording, transcodeEnabled, transcodeLadder] description: >- The declared configuration of a stream before it is published — credentials, recording flag and optional ABR ladder. - name: TranscodeVariant schema: openapi/red5-provision-api-openapi.yml#/components/schemas/TranscodeVariant key: level fields: [level, videoWidth, videoHeight, videoBitrate, audioBitrate] description: One rung of an ABR transcode ladder. - name: StreamEndpoint schema: openapi/red5-streams-api-openapi.yml#/components/schemas/StreamEndpoint key: streamGuid fields: [host, port, protocol, streamGuid, app] description: >- The resolved node a client should publish to or subscribe from — the output of the Streams API's load-balancing decision, not a stored record. - name: Mixer schema: openapi/red5-mixers-api-openapi.yml#/components/schemas/Mixer key: id fields: [id, outputStreamName, outputWidth, outputHeight, outputFrameRate, outputBitrate, inputCount, status] description: A Brew Mixer session composing several inputs into one output stream. - name: MixerInput schema: openapi/red5-inputs-api-openapi.yml#/components/schemas/MixerInput key: id fields: [id, streamName, x, y, width, height, zOrder] description: One source stream placed in a mixer's render tree. - name: ImageOverlay schema: openapi/red5-images-api-openapi.yml#/components/schemas/ImageOverlay key: id fields: [id, mixerId, x, y, width, height, zOrder] description: A static image layer composited over a mixer output. - name: RtmpProvision schema: openapi/red5-rtmp-restreamer-api-openapi.yml#/components/schemas/RtmpProvision key: streamName fields: [streamName, appName, destinations] description: A push restream of a live ingest to one or more external RTMP/RTMPS destinations. - name: RtmpDestination schema: openapi/red5-rtmp-restreamer-api-openapi.yml#/components/schemas/RtmpDestination key: url fields: [url, streamKey, protocol] - name: RtmpPullProvision schema: openapi/red5-rtmp-restreamer-api-openapi.yml#/components/schemas/RtmpPullProvision key: streamName fields: [sourceUrl, streamKey, streamName, appName] - name: FileRestreamProvision schema: openapi/red5-file-restreamer-api-openapi.yml#/components/schemas/FileRestreamProvision key: streamName fields: [filePath, streamName, appName, loop] description: A recorded FLV/MP4 file replayed as a pseudo-live stream. - name: RestreamerConfig schema: openapi/red5-servlet-configuration-api-openapi.yml#/components/schemas/RestreamerConfig key: null fields: [maxConnections, connectionTimeout, reconnectAttempts, reconnectDelay] description: Server-level singleton configuration for the Restreamer plugin. relationships: - from: NodeGroup to: Node type: has_many via: nodeGroupName evidence: GET /admin/nodegroups/{nodeGroupName}/nodes (listNodes) - from: NodeGroup to: StreamProvision type: has_many via: nodeGroupName evidence: '/streams/provision/{nodeGroupName}/{streamGuid}' - from: NodeGroup to: StreamEndpoint type: has_many via: nodeGroupName evidence: '/streams/stream/{nodeGroupName}/{publish|subscribe}/{streamGuid}' - from: StreamProvision to: TranscodeVariant type: has_many via: transcodeLadder evidence: StreamProvision.transcodeLadder is an array of TranscodeVariant - from: StreamProvision to: StreamEndpoint type: has_one via: streamGuid evidence: Both are addressed by the same streamGuid within a node group. - from: Mixer to: MixerInput type: has_many via: mixerId evidence: '/brewmixer/2.0/mixers/{mixerId}/inputs' - from: ImageOverlay to: Mixer type: belongs_to via: mixerId evidence: ImageOverlay.mixerId - from: MixerInput to: StreamProvision type: references via: streamName confidence: medium evidence: >- MixerInput.streamName names a live stream by name; the contract does not declare a $ref between the Brew Mixer and Stream Manager surfaces, so this edge is by convention rather than by schema. - from: RtmpProvision to: RtmpDestination type: has_many via: destinations evidence: RtmpProvision.destinations is an array of RtmpDestination gaps: - No account, organization, customer or project entity is exposed by the REST contract. - No cross-spec $ref — the Brew Mixer, Restreamer and Stream Manager schemas are independent component sets that repeat streamName/appName by convention. - No created/updated timestamps on any entity.