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
Route | Description |
---|---|
[GET] API/Agents | Gets all agents |
[GET] API/Agents/{id} | Get a single agent |
Alerts
Route | Description |
---|---|
[GET] API/Alerts | Gets all open alerts |
[GET] API/Alert/{id} | Get a single alert |
[PUT] API/Alert | Update 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
Route | Description |
---|---|
[GET] API/Computer/Windows | Get all windows computers wit basic properties |
[GET] API/Computer/Windows/{ComputerName} | Get A single windows computers with basic properties |
[GET] API/Computer/Windows/{ComputerName}/Detailed | Get A single windows computers with hosted child objects |
—— | —— |
[GET] API/Computer/Linux | Get all Linux computers wit basic properties |
[GET] API/Computer/Linux/{ComputerName} | Get A single Linux computer with basic properties |
[GET] API/Computer/Linux/{ComputerName}/Detailed | Get A single Linux computers with hosted child objects |
Maintenance
Route | Description |
---|---|
[POST] API/ComputerMaintenance | Put the specific computer object and all child in maintenance mode |
[POST] API/ObjectMaintenance | Put the specific monitoring object and all child in maintenance mode |
[POST] API/MaintenanceSchedule | Create a new maintenance schedule. SCOM 2016 ONLY |
Object
Route | Description |
---|---|
[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
10 COMMENTS
Scheduled maintenance giving error bad request. it says parameter missing
we got this covered here https://social.technet.microsoft.com/Forums/en-US/36cfaff5-0e5f-4447-8ace-2321b155c29a/scom-api-call-for-scom-2016-not-working?forum=operationsmanagerextensibility
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
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
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
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
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..
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 😀
Hey Martin! Thanks for a great API 🙂
Any plans for implementing “End Maintenance Mode”?
/Regards
David
Thank you David. I am glad you like it. Yes, there’s a plan, but unfortunately without an end date 😉