Pide tu presupuesto ya!
17th July 2024
¿Está buscando integrar ServiceNow en su flujo de trabajo utilizando su API? Este tutorial lo guiará a través del proceso de configurar una cuenta de desarrollador de ServiceNow, crear una aplicación OAuth y realizar su primera llamada API usando PowerShell.

https://[your-instance-name].service-now.com/login.do
💡 Consejo: asegúrese de incluir login.do al final de la URL para evitar ver una página en blanco.






Selecciona el ID de usuario como mínimo y asegúrese de verificar Sólo acceso al servicio web. Esta opción restringirá a este usuario solo a la API.

Una vez que haya guardado la cuenta de usuario, abra la cuenta de usuario y haga clic en Configurar la clave.

Una vez que haya creado la aplicación OAuth y la cuenta de usuario, debería tener los siguientes valores:
Necesitará estos valores para usarlos en su secuencia de comandos de PowerShell.
En este punto, ahora debería tener una instancia de ServiceNow en funcionamiento para realizar la prueba. Ahora es el momento de consultar la API. Pero primero, debes obtener un token de acceso de OAuth. El token de acceso es lo que utilizará para autenticar todas las solicitudes API futuras.
Abra Visual Studio Code o cualquier IDE con el que esté trabajando y primero defina las variables para cada atributo que necesitará recopilado anteriormente.
$serviceNowInstance = 'your-instance-name'
$apiUrl = "https://$ServiceNowInstance.service-now.com/oauth_token.do"
Aquí, estamos configurando dos variables importantes:
$serviceNowInstance: Esto debe reemplazarse con el nombre real de su instancia de ServiceNow.$apiUrl: Esto construye la URL completa para el punto final del token de OAuth. Estamos usando interpolación de cadenas para incluir el nombre de la instancia en la URL.$oauthclientId = 'your-client-id'
$OAuthClientSecret = 'your-client-secret'
$Username = 'your-username'
$UserPassword = 'your-password'
En esta sección, estamos definiendo nuestras credenciales de OAuth:
$oauthclientId y $OAuthClientSecret: Estos deben reemplazarse con el ID de cliente y el secreto de cliente que obtuvo al crear su aplicación OAuth en ServiceNow.$Username: este es el nombre de usuario de la cuenta de ServiceNow que está utilizando para acceder a la API.$UserPassword: La contraseña de usuario definida al crear el usuario.$params = @{
Uri = $apiUrl
SkipHttpErrorCheck = $true
Method = 'POST'
StatusCodeVariable = 'StatusCode'
Body = @{
grant_type = "password"
client_id = $OAuthClientId
client_secret = $OAuthClientSecret
username = $Username
password = (New-Object PSCredential "user", $UserPassword).GetNetworkCredential().Password
}
}
Aquí, estamos creando una tabla hash. $params que se utilizarán como argumentos para nuestra llamada API:
Uri: Esto está configurado en nuestro $apiUrlespecificando dónde enviamos la solicitud.SkipHttpErrorCheck: Ajustado a $true, esto le indica a PowerShell que no genere automáticamente un error si obtenemos un código de estado que no sea 200. Nos encargaremos de los errores nosotros mismos.Method: Estamos usando ‘POST’ porque enviamos datos al servidor para obtener nuestro token.StatusCodeVariable: Esto almacenará el código de estado HTTP en una variable llamada ‘StatusCode’, que usaremos más adelante para verificar si la solicitud fue exitosa.Body: Esta tabla hash anidada contiene los datos que enviamos al servidor:
grant_type: Estamos utilizando “contraseña” como nuestro tipo de concesión.client_id y client_secret: Estas son nuestras credenciales de aplicación OAuth.username: El nombre de usuario de ServiceNow.password: Estamos extrayendo la contraseña de nuestro SecureString. Este código de apariencia compleja crea un objeto PSCredential temporal y luego extrae la contraseña como texto sin formato.$response = Invoke-RestMethod @params
Esta línea es donde realmente hacemos la llamada API:
Invoke-RestMethod es un cmdlet de PowerShell que envía solicitudes HTTP y HTTPS a servicios web y devuelve datos estructurados.@paramsestamos salpicando nuestros parámetros, esencialmente pasando todos los pares clave-valor en nuestro $params tabla hash como parámetros individuales para Invoke-RestMethod.$response variable.if ($StatusCode -ne 200) {
throw "Failed to generate access token. Error: $($response.error_description)"
}
Después de la solicitud, verificamos el código de estado:
Finalmente, generamos la respuesta. Si tiene éxito, debería contener nuestro token de acceso junto con otros detalles como el tipo de token y el tiempo de vencimiento.

Ahora analicemos el código para realizar una llamada API:
$serviceNowInstance = 'your-instance-name'
$endpoint = 'table/incident'
$uri = "<https://$ServiceNowInstance.service-now.com/api/now/$Endpoint>"
$headers = @{
'Authorization' = "Bearer $($response.access_token)"
}
$result = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$result.result | Format-Table
Esto es lo que está pasando:
$headers tabla hash con nuestro token de autorización. El prefijo “Portador” forma parte de la especificación OAuth 2.0.Invoke-RestMethod De nuevo, pero esta vez con diferentes parámetros:
Uri: La URL a la que enviamos la solicitud.Headers: Nuestro encabezado de autorización.Method: Estamos usando ‘Obtener’ para recuperar datos.$result.$result.result a Format-Table para mostrar los datos en un formato de tabla ordenado.Este Invoke-RestMethod La llamada es más simple que la anterior porque no enviamos un cuerpo con nuestra solicitud, solo recuperamos datos.

Cuando su token de acceso caduque, puede usar un token de actualización para obtener uno nuevo sin necesidad de que el usuario inicie sesión nuevamente:
$params = @{
Uri = $apiUrl
SkipHttpErrorCheck = $true
Method = 'POST'
StatusCodeVariable = 'StatusCode'
Body = @{
grant_type = "refresh_token"
refresh_token = $response.refresh_token
}
}
$newTokenResponse = Invoke-RestMethod @params
if ($StatusCode -ne 200) {
throw "Failed to refresh access token. Error: $($newTokenResponse.error_description)"
}
$newTokenResponse
Ahora configuró una cuenta de desarrollador de ServiceNow, creó una aplicación OAuth y realizó su primera llamada API. Esto es solo el comienzo de lo que puede hacer con la API ServiceNow. Experimente con diferentes puntos finales y comience a integrar ServiceNow en sus flujos de trabajo.
Para obtener información más detallada, consulte el documentación oficial de la API de ServiceNow.
¡Feliz codificación!
Leave a comment