API reference
Solar lucky-imaging stacker. All paths are relative to the server's data root. Version 0.5.0 of the document; licence GPL-3.0-or-later.
The narrative guide, with examples and the security model, is in The API. The machine-readable document is openapi.json, and a running server serves it at /api/v1/openapi.json.
All paths below are relative to /api/v1.
Operations
GET /captures/frame
One frame of a capture as an auto-stretched 8-bit greyscale PNG.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
path | query | string | yes | Capture path relative to the data root. |
index | query | integer | no | Frame index (default 0). |
channel | query | ChannelArg | no | r, g, b or lum (default) for Bayer captures. |
max_width | query | integer | no | Downscale to at most this width (16 to 8192). |
bayer | query | string | no | Bayer handling, as for jobs: auto (default), none or a pattern. |
bit_depth | query | integer (int32) | no | Bits per sample instead of the SER header's. |
endian | query | string | no | little or big. |
flip_rows | query | boolean | no | Read the rows bottom to top. |
| Status | Meaning | Body |
|---|---|---|
| 200 | 8-bit greyscale PNG | image/png |
POST /captures/inspect
Header information for a .ser, .avi or video capture, without reading frames.
Request body:
application/json: InspectRequest
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | application/json: CaptureInfo |
GET /docs
A small HTML page that lists the operations of the OpenAPI document; needs no token.
Needs no token.
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | text/html |
GET /health
Liveness probe. Always answers {"status":"ok"}; needs no token.
Needs no token.
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | application/json: Health |
GET /jobs
Remembered jobs, oldest first. The newest 100 finished jobs are kept.
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | application/json: array of JobView |
POST /jobs
Queue a stack. Answers 202 with the job; poll it or follow its events.
Request body:
application/json: JobRequest
| Status | Meaning | Body |
|---|---|---|
| 202 | Accepted | application/json: JobView |
| 429 | queue full (queue_full) | application/json: ErrorEnvelope |
GET /jobs/{id}
One job: state, stage, progress, timings and summary.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int64) | yes | job id |
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | application/json: JobView |
| 404 | unknown job id | application/json: ErrorEnvelope |
DELETE /jobs/{id}
Cancel a queued or running job, or forget a finished one.
A finished job's output file stays on disk.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int64) | yes | job id |
| Status | Meaning | Body |
|---|---|---|
| 202 | cancellation requested | application/json: JobView |
| 204 | finished job forgotten | |
| 404 | unknown job id | application/json: ErrorEnvelope |
GET /jobs/{id}/events
WebSocket stream of job events: a snapshot, then state and progress messages.
The server closes the stream after the final state message.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int64) | yes | job id |
| Status | Meaning | Body |
|---|---|---|
| 101 | WebSocket; text frames are JobEvent JSON |
GET /jobs/{id}/preview.png
An 8-bit PNG of the result (square-root stretch). Only once the job has succeeded.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int64) | yes | job id |
max_width | query | integer | no | Downscale to at most this width (16 to 8192; stored previews are at most 2048 wide). |
| Status | Meaning | Body |
|---|---|---|
| 200 | PNG preview | image/png |
| 409 | the job has not succeeded (not_ready) | application/json: ErrorEnvelope |
GET /jobs/{id}/result
The written TIFF or FITS file, streamed. Only once the job has succeeded.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int64) | yes | job id |
| Status | Meaning | Body |
|---|---|---|
| 200 | the stacked TIFF, PNG or FITS file | |
| 409 | the job has not succeeded (not_ready) | application/json: ErrorEnvelope |
GET /jobs/{id}/sunspots.csv
The sunspot table of a finished job that asked for sunspots, as CSV.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int64) | yes | job id |
| Status | Meaning | Body |
|---|---|---|
| 200 | one row per spot | text/csv |
| 404 | the job did not ask for sunspots (sunspots_missing) | application/json: ErrorEnvelope |
| 409 | the job has not succeeded (not_ready) | application/json: ErrorEnvelope |
GET /jobs/{id}/sunspots.png
The sunspot overlay of a finished job that asked for sunspots: the flattened
disc with penumbra, umbra and group numbers drawn on it.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int64) | yes | job id |
| Status | Meaning | Body |
|---|---|---|
| 200 | overlay PNG | image/png |
| 404 | the job did not ask for sunspots (sunspots_missing) | application/json: ErrorEnvelope |
| 409 | the job has not succeeded (not_ready) | application/json: ErrorEnvelope |
GET /openapi.json
This API as an OpenAPI document.
| Status | Meaning | Body |
|---|---|---|
| 200 | OpenAPI 3 document |
GET /presets
GET /presets: the filter presets, their recommended settings and colours.
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | application/json: PresetList |
GET /presets/{id}/lut
A preset's colour table as a file other programs read.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | preset id, see GET /presets |
format | query | string | no | cube (default), csv, imagej or png. |
size | query | integer | no | Entries, 2 to 4096 (default 256; an imagej table always has 256). |
invert | query | boolean | no | Invert before colouring. |
strength | query | number (float) | no | Mix of colour and grey, 0 to 1 (default 1). |
| Status | Meaning | Body |
|---|---|---|
| 200 | the table: a .cube, .csv, ImageJ .lut or a PNG strip | |
| 404 | no such preset | application/json: ErrorEnvelope |
| 422 | a bad format, size or strength | application/json: ErrorEnvelope |
GET /version
Server version, backend availability, limits and whether a token is required.
The GPU is probed once, on first use.
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | application/json: VersionInfo |
Schemas
AlignmentSummary
Global alignment: the method that ran, why, and its confidence.
| Field | Type | Required | Description |
|---|---|---|---|
confidence | number (float), may be null | no | Mean confidence of the frames, 0 to 1. Absent when it was not measured. |
confidence_min | number (float), may be null | no | Least confidence of any frame, 0 to 1. |
fallbacks | integer | yes | Frames that wanted the limb fit but were aligned by phase correlation. |
limb | array of number (float), may be null | no | Fitted limb of the reference: centre x, centre y and radius, pixels. |
method | string | yes | What ran: limb or phase. |
reason | string | yes | Why, in a sentence (for auto, whether the full disc was in view). |
requested | string | yes | What config.align asked for: auto, phase or limb. |
sampled | boolean | yes | The confidence comes from a sample of the frames (a GPU run). |
AutoApSummary
What automatic alignment points chose and what they were based on.
| Field | Type | Required | Description |
|---|---|---|---|
arcsec_per_pixel | number (float), may be null | no | Image scale from the fitted limb, arcseconds per pixel. Absent when there was no limb. |
search_radius | integer | yes | Search radius around the global shift, pixels. |
size | integer | yes | Window edge, pixels. |
step | integer | yes | Distance between window centres, pixels. |
text | string | yes | The choice in a sentence. |
warp_px | number (float), may be null | no | Local warp of the seeing, pixels (root mean square distance of an alignment point's shift from its frame's median). Absent when too few points locked. |
BackendArg
Compute backend request.
One of auto, cpu, gpu.
Backends
Backend availability.
BuildDetails
How the server binary was built.
| Field | Type | Required | Description |
|---|---|---|---|
built | string | yes | Build time, UTC. |
commit | string | yes | Short git commit hash (unknown outside a git checkout). |
dirty | boolean | yes | Built from a tree with uncommitted changes. |
profile | string | yes | Cargo profile. |
rust | string | yes | Compiler version. |
target | string | yes | Target triple. |
wgpu | string | yes | wgpu version. |
CalibrationConfig
Calibration masters for a job. Each path is relative to the data root and
names a master file (FITS, from helia calibrate) or raw calibration
frames to build one from (a SER, AVI or FITS file, or a folder of them).
| Field | Type | Required | Description |
|---|---|---|---|
bad_pixels | string, may be null | no | Bad-pixel map: a FITS map from helia calibrate, or a text file with an x y pair (from 0, top-left) on each line. |
bias | string, may be null | no | Master bias, or bias captures. Only used with scale_dark. |
combine | string | no | How frames are combined into a master: median, sigma or sigma:K. Default sigma. Default "sigma". |
cosmetic | boolean | no | Without bad_pixels, find the hot pixels of the dark and the cold ones of the flat and correct them. Default true. Default true. |
dark | string, may be null | no | Master dark, or dark captures. |
displaced | string, may be null | no | Captures of the Sun at many places on the sensor, to solve a flat from when there is no flat (self-calibration: dust and fringes included). The dark is taken off first. Excludes flat. |
flat | string, may be null | no | Master flat, or flat captures. |
flat_dark | string, may be null | no | Dark captures at the exposure of the flats, when flat is captures. |
scale_dark | boolean | no | Scale the dark by the ratio of the exposures (read from the SharpCap sidecar of the capture). Default false. |
CaptureInfo
Header information for a capture.
| Field | Type | Required | Description |
|---|---|---|---|
bayer | string, may be null | no | Bayer pattern (rggb ...) when raw colour. |
bit_depth | integer (int32) | yes | Bits per sample. |
codec | string, may be null | no | Video codec (h264, ...), for video read through ffmpeg. |
colour | string | yes | Pixel layout: mono, bayer, rgb, bgr, or video for compressed video, which ffmpeg converts to luminance or one colour channel. |
detection | DetectionInfo or null | no | |
effective | EffectiveInfo | yes | What Helia decodes the capture with, and where each value came from. |
format | string | yes | ser, avi, or the extension of a video read through ffmpeg (mp4, mov, mkv, webm, m4v; also avi for a compressed AVI). |
fourcc | string, may be null | no | AVI FourCC. |
frame_rate | number (double), may be null | no | Frames per second, for video. |
frames | integer | yes | Number of frames. |
header | SerHeaderInfo or null | no | |
height | integer (int32) | yes | Height in pixels. |
instrument | string, may be null | no | SER instrument string. |
notices | array of NoticeInfo | yes | What to tell the user about how the file was read. |
observer | string, may be null | no | SER observer string. |
overrides | array of string | yes | The overrides in force, as command-line flags. |
path | string | yes | Capture path relative to the data root. |
quality_note | string, may be null | no | Quality caveat when the input is lossy video, for example "lossy 8-bit 4:2:0 video (h264): fine for quick results, SER/AVI raw captures keep more detail". |
recommended | Recommended | yes | The settings a job would use if none were given. |
sidecar | SidecarInfo or null | no | |
telescope | string, may be null | no | SER telescope string. |
timestamps | boolean, may be null | no | SER per-frame timestamps present. |
width | integer (int32) | yes | Width in pixels. |
ChannelArg
Colour plane taken from a Bayer capture.
One of r, g, b, lum.
ChannelSummary
How red and blue were registered to green in a true-colour stack.
| Field | Type | Required | Description |
|---|---|---|---|
applied | boolean | yes | The plane was moved. False when the shift was too small, too large or not trustworthy. |
channel | string | yes | red or blue. |
confidence | number (float) | yes | Confidence of the correlation, 0 to 1. |
shift | array of number (float) | yes | Shift measured, pixels: [dx, dy]. |
CpuInfo
CPU availability (always true).
| Field | Type | Required | Description |
|---|---|---|---|
available | boolean | yes | Always true. |
DebayerArg
Demosaicing method.
One of bilinear, mhc.
DetectionInfo
The test for a hidden Bayer mosaic.
| Field | Type | Required | Description |
|---|---|---|---|
frames_used | integer | yes | Frames measured. |
pattern | string, may be null | no | Pattern found, for mosaic. |
position_means | array of number (double) | yes | Mean level (0 to 1) of the pixels at even x/even y, odd x/even y, even x/odd y and odd x/odd y. |
reason | string, may be null | no | Why it could not tell, for inconclusive. |
red_blue_basis | string, may be null | no | How red was told from blue, for mosaic. |
region | array of integer | yes | Area measured: x, y, width, height. |
spread | number (double) | yes | (largest - smallest) / average of the four means. |
verdict | string | yes | mosaic, mono or inconclusive. |
EffectiveInfo
What Helia decodes the capture with.
| Field | Type | Required | Description |
|---|---|---|---|
bayer | SourcedText | yes | Bayer pattern (rggb ...), or none for mono. |
bit_depth | SourcedNumber | yes | Bits per sample. |
byte_order | SourcedText | yes | Byte order of 16-bit samples: little or big. |
flip_rows | SourcedFlag | yes | Rows are read bottom to top. |
ErrorBody
Machine-readable error body.
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | Stable snake_case identifier, safe to match on. |
message | string | yes | Human-readable explanation. |
ErrorEnvelope
Envelope returned for every non-2xx response.
| Field | Type | Required | Description |
|---|---|---|---|
error | ErrorBody | yes | The error. |
GpuInfo
GPU availability.
| Field | Type | Required | Description |
|---|---|---|---|
adapter | string, may be null | no | Adapter description. |
available | boolean | yes | A GPU backend can be created (a software adapter counts). |
software | boolean | yes | The adapter is a software rasteriser. |
GranulationSummary
Granulation statistics of the stack (helia measure, the quality report).
| Field | Type | Required | Description |
|---|---|---|---|
arcsec_per_pixel | number (float), may be null | no | Image scale, arcseconds per pixel (absent without a fitted limb). |
cell_diameter_px | number (float) | yes | Mean diameter of whole granules, pixels. |
cell_pitch_px | number (float) | yes | Mean spacing of granules, pixels. |
cutoff_freq | number (float), may be null | no | Diffraction cut-off D / lambda in cycles per pixel; needs aperture_mm and a fitted limb. |
lines | array of string | yes | The report in lines, as the command line prints it. |
resolved_freq | number (float) | yes | Highest frequency (cycles per pixel) above 1% of the peak power. |
rms_contrast | number (float) | yes | Standard deviation over mean of the flattened disc-centre region (a fraction, 0.04 is 4%). |
rolloff_freq | number (float) | yes | Spatial frequency (cycles per pixel) where the noise-subtracted power spectrum has fallen to 10% of its peak. |
Health
Liveness probe.
| Field | Type | Required | Description |
|---|---|---|---|
status | string | yes | Always ok. |
InspectRequest
POST /captures/inspect body.
| Field | Type | Required | Description |
|---|---|---|---|
bayer | string, may be null | no | auto (default), none, rggb, grbg, gbrg or bggr: see what an override would change. |
bit_depth | integer (int32), may be null | no | Bits per sample instead of the SER header's (1 to 16). |
endian | string, may be null | no | little or big, instead of the SER header flag. |
flip_rows | boolean | no | Read the rows bottom to top. |
path | string | yes | Capture path relative to the data root. |
JobConfig
The same knobs as helia stack.
| Field | Type | Required | Description |
|---|---|---|---|
align | string | no | How whole frames are aligned: auto (fit the solar limb when the full disc is in view and the fit is confident, else phase correlation), phase, or limb. The choice and its confidence come back in summary.alignment. Default "auto". |
align_channels | boolean | no | With colour: "true", register red and blue to green (atmospheric dispersion). Default true. Default true. |
ap_auto | boolean | no | Choose the alignment point size, spacing and search range from the image scale (the fitted limb) and the seeing (a probe of a dozen frames). Excludes ap_size; needs multipoint. What was chosen comes back in summary.auto_ap. Default false. |
ap_passes | integer (int32), may be null | no | Alignment point passes, 1 or 2. 2 stacks once and measures the points again against that stack. Default 1; needs multipoint. |
ap_size | integer, may be null | no | Alignment point size in pixels (8 to 1024). Absent: chosen from the image size. |
ap_smooth | boolean | no | Replace alignment point shifts that disagree with their neighbours by the neighbours' median. Needs multipoint. Default false. |
aperture_mm | number (float), may be null | no | Telescope aperture in millimetres, for the diffraction cut-off in summary.granulation and for r0 in summary.seeing. |
autocrop | boolean | no | Crop the result to the solar disc plus autocrop_margin, FITS too. A capture without a clear disc is left uncropped; summary.crop is then absent. Default false. |
autocrop_margin | number (float), may be null | no | Margin of autocrop as a percentage of the disc radius, 0 to 200. Default 10. |
backend | BackendArg | no | Compute backend. Default "auto". |
bayer | string | no | auto, none, rggb, grbg, gbrg or bggr. auto trusts the file's header, but checks a SER file labelled mono for a hidden Bayer mosaic and debayers when it finds one. none treats the frames as mono whatever the header says; a pattern forces it. Default "auto". |
bit_depth | integer (int32), may be null | no | Bits per sample instead of the SER header's (1 to 8 read one byte per pixel, 9 to 16 two). SER only. |
calibration | CalibrationConfig or null | no | |
channel | ChannelArg or null | no | |
colour | string, may be null | no | Colour of the output: auto (the preset in force), mono, a preset id, or true. true is true colour from a raw colour camera: red, green and blue stacked on one alignment, channels aligned, white balanced, written as an RGB TIFF or PNG or a three-plane FITS cube; it needs a Bayer capture and excludes channel, invert and colour_strength. The other looks colour a .tif or .png from the mono stack, and FITS output is mono and unaltered for them. Absent: the preset's colours if one was given, else mono. |
colour_strength | number (float) | no | Mix of colour and grey, 0 to 1. Default 1.0. |
debayer | DebayerArg | no | Demosaicing method. Default "mhc". |
detect_overlay | boolean | no | Look for burned-in text (a SharpCap timestamp) and mask it. Default true. |
disc_mask | boolean | no | Fit the limb and place alignment points on the disc only. Default true. |
edits | array of object | no | Further edits, applied in order after sharpen: objects with an op of unsharp, wavelet, deconvolve, denoise, levels, curve, crop, rotate, flip or resize and that operation's parameters (see the sharpening and adjustments page of the user guide). Unset parameters take their defaults. Default []. |
endian | string, may be null | no | Byte order of 16-bit samples instead of the SER header flag: little or big. SER only. |
exclude | array of Region | no | Rectangles to keep alignment and scoring off. They are flattened in every frame and so are flat in the result. Burned-in timestamps are found automatically (see detect_overlay). Default []. |
flatten | string, may be null | no | Flatten the disc's limb darkening before anything else: model (divide by the fitted law) or profile (divide by the measured azimuthal median). Outside the limb nothing changes. It runs first, so sharpen and edits see flat contrast. A capture with no clear disc is left as it is and summary.limb_darkening is absent. |
flip_rows | boolean | no | Read the rows bottom to top. SER only. Default false. |
invert | boolean | no | Invert before colouring (shows filaments and prominences). Default false. |
keep | string, may be null | no | Share ("25%") or count ("500") of frames to keep. Default 25%. |
keep_frames | integer, may be null | no | Number of frames to keep; excludes keep. |
limb_law | string, may be null | no | The limb-darkening law fitted to the stack and used by flatten: linear, quadratic (the default) or neckel (five terms). The fit comes back in summary.limb_darkening whether or not flatten is set. |
metric | MetricArg | no | Frame ranking metric. Default "gradient". |
multipoint | boolean | no | Multi-point alignment; false is global alignment only. Default true. |
preset | string, may be null | no | Filter preset (ha, cak, cah, mg, na, he-d3, hbeta, white; see GET /presets): its channel and frame share apply wherever channel and keep are absent, and a .tif or .png output is coloured with it. Absent: the filter is detected from the file name, folder, sidecar or header, for the settings only. |
prominence_band | integer | no | Pixels outside the fitted limb where alignment points are still allowed; 0 keeps them on the disc. Default 0. |
robust | RobustArg or null | no | |
robust_k | number (float), may be null | no | Threshold of robust in standard deviations. Default 2.5 for sigma, 1.345 for huber, 2 for winsor. |
seeing | boolean | no | Estimate the seeing from the capture (summary.seeing): the Fried parameter from the spectral ratio, which needs aperture_mm, and a relative alignment point motion index. Default false. |
sharpen | string, may be null | no | Sharpening of the stack: wavelet (Registax-style layers, the usual choice), unsharp, rl (Richardson-Lucy) or none, with the recommended values of the filter in force. Absent: none. It runs first, on the mono image, before edits and before any colour. |
sharpen_fits | boolean | no | Apply sharpen and edits to FITS output too. By default a FITS file is the unsharpened stack. Default false. |
sigma_clip | number (float), may be null | no | Sigma clipping threshold in standard deviations; off when absent. Same as robust: "sigma" with robust_k. |
site | string, may be null | no | Observing site as "lat,lon,alt" (degrees north, degrees east, metres), written to a FITS output as OBSGEO-X/Y/Z. Absent: the server's HELIA_SITE environment variable, else the keywords are left out. |
sunspots | SunspotsConfig or null | no | |
white_balance | string, may be null | no | White balance of colour: "true": auto (make the disc centre neutral), off (the sensor's own balance) or "R,G,B" gains such as "1.9,1,1.5". Default auto. Only with colour: "true". |
JobEvent
Message on the /events WebSocket.
One of:
- Full job view, sent once on connect. Fields:
job(JobView),type=snapshot. - State change. Fields:
error(ErrorBody or null),job(integer (int64)),state(JobState),type=state. - Progress tick. Fields:
job(integer (int64)),progress(number (float)),stage_progress(number (float)),stage(string),type=progress.
JobRequest
POST /jobs body.
| Field | Type | Required | Description |
|---|---|---|---|
config | JobConfig | no | Stacking settings. |
input | string | yes | Capture path (.ser or .avi), relative to the data root. |
output | string | yes | Output path; .tif/.tiff or .fits/.fit/.fts. |
overwrite | boolean | no | Replace an existing output file. |
JobState
Lifecycle state.
One of queued, running, succeeded, failed, cancelled.
JobSummary
What a finished stack contains.
| Field | Type | Required | Description |
|---|---|---|---|
alignment | AlignmentSummary | yes | How whole frames were aligned, and how confident that was. |
alignment_points_active | integer, may be null | no | Active alignment points (multi-point only). |
alignment_points_total | integer, may be null | no | Alignment points in the grid (multi-point only). |
auto_ap | AutoApSummary or null | no | |
bayer | string, may be null | no | Bayer pattern the frames were decoded with (rggb ...); absent for mono. |
bayer_source | string | yes | Where that came from: header, sidecar, detection or override. |
calibration | array of string | yes | The calibration masters applied, one line each, and any warning about them (a flat with rings, a dark that could not be scaled). Empty when the job had no calibration. |
colour | string, may be null | no | How the output was coloured, in words; absent for a mono output. |
crop | Region or null | no | |
edited | boolean | yes | The edits were applied to the pixels of the output. |
edits | array of string | yes | The edits recorded in the output file, one line each. For FITS output without sharpen_fits this is the note that the file is unedited. |
filter | string, may be null | no | Preset id in force (chosen or detected), if any. |
filter_source | string, may be null | no | Where the filter was read from (chosen, or the text it was found in). |
frames | integer | yes | Frames in the capture. |
granulation | GranulationSummary or null | no | |
height | integer | yes | Output height. |
kept | integer | yes | Frames in the kept set. |
limb_darkening | LimbSummary or null | no | |
notices | array of string | yes | Things worth knowing about how the capture was read, such as a Bayer mosaic found in a file whose header says mono. |
registered | integer | yes | Frames registered. |
seeing | SeeingSummary or null | no | |
sunspots | SunspotsSummary or null | no | |
true_colour | TrueColourSummary or null | no | |
width | integer | yes | Output width. |
JobView
Public view of a job.
| Field | Type | Required | Description |
|---|---|---|---|
backend | string, may be null | no | Backend used. |
config | JobConfig | yes | The settings in force. |
created_at | integer (int64) | yes | Creation time, Unix milliseconds. |
error | ErrorBody or null | no | |
finished_at | integer (int64), may be null | no | End time, Unix milliseconds. |
id | integer (int64) | yes | Job id. |
input | string | yes | Input path relative to the data root. |
output | string | yes | Output path relative to the data root. |
progress | number (float) | yes | Approximate overall progress, 0 to 1. |
queue_position | integer, may be null | no | Position among queued jobs (0 is next), while queued. |
run_seconds | number (float), may be null | no | Seconds spent running so far or in total. |
stage | string, may be null | no | Current stage name, once running. |
stage_progress | number (float) | yes | Progress within the current stage, 0 to 1. |
started_at | integer (int64), may be null | no | Start time, Unix milliseconds. |
state | JobState | yes | State. |
summary | JobSummary or null | no | |
timings | array of StageTiming | yes | Per-stage wall times of a finished run. |
LicenceDetails
Licensing of the software.
| Field | Type | Required | Description |
|---|---|---|---|
copyright | string | yes | Copyright line. |
licence | string | yes | SPDX licence identifier. |
source | string | yes | Source code location. |
LimbSummary
A limb-darkening law fitted to the stack's azimuthal median profile.
| Field | Type | Required | Description |
|---|---|---|---|
coefficients | array of number (float) | yes | The coefficients, I(mu) / I(1) = 1 - sum c_k (1 - mu^k) for neckel, 1 - u (1 - mu) - u2 (1 - mu)^2 for the others. |
law | string | yes | linear, quadratic or neckel. |
limb_level | number (float) | yes | The law at the limb as a share of the disc centre. |
names | array of string | yes | Names of the coefficients, in order (u1, u2, or a1 to a5). |
radius_px | number (float) | yes | Fitted disc radius, pixels. |
rms | number (float) | yes | Root mean square departure of the profile from the law, as a share of the centre intensity. |
text | string | yes | The fit in a sentence. |
Limits
Server limits.
| Field | Type | Required | Description |
|---|---|---|---|
active_jobs | integer | yes | Jobs queued or running now. |
max_body_bytes | integer | yes | Request body limit in bytes. |
max_queue | integer | yes | Queued plus running jobs allowed. |
workers | integer | yes | Concurrent jobs. |
MetricArg
Sharpness metric.
One of gradient, laplacian.
NoticeInfo
A message about how the capture was understood.
| Field | Type | Required | Description |
|---|---|---|---|
level | string | yes | info or warning. |
text | string | yes | The message. |
PresetColour
The colour parameters of a preset.
| Field | Type | Required | Description |
|---|---|---|---|
exponents | array of number (float) | yes | Per-channel exponent (red, green, blue). |
gains | array of number (float) | yes | Per-channel gain (red, green, blue). |
gamma | number (float) | yes | Tone exponent applied before colouring (below 1 brightens). |
mid_grey_rgb | array of integer (int32) | yes | What a mid-grey (0.5) becomes, 8-bit red, green, blue. |
PresetList
GET /presets body.
| Field | Type | Required | Description |
|---|---|---|---|
presets | array of PresetView | yes | Every preset. |
PresetSharpen
The recommended sharpening values of a preset (what sharpen in a job
uses for this filter).
| Field | Type | Required | Description |
|---|---|---|---|
denoise | number (float) | yes | Wavelet denoise strength. |
reason | string | yes | Why they are what they are. |
rl_iterations | integer (int32) | yes | Richardson-Lucy iterations. |
rl_tv | number (float) | yes | Richardson-Lucy total-variation weight. |
unsharp_amount | number (float) | yes | Unsharp mask amount. |
unsharp_threshold | number (float) | yes | Unsharp mask threshold (image units, 0 to 1). |
wavelet_gains | array of number (float) | yes | Wavelet gain of layers 1 to 6. |
wavelet_noise | array of number (float) | yes | Wavelet noise threshold of layers 1 to 6, in noise sigmas. |
PresetView
One filter preset.
| Field | Type | Required | Description |
|---|---|---|---|
channel | string | yes | Bayer channel stacked (r, g, b or lum). |
colour | PresetColour | yes | Colour parameters. Colour is presentation, not measurement. |
hue | string | yes | Hue in words. |
id | string | yes | Id to give as preset or colour in a job: ha, cak, ... |
keep_percent | number (float) | yes | Share of frames kept, percent. |
name | string | yes | Plain name. |
reason | string | yes | Why the recommendations are what they are. |
sharpen | PresetSharpen | yes | Recommended sharpening values. |
summary | string | yes | One line on what it is for. |
wavelength | string | yes | Wavelength as printed in the docs. |
Recommended
What Helia would do with a capture if given no settings.
| Field | Type | Required | Description |
|---|---|---|---|
ap_size | integer | yes | Alignment point size in pixels. |
channel | string | yes | Bayer channel it would stack (r, g, b, lum). |
filter | string, may be null | no | Preset id detected from the file name, folder, sidecar or SER header. |
filter_source | string, may be null | no | The text the filter was read from. |
keep_percent | number (float) | yes | Share of frames it would keep, percent. |
Region
A rectangle of the frame, in pixels from the top-left corner.
| Field | Type | Required | Description |
|---|---|---|---|
h | integer | yes | Height; at least 1. |
w | integer | yes | Width; at least 1. |
x | integer | yes | Left edge. |
y | integer | yes | Top edge. |
RobustArg
Outlier-robust combination of the frames at each pixel.
One of none, sigma, huber, winsor.
SeeingSummary
Seeing estimated from the capture.
| Field | Type | Required | Description |
|---|---|---|---|
d_over_r0 | number (float), may be null | no | D / r0 from the spectral ratio; needs aperture_mm. |
frames | integer | yes | Frames followed (spread over the whole capture). |
grade | string, may be null | no | excellent, good, fair, poor or bad, from r0_500nm_cm. |
lines | array of string | yes | The report in lines, as the command line prints it. |
motion_arcsec | number (float), may be null | no | The same in arcseconds, with a fitted limb. |
motion_px | number (float), may be null | no | RMS differential motion between neighbouring alignment points, per axis, pixels. A relative index, not r0. |
r0_500nm_cm | number (float), may be null | no | Fried parameter at 500 nm, centimetres. |
r0_cm | number (float), may be null | no | Fried parameter at the capture's wavelength, centimetres. |
tiles | integer | yes | Tiles of the disc followed. |
SerHeaderInfo
A SER header exactly as written in the file, decoded.
| Field | Type | Required | Description |
|---|---|---|---|
colour_id | integer (int32) | yes | ColorID as stored. |
colour_meaning | string | yes | Its meaning (MONO, BAYER_RGGB ...). |
date_time | string, may be null | no | DateTime (local) decoded; absent when unset. |
date_time_utc | string, may be null | no | DateTimeUTC decoded; absent when unset. |
file_id | string | yes | FileID. |
frame_count | integer (int32) | yes | Frame count. |
height | integer (int32) | yes | Height in pixels. |
instrument | string | yes | Instrument. |
little_endian | boolean | yes | LittleEndian flag as stored. |
lu_id | integer (int32) | yes | LuID. |
observer | string | yes | Observer. |
pixel_depth | integer (int32) | yes | Bits per sample. |
telescope | string | yes | Telescope. |
timestamps | TimestampInfo or null | no | |
width | integer (int32) | yes | Width in pixels. |
SidecarInfo
SharpCap sidecar contents that Helia uses.
| Field | Type | Required | Description |
|---|---|---|---|
bayer_hint | string, may be null | no | Bayer pattern implied by the sidecar. |
colour_space | string, may be null | no | Colour Space value. |
frame_count | integer, may be null | no | Frame count from the sidecar. |
path | string | yes | Sidecar path relative to the data root. |
raw_colour | boolean, may be null | no | Whether the sidecar says the data is raw colour. |
sections | array of string | yes | Section headings (camera model). |
SourcedFlag
A switch and where its setting came from.
| Field | Type | Required | Description |
|---|---|---|---|
source | string | yes | header, sidecar, detection or override. |
value | boolean | yes | The value. |
SourcedNumber
A number Helia uses and where it came from.
| Field | Type | Required | Description |
|---|---|---|---|
source | string | yes | header, sidecar, detection or override. |
value | integer (int32) | yes | The value. |
SourcedText
A value Helia uses and where it came from.
| Field | Type | Required | Description |
|---|---|---|---|
source | string | yes | header, sidecar, detection or override. |
value | string | yes | The value. |
StageTiming
Wall time of one stage.
| Field | Type | Required | Description |
|---|---|---|---|
seconds | number (float) | yes | Seconds. |
stage | string | yes | Stage name. |
SunspotGroupRow
One group of sunspots.
| Field | Type | Required | Description |
|---|---|---|---|
area_msh | number (float) | yes | Corrected, millionths of the hemisphere. |
cmd_deg | number (float) | yes | Area-weighted central meridian distance, degrees. |
id | integer | yes | Number from 1, largest first. |
lat_deg | number (float) | yes | Area-weighted latitude, degrees north. |
lon_deg | number (float), may be null | no | Area-weighted Carrington longitude, degrees (needs time). |
projected_msh | number (float) | yes | As seen, millionths of the visible hemisphere. |
spots | integer | yes | Spots in it. |
umbra_msh | number (float) | yes | Umbrae corrected, millionths of the hemisphere. |
umbrae | integer | yes | Umbrae in it. |
SunspotRow
One sunspot.
| Field | Type | Required | Description |
|---|---|---|---|
area_msh | number (float) | yes | Corrected for foreshortening, millionths of the hemisphere. |
cmd_deg | number (float) | yes | Central meridian distance, degrees, west positive. |
group | integer | yes | Its group. |
id | integer | yes | Number from 1. |
lat_deg | number (float) | yes | Heliographic latitude, degrees north. |
lon_deg | number (float), may be null | no | Carrington longitude, degrees (needs time). |
mu | number (float) | yes | Cosine of the angle from disc centre. |
penumbra_px | integer | yes | Penumbra pixels. |
projected_msh | number (float) | yes | As seen, millionths of the visible hemisphere. |
umbra_msh | number (float) | yes | Umbra corrected, millionths of the hemisphere. |
umbra_px | integer | yes | Umbra pixels. |
umbrae | integer | yes | Umbrae in it. |
x | number (float) | yes | Centroid, pixels. |
y | number (float) | yes | Centroid, pixels, top row 0. |
SunspotsConfig
Tuning of the sunspot detection; every field is optional.
| Field | Type | Required | Description |
|---|---|---|---|
celestial_north_up | boolean | no | The image has celestial north up: add the position angle P of the Sun at the capture time to north_angle_deg. Default false. |
group_gap_deg | number (float), may be null | no | Spots closer than this on the Sun, degrees, form one group. Default 3. |
max_area | number (float), may be null | no | Largest spot, millionths of the hemisphere; bigger dark regions are left out as a cloud or vignette. Default 6000. |
min_area | number (float), may be null | no | Smallest spot, millionths of the hemisphere. Default 2. |
mirror | boolean | no | The image is a mirror image. Default false. |
north_angle_deg | number (float), may be null | no | Counter-clockwise angle from the top of the image to solar north, degrees. Default 0. |
penumbra | number (float), may be null | no | Penumbra threshold, a share of the quiet disc (0 to 1). Default 0.88. |
umbra | number (float), may be null | no | Umbra threshold, a share of the quiet disc (0 to 1). Default 0.55. |
wolf_k | number (float), may be null | no | Observer factor k of the Wolf number. Default 1. |
SunspotsSummary
Sunspots on the stack: counts, areas and the table.
| Field | Type | Required | Description |
|---|---|---|---|
area_msh | number (float) | yes | Everything corrected for foreshortening, millionths of the hemisphere. |
b0_deg | number (float), may be null | no | Heliographic latitude of the disc centre, degrees (needs time). |
disc | array of number (float) | yes | Disc centre x, centre y and radius the positions are measured on, pixels. |
group_table | array of SunspotGroupRow | yes | One row per group. |
groups | integer | yes | Sunspot groups, g. |
k | number (float) | yes | The observer factor used. |
l0_deg | number (float), may be null | no | Carrington longitude of the disc centre, degrees (needs time). |
lines | array of string | yes | The report in lines, as the command line prints it. |
notes | array of string | yes | Things to be careful about. |
p_deg | number (float), may be null | no | Position angle of the solar axis, degrees (needs time). |
projected_msh | number (float) | yes | Everything as seen, millionths of the visible hemisphere. |
spot_table | array of SunspotRow | yes | One row per spot. |
spots | integer | yes | Individual spots, s (umbrae and pores). |
time | string, may be null | no | Capture time used, ISO 8601 UTC; absent when the capture had none. |
umbra_msh | number (float) | yes | Umbrae corrected, millionths of the hemisphere. |
wolf | number (float) | yes | Relative Wolf number k (10 g + s). |
TimestampInfo
SER trailer timestamps.
| Field | Type | Required | Description |
|---|---|---|---|
count | integer | yes | How many. |
first | string, may be null | no | First, UTC. |
last | string, may be null | no | Last, UTC. |
TrueColourSummary
What a true-colour job did.
| Field | Type | Required | Description |
|---|---|---|---|
channels | array of ChannelSummary, may be null | no | Red and blue against green; absent when align_channels was off. |
gains | array of number (float) | yes | Gains applied to red, green and blue, including the common scale that keeps the picture inside white. |
notes | array of string | yes | The notes written into the file's history, including warnings (a channel held at the largest automatic gain, a shift not applied). |
VersionInfo
/version response.
| Field | Type | Required | Description |
|---|---|---|---|
api | string | yes | API version in the URL prefix. |
auth_required | boolean | yes | Whether a token is required. |
backends | Backends | yes | Backends. |
build | BuildDetails | yes | Build record. |
licence | LicenceDetails | yes | Copyright and licence. |
limits | Limits | yes | Limits. |
name | string | yes | Package name. |
version | string | yes | Package version. |