Our organization is going to implement an Identity provisioning service using SCIM standard (1.1), I am just wondering if Intersystems System IRIS for health has SCIM adapter or any class that already built for SCIM standard...
Thanks,
Hoi
Application Programming Interface (API) is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it is a set of clearly defined methods of communication between various software components.
Our organization is going to implement an Identity provisioning service using SCIM standard (1.1), I am just wondering if Intersystems System IRIS for health has SCIM adapter or any class that already built for SCIM standard...
Thanks,
Hoi
Hi all,
This is a quick tip about how to use case insensitive URL in REST API.
If you have a class that extends from %CSP.REST and Ens.BusinessService, to create a REST API service, and you have defined your WebApplication in lowercase
.png)
XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
<Route Url="/user" Method="POST" Call="User"/>
<Route Url="/login" Method="POST" Call="Login"/>
</Routes>
}Only accepts the url in lowercase, i.e. http://myserver/myproduction/user
If you have any uppercase character, the url doesn't work.
Every clinic visit starts the same way: a patient sits in a waiting room holding a clipboard, answering the same questions they'll be asked again ten minutes later — while the clinician walks in cold, with no idea whether the next case is a sore throat or a heart attack in progress.
That gap: between what the patient knows and what the clinician sees — is what Triage Park closes. It's our entry for the InterSystems Programming Contest: AI Agents for FHIR.
When installing InterSystems IRIS on Windows, you may see the following option in the installer wizard if IIS has already been installed and enabled (Enable IIS).

Note: Depending on your installation type, you may not see this exact installer screen. In that case, proceed with installation as normal, and then configure the IIS settings on the server where the Web Gateway is installed.
If you choose to configure the local IIS web server for the instance, the installer wires IIS and the InterSystems Web Gateway together for you.
Back when I was a Developer Support Engineer in the InterSystems Worldwide Response Center (WRC), I would occasionally receive cases involving large message backlogs in a production. The customer would discover that a subset of queued messages were no longer useful and would ask a question similar to the following:
Is there an established best practice for mass-aborting messages in a specific component's queue that match a particular set of criteria?
How many times have we migrated an IRIS Instance to another machine, maybe even another version, and after a few days realized we forgot that one SSL Configuration critical for a Business Operations to work? Or maybe a credential, or a lonely class in a package by itself?
The simple solution is to make a checklist¹. A checklist of the entities we have to move. But simple checklists on Word documents are often forgotten, or just ignored.
I have a Business Process that needs to call an external API that may take several seconds to respond. I'm worried that keeping the BP blocked waiting for the response could affect the overall Production throughput. Is there a recommended pattern for handling async calls inside a BPL or custom BP class to avoid this kind of bottleneck?
In our previous article, we explored the basics of unit testing in IRIS and the ways to apply it to a REST API. We even figured out how to test logic before finalizing network configurations and authentication, allowing us to focus solely on testing the API contents. Today, we will build upon that foundation and elevate our unit testing strategy by using another tool: %Populate .
At first glance, the %Populate class appears to be very simple. You can create a class that extends both %Persistent and %Populate and inherit a Populate method designed to generate randomized records.
Hi Community,
Interoperability metrics were enabled for a production using ##class(Ens.Util.Statistics).EnableSAMForNamespace(). However, after running DisableSAMForNamespace() and DisableStatsForProduction(), the metrics continue to appear in the endpoint output.
Is there a way to completely stop these interoperability metrics from displaying in the API metrics stream? Is there an additional step or cache clear required?
Good afternoon,
I have received a WSDL.
I have imported it successfully in HealthShare.
The external is requesting me to send messages with the following structure (using the auto-generated SOAP Bussiness Operation from the WSDL), as you see they need a custom http header titled "Appian-API-Key", as the following:
curl --request POST \
--url [ endpoint ] \
--header 'Appian-API-Key: << API KEY >> \
--header 'Content-Type: application/xml' \
--data '<?xml version='\''1.0'\'' encoding='\''utf-8'\''?>
<soapenv:Envelope xmlns:soapenv='\''http://schemas.xmlsoap.org/soap/envelope/'\''>
<soapenv:Body>
<tns:acceptMessage xmlns:tns='\''http://ws.connectors.connect.mirth.com/'\''>
<![CDATA[ Message ]]>
</tns:acceptMessage>
</soapenv:Body>
</soapenv:Envelope>'You may notice when upgrading to IRIS For Health from 2024.1 to 2024.2+ (2025.1, 2026.1, etc.) that where you were previously accessing your FHIR Portal you are now receiving Not Found.

