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

# Permissions hooks

> React query and mutation hooks for Permissions

export const Card = ({imgUrl, compactImgUrl, title, description, href, horizontal = false, newTab = false}) => {
  const [isHovered, setIsHovered] = useState(false);
  const handleClick = e => {
    e.preventDefault();
    if (newTab) {
      window.open(href, '_blank', 'noopener,noreferrer');
    } else {
      window.location.href = href;
    }
  };
  return <div className={`not-prose relative my-2 p-[1px] rounded-xl transition-all duration-300 ${isHovered && href ? 'bg-gradient-to-r from-[#FF4E00] to-[#874AE3]' : 'bg-gray-200'}`} onMouseEnter={() => setIsHovered(true)} onMouseLeave={() => setIsHovered(false)}>
      <a href={href} onClick={href ? handleClick : undefined} className={`not-prose flex ${horizontal ? 'flex-row' : 'flex-col'} font-normal h-full bg-white overflow-hidden w-full ${href ? 'cursor-pointer' : 'cursor-default'} rounded-[11px] no-underline`}>
        {imgUrl && <div className={`relative overflow-hidden flex-shrink-0 ${horizontal ? 'w-[30%] rounded-l-[11px]' : 'w-full'}`} onClick={e => e.stopPropagation()}>
            <picture style={{
    display: 'contents'
  }}>
              {compactImgUrl && <source media="(max-width: 639px)" srcSet={compactImgUrl} />}
              <img src={imgUrl} alt={title} className="w-full h-full object-cover pointer-events-none select-none" draggable="false" />
            </picture>
            <div className="absolute inset-0 pointer-events-none" />
          </div>}
        <div className={`flex-grow px-6 py-5 ${horizontal ? 'w-[70%]' : 'w-full'} flex flex-col ${horizontal && imgUrl ? 'justify-center' : 'justify-start'}`}>
          {title && <h2 className="font-semibold text-base text-gray-800 m-0">{title}</h2>}
          {description && <div className={`font-normal text-gray-500 re leading-6 ${horizontal || !imgUrl ? 'mt-0' : 'mt-1'}`}>
              <p className="m-0 text-xs">{description}</p>
            </div>}
        </div>
      </a>
    </div>;
};

export const UpdateUserPolicyParametersSummary = () => <p>Saves the signed-in user's values for a policy's adjustable parameters.</p>;

export const UpdateApprovalConfigurationSummary = () => <p>Saves new values for an approval requirement's configurable settings in an authorization scope.</p>;

export const SubmitApprovalSignatureSummary = () => <p>Submits the signed-in approver's signature to a signature collection.</p>;

export const SignApprovalTransactionSummary = () => <p>Signs a signature collection's payload with one of the signed-in approver's wallets and submits the signature.</p>;

export const ResetUserPolicyParametersSummary = () => <p>Restores the policy defaults as the signed-in user's values for its adjustable parameters.</p>;

export const ResetApprovalConfigurationSummary = () => <p>Clears the stored settings for an approval requirement so the authored defaults apply again.</p>;

export const RejectApprovalCaseSummary = () => <p>Records the signed-in approver's rejection, which ends the approval case.</p>;

export const ListUserPolicyParameterHistorySummary = () => <p>Lists the saved revisions of the signed-in user's values for one policy, newest first.</p>;

export const ListUserPolicyConsentsSummary = () => <p>Lists the consent requests for a wallet of the signed-in user, with the status of each.</p>;

export const ListUserAdjustablePoliciesSummary = () => <p>Lists the policies whose parameters the signed-in user can adjust, with the user's current values.</p>;

export const ListPoliciesSummary = () => <p>Lists your app's active policies that do not target specific users or wallets.</p>;

export const ListInitiatedApprovalCasesSummary = () => <p>Lists the approval cases for requests the signed-in user started, newest first.</p>;

export const ListConfigurableApprovalRequirementsSummary = () => <p>Lists the approval requirements the signed-in user can configure in an authorization scope.</p>;

export const ListApprovalConfigurationHistorySummary = () => <p>Lists every stored revision of an approval requirement's settings in an authorization scope, newest first.</p>;

export const ListApplicablePoliciesSummary = () => <p>Lists the active policies that apply to a wallet of the signed-in user.</p>;

export const ListAccessibleApprovalCasesSummary = () => <p>Lists the approval cases the signed-in user can review, and the signature collections they started.</p>;

