> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://docs.prividium.com/api/mcp` to find what you need.
>
> **Have feedback?** Use `submit_feedback` on the same MCP server.

# contract-permissions

Contract permission management endpoints

## GET /contract-permissions/

`GET /contract-permissions/`

List contract permissions with pagination

### Query parameters

- `limit` `integer`
- `offset` `integer`
- `contractAddress` `string`
- `methodSelector` `string`
- `roleId` `string`

### Responses

#### `200`: Default Response

Body (`application/json`):

- `items` `object[]` _(required)_
  - `id` `integer` _(required)_
  - `contractAddress` `string` _(required)_
  - `methodSelector` `string` _(required)_
  - `accessType` `string` _(required)_
  - `functionSignature` `string` _(required)_
  - `ruleType` `string` _(required)_
  - `isUmbrella` `boolean` _(required)_
  - `organizationOnly` `boolean`
  - `createdAt` `string <date-time>` _(required)_
  - `updatedAt` `string <date-time>` _(required)_
  - `roles` `object[]`
    - `id` `string` _(required)_
    - `roleName` `string`
  - `argumentRestrictions` `object[]`
    - `argumentIndex` `integer` _(required)_
- `pagination` `object` _(required)_
  - `currentPage` `number` _(required)_
  - `totalPages` `number` _(required)_
  - `totalItems` `number` _(required)_
  - `limit` `number` _(required)_
  - `offset` `number` _(required)_

#### `400`: Default Response

Body (`application/json`):

- `error` `object` _(required)_
  - `code` `string` _(required)_
  - `message` `string` _(required)_
  - `issues` `unknown[]`

#### `401`: Default Response

Body (`application/json`):

- `error` `object` _(required)_
  - `code` `string` _(required)_
  - `message` `string` _(required)_
  - `issues` `unknown[]`

#### `403`: Default Response

Body (`application/json`):

- `error` `object` _(required)_
  - `code` `string` _(required)_
  - `message` `string` _(required)_
  - `issues` `unknown[]`

### Example request

```bash
curl '/api/contract-permissions/?limit=10&offset=0&contractAddress=string&methodSelector=string&roleId=string'
```

```ts
fetch('/api/contract-permissions/?limit=10&offset=0&contractAddress=string&methodSelector=string&roleId=string')
```

## POST /contract-permissions/

`POST /contract-permissions/`

Create a new contract permission (a function-level authorization rule)

### Request body (required) (`application/json`)

- `contractAddress` `string` _(required)_
- `methodSelector` `string`
- `accessType` `string` _(required)_
- `functionSignature` `string` _(required)_
- `ruleType` `string` _(required)_
- `isUmbrella` `boolean`
- `organizationOnly` `boolean`
- `roles` `object[]`
  - `id` `string` _(required)_
  - `roleName` `string`
- `argumentRestrictions` `object[]`
  - `argumentIndex` `integer` _(required)_

### Responses

#### `201`: Default Response

Body (`application/json`):

- `id` `integer` _(required)_
- `contractAddress` `string` _(required)_
- `methodSelector` `string` _(required)_
- `accessType` `string` _(required)_
- `functionSignature` `string` _(required)_
- `ruleType` `string` _(required)_
- `isUmbrella` `boolean` _(required)_
- `organizationOnly` `boolean`
- `createdAt` `string <date-time>` _(required)_
- `updatedAt` `string <date-time>` _(required)_
- `roles` `object[]`
  - `id` `string` _(required)_
  - `roleName` `string`
- `argumentRestrictions` `object[]`
  - `argumentIndex` `integer` _(required)_

#### `400`: Default Response

Body (`application/json`):

- `error` `object` _(required)_
  - `code` `string` _(required)_
  - `message` `string` _(required)_
  - `issues` `unknown[]`

### Example request

```bash
curl /api/contract-permissions/ \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "contractAddress": "string",
  "methodSelector": "string",
  "accessType": "read",
  "functionSignature": "string",
  "ruleType": "public",
  "isUmbrella": true,
  "organizationOnly": true,
  "roles": [
    {
      "id": "string",
      "roleName": "string"
    }
  ],
  "argumentRestrictions": [
    {
      "argumentIndex": 0
    }
  ]
}'
```

```ts
fetch('/api/contract-permissions/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    contractAddress: 'string',
    methodSelector: 'string',
    accessType: 'read',
    functionSignature: 'string',
    ruleType: 'public',
    isUmbrella: true,
    organizationOnly: true,
    roles: [
      {
        id: 'string',
        roleName: 'string'
      }
    ],
    argumentRestrictions: [
      {
        argumentIndex: 0
      }
    ]
  })
})
```

