# place.stream.branding.updateBlob

> Update or create a branding asset blob. Requires admin authorization.

- Kind: procedure
- Authority: branding.stream.place
- Lexicon: 1
- Published by [stream.place](https://lexicon.garden/identity/did:plc:rbvrr34edl5ddpuwcubjiost), not the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.branding.updateBlob)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.branding.updateBlob/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.branding.updateBlob/analytics)

## Procedure (`place.stream.branding.updateBlob`)

Type: procedure · POST

### Input (application/json)

- `broadcaster` (string · did): DID of the broadcaster. If not provided, uses the server's default broadcaster.
- `data` (string, required): Base64-encoded blob data
- `height` (integer): Image height in pixels (optional, for images only)
- `key` (string, required): Branding asset key (mainLogo, favicon, siteTitle, etc.)
- `mimeType` (string, required): MIME type of the blob (e.g., image/png, text/plain)
- `width` (integer): Image width in pixels (optional, for images only)

### Output (application/json)

- `success` (boolean, required)

### Errors

- `Unauthorized`: The authenticated DID is not authorized to modify branding
- `BlobTooLarge`: The blob exceeds the maximum size limit

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Update or create a branding asset blob. Requires admin authorization.",
      "errors": [
        {
          "description": "The authenticated DID is not authorized to modify branding",
          "name": "Unauthorized"
        },
        {
          "description": "The blob exceeds the maximum size limit",
          "name": "BlobTooLarge"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "broadcaster": {
              "description": "DID of the broadcaster. If not provided, uses the server's default broadcaster.",
              "format": "did",
              "type": "string"
            },
            "data": {
              "description": "Base64-encoded blob data",
              "type": "string"
            },
            "height": {
              "description": "Image height in pixels (optional, for images only)",
              "type": "integer"
            },
            "key": {
              "description": "Branding asset key (mainLogo, favicon, siteTitle, etc.)",
              "type": "string"
            },
            "mimeType": {
              "description": "MIME type of the blob (e.g., image/png, text/plain)",
              "type": "string"
            },
            "width": {
              "description": "Image width in pixels (optional, for images only)",
              "type": "integer"
            }
          },
          "required": [
            "key",
            "data",
            "mimeType"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "success": {
              "type": "boolean"
            }
          },
          "required": [
            "success"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "place.stream.branding.updateBlob",
  "lexicon": 1
}
```
