Technical Articles
SAP Developer Challenge – APIs
We have a new SAP Developer Challenge for you for the month of August. This time it is all about APIs – introducing you to the basics, revisiting some classic aspects, and having a bit of fun along the way.
Challenge close and final statistics
Update 04 Sep 2023: We’re now a few days into September already. In last week’s SAP Developer News episode we mentioned that we’d keep the challenge open for a few more days (basically until the weekend was over) for you to catch up on any tasks that were outstanding. That period is now over, and the challenge is now officially closed, as of 0900 BST (UTC+1) today. The statistics below are based on all participation up to this point.
The tasks are still available for you to work through, and will remain available for the forseeable future. We have endeavoured to supply enough background information in each of the tasks for you to complete them on your own at any time.
We’d like to congratulate each and every one of you for taking part, and working through the tasks. There was a super community vibe and some interesting discussions sparked by some great questions from you. We thank you for that.
So, here are a few statistics.
Overall participation
There were lots of you that took part! In fact, 223 unique participants. All of you that participated will receive an SAP Community badge, as mentioned towards the end of this post. Congratulations to all of you, who are:
AAncos, ALEJONO, AbapAndy728, AchimBolte, Afenna, AndrewF, ArindamSAP, Ashok_Easa, Bharathi_S, BrijeshGandhi, Chaitanyat, Cmdd, Cylia_Oulebsir, DazOwens, DenisGaland, DirkO, Ella, Eurey, FabienHenique, Flavio, FooThePolarBear, Frank_Haschick, GRABLERE, Gowtham, HJRavi, HelenaFortun, Hendrik, Henning, IngoS, IsmailFatih, JJAIMES, Jagtar, JohnPaulLiberal, Julio, K_Choudhary, KathrynKazibwe, Keekee, MadhavKumar, Mahmoud-Farag, ManojSutar, MarcelloUrbani, MeriemSouissi, Monni, Nacho_Rodriguez, Naguco, Nicolas, Nidhi, OlH, OlgenH, P41l, Petchimuthu_M, PriyankaChak, R4BB1T, RUPAM9115, Rafito, Rajshekhar2, Ramjee_korada, RaulVega, Rishi_and_SAP, Ritik, Ruthiel, SSchuck, SandipAgarwalla, SandraSolis, Sharadha, Shubasis, StKollos, SubaR, Suneeth_P, SyamisUnique, SyedAllaBakshu, TJRP, TRainer, TRuloff, TiagoAlmeida, Tomas_Buryanek, ToniOostveen, TravelTechCode, VenugopalA, VinitaSangtani, Zakir_hussain, _Konstantin_, aancos_id, abdullahgunes, adrian-ngo, ajay_soreng, ajmaradiaga, ajos, akshaychats129, alessandraarm, amine_b23, andrew_chiam, andyl, anupamduttaroy, arismuda, arunneerolil, aslan1906, barisguler, bernd_broesamle, beserk, bmsudhakaran, brahammittal, bugsanderrrors, bztoy, cd_winc, cdias, ceedee666, cguttikonda24, choujiacheng, cinemandre, d067595, dakoller, dan_wroblewski, danielpobletaes, das87, devrajsingh, dhegde, dianab, dinah, dvontress, eakucuk, ecem_yalim, eddiedu, elkhenati, emiliocampo, encarrero, erickgrilo, fabio_correa, flo_conrad, fsteurer, garyzuo, geek, govardhansahil, gphadnis2000, gustavo-alvarez, harsh_itaverma, hunamm, huseyindereli, ibibhu, imancour, induthiru, jagadish, jasshauer, jdm, jens_borau, jironoor, jitendrakansal, jkz, jmalappil, jmuiruri, johna69, kamesh-sap, kasch-code, kjyothiraditya, koehntopp, ktrkanjec, kumarniti4, kunalsahi85, lehuynhnam, lvhengel, marhol, martin_zauner, martinstenzig, mdejesus, menglert, miyasuta, msoans, mts2605_orsted, mustafabilen, mvaibhav, nagarajan, nalin_sharma, naveen1241, nex, nicoschoenteich, nilsb, njames, nmkarthikeya, ofilho, p330068, pedropeixoto, pmthien, pmwilliam, pocaFight, prachetas, prashil, pvnierop, r5luga, ramana_salapu, raulguti, rdulek, rohantiwari, sabarna17, sainithesh21, salilmehta01, sandeepmalhotra, sarahf, satya-dev, se38, se71, seVladimirs, senchi, sgatea, shotokka, shrinivasan_ns, somnath_paul, spassaro, steph_senita, stephancalmindo, stevanic, stickman_0x00, swanandl, szeteng00, thomas_jung, thomasks, tly, tobiasz_h, turanaydin, vedaradhya, vignesh_narayan, vinaychowdary, xyla, yassine.
Overall task completion
There were 13 tasks altogether. Each of these were successfully completed by many of you. Here’s the breakdown, task by task, of how many of you completed each task.
176 Task 0 ++++++++++++++++++++++++++++++++++++++++++++++++
70 Task 1 ++++++++++++++++++++
104 Task 2 +++++++++++++++++++++++++++++
90 Task 3 +++++++++++++++++++++++++
53 Task 4 +++++++++++++++
56 Task 5 ++++++++++++++++
38 Task 6 +++++++++++
49 Task 7 ++++++++++++++
44 Task 8 ++++++++++++
35 Task 9 ++++++++++
37 Task 10 +++++++++++
30 Task 11 +++++++++
27 Task 12 ++++++++
Individual task streaks
There was a lot of work for you to do across all 13 tasks in this challenge. Some of you did incredibly well, successfully completing multiple tasks in the challenge period.
Here’s a breakdown of how many of you successfully completed how many tasks in total:
188 1 tasks +++++++++++++++++++++++++++++++++++++++++++++++
127 2 tasks ++++++++++++++++++++++++++++++++
96 3 tasks ++++++++++++++++++++++++
79 4 tasks ++++++++++++++++++++
65 5 tasks +++++++++++++++++
54 6 tasks ++++++++++++++
50 7 tasks +++++++++++++
40 8 tasks ++++++++++
31 9 tasks ++++++++
28 10 tasks +++++++
23 11 tasks ++++++
19 12 tasks +++++
9 13 tasks +++
As you can see, a handful of you, 9 in total, worked through and successfully completed every single task. While we can’t give a special extra badge for this, we’d like to call you out as participants with stamina!
- PriyankaChak
- ajmaradiaga
- geek
- kasch-code
- sabarna17
- se38
- seVladimirs
- thomas_jung
- tobiasz_h
Great work! 💪
Thanks once more to each and every participant for taking part in this challenge. Look out for your badge which should be coming your way in the next few weeks!
We’d love to hear from you on how you found this challenge, what you liked, what you disliked. So please, please, take a minute or two to leave a comment to this blog post, below, letting us know how we can do better next time.
Thanks!
Task list
If you’re just here for the list of tasks in this challenge so far, here they are:
Task 0 – Learn to share your task results
Task 1 – List the Northwind entity sets
Task 2 – Calculate Northbreeze product stock
Task 3 – Have a Northbreeze product selected for you
Task 4 – Discover the Date and Time API Package
Task 5 – Call the country date format API endpoint
Task 6 – Create a new Northbreeze category
Task 7 – Create a new directory in an SAP BTP account
Task 8 – Create an instance of the SAP Cloud Management Service
Task 9 – Create a service key for API endpoints and auth info
Task 10 – Request an OAuth access token
Task 11 – Examine the access token for scopes
Task 12 – Use the access token to call the API endpoint
Introduction
OK, let’s dive in!
APIs are an essential component in any system, large or small. In enterprise software, you can think of APIs as providing the lifeblood, the flow, in between and around systems that work together.
Aspects of APIs
There are many aspects of APIs, not least whether any given API is synchronous or asynchronous. But beyond that, there are styles. From simple HTTP based APIs that use HTTP as what it is, i.e. an application level protocol, through to those that conform partially or fully to RESTful constraints, such as OData, to styles which are quite orthogonal, such as gRPC, GraphQL and SOAP.
So while there are many API styles and aspects, this month we’ll focus on what is arguably the style that covers a large majority of integration interactions – HTTP and OData. Not least because to understand HTTP and OData is to understand the protocol that is used as a transport layer* for other styles (such as SOAP, XML-RPC, GraphQL and more).
*I’m deliberately going to avoid talking about whether that is a good thing or not 🙂
The challenge
As a slight departure from previous SAP Developer Challenges where there have been around four weekly tasks, we’re trying something a little different this month, with a series of more smaller, shorter tasks. Each task is something you can probably do in a coffee or lunch break (there are some that may take a little longer), and introduces you to some aspect of HTTP and OData APIs.
Some tasks will be based on simple services that are ideal for light touch activities. Others will be based on, and thereby introduce you to, or allow you to revisit, facilities on the SAP Business Accelerator Hub (previously known as the SAP API Business Hub).
The tasks
So any given SAP Developer Challenge like this consists of one or more tasks.
Each task in this challenge will be presented as a new discussion thread in the Application Development area of the SAP Community and the content of each of these discussion topics will have sections as follows:
- Background: some content that covers details of the API aspect or feature at hand
- Your task: a description of what you actually have to do
- Hints and tips: information designed to help you complete the task
- For discussion: questions for you to consider, and to share your thoughts on
For each task, you are encouraged to do two things:
- Complete the task as described, and share your result in a reply to the task’s discussion thread – this should be in the form of a SHA256 hash made from that result value and your SAP Community ID.
- Share your thoughts, by starting a separate reply to the task’s discussion thread, on the questions raised in the “For discussion” section.
So the question on your mind now is: “How should I create and share my task result hash?”
Well, you can find out exactly how you should do that, in our very first task for you in this challenge:
SAP Developer Challenge – APIs – Task 0 – Learn to share your task results
The task schedule
As mentioned earlier, there are more than just four weekly tasks in this challenge. We’ll create a new discussion thread in the Application Development area of the SAP Community for each task as and when they are ready for you to complete.
Expect each new task to be publicized like this every few days. It’s probably worth bookmarking the discussion group, or adding the discussion group’s RSS feed to your favorite RSS reader. For example, I use Miniflux and am subscribed to this feed here:
What to do now
Bookmark or otherwise subscribe to updates to this blog post and / or the Application Development discussion threads.
Then head on over to the first discussion thread, for Task 0:
SAP Developer Challenge – APIs – Task 0 – Learn to share your task results
and complete the task as described. Add your result hash, plus add further replies to the discussion thread with any thoughts you have.
Then check back in a couple of days time to look for the next task in its own new discussion thread!
What you’ll need
To complete the tasks, you’ll need to use various bits of software; often you’ll have a choice (for example, of language to use, or tool to employ). For some of the tasks you’ll need an account on SAP Business Technology Platform. A trial account will be fine, and is free for anyone.
Badges
Upon successful completion of the challenge’s tasks, you will earn a badge for your SAP Community profile.
We’ll leave the tasks open to complete for a period of time after August ends, to give you a chance to catch up and complete them all if you need to.
And don’t forget to have fun, learn stuff along the way, and share your thoughts with you fellow SAP Community members!
Great reminder to use RSS - Thanks DJ
I never got used to RSS 😕
Same for me, but for this challenge only, I've downloaded the RSS app 😅
Let's install Miniflux 😁
Thanks DJ, looking forward to learn and have fun with this challenge.
I am glad that I was one who participated in every tasks of this great challenge but what a shame that I submitted some wrong answer that make my account is missing from those super 9. 😅😅
this-is-the-year-of-the-api...
Surely it is. @qmacro - You have created a awesome, interactive, learning experience with lots of easter eggs...
Kudos to SAP Community . The Community is brilliant with lots of ideations and explorations. Here is a thread from X to all of you.
Feel free to have a look and comment in the solutions using Node-RED for these Tasks in this Git-Repo.
Thanks Sabarna!
thanks, DJ Adams, and as already mentioned in groups - this was a lot of fun! The time you posted new challenges was just perfect for me! Learned a lot of new stuff, but not yet converted to terminal user only 😉 next time probably.
and those who know will understand 🐣
Nicely found 😉 And thanks!
Thanks a lot DJ Adams, for this API challenge. The content was nicely organized, had lot of fun completing each task and lot of learnings as well.
Regards
Sandip
You're welcome!
Thanks DJ Adams, for this fun API challenge. Personally I think the tasks were well prepared and challenging enough. It was nice that they were not too long and I was able to tackle them between / after work.
Had the challenge been open one more day, you would have had 10 completions of the final task 🙂
Br, Sami
Thanks Sami! Shame about the last task for you, but kudos anyway! 💪
Amazing Challenge! Thank you very much DJ Adams, and everyone who was behind it + all participants. It was fun, sometimes very challenging for me (which is good thing), well separated to topics and introduction tasks. I explored, learned and tried many new things for me (and I thought that I know APIs quite well). Thanks again 🙂
Thanks Tomas Buryanek that is very kind! Glad you enjoyed it.
Hey DJ,
first of all a very big thank you for taking the time and effort to set this up!
I accidentally stumbled upon this post while looking for something else (can't recall at the moment what I was looking for back then) and since I was basically "stuck" with my assignments at the time (I was mainly waiting on others), I thought to myself "hmm, let's give this a shot".
In one of the comments I already wrote that I'm not a "real" developer, meaning I'm not one of those die hard technical guys, but I do occasionally have to program a bit here and there. However, I did enjoy these (little) tasks a lot. It did give me a better understanding of how APIs work (I do get in touch with them from time to time - we basically receive data in our data warehouse through APIs) and what you can actually do with them even though from time to time it was quite a struggle.
So far I worked up until task 8 and I hopefully have some time next month to finish the other ones. As I'm leaving on vacation this coming weekend, I "suddenly" have quite the workload on my plate.
The only downside maybe is that I have no clue whether my answers were correct or not
that would have been a "nice to have" I guess. Other than that, again, very well done and thanks a lot!
Cheers,
Raf(ito)
Hi Raf,
In order to verify your answers, you can send it to the hash service and change the CommunityID to one of the other users who already posted a comment below the task. Then the returned hash value should match the one in the user's comment. If this works for 2 or 3 users, chances are good that your answer is correct.
Thanks! I'll try that.
Hey DJ,
awesome content, is there an overview of all the challenges till now.
Regards
Clemens