# id.sifa.project.member

> Published by [sifa.id](https://lexicon.garden/identity/did:plc:2f2ahswozqy4v5lvu676375y)

## Description

An invitation to join a project team, written by a project owner in their PDS. The invited user must create a corresponding id.sifa.project.membership record to confirm. Both records existing = confirmed team member.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:2f2ahswozqy4v5lvu676375y/id.sifa.project.member)
- [Documentation](https://lexicon.garden/lexicon/did:plc:2f2ahswozqy4v5lvu676375y/id.sifa.project.member/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:2f2ahswozqy4v5lvu676375y/id.sifa.project.member/examples)

## Definitions

### `id.sifa.project.member`

**Type**: `record`

Record representing a team membership invitation. Written by a project owner to invite a user to the project team.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `role` | `ref` → `id.sifa.defs#projectRole` | Yes | Role assigned to the invited member. |
| `title` | `string` | No | Optional title or role description within the project (e.g. 'Lead Designer', 'Backend Engineer'). |
| `project` | `ref` → `com.atproto.repo.strongRef` | Yes | StrongRef to the id.sifa.project.self record. The AT-URI identifies the project, and the CID pins the version. |
| `subject` | `string` (did) | Yes | DID of the user being invited to the project team. |
| `createdAt` | `string` (datetime) | Yes | Client-declared timestamp when this invitation was created. |

## Raw Schema

```json
{
  "id": "id.sifa.project.member",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "project",
          "subject",
          "role",
          "createdAt"
        ],
        "properties": {
          "role": {
            "ref": "id.sifa.defs#projectRole",
            "type": "ref",
            "description": "Role assigned to the invited member."
          },
          "title": {
            "type": "string",
            "maxLength": 1280,
            "description": "Optional title or role description within the project (e.g. 'Lead Designer', 'Backend Engineer').",
            "maxGraphemes": 128
          },
          "project": {
            "ref": "com.atproto.repo.strongRef",
            "type": "ref",
            "description": "StrongRef to the id.sifa.project.self record. The AT-URI identifies the project, and the CID pins the version."
          },
          "subject": {
            "type": "string",
            "format": "did",
            "description": "DID of the user being invited to the project team."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when this invitation was created."
          }
        }
      },
      "description": "Record representing a team membership invitation. Written by a project owner to invite a user to the project team."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "An invitation to join a project team, written by a project owner in their PDS. The invited user must create a corresponding id.sifa.project.membership record to confirm. Both records existing = confirmed team member."
}
```
