- rebrand group to domain - move IAM to the API (rest and graph) for enforcing "process:" rules - add abstraction layer for restream store in order to decouple internal format from format on disk - move playout handler into restreamHandler - remove user from restream interface - add TaskID type that includes the process id and its domain
177 lines
2.8 KiB
GraphQL
177 lines
2.8 KiB
GraphQL
extend type Query {
|
|
processes(
|
|
idpattern: String
|
|
refpattern: String
|
|
domainpattern: String
|
|
): [Process!]!
|
|
process(id: ID!, domain: String!): Process
|
|
probe(id: ID!, domain: String!): Probe!
|
|
}
|
|
|
|
type ProcessConfigIO {
|
|
id: String!
|
|
address: String!
|
|
options: [String!]!
|
|
}
|
|
|
|
type ProcessConfigLimits {
|
|
cpu_usage: Float!
|
|
memory_bytes: Uint64!
|
|
waitfor_seconds: Uint64!
|
|
}
|
|
|
|
type ProcessConfig {
|
|
id: String!
|
|
owner: String!
|
|
domain: String!
|
|
type: String!
|
|
reference: String!
|
|
input: [ProcessConfigIO!]!
|
|
output: [ProcessConfigIO!]!
|
|
options: [String!]!
|
|
reconnect: Boolean!
|
|
reconnect_delay_seconds: Uint64!
|
|
autostart: Boolean!
|
|
stale_timeout_seconds: Uint64!
|
|
limits: ProcessConfigLimits!
|
|
}
|
|
|
|
type ProcessState {
|
|
order: String!
|
|
state: String!
|
|
runtime_seconds: Uint64!
|
|
reconnect_seconds: Int!
|
|
last_logline: String!
|
|
progress: Progress!
|
|
memory_bytes: Uint64!
|
|
cpu_usage: Float!
|
|
command: [String!]!
|
|
}
|
|
|
|
type ProcessReportLogEntry {
|
|
timestamp: Time!
|
|
data: String!
|
|
}
|
|
|
|
interface IProcessReportHistoryEntry {
|
|
created_at: Time!
|
|
prelude: [String!]!
|
|
log: [ProcessReportLogEntry!]!
|
|
}
|
|
|
|
type ProcessReportHistoryEntry implements IProcessReportHistoryEntry {
|
|
created_at: Time!
|
|
prelude: [String!]!
|
|
log: [ProcessReportLogEntry!]!
|
|
}
|
|
|
|
type ProcessReport implements IProcessReportHistoryEntry {
|
|
created_at: Time!
|
|
prelude: [String!]!
|
|
log: [ProcessReportLogEntry!]!
|
|
history: [ProcessReportHistoryEntry!]!
|
|
}
|
|
|
|
type Process {
|
|
id: String!
|
|
owner: String!
|
|
domain: String!
|
|
type: String!
|
|
reference: String!
|
|
created_at: Time!
|
|
config: ProcessConfig!
|
|
state: ProcessState!
|
|
report: ProcessReport!
|
|
metadata: Map
|
|
}
|
|
|
|
type ProgressIO {
|
|
id: String!
|
|
address: String!
|
|
|
|
index: Uint64!
|
|
stream: Uint64!
|
|
format: String!
|
|
type: String!
|
|
codec: String!
|
|
coder: String!
|
|
frame: Uint64!
|
|
fps: Float!
|
|
packet: Uint64!
|
|
pps: Float!
|
|
size_kb: Uint64!
|
|
bitrate_kbit: Float!
|
|
|
|
pixfmt: String!
|
|
q: Float!
|
|
width: Uint64!
|
|
height: Uint64!
|
|
|
|
sampling: Uint64!
|
|
layout: String!
|
|
channels: Uint64!
|
|
|
|
avstream: AVStream
|
|
}
|
|
|
|
type Progress {
|
|
input: [ProgressIO!]!
|
|
output: [ProgressIO!]!
|
|
frame: Uint64!
|
|
packet: Uint64!
|
|
fps: Float!
|
|
q: Float!
|
|
size_kb: Uint64!
|
|
time: Float!
|
|
bitrate_kbit: Float!
|
|
speed: Float!
|
|
drop: Uint64!
|
|
dup: Uint64!
|
|
}
|
|
|
|
type AVStreamIO {
|
|
state: String!
|
|
packet: Uint64!
|
|
time: Uint64!
|
|
size_kb: Uint64!
|
|
}
|
|
|
|
type AVStream {
|
|
input: AVStreamIO!
|
|
output: AVStreamIO!
|
|
aqueue: Uint64!
|
|
queue: Uint64!
|
|
dup: Uint64!
|
|
drop: Uint64!
|
|
enc: Uint64!
|
|
looping: Boolean!
|
|
duplicating: Boolean!
|
|
gop: String!
|
|
}
|
|
|
|
type ProbeIO {
|
|
url: String!
|
|
index: Uint64!
|
|
stream: Uint64!
|
|
language: String!
|
|
type: String!
|
|
codec: String!
|
|
coder: String!
|
|
bitrate_kbps: Float!
|
|
duration_seconds: Float!
|
|
|
|
fps: Float!
|
|
pix_fmt: String!
|
|
width: Uint64!
|
|
height: Uint64!
|
|
|
|
sampling: Uint64!
|
|
layout: String!
|
|
channels: Uint64!
|
|
}
|
|
|
|
type Probe {
|
|
streams: [ProbeIO!]!
|
|
log: [String!]!
|
|
}
|