## GET /contract-permissions/{id}

`GET /contract-permissions/{id}`

Get a contract permission by contract address and method selector

### Path parameters

- `id` `number` _(required)_

### Responses

#### `200`: Default Response

Body (`application/json`):

- `id` `integer` _(required)_
- `contractAddress` `string` _(required)_
- `methodSelector` `string` _(required)_
- `accessType` `string` _(required)_
- `functionSignature` `string` _(required)_
- `ruleType` `string` _(required)_
- `isUmbrella` `boolean` _(required)_
- `organizationOnly` `boolean`
- `createdAt` `string <date-time>` _(required)_
- `updatedAt` `string <date-time>` _(required)_
- `roles` `object[]`
  - `id` `string` _(required)_
  - `roleName` `string`
- `argumentRestrictions` `object[]`
  - `argumentIndex` `integer` _(required)_

#### `404`: Default Response

Body (`application/json`):

- `error` `object` _(required)_
  - `code` `string` _(required)_
  - `message` `string` _(required)_
  - `issues` `unknown[]`

### Example request

```bash
curl /api/contract-permissions/0
```

```ts
fetch('/api/contract-permissions/0')
```

## PUT /contract-permissions/{id}

`PUT /contract-permissions/{id}`

Replace a contract permission by method selector (full update). The method and contract pointed by the permission cannot be changed.

### Path parameters

- `id` `number` _(required)_

### Request body (required) (`application/json`)

- `id` `integer`
- `contractAddress` `string` _(required)_
- `methodSelector` `string` _(required)_
- `accessType` `string` _(required)_
- `functionSignature` `string` _(required)_
- `ruleType` `string` _(required)_
- `isUmbrella` `boolean`
- `organizationOnly` `boolean`
- `roles` `object[]`
  - `id` `string` _(required)_
  - `roleName` `string`
- `argumentRestrictions` `object[]`
  - `argumentIndex` `integer` _(required)_

### Responses

#### `200`: Default Response

Body (`application/json`):

- `id` `integer` _(required)_
- `contractAddress` `string` _(required)_
- `methodSelector` `string` _(required)_
- `accessType` `string` _(required)_
- `functionSignature` `string` _(required)_
- `ruleType` `string` _(required)_
- `isUmbrella` `boolean` _(required)_
- `organizationOnly` `boolean`
- `createdAt` `string <date-time>` _(required)_
- `updatedAt` `string <date-time>` _(required)_
- `roles` `object[]`
  - `id` `string` _(required)_
  - `roleName` `string`
- `argumentRestrictions` `object[]`
  - `argumentIndex` `integer` _(required)_

#### `400`: Default Response

Body (`application/json`):

- `error` `object` _(required)_
  - `code` `string` _(required)_
  - `message` `string` _(required)_
  - `issues` `unknown[]`

#### `404`: Default Response

Body (`application/json`):

- `error` `object` _(required)_
  - `code` `string` _(required)_
  - `message` `string` _(required)_
  - `issues` `unknown[]`

### Example request

```bash
curl /api/contract-permissions/0 \
  --request PUT \
  --header 'Content-Type: application/json' \
  --data '{
  "id": 0,
  "contractAddress": "string",
  "methodSelector": "string",
  "accessType": "read",
  "functionSignature": "string",
  "ruleType": "public",
  "isUmbrella": true,
  "organizationOnly": true,
  "roles": [
    {
      "id": "string",
      "roleName": "string"
    }
  ],
  "argumentRestrictions": [
    {
      "argumentIndex": 0
    }
  ]
}'
```

```ts
fetch('/api/contract-permissions/0', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    id: 0,
    contractAddress: 'string',
    methodSelector: 'string',
    accessType: 'read',
    functionSignature: 'string',
    ruleType: 'public',
    isUmbrella: true,
    organizationOnly: true,
    roles: [
      {
        id: 'string',
        roleName: 'string'
      }
    ],
    argumentRestrictions: [
      {
        argumentIndex: 0
      }
    ]
  })
})
```

## DELETE /contract-permissions/{id}

`DELETE /contract-permissions/{id}`

Delete a contract permission by method selector

### Path parameters

- `id` `number` _(required)_

### Responses

#### `204`: Default Response

#### `404`: Default Response

Body (`application/json`):

- `error` `object` _(required)_
  - `code` `string` _(required)_
  - `message` `string` _(required)_
  - `issues` `unknown[]`

### Example request

```bash
curl /api/contract-permissions/0 \
  --request DELETE
```

```ts
fetch('/api/contract-permissions/0', {
  method: 'DELETE'
})
```
