The usual use cases for IBM API Connect that I worked with mostly involved three things: security, monitoring, and message control. The purpose was to address these areas, though there was one feature we did not use. IBM API Connect has the capability to monetize APIs, but I worked for an insurance company that did not want to monetize. They wanted to use it internally and control the information, so monetization was disabled.
After that, we focused on security, monitoring, and message control. For security, we added Active Directory integration so people could connect securely, and we enabled JWT to secure login, password, and token inside JWT.
Monitoring was important because when IBM API Connect is installed on Kubernetes and OpenShift, it includes ELK, which is Elasticsearch, Logstash, and Kibana. When we wanted to monitor something, set an alert, or check the logs, everything was included such as the number of calls, the number of succeeded requests, the number of failed requests, the number of requests with technical errors, the downtime, and the average message time for request response. Everything in monitoring was handled by ELK, and there was a small customization of Kibana dashboards, though it was really limited. The customization of Kibana inside the administration page of IBM API Connect was quite restricted.
Then we had control, which has many parts. The first part was that when we created an API, we had to create a contract using Swagger contract, OpenAPI 2, or OpenAPI 3. We were creating the Swagger and controlling that the message had the minimal requirement of data and structure, or it was rejected by IBM API Connect directly.
The second part was that when we had an API, we had to create what we call a plan, and inside the plan, we could add our customers. Any plan could have rules and policies. For example, we could say that accounting clients have a plan and inside this plan, they can only use GET requests to get information but cannot modify it. All the updates were forbidden.
We created the plans to control who is doing what. The last thing we were doing with these plans was implementing request limitations. In a big insurance company with many millions of clients, when requests come from anything online, batch, and so on, if we say a user coming from a certain server can only make 100 requests per minute, all the other requests get HTTP 529. This is managed by the plan and by the user. We could control and say that a batch from a certain server can only make 10,000 requests per day or 5,000 requests per hour or per minute. This is a rate limit based on the number of requests and the time range. IBM API Connect made this control quite easily, and we could see in the dashboard when someone made too many requests. For instance, if someone was only accepted for 500,000 requests per day but made one million requests, he increased his number of requests by twice and half of it was not allowed. All those things made us limit requests. We limit because we do not want to kill the servers in the backend on the other side. We made tests and stress tested the backend, and when the documentation said a backend can only handle 10,000 requests per day, we needed to be sure that every request coming to it was managed by IBM API Connect in front of it, and only it could handle the requests going to the backend on the other side.