http_server
Receive messages POSTed over HTTP(S). HTTP 2.0 is supported when using TLS, which is enabled when key and cert files are specified.
- Common
- Advanced
# Common config fields, showing default valuesinput:label: ""http_server:address: ""path: /postws_path: /post/wsallowed_verbs:- POSTtimeout: 5srate_limit: ""
# All config fields, showing default valuesinput:label: ""http_server:address: ""path: /postws_path: /post/wsws_welcome_message: ""ws_rate_limit_message: ""allowed_verbs:- POSTtimeout: 5srate_limit: ""cert_file: ""key_file: ""cors:enabled: falseallowed_origins: []sync_response:status: "200"headers:Content-Type: application/octet-streammetadata_headers:include_prefixes: []include_patterns: []
If the address
config field is left blank the service-wide HTTP server will be used.
The field rate_limit
allows you to specify an optional rate_limit
resource, which will be applied to each HTTP request made and each websocket payload received.
When the rate limit is breached HTTP requests will have a 429 response returned with a Retry-After header. Websocket payloads will be dropped and an optional response payload will be sent as per ws_rate_limit_message
.
Responses​
It's possible to return a response for each message received using synchronous responses. When doing so you can customise headers with the sync_response
field headers
, which can also use function interpolation in the value based on the response message contents.
Endpoints​
The following fields specify endpoints that are registered for sending messages, and support path parameters of the form /{foo}
, which are added to ingested messages as metadata:
path
(defaults to /post
)​
This endpoint expects POST requests where the entire request body is consumed as a single message.
If the request contains a multipart content-type
header as per rfc1341 then the multiple parts are consumed as a batch of messages, where each body part is a message of the batch.
ws_path
(defaults to /post/ws
)​
Creates a websocket connection, where payloads received on the socket are passed through the pipeline as a batch of one message.
You may specify an optional ws_welcome_message
, which is a static payload to be sent to all clients once a websocket connection is first established.
It's also possible to specify a ws_rate_limit_message
, which is a static payload to be sent to clients that have triggered the servers rate limit.
Metadata​
This input adds the following metadata fields to each message:
- http_server_user_agent- http_server_request_path- http_server_verb- All headers (only first values are taken)- All query parameters- All path parameters- All cookies
You can access these metadata fields using function interpolation.
Fields​
address
​
An alternative address to host from. If left empty the service wide address is used.
Type: string
Default: ""
path
​
The endpoint path to listen for POST requests.
Type: string
Default: "/post"
ws_path
​
The endpoint path to create websocket connections from.
Type: string
Default: "/post/ws"
ws_welcome_message
​
An optional message to deliver to fresh websocket connections.
Type: string
Default: ""
ws_rate_limit_message
​
An optional message to delivery to websocket connections that are rate limited.
Type: string
Default: ""
allowed_verbs
​
An array of verbs that are allowed for the path
endpoint.
Type: array
Default: ["POST"]
Requires version 3.33.0 or newer
timeout
​
Timeout for requests. If a consumed messages takes longer than this to be delivered the connection is closed, but the message may still be delivered.
Type: string
Default: "5s"
rate_limit
​
An optional rate limit to throttle requests by.
Type: string
Default: ""
cert_file
​
Enable TLS by specifying a certificate and key file. Only valid with a custom address
.
Type: string
Default: ""
key_file
​
Enable TLS by specifying a certificate and key file. Only valid with a custom address
.
Type: string
Default: ""
cors
​
Adds Cross-Origin Resource Sharing headers. Only valid with a custom address
.
Type: object
Requires version 3.63.0 or newer
cors.enabled
​
Whether to allow CORS requests.
Type: bool
Default: false
cors.allowed_origins
​
An explicit list of origins that are allowed for CORS requests.
Type: array
Default: []
sync_response
​
Customise messages returned via synchronous responses.
Type: object
sync_response.status
​
Specify the status code to return with synchronous responses. This is a string value, which allows you to customize it based on resulting payloads and their metadata. This field supports interpolation functions.
Type: string
Default: "200"
# Examplesstatus: "200"status: ${! json("status") }status: ${! meta("status") }
sync_response.headers
​
Specify headers to return with synchronous responses. This field supports interpolation functions.
Type: object
Default: {"Content-Type":"application/octet-stream"}
sync_response.metadata_headers
​
Specify criteria for which metadata values are added to the response as headers.
Type: object
sync_response.metadata_headers.include_prefixes
​
Provide a list of explicit metadata key prefixes to match against.
Type: array
Default: []
# Examplesinclude_prefixes:- foo_- bar_include_prefixes:- kafka_include_prefixes:- content-
sync_response.metadata_headers.include_patterns
​
Provide a list of explicit metadata key regular expression (re2) patterns to match against.
Type: array
Default: []
# Examplesinclude_patterns:- .*include_patterns:- _timestamp_unix$