Where is the RingCentral ReadPresenceSettings set in the portal? - user-permissions

I see the ReadPresenceSettings permission in the API for my role, but I do not see it in the Online Account Portal (https://service.ringcentral.com). What does this correspond to in the portal so I can set/unset it?
Permission in Role
Request
GET /restapi/v1.0/dictionary/user-role/:roleId
GET /restapi/v1.0/dictionary/user-role/3
Response
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/user-role/3",
"id": "3",
"displayName": "Standard (International)",
"description": "User level access with international dialing access.",
"custom": false,
"scope": "Self",
"hidden": false,
"siteCompatible": false,
"permissions": [
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission/ReadPresenceSettings",
"id": "ReadPresenceSettings",
"assignable": false,
"readOnly": false,
"siteCompatible": "Independent"
},
...
]
}
Permission Info Exists
When I check the presence info endpoint, I see that it is called "Read Presence Settings" but there is no such permission in the portal.
Request
GET /restapi/v1.0/dictionary/permission/:permissionId
GET /restapi/v1.0/dictionary/permission/ReadPresenceSettings
Response
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission/ReadPresenceSettings",
"id": "ReadPresenceSettings",
"displayName": "Read Presence Settings",
"assignable": false,
"readOnly": false,
"siteCompatible": "Independent",
"category": {
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission-category/Features",
"id": "Features"
},
"includedPermissions": []
}
I'm using the Postman with the collection here:
https://github.com/grokify/swaggman

RingCentral permissions can be fairly granular and not every API permission appears in the Online Account Portal.
Permissions that are assignable to users are indicated by the permission's boolean assignable property. This is set to false for ReadPresenceSettings.
Some permissions are child permissions of another permission that is assignable. In this case, they will be listed in a permissions includedPermissions property.
In this case, the assignable parent permission is: ConfigurePresence in the API or "Configure Presence" in the UI.
Finding the Assignable Parent Permission
To find this using the API, call the permission list endpoint and then check each permission for ReadPresenceSettings in the includedPermissions property where the assignable property is also true.
Request
GET /restapi/v1.0/dictionary/permission
Response
The response will include an array of permissions as follows. Filtering for permissions that are assignable and have ReadPresenceSettings permission as an included permissions returns only ConfigurePresence for me.
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission?page=1&perPage=100",
"records": [
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission/ConfigurePresence",
"id": "ConfigurePresence",
"displayName": "Configure Presence",
"description": "Allows to manage Presence settings",
"assignable": true,
"readOnly": false,
"siteCompatible": "Independent",
"category": {
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission-category/Features",
"id": "Features"
},
"includedPermissions": [
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission/EditPresenceStatus",
"id": "EditPresenceStatus",
"assignable": false,
"readOnly": false,
"siteCompatible": "Independent"
},
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission/ReadPresenceSettings",
"id": "ReadPresenceSettings",
"assignable": false,
"readOnly": false,
"siteCompatible": "Independent"
},
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission/ReadPresenceStatus",
"id": "ReadPresenceStatus",
"assignable": false,
"readOnly": false,
"siteCompatible": "Independent"
},
{
"uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/dictionary/permission/EditPresenceSettings",
"id": "EditPresenceSettings",
"assignable": false,
"readOnly": false,
"siteCompatible": "Independent"
}
]
},
....
]
}
Updating the Permission
Once you have the assignable, parent permission, you can update it for the user as normal. Doing this will have child permissions enabled/disabled as well. For example, for ReadPresenceSettings you would update the user's role "Configure Presence" permission using the Online Account Portal as normal. If the user is using a built-in permission, you may need to create a new, modified role for the user if there isn't one already.
You can learn more about how to do this in this KB article:
https://success.ringcentral.com/articles/RC_Knowledge_Article/5-10-Editing-the-Extension-Permissions-via-Web

Related

Why telegram bots with admin rights can't promote group members?

