Add format annotation for integer types for swagger documentation

This commit is contained in:
Ingo Oppermann
2023-01-11 21:05:40 +01:00
parent 481cd79e6d
commit ea79b87236
17 changed files with 939 additions and 477 deletions

View File

@@ -13,7 +13,7 @@ type Data struct {
CreatedAt time.Time `json:"created_at"` CreatedAt time.Time `json:"created_at"`
LoadedAt time.Time `json:"-"` LoadedAt time.Time `json:"-"`
UpdatedAt time.Time `json:"-"` UpdatedAt time.Time `json:"-"`
Version int64 `json:"version" jsonschema:"minimum=3,maximum=3"` Version int64 `json:"version" jsonschema:"minimum=3,maximum=3" format:"int64"`
ID string `json:"id"` ID string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Address string `json:"address"` Address string `json:"address"`
@@ -21,7 +21,7 @@ type Data struct {
Log struct { Log struct {
Level string `json:"level" enums:"debug,info,warn,error,silent" jsonschema:"enum=debug,enum=info,enum=warn,enum=error,enum=silent"` Level string `json:"level" enums:"debug,info,warn,error,silent" jsonschema:"enum=debug,enum=info,enum=warn,enum=error,enum=silent"`
Topics []string `json:"topics"` Topics []string `json:"topics"`
MaxLines int `json:"max_lines"` MaxLines int `json:"max_lines" format:"int"`
} `json:"log"` } `json:"log"`
DB struct { DB struct {
Dir string `json:"dir"` Dir string `json:"dir"`
@@ -67,12 +67,12 @@ type Data struct {
Storage struct { Storage struct {
Disk struct { Disk struct {
Dir string `json:"dir"` Dir string `json:"dir"`
Size int64 `json:"max_size_mbytes"` Size int64 `json:"max_size_mbytes" format:"int64"`
Cache struct { Cache struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
Size uint64 `json:"max_size_mbytes"` Size uint64 `json:"max_size_mbytes" format:"uint64"`
TTL int64 `json:"ttl_seconds"` TTL int64 `json:"ttl_seconds" format:"int64"`
FileSize uint64 `json:"max_file_size_mbytes"` FileSize uint64 `json:"max_file_size_mbytes" format:"uint64"`
Types struct { Types struct {
Allow []string `json:"allow"` Allow []string `json:"allow"`
Block []string `json:"block"` Block []string `json:"block"`
@@ -85,7 +85,7 @@ type Data struct {
Username string `json:"username"` Username string `json:"username"`
Password string `json:"password"` Password string `json:"password"`
} `json:"auth"` } `json:"auth"`
Size int64 `json:"max_size_mbytes"` Size int64 `json:"max_size_mbytes" format:"int64"`
Purge bool `json:"purge"` Purge bool `json:"purge"`
} `json:"memory"` } `json:"memory"`
CORS struct { CORS struct {
@@ -113,7 +113,7 @@ type Data struct {
} `json:"srt"` } `json:"srt"`
FFmpeg struct { FFmpeg struct {
Binary string `json:"binary"` Binary string `json:"binary"`
MaxProcesses int64 `json:"max_processes"` MaxProcesses int64 `json:"max_processes" format:"int64"`
Access struct { Access struct {
Input struct { Input struct {
Allow []string `json:"allow"` Allow []string `json:"allow"`
@@ -125,34 +125,34 @@ type Data struct {
} `json:"output"` } `json:"output"`
} `json:"access"` } `json:"access"`
Log struct { Log struct {
MaxLines int `json:"max_lines"` MaxLines int `json:"max_lines" format:"int"`
MaxHistory int `json:"max_history"` MaxHistory int `json:"max_history" format:"int"`
} `json:"log"` } `json:"log"`
} `json:"ffmpeg"` } `json:"ffmpeg"`
Playout struct { Playout struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
MinPort int `json:"min_port"` MinPort int `json:"min_port" format:"int"`
MaxPort int `json:"max_port"` MaxPort int `json:"max_port" format:"int"`
} `json:"playout"` } `json:"playout"`
Debug struct { Debug struct {
Profiling bool `json:"profiling"` Profiling bool `json:"profiling"`
ForceGC int `json:"force_gc"` ForceGC int `json:"force_gc" format:"int"`
MemoryLimit int64 `json:"memory_limit_mbytes"` MemoryLimit int64 `json:"memory_limit_mbytes" format:"int64"`
} `json:"debug"` } `json:"debug"`
Metrics struct { Metrics struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
EnablePrometheus bool `json:"enable_prometheus"` EnablePrometheus bool `json:"enable_prometheus"`
Range int64 `json:"range_sec"` // seconds Range int64 `json:"range_sec" format:"int64"` // seconds
Interval int64 `json:"interval_sec"` // seconds Interval int64 `json:"interval_sec" format:"int64"` // seconds
} `json:"metrics"` } `json:"metrics"`
Sessions struct { Sessions struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
IPIgnoreList []string `json:"ip_ignorelist"` IPIgnoreList []string `json:"ip_ignorelist"`
SessionTimeout int `json:"session_timeout_sec"` SessionTimeout int `json:"session_timeout_sec" format:"int"`
Persist bool `json:"persist"` Persist bool `json:"persist"`
PersistInterval int `json:"persist_interval_sec"` PersistInterval int `json:"persist_interval_sec" format:"int"`
MaxBitrate uint64 `json:"max_bitrate_mbit"` MaxBitrate uint64 `json:"max_bitrate_mbit" format:"uint64"`
MaxSessions uint64 `json:"max_sessions"` MaxSessions uint64 `json:"max_sessions" format:"uint64"`
} `json:"sessions"` } `json:"sessions"`
Service struct { Service struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`

View File

@@ -10,7 +10,7 @@ type Data struct {
CreatedAt time.Time `json:"created_at"` CreatedAt time.Time `json:"created_at"`
LoadedAt time.Time `json:"-"` LoadedAt time.Time `json:"-"`
UpdatedAt time.Time `json:"-"` UpdatedAt time.Time `json:"-"`
Version int64 `json:"version" jsonschema:"minimum=1,maximum=1"` Version int64 `json:"version" jsonschema:"minimum=1,maximum=1" format:"int64"`
ID string `json:"id"` ID string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Address string `json:"address"` Address string `json:"address"`
@@ -18,7 +18,7 @@ type Data struct {
Log struct { Log struct {
Level string `json:"level" enums:"debug,info,warn,error,silent" jsonschema:"enum=debug,enum=info,enum=warn,enum=error,enum=silent"` Level string `json:"level" enums:"debug,info,warn,error,silent" jsonschema:"enum=debug,enum=info,enum=warn,enum=error,enum=silent"`
Topics []string `json:"topics"` Topics []string `json:"topics"`
MaxLines int `json:"max_lines"` MaxLines int `json:"max_lines" format:"int"`
} `json:"log"` } `json:"log"`
DB struct { DB struct {
Dir string `json:"dir"` Dir string `json:"dir"`
@@ -63,12 +63,12 @@ type Data struct {
Storage struct { Storage struct {
Disk struct { Disk struct {
Dir string `json:"dir"` Dir string `json:"dir"`
Size int64 `json:"max_size_mbytes"` Size int64 `json:"max_size_mbytes" format:"int64"`
Cache struct { Cache struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
Size uint64 `json:"max_size_mbytes"` Size uint64 `json:"max_size_mbytes" format:"uint64"`
TTL int64 `json:"ttl_seconds"` TTL int64 `json:"ttl_seconds" format:"int64"`
FileSize uint64 `json:"max_file_size_mbytes"` FileSize uint64 `json:"max_file_size_mbytes" format:"uint64"`
Types []string `json:"types"` Types []string `json:"types"`
} `json:"cache"` } `json:"cache"`
} `json:"disk"` } `json:"disk"`
@@ -78,7 +78,7 @@ type Data struct {
Username string `json:"username"` Username string `json:"username"`
Password string `json:"password"` Password string `json:"password"`
} `json:"auth"` } `json:"auth"`
Size int64 `json:"max_size_mbytes"` Size int64 `json:"max_size_mbytes" format:"int64"`
Purge bool `json:"purge"` Purge bool `json:"purge"`
} `json:"memory"` } `json:"memory"`
CORS struct { CORS struct {
@@ -105,7 +105,7 @@ type Data struct {
} `json:"srt"` } `json:"srt"`
FFmpeg struct { FFmpeg struct {
Binary string `json:"binary"` Binary string `json:"binary"`
MaxProcesses int64 `json:"max_processes"` MaxProcesses int64 `json:"max_processes" format:"int64"`
Access struct { Access struct {
Input struct { Input struct {
Allow []string `json:"allow"` Allow []string `json:"allow"`
@@ -117,33 +117,33 @@ type Data struct {
} `json:"output"` } `json:"output"`
} `json:"access"` } `json:"access"`
Log struct { Log struct {
MaxLines int `json:"max_lines"` MaxLines int `json:"max_lines" format:"int"`
MaxHistory int `json:"max_history"` MaxHistory int `json:"max_history" format:"int"`
} `json:"log"` } `json:"log"`
} `json:"ffmpeg"` } `json:"ffmpeg"`
Playout struct { Playout struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
MinPort int `json:"min_port"` MinPort int `json:"min_port" format:"int"`
MaxPort int `json:"max_port"` MaxPort int `json:"max_port" format:"int"`
} `json:"playout"` } `json:"playout"`
Debug struct { Debug struct {
Profiling bool `json:"profiling"` Profiling bool `json:"profiling"`
ForceGC int `json:"force_gc"` ForceGC int `json:"force_gc" format:"int"`
} `json:"debug"` } `json:"debug"`
Metrics struct { Metrics struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
EnablePrometheus bool `json:"enable_prometheus"` EnablePrometheus bool `json:"enable_prometheus"`
Range int64 `json:"range_sec"` // seconds Range int64 `json:"range_sec" format:"int64"` // seconds
Interval int64 `json:"interval_sec"` // seconds Interval int64 `json:"interval_sec" format:"int64"` // seconds
} `json:"metrics"` } `json:"metrics"`
Sessions struct { Sessions struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
IPIgnoreList []string `json:"ip_ignorelist"` IPIgnoreList []string `json:"ip_ignorelist"`
SessionTimeout int `json:"session_timeout_sec"` SessionTimeout int `json:"session_timeout_sec" format:"int"`
Persist bool `json:"persist"` Persist bool `json:"persist"`
PersistInterval int `json:"persist_interval_sec"` PersistInterval int `json:"persist_interval_sec" format:"int"`
MaxBitrate uint64 `json:"max_bitrate_mbit"` MaxBitrate uint64 `json:"max_bitrate_mbit" format:"uint64"`
MaxSessions uint64 `json:"max_sessions"` MaxSessions uint64 `json:"max_sessions" format:"uint64"`
} `json:"sessions"` } `json:"sessions"`
Service struct { Service struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`

View File

@@ -16,7 +16,7 @@ type Data struct {
CreatedAt time.Time `json:"created_at"` CreatedAt time.Time `json:"created_at"`
LoadedAt time.Time `json:"-"` LoadedAt time.Time `json:"-"`
UpdatedAt time.Time `json:"-"` UpdatedAt time.Time `json:"-"`
Version int64 `json:"version" jsonschema:"minimum=2,maximum=2"` Version int64 `json:"version" jsonschema:"minimum=2,maximum=2" format:"int64"`
ID string `json:"id"` ID string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Address string `json:"address"` Address string `json:"address"`
@@ -24,7 +24,7 @@ type Data struct {
Log struct { Log struct {
Level string `json:"level" enums:"debug,info,warn,error,silent" jsonschema:"enum=debug,enum=info,enum=warn,enum=error,enum=silent"` Level string `json:"level" enums:"debug,info,warn,error,silent" jsonschema:"enum=debug,enum=info,enum=warn,enum=error,enum=silent"`
Topics []string `json:"topics"` Topics []string `json:"topics"`
MaxLines int `json:"max_lines"` MaxLines int `json:"max_lines" format:"int"`
} `json:"log"` } `json:"log"`
DB struct { DB struct {
Dir string `json:"dir"` Dir string `json:"dir"`
@@ -69,12 +69,12 @@ type Data struct {
Storage struct { Storage struct {
Disk struct { Disk struct {
Dir string `json:"dir"` Dir string `json:"dir"`
Size int64 `json:"max_size_mbytes"` Size int64 `json:"max_size_mbytes" format:"int64"`
Cache struct { Cache struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
Size uint64 `json:"max_size_mbytes"` Size uint64 `json:"max_size_mbytes" format:"uint64"`
TTL int64 `json:"ttl_seconds"` TTL int64 `json:"ttl_seconds" format:"int64"`
FileSize uint64 `json:"max_file_size_mbytes"` FileSize uint64 `json:"max_file_size_mbytes" format:"uint64"`
Types []string `json:"types"` Types []string `json:"types"`
} `json:"cache"` } `json:"cache"`
} `json:"disk"` } `json:"disk"`
@@ -84,7 +84,7 @@ type Data struct {
Username string `json:"username"` Username string `json:"username"`
Password string `json:"password"` Password string `json:"password"`
} `json:"auth"` } `json:"auth"`
Size int64 `json:"max_size_mbytes"` Size int64 `json:"max_size_mbytes" format:"int64"`
Purge bool `json:"purge"` Purge bool `json:"purge"`
} `json:"memory"` } `json:"memory"`
CORS struct { CORS struct {
@@ -112,7 +112,7 @@ type Data struct {
} `json:"srt"` } `json:"srt"`
FFmpeg struct { FFmpeg struct {
Binary string `json:"binary"` Binary string `json:"binary"`
MaxProcesses int64 `json:"max_processes"` MaxProcesses int64 `json:"max_processes" format:"int64"`
Access struct { Access struct {
Input struct { Input struct {
Allow []string `json:"allow"` Allow []string `json:"allow"`
@@ -124,33 +124,33 @@ type Data struct {
} `json:"output"` } `json:"output"`
} `json:"access"` } `json:"access"`
Log struct { Log struct {
MaxLines int `json:"max_lines"` MaxLines int `json:"max_lines" format:"int"`
MaxHistory int `json:"max_history"` MaxHistory int `json:"max_history" format:"int"`
} `json:"log"` } `json:"log"`
} `json:"ffmpeg"` } `json:"ffmpeg"`
Playout struct { Playout struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
MinPort int `json:"min_port"` MinPort int `json:"min_port" format:"int"`
MaxPort int `json:"max_port"` MaxPort int `json:"max_port" format:"int"`
} `json:"playout"` } `json:"playout"`
Debug struct { Debug struct {
Profiling bool `json:"profiling"` Profiling bool `json:"profiling"`
ForceGC int `json:"force_gc"` ForceGC int `json:"force_gc" format:"int"`
} `json:"debug"` } `json:"debug"`
Metrics struct { Metrics struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
EnablePrometheus bool `json:"enable_prometheus"` EnablePrometheus bool `json:"enable_prometheus"`
Range int64 `json:"range_sec"` // seconds Range int64 `json:"range_sec" format:"int64"` // seconds
Interval int64 `json:"interval_sec"` // seconds Interval int64 `json:"interval_sec" format:"int64"` // seconds
} `json:"metrics"` } `json:"metrics"`
Sessions struct { Sessions struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
IPIgnoreList []string `json:"ip_ignorelist"` IPIgnoreList []string `json:"ip_ignorelist"`
SessionTimeout int `json:"session_timeout_sec"` SessionTimeout int `json:"session_timeout_sec" format:"int"`
Persist bool `json:"persist"` Persist bool `json:"persist"`
PersistInterval int `json:"persist_interval_sec"` PersistInterval int `json:"persist_interval_sec" format:"int"`
MaxBitrate uint64 `json:"max_bitrate_mbit"` MaxBitrate uint64 `json:"max_bitrate_mbit" format:"uint64"`
MaxSessions uint64 `json:"max_sessions"` MaxSessions uint64 `json:"max_sessions" format:"uint64"`
} `json:"sessions"` } `json:"sessions"`
Service struct { Service struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3,14 +3,18 @@ definitions:
api.AVstream: api.AVstream:
properties: properties:
aqueue: aqueue:
format: uint64
type: integer type: integer
drop: drop:
format: uint64
type: integer type: integer
dup: dup:
format: uint64
type: integer type: integer
duplicating: duplicating:
type: boolean type: boolean
enc: enc:
format: uint64
type: integer type: integer
gop: gop:
type: string type: string
@@ -21,11 +25,13 @@ definitions:
output: output:
$ref: '#/definitions/api.AVstreamIO' $ref: '#/definitions/api.AVstreamIO'
queue: queue:
format: uint64
type: integer type: integer
type: object type: object
api.AVstreamIO: api.AVstreamIO:
properties: properties:
packet: packet:
format: uint64
type: integer type: integer
size_kb: size_kb:
type: integer type: integer
@@ -137,8 +143,10 @@ definitions:
debug: debug:
properties: properties:
force_gc: force_gc:
format: int
type: integer type: integer
memory_limit_mbytes: memory_limit_mbytes:
format: int64
type: integer type: integer
profiling: profiling:
type: boolean type: boolean
@@ -175,11 +183,14 @@ definitions:
log: log:
properties: properties:
max_history: max_history:
format: int
type: integer type: integer
max_lines: max_lines:
format: int
type: integer type: integer
type: object type: object
max_processes: max_processes:
format: int64
type: integer type: integer
type: object type: object
host: host:
@@ -204,6 +215,7 @@ definitions:
- silent - silent
type: string type: string
max_lines: max_lines:
format: int
type: integer type: integer
topics: topics:
items: items:
@@ -218,9 +230,11 @@ definitions:
type: boolean type: boolean
interval_sec: interval_sec:
description: seconds description: seconds
format: int64
type: integer type: integer
range_sec: range_sec:
description: seconds description: seconds
format: int64
type: integer type: integer
type: object type: object
name: name:
@@ -230,8 +244,10 @@ definitions:
enable: enable:
type: boolean type: boolean
max_port: max_port:
format: int
type: integer type: integer
min_port: min_port:
format: int
type: integer type: integer
type: object type: object
router: router:
@@ -280,14 +296,18 @@ definitions:
type: string type: string
type: array type: array
max_bitrate_mbit: max_bitrate_mbit:
format: uint64
type: integer type: integer
max_sessions: max_sessions:
format: uint64
type: integer type: integer
persist: persist:
type: boolean type: boolean
persist_interval_sec: persist_interval_sec:
format: int
type: integer type: integer
session_timeout_sec: session_timeout_sec:
format: int
type: integer type: integer
type: object type: object
srt: srt:
@@ -326,10 +346,13 @@ definitions:
enable: enable:
type: boolean type: boolean
max_file_size_mbytes: max_file_size_mbytes:
format: uint64
type: integer type: integer
max_size_mbytes: max_size_mbytes:
format: uint64
type: integer type: integer
ttl_seconds: ttl_seconds:
format: int64
type: integer type: integer
types: types:
properties: properties:
@@ -346,6 +369,7 @@ definitions:
dir: dir:
type: string type: string
max_size_mbytes: max_size_mbytes:
format: int64
type: integer type: integer
type: object type: object
memory: memory:
@@ -360,6 +384,7 @@ definitions:
type: string type: string
type: object type: object
max_size_mbytes: max_size_mbytes:
format: int64
type: integer type: integer
purge: purge:
type: boolean type: boolean
@@ -385,6 +410,7 @@ definitions:
update_check: update_check:
type: boolean type: boolean
version: version:
format: int64
type: integer type: integer
type: object type: object
api.ConfigError: api.ConfigError:
@@ -396,6 +422,7 @@ definitions:
api.Error: api.Error:
properties: properties:
code: code:
format: int
type: integer type: integer
details: details:
items: items:
@@ -407,10 +434,12 @@ definitions:
api.FileInfo: api.FileInfo:
properties: properties:
last_modified: last_modified:
format: int64
type: integer type: integer
name: name:
type: string type: string
size_bytes: size_bytes:
format: int64
type: integer type: integer
type: object type: object
api.GraphQuery: api.GraphQuery:
@@ -465,12 +494,14 @@ definitions:
api.MetricsQuery: api.MetricsQuery:
properties: properties:
interval_sec: interval_sec:
format: int64
type: integer type: integer
metrics: metrics:
items: items:
$ref: '#/definitions/api.MetricsQueryMetric' $ref: '#/definitions/api.MetricsQueryMetric'
type: array type: array
timerange_sec: timerange_sec:
format: int64
type: integer type: integer
type: object type: object
api.MetricsQueryMetric: api.MetricsQueryMetric:
@@ -485,12 +516,14 @@ definitions:
api.MetricsResponse: api.MetricsResponse:
properties: properties:
interval_sec: interval_sec:
format: int64
type: integer type: integer
metrics: metrics:
items: items:
$ref: '#/definitions/api.MetricsResponseMetric' $ref: '#/definitions/api.MetricsResponseMetric'
type: array type: array
timerange_sec: timerange_sec:
format: int64
type: integer type: integer
type: object type: object
api.MetricsResponseMetric: api.MetricsResponseMetric:
@@ -516,15 +549,19 @@ definitions:
api.PlayoutStatus: api.PlayoutStatus:
properties: properties:
aqueue: aqueue:
format: uint64
type: integer type: integer
debug: {} debug: {}
drop: drop:
format: uint64
type: integer type: integer
dup: dup:
format: uint64
type: integer type: integer
duplicating: duplicating:
type: boolean type: boolean
enc: enc:
format: uint64
type: integer type: integer
gop: gop:
type: string type: string
@@ -537,8 +574,10 @@ definitions:
output: output:
$ref: '#/definitions/api.PlayoutStatusIO' $ref: '#/definitions/api.PlayoutStatusIO'
queue: queue:
format: uint64
type: integer type: integer
stream: stream:
format: uint64
type: integer type: integer
swap: swap:
$ref: '#/definitions/api.PlayoutStatusSwap' $ref: '#/definitions/api.PlayoutStatusSwap'
@@ -548,8 +587,10 @@ definitions:
api.PlayoutStatusIO: api.PlayoutStatusIO:
properties: properties:
packet: packet:
format: uint64
type: integer type: integer
size_kb: size_kb:
format: uint64
type: integer type: integer
state: state:
enum: enum:
@@ -557,6 +598,7 @@ definitions:
- idle - idle
type: string type: string
time: time:
format: uint64
type: integer type: integer
type: object type: object
api.PlayoutStatusSwap: api.PlayoutStatusSwap:
@@ -586,6 +628,7 @@ definitions:
bitrate_kbps: bitrate_kbps:
type: number type: number
channels: channels:
format: uint64
type: integer type: integer
codec: codec:
type: string type: string
@@ -599,8 +642,10 @@ definitions:
description: video description: video
type: number type: number
height: height:
format: uint64
type: integer type: integer
index: index:
format: uint64
type: integer type: integer
language: language:
type: string type: string
@@ -610,8 +655,10 @@ definitions:
type: string type: string
sampling_hz: sampling_hz:
description: audio description: audio
format: uint64
type: integer type: integer
stream: stream:
format: uint64
type: integer type: integer
type: type:
type: string type: string
@@ -619,6 +666,7 @@ definitions:
description: common description: common
type: string type: string
width: width:
format: uint64
type: integer type: integer
type: object type: object
api.Process: api.Process:
@@ -626,6 +674,7 @@ definitions:
config: config:
$ref: '#/definitions/api.ProcessConfig' $ref: '#/definitions/api.ProcessConfig'
created_at: created_at:
format: int64
type: integer type: integer
id: id:
type: string type: string
@@ -662,10 +711,12 @@ definitions:
reconnect: reconnect:
type: boolean type: boolean
reconnect_delay_seconds: reconnect_delay_seconds:
format: uint64
type: integer type: integer
reference: reference:
type: string type: string
stale_timeout_seconds: stale_timeout_seconds:
format: uint64
type: integer type: integer
type: type:
enum: enum:
@@ -696,8 +747,10 @@ definitions:
api.ProcessConfigIOCleanup: api.ProcessConfigIOCleanup:
properties: properties:
max_file_age_seconds: max_file_age_seconds:
format: uint
type: integer type: integer
max_files: max_files:
format: uint
type: integer type: integer
pattern: pattern:
type: string type: string
@@ -711,13 +764,16 @@ definitions:
cpu_usage: cpu_usage:
type: number type: number
memory_mbytes: memory_mbytes:
format: uint64
type: integer type: integer
waitfor_seconds: waitfor_seconds:
format: uint64
type: integer type: integer
type: object type: object
api.ProcessReport: api.ProcessReport:
properties: properties:
created_at: created_at:
format: int64
type: integer type: integer
history: history:
items: items:
@@ -737,6 +793,7 @@ definitions:
api.ProcessReportHistoryEntry: api.ProcessReportHistoryEntry:
properties: properties:
created_at: created_at:
format: int64
type: integer type: integer
log: log:
items: items:
@@ -762,14 +819,17 @@ definitions:
last_logline: last_logline:
type: string type: string
memory_bytes: memory_bytes:
format: uint64
type: integer type: integer
order: order:
type: string type: string
progress: progress:
$ref: '#/definitions/api.Progress' $ref: '#/definitions/api.Progress'
reconnect_seconds: reconnect_seconds:
format: int64
type: integer type: integer
runtime_seconds: runtime_seconds:
format: int64
type: integer type: integer
type: object type: object
api.Progress: api.Progress:
@@ -778,12 +838,15 @@ definitions:
description: kbit/s description: kbit/s
type: number type: number
drop: drop:
format: uint64
type: integer type: integer
dup: dup:
format: uint64
type: integer type: integer
fps: fps:
type: number type: number
frame: frame:
format: uint64
type: integer type: integer
inputs: inputs:
items: items:
@@ -794,11 +857,13 @@ definitions:
$ref: '#/definitions/api.ProgressIO' $ref: '#/definitions/api.ProgressIO'
type: array type: array
packet: packet:
format: uint64
type: integer type: integer
q: q:
type: number type: number
size_kb: size_kb:
description: kbytes description: kbytes
format: uint64
type: integer type: integer
speed: speed:
type: number type: number
@@ -817,6 +882,7 @@ definitions:
description: kbit/s description: kbit/s
type: number type: number
channels: channels:
format: uint64
type: integer type: integer
codec: codec:
type: string type: string
@@ -827,17 +893,21 @@ definitions:
fps: fps:
type: number type: number
frame: frame:
format: uint64
type: integer type: integer
height: height:
format: uint64
type: integer type: integer
id: id:
type: string type: string
index: index:
description: General description: General
format: uint64
type: integer type: integer
layout: layout:
type: string type: string
packet: packet:
format: uint64
type: integer type: integer
pix_fmt: pix_fmt:
description: Video description: Video
@@ -848,15 +918,19 @@ definitions:
type: number type: number
sampling_hz: sampling_hz:
description: Audio description: Audio
format: uint64
type: integer type: integer
size_kb: size_kb:
description: kbytes description: kbytes
format: uint64
type: integer type: integer
stream: stream:
format: uint64
type: integer type: integer
type: type:
type: string type: string
width: width:
format: uint64
type: integer type: integer
type: object type: object
api.RTMPChannel: api.RTMPChannel:
@@ -905,34 +979,41 @@ definitions:
type: string type: string
type: array type: array
ts: ts:
format: int64
type: integer type: integer
type: object type: object
api.SRTStatistics: api.SRTStatistics:
properties: properties:
avail_recv_buf_bytes: avail_recv_buf_bytes:
description: The available space in the receiver's buffer, in bytes description: The available space in the receiver's buffer, in bytes
format: uint64
type: integer type: integer
avail_send_buf_bytes: avail_send_buf_bytes:
description: The available space in the sender's buffer, in bytes description: The available space in the sender's buffer, in bytes
format: uint64
type: integer type: integer
bandwidth_mbit: bandwidth_mbit:
description: Estimated bandwidth of the network link, in Mbps description: Estimated bandwidth of the network link, in Mbps
type: number type: number
flight_size_pkt: flight_size_pkt:
description: The number of packets in flight description: The number of packets in flight
format: uint64
type: integer type: integer
flow_window_pkt: flow_window_pkt:
description: The maximum number of packets that can be "in flight" description: The maximum number of packets that can be "in flight"
format: uint64
type: integer type: integer
max_bandwidth_mbit: max_bandwidth_mbit:
description: Transmission bandwidth limit, in Mbps description: Transmission bandwidth limit, in Mbps
type: number type: number
mss_bytes: mss_bytes:
description: Maximum Segment Size (MSS), in bytes description: Maximum Segment Size (MSS), in bytes
format: uint64
type: integer type: integer
pkt_recv_avg_belated_time_ms: pkt_recv_avg_belated_time_ms:
description: Accumulated difference between the current time and the time-to-play description: Accumulated difference between the current time and the time-to-play
of a packet that is received late of a packet that is received late
format: uint64
type: integer type: integer
pkt_send_period_us: pkt_send_period_us:
description: Current minimum time interval between which consecutive packets description: Current minimum time interval between which consecutive packets
@@ -940,79 +1021,98 @@ definitions:
type: number type: number
recv_ack_pkt: recv_ack_pkt:
description: The total number of received ACK (Acknowledgement) control packets description: The total number of received ACK (Acknowledgement) control packets
format: uint64
type: integer type: integer
recv_buf_bytes: recv_buf_bytes:
description: Instantaneous (current) value of pktRcvBuf, expressed in bytes, description: Instantaneous (current) value of pktRcvBuf, expressed in bytes,
including payload and all headers (IP, TCP, SRT) including payload and all headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
recv_buf_ms: recv_buf_ms:
description: The timespan (msec) of acknowledged packets in the receiver's description: The timespan (msec) of acknowledged packets in the receiver's
buffer buffer
format: uint64
type: integer type: integer
recv_buf_pkt: recv_buf_pkt:
description: The number of acknowledged packets in receiver's buffer description: The number of acknowledged packets in receiver's buffer
format: uint64
type: integer type: integer
recv_bytes: recv_bytes:
description: Same as pktRecv, but expressed in bytes, including payload and description: Same as pktRecv, but expressed in bytes, including payload and
all the headers (IP, TCP, SRT) all the headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
recv_drop_bytes: recv_drop_bytes:
description: Same as pktRcvDrop, but expressed in bytes, including payload description: Same as pktRcvDrop, but expressed in bytes, including payload
and all the headers (IP, TCP, SRT) and all the headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
recv_drop_pkt: recv_drop_pkt:
description: The total number of dropped by the SRT receiver and, as a result, description: The total number of dropped by the SRT receiver and, as a result,
not delivered to the upstream application DATA packets not delivered to the upstream application DATA packets
format: uint64
type: integer type: integer
recv_km_pkt: recv_km_pkt:
description: The total number of received KM (Key Material) control packets description: The total number of received KM (Key Material) control packets
format: uint64
type: integer type: integer
recv_loss_bytes: recv_loss_bytes:
description: Same as pktRcvLoss, but expressed in bytes, including payload description: Same as pktRcvLoss, but expressed in bytes, including payload
and all the headers (IP, TCP, SRT), bytes for the presently missing (either and all the headers (IP, TCP, SRT), bytes for the presently missing (either
reordered or lost) packets' payloads are estimated based on the average reordered or lost) packets' payloads are estimated based on the average
packet size packet size
format: uint64
type: integer type: integer
recv_loss_pkt: recv_loss_pkt:
description: The total number of SRT DATA packets detected as presently missing description: The total number of SRT DATA packets detected as presently missing
(either reordered or lost) at the receiver side (either reordered or lost) at the receiver side
format: uint64
type: integer type: integer
recv_nak_pkt: recv_nak_pkt:
description: The total number of received NAK (Negative Acknowledgement) control description: The total number of received NAK (Negative Acknowledgement) control
packets packets
format: uint64
type: integer type: integer
recv_pkt: recv_pkt:
description: The total number of received DATA packets, including retransmitted description: The total number of received DATA packets, including retransmitted
packets packets
format: uint64
type: integer type: integer
recv_retran_pkts: recv_retran_pkts:
description: The total number of retransmitted packets registered at the receiver description: The total number of retransmitted packets registered at the receiver
side side
format: uint64
type: integer type: integer
recv_tsbpd_delay_ms: recv_tsbpd_delay_ms:
description: Timestamp-based Packet Delivery Delay value set on the socket description: Timestamp-based Packet Delivery Delay value set on the socket
via SRTO_RCVLATENCY or SRTO_LATENCY via SRTO_RCVLATENCY or SRTO_LATENCY
format: uint64
type: integer type: integer
recv_undecrypt_bytes: recv_undecrypt_bytes:
description: Same as pktRcvUndecrypt, but expressed in bytes, including payload description: Same as pktRcvUndecrypt, but expressed in bytes, including payload
and all the headers (IP, TCP, SRT) and all the headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
recv_undecrypt_pkt: recv_undecrypt_pkt:
description: The total number of packets that failed to be decrypted at the description: The total number of packets that failed to be decrypted at the
receiver side receiver side
format: uint64
type: integer type: integer
recv_unique_bytes: recv_unique_bytes:
description: Same as pktRecvUnique, but expressed in bytes, including payload description: Same as pktRecvUnique, but expressed in bytes, including payload
and all the headers (IP, TCP, SRT) and all the headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
recv_unique_pkt: recv_unique_pkt:
description: The total number of unique original, retransmitted or recovered description: The total number of unique original, retransmitted or recovered
by the packet filter DATA packets received in time, decrypted without errors by the packet filter DATA packets received in time, decrypted without errors
and, as a result, scheduled for delivery to the upstream application by and, as a result, scheduled for delivery to the upstream application by
the SRT receiver. the SRT receiver.
format: uint64
type: integer type: integer
reorder_tolerance_pkt: reorder_tolerance_pkt:
description: Instant value of the packet reorder tolerance description: Instant value of the packet reorder tolerance
format: uint64
type: integer type: integer
rtt_ms: rtt_ms:
description: Smoothed round-trip time (SRTT), an exponentially-weighted moving description: Smoothed round-trip time (SRTT), an exponentially-weighted moving
@@ -1021,71 +1121,89 @@ definitions:
send_buf_bytes: send_buf_bytes:
description: Instantaneous (current) value of pktSndBuf, but expressed in description: Instantaneous (current) value of pktSndBuf, but expressed in
bytes, including payload and all headers (IP, TCP, SRT) bytes, including payload and all headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
send_buf_ms: send_buf_ms:
description: The timespan (msec) of packets in the sender's buffer (unacknowledged description: The timespan (msec) of packets in the sender's buffer (unacknowledged
packets) packets)
format: uint64
type: integer type: integer
send_buf_pkt: send_buf_pkt:
description: The number of packets in the sender's buffer that are already description: The number of packets in the sender's buffer that are already
scheduled for sending or even possibly sent, but not yet acknowledged scheduled for sending or even possibly sent, but not yet acknowledged
format: uint64
type: integer type: integer
send_drop_bytes: send_drop_bytes:
description: Same as pktSndDrop, but expressed in bytes, including payload description: Same as pktSndDrop, but expressed in bytes, including payload
and all the headers (IP, TCP, SRT) and all the headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
send_drop_pkt: send_drop_pkt:
description: The total number of dropped by the SRT sender DATA packets that description: The total number of dropped by the SRT sender DATA packets that
have no chance to be delivered in time have no chance to be delivered in time
format: uint64
type: integer type: integer
send_duration_us: send_duration_us:
description: The total accumulated time in microseconds, during which the description: The total accumulated time in microseconds, during which the
SRT sender has some data to transmit, including packets that have been sent, SRT sender has some data to transmit, including packets that have been sent,
but not yet acknowledged but not yet acknowledged
format: uint64
type: integer type: integer
send_km_pkt: send_km_pkt:
description: The total number of sent KM (Key Material) control packets description: The total number of sent KM (Key Material) control packets
format: uint64
type: integer type: integer
send_loss_pkt: send_loss_pkt:
description: The total number of data packets considered or reported as lost description: The total number of data packets considered or reported as lost
at the sender side. Does not correspond to the packets detected as lost at the sender side. Does not correspond to the packets detected as lost
at the receiver side. at the receiver side.
format: uint64
type: integer type: integer
send_tsbpd_delay_ms: send_tsbpd_delay_ms:
description: Timestamp-based Packet Delivery Delay value of the peer description: Timestamp-based Packet Delivery Delay value of the peer
format: uint64
type: integer type: integer
sent_ack_pkt: sent_ack_pkt:
description: The total number of sent ACK (Acknowledgement) control packets description: The total number of sent ACK (Acknowledgement) control packets
format: uint64
type: integer type: integer
sent_bytes: sent_bytes:
description: Same as pktSent, but expressed in bytes, including payload and description: Same as pktSent, but expressed in bytes, including payload and
all the headers (IP, TCP, SRT) all the headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
sent_nak_pkt: sent_nak_pkt:
description: The total number of sent NAK (Negative Acknowledgement) control description: The total number of sent NAK (Negative Acknowledgement) control
packets packets
format: uint64
type: integer type: integer
sent_pkt: sent_pkt:
description: The total number of sent DATA packets, including retransmitted description: The total number of sent DATA packets, including retransmitted
packets packets
format: uint64
type: integer type: integer
sent_retrans_bytes: sent_retrans_bytes:
description: Same as pktRetrans, but expressed in bytes, including payload description: Same as pktRetrans, but expressed in bytes, including payload
and all the headers (IP, TCP, SRT) and all the headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
sent_retrans_pkt: sent_retrans_pkt:
description: The total number of retransmitted packets sent by the SRT sender description: The total number of retransmitted packets sent by the SRT sender
format: uint64
type: integer type: integer
sent_unique_bytes: sent_unique_bytes:
description: Same as pktSentUnique, but expressed in bytes, including payload description: Same as pktSentUnique, but expressed in bytes, including payload
and all the headers (IP, TCP, SRT) and all the headers (IP, TCP, SRT)
format: uint64
type: integer type: integer
sent_unique_pkt: sent_unique_pkt:
description: The total number of unique DATA packets sent by the SRT sender description: The total number of unique DATA packets sent by the SRT sender
format: uint64
type: integer type: integer
timestamp_ms: timestamp_ms:
description: The time elapsed, in milliseconds, since the SRT socket has been description: The time elapsed, in milliseconds, since the SRT socket has been
created created
format: uint64
type: integer type: integer
type: object type: object
api.Session: api.Session:
@@ -1097,10 +1215,13 @@ definitions:
description: kbit/s description: kbit/s
type: number type: number
bytes_rx: bytes_rx:
format: uint64
type: integer type: integer
bytes_tx: bytes_tx:
format: uint64
type: integer type: integer
created_at: created_at:
format: int64
type: integer type: integer
extra: extra:
type: string type: string
@@ -1120,19 +1241,25 @@ definitions:
$ref: '#/definitions/api.SessionStats' $ref: '#/definitions/api.SessionStats'
type: object type: object
sessions: sessions:
format: uint64
type: integer type: integer
traffic_rx_mb: traffic_rx_mb:
format: uint64
type: integer type: integer
traffic_tx_mb: traffic_tx_mb:
format: uint64
type: integer type: integer
type: object type: object
api.SessionStats: api.SessionStats:
properties: properties:
sessions: sessions:
format: uint64
type: integer type: integer
traffic_rx_mb: traffic_rx_mb:
format: uint64
type: integer type: integer
traffic_tx_mb: traffic_tx_mb:
format: uint64
type: integer type: integer
type: object type: object
api.SessionSummary: api.SessionSummary:
@@ -1161,8 +1288,10 @@ definitions:
description: mbit/s description: mbit/s
type: number type: number
max_sessions: max_sessions:
format: uint64
type: integer type: integer
sessions: sessions:
format: uint64
type: integer type: integer
type: object type: object
api.SessionSummarySummary: api.SessionSummarySummary:
@@ -1180,10 +1309,13 @@ definitions:
$ref: '#/definitions/api.SessionPeers' $ref: '#/definitions/api.SessionPeers'
type: object type: object
sessions: sessions:
format: uint64
type: integer type: integer
traffic_rx_mb: traffic_rx_mb:
format: uint64
type: integer type: integer
traffic_tx_mb: traffic_tx_mb:
format: uint64
type: integer type: integer
type: object type: object
api.SessionsActive: api.SessionsActive:
@@ -1265,8 +1397,10 @@ definitions:
debug: debug:
properties: properties:
force_gc: force_gc:
format: int
type: integer type: integer
memory_limit_mbytes: memory_limit_mbytes:
format: int64
type: integer type: integer
profiling: profiling:
type: boolean type: boolean
@@ -1303,11 +1437,14 @@ definitions:
log: log:
properties: properties:
max_history: max_history:
format: int
type: integer type: integer
max_lines: max_lines:
format: int
type: integer type: integer
type: object type: object
max_processes: max_processes:
format: int64
type: integer type: integer
type: object type: object
host: host:
@@ -1332,6 +1469,7 @@ definitions:
- silent - silent
type: string type: string
max_lines: max_lines:
format: int
type: integer type: integer
topics: topics:
items: items:
@@ -1346,9 +1484,11 @@ definitions:
type: boolean type: boolean
interval_sec: interval_sec:
description: seconds description: seconds
format: int64
type: integer type: integer
range_sec: range_sec:
description: seconds description: seconds
format: int64
type: integer type: integer
type: object type: object
name: name:
@@ -1358,8 +1498,10 @@ definitions:
enable: enable:
type: boolean type: boolean
max_port: max_port:
format: int
type: integer type: integer
min_port: min_port:
format: int
type: integer type: integer
type: object type: object
router: router:
@@ -1408,14 +1550,18 @@ definitions:
type: string type: string
type: array type: array
max_bitrate_mbit: max_bitrate_mbit:
format: uint64
type: integer type: integer
max_sessions: max_sessions:
format: uint64
type: integer type: integer
persist: persist:
type: boolean type: boolean
persist_interval_sec: persist_interval_sec:
format: int
type: integer type: integer
session_timeout_sec: session_timeout_sec:
format: int
type: integer type: integer
type: object type: object
srt: srt:
@@ -1454,10 +1600,13 @@ definitions:
enable: enable:
type: boolean type: boolean
max_file_size_mbytes: max_file_size_mbytes:
format: uint64
type: integer type: integer
max_size_mbytes: max_size_mbytes:
format: uint64
type: integer type: integer
ttl_seconds: ttl_seconds:
format: int64
type: integer type: integer
types: types:
properties: properties:
@@ -1474,6 +1623,7 @@ definitions:
dir: dir:
type: string type: string
max_size_mbytes: max_size_mbytes:
format: int64
type: integer type: integer
type: object type: object
memory: memory:
@@ -1488,6 +1638,7 @@ definitions:
type: string type: string
type: object type: object
max_size_mbytes: max_size_mbytes:
format: int64
type: integer type: integer
purge: purge:
type: boolean type: boolean
@@ -1513,6 +1664,7 @@ definitions:
update_check: update_check:
type: boolean type: boolean
version: version:
format: int64
type: integer type: integer
type: object type: object
api.Skills: api.Skills:
@@ -1679,8 +1831,10 @@ definitions:
api.WidgetProcess: api.WidgetProcess:
properties: properties:
current_sessions: current_sessions:
format: uint64
type: integer type: integer
total_sessions: total_sessions:
format: uint64
type: integer type: integer
uptime: uptime:
type: integer type: integer

View File

@@ -6,7 +6,7 @@ import (
type AVstreamIO struct { type AVstreamIO struct {
State string `json:"state" enums:"running,idle" jsonschema:"enum=running,enum=idle"` State string `json:"state" enums:"running,idle" jsonschema:"enum=running,enum=idle"`
Packet uint64 `json:"packet"` Packet uint64 `json:"packet" format:"uint64"`
Time uint64 `json:"time"` Time uint64 `json:"time"`
Size uint64 `json:"size_kb"` Size uint64 `json:"size_kb"`
} }
@@ -25,11 +25,11 @@ func (i *AVstreamIO) Unmarshal(io *app.AVstreamIO) {
type AVstream struct { type AVstream struct {
Input AVstreamIO `json:"input"` Input AVstreamIO `json:"input"`
Output AVstreamIO `json:"output"` Output AVstreamIO `json:"output"`
Aqueue uint64 `json:"aqueue"` Aqueue uint64 `json:"aqueue" format:"uint64"`
Queue uint64 `json:"queue"` Queue uint64 `json:"queue" format:"uint64"`
Dup uint64 `json:"dup"` Dup uint64 `json:"dup" format:"uint64"`
Drop uint64 `json:"drop"` Drop uint64 `json:"drop" format:"uint64"`
Enc uint64 `json:"enc"` Enc uint64 `json:"enc" format:"uint64"`
Looping bool `json:"looping"` Looping bool `json:"looping"`
Duplicating bool `json:"duplicating"` Duplicating bool `json:"duplicating"`
GOP string `json:"gop"` GOP string `json:"gop"`

View File

@@ -8,7 +8,7 @@ import (
// Error represents an error response of the API // Error represents an error response of the API
type Error struct { type Error struct {
Code int `json:"code" jsonschema:"required"` Code int `json:"code" jsonschema:"required" format:"int"`
Message string `json:"message" jsonschema:""` Message string `json:"message" jsonschema:""`
Details []string `json:"details" jsonschema:""` Details []string `json:"details" jsonschema:""`
} }

View File

@@ -3,6 +3,6 @@ package api
// FileInfo represents informatiion about a file on a filesystem // FileInfo represents informatiion about a file on a filesystem
type FileInfo struct { type FileInfo struct {
Name string `json:"name" jsonschema:"minLength=1"` Name string `json:"name" jsonschema:"minLength=1"`
Size int64 `json:"size_bytes" jsonschema:"minimum=0"` Size int64 `json:"size_bytes" jsonschema:"minimum=0" format:"int64"`
LastMod int64 `json:"last_modified" jsonschema:"minimum=0"` LastMod int64 `json:"last_modified" jsonschema:"minimum=0" format:"int64"`
} }

View File

@@ -19,8 +19,8 @@ type MetricsQueryMetric struct {
} }
type MetricsQuery struct { type MetricsQuery struct {
Timerange int64 `json:"timerange_sec"` Timerange int64 `json:"timerange_sec" format:"int64"`
Interval int64 `json:"interval_sec"` Interval int64 `json:"interval_sec" format:"int64"`
Metrics []MetricsQueryMetric `json:"metrics"` Metrics []MetricsQueryMetric `json:"metrics"`
} }
@@ -51,8 +51,8 @@ func (v MetricsResponseValue) MarshalJSON() ([]byte, error) {
} }
type MetricsResponse struct { type MetricsResponse struct {
Timerange int64 `json:"timerange_sec"` Timerange int64 `json:"timerange_sec" format:"int64"`
Interval int64 `json:"interval_sec"` Interval int64 `json:"interval_sec" format:"int64"`
Metrics []MetricsResponseMetric `json:"metrics"` Metrics []MetricsResponseMetric `json:"metrics"`
} }

View File

@@ -4,9 +4,9 @@ import "github.com/datarhei/core/v16/playout"
type PlayoutStatusIO struct { type PlayoutStatusIO struct {
State string `json:"state" enums:"running,idle" jsonschema:"enum=running,enum=idle"` State string `json:"state" enums:"running,idle" jsonschema:"enum=running,enum=idle"`
Packet uint64 `json:"packet"` Packet uint64 `json:"packet" format:"uint64"`
Time uint64 `json:"time"` Time uint64 `json:"time" format:"uint64"`
Size uint64 `json:"size_kb"` Size uint64 `json:"size_kb" format:"uint64"`
} }
func (i *PlayoutStatusIO) Unmarshal(io playout.StatusIO) { func (i *PlayoutStatusIO) Unmarshal(io playout.StatusIO) {
@@ -33,12 +33,12 @@ func (s *PlayoutStatusSwap) Unmarshal(swap playout.StatusSwap) {
type PlayoutStatus struct { type PlayoutStatus struct {
ID string `json:"id"` ID string `json:"id"`
Address string `json:"url"` Address string `json:"url"`
Stream uint64 `json:"stream"` Stream uint64 `json:"stream" format:"uint64"`
Queue uint64 `json:"queue"` Queue uint64 `json:"queue" format:"uint64"`
AQueue uint64 `json:"aqueue"` AQueue uint64 `json:"aqueue" format:"uint64"`
Dup uint64 `json:"dup"` Dup uint64 `json:"dup" format:"uint64"`
Drop uint64 `json:"drop"` Drop uint64 `json:"drop" format:"uint64"`
Enc uint64 `json:"enc"` Enc uint64 `json:"enc" format:"uint64"`
Looping bool `json:"looping"` Looping bool `json:"looping"`
Duplicating bool `json:"duplicating"` Duplicating bool `json:"duplicating"`
GOP string `json:"gop"` GOP string `json:"gop"`

View File

@@ -11,8 +11,8 @@ type ProbeIO struct {
// common // common
Address string `json:"url"` Address string `json:"url"`
Format string `json:"format"` Format string `json:"format"`
Index uint64 `json:"index"` Index uint64 `json:"index" format:"uint64"`
Stream uint64 `json:"stream"` Stream uint64 `json:"stream" format:"uint64"`
Language string `json:"language"` Language string `json:"language"`
Type string `json:"type"` Type string `json:"type"`
Codec string `json:"codec"` Codec string `json:"codec"`
@@ -23,13 +23,13 @@ type ProbeIO struct {
// video // video
FPS json.Number `json:"fps" swaggertype:"number" jsonschema:"type=number"` FPS json.Number `json:"fps" swaggertype:"number" jsonschema:"type=number"`
Pixfmt string `json:"pix_fmt"` Pixfmt string `json:"pix_fmt"`
Width uint64 `json:"width"` Width uint64 `json:"width" format:"uint64"`
Height uint64 `json:"height"` Height uint64 `json:"height" format:"uint64"`
// audio // audio
Sampling uint64 `json:"sampling_hz"` Sampling uint64 `json:"sampling_hz" format:"uint64"`
Layout string `json:"layout"` Layout string `json:"layout"`
Channels uint64 `json:"channels"` Channels uint64 `json:"channels" format:"uint64"`
} }
func (i *ProbeIO) Unmarshal(io *app.ProbeIO) { func (i *ProbeIO) Unmarshal(io *app.ProbeIO) {

View File

@@ -13,7 +13,7 @@ type Process struct {
ID string `json:"id" jsonschema:"minLength=1"` ID string `json:"id" jsonschema:"minLength=1"`
Type string `json:"type" jsonschema:"enum=ffmpeg"` Type string `json:"type" jsonschema:"enum=ffmpeg"`
Reference string `json:"reference"` Reference string `json:"reference"`
CreatedAt int64 `json:"created_at" jsonschema:"minimum=0"` CreatedAt int64 `json:"created_at" jsonschema:"minimum=0" format:"int64"`
Config *ProcessConfig `json:"config,omitempty"` Config *ProcessConfig `json:"config,omitempty"`
State *ProcessState `json:"state,omitempty"` State *ProcessState `json:"state,omitempty"`
Report *ProcessReport `json:"report,omitempty"` Report *ProcessReport `json:"report,omitempty"`
@@ -30,15 +30,15 @@ type ProcessConfigIO struct {
type ProcessConfigIOCleanup struct { type ProcessConfigIOCleanup struct {
Pattern string `json:"pattern" validate:"required"` Pattern string `json:"pattern" validate:"required"`
MaxFiles uint `json:"max_files"` MaxFiles uint `json:"max_files" format:"uint"`
MaxFileAge uint `json:"max_file_age_seconds"` MaxFileAge uint `json:"max_file_age_seconds" format:"uint"`
PurgeOnDelete bool `json:"purge_on_delete"` PurgeOnDelete bool `json:"purge_on_delete"`
} }
type ProcessConfigLimits struct { type ProcessConfigLimits struct {
CPU float64 `json:"cpu_usage" jsonschema:"minimum=0,maximum=100"` CPU float64 `json:"cpu_usage" jsonschema:"minimum=0,maximum=100"`
Memory uint64 `json:"memory_mbytes" jsonschema:"minimum=0"` Memory uint64 `json:"memory_mbytes" jsonschema:"minimum=0" format:"uint64"`
WaitFor uint64 `json:"waitfor_seconds" jsonschema:"minimum=0"` WaitFor uint64 `json:"waitfor_seconds" jsonschema:"minimum=0" format:"uint64"`
} }
// ProcessConfig represents the configuration of an ffmpeg process // ProcessConfig represents the configuration of an ffmpeg process
@@ -50,9 +50,9 @@ type ProcessConfig struct {
Output []ProcessConfigIO `json:"output" validate:"required"` Output []ProcessConfigIO `json:"output" validate:"required"`
Options []string `json:"options"` Options []string `json:"options"`
Reconnect bool `json:"reconnect"` Reconnect bool `json:"reconnect"`
ReconnectDelay uint64 `json:"reconnect_delay_seconds"` ReconnectDelay uint64 `json:"reconnect_delay_seconds" format:"uint64"`
Autostart bool `json:"autostart"` Autostart bool `json:"autostart"`
StaleTimeout uint64 `json:"stale_timeout_seconds"` StaleTimeout uint64 `json:"stale_timeout_seconds" format:"uint64"`
Limits ProcessConfigLimits `json:"limits"` Limits ProcessConfigLimits `json:"limits"`
} }
@@ -188,7 +188,7 @@ func (cfg *ProcessConfig) Unmarshal(c *app.Config) {
// ProcessReportHistoryEntry represents the logs of a run of a restream process // ProcessReportHistoryEntry represents the logs of a run of a restream process
type ProcessReportHistoryEntry struct { type ProcessReportHistoryEntry struct {
CreatedAt int64 `json:"created_at"` CreatedAt int64 `json:"created_at" format:"int64"`
Prelude []string `json:"prelude"` Prelude []string `json:"prelude"`
Log [][2]string `json:"log"` Log [][2]string `json:"log"`
} }
@@ -235,11 +235,11 @@ func (report *ProcessReport) Unmarshal(l *app.Log) {
type ProcessState struct { type ProcessState struct {
Order string `json:"order" jsonschema:"enum=start,enum=stop"` Order string `json:"order" jsonschema:"enum=start,enum=stop"`
State string `json:"exec" jsonschema:"enum=finished,enum=starting,enum=running,enum=finishing,enum=killed,enum=failed"` State string `json:"exec" jsonschema:"enum=finished,enum=starting,enum=running,enum=finishing,enum=killed,enum=failed"`
Runtime int64 `json:"runtime_seconds" jsonschema:"minimum=0"` Runtime int64 `json:"runtime_seconds" jsonschema:"minimum=0" format:"int64"`
Reconnect int64 `json:"reconnect_seconds"` Reconnect int64 `json:"reconnect_seconds" format:"int64"`
LastLog string `json:"last_logline"` LastLog string `json:"last_logline"`
Progress *Progress `json:"progress"` Progress *Progress `json:"progress"`
Memory uint64 `json:"memory_bytes"` Memory uint64 `json:"memory_bytes" format:"uint64"`
CPU json.Number `json:"cpu_usage" swaggertype:"number" jsonschema:"type=number"` CPU json.Number `json:"cpu_usage" swaggertype:"number" jsonschema:"type=number"`
Command []string `json:"command"` Command []string `json:"command"`
} }

View File

@@ -13,29 +13,29 @@ type ProgressIO struct {
Address string `json:"address" jsonschema:"minLength=1"` Address string `json:"address" jsonschema:"minLength=1"`
// General // General
Index uint64 `json:"index"` Index uint64 `json:"index" format:"uint64"`
Stream uint64 `json:"stream"` Stream uint64 `json:"stream" format:"uint64"`
Format string `json:"format"` Format string `json:"format"`
Type string `json:"type"` Type string `json:"type"`
Codec string `json:"codec"` Codec string `json:"codec"`
Coder string `json:"coder"` Coder string `json:"coder"`
Frame uint64 `json:"frame"` Frame uint64 `json:"frame" format:"uint64"`
FPS json.Number `json:"fps" swaggertype:"number" jsonschema:"type=number"` FPS json.Number `json:"fps" swaggertype:"number" jsonschema:"type=number"`
Packet uint64 `json:"packet"` Packet uint64 `json:"packet" format:"uint64"`
PPS json.Number `json:"pps" swaggertype:"number" jsonschema:"type=number"` PPS json.Number `json:"pps" swaggertype:"number" jsonschema:"type=number"`
Size uint64 `json:"size_kb"` // kbytes Size uint64 `json:"size_kb" format:"uint64"` // kbytes
Bitrate json.Number `json:"bitrate_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s Bitrate json.Number `json:"bitrate_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s
// Video // Video
Pixfmt string `json:"pix_fmt,omitempty"` Pixfmt string `json:"pix_fmt,omitempty"`
Quantizer json.Number `json:"q,omitempty" swaggertype:"number" jsonschema:"type=number"` Quantizer json.Number `json:"q,omitempty" swaggertype:"number" jsonschema:"type=number"`
Width uint64 `json:"width,omitempty"` Width uint64 `json:"width,omitempty" format:"uint64"`
Height uint64 `json:"height,omitempty"` Height uint64 `json:"height,omitempty" format:"uint64"`
// Audio // Audio
Sampling uint64 `json:"sampling_hz,omitempty"` Sampling uint64 `json:"sampling_hz,omitempty" format:"uint64"`
Layout string `json:"layout,omitempty"` Layout string `json:"layout,omitempty"`
Channels uint64 `json:"channels,omitempty"` Channels uint64 `json:"channels,omitempty" format:"uint64"`
// avstream // avstream
AVstream *AVstream `json:"avstream"` AVstream *AVstream `json:"avstream"`
@@ -79,16 +79,16 @@ func (i *ProgressIO) Unmarshal(io *app.ProgressIO) {
type Progress struct { type Progress struct {
Input []ProgressIO `json:"inputs"` Input []ProgressIO `json:"inputs"`
Output []ProgressIO `json:"outputs"` Output []ProgressIO `json:"outputs"`
Frame uint64 `json:"frame"` Frame uint64 `json:"frame" format:"uint64"`
Packet uint64 `json:"packet"` Packet uint64 `json:"packet" format:"uint64"`
FPS json.Number `json:"fps" swaggertype:"number" jsonschema:"type=number"` FPS json.Number `json:"fps" swaggertype:"number" jsonschema:"type=number"`
Quantizer json.Number `json:"q" swaggertype:"number" jsonschema:"type=number"` Quantizer json.Number `json:"q" swaggertype:"number" jsonschema:"type=number"`
Size uint64 `json:"size_kb"` // kbytes Size uint64 `json:"size_kb" format:"uint64"` // kbytes
Time json.Number `json:"time" swaggertype:"number" jsonschema:"type=number"` Time json.Number `json:"time" swaggertype:"number" jsonschema:"type=number"`
Bitrate json.Number `json:"bitrate_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s Bitrate json.Number `json:"bitrate_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s
Speed json.Number `json:"speed" swaggertype:"number" jsonschema:"type=number"` Speed json.Number `json:"speed" swaggertype:"number" jsonschema:"type=number"`
Drop uint64 `json:"drop"` Drop uint64 `json:"drop" format:"uint64"`
Dup uint64 `json:"dup"` Dup uint64 `json:"dup" format:"uint64"`
} }
// Unmarshal converts a restreamer Progress to a Progress in API representation // Unmarshal converts a restreamer Progress to a Progress in API representation

View File

@@ -8,9 +8,9 @@ import (
// SessionStats are the accumulated numbers for the session summary // SessionStats are the accumulated numbers for the session summary
type SessionStats struct { type SessionStats struct {
TotalSessions uint64 `json:"sessions"` TotalSessions uint64 `json:"sessions" format:"uint64"`
TotalRxBytes uint64 `json:"traffic_rx_mb"` TotalRxBytes uint64 `json:"traffic_rx_mb" format:"uint64"`
TotalTxBytes uint64 `json:"traffic_tx_mb"` TotalTxBytes uint64 `json:"traffic_tx_mb" format:"uint64"`
} }
// SessionPeers is for the grouping by peers in the summary // SessionPeers is for the grouping by peers in the summary
@@ -24,12 +24,12 @@ type SessionPeers struct {
type Session struct { type Session struct {
ID string `json:"id"` ID string `json:"id"`
Reference string `json:"reference"` Reference string `json:"reference"`
CreatedAt int64 `json:"created_at"` CreatedAt int64 `json:"created_at" format:"int64"`
Location string `json:"local"` Location string `json:"local"`
Peer string `json:"remote"` Peer string `json:"remote"`
Extra string `json:"extra"` Extra string `json:"extra"`
RxBytes uint64 `json:"bytes_rx"` RxBytes uint64 `json:"bytes_rx" format:"uint64"`
TxBytes uint64 `json:"bytes_tx"` TxBytes uint64 `json:"bytes_tx" format:"uint64"`
RxBitrate json.Number `json:"bandwidth_rx_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s RxBitrate json.Number `json:"bandwidth_rx_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s
TxBitrate json.Number `json:"bandwidth_tx_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s TxBitrate json.Number `json:"bandwidth_tx_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s
} }
@@ -50,10 +50,10 @@ func (s *Session) Unmarshal(sess session.Session) {
// SessionSummaryActive represents the currently active sessions // SessionSummaryActive represents the currently active sessions
type SessionSummaryActive struct { type SessionSummaryActive struct {
SessionList []Session `json:"list"` SessionList []Session `json:"list"`
Sessions uint64 `json:"sessions"` Sessions uint64 `json:"sessions" format:"uint64"`
RxBitrate json.Number `json:"bandwidth_rx_mbit" swaggertype:"number" jsonschema:"type=number"` // mbit/s RxBitrate json.Number `json:"bandwidth_rx_mbit" swaggertype:"number" jsonschema:"type=number"` // mbit/s
TxBitrate json.Number `json:"bandwidth_tx_mbit" swaggertype:"number" jsonschema:"type=number"` // mbit/s TxBitrate json.Number `json:"bandwidth_tx_mbit" swaggertype:"number" jsonschema:"type=number"` // mbit/s
MaxSessions uint64 `json:"max_sessions"` MaxSessions uint64 `json:"max_sessions" format:"uint64"`
MaxRxBitrate json.Number `json:"max_bandwidth_rx_mbit" swaggertype:"number" jsonschema:"type=number"` // mbit/s MaxRxBitrate json.Number `json:"max_bandwidth_rx_mbit" swaggertype:"number" jsonschema:"type=number"` // mbit/s
MaxTxBitrate json.Number `json:"max_bandwidth_tx_mbit" swaggertype:"number" jsonschema:"type=number"` // mbit/s MaxTxBitrate json.Number `json:"max_bandwidth_tx_mbit" swaggertype:"number" jsonschema:"type=number"` // mbit/s
} }

View File

@@ -8,60 +8,60 @@ import (
// SRTStatistics represents the statistics of a SRT connection // SRTStatistics represents the statistics of a SRT connection
type SRTStatistics struct { type SRTStatistics struct {
MsTimeStamp uint64 `json:"timestamp_ms"` // The time elapsed, in milliseconds, since the SRT socket has been created MsTimeStamp uint64 `json:"timestamp_ms" format:"uint64"` // The time elapsed, in milliseconds, since the SRT socket has been created
// Accumulated // Accumulated
PktSent uint64 `json:"sent_pkt"` // The total number of sent DATA packets, including retransmitted packets PktSent uint64 `json:"sent_pkt" format:"uint64"` // The total number of sent DATA packets, including retransmitted packets
PktRecv uint64 `json:"recv_pkt"` // The total number of received DATA packets, including retransmitted packets PktRecv uint64 `json:"recv_pkt" format:"uint64"` // The total number of received DATA packets, including retransmitted packets
PktSentUnique uint64 `json:"sent_unique_pkt"` // The total number of unique DATA packets sent by the SRT sender PktSentUnique uint64 `json:"sent_unique_pkt" format:"uint64"` // The total number of unique DATA packets sent by the SRT sender
PktRecvUnique uint64 `json:"recv_unique_pkt"` // The total number of unique original, retransmitted or recovered by the packet filter DATA packets received in time, decrypted without errors and, as a result, scheduled for delivery to the upstream application by the SRT receiver. PktRecvUnique uint64 `json:"recv_unique_pkt" format:"uint64"` // The total number of unique original, retransmitted or recovered by the packet filter DATA packets received in time, decrypted without errors and, as a result, scheduled for delivery to the upstream application by the SRT receiver.
PktSndLoss uint64 `json:"send_loss_pkt"` // The total number of data packets considered or reported as lost at the sender side. Does not correspond to the packets detected as lost at the receiver side. PktSndLoss uint64 `json:"send_loss_pkt" format:"uint64"` // The total number of data packets considered or reported as lost at the sender side. Does not correspond to the packets detected as lost at the receiver side.
PktRcvLoss uint64 `json:"recv_loss_pkt"` // The total number of SRT DATA packets detected as presently missing (either reordered or lost) at the receiver side PktRcvLoss uint64 `json:"recv_loss_pkt" format:"uint64"` // The total number of SRT DATA packets detected as presently missing (either reordered or lost) at the receiver side
PktRetrans uint64 `json:"sent_retrans_pkt"` // The total number of retransmitted packets sent by the SRT sender PktRetrans uint64 `json:"sent_retrans_pkt" format:"uint64"` // The total number of retransmitted packets sent by the SRT sender
PktRcvRetrans uint64 `json:"recv_retran_pkts"` // The total number of retransmitted packets registered at the receiver side PktRcvRetrans uint64 `json:"recv_retran_pkts" format:"uint64"` // The total number of retransmitted packets registered at the receiver side
PktSentACK uint64 `json:"sent_ack_pkt"` // The total number of sent ACK (Acknowledgement) control packets PktSentACK uint64 `json:"sent_ack_pkt" format:"uint64"` // The total number of sent ACK (Acknowledgement) control packets
PktRecvACK uint64 `json:"recv_ack_pkt"` // The total number of received ACK (Acknowledgement) control packets PktRecvACK uint64 `json:"recv_ack_pkt" format:"uint64"` // The total number of received ACK (Acknowledgement) control packets
PktSentNAK uint64 `json:"sent_nak_pkt"` // The total number of sent NAK (Negative Acknowledgement) control packets PktSentNAK uint64 `json:"sent_nak_pkt" format:"uint64"` // The total number of sent NAK (Negative Acknowledgement) control packets
PktRecvNAK uint64 `json:"recv_nak_pkt"` // The total number of received NAK (Negative Acknowledgement) control packets PktRecvNAK uint64 `json:"recv_nak_pkt" format:"uint64"` // The total number of received NAK (Negative Acknowledgement) control packets
PktSentKM uint64 `json:"send_km_pkt"` // The total number of sent KM (Key Material) control packets PktSentKM uint64 `json:"send_km_pkt" format:"uint64"` // The total number of sent KM (Key Material) control packets
PktRecvKM uint64 `json:"recv_km_pkt"` // The total number of received KM (Key Material) control packets PktRecvKM uint64 `json:"recv_km_pkt" format:"uint64"` // The total number of received KM (Key Material) control packets
UsSndDuration uint64 `json:"send_duration_us"` // The total accumulated time in microseconds, during which the SRT sender has some data to transmit, including packets that have been sent, but not yet acknowledged UsSndDuration uint64 `json:"send_duration_us" format:"uint64"` // The total accumulated time in microseconds, during which the SRT sender has some data to transmit, including packets that have been sent, but not yet acknowledged
PktSndDrop uint64 `json:"send_drop_pkt"` // The total number of dropped by the SRT sender DATA packets that have no chance to be delivered in time PktSndDrop uint64 `json:"send_drop_pkt" format:"uint64"` // The total number of dropped by the SRT sender DATA packets that have no chance to be delivered in time
PktRcvDrop uint64 `json:"recv_drop_pkt"` // The total number of dropped by the SRT receiver and, as a result, not delivered to the upstream application DATA packets PktRcvDrop uint64 `json:"recv_drop_pkt" format:"uint64"` // The total number of dropped by the SRT receiver and, as a result, not delivered to the upstream application DATA packets
PktRcvUndecrypt uint64 `json:"recv_undecrypt_pkt"` // The total number of packets that failed to be decrypted at the receiver side PktRcvUndecrypt uint64 `json:"recv_undecrypt_pkt" format:"uint64"` // The total number of packets that failed to be decrypted at the receiver side
ByteSent uint64 `json:"sent_bytes"` // Same as pktSent, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) ByteSent uint64 `json:"sent_bytes" format:"uint64"` // Same as pktSent, but expressed in bytes, including payload and all the headers (IP, TCP, SRT)
ByteRecv uint64 `json:"recv_bytes"` // Same as pktRecv, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) ByteRecv uint64 `json:"recv_bytes" format:"uint64"` // Same as pktRecv, but expressed in bytes, including payload and all the headers (IP, TCP, SRT)
ByteSentUnique uint64 `json:"sent_unique_bytes"` // Same as pktSentUnique, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) ByteSentUnique uint64 `json:"sent_unique_bytes" format:"uint64"` // Same as pktSentUnique, but expressed in bytes, including payload and all the headers (IP, TCP, SRT)
ByteRecvUnique uint64 `json:"recv_unique_bytes"` // Same as pktRecvUnique, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) ByteRecvUnique uint64 `json:"recv_unique_bytes" format:"uint64"` // Same as pktRecvUnique, but expressed in bytes, including payload and all the headers (IP, TCP, SRT)
ByteRcvLoss uint64 `json:"recv_loss_bytes"` // Same as pktRcvLoss, but expressed in bytes, including payload and all the headers (IP, TCP, SRT), bytes for the presently missing (either reordered or lost) packets' payloads are estimated based on the average packet size ByteRcvLoss uint64 `json:"recv_loss_bytes" format:"uint64"` // Same as pktRcvLoss, but expressed in bytes, including payload and all the headers (IP, TCP, SRT), bytes for the presently missing (either reordered or lost) packets' payloads are estimated based on the average packet size
ByteRetrans uint64 `json:"sent_retrans_bytes"` // Same as pktRetrans, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) ByteRetrans uint64 `json:"sent_retrans_bytes" format:"uint64"` // Same as pktRetrans, but expressed in bytes, including payload and all the headers (IP, TCP, SRT)
ByteSndDrop uint64 `json:"send_drop_bytes"` // Same as pktSndDrop, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) ByteSndDrop uint64 `json:"send_drop_bytes" format:"uint64"` // Same as pktSndDrop, but expressed in bytes, including payload and all the headers (IP, TCP, SRT)
ByteRcvDrop uint64 `json:"recv_drop_bytes"` // Same as pktRcvDrop, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) ByteRcvDrop uint64 `json:"recv_drop_bytes" format:"uint64"` // Same as pktRcvDrop, but expressed in bytes, including payload and all the headers (IP, TCP, SRT)
ByteRcvUndecrypt uint64 `json:"recv_undecrypt_bytes"` // Same as pktRcvUndecrypt, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) ByteRcvUndecrypt uint64 `json:"recv_undecrypt_bytes" format:"uint64"` // Same as pktRcvUndecrypt, but expressed in bytes, including payload and all the headers (IP, TCP, SRT)
// Instantaneous // Instantaneous
UsPktSndPeriod float64 `json:"pkt_send_period_us"` // Current minimum time interval between which consecutive packets are sent, in microseconds UsPktSndPeriod float64 `json:"pkt_send_period_us"` // Current minimum time interval between which consecutive packets are sent, in microseconds
PktFlowWindow uint64 `json:"flow_window_pkt"` // The maximum number of packets that can be "in flight" PktFlowWindow uint64 `json:"flow_window_pkt" format:"uint64"` // The maximum number of packets that can be "in flight"
PktFlightSize uint64 `json:"flight_size_pkt"` // The number of packets in flight PktFlightSize uint64 `json:"flight_size_pkt" format:"uint64"` // The number of packets in flight
MsRTT float64 `json:"rtt_ms"` // Smoothed round-trip time (SRTT), an exponentially-weighted moving average (EWMA) of an endpoint's RTT samples, in milliseconds MsRTT float64 `json:"rtt_ms"` // Smoothed round-trip time (SRTT), an exponentially-weighted moving average (EWMA) of an endpoint's RTT samples, in milliseconds
MbpsBandwidth float64 `json:"bandwidth_mbit"` // Estimated bandwidth of the network link, in Mbps MbpsBandwidth float64 `json:"bandwidth_mbit"` // Estimated bandwidth of the network link, in Mbps
ByteAvailSndBuf uint64 `json:"avail_send_buf_bytes"` // The available space in the sender's buffer, in bytes ByteAvailSndBuf uint64 `json:"avail_send_buf_bytes" format:"uint64"` // The available space in the sender's buffer, in bytes
ByteAvailRcvBuf uint64 `json:"avail_recv_buf_bytes"` // The available space in the receiver's buffer, in bytes ByteAvailRcvBuf uint64 `json:"avail_recv_buf_bytes" format:"uint64"` // The available space in the receiver's buffer, in bytes
MbpsMaxBW float64 `json:"max_bandwidth_mbit"` // Transmission bandwidth limit, in Mbps MbpsMaxBW float64 `json:"max_bandwidth_mbit"` // Transmission bandwidth limit, in Mbps
ByteMSS uint64 `json:"mss_bytes"` // Maximum Segment Size (MSS), in bytes ByteMSS uint64 `json:"mss_bytes" format:"uint64"` // Maximum Segment Size (MSS), in bytes
PktSndBuf uint64 `json:"send_buf_pkt"` // The number of packets in the sender's buffer that are already scheduled for sending or even possibly sent, but not yet acknowledged PktSndBuf uint64 `json:"send_buf_pkt" format:"uint64"` // The number of packets in the sender's buffer that are already scheduled for sending or even possibly sent, but not yet acknowledged
ByteSndBuf uint64 `json:"send_buf_bytes"` // Instantaneous (current) value of pktSndBuf, but expressed in bytes, including payload and all headers (IP, TCP, SRT) ByteSndBuf uint64 `json:"send_buf_bytes" format:"uint64"` // Instantaneous (current) value of pktSndBuf, but expressed in bytes, including payload and all headers (IP, TCP, SRT)
MsSndBuf uint64 `json:"send_buf_ms"` // The timespan (msec) of packets in the sender's buffer (unacknowledged packets) MsSndBuf uint64 `json:"send_buf_ms" format:"uint64"` // The timespan (msec) of packets in the sender's buffer (unacknowledged packets)
MsSndTsbPdDelay uint64 `json:"send_tsbpd_delay_ms"` // Timestamp-based Packet Delivery Delay value of the peer MsSndTsbPdDelay uint64 `json:"send_tsbpd_delay_ms" format:"uint64"` // Timestamp-based Packet Delivery Delay value of the peer
PktRcvBuf uint64 `json:"recv_buf_pkt"` // The number of acknowledged packets in receiver's buffer PktRcvBuf uint64 `json:"recv_buf_pkt" format:"uint64"` // The number of acknowledged packets in receiver's buffer
ByteRcvBuf uint64 `json:"recv_buf_bytes"` // Instantaneous (current) value of pktRcvBuf, expressed in bytes, including payload and all headers (IP, TCP, SRT) ByteRcvBuf uint64 `json:"recv_buf_bytes" format:"uint64"` // Instantaneous (current) value of pktRcvBuf, expressed in bytes, including payload and all headers (IP, TCP, SRT)
MsRcvBuf uint64 `json:"recv_buf_ms"` // The timespan (msec) of acknowledged packets in the receiver's buffer MsRcvBuf uint64 `json:"recv_buf_ms" format:"uint64"` // The timespan (msec) of acknowledged packets in the receiver's buffer
MsRcvTsbPdDelay uint64 `json:"recv_tsbpd_delay_ms"` // Timestamp-based Packet Delivery Delay value set on the socket via SRTO_RCVLATENCY or SRTO_LATENCY MsRcvTsbPdDelay uint64 `json:"recv_tsbpd_delay_ms" format:"uint64"` // Timestamp-based Packet Delivery Delay value set on the socket via SRTO_RCVLATENCY or SRTO_LATENCY
PktReorderTolerance uint64 `json:"reorder_tolerance_pkt"` // Instant value of the packet reorder tolerance PktReorderTolerance uint64 `json:"reorder_tolerance_pkt" format:"uint64"` // Instant value of the packet reorder tolerance
PktRcvAvgBelatedTime uint64 `json:"pkt_recv_avg_belated_time_ms"` // Accumulated difference between the current time and the time-to-play of a packet that is received late PktRcvAvgBelatedTime uint64 `json:"pkt_recv_avg_belated_time_ms" format:"uint64"` // Accumulated difference between the current time and the time-to-play of a packet that is received late
} }
// Unmarshal converts the SRT statistics into API representation // Unmarshal converts the SRT statistics into API representation
@@ -119,7 +119,7 @@ func (s *SRTStatistics) Unmarshal(ss *gosrt.Statistics) {
} }
type SRTLog struct { type SRTLog struct {
Timestamp int64 `json:"ts"` Timestamp int64 `json:"ts" format:"int64"`
Message []string `json:"msg"` Message []string `json:"msg"`
} }

View File

@@ -1,7 +1,7 @@
package api package api
type WidgetProcess struct { type WidgetProcess struct {
CurrentSessions uint64 `json:"current_sessions"` CurrentSessions uint64 `json:"current_sessions" format:"uint64"`
TotalSessions uint64 `json:"total_sessions"` TotalSessions uint64 `json:"total_sessions" format:"uint64"`
Uptime int64 `json:"uptime"` Uptime int64 `json:"uptime"`
} }