Skip to content

REST APIs

Modern systems increasingly expose their functionality through REST APIs, allowing administrators and developers to interact with services over HTTP using predictable, standardized operations. PowerShell provides a rich set of tools for working with RESTful endpoints, enabling you to retrieve data, send structured requests, authenticate securely, and integrate external services into your automation workflows.

This section explains what REST APIs are, how PowerShell communicates with them, and how to construct reliable, maintainable API interactions using clear and formal techniques.


1. Understanding REST APIs

A REST API (Representational State Transfer) is an architectural style for building web services. REST APIs expose resources—such as users, devices, tickets, or configuration objects—through URLs, and they use standard HTTP methods to operate on those resources.

The most common HTTP methods are:

  • GET — retrieve data
  • POST — create a new resource
  • PUT — replace an existing resource
  • PATCH — update part of a resource
  • DELETE — remove a resource

REST APIs typically exchange data in JSON format, which PowerShell handles natively.

A REST endpoint might look like:

https://api.example.com/v1/users

PowerShell can interact with this endpoint using built‑in cmdlets.


2. PowerShell Cmdlets for REST Communication

PowerShell provides two primary cmdlets for working with REST APIs:

  • Invoke-WebRequest — returns raw HTTP responses, including headers and content
  • Invoke-RestMethod — parses JSON responses automatically and returns PowerShell objects

For most administrative tasks, Invoke-RestMethod is the preferred choice because it converts JSON into structured objects without additional parsing.


3. Retrieving Data from a REST API

The simplest interaction with a REST API is a GET request.

Example: retrieving data

$response = Invoke-RestMethod -Uri "https://api.example.com/v1/users"

In this example:

  • PowerShell sends an HTTP GET request to the API.
  • The API returns JSON data.
  • Invoke-RestMethod converts the JSON into PowerShell objects.
  • $response now contains structured data you can inspect, filter, and manipulate.

For example:

$response[0].name
$response[0].email

This allows you to work with API data as if it were native PowerShell objects.


4. Sending Data to a REST API

Many APIs require you to send data in JSON format. PowerShell can convert objects into JSON using ConvertTo-Json.

Example: creating a new resource with POST

$body = @{
    name  = "John"
    email = "john@example.com"
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://api.example.com/v1/users" `
                  -Method Post `
                  -Body $body `
                  -ContentType "application/json"

Here:

  • A PowerShell hashtable is converted into JSON.
  • The JSON is sent in the request body.
  • The API interprets the request as a new user creation.
  • The response typically includes the newly created resource.

5. Updating Existing Resources

REST APIs often allow updates using PUT or PATCH.

Example: updating a resource

$update = @{
    email = "newaddress@example.com"
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://api.example.com/v1/users/42" `
                  -Method Patch `
                  -Body $update `
                  -ContentType "application/json"

This updates only the specified fields of the user with ID 42.


6. Deleting Resources

To remove a resource, APIs typically use the DELETE method.

Example: deleting a resource

Invoke-RestMethod -Uri "https://api.example.com/v1/users/42" -Method Delete

The API processes the deletion and returns a confirmation or an empty response.


7. Authentication and Security

Most APIs require authentication. Common methods include:

API Keys

Invoke-RestMethod -Uri "https://api.example.com/v1/data" `
                  -Headers @{ "X-API-Key" = "your-key-here" }

Bearer Tokens (OAuth2)

Invoke-RestMethod -Uri "https://api.example.com/v1/data" `
                  -Headers @{ Authorization = "Bearer $token" }

Basic Authentication

$cred = Get-Credential
Invoke-RestMethod -Uri "https://api.example.com/v1/data" -Credential $cred

The authentication method depends on the API’s design. PowerShell supports all common mechanisms.


8. Handling Errors and Responses

REST APIs return HTTP status codes that indicate success or failure.

Examples:

  • 200 OK — request succeeded
  • 201 Created — resource created
  • 400 Bad Request — invalid input
  • 401 Unauthorized — authentication required
  • 404 Not Found — resource does not exist
  • 500 Internal Server Error — server‑side failure

PowerShell exposes these errors through exceptions.

Example: handling API errors

try {
    Invoke-RestMethod -Uri "https://api.example.com/v1/users/9999"
}
catch {
    Write-Host "The API returned an error:"
    Write-Host $_.Exception.Message
}

This allows you to build robust automation that responds gracefully to API failures.


9. Practical Administrative Scenarios

Querying a monitoring system

$metrics = Invoke-RestMethod -Uri "https://monitoring.example.com/api/cpu"
$metrics.usage

Automating ticket creation

$ticket = @{
    title = "Server outage"
    body  = "The web server is not responding."
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://tickets.example.com/api/issues" `
                  -Method Post `
                  -Body $ticket `
                  -ContentType "application/json"

Retrieving cloud resource information

Invoke-RestMethod -Uri "https://cloud.example.com/api/v1/instances" `
                  -Headers @{ Authorization = "Bearer $token" }

REST APIs allow PowerShell to integrate with virtually any modern service.


10. Summary

REST APIs provide a universal interface for interacting with modern systems and services. PowerShell enhances this by offering:

  • Native JSON parsing and serialization
  • Simple, consistent cmdlets for HTTP communication
  • Support for all major authentication methods
  • Structured error handling
  • The ability to integrate external services into automation workflows

By mastering REST API interactions, you extend PowerShell beyond the local system and gain the ability to automate cloud services, monitoring platforms, ticketing systems, and virtually any modern application that exposes an HTTP interface.