---
title: "Grant follow access"
---

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

Path: Sureshake API › entities

`PUT /v2/entities/{id}/follow-access/policies`

## Path parameters

- `id` (`entity-grant-follow-access.path.id`; string, required)
  - format `uuid`

## Request body

- `principalType` (`entity-grant-follow-access.principalType`; string, optional)
  - one of `"user"`, `"entity"`, `"organization"`; default `"user"`
- `principalId` (`entity-grant-follow-access.principalId`; string, optional)
  - minLength 1
- `followerUserId` (`entity-grant-follow-access.followerUserId`; string, optional)
  - minLength 1
- `artifactPolicyMode` (`entity-grant-follow-access.artifactPolicyMode`; string, optional)
  - one of `"all_reports"`, `"selector_based"`; default `"all_reports"`
- `allowedReportTypes` (`entity-grant-follow-access.allowedReportTypes`; array<string>, optional)
  - minLength 1; default `[]`
- `allowedDocumentSourceTypes` (`entity-grant-follow-access.allowedDocumentSourceTypes`; array<string>, optional)
  - minLength 1; default `[]`
- `allowedTagIds` (`entity-grant-follow-access.allowedTagIds`; array<string>, optional)
  - format `uuid`; default `[]`
- `allowedReportIds` (`entity-grant-follow-access.allowedReportIds`; array<string>, optional)
  - format `uuid`; default `[]`
- `linkedArtifactAccess` (`entity-grant-follow-access.linkedArtifactAccess`; string, optional)
  - one of `"none"`, `"derived_only"`, `"full_artifact"`; default `"derived_only"`
- `profileAccessTier` (`entity-grant-follow-access.profileAccessTier`; string, optional)
  - one of `"public"`, `"follower"`, `"capital"`, `"diligence"`, `"custom"`; default `"follower"`
- `allowedProfileFields` (`entity-grant-follow-access.allowedProfileFields`; array<string>, optional)
  - one of `"stage"`, `"sector"`, `"geography"`, `"raiseStatus"`, `"tractionSummary"`, `"website"`, `"linkedinUrl"`, `"xHandle"`; default `[]`

## Example request

```json
{
  "principalType": "user",
  "principalId": "string",
  "followerUserId": "string",
  "artifactPolicyMode": "all_reports",
  "allowedReportTypes": [],
  "allowedDocumentSourceTypes": [],
  "allowedTagIds": [],
  "allowedReportIds": [],
  "linkedArtifactAccess": "none",
  "profileAccessTier": "public",
  "allowedProfileFields": []
}
```

## Code samples

### cURL

```bash
curl --request PUT \
  --url 'https://api.sureshake.com/v2/entities/<id>/follow-access/policies' \
  --header 'Content-Type: application/json' \
  --data '
{
  "principalType": "user",
  "principalId": "string",
  "followerUserId": "string",
  "artifactPolicyMode": "all_reports",
  "allowedReportTypes": [],
  "allowedDocumentSourceTypes": [],
  "allowedTagIds": [],
  "allowedReportIds": [],
  "linkedArtifactAccess": "none",
  "profileAccessTier": "public",
  "allowedProfileFields": []
}
'
```

### TypeScript

```typescript
const url = 'https://api.sureshake.com/v2/entities/<id>/follow-access/policies';
const options = {
  method: 'PUT',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    principalType: 'user',
    principalId: 'string',
    followerUserId: 'string',
    artifactPolicyMode: 'all_reports',
    allowedReportTypes: [],
    allowedDocumentSourceTypes: [],
    allowedTagIds: [],
    allowedReportIds: [],
    linkedArtifactAccess: 'none',
    profileAccessTier: 'public',
    allowedProfileFields: []
  })
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.sureshake.com/v2/entities/<id>/follow-access/policies"

payload = {
    "principalType": "user",
    "principalId": "string",
    "followerUserId": "string",
    "artifactPolicyMode": "all_reports",
    "allowedReportTypes": [],
    "allowedDocumentSourceTypes": [],
    "allowedTagIds": [],
    "allowedReportIds": [],
    "linkedArtifactAccess": "none",
    "profileAccessTier": "public",
    "allowedProfileFields": []
}
headers = {"Content-Type": "application/json"}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
```

## Responses

### 200

Default Response

#### Example

```json
{
  "success": true,
  "policy": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5",
    "principalType": "user",
    "principalId": "string",
    "status": "approved",
    "artifactPolicyMode": "all_reports",
    "allowedReportTypes": [
      "string"
    ],
    "allowedDocumentSourceTypes": [
      "string"
    ],
    "allowedTagIds": [
      "string"
    ],
    "allowedReportIds": [
      "string"
    ],
    "linkedArtifactAccess": "none",
    "profileAccessTier": "public",
    "allowedProfileFields": [
      "stage"
    ],
    "grantedByUserId": "string",
    "grantedAt": "string",
    "updatedAt": "string",
    "revokedAt": "string",
    "revocationReason": "string"
  }
}
```

