# social.colibri.beta.community.putImage

> Published by [colibri.social](https://lexicon.garden/identity/did:plc:mprdjqjluoswa7awzggaggj3)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:mprdjqjluoswa7awzggaggj3/social.colibri.beta.community.putImage)
- [Documentation](https://lexicon.garden/lexicon/did:plc:mprdjqjluoswa7awzggaggj3/social.colibri.beta.community.putImage/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:mprdjqjluoswa7awzggaggj3/social.colibri.beta.community.putImage/examples)

## Definitions

### `social.colibri.beta.community.putImage`

**Type**: `procedure`

Sets a community's picture or banner. The bytes are uploaded to the community's own repo, which is why this goes through the AppView: a community's blobs can only be written with the community credentials the AppView holds, and a space record must reference a blob living in the repo that holds the record. Replaces whatever was there before.

#### Input

**Encoding**: `image/*`

#### Output

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `community` | `ref` → `social.colibri.beta.community.defs#communityView` | Yes | The community with the new image resolved, so one call is enough to re-render. |

#### Errors

- **AuthRequired**: The request is missing, malformed, or unverifiable service auth.
- **Forbidden**: The requesting user lacks the community.manage permission.
- **CommunityNotFound**: No community exists with that DID.
- **UnsupportedImage**: The bytes are not one of the accepted image types.
- **ImageTooLarge**: The image exceeds the size limit for this kind.
- **CredentialsUnavailable**: The AppView's stored credentials for this community are missing or unusable.
- **UpstreamFailure**: A PDS or third-party call the AppView depends on failed.

## Raw Schema

```json
{
  "id": "social.colibri.beta.community.putImage",
  "defs": {
    "main": {
      "type": "procedure",
      "input": {
        "encoding": "image/*",
        "description": "The raw image bytes. The content type must be one of image/jpeg, image/png, image/gif or image/webp, and is sniffed rather than trusted."
      },
      "errors": [
        {
          "name": "AuthRequired",
          "description": "The request is missing, malformed, or unverifiable service auth."
        },
        {
          "name": "Forbidden",
          "description": "The requesting user lacks the community.manage permission."
        },
        {
          "name": "CommunityNotFound",
          "description": "No community exists with that DID."
        },
        {
          "name": "UnsupportedImage",
          "description": "The bytes are not one of the accepted image types."
        },
        {
          "name": "ImageTooLarge",
          "description": "The image exceeds the size limit for this kind."
        },
        {
          "name": "CredentialsUnavailable",
          "description": "The AppView's stored credentials for this community are missing or unusable."
        },
        {
          "name": "UpstreamFailure",
          "description": "A PDS or third-party call the AppView depends on failed."
        }
      ],
      "output": {
        "schema": {
          "type": "object",
          "required": [
            "community"
          ],
          "properties": {
            "community": {
              "ref": "social.colibri.beta.community.defs#communityView",
              "type": "ref",
              "description": "The community with the new image resolved, so one call is enough to re-render."
            }
          }
        },
        "encoding": "application/json"
      },
      "parameters": {
        "type": "params",
        "required": [
          "community",
          "kind"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "description": "Which image to set.",
            "knownValues": [
              "picture",
              "banner"
            ]
          },
          "community": {
            "type": "string",
            "format": "did",
            "description": "The community to set the image on."
          }
        }
      },
      "description": "Sets a community's picture or banner. The bytes are uploaded to the community's own repo, which is why this goes through the AppView: a community's blobs can only be written with the community credentials the AppView holds, and a space record must reference a blob living in the repo that holds the record. Replaces whatever was there before."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
