> ## 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.

# Connect Liferay with OAuth 2.0 - Client Credentials – StackOne Hub

> Link a Liferay account in the StackOne Hub using OAuth 2.0 - Client Credentials. End-user guide to authorize the integration and start using Liferay actions.

<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 a Headless Server OAuth2 application in Liferay</h2>

  <p>Register a Headless Server OAuth2 application in Liferay to obtain credentials for server-to-server authentication.</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>Select <strong>Client Secret Basic or Post</strong> as the Client Authentication Method.</li>
          <li>Select <strong>Headless Server</strong> as the Client Profile.</li>
          <li>Under <strong>Allowed Authorization Types</strong>, enable <strong>Client Credentials</strong>.</li>
          <li>Under <strong>Client Credentials User</strong>, select a user — this user's permissions determine what the integration can access.</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>

<section data-guide-section data-guide-scopes="">
  <h2>Find your Liferay domain</h2>

  <p>Your Liferay domain identifies your Liferay instance.</p>

  <ul>
    <li>Check your browser address bar when signed in to Liferay.</li>
    <li>Format: `{subdomain}.lfr.cloud` or `liferay.{yourcompany}.com`</li>
    <li>Example: if your URL is `https://acme.lfr.cloud/web/guest`, your Liferay domain is `acme.lfr.cloud`</li>
    <li>Do not include `https://` or any trailing path.</li>
  </ul>
</section>

<div data-whitelabel-hide>
  <h2>Linking the Account from the Hub</h2>

  <Steps>
    <Step title="Navigate to the Hub">
      Use one of the three <a href="/guides/accounts-section#linking-accounts">Linking Account Methods</a> to access the Hub.
    </Step>

    <Step title="Fill out the fields">
      Fill out the following fields using details from your provider:

      <ul>
        <li><strong>Liferay Domain</strong></li>
        <li><strong>Client ID</strong></li>
        <li><strong>Client Secret</strong></li>
      </ul>
    </Step>

    <Step title="Connect">
      <ul>
        <li>Click <strong>Connect</strong></li>
        <li>If applicable, the provider will redirect you to a sign-in or authorization page. Complete the provider's authorization flow.</li>
        <li>Once authorization is successful, you will see a confirmation popup</li>
      </ul>
    </Step>
  </Steps>

  <p>If the account linking is successful, you will see the newly linked account in your <a href="/guides/accounts-section">Accounts</a> page.</p>
</div>