- `success` (`entity-grant-follow-access.response.200.success`; boolean, required)
- `policy` (`entity-grant-follow-access.response.200.policy`; object, required)
  - `id` (`entity-grant-follow-access.response.200.policy.id`; string, required)
    - format `uuid`
  - `entityId` (`entity-grant-follow-access.response.200.policy.entityId`; string, required)
    - format `uuid`
  - `principalType` (`entity-grant-follow-access.response.200.policy.principalType`; string, required)
    - one of `"user"`, `"entity"`, `"organization"`
  - `principalId` (`entity-grant-follow-access.response.200.policy.principalId`; string, required)
  - `status` (`entity-grant-follow-access.response.200.policy.status`; string, required)
    - one of `"approved"`, `"revoked"`
  - `artifactPolicyMode` (`entity-grant-follow-access.response.200.policy.artifactPolicyMode`; string, required)
    - one of `"all_reports"`, `"selector_based"`
  - `allowedReportTypes` (`entity-grant-follow-access.response.200.policy.allowedReportTypes`; array<string>, required)
  - `allowedDocumentSourceTypes` (`entity-grant-follow-access.response.200.policy.allowedDocumentSourceTypes`; array<string>, required)
  - `allowedTagIds` (`entity-grant-follow-access.response.200.policy.allowedTagIds`; array<string>, required)
  - `allowedReportIds` (`entity-grant-follow-access.response.200.policy.allowedReportIds`; array<string>, required)
  - `linkedArtifactAccess` (`entity-grant-follow-access.response.200.policy.linkedArtifactAccess`; string, required)
    - one of `"none"`, `"derived_only"`, `"full_artifact"`
  - `profileAccessTier` (`entity-grant-follow-access.response.200.policy.profileAccessTier`; string, required)
    - one of `"public"`, `"follower"`, `"capital"`, `"diligence"`, `"custom"`
  - `allowedProfileFields` (`entity-grant-follow-access.response.200.policy.allowedProfileFields`; array<string>, required)
    - one of `"stage"`, `"sector"`, `"geography"`, `"raiseStatus"`, `"tractionSummary"`, `"website"`, `"linkedinUrl"`, `"xHandle"`
  - `grantedByUserId` (`entity-grant-follow-access.response.200.policy.grantedByUserId`; string, required)
  - `grantedAt` (`entity-grant-follow-access.response.200.policy.grantedAt`; string, required)
  - `updatedAt` (`entity-grant-follow-access.response.200.policy.updatedAt`; string, required)
  - `revokedAt` (`entity-grant-follow-access.response.200.policy.revokedAt`; string, required, nullable)
  - `revocationReason` (`entity-grant-follow-access.response.200.policy.revocationReason`; string, required, nullable)

### 400

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.400.error`; object, required)
  - `code` (`entity-grant-follow-access.response.400.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.400.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.400.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.400.error.traceId`; string, optional) — Unique ID for log correlation

### 401

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.401.error`; object, required)
  - `code` (`entity-grant-follow-access.response.401.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.401.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.401.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.401.error.traceId`; string, optional) — Unique ID for log correlation

### 403

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.403.error`; object, required)
  - `code` (`entity-grant-follow-access.response.403.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.403.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.403.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.403.error.traceId`; string, optional) — Unique ID for log correlation

### 404

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.404.error`; object, required)
  - `code` (`entity-grant-follow-access.response.404.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.404.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.404.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.404.error.traceId`; string, optional) — Unique ID for log correlation

### 409

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.409.error`; object, required)
  - `code` (`entity-grant-follow-access.response.409.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.409.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.409.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.409.error.traceId`; string, optional) — Unique ID for log correlation

### 422

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.422.error`; object, required)
  - `code` (`entity-grant-follow-access.response.422.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.422.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.422.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.422.error.traceId`; string, optional) — Unique ID for log correlation

### 429

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.429.error`; object, required)
  - `code` (`entity-grant-follow-access.response.429.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.429.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.429.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.429.error.traceId`; string, optional) — Unique ID for log correlation

### 500

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.500.error`; object, required)
  - `code` (`entity-grant-follow-access.response.500.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.500.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.500.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.500.error.traceId`; string, optional) — Unique ID for log correlation

### 503

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-grant-follow-access.response.503.error`; object, required)
  - `code` (`entity-grant-follow-access.response.503.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-grant-follow-access.response.503.error.message`; string, required) — Human-readable error message
  - `details` (`entity-grant-follow-access.response.503.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-grant-follow-access.response.503.error.traceId`; string, optional) — Unique ID for log correlation


Source: https://docs.sureshake.com/reference/entity-grant-follow-access/index.md