export const GetUserPolicyUsageSummary = () => <p>Reads the current spend usage of a policy for a wallet of the signed-in user.</p>;

export const GetUserPolicyParametersSummary = () => <p>Reads the signed-in user's values for one policy's adjustable parameters, with the declarations and current revision.</p>;

export const GetUserPolicyConsentSummary = () => <p>Reads the consent status of one policy for a wallet of the signed-in user.</p>;

export const GetUserApprovalAssignmentsSummary = () => <p>Reads the signed-in user's roles and attributes in an authorization scope.</p>;

export const GetPolicySummary = () => <p>Reads the active version of a policy that does not target specific users or wallets.</p>;

export const GetPolicyConsentUrlSummary = () => <p>Builds the Portal URL where the signed-in user reviews a policy and consents to it.</p>;

export const GetInitiatedApprovalCaseSummary = () => <p>Reads an approval case for a request the signed-in user started.</p>;

export const GetEffectiveApprovalConfigurationSummary = () => <p>Reads an approval requirement with the stored settings for an authorization scope applied.</p>;

export const GetConfigurableApprovalRequirementSummary = () => <p>Reads one approval requirement the signed-in user can configure, in a specific policy version.</p>;

export const GetApprovalSigningPayloadSummary = () => <p>Reads what the signed-in approver signs in the current stage of a signature collection.</p>;

export const GetApprovalSignaturesSummary = () => <p>Reads the collected signatures once a signature collection is complete.</p>;

export const GetApprovalConfigurationSummary = () => <p>Reads the stored settings and revision for an approval requirement in an authorization scope.</p>;

export const GetApprovalCaseReviewUrlSummary = () => <p>Builds the Portal URL where the signed-in approver reviews an approval case.</p>;

export const GetApplicablePolicySummary = () => <p>Reads one active policy that applies to a wallet of the signed-in user.</p>;

export const GetAccessibleApprovalCaseSummary = () => <p>Reads an approval case the signed-in user can review, with the user's decision options.</p>;

export const CreateApprovalSignatureCollectionSummary = () => <p>Opens an approval case that collects approvers' signatures for a transaction.</p>;

export const CancelApprovalCaseSummary = () => <p>Cancels a pending approval case for a request the signed-in user started.</p>;

export const ApproveApprovalCaseSummary = () => <p>Records the signed-in approver's approval on an approval case.</p>;

Import these hooks from `@getpara/react-sdk`, `@getpara/react-sdk-lite` or `@getpara/react-native-wallet`, and call them inside your Para provider. Each hook wraps a [Para client method](/v3/references/core/permissions/listpolicies) and keeps its access rules and Portal behavior. The link under each hook goes to that method.

## Errors

A query hook reports a failed request in `error`; a mutation rejects from its `Async` function and sets `error`. The error is the one the client method throws, described on each method page. A mutation called without a Para client fails with `no para instance`, and one called before the user is fully logged in fails with `User must be authenticated`. [Permissions errors](/v3/references/permissions/errors) lists every server error.

## Query hooks

Query hooks take the same positional arguments as their client method. They return TanStack Query `UseQueryResult<Result, Error>` with `data`, `error`, `isPending`, and `refetch`. Public discovery runs when a client exists; other queries wait for a fully authenticated user.

```typescript theme={null}
import { useApplicablePolicies } from "@getpara/react-sdk";

const { data, isPending, error } = useApplicablePolicies({ walletId });
const policies = data?.policies;
```

<a id="listpolicies" />

### usePolicies

<ListPoliciesSummary />

```typescript theme={null}
usePolicies(): UseQueryResult<PermissionsV2PolicyListResponse, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listpolicies).

<a id="getpolicy" />

### usePolicy

<GetPolicySummary />

```typescript theme={null}
usePolicy(policyId: string): UseQueryResult<PermissionsV2PolicyResponse, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getpolicy).

<a id="listapplicablepolicies" />

### useApplicablePolicies

<ListApplicablePoliciesSummary />

```typescript theme={null}
useApplicablePolicies(context: PermissionsV2WalletContext): UseQueryResult<PermissionsV2PolicyListResponse, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listapplicablepolicies).

<a id="getapplicablepolicy" />

### useApplicablePolicy

<GetApplicablePolicySummary />

```typescript theme={null}
useApplicablePolicy(policyId: string, context: PermissionsV2WalletContext): UseQueryResult<PermissionsV2PolicyResponse, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getapplicablepolicy).

