Hello everyone,
I have trouble with the API by using powershell script. I would like to add devices by using the API, but when i make the post request, it doesn’t work. When i use the get, it works. I don’t know what is wrong.
I have this error :
Invoke-RestMethod : {“error”:“not_found”}
Au caractère C:\Users\SPASH\Downloads\test.ps1:54 : 13
- $response = Invoke-RestMethod -Uri $firezoneApiUrl -Method Post -Head …
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidOperation : (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
- FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
If you can help me it would be great. Thanks in advance.
Please find below the powershell script i use (sorry commentary are in French ) :
Le token d’authentification
$token = “blabla”
URL de l’API Firezone (remplacez par l’URL de votre instance)
$firezoneApiUrl = “https://myfirezone.com/v0/devices”
Générer une clé privée et l’enregistrer dans un fichier
$privateKeyPath = “C:\Script\privatekey”
wg genkey | Out-File -Encoding ASCII $privateKeyPath
Lire la clé privée
$privateKey = Get-Content -Path $privateKeyPath
Dériver la clé publique à partir de la clé privée
$publicKey = $privateKey | wg pubkey
Enregistrer la clé publique dans un fichier
$publicKeyPath = “C:\Script\publickey”
$publicKey | Out-File -Encoding ASCII $publicKeyPath
Données du nouvel appareil à ajouter (sans l’adresse IP pour que Firezone l’attribue automatiquement)
$deviceData = @{
‘device’ = @{
‘name’ = ‘DeviceName’
‘use_default_allowed_ips’= ‘true’
‘use_default_dns’ = ‘true’
‘use_default_endpoint’ = ‘true’
‘use_default_mtu’ = ‘true’
‘use_default_persistent_keepalive’ = ‘true’
‘user_id’ = ‘myidfirezone’
‘public_key’ = $publickey
‘preshared_key’= $publicKey
‘ipv4’=‘’
‘description’=‘test’
‘endpoint’=‘’
}
}
Convertir les données en JSON
$deviceJson = $deviceData | ConvertTo-Json
Write-Host $deviceJson
Préparer l’en-tête avec le token d’authentification
$headers = @{
“Authorization” = “Bearer $token”
“Content-Type” = “application/json”
}
Envoyer la requête POST pour ajouter le device
$response = Invoke-RestMethod -Uri $firezoneApiUrl -Method Post -Headers $headers -Body $deviceJson
Afficher la réponse
$response
Thanks for your help.