シンプルな Salesforce と Asana の統合を試みています。多くの機能が動作していますが、ワークスペースへのタグの追加に問題があります。addTag メソッドに関するドキュメントが見つからないので、何が必要かを推測しています。
次の JSON をhttps://app.asana.com/api/1.0/workspaces/WORKSPACEID/tasksに投稿すると:
{"data":{"name":"MyTagName","notes":"Test Notes"}}
タグは Asana で作成されますが、メモと名前フィールドは空白です。もう少し派手にして投稿しようとすると:
{"data":{"name":"MyTagName","notes":"Test Notes","followers":[{"id":"MY_USER_ID"}]}}
私は受け取ります:
{"errors":[{"message":"無効なフィールド: {\"data\":{\"name\":\"MyTagName\",\"notes\":\"Test Notes\",\"フォロワー\":[{\"id\":\"MY_USER_ID\"}]}}"}]}
バックスラッシュは、投稿によってリクエストが変更されていることを意味している可能性があると考えていますが、デバッグ出力には、投稿の前に適切にフォーマットされた json 文字列が表示されます。
サンプルコード:
JSONGenerator jsongen = JSON.createGenerator(false);
jsongen.writeStartObject();
jsongen.writeFieldName('data');
jsongen.writeStartObject();
jsongen.writeStringField('name', 'MyTagName');
jsongen.writeStringField('notes', 'Test Notes');
jsongen.writeFieldName('followers');
jsongen.writeStartArray();
jsongen.writeStartObject();
jsongen.writeStringField('id', 'MY_USER_ID');
jsongen.writeEndObject();
jsongen.writeEndArray();
jsongen.writeEndObject();
jsongen.writeEndObject();
String requestbody = jsongen.getAsString();
HttpRequest req = new HttpRequest();
req.setEndpoint('https://app.asana.com/api/1.0/workspaces/WORKSPACEID/tags');
req.setMethod('POST');
//===Auth header created here - working fine===
req.setBody(requestbody);
Http http = new Http();
HTTPResponse res = http.send(req);
return res.getBody();
どんな助けでも感謝します。JSON と Asana API の使用経験がありません。