> For the complete documentation index, see [llms.txt](https://peoplescourt.ai/llms.txt). This page is also available as Markdown.

# Explicitly approve bounded standing or existing-case authority

A signed-in verified principal explicitly accepts current terms. Name a case already owned by that principal or bounded standing authority. Acts, USD cap, expiry, ordinary clock, standard procedure and optional transaction scope are checked server-side. Standing authority lapses when Rules or disclosure changes.

Reference

Authorizations

POST

partial

`/api/authorizations/authority-grants`

`createAccountAuthorityGrant`

## Authentication and authority

Use one listed account-session, scoped OAuth, or partner credential alternative. Account tokens retain the approving account’s authority. Cookie-authenticated writes require same-origin authorization. Alternatives are OR; schemes in one alternative are AND.

`CanonicalSession`

The signed-in account’s session. Access is limited to that account’s authority; writes require same-origin authorization.

## Parameters

This operation has no path, query, or header parameters.

## Request body

Required request body.

application/json

```json
{
  "type": "object",
  "properties": {
    "clientId": {
      "type": "string"
    },
    "scope": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "cases:read",
          "fees:agentic:write",
          "executions:report",
          "filings:write",
          "answers:write",
          "submissions:write",
          "records:confirm",
          "records:write",
          "invitations:write",
          "messages:write",
          "remedies:write",
          "representatives:manage",
          "procedural:request",
          "termination:write",
          "consents:write",
          "offline_access"
        ]
      }
    },
    "caseId": {
      "type": "string"
    },
    "standing": {
      "$ref": "#/components/schemas/AccountStandingBounds",
      "type": "object",
      "properties": {
        "acts": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "file_dispute",
              "answer"
            ]
          }
        },
        "maximumAmount": {
          "type": "object",
          "properties": {
            "currency": {
              "type": "string",
              "const": "USD"
            },
            "minorUnits": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,14}$"
            }
          },
          "required": [
            "currency",
            "minorUnits"
          ]
        },
        "transactionIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time"
        },
        "procedure": {
          "type": "string",
          "const": "standard"
        },
        "clock": {
          "type": "string",
          "const": "ordinary"
        }
      },
      "required": [
        "acts",
        "maximumAmount",
        "expiresAt",
        "procedure",
        "clock"
      ]
    },
    "accepted": {
      "type": "boolean",
      "const": true
    },
    "terms": {
      "$ref": "#/components/schemas/AccountOAuthTerms",
      "type": "object",
      "properties": {
        "rulesVersion": {
          "type": "string"
        },
        "rulesHash": {
          "type": "string"
        },
        "disclosureVersion": {
          "type": "string"
        },
        "disclosureHash": {
          "type": "string"
        }
      },
      "required": [
        "rulesVersion",
        "rulesHash",
        "disclosureVersion",
        "disclosureHash"
      ]
    }
  },
  "required": [
    "clientId",
    "scope",
    "accepted",
    "terms"
  ]
}
```

## Responses

### 201

Successful operation.

application/json

```json
{
  "type": "object",
  "properties": {
    "grant": {
      "$ref": "#/components/schemas/AccountAuthorityGrant",
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "principalId": {
          "type": "string"
        },
        "clientId": {
          "type": "string"
        },
        "delegatePartnerId": {
          "type": "string"
        },
        "scope": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "cases:read",
              "fees:agentic:write",
              "executions:report",
              "filings:write",
              "answers:write",
              "submissions:write",
              "records:confirm",
              "records:write",
              "invitations:write",
              "messages:write",
              "remedies:write",
              "representatives:manage",
              "procedural:request",
              "termination:write",
              "consents:write",
              "offline_access"
            ]
          }
        },
        "resource": {
          "type": "string"
        },
        "terms": {
          "$ref": "#/components/schemas/AccountOAuthTerms",
          "type": "object",
          "properties": {
            "rulesVersion": {
              "type": "string"
            },
            "rulesHash": {
              "type": "string"
            },
            "disclosureVersion": {
              "type": "string"
            },
            "disclosureHash": {
              "type": "string"
            }
          },
          "required": [
            "rulesVersion",
            "rulesHash",
            "disclosureVersion",
            "disclosureHash"
          ]
        },
        "caseId": {
          "type": "string"
        },
        "caseBinding": {
          "type": "object",
          "properties": {
            "disputeId": {
              "type": "string"
            },
            "membershipId": {
              "type": "string"
            },
            "side": {
              "type": "string",
              "enum": [
                "claimant",
                "respondent"
              ]
            }
          },
          "required": [
            "disputeId",
            "membershipId",
            "side"
          ]
        },
        "standing": {
          "$ref": "#/components/schemas/AccountStandingBounds",
          "type": "object",
          "properties": {
            "acts": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "file_dispute",
                  "answer"
                ]
              }
            },
            "maximumAmount": {
              "type": "object",
              "properties": {
                "currency": {
                  "type": "string",
                  "const": "USD"
                },
                "minorUnits": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]{0,14}$"
                }
              },
              "required": [
                "currency",
                "minorUnits"
              ]
            },
            "transactionIds": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "expiresAt": {
              "type": "string",
              "format": "date-time"
            },
            "procedure": {
              "type": "string",
              "const": "standard"
            },
            "clock": {
              "type": "string",
              "const": "ordinary"
            }
          },
          "required": [
            "acts",
            "maximumAmount",
            "expiresAt",
            "procedure",
            "clock"
          ]
        },
        "approvedAt": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string"
        },
        "revokedAt": {
          "type": "string"
        },
        "source": {
          "type": "string",
          "enum": [
            "authorization_code",
            "hosted_link",
            "agent_registration",
            "connector"
          ]
        },
        "termsChange": {
          "type": "string",
          "enum": [
            "hold_writes"
          ],
          "description": "Set on a connector grant approved through a consent screen that states the hold. A later Rules or disclosure change holds the grant, allowing only cases:read, until the person re-accepts."
        },
        "termsHistory": {
          "type": "array",
          "description": "Terms this grant carried before each re-acceptance, oldest first.",
          "items": {
            "type": "object",
            "properties": {
              "terms": {
                "$ref": "#/components/schemas/AccountOAuthTerms",
                "type": "object",
                "properties": {
                  "rulesVersion": {
                    "type": "string"
                  },
                  "rulesHash": {
                    "type": "string"
                  },
                  "disclosureVersion": {
                    "type": "string"
                  },
                  "disclosureHash": {
                    "type": "string"
                  }
                },
                "required": [
                  "rulesVersion",
                  "rulesHash",
                  "disclosureVersion",
                  "disclosureHash"
                ]
              },
              "acceptedAt": {
                "type": "string"
              },
              "supersededAt": {
                "type": "string"
              },
              "via": {
                "type": "string",
                "enum": [
                  "consent_screen",
                  "account_reacceptance"
                ]
              }
            },
            "required": [
              "terms",
              "acceptedAt",
              "supersededAt",
              "via"
            ]
          }
        },
        "reacceptance": {
          "type": "object",
          "description": "The latest re-acceptance of the current terms from the person's account.",
          "properties": {
            "at": {
              "type": "string"
            },
            "sessionId": {
              "type": "string"
            },
            "statementSha256": {
              "type": "string"
            }
          },
          "required": [
            "at",
            "sessionId",
            "statementSha256"
          ]
        },
        "status": {
          "type": "string",
          "enum": [
            "active",
            "expired",
            "revoked",
            "reacceptance_required",
            "held"
          ]
        }
      },
      "required": [
        "id",
        "principalId",
        "clientId",
        "scope",
        "resource",
        "terms",
        "approvedAt",
        "expiresAt",
        "source"
      ]
    }
  },
  "required": [
    "grant"
  ]
}
```

### default

Authorization failure; consent_required requires explicit reacceptance.

application/json

```json
{
  "$ref": "#/components/schemas/AccountOAuthError",
  "type": "object",
  "properties": {
    "error": {
      "type": "string"
    },
    "error_description": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ]
}
```

## Example response

### Successful response

```json
{
  "grant": {
    "id": "id_test",
    "principalId": "principal_test_123",
    "clientId": "clientId_test",
    "scope": [
      "cases:read"
    ],
    "resource": "resource_test",
    "terms": {
      "rulesVersion": "rulesVersion_test",
      "rulesHash": "rulesHash_test",
      "disclosureVersion": "disclosureVersion_test",
      "disclosureHash": "disclosureHash_test"
    },
    "approvedAt": "approvedAt_test",
    "expiresAt": "expiresAt_test",
    "source": "authorization_code"
  }
}
```

## Errors

Read the response status and stable error code. See [errors](https://peoplescourt.ai/docs/api/errors.md) and [rate limits](https://peoplescourt.ai/docs/api/rate-limits.md) for recovery. Refresh the resource before resolving a state or digest conflict.

## Idempotency and retries

- For throttling, honor Retry-After when present. Back off on retryable server failures.
- The request is accepted only when its credential, authority, case state, and resource preconditions are satisfied.

## Request examples

Use `https://peoplescourt.ai` with the test credential issued for your integration.

```sh
curl --request POST \
  --url 'https://peoplescourt.ai/api/authorizations/authority-grants' \
  --header 'Cookie: arb_session=COPY_ACCOUNT_SESSION' \
  --header 'Origin: https://peoplescourt.ai' \
  --header 'Content-Type: application/json' \
  --data '{
  "clientId": "clientId_test",
  "scope": [
    "cases:read"
  ],
  "accepted": true,
  "terms": {
    "rulesVersion": "rulesVersion_test",
    "rulesHash": "rulesHash_test",
    "disclosureVersion": "disclosureVersion_test",
    "disclosureHash": "disclosureHash_test"
  }
}'
```

```ts
const input = {
  "clientId": "clientId_test",
  "scope": [
    "cases:read"
  ],
  "accepted": true,
  "terms": {
    "rulesVersion": "rulesVersion_test",
    "rulesHash": "rulesHash_test",
    "disclosureVersion": "disclosureVersion_test",
    "disclosureHash": "disclosureHash_test"
  }
};

const response = await fetch("https://peoplescourt.ai/api/authorizations/authority-grants", {
  method: "POST",
  headers: {
    "Cookie": "arb_session=COPY_ACCOUNT_SESSION",
    "Origin": "https://peoplescourt.ai",
    "Content-Type": "application/json"
  },
  body: JSON.stringify(input),
});
if (!response.ok) throw await response.json();
const result = await response.json();
```

```python
import requests

response = requests.post(
    "https://peoplescourt.ai/api/authorizations/authority-grants",
    headers={
      "Cookie": "arb_session=COPY_ACCOUNT_SESSION",
      "Origin": "https://peoplescourt.ai",
      "Content-Type": "application/json"
    },
    json={"clientId": "clientId_test", "scope": ["cases:read"], "accepted": True, "terms": {"rulesVersion": "rulesVersion_test", "rulesHash": "rulesHash_test", "disclosureVersion": "disclosureVersion_test", "disclosureHash": "disclosureHash_test"}},
    timeout=30,
)
response.raise_for_status()
result = response.json()
```
