Refsmmat Posted August 21 Share Posted August 21 Hi, I am currently trying to create a message using the https://invisioncommunity.com/developers/rest-api?endpoint=core/messages/POSTindex api. The "to" parameter is stated to be of type "array". I only need to pass one recipient there, but regardles of how I format the paramater (when testing the api in Postman), I always get   "errorCode": "1C374/3",   "errorMessage": "INVALID_RECIPIENT" back. I tried to give the user id just as number 2, or as json formated array [2], or a string in json formated array ["2"]. Nothing seems to work. Am I doing something obvious wrong or is there a problem with this api parameter? The documentation say, that "1C374/3" means that the paramater haven't been given at all.  Creating forum topic, posts, download comments a.s.o. works fine via the api, I just struggle with sending messages.  Regards, Tom. Link to comment Share on other sites More sharing options...
Daniel F Posted August 21 Share Posted August 21 [2] should work fine. Can you post your whole request?  Here's a working example code https://invisioncommunity.com/forums/topic/473252-api-rest-apicoremessages/?do=findComment&comment=2937939 Link to comment Share on other sites More sharing options...
Refsmmat Posted August 21 Author Share Posted August 21 This is what Postman creates as CURL command line curl --location 'https://xxx/api/core/messages/?key=xxx' \ --header 'Cookie: PHPSESSID=0s52vp09q9qdffb2ahi83adq4c; ips4_IPSSessionFront=84gk38i1l4cra3jn48kljjevol; ips4_clearAutosave=newContentItem-forums%2Fforums-147' \ --form 'from="4"' \ --form 'to="[2]"' \ --form 'title="test title"' \ --form 'body="test body"' or as PHP code <?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://xxx/api/core/messages/?key=xxx', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('from' => '4','to' => '[2]','title' => 'test title','body' => 'test body'), CURLOPT_HTTPHEADER => array( 'Cookie: PHPSESSID=0s52vp09q9qdffb2ahi83adq4c; ips4_IPSSessionFront=84gk38i1l4cra3jn48kljjevol; ips4_clearAutosave=newContentItem-forums%2Fforums-147' ), )); $response = curl_exec($curl); curl_close($curl); echo $response; Â Is the problem maybe that Postman paases the parameter as strings, enclosed in ' ' ? For the from parameter, and all the other apis I have already used that always worked. Â In my application I use a wrapper around CURL which creates this request (with all parameters in the url) which also fails with the same error: ~POST /api/core/messages/?body=Ich%20bin%20ein%20Body&from=4&title=Ich%20bin%20ein%20Subject&to=%5B2%5D HTTP/2 ~Host: xxx ~authorization: Basic xxx ~accept: */* ~content-type: multipart/form-data ~user-agent: SwyxIPSIntegration/1.0.0 ~content-length: 0 Â Â Link to comment Share on other sites More sharing options...
Refsmmat Posted August 21 Author Share Posted August 21 (edited) Using Postman and also passing all parameters within the URL doesn't change the outcome, even without escaping the [ ] curl --location --globoff --request POST 'https://xxx/api/core/messages/?key=xxx&from=4&body=Ich%20bin%20ein%20Body&title=Ich%20bin%20ein%20Subject&to=[2]' --header 'Cookie: PHPSESSID=0s52vp09q9qdffb2ahi83adq4c; ips4_IPSSessionFront=84gk38i1l4cra3jn48kljjevol; ips4_clearAutosave=newContentItem-forums%2Fforums-147' Â Edited August 21 by Refsmmat Link to comment Share on other sites More sharing options...
Refsmmat Posted August 22 Author Share Posted August 22 Would you (or a colleague of yours) be able to provide a CURL command line that generates a message? I have spent a lot of time now with trying to get the "to" parameter accepted by the IPS REST API, but without any success at all. Â This is how it should work, according to your documentation: curl --location "https://xxx/api/core/messages/?key=xxx" --header "Content-Type: multipart/form-data" --header "Host: xxx" --header "accept: */*" --form "from=4" --form "to=[2]" --form "title=test title" --form "body=test body" Â But all I get back is this: { "errorCode": "1C374\/3", "errorMessage": "INVALID_RECIPIENT" } Â This is the REST API log in the ACP for the above request: POST core/messages/ Request Data { "key": "xxx", "from": "4", "to": "[2]", "title": "test title", "body": "test body" } Response { "errorCode": "1C374\/3", "errorMessage": "INVALID_RECIPIENT" } Â Link to comment Share on other sites More sharing options...
Solution Stuart Silvester Posted August 22 Solution Share Posted August 22 Hi, It's an HTTP POST array, "to[]=2" should work for you. Link to comment Share on other sites More sharing options...
Refsmmat Posted August 23 Author Share Posted August 23 Perfect, that did the trick. Thanks a million 🙂  Link to comment Share on other sites More sharing options...
Recommended Posts