I added my bot to the group and gave him all possible rights. When I call getChatAdministrators api I can see that bot has can_promote_members right:
{
"ok": true,
"result": [
{
"user": {
"id": _id_,
"is_bot": true,
"first_name": "MyBot",
"username": "TestBot"
},
"status": "administrator",
"can_be_edited": false,
"can_manage_chat": true,
"can_change_info": true,
"can_delete_messages": true,
"can_invite_users": true,
"can_restrict_members": true,
"can_pin_messages": true,
"can_promote_members": true,
"can_manage_voice_chats": true,
"custom_title": "Admin",
"is_anonymous": true
},
...
]
}
But when I try to promote user with promoteChatMember, I receive an error:
{
"ok": false,
"error_code": 403,
"description": "Forbidden: RIGHT_FORBIDDEN"
}
What am I doing wrong?
I've found an issue. I shouldn't fill fields can_post_messages and can_edit_messages in promoteChatMember, because they are only for channels.

Stripe: getting "You cannot request any capability other than `transfers`" when only requesting transfers

I'm setting up a test connect account through Stripe, but for some reason during the onboarding I get:
You cannot request any capability other than transfers for accounts that are under the recipient service agreement.
even though I set the capabilities only to transfers.requested: true.
Full details:
1. I created a connect account
Request:
POST https://api.stripe.com/v1/accounts
x-www-form-urlencoded body:
tos_acceptance[service_agreement]: recipient
capabilities[transfers][requested]: true
country: AT
type: express
Response:
{
"id": "acct_1IEKs6Q5kVIyiDKZ",
"object": "account",
"business_profile": {
"mcc": null,
"name": null,
"product_description": null,
"support_address": null,
"support_email": null,
"support_phone": null,
"support_url": null,
"url": null
},
"business_type": null,
"capabilities": {
"transfers": "inactive"
},
"charges_enabled": false,
"country": "AT",
"created": 1611780255,
"default_currency": "eur",
"details_submitted": false,
"email": null,
"external_accounts": {
"object": "list",
"data": [],
"has_more": false,
"total_count": 0,
"url": "/v1/accounts/acct_1IEKs6Q5kVIyiDKZ/external_accounts"
},
"login_links": {
"object": "list",
"total_count": 0,
"has_more": false,
"url": "/v1/accounts/acct_1IEKs6Q5kVIyiDKZ/login_links",
"data": []
},
"metadata": {},
"payouts_enabled": false,
"requirements": {
"current_deadline": null,
"currently_due": [
"business_type",
"external_account",
"tos_acceptance.date",
"tos_acceptance.ip"
],
"disabled_reason": "requirements.past_due",
"errors": [],
"eventually_due": [
"business_type",
"external_account",
"tos_acceptance.date",
"tos_acceptance.ip"
],
"past_due": [
"business_type",
"external_account",
"tos_acceptance.date",
"tos_acceptance.ip"
],
"pending_verification": []
},
"settings": {
"bacs_debit_payments": {},
"branding": {
"icon": null,
"logo": null,
"primary_color": null,
"secondary_color": null
},
"card_payments": {
"decline_on": {
"avs_failure": false,
"cvc_failure": false
},
"statement_descriptor_prefix": null
},
"dashboard": {
"display_name": "Some business LLC",
"timezone": "Etc/UTC"
},
"payments": {
"statement_descriptor": null,
"statement_descriptor_kana": null,
"statement_descriptor_kanji": null
},
"payouts": {
"debit_negative_balances": false,
"schedule": {
"delay_days": 7,
"interval": "daily"
},
"statement_descriptor": null
},
"sepa_debit_payments": {}
},
"tos_acceptance": {
"date": null,
"ip": null,
"service_agreement": "recipient",
"user_agent": null
},
"type": "express"
}
2. Got the onboarding link:
Request:
POST https://api.stripe.com/v1/accounts
x-www-form-urlencoded body:
account: acct_1IEKs6Q5kVIyiDKZ
refresh_url: https://example.com/reauth
return_url: https://example.com/return
type: account_onboarding
Response:
{
"object": "account_link",
"created": 1611780861,
"expires_at": 1611781161,
"url": "https://connect.stripe.com/express/onboarding/<some string>"
}
3. Went to the onboarding link
I got an error after pressing Next on the Tell us about your business section.
You cannot request any capability other than transfers for accounts that are under the recipient service agreement. For more information on recipient service agreements, see https://stripe.com/docs/connect/service-agreement-types#recipient.
Why does stripe think I'm requesting capabilities other than transfers?
Stripe got back to me:
The error is a bit cryptic but it is likely due to the way you configured Connect Onboarding in your settings in the Dashboard. This error happens because we try to request the card_payments capability for this account but it's not supported because you use the recipient agreement type. The reason we ask for that capability comes from the fact that you configured Connect to require that capability for European accounts. You can change this default behaviour in your dashboard settings in Test mode here: https://dashboard.stripe.com/test/settings/applications/express (and you would do the same for Live mode). With your flow you want only Transfers as a capability.
The suggestion worked:
Incorrect Settings:
Correct Settings:
It's strange because I used to be able to create accounts from these requests. So the settings must have changed at some point. But to my knowledge I never went and changed them.

