(Check out the SAP Developer Challenge - APIs blog post for everything you need to know about the challenge to which this task relates!)
Now you're familiar with the Date and Time API, you are in a position to try out one of the endpoints.
For many APIs on the SAP Business Accelerator Hub there are options to "try out" the endpoints. You can define your own environment that you can then use to connect to from the hub:
There's also a sandbox environment that's available for some of the API packages too, and this Date and Time API is one that is available in this sandbox environment.
Your task is to make a call to a specific endpoint in this API.
That endpoint is one of those that you might have seen in the previous task, but not one that met the criteria of that task. It's this one:
The reason it doesn't meet the criteria is because a response to a request to this endpoint is returned in a text representation, i.e. MIME type text/plain, and not JSON.
You must specify the value DE for the country parameter.
In order to "persuade" you to make the HTTP call yourself, you need not only the response to such a call, but you'll need also a specific header from the HTTP response. That header is a custom header, i.e. is prefixed with x- and relates to a traditional programming language in the SAP world.
So you need to take two values:
The header name should already appear in lower case, but please make sure it is, i.e. before you use it (see the next paragraph), ensure that it is all-lowercase.
You must join these two values together into a single string, concatenated with a comma.
It's this single string that you must send to be hashed and shared in a reply to this discussion thread as described in Task 0.
So for example, if the response payload was:
and the response headers looked like this:
Date: Thu, 27 Jul 2023 12:05:40 GMT Content-Type: application/json Content-Length: 12 Connection: keep-alive vary: Accept-Encoding x-abap-hidden-header: 123.456ms x-request-id: 54dcdcb3-cf10-4d2b-6a2d-64ad846bd1e5 x-response-time: 417.10979ms x-vcap-request-id: 54dcdcb3-cf10-4d2b-6a2d-64ad846bd1e5 strict-transport-security: max-age=31536000; includeSubDomains; preload; Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: false
then the string to hash would be:
You'll need to find out how to authenticate the HTTP request, and provide the appropriate authentication details. If you don't, your request will be refused, with an HTTP 401 status code. Here's an example, where you see the headers of the request (identified with > characters at the start of the line) and of the response (identified with < characters at the start of the line):
> GET /dateandtime/getTimezoneFromLocation?country=DE HTTP/1.1 > Host: sandbox.api.sap.com > User-Agent: curl/7.74.0 > Accept: */* > < HTTP/1.1 401 Unauthorized < Date: Thu, 27 Jul 2023 11:59:48 GMT < Content-Type: application/json < Content-Length: 146 < Connection: keep-alive <
You'll also receive some JSON in the response body telling you what's missing.
In order to get the authentication details you need, you'll need to be logged on to the hub.
You'll need to get your HTTP client or client library to emit the details of the HTTP response, so you can see the headers and find the one required. For example with curl, you could use the --include option, or even the --verbose option.
Have you seen x- prefixed headers before? What does this prefix signify? Is this still common practice these days?
An x-prefix is a customised header used to annotate the HTTP request. It is something I never noticed before, even though I have used API calls a lot during development for one of my apps. These days, some would prefer to fully customise their custom header names to something more identifiable to their brand without relying on the x-prefix.