{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"579bd1b7-0a3f-4836-9820-86effe94fe0b","name":"REST & GraphQL API","description":"Welcome to MemberSuite REST & GraphQL API, at membersuite we appreciate the collaboration of third party developers and integrators in our quest to enhance our already comprehensive suite of collaboration products.\r\n\r\n# Overview\r\nThe Membersuite Engineering Team brings you a comprehensive look at your options of integration with Membersuite. These include GraphQL, REST API options, Single Sign On, and Reverse Single Sign on. \r\n\r\n# Authentication\r\nDetails on Authentications using OAuth 2.0 are listed in the Auth Token section. A valid JWT Auth Token is the prerequisite to obtain any data via REST or GraphQL\r\n\r\n# GraphQL\r\nThe most commonly used GraphQL queries are listed in this documentation for your reference. The beauty of GraphQL is being able to pull exactly the data you want no more, no less, and if you change your mind down the road the data should be easily retrievable.\r\n\r\n# REST API Services\r\nIn cases, where there is more data to be had or full objects that are needed we also have the option to query using MSQL to our REST service. You will also have the option to call basic CRUD calls for much of the important information that you need.\r\n\r\n# Single Sign On\r\nSingle Sign On integrators will want to peruse this area of the documentation for specific instructions and calls related to SSO along with the aforementioned OAuth 2 jwt token generation.\r\n\r\n# JWT SSO - NEW !\r\nSupport for OAuth 2 token SSO is here ! New and Improved ! No need to use SOAP token generation any longer. \r\nThe JWT SSO call will be listed in this area. A cURL will be provided for testing. Once you are done you be able to generate a url that will allow you to login seamlessly into the portal. Note: turn off automatic redirects and look in the location response header for the url. Also, keep in mind that the status code of succes is 302.\r\n\r\nUserpool, TenantId, and ClientId will have to be requested of an administrator in order to generate a valid token for your user if you want to integrate a third party CMS. \r\nThe username, password, user pool, and client id of a current user will generate the token needed to pass to the JWTSSO/*TenantId* endpoint to generate your login url programmatically. \r\n\r\n# Reverse SSO\r\n\r\n\tReverse SSO (Start on MS, Go To Third Party Site)\r\n+ User is sent from MS to website with 'TokenGUID' query string parameter\r\n+ Third party hits REST API endpoint \"GET regularSSO\" with TokenGUID and PartitionKey as query string parameters (https://rest.membersuite.com/platform/v2/regularSSO)\r\n+ Valid TokenGUID will return Token String value\r\n+ Third party uses Token String value as Authorization Header when hitting REST API endpoint \"GET whoAmI\" (https://rest.membersuite.com/platform/v2/whoami )\r\n+ Valid GET call will return information about the Portal User that generated the original Token String\r\n+ Token String should use \"AuthToken\" schema, which should be included when making calls (i.e. Authorization : AuthToken SyDFOuX+t35sksGHnswBHbB...)\r\n+ Third party uses info returned from \"GET whoAmI\" (Individual GUID) to create SOAP API search in order to return the required criteria for Third party access privileges\r\n+ Searches can be built using our SOAP API SDKs, .NET and PHP supported (https://github.com/membersuite)\r\n+ AssociationID, PartitionKey, AccessKeyID, & SecretAccessKey are the pieces needed for this implementation. If the Third party needs to generate Tokens (for SSO functionality into MemberSuite), the SigningCertificateID and SigningCertificate.XML file is also required.\r\n\r\n# Refer to RegularSSO Post for generation of Token Guids\r\n\r\n# Another Method\r\n+\tNavigate to an Individual 360 within the MemberSuite Console\r\n+\tUnder the Security and Auditing Tab, there is a section called \"What would you like to do?\r\n+\tUnder this section, click \"Log into MRP as this User\"\r\n+\tA URL should show up in the address bar that looks similar to this: \"https://xxxxx.users.membersuite.com/auth/sso?tokenGUID=00d9c818-3306-4eb8-8855-29a0ddd946a4&nextUrl=&returnText=&logoutUrl=\"\r\n\r\n*\tThe tokenGUID query string value within this URL is a valid TokenGUID for the user that you attempted to log in as. Please note, this token GUID is only valid for 5 minutes. Any longer and you'll have to generate a new value following these same steps.\r\n\r\n\t\r\n# Reset Password SSO\r\nAs part of your SSO solution you may want to redirect users in a RESET REQUIRED status to the reset password page. For that you need to refer to the Reset Password SSO sample call. YOU WILL REQUIRE THE ASSOCIATION ID of your Association from MemberSuite.\r\nThis call allows you to pass:\r\n+ NextUrl which will be automatically redirected to after a user goes through the reset process\r\n+ This nextUrl will be passed the tokenGUID if you wish the user to have single sign on into multiple third party partner sites. \r\n+ isResetPassword=true or false. If the isResetPassword is set to true the user will be redirected to the Reset page, if the it is set to false the user will be redirected to the forgot password page.\r\n\r\nTo obtain the appropriate url, make a REST call to the isResetPassword SSO endpoint which is a bit lower down.\r\nThe url that is generated from posting nextUrl, isResetPassword, AssociationId, etc. will be in the following format:\r\n* Forgot Password Page\r\nhttps://xxxxxx.users.membersuite.com/auth/portal-reset-password?nextUrl=aHR0cHM6Ly93d3cubGF0bG1lcy5jb20vYnJlYWtpbmcvYW1hemluZy1uZXctdGVjaC0x&returnText=test&logoutUrl=test\r\nOR\r\n* Reset Password Page\r\nhttps://xxxxxx.users.membersuite.com/auth/portal-reset-password?isReset=true&nextUrl=aHR0cHM6Ly93d3cubGF0bG1lcy5jb20vYnJlYWtpbmcvYW1hemluZy1uZXctdGVjaC0x&returnText=test&logoutUrl=test\r\n\r\nNote: the nextUrl passed will be base 64 encoded and translated by membersuite to redirect the user. \r\n\r\n# Login SSO\r\n\r\nAs part of your SSO solution you may want to redirect users to the create an account page. For that you need to refer to the isSignUp SSO sample call. YOU WILL REQUIRE THE ASSOCIATION ID of your Association from MemberSuite.\r\nThis call allows you to pass:\r\n+ NextUrl which will be automatically redirected to after a user goes through the reset process\r\n+ This nextUrl will be passed the tokenGUID if you wish the user to have single sign on into multiple third party partner sites. \r\n+ isSignUp=true or false. If the isSignUp is set to true the user will be redirected to the Sign Up Page, if the it is set to false the user will be redirected to the Customizable Sign In page.\r\n\r\nTo obtain the appropriate url, make a REST call to the isSignUp SSO endpoint which isa bit lower down the page.\r\nThe url that is generated from posting nextUrl, isResetPassword, AssociationId, etc. will be in the following format:\r\n* Sign In Page\r\nhttps://xxxxxx.users.membersuite.com/auth/portal-login?nextUrl=aHR0cHM6Ly93d3cubGF0bG1lcy5jb20vYnJlYWtpbmcvYW1hemluZy1uZXctdGVjaC0x&returnText=test&logoutUrl=test\r\nOR\r\n* Sign Up Page\r\nhttps://xxxxxx.users.membersuite.com/auth/portal-login?isSignUp=true&nextUrl=aHR0cHM6Ly93d3cubGF0bG1lcy5jb20vYnJlYWtpbmcvYW1hemluZy1uZXctdGVjaC0x&returnText=test&logoutUrl=test\r\n\r\nNote: the nextUrl passed will be base 64 encoded and translated by membersuite to redirect the user.\r\n\r\n# Profile Retrieval\r\n\r\nSteps:\r\n* Obtain valid jwt token using username, password, clientid, and userpoolId. Look in the # Auth Tokens area for more requests. \r\n* Make a Graph QL call to Get Profile Details to retrieve the image id, use the association call to retrieve the association id (does not change dynamically and can be hard coded if necessary)\r\n* Finally make a call to Images.membersuite.com using the sample provided below in the Retrieve Profile Image folder\r\n\r\nSample flow listed in Profile Retrieval Folder\r\n\r\n\r\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"30575908","collectionId":"579bd1b7-0a3f-4836-9820-86effe94fe0b","publishedId":"2s9YR9YYSP","public":true,"publicUrl":"https://api.membersuite.com","privateUrl":"https://go.postman.co/documentation/30575908-579bd1b7-0a3f-4836-9820-86effe94fe0b","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2023-10-19T01:48:48.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/bde0040e9ee201562b3524a7a4e1c21e3bedacf83811ce4d807953eab2dee444","favicon":"https://res.cloudinary.com/postman/image/upload/v1697672908/team/bh7dqmbzbi2io6qgqvto.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://api.membersuite.com/view/metadata/2s9YR9YYSP"}