Ich versuche, ein Webhook-Abonnement zu registrieren, um meine Anwendung zu benachrichtigen, wenn ein Arbeitselement bearbeitet wird. Ich dachte, ich würde mit einem workitem.created
Webhook beginnen. Allerdings - ich bekomme die gleiche Fehlerreaktion, egal welches Abonnement ich versuche zu registrieren, einschließlich des Beispiels aus der Dokumentation. Hier ist mein Beispiel:Ich kann über die REST-API kein VSTS-Webhook-Abonnement erstellen
POST:
https://{my-app}.visualstudio.com/DefaultCollection/_apis/hooks/subscriptions/?api-version=1.0
Headers:
Authorization:Bearer my-auth-token
Content-Type: application/json
Körper:
{
"publisherId": "tfs",
"eventType": "build.complete",
"resourceVersion": "1.0-preview.1",
"consumerId": "webHooks",
"consumerActionId": "httpRequest",
"publisherInputs": {
"buildStatus": "Failed",
"definitionName": "MyWebSite CI",
"projectId": "my-project-id"
},
"consumerInputs": {
"url": "https://requestb.in/14xw4741"
}
}
Die Fehlerreaktion erhalte ich:
{
"$id": "1",
"innerException": null,
"message": "TF400898: An Internal Error Occurred. Activity Id: ecb81b36-4a77-4ae8-9d13-1a5dbb473c8a.",
"typeName": "System.Exception, mscorlib",
"typeKey": "Exception",
"errorCode": 0,
"eventId": 0
}
Ich habe versucht, mehr API-Versionen:
api-version=4.1-preview
api-version=1.0
api-version=2.0
api-version=3.0
ich auch mehr resourceVersion
s versucht.
Ich habe folgenden Auth-Token -umfang: vso.dashboards
, vso.identity
, vso.notification_manage
, vso.work_full
, vso.workitemsearch
Beifall für die Antwort ... bekomme ich nur ein Zeichen in Seite zurück ... nur um zu bestätigen, ich bin kodiert meine oAuth Zugriffstoken (PAT) auf eine Base64-Zeichenfolge und Hinzufügen der Kopfzeile: 'Autorisierung: Basic Base-64-Token-here' Können wir versuchen, den Code sprachunabhängig zu halten? Ich benutze C# nicht - also lass uns einfach in Bezug auf REST-APIs sprechen :) Volle Antwort hier: [https://developercommunity.visualstudio.com/content/problem/149872/create-webhook-with-workitemcreated-eventtype -und.html] (https://developercommunity.visualstudio.com/content/problem/149872/create-webhook-with-workitemcreated-eventtype-and.html) – jpsear
@jpsear 'Autorisierung: Basic base-64-token-here 'arbeitet auf meiner Seite. Bitte stellen Sie sicher, dass Sie dort die richtigen Base64-Kodierungen haben. Eigentlich müssen Sie nur die PAT als Passwort unter dem Tab "Authorization" in Postman einfügen, es wird das Token automatisch in Postman codieren. Eine andere Möglichkeit besteht darin, das Token in anderen Tools zu codieren (z. B. können Sie das '$ base64AuthInfo' aus dem PS-Beispiel ausgeben), dann kopieren und fügen Sie das' base-64-token' in den Header ein. Beides funktioniert für mich. Details finden Sie in der entsprechenden Antwort. –
Okay - ich denke ich folge dir jetzt, der PAT ist eigentlich anders als ein JWT. Ich habe meinen Base64-codierten JWT als Basic-Authentifizierungs-Token eingefügt. Ich habe es geschafft, es mit einer PAT zu erstellen, die von dem Konto des Benutzers generiert wird. Allerdings - das ist überhaupt nicht ideal. Kann ich zumindest eine PAT programmatisch erzeugen? Ich möchte nicht, dass der Benutzer Token usw. verwalten muss ... – jpsear