CICS management client interface (CMCI)

The CICS management client interface (CMCI) is a system management application programming interface for use by HTTP client applications such as IBM® CICS Explorer®. The CMCI provides the CMCI REST API and the CMCI GraphQL API for CICS system management clients that manage installed and definitional system resources. It also provides support for client authentication.
Depending on your environment, you can set up the CMCI in either a CICSPlex® SM environment or in a single CICS® region that is not managed by any CICSPlex SM.
CMCI in a CICSPlex SM environment
Allows you to manage definitional resources, such as CSD and BAS resources, and operational resources in all of the CICS regions managed by CICSPlex SM, with an HTTP client.
CMCI in a single CICS region
Allows you to manage only the CSD and operational resources associated with that region through an HTTP client, and the context is specified as the application ID of that CICS region.
When a single CICS region is configured with the CMCI, it becomes a CICS System Management Single Server (SMSS).

What is the CMCI JVM server?

The CMCI JVM server is a Liberty server. It is an optional, but highly recommended component of the CMCI that enhances support for CMCI requests. This component performs client authentication, including the support for multifactor authentication (MFA), and provides support for the CMCI GraphQL API.

Table 1 compares functions that are available to the CMCI configured with the CMCI JVM server with those available to the basic CMCI (that is, without the CMCI JVM server).
Table 1. Function availability in CMCI
Function CMCI with the CMCI JVM server CMCI (basic)
Authentication support
User ID / password
Certificate
PassTicket  
MFA  
API support
REST API
GraphQL API  

The enablement of the CMCI JVM server is controlled by feature toggle com.ibm.cics.cmci.jvmserver.

Note: Single CICS regions (SMSS) do not support the CMCI JVM server.

CMCI REST API versus CMCI GraphQL API: What is it? And what's the difference?

The CMCI REST API and the CMCI GraphQL API are both HTTP-based application programming interfaces that can be used to develop HTTP client applications that manage installed and definitional CICS and CICSPlex SM resources on CICS regions being managed by CICSPlex SM.

The CMCI REST API is designed based on Representational State Transfer (RESTful) principles, so you need to retrieve data from multiple endpoints with fixed data structures. In comparison, the GraphQL API exposes only a single endpoint with more flexibility. This means that in a single query request, a client can query many types of CICS resources across CICSplexes, and specify exactly what data it needs with explicitly expressed inherent relationships.

For example, the GraphQL query in Figure 1 retrieves data about the local transactions and associated programs, including use counts, in all regions in all connected CICSplexes. To achieve the same effect with the CMCI REST API, you might first access an endpoint that returns the list of local transactions available, and then an endpoint that returns all the programs. Then your client code must be written to post-process these results to match up the local transactions and programs. With GraphQL, relationships within the queried resources are also more explicitly shown through the CMCI GraphQL API than through the CMCI REST API.
Figure 1. CMCI GraphQL API Query requesting programs associated with local transactions
{
  cicsplexes {
    cicsResources {
      loctran {
        records {
          name
          to_program {
            name
            useCount
          }
        }
      }
    }
  }
}