Automation

Update: SCOM web API

Big updates:

I have made a lot of changes to the SCOM web API. As you can see from the picture above. Maintenance scheduling is added, which means you can create a new maintenance schedule in SCOM 2016. To the computer endpoints I have added the a possibility to get detailed information. This will list all related object to the server. Logical disks, network cards etc.

These are the API endpoints available at the moment:

Agents

RouteDescription
[GET] API/AgentsGets all agents
[GET] API/Agents/{id}Get a single agent

Alerts

RouteDescription
[GET] API/AlertsGets all open alerts
[GET] API/Alert/{id}Get a single alert
[PUT] API/AlertUpdate the specified alert with resolution state, TicketId
[GET] API/Alert/{ComputerName}Get all alert from specific computer, use IncClosed=true to include open and closed alerts

Computer

RouteDescription
[GET] API/Computer/WindowsGet all windows computers wit basic properties
[GET] API/Computer/Windows/{ComputerName}Get A single windows computers with basic properties
[GET] API/Computer/Windows/{ComputerName}/DetailedGet A single windows computers with hosted child objects
————
[GET] API/Computer/LinuxGet all Linux computers wit basic properties
[GET] API/Computer/Linux/{ComputerName}Get A single Linux computer with basic properties
[GET] API/Computer/Linux/{ComputerName}/DetailedGet A single Linux computers with hosted child objects

Maintenance

RouteDescription
[POST] API/ComputerMaintenancePut the specific computer object and all child in maintenance mode
[POST] API/ObjectMaintenancePut the specific monitoring object and all child in maintenance mode
[POST] API/MaintenanceScheduleCreate a new maintenance schedule. SCOM 2016 ONLY

Object

RouteDescription
[GET] API/MonitoringObject/{id}Get a monitoring object and all child object

 

Examples

Create a new maintenance schedule by sending a post to /API/MaintenanceSchedule with a body including object id, start date and end date in UTC, optionally a comment.

#CREATE A MAINTENANCE SCHEDULE WITH TWO OBJECTS. Time in UTC

$body = @"
{
  "scheduleName": "new maintenance schedule",
  "id": "a43a5b09-5c32-8624-1427-73b8e1f05248",
  "StartTime": "2017-05-30T13:53:33.550Z",
  "EndTime": "2017-05-30T14:53:33.550Z",
  "comment": "TicketID"
}
"@


Invoke-RestMethod -Uri 'http://localhost:64049/API/MaintenanceSchedule' -Method Post -Body $body -UseDefaultCredentials -ContentType 'Application/json'

Get details/related object from a computer:

Invoke-RestMethod -Uri 'https://host/API/Computer/windows/computer.fqdn/Detailed' -UseDefaultCredentials

Which will return something like this. Notice the relatedObjectsCount and relatedObjects

Martin Ehrnst
Systems Engineer working with SCOM, OMS and Azure
IT Pro with a passion for monitoring. Working with System Center, OMS, Azure and related software and cloud services.

Direct customer experience from previously being a Technical Account Manager.

Community supporter where I try to contribute via blogging and social media.

8 COMMENTS
  • Johannes Eriksson
    Reply

    Hi Martin! Great API, got it working fine in in our test.
    Now I am planning for production and have tested some scenarios with the API running on an seperate web server (interna publishing reasons).
    Last week it looked like it worked fine after editing web.config and to FQDN to the SCOM-server.
    But this week it doesn’t. Maybe I have mixed up the URL’s or something.
    Do you know if it is possible to run the API on a seperate maschine and what configuration needs to be done and firewall traffic needs to allowed

    1. Martin Ehrnst
      Reply

      Hi Johannes, there’s no reason for it to work last week and not this week, but in order to have a web server forwarding credentials delegation must be in place. I have not been able to do so my self using the end users credentials, and I belive something has to be done within the code to allow this.
      I did plan to implement this (hence the ability to change mangement server from IIS) but have not figured it out.

      Martin

  • Harish
    Reply

    Hey Martin! Thanks for a great API

    Need help in updating (acknowledged/inprogress )and closing the particular Alert. Please share the sample commands pls it would be greatful

    Thanks in advance

    1. Martin Ehrnst
      Reply

      Hi Harish, not that easy to show example from my phone. But in essence, you can chose whatever resolution state you want. 254 etc. 255 will close it

  • F
    Reply

    This is excellent work! 🙂
    I’ve looking for a solution to put alert into scom using REST. To generate an alert in SCOM for a specific class instance..
    Any thoughts of implementing that?
    to be able to integrate with other monitoring-tools or applications to generate directly into SCOM..

    1. Martin Ehrnst
      Reply

      That is a tricky one. Lots of consideration have to be made to do that. Unfortunately no immediate plan to implement, but I am happy if you want to look into it 😀

  • David Sjölund
    Reply

    Hey Martin! Thanks for a great API 🙂

    Any plans for implementing “End Maintenance Mode”?

    /Regards
    David

    1. Martin Ehrnst
      Reply

      Thank you David. I am glad you like it. Yes, there’s a plan, but unfortunately without an end date 😉

Engage by commenting