# community.buynothing.listing

> Published by [buynothing.community](https://lexicon.garden/identity/did:plc:7prvtl4j6wsfmkrfrnwknuxj)

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:7prvtl4j6wsfmkrfrnwknuxj/community.buynothing.listing)
- [Documentation](https://lexicon.garden/lexicon/did:plc:7prvtl4j6wsfmkrfrnwknuxj/community.buynothing.listing/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:7prvtl4j6wsfmkrfrnwknuxj/community.buynothing.listing/examples)

## Definitions

### `community.buynothing.listing`

**Type**: `record`

An offer or request for a free item, discoverable by approximate location.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `title` | `string` | Yes | Required short title for the item being offered or requested. |
| `images` | `array` | No | Up to 4 images of the item, stored as blobs in the poster's repo. |
| `intent` | `string` | Yes | Whether the poster is giving away an item or looking for one. |
| `status` | `string` | No | Current availability. Clients should treat a missing value as 'available'. |
| `geohash` | `string` | Yes | Approximate location as a geohash, precision 6 (~1.2km cell). This is a privacy floor: indexers MUST truncate any finer-precision value to 6 characters before indexing or display. |
| `createdAt` | `string` (datetime) | Yes |  |
| `imageAlts` | `array` | No | Alt text for images, parallel to the images array by index. |
| `description` | `string` | Yes | Required free text describing the item being offered or requested. |
| `locationName` | `string` | No | Optional human-readable area name. App-populated via reverse geocoding of the geohash cell. Display only; MUST NOT be used for proximity matching or filtering. |

## Raw Schema

```json
{
  "id": "community.buynothing.listing",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "title",
          "intent",
          "description",
          "geohash",
          "createdAt"
        ],
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "description": "Required short title for the item being offered or requested.",
            "maxGraphemes": 100,
            "minGraphemes": 1
          },
          "images": {
            "type": "array",
            "items": {
              "type": "blob",
              "accept": [
                "image/jpeg",
                "image/png",
                "image/webp"
              ],
              "maxSize": 1000000
            },
            "maxLength": 4,
            "description": "Up to 4 images of the item, stored as blobs in the poster's repo."
          },
          "intent": {
            "enum": [
              "offer",
              "request"
            ],
            "type": "string",
            "description": "Whether the poster is giving away an item or looking for one."
          },
          "status": {
            "enum": [
              "available",
              "pending",
              "gone"
            ],
            "type": "string",
            "description": "Current availability. Clients should treat a missing value as 'available'."
          },
          "geohash": {
            "type": "string",
            "maxLength": 6,
            "minLength": 1,
            "description": "Approximate location as a geohash, precision 6 (~1.2km cell). This is a privacy floor: indexers MUST truncate any finer-precision value to 6 characters before indexing or display."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime"
          },
          "imageAlts": {
            "type": "array",
            "items": {
              "type": "string",
              "maxGraphemes": 1000
            },
            "maxLength": 4,
            "description": "Alt text for images, parallel to the images array by index."
          },
          "description": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1,
            "description": "Required free text describing the item being offered or requested.",
            "maxGraphemes": 1500,
            "minGraphemes": 1
          },
          "locationName": {
            "type": "string",
            "maxLength": 300,
            "description": "Optional human-readable area name. App-populated via reverse geocoding of the geohash cell. Display only; MUST NOT be used for proximity matching or filtering.",
            "maxGraphemes": 100
          }
        }
      },
      "description": "An offer or request for a free item, discoverable by approximate location."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
