ChannelStatusController

The second part of the URI must be chstatus to call the ChannelStatusController. This controller can be used to get status information from channels.

inquire

Returns all status attributes of channels which matches the given name. This action executes the MQCMD_INQUIRE_CHANNEL_STATUS pcf command. On success, the returned JSON object will have a data array, on failure an error object.

URL Parameters

/api/chstatus/inquire/<QueueManager>/<ChannelName>

QueueManager

The name of the queuemanager. This parameter is required!

ChannelName

The name of a channel. When this parameter is used, the ChannelName parameter is ignored.

Query Parameters

ChannelName

The name of a channel. When this query parameter is not available, a * will be used which matches all channels. This parameter will be ignored when a channelname is passed as URL parameter.

ChannelInstanceType

Current Channel, Saved Channel or Short Channel are the possible values. The default is Current Channel. The value is case sensitive.

ChannelType

Possible values are All, Sender, Server, Receiver, Requester, Server-connection, Client-connection, Cluster-receiver and Cluster-sender. The value is case-sensitive. This is actually a shortcut for a Filter :

filter=I&filter_param=ChannelType&filter_op=EQ&filter_value=<value>

It’s a numeric filter, because ChannelType is an integer constant. When a string value is passed, MQWeb will try to convert the string to the corresponding constant.

Be aware that only one integer/string filter can be used for each call.

ClientIdentifier

The ClientId of the client.

CommandScope

Specifies how the command is executed when the queue manager is a member of a queue-sharing group. This parameter applies to z/OS only.

ConnectionName

If this parameter is present, eligible channel instances are limited to those using this connection name.

Filter

Speficies which filter to use: I means Integerfilter, S means Stringfilter. FilterParam and FilterValue are required to create the filter. When a filter can’t be build because of too little information, it will be silently discarded.

FilterOp

The operator that is being used to evaluate whether the parameter satisfies the filter-value. The default is EQ.

The following values are allowed:

A Stringfilter can use some additional operators:

FilterParam

The name of the parameter to filter on. The names are based on the names used in the WebSphere MQ information center.

FilterValue

The value to use for filtering. When a string is passed for an Integerfilter, a WebSphere MQ constant is assumed.

XmitQName

If this parameter is present, eligible channel instances are limited to those using this transmission queue.

Example

/api/chstatus/inquire/PIGEON
/api/chstatus/inquire/PIGEON/CL.MQWEB
/api/chstatus/inquire/PIGEON?Name=CL.*&ChannelType=Server-connection

<?php
	/*
	 * Inquire all server connection channel statuses for queuemanager PIGEON.
	 * MQWeb runs on localhost and is listening on port 8081. 
	 */
	$url = "http://localhost:8081/api/chstatus/inquire/PIGEON?ChannelType=Server-connection";
	
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	
	if ( ($response = curl_exec($curl)) === false )	{
		$err = curl_error($curl);
		echo "An HTTP error occurred while inquiring channel status information: $err\n";
	}
	else {
		$json = json_decode($response);
		if ( isset($json->error) ) {
			echo "An MQ error occurred while inquiring channel statuses.\n";
			echo "Reason Code: {$json->error->reason->code} - {$json->error->reason->desc}\n";
		}
		else {
			if ( isset($json->data) && count($json->data) > 0 ) {
				foreach($json->data as $status)
				{
					echo $status->ChannelName->value;
					echo " : ";
					echo $status->ChannelStatus->display;
					echo "\n";
				}
			}
			else
			{
				echo "No statuses found\n";
			}
		}
	}

JSON Object

When using an application/json POST request you can post a JSON object with names like the query parameters.

All URL parameters and query parameters are ignored except for the URL parameter for the name of the queuemanager.

There are some differences between query parameters and a JSON object:

An IntegerFilterCommand can’t be used together with a StringFilterCommand

This sample is a Perl script that inquires all channel statuses for Server-connection channels.

#!/usr/bin/perl
use strict;
use warnings;
use feature qw(say);

use JSON;
use LWP::UserAgent;
use HTTP::Request::Common;

# Get the channelstatus for all cluster sender channels

my $qmgr = shift;
die("Please pass me the name of a queuemanager as argument")
	unless defined($qmgr);

my $json = JSON->new;

my %input = ( 
  'ChannelName' => '*',
  'IntegerFilterCommand' => {
  	'Parameter' => 'ChannelType',
  	'Operator' => 'EQ',
  	'FilterValue' => 'Cluster-sender'
  }
);
my $content = $json->encode(\%input);    

my $ua = LWP::UserAgent->new;
my $req = POST 'http://localhost:8081/api/chstatus/inquire/' . $qmgr;    
$req->header(
	'Content-Type' => 'application/json',
	'Content-length' => length($content)
);
$req->content($content);

my $res = $ua->request($req);
die $res->status_line unless $res->is_success;

my $mqweb = $json->decode($res->content());
if ( exists($mqweb->{error}) ) {
	say 'An MQ error occurred while inquiring queues.';
	say 'Reason Code: '
		, $mqweb->{error}->{reason}->{code}
		, ' - '
		, $mqweb->{error}->{reason}->{desc};
}
else {
	foreach my $status(@{$mqweb->{data}}) {
		say $status->{ChannelName}->{value}
			, ' : '
			, $status->{ChannelStatus}->{display}
	}
}