Skip to Main Content
IBM Z Software


This portal is to open public enhancement requests against IBM Z Software products. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Not under consideration
Workspace z/OS Connect
Created by Guest
Created on Apr 26, 2019

Allow requesting APIs asynchronously

Add functionality to the zOSCEE API Requester to allow requesting APIs asynchronously.
The original request call should return a token. The response will need to be saved, keyed by the token, for a limited time. The later response call will pass the token as input.

Idea priority Low
  • Guest
    Reply
    |
    Jun 4, 2019

    Thank you for this Requirement.

    We have evaluated your use case and have unfortunately decided that, for now, it lies outside of the scope of z/OS Connect EE.

    The focus of z/OS Connect EE is to transform between core mainframe assets and APIs, served using HTTP, which is a synchronous protocol. It is possible to design an API to behave in an asynchronous fashion (eg one POST call to start some work that quickly returns a token which you can use on a second GET call to get the result). This technique can be effective for a lot of z/OS Connect EE use cases where you do not want to wait for the results of call but are happy to wait briefly for a token and then use that token later to retrieve the results. The key here though is that each request is still synchronous and stateless which underpins the simplicity and usability of REST APIs and most importantly the provider of the API is aware that it will be used in this way and can take appropriate steps to secure the "GET request for the result" such that only appropriate identities can request it.

    The type of use case you describe above (task 1 starts some work and later task 2 picks up the results) is inherently asynchronous and stateful. Trying to add those concepts on top of synchronous, stateless APIs quickly runs into complications which would defeat the objectives of simplicity and usability of REST APIs.

    For instance, if we were to return a token that could be used to retrieve a response at a later time,
    How long should we hold the response for?
    What security context should be allowed to retrieve it? (we can't go back to the API to check if the new identity that now holds the token should be able to access the data... the API was synchronous)
    What if the response is encrypted, should we store it encrypted or decrypted?
    If we store it encrypted how do we decrypt it? Do we also store secrets from the SSL session used to obtain the response?
    etc etc

    Hopefully you can see this is not trivial, adds complexity and ultimately what we would end up building would be a framework for asynchronous messaging.

    There are many established technologies and frameworks that provide protocols for asynchronous messaging and process flow orchestration (eg MQ, App Connect Enterprise, IIB, CICS service flow feature etc). Whilst powerful, these tend to be more complex and less "developer friendly" (which is part of the reason why synchronous, stateless REST APIs have become so popular). Ultimately it does not make sense for us to invest in creating what is already available in the market today.

    Finally the CICS Asynchronous API was designed to provide a simple, developer friendly way to use asynchronous programming patterns. I suspect that the limitation of "only the parent of a child can access it's results" is necessary in order to achieve this simplicity, and not step into the realm of building an asynchronous messaging or orchestration framework. However I cannot speak for the CICS TS team so I would suggest raising an RFE with them if you want to discuss this further.

    I hope that helps.

0 MERGED

Making asynchronous RESTful calls via z/OS Connect EE

Merged
From and out of the mainframe, we want to be able to make RESTful systems that are made of applications and programs that talk in ASYNC technology.
almost 5 years ago in z/OS Connect 1 Not under consideration