Jitterbit Hosted APIs: Hello World tutorials
Tags: tutorial, webdev, api, http
Published: 2020-04-02 14:43:00

---
title: Jitterbit Hosted APIs: Hello World tutorials
published: true
date: 04/02/2020
tags: tutorial,webdev,api,http
series: "Jitterbit API Tutorial:  Hello World"
cover_image: https://katiekodes.com/images/header-jitterbit-api-hello-world-en.png
canonical_url: https://katiekodes.com/jitterbit-api-endpoint-hello-world-intro/
---

Jitterbit's ETL _("Extract, Transform, Load")_ platform allows you to "borrow" their web servers and use them to put URLs on the internet as small "API" endpoints where the back end of those "endpoints" is some sort of data-processing Jitterbit operation you've built.

## Why Bother?

I hadn't yet needed to use it _(although I've certainly built plenty of Jitterbit operations)_, but I just found a use case.

I need to host a URL whose web server can, each time that URL is visited by a prospective student, do the following steps:

* Fetch some data from a 3rd party _(making use of a stored authentication secret)_
* Parse the data returned by the 3rd party to extract the URL that I _actually_ want someone to visit
* Redirect a web browser to that URL.

The 3rd party in question is a foreign language placement testing service.

They used to provide a web site, `https://MySchool.TestingCompany.com/oldAPI`, that let me encourage a student with ID # `12345` to take a French foreign language placement exam by visiting `https://UniversityName.TestingCompany.com/oldAPI?language=FRENCH&studentid=12345`.

They're retiring that site.  Now, whenever student # `12345` wants to take a French test, the company wants us to:

* Perform an HTTP POST against their _new_ API _(using an authentication secret they provided us)_
* Parse the results to extract a link along the lines of `https://MySchool.TestingCompany.com/newAPI?fiveMinuteLogin=f892ijf892890fhcj`
* Somehow get the student to visit that link before it expires within 5 minutes

The prospective student self-service web portal through which we're telling student `12345` how to take a French test is ... well ... let's just say that the technology stack it's built on renders pretty "static" pages.

It wouldn't be easy to do this operation _within_ the web portal's server upon a student clicking a link that says, "Take your French test here!"

This is how Jitterbit can help.

Without majorly refactoring the student self-service portal, thanks to Jitterbit's API manager, I could simply re-point the "Take your French test here!" link:

* from `https://MySchool.TestingCompany.com/oldAPI?language=FRENCH&studentid=12345`
* to `https://MySchool.Jitterbit.net/takeTest?language=FRENCH&studentid=12345`

## TL;DR

The only problem was ... Jitterbit's _so_ powerful that their documentation is pretty "all over the place" _(in the name of being thorough)_ and it took me a day to stand up a "hello world" `takeTest` API endpoint that redirects me to `https://example.com`.

To save you time, in this series I will give step-by-step tutorials, using both Jitterbit's (web) "Cloud Studio" and (desktop) "Design Studio" as back-end logic machines, for setting up simple "Hello World" APIs hosted by Jitterbit.

You will see a "`302`" redirect that forwards your browswer to `https://example.com` when you try to visit a URL like `https://YourArea.jitterbit.net/YourEnvironment/demonstrate302`:

![](https://katiekodes.com/images/screenshots/screenshot-jitterbit-api-helloworld-2020-04/62-browse-to-endpoint.png)

![](https://katiekodes.com/images/screenshots/screenshot-jitterbit-api-helloworld-2020-04/63-example-redirect.png)

As well as an ordinary "`200`" response that renders content based on values provided in URL parameters, such as when visiting a URL like `https://YourArea.jitterbit.net/YourEnvironment/helloWorld?weather=Sunny&noise=Quiet`.

![](https://katiekodes.com/images/screenshots/screenshot-jitterbit-api-helloworld-2020-04/64-browse-to-endpoint.png)

![](https://katiekodes.com/images/screenshots/screenshot-jitterbit-api-helloworld-2020-04/65-parameters-displayed.png)