> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Liferay OAuth 2.0 connector profile – StackOne setup guide

> Set up the OAuth 2.0 connector profile for Liferay in StackOne. One-time admin setup required before your users can link Liferay accounts via Hub.

<Warning>You must have administrator access to your Liferay instance to register OAuth2 applications in the OAuth2 Administration panel.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;liferay_list_accounts&#x22;,&#x22;label&#x22;:&#x22;List Accounts&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_account&#x22;,&#x22;label&#x22;:&#x22;Get Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_account_by_external_reference_code&#x22;,&#x22;label&#x22;:&#x22;Get Account By External Reference Code&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_account&#x22;,&#x22;label&#x22;:&#x22;Create Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_account_user_accounts&#x22;,&#x22;label&#x22;:&#x22;List Account User Accounts&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_assign_user_to_account&#x22;,&#x22;label&#x22;:&#x22;Assign User To Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_remove_user_from_account&#x22;,&#x22;label&#x22;:&#x22;Remove User From Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_account_roles&#x22;,&#x22;label&#x22;:&#x22;List Account Roles&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_assign_account_role_to_user&#x22;,&#x22;label&#x22;:&#x22;Assign Account Role To User&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_account&#x22;,&#x22;label&#x22;:&#x22;Update Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_account&#x22;,&#x22;label&#x22;:&#x22;Delete Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_blog_postings&#x22;,&#x22;label&#x22;:&#x22;List Blog Postings&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_blog_posting&#x22;,&#x22;label&#x22;:&#x22;Get Blog Posting&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_blog_posting&#x22;,&#x22;label&#x22;:&#x22;Create Blog Posting&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_blog_posting&#x22;,&#x22;label&#x22;:&#x22;Update Blog Posting&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_blog_posting&#x22;,&#x22;label&#x22;:&#x22;Delete Blog Posting&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_blog_posting_comments&#x22;,&#x22;label&#x22;:&#x22;List Blog Posting Comments&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_blog_posting_comment&#x22;,&#x22;label&#x22;:&#x22;Create Blog Posting Comment&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_structured_content_comment&#x22;,&#x22;label&#x22;:&#x22;Create Structured Content Comment&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_structured_content_comments&#x22;,&#x22;label&#x22;:&#x22;List Structured Content Comments&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_document_comment&#x22;,&#x22;label&#x22;:&#x22;Create Document Comment&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_comment&#x22;,&#x22;label&#x22;:&#x22;Get Comment&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_replace_comment&#x22;,&#x22;label&#x22;:&#x22;Replace Comment&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_comment&#x22;,&#x22;label&#x22;:&#x22;Delete Comment&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_comment_replies&#x22;,&#x22;label&#x22;:&#x22;List Comment Replies&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_comment_reply&#x22;,&#x22;label&#x22;:&#x22;Create Comment Reply&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_document_comments&#x22;,&#x22;label&#x22;:&#x22;List Document Comments&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_content_structures&#x22;,&#x22;label&#x22;:&#x22;List Content Structures&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_content_structure&#x22;,&#x22;label&#x22;:&#x22;Get Content Structure&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_document_folders&#x22;,&#x22;label&#x22;:&#x22;List Document Folders&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_document_folder&#x22;,&#x22;label&#x22;:&#x22;Get Document Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_document_folder&#x22;,&#x22;label&#x22;:&#x22;Create Document Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_document_folder&#x22;,&#x22;label&#x22;:&#x22;Update Document Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_document_folder_subfolders&#x22;,&#x22;label&#x22;:&#x22;List Document Folder Subfolders&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_document_folder_documents&#x22;,&#x22;label&#x22;:&#x22;List Document Folder Documents&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_document_folder&#x22;,&#x22;label&#x22;:&#x22;Delete Document Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_documents&#x22;,&#x22;label&#x22;:&#x22;List Documents&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_document&#x22;,&#x22;label&#x22;:&#x22;Get Document&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_document&#x22;,&#x22;label&#x22;:&#x22;Create Document&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_document_in_folder&#x22;,&#x22;label&#x22;:&#x22;Create Document In Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_document&#x22;,&#x22;label&#x22;:&#x22;Update Document&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_document&#x22;,&#x22;label&#x22;:&#x22;Delete Document&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_organizations&#x22;,&#x22;label&#x22;:&#x22;List Organizations&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_organization&#x22;,&#x22;label&#x22;:&#x22;Get Organization&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_organization&#x22;,&#x22;label&#x22;:&#x22;Update Organization&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_organization&#x22;,&#x22;label&#x22;:&#x22;Create Organization&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_organization_user_accounts&#x22;,&#x22;label&#x22;:&#x22;List Organization User Accounts&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_organization_child_organizations&#x22;,&#x22;label&#x22;:&#x22;List Child Organizations&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_organization&#x22;,&#x22;label&#x22;:&#x22;Delete Organization&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_roles&#x22;,&#x22;label&#x22;:&#x22;List Roles&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_role&#x22;,&#x22;label&#x22;:&#x22;Get Role&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_role_by_external_reference_code&#x22;,&#x22;label&#x22;:&#x22;Get Role By External Reference Code&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_role&#x22;,&#x22;label&#x22;:&#x22;Create Role&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_role&#x22;,&#x22;label&#x22;:&#x22;Update Role&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_role&#x22;,&#x22;label&#x22;:&#x22;Delete Role&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_assign_role_to_user&#x22;,&#x22;label&#x22;:&#x22;Assign Role To User&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_unassign_role_from_user&#x22;,&#x22;label&#x22;:&#x22;Unassign Role From User&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_site&#x22;,&#x22;label&#x22;:&#x22;Get Site&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_site_by_friendly_url_path&#x22;,&#x22;label&#x22;:&#x22;Get Site By Friendly URL Path&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_site_user_accounts&#x22;,&#x22;label&#x22;:&#x22;List Site User Accounts&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_my_sites&#x22;,&#x22;label&#x22;:&#x22;List My Sites&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_structured_content_folders&#x22;,&#x22;label&#x22;:&#x22;List Structured Content Folders&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_structured_content_folder&#x22;,&#x22;label&#x22;:&#x22;Create Structured Content Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_structured_content_folder&#x22;,&#x22;label&#x22;:&#x22;Get Structured Content Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_structured_content_folder&#x22;,&#x22;label&#x22;:&#x22;Update Structured Content Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_structured_content_folder_subfolders&#x22;,&#x22;label&#x22;:&#x22;List Structured Content Folder Subfolders&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_structured_content_folder_contents&#x22;,&#x22;label&#x22;:&#x22;List Structured Content Folder Contents&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_structured_content_folder&#x22;,&#x22;label&#x22;:&#x22;Delete Structured Content Folder&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_structured_contents&#x22;,&#x22;label&#x22;:&#x22;List Structured Contents&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_structured_content&#x22;,&#x22;label&#x22;:&#x22;Create Structured Content&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_structured_content&#x22;,&#x22;label&#x22;:&#x22;Update Structured Content&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_structured_content&#x22;,&#x22;label&#x22;:&#x22;Delete Structured Content&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_structured_content&#x22;,&#x22;label&#x22;:&#x22;Get Structured Content&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Delivery.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_site_taxonomy_vocabularies&#x22;,&#x22;label&#x22;:&#x22;List Site Taxonomy Vocabularies&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.Taxonomy.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_taxonomy_categories&#x22;,&#x22;label&#x22;:&#x22;List Taxonomy Categories&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.Taxonomy.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_user_groups&#x22;,&#x22;label&#x22;:&#x22;List User Groups&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_user_group&#x22;,&#x22;label&#x22;:&#x22;Get User Group&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_user_group&#x22;,&#x22;label&#x22;:&#x22;Update User Group&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_user_group&#x22;,&#x22;label&#x22;:&#x22;Create User Group&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_user_group_members&#x22;,&#x22;label&#x22;:&#x22;List User Group Members&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_add_users_to_user_group&#x22;,&#x22;label&#x22;:&#x22;Add Users To User Group&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_remove_users_from_user_group&#x22;,&#x22;label&#x22;:&#x22;Remove Users From User Group&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_user_group&#x22;,&#x22;label&#x22;:&#x22;Delete User Group&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_user_accounts&#x22;,&#x22;label&#x22;:&#x22;List User Accounts&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_user_account&#x22;,&#x22;label&#x22;:&#x22;Get User Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_user_account_by_email_address&#x22;,&#x22;label&#x22;:&#x22;Get User Account By Email Address&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_user_accounts_by_status&#x22;,&#x22;label&#x22;:&#x22;List User Accounts By Status&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_list_user_groups_for_user&#x22;,&#x22;label&#x22;:&#x22;List User Groups For User&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_get_my_user_account&#x22;,&#x22;label&#x22;:&#x22;Get My User Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything.read&#x22;]},{&#x22;id&#x22;:&#x22;liferay_create_user_account&#x22;,&#x22;label&#x22;:&#x22;Create User Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_patch_user_account&#x22;,&#x22;label&#x22;:&#x22;Update User Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]},{&#x22;id&#x22;:&#x22;liferay_delete_user_account&#x22;,&#x22;label&#x22;:&#x22;Delete User Account&#x22;,&#x22;scopes&#x22;:[&#x22;Liferay.Headless.Admin.User.everything&#x22;]}]" style={{ borderRadius: '8px', padding: '16px', marginBottom: '24px' }}>
    <div className="guides-scope-selector__title" style={{ fontSize: '16px', fontWeight: '600', marginBottom: '12px' }}>Select Actions to adjust the guide</div>
    <div className="guides-scope-selector__muted" style={{ fontSize: '13px', marginBottom: '12px' }}>Some actions may require additional configuration in the provider to be accessible. Choose the actions you need and the guide will be updated.</div>

    <div style={{ display: 'flex', gap: '8px', marginBottom: '12px', flexWrap: 'wrap' }}>
      <input type="text" placeholder="Search actions..." className="guides-scope-selector__input" data-guide-action-search style={{ padding: '8px 12px', borderRadius: '6px', fontSize: '13px', flex: 1, minWidth: '160px' }} />

      <button type="button" className="guides-scope-selector__quick-btn" data-guide-select-all style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Select all</button>
      <button type="button" className="guides-scope-selector__quick-btn" data-guide-clear style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Clear</button>
    </div>

    <div className="guides-scope-selector__list" style={{ maxHeight: '240px', overflowY: 'auto', borderRadius: '6px', marginBottom: '12px' }}>
      <div className="guides-scope-selector__list-header" style={{ display: 'flex', alignItems: 'center', gap: '10px', padding: '8px 12px', fontSize: '12px', fontWeight: '600', position: 'sticky', top: 0, zIndex: 1 }}>
        <div style={{ width: '16px', flexShrink: 0 }} />

        <div style={{ flex: 1, textAlign: 'left' }}>Action</div>
        <div style={{ minWidth: '120px', marginLeft: 'auto', textAlign: 'right' }}>Scope(s)</div>
      </div>

      <div className="guides-scope-selector__muted" data-guide-loading style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>Loading actions...</div>
      <div className="guides-scope-selector__muted" data-guide-no-results hidden style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>No actions match your search.</div>
    </div>

    <div className="guides-scope-selector__url-section" style={{ marginTop: '12px', paddingTop: '12px' }}>
      <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Dynamic Guide URL</div>

      <div style={{ display: 'flex', alignItems: 'center', gap: '8px', flexWrap: 'wrap' }}>
        <input type="text" readOnly className="guides-scope-selector__input" data-guide-url style={{ flex: 1, minWidth: '200px', padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace' }} />

        <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-url style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap', marginLeft: 'auto' }}>Copy URL</button>
      </div>

      <div style={{ marginTop: '12px' }}>
        <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Scopes Selected</div>

        <div style={{ display: 'flex', alignItems: 'stretch', gap: '8px', flexWrap: 'wrap' }}>
          <pre className="guides-scope-selector__input" role="textbox" aria-readonly="true" tabIndex={0} data-guide-scopes-output style={{ flex: 1, minWidth: '200px', minHeight: '88px', maxHeight: '120px', overflowY: 'auto', margin: 0, padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace', whiteSpace: 'pre-wrap' }} />

          <div className="guides-scope-selector__muted" style={{ display: 'flex', flexDirection: 'column', gap: '8px', fontSize: '12px', fontWeight: '500', flexShrink: 0, alignItems: 'flex-start' }}>
            <div style={{ whiteSpace: 'nowrap' }}>Separator</div>

            <select className="guides-scope-selector__input" data-guide-scope-delimiter style={{ width: '100%', padding: '6px 10px', borderRadius: '6px', fontSize: '12px' }}>
              <option value="space">Space</option>
              <option value="comma">Comma</option>
              <option value="semicolon">Semicolon</option>
              <option value="pipe">Pipe</option>
              <option value="newline">Newline</option>
            </select>

            <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-scopes style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap' }}>Copy scopes</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</Panel>

<section data-guide-section data-guide-scopes="">
  <h2>Create an OAuth2 application in Liferay</h2>

  <p>Register an OAuth2 application in Liferay to obtain the Client ID and Client Secret needed for the connection.</p>

  <Steps>
    <Step title="Sign in to Liferay">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to your <a href="https://www.liferay.com/" target="_blank" rel="noopener noreferrer">Liferay</a> instance as an administrator.</p>

        <ul>
          <li>Open the <strong>Applications Menu</strong> from the top navigation bar.</li>
          <li>Navigate to <strong>Control Panel</strong> > <strong>Security</strong> > <strong>OAuth2 Administration</strong>.</li>
          <li>Click the <strong>New</strong> button in the top-right corner to add a new application.</li>
        </ul>
      </div>
    </Step>

    <Step title="Fill in application details">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Complete the application form.</p>

        <ul>
          <li>Application Name: `StackOne`</li>
          <li>Callback URI: `https://api.stackone.com/connect/oauth2/liferay/callback`</li>
          <li>Select <strong>Client Secret Basic or Post</strong> as the Client Authentication Method.</li>
          <li>Select <strong>Web Application</strong> as the Client Profile.</li>
          <li>Under <strong>Allowed Authorization Types</strong>, enable <strong>Authorization Code</strong> and <strong>Refresh Token</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Save and copy the client credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Save the application and copy the generated credentials.</p>

        <ul>
          <li>The <strong>Client ID</strong> is shown on the application overview page.</li>
          <li>The <strong>Client Secret</strong> is displayed only once after the application is saved — copy it immediately and store securely for use later.</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure scopes">
      <div data-guide-step data-guide-scopes="Liferay.Headless.Admin.User.everything,Liferay.Headless.Admin.User.everything.read,Liferay.Headless.Delivery.everything,Liferay.Headless.Delivery.everything.read,Liferay.Headless.Admin.Taxonomy.everything.read" data-guide-display-scopes-list="Liferay.Headless.Admin.User.everything,Liferay.Headless.Admin.User.everything.read,Liferay.Headless.Delivery.everything,Liferay.Headless.Delivery.everything.read,Liferay.Headless.Admin.Taxonomy.everything.read">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="Liferay.Headless.Admin.User.everything,Liferay.Headless.Admin.User.everything.read,Liferay.Headless.Delivery.everything,Liferay.Headless.Delivery.everything.read,Liferay.Headless.Admin.Taxonomy.everything.read" style={{ display: 'block', width: 'fit-content', maxWidth: '100%', padding: '2px 8px', borderRadius: '8px', fontSize: '12px', marginBottom: '8px', marginTop: '-10px', whiteSpace: 'nowrap', overflowX: 'auto', overflowY: 'hidden', msOverflowStyle: 'none', scrollbarWidth: 'none' }}>
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Add Users To User Group, Assign Account Role To User, Assign Role To User, Assign User To Account, Create Account, Create Blog Posting, Create Blog Posting Comment, Create Comment Reply, Create Document, Create Document Comment, Create Document Folder, Create Document In Folder, Create Organization, Create Role, Create Structured Content, Create Structured Content Comment, Create Structured Content Folder, Create User Account, Create User Group, Delete Account, Delete Blog Posting, Delete Comment, Delete Document, Delete Document Folder, Delete Organization, Delete Role, Delete Structured Content, Delete Structured Content Folder, Delete User Account, Delete User Group, Get Account, Get Account By External Reference Code, Get Blog Posting, Get Comment, Get Content Structure, Get Document, Get Document Folder, Get My User Account, Get Organization, Get Role, Get Role By External Reference Code, Get Site, Get Site By Friendly URL Path, Get Structured Content, Get Structured Content Folder, Get User Account, Get User Account By Email Address, Get User Group, List Account Roles, List Account User Accounts, List Accounts, List Blog Posting Comments, List Blog Postings, List Child Organizations, List Comment Replies, List Content Structures, List Document Comments, List Document Folder Documents, List Document Folder Subfolders, List Document Folders, List Documents, List My Sites, List Organization User Accounts, List Organizations, List Roles, List Site Taxonomy Vocabularies, List Site User Accounts, List Structured Content Comments, List Structured Content Folder Contents, List Structured Content Folder Subfolders, List Structured Content Folders, List Structured Contents, List Taxonomy Categories, List User Accounts, List User Accounts By Status, List User Group Members, List User Groups, List User Groups For User, Remove User From Account, Remove Users From User Group, Replace Comment, Unassign Role From User, Update Account, Update Blog Posting, Update Document, Update Document Folder, Update Organization, Update Role, Update Structured Content, Update Structured Content Folder, Update User Account, Update User Group</span>
        </div>

        <p>After saving the application, open the <strong>Scopes</strong> tab and enable the scopes your integration needs access to.<br /><br />**`Liferay.Headless.Admin.User.everything` is required for the connection test to succeed and must be enabled in addition to any other scopes your integration uses.**</p>

        <div style={{ marginTop: '8px' }} data-guide-display-scopes>
          <div className="connector-guide-scopes-container">
            <ul className="not-prose" style={{ listStyleType: "'- '", paddingLeft: '1em', margin: 0 }}>
              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Liferay.Headless.Admin.User.everything">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Liferay.Headless.Admin.User.everything" title="Copy scope" data-copy="Liferay.Headless.Admin.User.everything">
                  <span className="connector-guide-scope-copy__label">Liferay.Headless.Admin.User.everything</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Liferay.Headless.Admin.User.everything.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Liferay.Headless.Admin.User.everything.read" title="Copy scope" data-copy="Liferay.Headless.Admin.User.everything.read">
                  <span className="connector-guide-scope-copy__label">Liferay.Headless.Admin.User.everything.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Liferay.Headless.Delivery.everything">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Liferay.Headless.Delivery.everything" title="Copy scope" data-copy="Liferay.Headless.Delivery.everything">
                  <span className="connector-guide-scope-copy__label">Liferay.Headless.Delivery.everything</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Liferay.Headless.Delivery.everything.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Liferay.Headless.Delivery.everything.read" title="Copy scope" data-copy="Liferay.Headless.Delivery.everything.read">
                  <span className="connector-guide-scope-copy__label">Liferay.Headless.Delivery.everything.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Liferay.Headless.Admin.Taxonomy.everything.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Liferay.Headless.Admin.Taxonomy.everything.read" title="Copy scope" data-copy="Liferay.Headless.Admin.Taxonomy.everything.read">
                  <span className="connector-guide-scope-copy__label">Liferay.Headless.Admin.Taxonomy.everything.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Liferay</strong>:

<Steps>
  <Step title="Navigate to Connector Profiles">
    Login to StackOne and navigate to [Connector Profiles](https://app.stackone.com/connector_profiles)
  </Step>

  <Step title="Create New Connector Profile">
    <ul>
      <li>Click <strong>+ Connector Profile</strong></li>
      <li>Search for and select <strong>Liferay</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0</strong></li>

      <li>
        Fill out the fields using details retrieved from your provider:

        <ul style={{ marginLeft: '20px' }}>
          <li><strong>Client ID</strong></li>
          <li><strong>Client Secret</strong></li>
          <li><strong>Scopes</strong> (Optional)</li>
        </ul>
      </li>

      <li>(Optional) Select <strong>Actions</strong> to be enabled for this Connector Profile</li>
      <li>Click <strong>Create profile</strong></li>
    </ul>
  </Step>
</Steps>

Congratulations! The new Connector Profile will now show up in your project ready to be used. You can now continue to <a href="/guides/accounts-section#linking-accounts">Link Accounts</a> for <strong>Liferay</strong>.
