httpout Processor

httpout is the processor used to make http requests.


Common Settings

SettingDescription
http.schemeset the scheme: http or https
http.hostnamedestination hostname
http.portdestination port
http.method http verb [get,put,post,delete]
http.urldestination URL
http.suppress.status.codeslist of (non-2xx) response codes that will not raise an alert
http.fatal.status.codeslist of response codes that are non-retryable
http.connection.timeoutmax time to wait to establish the connection (10s, 30s, etc)
http.max.connectionsmax allowable open connections to the destination host:port
http.read.timeoutmax time to wait before timing out the read
http.write.timeoutmax time to wait for the full request to be written
http.absolute.timeoutabsolute max time to wait for the entire request / response to complete
http.tls.versiontls version to use
http.tls.cipher.suitestls cipher suites - leave empty to use golang defaults
http.tls.curve.preferencestls curve preferences - leave empty to use golang defaults
http.tls.insecureskipverifyskip destination certificate verification
http.return.responsereturn the response to the caller (or simply ignore it)
http.return.headerslist of headers from the response to return to the caller

Headers

You can set the headers on the request in multiple ways. The syntax to set a list of headers is as follows: {integer}.{setting}

HeadersDescription
http.header.namethe name of the http header
http.header.valuethe default value for the header if the caller does not set it
http.header.sourcewhere to source the header value (see below)
http.header.requiredensures the value is set otherwise tosses an exception; default=false
http.header.canonicalizecanonicalize header names, e.g. content-type -> Content-Type; default=false

For example, to configure three headers, two with static values and one dynamic, would look like:

0.http.header.name      = "content-type"
0.http.header.source    = "static"
0.http.header.value     = "application/xml"

1.http.header.name      = "content-encoding"
1.http.header.source    = "static"
1.http.header.value     = "identity"

2.http.header.name      = "x-request-id"
2.http.header.source    = "goodybag"
2.http.header.required  = true

Name Source Value

name source values is used to tell TEDI how to dynamically set headers, path parameters, and query parameters.

SourceDescription
staticuse this to set constants
goodybagfetch the value out of the integration metadata
jpathjpath expression to extract a field from a JSON document
xpathxpath expression to extract a field from a XML document

Path Parameters

To use and configure path parameters, you can set the name, source, and value.

To indicate a segment in the URL is a path parameter use this syntax: /seg1/seg2/{name-of-the-path-parameter}.

SettingDescription
http.path.param.namethe name of the path parameter - this must match and {segment name} in the URL
http.path.param.valuethe static value or expresssion
http.path.param.sourcewhere to source the value from

For example, if your URL was /sales/invoice/{id}/{date}, you could configure like so:

0.http.path.param.name      = "id"
0.http.path.param.source    = "goodybag"
0.http.path.param.required  = true

1.http.path.param.name      = "date"
1.http.path.param.source    = "jpath"
1.http.path.param.value     = "$..invoice[0].date"
1.http.path.param.required  = true

Query Parameters

Query parameters can also be configure in a like manner as headers and path parameters.

SettingDescription
http.query.param.namethe name of the query parameter
http.query.param.valuethe static value or expresssion
http.query.param.sourcewhere to source the value from

For example, if your URL was /sales/invoice/{id}/{date}?{x}, you could configure like so:

0.http.query.param.name      = "x"
0.http.query.param.value     = "new"
0.http.query.param.source    = "static"

Authentication

TEDI supports the following auth schemes for http:

AuthDescription
http.client.auth = basicbasic auth
http.client.auth = certcertificate auth
http.client.auth = jwsjson web signature (jwt) auth
http.client.auth = httpsighttp signature auth

Basic Auth

SettingDescription
http.client.auth = basicuse basic authorization
basic.auth.usernameusername
basic.auth.passwordencrypted password
basic.auth.system.key.aliassystem key used to encrypt and encode the password

HTTP Signature

SettingDescription
http.client.auth = httpsiguse http signature authorization
httpsig.debugenables verbose logging
httpsig.key.namephysical key name
httpsig.key.id maps to the keyId in the signature
httpsig.digest.algoone-way hash algo to use, e.g. sha-256
httpsig.signing.algohash algo to use for signing, e.g. hmac-sha256
httpsig.headersheaders use to create the signature, e.g. (request-target),Date,Digest.
note - anything beyond “(request-target),date, digest” must come from an actual header set in the request

Json Web Signature (JWT)

TEDI supports JWT authentication in the form of JWS. You can use symmetric or asymmetric keys.

SettingDescription
http.client.auth = jwsuse jws signature authorization
RSA Settings 
jws.algoRS256| RS384| RS512| PS256| PS384| PS512| HS256| HS384| HS512
jws.private.key.namethe file name of the private key (pem encoded)
jws.public.key.namethe file name of the x509 certificate (pem encoded)
jws.header.kidthe key id
HMAC Settings 
jws.algoHS256
jws.key.namethe file name of the key
jws.header.kidthe key id
Claims 
jws.claim.{integer}.namename of the static claim - you can have any number you like
jws.claim.{integer}.valuevalue of the static claim
jws.claim.issjwt issuer
jws.claim.audjwt audience
jws.claim.subjwt subject/user
jws.claim.expjwt expiration - duration jwt is valid for (now + exp)
jws.claim.jtijwt unique identifier - default: RequestId

Certificate

SettingDescription
http.client.auth = certuse x509 cert authorization
cert.namefile name of the cert (cert must be pem encoded)