<a id="listuserpolicyconsents" />

### useUserPolicyConsents

<ListUserPolicyConsentsSummary />

```typescript theme={null}
useUserPolicyConsents(context: PermissionsV2ConsentListContext): UseQueryResult<PermissionsV2DelegationConsentDiscoveryResponse, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listuserpolicyconsents).

<a id="getuserpolicyconsent" />

### useUserPolicyConsent

<GetUserPolicyConsentSummary />

```typescript theme={null}
useUserPolicyConsent(policyId: string, context: PermissionsV2WalletContext): UseQueryResult<PermissionsV2DelegationConsentView, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getuserpolicyconsent).

<a id="listuseradjustablepolicies" />

### useUserAdjustablePolicies

<ListUserAdjustablePoliciesSummary />

```typescript theme={null}
useUserAdjustablePolicies(): UseQueryResult<PermissionsV2UserAdjustablePolicyListResponse, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listuseradjustablepolicies).

<a id="getuserpolicyparameters" />

### useUserPolicyParameters

<GetUserPolicyParametersSummary />

```typescript theme={null}
useUserPolicyParameters(policyId: string): UseQueryResult<PermissionsV2UserParameterView, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getuserpolicyparameters).

<a id="listuserpolicyparameterhistory" />

### useUserPolicyParameterHistory

<ListUserPolicyParameterHistorySummary />

```typescript theme={null}
useUserPolicyParameterHistory(policyId: string, options?: PermissionsV2HistoryOptions): UseQueryResult<PermissionsV2UserParameterHistory, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listuserpolicyparameterhistory).

<a id="listconfigurableapprovalrequirements" />

### useConfigurableApprovalRequirements

<ListConfigurableApprovalRequirementsSummary />

```typescript theme={null}
useConfigurableApprovalRequirements(authorizationScopeId: string): UseQueryResult<PermissionsV2ConditionalRequirementList, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listconfigurableapprovalrequirements).

<a id="getconfigurableapprovalrequirement" />

### useConfigurableApprovalRequirement

<GetConfigurableApprovalRequirementSummary />

```typescript theme={null}
useConfigurableApprovalRequirement(reference: PermissionsV2ApprovalRequirementReference): UseQueryResult<PermissionsV2ConditionalRequirementView, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getconfigurableapprovalrequirement).

<a id="getapprovalconfiguration" />

### useApprovalConfiguration

<GetApprovalConfigurationSummary />

```typescript theme={null}
useApprovalConfiguration(reference: PermissionsV2ApprovalRequirementReference): UseQueryResult<PermissionsV2AuthorizationConfigurationView, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getapprovalconfiguration).

<a id="geteffectiveapprovalconfiguration" />

### useEffectiveApprovalConfiguration

<GetEffectiveApprovalConfigurationSummary />

```typescript theme={null}
useEffectiveApprovalConfiguration(reference: PermissionsV2ApprovalRequirementReference): UseQueryResult<PermissionsV2EffectiveAuthorizationConfiguration, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/geteffectiveapprovalconfiguration).

<a id="listapprovalconfigurationhistory" />

### useApprovalConfigurationHistory

<ListApprovalConfigurationHistorySummary />

```typescript theme={null}
useApprovalConfigurationHistory(reference: PermissionsV2ApprovalRequirementReference): UseQueryResult<PermissionsV2AuthorizationConfigurationHistory, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listapprovalconfigurationhistory).

<a id="getuserapprovalassignments" />

### useUserApprovalAssignments

<GetUserApprovalAssignmentsSummary />

```typescript theme={null}
useUserApprovalAssignments(authorizationScopeId: string): UseQueryResult<PermissionsV2AuthoritySetView, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getuserapprovalassignments).

<a id="getuserapprovalcapabilities" />

### useUserApprovalCapabilities

<ListConfigurableApprovalRequirementsSummary />

```typescript theme={null}
useUserApprovalCapabilities(authorizationScopeId: string): UseQueryResult<PermissionsV2AuthorizationScopeCapabilities, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getuserapprovalcapabilities).

<a id="listaccessibleapprovalcases" />

### useAccessibleApprovalCases

<ListAccessibleApprovalCasesSummary />

```typescript theme={null}
useAccessibleApprovalCases(): UseQueryResult<{ cases: PermissionsV2ConditionalApprovalCaseView[] }, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listaccessibleapprovalcases).

<a id="getaccessibleapprovalcase" />

### useAccessibleApprovalCase

<GetAccessibleApprovalCaseSummary />

```typescript theme={null}
useAccessibleApprovalCase(caseId: string): UseQueryResult<PermissionsV2ConditionalApprovalCaseView, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getaccessibleapprovalcase).

