# pics.2bit.challenge.join

> Published by [2bit.pics](https://lexicon.garden/identity/did:plc:sbmntiflmknij2axeck3w6u7)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:sbmntiflmknij2axeck3w6u7/pics.2bit.challenge.join)
- [Documentation](https://lexicon.garden/lexicon/did:plc:sbmntiflmknij2axeck3w6u7/pics.2bit.challenge.join/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:sbmntiflmknij2axeck3w6u7/pics.2bit.challenge.join/examples)

## Definitions

### `pics.2bit.challenge.join`

**Type**: `record`

The author taking part in a challenge. Joining is how a challenge comes to be offered wherever the author posts - nobody is signed up for a challenge they didn't join - and it's public, like a follow, so a challenge can show who's taking part before anyone has entered. Entering a prompt joins too. One join per person per challenge is enforced by this app's AppView rather than the record key: its write path won't write a second, and where another client leaves several, they count once. Leaving deletes the join and nothing else - entries already made stay.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `createdAt` | `string` (datetime) | Yes |  |
| `subject` | `ref` → `com.atproto.repo.strongRef` | Yes | Strong ref to the pics.2bit.challenge.list being joined. Matched by uri alone, like pics.2bit.challenge.entry#challenge, so an organizer's edit to the list doesn't undo anyone's join; a strongRef carries no type, so the collection is enforced by the AppView. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "The author taking part in a challenge. Joining is how a challenge comes to be offered wherever the author posts - nobody is signed up for a challenge they didn't join - and it's public, like a follow, so a challenge can show who's taking part before anyone has entered. Entering a prompt joins too. One join per person per challenge is enforced by this app's AppView rather than the record key: its write path won't write a second, and where another client leaves several, they count once. Leaving deletes the join and nothing else - entries already made stay.",
      "key": "tid",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "subject": {
            "description": "Strong ref to the pics.2bit.challenge.list being joined. Matched by uri alone, like pics.2bit.challenge.entry#challenge, so an organizer's edit to the list doesn't undo anyone's join; a strongRef carries no type, so the collection is enforced by the AppView.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          }
        },
        "required": [
          "subject",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "pics.2bit.challenge.join",
  "lexicon": 1
}
```