Getting all profiles from Google Analytics API

I'm trying to get all profiles using ~all option with this endpoint
https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties/~all/profiles
It doesn't return all profiles due to ~all for accounts. If I include account ID instead of ~all, then it returns profiles based on that account id - which are missing when used with ~all option.
https://www.googleapis.com/analytics/v3/management/accounts/89478503/webproperties/~all/profiles
Am I doing something wrong or is this GA API bug?
I sugst you look into using account summaries list
GET https://www.googleapis.com/analytics/v3/management/accountSummaries
This will return all the account information for a user.
{
"kind": "analytics#accountSummaries",
"username": "me#gmail.com",
"totalResults": 15,
"startIndex": 1,
"itemsPerPage": 1000,
"items": [
{
"id": "59183475",
"kind": "analytics#accountSummary",
"name": "Cube Analytics",
"webProperties": [
{
"kind": "analytics#webPropertySummary",
"id": "UA-59183475-1",
"name": "Cube Analytics",
"internalWebPropertyId": "93305066",
"level": "STANDARD",
"websiteUrl": "XXXXXXX",
"profiles": [
{
"kind": "analytics#profileSummary",
"id": "115455750",
"name": "Alaternate",
"type": "WEB"
},
{
"kind": "analytics#profileSummary",
"id": "97191919",
"name": "All Web Site Data",
"type": "WEB"
},
{
"kind": "analytics#profileSummary",
"id": "178538323",
"name": "MobileView",
"type": "APP"
}
]
}, ]
}
By using this call you should only need to make one call and get all of the information back.

How to check domain is verified using Google Analytics API?

I have used analytics.read in order to get user's sites and Google API response is:
{
"kind": "analytics#accountSummaries",
"username": "user#gmail.com",
"totalResults": 1,
"startIndex": 1,
"itemsPerPage": 1000,
"items": [
{
"id": "92159597",
"kind": "analytics#accountSummary",
"name": "MyNewDomain",
"webProperties": [
{
"kind": "analytics#webPropertySummary",
"id": "UA-92159597-1",
"name": "MyNewDomain",
"internalWebPropertyId": "236529827",
"level": "STANDARD",
"websiteUrl": "http://www.example.com",
"profiles": [
{
"kind": "analytics#profileSummary",
"id": "140745434",
"name": "All Web Site Data",
"type": "WEB"
}
]
}
]
}
]
}
Why there is no property related to domain status? How should I check whether domain is verified or not?
I tried to use siteverification scope for Google Verification API, it has the response that I need and it returns the list of verified domains but it has a scope of managing domains, so no one will actually grant access to our application in order to manage their domains and verify/un-verify domains.
Sample response:
{
"id": "string",
"site": {
"type": "string",
"identifier": "string"
},
"owners": [
"string"
]
}
How can I use analytics.read to get verified domains not unverified websites?

Alfresco Restful API to get custom metadata

We are moving to Alfresco Content Management system and there is no direct documentation for retrieving custom metadata.
Is there a way to get custom metadata/ custom properties that I have added to Record category in Alfresco Records Management File plan? Custom metadata is basically the data fields that are in scanned document like name, dob, form id, etc.
Eg: I have created RM site and added the following file plan.
TestCategory
|
--TestFolder1
|
--Record1
--Record2
|
--TestFolder2
|
--Record1
--Record2
These records contains uploaded form(scanned document) along with metadata (custom).
To Retrieve metadata, am using
http://127.0.0.1:8090/alfresco/service/api/metadata/node/workspace/SpacesStore/ed6e2cc6-6dc5-4bfb-bf9d-b450f68863dd?alf_ticket=TICKET_06265902898618fe5a46e67992e07a9d4b72701a
It is returning 405-Method not allowed (GET not supported).
To Retrieve all the subfolders/documents in Folders, m using
http://127.0.0.1:8090/alfresco/service/slingshot/doclib/doclist/documents/site/rm/documentLibrary/TestCat1/TestFolder2
Above one returns
{
"totalRecords": 1,
"startIndex": 0,
"metadata": {
"repositoryId": "3b9d4f67-dc84-4531-b8b2-4dbcef15e25a",
"container": "workspace://SpacesStore/7d1349bb-5289-4709-9055-c75c03ab5481",
"parent": {
"nodeRef": "workspace://SpacesStore/5d40660e-64d9-4bc4-a75e-ae4ae8b2201a",
"permissions": {
"userAccess": {
"create": true,
"edit": true,
"delete": true,
"cancel-checkout": false,
"permissions": true
}
}
},
"onlineEditing": true,
"itemCounts": {
"folders": 0,
"documents": 1
}
},
"items": [
{
"nodeRef": "workspace://SpacesStore/65b9b52b-3418-4a85-98b0-d4770cf9399d",
"nodeType": "cm:content",
"type": "document",
"mimetype": "application/pdf",
"isFolder": false,
"isLink": false,
"fileName": "BO (2016-1464237424392).pdf",
"displayName": "BO (2016-1464237424392).pdf",
"status": "",
"title": "þÿ",
"description": "test description",
"author": "",
"createdOn": "2016-05-26T00:37:04.350-04:00",
"createdBy": "Administrator",
"createdByUser": "admin",
"modifiedOn": "2016-05-31T15:50:21.269-04:00",
"modifiedBy": "Administrator",
"modifiedByUser": "admin",
"lastThumbnailModification": "doclib:1464237426243",
"lockedBy": "",
"lockedByUser": "",
"size": "156702",
"version": "1.0",
"contentUrl": "api/node/content/workspace/SpacesStore/65b9b52b-3418-4a85-98b0-d4770cf9399d/BO%20(2016-1464237424392).pdf",
"webdavUrl": "/webdav/Sites/rm/documentLibrary/TestCat1/TestFolder2/BO%20(2016-1464237424392).pdf",
"actionSet": "document",
"tags": [],
"activeWorkflows": "",
"isFavourite": false,
"likes": {
"isLiked": false,
"totalLikes": 0
},
"location": {
"repositoryId": "3b9d4f67-dc84-4531-b8b2-4dbcef15e25a",
"site": "rm",
"siteTitle": "Records Management",
"container": "documentLibrary",
"path": "/TestCat1/TestFolder2",
"file": "BO (2016-1464237424392).pdf",
"parent": {
"nodeRef": "workspace://SpacesStore/5d40660e-64d9-4bc4-a75e-ae4ae8b2201a"
}
},
"permissions": {
"inherited": true,
"roles": [
"ALLOWED;ROLE_EXTENDED_READER;ReadRecords;INHERITED",
"ALLOWED;GROUP_Administrator7d1349bb-5289-4709-9055-c75c03ab5481;Filing;INHERITED",
"ALLOWED;ROLE_EXTENDED_WRITER;Filing;INHERITED"
],
"userAccess": {
"create": true,
"edit": true,
"delete": true,
"cancel-checkout": false,
"permissions": true
}
},
"custom": {},
"actionLabels": {}
}
]
}
Using PostMan chrome app to test rest api. TIA.
Another way to do this: I found it in Alfresco forums :
/alfresco/service/api/metadata?nodeRef=workspace://SpacesStore/a2a6c249- c55d-4d29-8692-3e9cb1f811a8 [GET service]
This should do it. Example request.
http://localhost:8080/alfresco/service/slingshot/doclib2/node/workspace/SpacesStore/f558838b-24fa-4ea3-bb2a-602c7b4cec41
Give it a shot, it will return everything you need, not only metadata but for example aspects too.
If the response you are getting is overwhelming for anyone like me, in the accepted (great) answer/solution given by Lista, here is a simpler way:
HTTP GET:
http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/dc2d0a1b-a78d-47a9-aaab-31df0f09e8fb
Need some more details? Try this:
http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/dc2d0a1b-a78d-47a9-aaab-31df0f09e8fb?include=association,path,permissions
You will get a response similar to this:
{"entry":{"isFile":true,"createdByUser":{"id":"admin","displayName":"Administrator"},"modifiedAt":"2020-12-16T00:01:56.615+0000","nodeType":"cm:content","content":{"mimeType":"application/pdf","mimeTypeName":"Adobe PDF Document","sizeInBytes":8037,"encoding":"UTF-8"},"parentId":"c250f9c5-d3f9-4c9e-83c6-2d239f8c2237","aspectNames":["cm:versionable","cm:titled","cm:auditable","cm:taggable","cm:author"],"createdAt":"2020-12-13T16:48:27.600+0000","isFolder":false,"modifiedByUser":{"id":"admin","displayName":"Administrator"},"name":"fileName","id":"dc2d0a1b-a78d-47a9-aaab-31df0f09e8fb","properties":{"cm:title":"titletest","cm:versionType":"MAJOR","cm:versionLabel":"1.0","cm:description":"descriptiontest"}}}
And with include options the response will look similar to this -
{"entry":{"isFile":true,"createdByUser":{"id":"admin","displayName":"Administrator"},"modifiedAt":"2020-12-16T00:01:56.615+0000","association":{"isPrimary":true,"assocType":"cm:contains"},"nodeType":"cm:content","content":{"mimeType":"application/pdf","mimeTypeName":"Adobe PDF Document","sizeInBytes":8037,"encoding":"UTF-8"},"parentId":"c250f9c5-d3f9-4c9e-83c6-2d239f8c2237","aspectNames":["cm:versionable","cm:titled","cm:auditable","cm:taggable","cm:author"],"createdAt":"2020-12-13T16:48:27.600+0000","path":{"name":"/Company Home/Sites/site1/documentLibrary/Employee/Test","isComplete":true,"elements":[{"id":"3ac0f350-a3e0-4da4-8dfa-c8e74553b024","name":"Company Home","nodeType":"cm:folder","aspectNames":["cm:titled","cm:auditable","app:uifacets"]},{"id":"15d878c2-e880-4a3f-ac00-60596ba2dcd1","name":"Sites","nodeType":"st:sites","aspectNames":["cm:titled","cm:auditable","app:uifacets"]},{"id":"46c2a6b1-2839-4b25-ac5d-c7dd874aea1e","name":"site1","nodeType":"st:site","aspectNames":["cm:tagscope","cm:titled","cm:auditable"]},{"id":"e8bc3bfe-7b41-416e-aa6a-9ee1b4fc9779","name":"documentLibrary","nodeType":"cm:folder","aspectNames":["cm:tagscope","st:siteContainer","cm:ownable","cm:titled","cm:auditable"]},{"id":"d5027ba7-874c-4996-bcde-923c68ec4c5b","name":"Employee","nodeType":"cm:folder","aspectNames":["cm:titled","cm:auditable"]},{"id":"c250f9c5-d3f9-4c9e-83c6-2d239f8c2237","name":"Test","nodeType":"cm:folder","aspectNames":["cm:titled","cm:auditable"]}]},"isFolder":false,"permissions":{"inherited":[{"authorityId":"GROUP_EVERYONE","name":"SiteConsumer","accessStatus":"ALLOWED"},{"authorityId":"GROUP_EVERYONE","name":"ReadPermissions","accessStatus":"ALLOWED"},{"authorityId":"GROUP_site_site1_SiteConsumer","name":"SiteConsumer","accessStatus":"ALLOWED"},{"authorityId":"GROUP_site_site1_SiteManager","name":"SiteManager","accessStatus":"ALLOWED"},{"authorityId":"GROUP_site_site1_SiteCollaborator","name":"SiteCollaborator","accessStatus":"ALLOWED"},{"authorityId":"GROUP_site_site1_SiteContributor","name":"SiteContributor","accessStatus":"ALLOWED"}],"settable":["Contributor","Collaborator","Coordinator","Editor","Consumer"],"isInheritanceEnabled":true},"modifiedByUser":{"id":"admin","displayName":"Administrator"},"name":"fileName","id":"dc2d0a1b-a78d-47a9-aaab-31df0f09e8fb","properties":{"cm:title":"titletest","cm:versionType":"MAJOR","cm:versionLabel":"1.0","cm:description":"descriptiontest"}}}
Disclaimer: I am using Alfresco 6.2 Community Edition. But as per documentation (public rest-api link) it says:
Note: this endpoint is available in Alfresco 5.2 and newer versions.

Resources