I’m currently working with REST APIs in InterSystems IRIS and would like to better understand the recommended security practices for production environments.
I’m especially interested in:
I would also appreciate learning about common mistakes to avoid when deploying APIs publicly or integrating with external systems.
What approaches or tools have worked best in your environments?
Redoc is an Open Source solution capable of rendering API specifications in OpenAPI 2.0 or 3.0+ as very beautiful and functional web portals. Currently, to have something similar, we need the ZPM SwaggerUI extension or we need to install IAM - InterSystems API Manager and then configure the IAM Developer Portal. Well, now the community has one more option, iris-redoc. This solution installs a web application on your IRIS instance that uses Redoc to present a beautiful web portal for your REST APIs:

The third developer previews of InterSystems IRIS® data platform, InterSystems IRIS® for Health, and InterSystemsHealth Connect™ 2026.1 have been posted to the WRC developer preview site. Containers can be found on our container registry and are tagged latest-preview.
These developer previews includes the dropping of Mac Intel support starting from 2026.1.0, and the adding back of Windows Server 2019 support to 2026.1.0.
Initial documentation can be found at these links below:
I want to develop a REST API for uploading PDF files. I started with OPENAPI spec file. When I test, I get error 8727 referencing missing required parameter file.
"{"$c(13,10,9)"""errors"":[ {"$c(13,10,9,9,9)"""code"":8727,"$c(13,10,9,9,9)"""domain"":""%ObjectErrors"","$c(13,10,9,9,9)"""error"":""ERROR #8727: Parameter required: file."","$c(13,10,9,9,9)"""id"":""RESTRequired"","$c(13,10,9,9,9)"""params"":[""file"""$c(13,10,9,9,9)"]"$c(13,10,9,9)"}"$c(13,10,9)"],"$c(13,10,9)"""summary"":""ERROR #8727: Parameter required: file.
One of the recommendations when deploying InterSystems Technologies for production is to set up High Availability. The recommended API Manager for these InterSystems Technologies is the InterSystems API Manager (IAM). IAM (essentially Kong Gateway) has multiple deployment topologies.
If you are looking for high availability you could use:
a) Kong Traditional Mode: Multiple Node Clusters
b) Hybrid Mode
c) DB-less Mode
Before we break them down let's first understand the out of the box deployment that is provided by InterSystems: Installing IAM Version 3.10.

