Introduction

The Status API provides a RESTful interface for services and applications to access current status information. This document describes the resources exposed by the API, as well as requirement for data formats and authentication. If you have questions, please contact the Engineering team.

Data Formats

All API requests and responses are formatted as JSON (application/json), except for RSS feeds.

Dates are ISO 8601 formatted (e.g. 2015-07-05T22:16:18Z)

Sample API requests and responses are provided for each endpoint. The requests are formatted for use with curl, an open source command line HTTP client. Alternatively you can also use a browser extension such as Postman for prototyping.

Authentication

Anonymous GET operations are allowed against all API endpoints with the exception of Users, UserGroups, and Logs.

All POST/PUT/DELETE operations require authentication with varying levels of authorization, which are specified in the documentation for each endpoint. Authenticated requests require an OAuth access token corresponding to a privileged account. The process for requesting and using an OAuth access token is described below.

Requesting an API Access Token

Access tokens can be requested on behalf of a user by posting the user's username and password along with your client ID and secret to https://status.uits.iu.edu/connect/token.

Access tokens are granted on the basis of a particular client application. To request client credentials, please contact the Engineering team.

The client ID and Secret are presented in the form of a Basic Authentication header. Briefly, the values are concatenated in the form of id:secret and the result is Base64-encoded.

The request body is an x-www-form-urlencoded string consisting of the following parameters. Remember that all parameters must be URL-encoded.

  • grant_type=password
  • scope = api
  • username = USERNAME
  • password = PASSWORD

Example Request

POST https://status.uits.iu.edu/connect/token HTTP/1.1
Authorization: Basic MUp1NENJeVFvM1RKYXBqZG1xxx=
Content-Type: application/x-www-form-urlencoded
 
grant_type=password&scope=api&username=USERNAME&password=PASSWORD

Example Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
 
{"access_token":"aac4f217aeb287f9ba2f37be45xxx","expires_in":3600,"token_type":"Bearer"}

Using an API Access Token

Requests are authenticated by including the access token as an Bearer Authentication header

Example Request

GET https://api.status.iu.edu/User/Me HTTP/1.1
Authorization: Bearer aac4f217aeb287f9ba2f37be45xxx

Example Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
 
{"Name":"John Hoerr","Role":"Admin","Email":"jhoerr@iu.edu"}

Notices

A notice provides information about planned, ongoing, or resolved interruptions in one or more IT services.

APIDescription
GET
Notices

Get information about all published notices

GET
Notices/{id}

Get information about a single notice

GET
Notices/Search

Search for notices matching specified criteria. All query parameters are optional; if none are specified the resulting collection will represent all published notices.

POST
Notices

Create a new notice

PUT
Notices/{id}

Update an existing notice

DELETE
Notices/{id}

Delete an existing notice

Notes

A collection of notes for a given notice. A note is specified as either external or internal. External notes are viewable publicly, whereas internal notes are only viewable by authenticated users with appropriate permissions.

APIDescription
GET
Notices/{id}/Notes

Get all notice notes for a notice. If the user is an administrator, auditor, or editor both internal and external notes are returned. Otherwise only external notes are returned.

POST
Notices/{id}/Notes

Add a new note

PUT
Notices/{id}/Notes/{noteId}

Update an existing note

DELETE
Notices/{id}/Notes/{noteId}

Delete an existing note

Services

Services generally correspond to user-facing or middleware enterprise applications, or hardware infrastructure. Most Services are available on all Campuses, but some are not, particularly those that might deal with hardware infrastructure.

APIDescription
GET
Services

No documentation available.

GET
Services/{id}

Get a single service.

GET
Services/{id}/Notices

Get current notices, and current dependency notices, for a single service

GET
Services

Get all active services.

POST
Services

Create a new service

PUT
Services/{id}

Update an existing service

DELETE
Services/{id}

Delete an existing service

Service Dependencies

Dependencies allow the Services that a Service is dependent upon to be specified, which may themselves have further Dependencies. This allows the discovery of Notices that will affect this Service due to the dependency.

APIDescription
GET
Services/{id}/Consumers

Get the consumers of a Service. These are the the services that depend on this Service to function properly.

GET
Services/{id}/Dependencies

Get the dependencies for a Service. These are the services upon which this Service depends to function properly.

POST
Services/{id}/Dependencies

Add a Service dependency

DELETE
Services/{id}/Dependencies/{dependencyId}

Delete a Service dependency

Service Groups

Service groups combine like services by their function and intended use

APIDescription
GET
ServiceGroups

Get all service groups

GET
ServiceGroups/{id}

Get a single service group

POST
ServiceGroups

Create a new service group

PUT
ServiceGroups/{id}

Update an existing service group

DELETE
ServiceGroups/{id}

Delete an existing service group

Campuses

A Campus represents a physical location that can be served by a Service. Most Services will be available on all Campuses, but some are Campus-specific. Similarly, a Notice may or may not apply to all Campuses served by a Service. For example, local network service may be affected by a campus-specific power outage.

APIDescription
GET
Campuses

Get all Campuses

GET
Campuses/{id}

Get a single Campus

POST
Campuses

Add a new Campus

PUT
Campuses/{id}

Update an existing Campus

DELETE
Campuses/{id}

Delete an existing Campus

Standard Maintenance Windows

Maintenance windows are periods of time during which a service may be unavailable due to planned updates, patches, or other maintenance. These should only be interpreted as guides; actual planned outages for a service will be detailed in a notice.

APIDescription
GET
MaintenanceWindows

Get all maintenance windows

GET
MaintenanceWindows/{id}

Get a single maintenance window

POST
MaintenanceWindows

Create a new maintenance window

PUT
MaintenanceWindows/{id}

Update an existing maintenance window

DELETE
MaintenanceWindows/{id}

Delete an existing maintenance window

Users

APIDescription
GET
Users

Get information about all users

GET
Users/Me

Get information about the currently logged-in user.

GET
Users/{id}

Get information about a single user

POST
Users

Creates a user with a specified role

PUT
Users/{id}

Update a user

DELETE
Users/{id}

Delete a user

User Groups

A UserGroup represents of group of users. This allows the discovery of other users in a group if the user group of a user is known. Each user may only be in one group.

APIDescription
GET
UserGroups

Get all user groups

GET
UserGroups/{id}

Get a single user group

POST
UserGroups

Add a new user group

PUT
UserGroups/{id}

Update an existing user group

DELETE
UserGroups/{id}

Delete an existing user group

Logs

Logs correspond to a history of changes to the state of the application over time. Logs are available for campuses, notices, service groups, services, maintenance windows, notice notes, user groups, and application users.

APIDescription
GET
Logs

Get all logs, or a set of logs of a particular type, within a specificed date/time range. If no date/time range is specified, logs will be returned for the previous week. Responses are paged; use the 'page' and 'maxItems' fields to iterate through the log set.

GET
Logs/{logType}/{id}

Get all logs for a specified item type and id within a specificed date/time range. If no date/time range is specified, logs will be returned for the previous week. Responses are paged; use the 'page' and 'maxItems' fields to iterate through the log set.

Error

APIDescription
GET
Error

No documentation available.