Skip to main content
The gc-http-caller kamelet is the canonical way to make any REST/JSON call out of the connector. Use it for every HTTP method by passing ?method=GET|POST|PUT|DELETE|PATCH. It handles retries, timeouts, headers, query params, and path variables, and produces structured Grand Central errors through JOLT.

How the kamelet reads inputs

The kamelet reads the URL, query parameters, path variables, and headers from the exchange. Set them before the .to(...) call.
Where to put itKeyTypePurpose
Exchange propertygc-http-caller-urlStringThe full URL to call; interpolate the vendor base URL with the path
Exchange propertygc-http-caller-queryParamsMap<String, Object>Query parameters appended to the URL
Exchange propertygc-http-caller-pathVariablesMap<String, Object>Path variables to substitute into {name} placeholders in the URL
Headergc-http-caller-headersMap<String, Object>Additional headers to send with the call
The kamelet writes all of these onto the outgoing HTTP request and clears them after the call returns.

Kamelet parameters you can tune

The following parameters have defaults, but you can override them in configuration properties in the Grand Central DevHub Application Live repository of your installation: https://github.com/bb-ecos-${installation}/gc-devhub-${installation}-applications-live/tree/main/runtimes/{runtime}/values/{namespace}/{deployment-name}-values.yaml
ParameterDefaultPurpose
methodGETHTTP verb: one of GET, POST, PUT, DELETE, or PATCH
contentTypeapplication/jsonContent-Type header for the request
acceptapplication/jsonAccept header for the response
gc-http-caller-retryfalseEnable retry on transient failures
retryStatuses429,500,502,503,504HTTP status codes that trigger a retry
connectTimeout5000 msTCP connect timeout
soTimeout5000 msSocket read timeout
responseTimeout5000 msWait-for-response timeout
connectionsPerRoute20Pooled connections per route
maxTotalConnections200Pool size cap across routes
gc-http-caller-handleExceptionsInConnectorfalseIf true, the kamelet doesn’t auto-wrap errors and the connector must handle them
errorTemplatetransform-error-details.jsonJOLT spec used to map vendor errors to Grand Central error JSON

Typical call forms

// Simplest GET
.setProperty("gc-http-caller-url", simple("{{vendor.base.url}}/api/path"))
.to("kamelet:gc-http-caller?method=GET");

// GET by ID using a header
.setProperty("gc-http-caller-url",
    simple("{{vendor.base.url}}/api/path/${header.entityId}"))
.to("kamelet:gc-http-caller?method=GET");

// GET with query params from a Map
.setProperty("gc-http-caller-queryParams", paramsMap)
.setProperty("gc-http-caller-url", simple("{{vendor.base.url}}/api/path"))
.to("kamelet:gc-http-caller?method=GET");

// POST with retry enabled
.to("kamelet:gc-http-caller?method=POST&gc-http-caller-retry={{retryFlag}}");

Exception-handler kamelets

You typically register these once in configure() through onException(...). Each turns a thrown exception into a structured Grand Central error response. Kamelet files are available in the grandcentral-platform-kamelets artifact.
KameletUse it for
http-exception-handlerHttpOperationFailedException from the vendor; wraps in Grand Central error JSON through JOLT
json-validation-exception-handlerJsonValidationException from the schema validator; returns HTTP 400 with GC024 and detailed errors
service-exception-handlerService-level failures
grand-central-service-exception-handlerGrandCentralServiceException thrown explicitly from the connector
generic-exception-handlerCatch-all fallback for unknown exceptions
validation-exception-handlerGeneral validation errors, for example from PredicatesValidatingProcessor
custom-http-error-handlerCustom HTTP error mapping when the standard handler isn’t enough
Example registration:
onException(JsonValidationException.class)
    .handled(true)
    .to("kamelet:json-validation-exception-handler"
        + "?schemaErrorTemplate=transform-schema-validation-error-details.json");

onException(HttpOperationFailedException.class)
    .handled(true)
    .to("kamelet:http-exception-handler?errorTemplate=transform-error-details.json");

onException(Exception.class)
    .handled(true)
    .to("kamelet:generic-exception-handler");

Next step

For the Camel building blocks that connect these calls, see Use Camel EIPs.