# Manage Recording Sharing — Grain

> Shares or unshares a recording with a specific user or team. Use List Recordings to find the recording's ID, and List Users or List Teams to resolve the target's ID. Set operation to share to grant access or unshare to revoke it, and…

- Key: `grain-manage-recording-sharing`
- Type: Action (Write)
- Version: 0.0.1
- App: Grain (`grain`) — https://pipedream.com/apps/grain.md
- This page (HTML): https://pipedream.com/apps/grain/actions/manage-recording-sharing
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/grain/actions/manage-recording-sharing/manage-recording-sharing.mjs

## Description

Shares or unshares a recording with a specific user or team. Use **List Recordings** to find the recording's ID, and **List Users** or **List Teams** to resolve the target's ID. Set `operation` to `share` to grant access or `unshare` to revoke it, and `targetType` to `user` or `team`. Example: `recordingId: "pppp6666-qq77-rr88-ss99-tttt00000000", operation: "share", targetType: "user", targetId: "d91b7ed0-a149-425c-9623-0664148e4fc1"` shares the recording with that user and returns `{"success": true}`. [See the documentation](https://developers.grain.com/#share-recording-to-a-team)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `recordingId` | `string` | Yes | The ID of the recording to fetch. Use List Recordings to find recording IDs. |
| `operation` | `string` | Yes | Whether to share or unshare the recording. |
| `targetType` | `string` | Yes | Whether the target is a user or a team. |
| `targetId` | `string` | Yes | The ID of the user (from List Users) or team (from List Teams) to share or unshare the recording with. E.g. d91b7ed0-a149-425c-9623-0664148e4fc1. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "grain",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "grain-manage-recording-sharing",
  arguments: {
    recordingId: "Recording ID",
    operation: "Operation",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "grain-manage-recording-sharing",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    grain: { authProvisionId: "apn_xxxxxxx" },
    recordingId: "Recording ID",
    operation: "Operation",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "grain-manage-recording-sharing",
    "configured_props": {
      "grain": { "authProvisionId": "apn_xxxxxxx" },
      "recordingId": "Recording ID",
      "operation": "Operation"
    }
  }'
```

---

- App: https://pipedream.com/apps/grain.md · All apps: https://pipedream.com/apps
