Find

Article
· Oct 2 5m read

Automating IAM Configuration from OpenAPI Specs 2.0 with ObjectScript

Why This Matters

Managing IAM can be tedious when done manually — especially when your APIs are already well-documented using OpenAPI (Swagger) specs. Wouldn't it be great if you could automatically generate Kong services and routes directly from your OpenAPI spec?

That's exactly what this ObjectScript method does: it reads an OpenAPI 2.0 spec stored in the XData block of your spec class and generates a decK-compatible YAML file that can be used to sync your IAM configuration.

Discussion (0)1
Log in or sign up to continue
Discussion
· Oct 2

How has certification impacted your learning journey?

Hi Community,

Do you believe in life-long learning? Are you passionate about improving your skills?

📈InterSystems certification is not just a great way to gain a competitive edge—it also helps you identify areas where you can grow!

How has certification impacted your learning journey?

👉Watch the video to hear directly from members of the InterSystems certified community!

What about you?

  • What are your own professional goals, and where do you want to level up?
  • What is the best way you've found to grow your skills?

As always, feel free to reach out to certification@intersystems.com if you have questions about our exams.

Discussion (0)1
Log in or sign up to continue
Discussion (0)1
Log in or sign up to continue
Article
· Oct 2 2m read

How to compare the contents of two globals

InterSystems FAQ rubric

The ^%GCMP utility can be used to compare the contents of two globals.

For example, to compare ^test and ^test in the USER and SAMPLES namespaces, it would look like this:
*In the example below, 700 identical globals are created in the two namespaces, and the contents of one of them is changed to make it the detection target.

USER>kill ^test
USER>for i=1:1:100 { for j=1:1:7 { set ^test(i,j)="Test"_i } }
 
USER>zn "samples"                  // change namespace to SAMPLES
SAMPLES>kill ^test
SAMPLES>for i=1:1:100 { for j=1:1:7 { set ^test(i,j)="Test"_i } }
 
SAMPLES>set ^test(50,5,1)=1        // Change one of the globals created in the SAMPLES namespace.
SAMPLES>do ^%GCMP
Compare global ^test               // Global to compare.
on directory set: (this system)    // Enter
in namespace: SAMPLES =>           // Enter (if this namespace is OK)
with global ^test=>                // Global to compare
on directory set: (this system)    // Enter
in namespace: SAMPLES => USER      // Namespace to compare
Output differences on
Device:                            // Destination for output results. Press <Enter> to view in a terminal.
                                   // If you enter the full path of the log file name, the output will be sent there.
Right margin: 80 =>

Compare global ^test in SAMPLES
 with global ^test in USER
 
^test(50,5,1) exists in ^|"SAMPLES"|test but not in ^|"USER"|test    // Detects differing globals
Time=.001822
SAMPLES>

If you want to compare between instances on different servers, rather than within the same instance, use the ^DATACHECK utility. For instructions on how to use the ^DATACHECK utility, see the related article below:

How to compare multiple globals and routines in two databases

Discussion (0)0
Log in or sign up to continue
Question
· Oct 2

Login Failure for a single person (not user!) in IRIS for Health

Hi community,

A colleague gets ERROR #822: Access denied every time he tries to log in via Management portal. It is NOT the case of wrong credentials: I reset his password password to a temporary one so it would prompt him to create a new one upon first login. He did get the prompt, changed his password and his next attempt at logging in displayed the same error.

The audit log record displays this:
Error message: ERROR #862: User is restricted from running application /csp/sys/op, %Admin_Operate:U required -- cannot execute.
Web Application: /csp/sys/op
$I: |TCP|1972|1533396
$P: |TCP|1972|1533396

Other information:

  • he can get access with the same credentials via R, so it is absolutely not the problem with credentials
  • the login works just fine on my device. He provided me with his old password, which I tested before setting a new one, and I created a test user with the same permissions. Both worked for me but not for him
  • no one else encounters this error. I asked a different colleague (also a Mac user like the first colleague) to try it (test user with the same permissions) just to be sure. It works for the second colleague but the first one still cannot log into Management portal
  • changing browsers (Chrome, Safari) or devices doesn't help. The first colleague encounters the same error (Access denied) in Chrome and Safari, both on his work laptop and an old one he's tried at my request
  • we cannot tell when it started because this colleague usually connects programmatically, not via Management portal. This was the first time he's tried it in about a month

In short, one person encounters the error that no one else trying the same thing does. IRIS Audit log reports a LoginFailure event and claims that "%Admin_Operate:U required" - but it shouldn't require that to just log in! The issue seems to be localized to him specifically  (somehow!) but Audit log claims it's a permissions error. I am deeply confused.

Has anyone else encountered anything like this?

3 Comments
Discussion (3)2
Log in or sign up to continue