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$