<a id="listinitiatedapprovalcases" />

### useInitiatedApprovalCases

<ListInitiatedApprovalCasesSummary />

```typescript theme={null}
useInitiatedApprovalCases(options?: PermissionsV2CaseListOptions): UseQueryResult<PermissionsV2ConditionalApprovalCaseList, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/listinitiatedapprovalcases).

<a id="getinitiatedapprovalcase" />

### useInitiatedApprovalCase

<GetInitiatedApprovalCaseSummary />

```typescript theme={null}
useInitiatedApprovalCase(caseId: string): UseQueryResult<PermissionsV2ConditionalApprovalCaseView, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getinitiatedapprovalcase).

<a id="getapprovalsigningpayload" />

### useApprovalSigningPayload

<GetApprovalSigningPayloadSummary />

```typescript theme={null}
useApprovalSigningPayload(caseId: string): UseQueryResult<PermissionsV2ApprovalSigningPayload, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getapprovalsigningpayload).

<a id="getapprovalsignatures" />

### useApprovalSignatures

<GetApprovalSignaturesSummary />

```typescript theme={null}
useApprovalSignatures(caseId: string): UseQueryResult<PermissionsV2ApprovalSignatures, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getapprovalsignatures).

<a id="getuserpolicyusage" />

### useUserPolicyUsage

<GetUserPolicyUsageSummary />

```typescript theme={null}
useUserPolicyUsage(policyId: string, context: PermissionsV2UsageContext): UseQueryResult<PermissionsV2PolicyUsage, Error>
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getuserpolicyusage).

## Mutation hooks

Mutation hooks take no arguments. The returned functions are named after the client method: `method(variables)` starts a mutation and `methodAsync(variables)` returns its promise. Results also include `data`, `error`, `isPending`, and `reset`. Successful writes invalidate the current user's permissions queries; generating a Portal URL does not.

```typescript theme={null}
import { useGetPolicyConsentUrl } from "@getpara/react-sdk";

const { getPolicyConsentUrlAsync, isPending } = useGetPolicyConsentUrl();
const url = await getPolicyConsentUrlAsync({ walletId, policyId });
window.open(url, "_blank");
```

<a id="updateuserpolicyparameters" />

### useUpdateUserPolicyParameters

<UpdateUserPolicyParametersSummary />

```typescript theme={null}
const { updateUserPolicyParameters, updateUserPolicyParametersAsync, data, error, isPending, reset } = useUpdateUserPolicyParameters();
// Mutation variables: { policyId: string; body: PermissionsV2UserParameterSave }
// updateUserPolicyParametersAsync returns Promise<PermissionsV2UserParameterView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/updateuserpolicyparameters).

<a id="resetuserpolicyparameters" />

### useResetUserPolicyParameters

<ResetUserPolicyParametersSummary />

```typescript theme={null}
const { resetUserPolicyParameters, resetUserPolicyParametersAsync, data, error, isPending, reset } = useResetUserPolicyParameters();
// Mutation variables: { policyId: string; body: PermissionsV2UserParameterReset }
// resetUserPolicyParametersAsync returns Promise<PermissionsV2UserParameterView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/resetuserpolicyparameters).

<a id="updateapprovalconfiguration" />

### useUpdateApprovalConfiguration

<UpdateApprovalConfigurationSummary />

```typescript theme={null}
const { updateApprovalConfiguration, updateApprovalConfigurationAsync, data, error, isPending, reset } = useUpdateApprovalConfiguration();
// Mutation variables: { reference: PermissionsV2ApprovalRequirementReference; body: PermissionsV2AuthorizationConfigurationWrite }
// updateApprovalConfigurationAsync returns Promise<PermissionsV2AuthorizationConfigurationView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/updateapprovalconfiguration).

<a id="resetapprovalconfiguration" />

### useResetApprovalConfiguration

<ResetApprovalConfigurationSummary />

