core/http/graph/process.graphqls
Ingo Oppermann ccac2ffd5d
Various updates
- 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
2023-05-23 15:47:06 +02:00

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!]!
}