Skip to main content
Version: 0.2.0 (Latest)

HTTP server connector

Class: http_server — source only. Binds HTTPS, accepts inbound POST (JSON object, JSON array of objects, NDJSON, or text), and publishes each decoded event to a stream.

Do not configure listen ingest as http. HTTP class: http is an outbound client (poll GET/POST). Do not use splunk for generic webhooks — that class is Splunk HEC paths and Authorization: Splunk.

Create and edit under Sources. There is no HTTP server sink.

Source behavior​

RoleBehavior
SourceListen on endpoint (https:// host + port). Exact POST path (default /). Required bearer or basic ingest auth. Decode then enqueue; 200 empty body after enqueue; channel full → 429 (no Retry-After).
SinkNot supported.
StreamsAlign the ingest stream with tasks / pipelines (Streams).

200 means the batch is on the ingest channel, not that WAL or sinks have committed. A crash after 200 can leave a client that already moved on.

Required fields​

Every connector row​

FieldRequiredNotes
nameYesDisplay name; id derived from it.
classYesMust be http_server.
streamYesResolved stream id.
typeYessource only.
configYesClass-specific object; see below.

Class http_server — required configuration​

SettingRequiredNotes
endpointYesListen URL. https:// only, host + port. Examples use 127.0.0.1; set 0.0.0.0 only when you mean to expose the port. http:// is invalid.
authenticationYesauth_type bearer (token) or basic (username / password). Required even on loopback. Treat token and password as secrets.

Optional: path (default /), health_path (default /health, unauthenticated GET; empty/omit to disable), encoding json (default) / ndjson / text, max_body_bytes (default 1 MiB, cap 16 MiB), max_events_per_request (default 10000), server tls cert/key (or auto-generate under $PADAS_HOME/core/data/security/ like HEC source). Channel capacity (1024 POST batches) is not a UI field.

Create connector​

  1. Open Sources → Create.
  2. Set Class to HTTP Server, set name, stream behavior, and Enabled.
  3. Enter https:// endpoint, POST path, and bearer or basic credentials.
  4. Choose encoding. Keep health on a separate path if you want an unauthenticated GET probe.
  5. Save, deploy to a Core, then wire the stream into tasks / pipelines.
UI fieldConnector setting
Endpointendpoint
Pathpath
Health pathhealth_path
Encodingencoding
Auth type / token or username+passwordauthentication
Max body bytes / max events per requestmax_body_bytes, max_events_per_request

Runtime behavior​

CaseHTTP
Enqueued200 empty
Missing or wrong ingest auth401
Wrong path / wrong method404 / 405
Body over max_body_bytes413
Decode error, non-object JSON array element, bad NDJSON line, over max_events_per_request400 (whole request; no partial enqueue)
Channel full (after 50 ms)429, no Retry-After
Health GET200, no auth
  • json object → one event (data is that object). json array → one event per object. ndjson → one event per non-blank line. text → string data.
  • Prefer 127.0.0.1. Auth and HTTPS are always required for ingest.

Performance and operational notes​

  • One queue slot is one POST batch, not one event. Large arrays still occupy one slot until drained.
  • Tune max_body_bytes, max_events_per_request, poll batch.max_events, and the target stream buffer — not a channel-capacity knob.
  • Splunk HEC source uses the same bounded queue but maps full to 503 + {text: "Server is busy", code: 9} — see Splunk connector.