```typescript theme={null}
const { resetApprovalConfiguration, resetApprovalConfigurationAsync, data, error, isPending, reset } = useResetApprovalConfiguration();
// Mutation variables: { reference: PermissionsV2ApprovalRequirementReference; expectedRevision: number; force?: boolean }
// resetApprovalConfigurationAsync returns Promise<PermissionsV2AuthorizationConfigurationView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/resetapprovalconfiguration).

<a id="approveapprovalcase" />

### useApproveApprovalCase

<ApproveApprovalCaseSummary />

```typescript theme={null}
const { approveApprovalCase, approveApprovalCaseAsync, data, error, isPending, reset } = useApproveApprovalCase();
// Mutation variables: string
// approveApprovalCaseAsync returns Promise<PermissionsV2ConditionalApprovalCaseView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/approveapprovalcase).

<a id="rejectapprovalcase" />

### useRejectApprovalCase

<RejectApprovalCaseSummary />

```typescript theme={null}
const { rejectApprovalCase, rejectApprovalCaseAsync, data, error, isPending, reset } = useRejectApprovalCase();
// Mutation variables: string
// rejectApprovalCaseAsync returns Promise<PermissionsV2ConditionalApprovalCaseView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/rejectapprovalcase).

<a id="cancelapprovalcase" />

### useCancelApprovalCase

<CancelApprovalCaseSummary />

```typescript theme={null}
const { cancelApprovalCase, cancelApprovalCaseAsync, data, error, isPending, reset } = useCancelApprovalCase();
// Mutation variables: string
// cancelApprovalCaseAsync returns Promise<PermissionsV2ConditionalApprovalCaseView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/cancelapprovalcase).

<a id="createapprovalsignaturecollection" />

### useCreateApprovalSignatureCollection

<CreateApprovalSignatureCollectionSummary />

```typescript theme={null}
const { createApprovalSignatureCollection, createApprovalSignatureCollectionAsync, data, error, isPending, reset } = useCreateApprovalSignatureCollection();
// Mutation variables: PermissionsV2TransactionSignatureCollection
// createApprovalSignatureCollectionAsync returns Promise<PermissionsV2ApprovalSignatureCollectionResult>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/createapprovalsignaturecollection).

<a id="submitapprovalsignature" />

### useSubmitApprovalSignature

<SubmitApprovalSignatureSummary />

```typescript theme={null}
const { submitApprovalSignature, submitApprovalSignatureAsync, data, error, isPending, reset } = useSubmitApprovalSignature();
// Mutation variables: { caseId: string; body: PermissionsV2ConditionalApprovalSignature }
// submitApprovalSignatureAsync returns Promise<PermissionsV2ConditionalApprovalCaseView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/submitapprovalsignature).

<a id="signapprovaltransaction" />

### useSignApprovalTransaction

<SignApprovalTransactionSummary />

```typescript theme={null}
const { signApprovalTransaction, signApprovalTransactionAsync, data, error, isPending, reset } = useSignApprovalTransaction();
// Mutation variables: SignApprovalTransactionParams
// signApprovalTransactionAsync returns Promise<PermissionsV2ConditionalApprovalCaseView>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/signapprovaltransaction).

<a id="getpolicyconsenturl" />

### useGetPolicyConsentUrl

<GetPolicyConsentUrlSummary />

```typescript theme={null}
const { getPolicyConsentUrl, getPolicyConsentUrlAsync, data, error, isPending, reset } = useGetPolicyConsentUrl();
// Mutation variables: { walletId: string; policyId: string }
// getPolicyConsentUrlAsync returns Promise<string>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getpolicyconsenturl).

<a id="getapprovalcasereviewurl" />

### useGetApprovalCaseReviewUrl

<GetApprovalCaseReviewUrlSummary />

```typescript theme={null}
const { getApprovalCaseReviewUrl, getApprovalCaseReviewUrlAsync, data, error, isPending, reset } = useGetApprovalCaseReviewUrl();
// Mutation variables: { caseId: string }
// getApprovalCaseReviewUrlAsync returns Promise<string>.
```

[Arguments, result, and access requirements](/v3/references/core/permissions/getapprovalcasereviewurl).

<CardGroup cols={3}>
  <Card imgUrl="/images/v3/cards/sdk-list-policies.png" title="Para client methods" description="Arguments, access and errors for each method." href="/v3/references/core/permissions/listpolicies" />

  <Card imgUrl="/images/v3/cards/sdk-permissions-actions.png" title="Permissions actions" description="The same operations with an explicit Para client." href="/v3/references/actions/permissions" />

  <Card imgUrl="/images/v3/cards/concept-permissions-types.png" title="Permissions types" description="Inputs and responses for every Permissions method." href="/v3/references/types/permissions" />
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.