Recent Content
How to determine if a given node is visible to the public?
Hello! I am trying to figure out if it's possible, via API, to determine if a given node is visible to the public. E.g. is the "read posts" permission granted by default on that node. (which I suppose isn't a FULL check of the whole permissions tree but probably adequate for our needs) I've found that the roles collection will give you the list of roles for the node (https://developer.khoros.com/khoroscommunitydevdocs/docs/role-api-support#roles-collection-constraint-combinations ) - but that isn't actually helpful for figuring out what the permissions are, especially the DEFAULT permissions. I've also found the coreNode.permissions.hasPermission (https://developer.khoros.com/khoroscommunitydevdocs/reference/permissionshaspermissionpermission_identifier) call - but I think this can only be used to check if the user in context has a specific permission, not whether or not a node has a certain default permission. (I'm not actually a developer / won't be the one developing this, just trying to determine if a specific enhancement request is possible :-)) Thanks!!Solved50Views0likes2CommentsWhy do PageScripts changes require a Community Restart?
Hello , While implementing PageScripts, I noticed that changes are not reflected immediately, even though I tried using the Switching the Branch to Preview Changes option. For every minor change in a script, I still have to push the code to the stage-main branch and then restart the community instance in order to see the update. This has been impacting the development workflow, because even small adjustments (like a console log or a minor script edit) require a full restart of the instance to validate. Upon enquiring with Khoros Support, I received the following response: "You are following the intended and documented development workflow. At this time, Aurora does not support real-time preview of PageScripts via branch switching; script changes will only reflect after merging and restarting the staging instance. If this workflow changes in future releases, updates will appear in Khoros Aurora release notes or documentation." Has anyone else experienced the same? Is this the expected behavior for all communities, or have you found any workaround to preview PageScripts without a restart? Looking forward to hearing the experiences of other community teams.26Views0likes0CommentsLooking for a Consultant for quick remote help
Need help with Khoros Community API integration. We're trying to sync user data from our CRM to Khoros using the REST API, but getting authentication errors when posting user profile updates. Can authenticate and retrieve data fine, but PUT requests to update user roles and custom fields are returning 401 errors. Need someone familiar with Khoros API permissions and user management endpoints. Should be 2-3 hours remote work to fix the API calls and test user sync. Need working by end of week.85Views0likes2CommentsSubscriptions to a label?
Hi all, I'm attempting to get the list of people who have subscribed to a label, but am struggling. The documentation is a bit confusing: It says both that you have to use a community ID as the node.id constraint but also that you can give the node.id constraint as a board id? Seems conflicting. And, regardless of the documentation, I get an error when I try to use a board ID (such as node.id='board:wireless-lan' where wireless-lan is the id of the board) My user has full admin permissions. Any ideas? I am not really a developer (as is probably evident!), just trying to pull a few bits of data for a stakeholder. Thanks!SolvedIs it possible to fetch custom fields in Bulk Data API
Hey all, have a situation where a custom metadata field was added to ideas and it would be great to be able to retrieve this field via the Bulk Data API. I'm guessing that this isn't possible, but I wanted to confirm that this is that case. Thanks.18Views0likes0CommentsInquiry on permission for allow_restapi_call_read API
I am working on some techzone based application. Application will fetch the new techzone update and send notification to webex. I am making this for transport techzone. While running the Python script for the Transport TechZone application, I encountered a permission error when fetching updates from the Khoros API. The script successfully obtains a session key, but the API response returns: User 236122 does not have the following permission(s) at cisco: [ allow_restapi_call_read ] It looks like the user account needs the allow_restapi_call_read permission to access this API endpoint. Could you please confirm if additional permissions are required or assist in granting this permission for user 236122?36Views0likes1CommentCommunity Plugin SDK Compatibility
Can anyone confirm which operating systems the Khoros Community Plugin SDK (i.e. lithium-sdk) is compatible with? The documentation only mentions Mac OS X and CentOS, and I just confirmed that Windows isn't compatible. (See attached screenshot) But what I really want to know is whether CentOS truly is the only Linux distribution that is supported or if others are supported as well. I was hoping to install the SDK on a system running Ubuntu Server (latest LTS release) but now I'm not sure if it'll be successful and if I need to spin up a docker container or VM instead. Anyone have any experience around this? Thanks!!Solved632Views0likes11CommentsCannot successfully archive message via API v2
Has anyone been able to successfully archive a message using the Community API v2 POST call documented in the Developer Docs? I've tried several ways and can't seem to get it to work. For example: Using the restadmin directive <#assign response = restadmin("2.0", "/archives/archive", "POST", {"messageId": "32815"}) /> Status: ${response.status}<br /> Message: ${response.message}<br /> Data Keys:<br /> <#list response.data?keys as dataKey> - ${dataKey}<br /> </#list> Using the restBuilder directive <#assign archivePostCall = restBuilder() .method("POST") .path("/archives/archive") .body({"messageId": "32815"}) .admin(true) /> <#assign response = archivePostCall.call() /> Status: ${response.status}<br /> Message: ${response.message}<br /> Data Keys:<br /> <#list response.data?keys as dataKey> - ${dataKey}<br /> </#list> Both attempts above returned the following response: Status: error Message: Error generating JSON response. Data Keys: - getClass - validTemplateModelObject - toSerializedString - isValidTemplateModelObject - hashCode - equals - get - toString - class I tried performing the same operation via Python (as shown below) but the response is either a 400 or 500 error depending on whether or not I explicitly define the "content-type" header as "application/json" in my request. Attempt #1: Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32 >>> from khoros import Khoros >>> khoros = Khoros() >>> response = khoros.post('/api/2.0/archives/archive', {'messageId': '32815'}, return_json=False) >>> response <Response [400]> >>> response.text '{"status":"error","message":"A possible invalid request has been made. Make sure you are following the API spec and have used the correct URL, are included all required parameters and if a request payload is required you have included one.","data":{"type":"error_data","code":309,"developer_message":"","more_info":""},"metadata":{}}' >>> response.request.url 'https://REDACTED.com/api/2.0/archives/archive' >>> response.request.body '{"messageId": "32815"}' >>> response.request.headers {'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'li-api-session-key': 'REDACTED', 'Content-Length': '22'} Attempt #2: >>> response = khoros.post('/api/2.0/archives/archive', {'messageId': '32815'}, headers={'content-type': 'application/json'}, return_json=False) >>> response <Response [500]> >>> response.text '{"status":"error","message":"An unexpected error occurred.","data":{"type":"error_data","code":301,"developer_message":"Can not deserialize instance of java.util.ArrayList out of START_OBJECT token\\n at [Source: org.apache.catalina.connector.CoyoteInputStream@34f637da; line: 1, column: 1]","more_info":""},"metadata":{}}' >>> response.request.headers {'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'li-api-session-key': 'REDACTED', 'content-type': 'application/json', 'Content-Length': '22'} I was hoping I could do a network trace of the archival process in the web UI to see what the syntax should be, but it looks like a different UI-specific endpoint and form is used to perform the operation so I couldn't learn anything from it. Any help with this would be greatly appreciated. Thanks!911Views1like9CommentsCan someone walk me through authenticating and using Postman with Aurora?
I'm a bit of a newbie when it comes to GraphQL and Postman and I'm struggling to work through the dev docs when it comes to authenticating and setting up the basics in Postman for testing in API calls in Aurora. We're looking ahead to migration and want to start getting familiar with basic API calls. Has anyone successfully got Postman and Aurora working? Is anyone willing to walk me through the bare minimum basics of getting this set up to authenticate into our Aurora instance and run a basic GraphQL call? I'm finding the dev docs pretty lacking currently so I'm turning to the expertise of the developer community here hoping someone has already figured this out. Or, if Khoros is reading this, can we have another Developer Webinar where we can walk through this? Or is this something you can offer through training or update the docs with more details? We've reached out to our CSM to see if we can get some 1:1 training but so far it doesn't look like that's an option right now.Solved588Views1like13CommentsContraint conversationlastpostime in Api graphql getmessages does not work
Hi everyone, Has anyone here ever tried using the messages API with the conversationLastPostTime constraint? In my case, the constraint is completely ignored — it doesn’t seem to have any effect at all. What I’d like to do is retrieve only the conversations starting from a certain date limit. But no matter what value I pass to conversationLastPostTime.gte, the results I get are not filtered by date. Has anyone else faced this issue, and did you find a workaround or a proper way to make this constraint work? Here’s the GraphQL body I’m using: Thanks a lot for your help
Featured Places
Release Notes & Updates
Review release notes and updates for all of our products! Select a tag to browse by product or resource type.Help & Support
Find solutions and support for Khoros productsSupport Information
Review general information about Khoros Support
Events & Webinars
Learn more about your Khoros solution with helpful webinars and special events
Events
No events to show