如何在Freshservice中更新变更请求的Planning字段?API脚本求助
如何在Freshservice中更新Planning字段?
你遇到的问题可以通过修正脚本中的认证逻辑、JSON序列化深度和端点参数来解决,具体内容如下:
关键问题修正
- 认证格式错误:Freshservice的Basic认证要求将API Key作为用户名,密码部分固定填
x,再对{API_KEY}:x的字符串做Base64编码,而非直接编码API Key。 - JSON序列化深度不足:PowerShell的
ConvertTo-Json默认深度为2,你的嵌套结构有3层,必须指定-Depth 3防止结构被截断。 - 端点参数替换:确保把端点中的
{id}替换为实际的变更请求ID,正确端点是/api/v2/changes/{id},change_requests会导致404错误。
修正后的脚本
# 设置API密钥和端点URL,替换{changeId}为实际变更请求ID $apiKey = "your_api_key_here" $changeId = "123" # 替换成你的变更请求ID $endpoint = "https://domain.freshservice.com/api/v2/changes/$changeId" # 构造正确的认证头 $authString = "{0}:x" -f $apiKey $authBytes = [System.Text.Encoding]::ASCII.GetBytes($authString) $authBase64 = [System.Convert]::ToBase64String($authBytes) $headers = @{ "Authorization" = "Basic $authBase64" } # 构造更新数据并指定JSON序列化深度 $newData = @{ "change_request" = @{ "planning" = @{ "reason_for_change" = "Test change updation" # 可添加其他Planning字段,如implementation_start_date、implementation_end_date等 } } } | ConvertTo-Json -Depth 3 # 发送请求并捕获结果 try { $response = Invoke-RestMethod -Method Put -Uri $endpoint -Headers $headers -ContentType "application/json" -Body $newData Write-Host "更新成功,响应内容:" $response | ConvertTo-Json -Depth 10 } catch { Write-Host "更新失败,错误信息:" $_.Exception.Message if ($_.ErrorDetails) { $_.ErrorDetails.Message } }
额外排查点
- 确认变更请求的状态是否允许修改Planning字段(部分状态下字段会被锁定)。
- 可以在Freshservice后台的API调试工具中测试请求,验证字段名和结构是否匹配。
内容的提问来源于stack exchange,提问作者Roshin Raphel
相关产品推荐
相关产品推荐

