아키타입을 설정하고 계신 건가요? 나중에 요청을 보내실 때 실제 전송 중인 요청을 포함해 주시면 도움을 드리기 훨씬 쉬워집니다.
다음 예제는 저에게 잘 작동합니다:
curl https://$DISCOURSE_HOSTNAME/posts \
-H "api-key: $DISCOURSE_API_KEY" \
--data 'title=Testing PM creation&archetype=private_message&target_recipients=user1,user2' \
--data-urlencode 'raw=PM body, long enough to meet site rules & may be complex ♥'
all_users API 키를 사용 중이라면 api-username도 지정해야 합니다.
고맙습니다, 이제 해결되었습니다! 아니요, API 문서에 archetype가 필수 항목으로 명시되어 있지 않았기 때문이죠(더군다나 target_usernames처럼 "개인 메시지에 필수"라고 적혀 있지도 않고, 이 필드의 용도에 대한 설명도 없어서) 저는 이 부분을 건드리지 않았습니다.
어쨌든 이제 정상적으로 작동합니다. 같은 문제를 겪는 분들을 위해(특히 POST를 사용하는 경우) 제 요청에서 정상 작동한 JSON 인코딩된 본문 요소들을 아래에 정리해 둡니다:
| 키 |
값 |
| raw |
메시지 원문 텍스트 |
| title |
메시지/스레드 제목 |
| target_usernames |
쉼표로 구분된 사용자 이름 목록 |
| archetype |
문자열 private_message |
이것은 /posts.json으로 POST 요청의 본문으로 전송되며, 다음과 같은 사용자 정의 헤더 필드가 포함됩니다.
| 키 |
값 |
| Content-Type |
application/json; charset=UTF-8 |
| Api-Key |
키 데이터 |
| Api-Username |
사용자 이름 |