I'm a huge sci-fi fan, but while I'm fully onboard the Star Wars train (apologies to my fellow Trekkies!), but I've always appreciated the classic episodes of Star Trek from my childhood. The diverse crew of the USS Enterprise, each masterminding their unique roles, is a perfect metaphor for understanding AI agents and their power in projects like Facilis. So, let's embark on an intergalactic mission, leveraging AI as our ship's crew and boldly go where no man has gone before
We didn't start with a big AI strategy.
We had a legacy InterSystems Caché 2018 application, a lot of old business logic, and a practical need: build a new UI and improve code that had been running for years. At first, I thought an AI coding agent would help only with a small part of the work. Maybe some boilerplate, some REST work around the system, and a bit of help reading old ObjectScript.
In practice, it became much more than that.
A question that quickly arises when configuring IAM (aka Kong Gateway) is how many routes should be created to reach all the business objects in an IRIS API.
A common mistake is to create one route per business object, unnecessarily multiplying the number of routes.
Hello all,
I have a EnsLib.HTTP.GenericMessage inbound from a webhook with a GC stream.
My router is defined as the following:
This article is intended as a beginner level article for people that want to learn how to use OAuth2 in their web applications natively.
There is an accompanying video/demo that may be helpful here:
and you can reproduce this locally with the Open Exchange application attached.
OAuth (Open Authorization) 2.0 is a standard way to let one application call another application’s API without sharing a username and password.
Introduction — The Problem with AI Streaming in ObjectScript
Today, I would like to introduce a problem I encountered and the solution I found when integrating AI APIs into an ObjectScript application. My initial tests were successful, yet somewhat frustrating.
The HTTP call worked; the request was properly sent to my LLM APIs. But then, silence... a long wait. Eventually, the entire response arrived as a single block.
Technically, it worked, but the user experience was disappointing compared to a ChatGPT session.
![]()
If you have ever dug through a large IRIS namespace looking for where a particular string, method call, or pattern was used, you know the pain: there was no built-in way to do a grep-style search across your server-side ObjectScript code from VS Code — at least not without jumping through some hoops.
That is what ObjectScript Search fixes.
Try it today with a simple install from the VS Code Marketplace. If you don't like it, uninstalling is just as easy. But I think you will like it — it is a huge quality-of-life improvement for anyone doing ObjectScript development in VS Code.
Hey Developers,
Watch this video to learn about automating the provisioning and management of FHIR services:
⏯ Automating Provisioning and Management of FHIR Services @ Ready 2025
InterSystems continues to push AI capabilities forward natively in IRIS — vector search, MCP support, and Agentic AI capabilities. That roadmap is important, and there is no intention of stepping back from it.
But the AI landscape is also evolving in a way that makes ecosystem integration increasingly essential. Tools like Dify — an open-source, production-grade LLM orchestration platform — have become a serious part of enterprise AI stacks.
I created iris-budget app for the InterSystems Full Stack Contest in 2026. By full stack, we mean a frontend web or mobile application that inserts, updates, or deletes data in InterSystems IRIS via REST API, Native API, ODBC/JDBC, or Embedded Python.
My app uses multiple REST APIs to add a new category or retrieve a list of categories of expenses and income.
I inherited /csp/coffee from module.xml in iris-fullstack-template.
For this project, I created a swagger file called "budget.json.
InterSystems IRIS allows you to build REST APIs using ObjectScript classes and the %CSP.REST framework. This enables the development of modern services to expose data for web apps, mobile apps, or system integrations.
In this article, you'll learn how to create a basic REST API in InterSystems IRIS, including:
GET and POST methodsA full demonstration using Docker
This is an excellent candidate for a developer community post (like Dev.to, Medium, or the InterSystems Community). It bridges the gap between high-level architecture and hands-on implementation.
Here is the summarized article format.
As applications scale, handling heavy computational tasks synchronously becomes a bottleneck. Whether it's processing large data sets, sending high-volume emails, or managing API integrations, a decoupled architecture is essential.
In the previous article, we examined how we can use the %CSP.Request and %CSP.Response classes to test a REST API without having the API fully set up and accessible across a network with an authentication mechanism. In this article, we will build on that foundation to perform some simple unit testing of one of our REST API methods.
The unit testing framework requires a couple of setup steps before we can use it. First, we have to ensure that the unit testing portion of the management portal is enabled so we can review the results of our tests.
Hi,
I want to consume an API that provides HL7 messages. To achieve this, I have thought of the following workflow:
I have created a business service that periodically triggers a business process. The trigger request is forwarded to a business operation. There, a %Net.HttpRequest is assembled from scratch and then sent to the API endpoint. The corresponding HttpResponse then contains several HL7 messages encoded in UTF-8 in the message body. To further process the HL7 messages, the operation sends the HttpResponse back to the business process as EnsLib.HTTP.GenericMessage.