# Get my competition participation

```http
GET /api/public/v1/competitions/{competitionId}/me
```

**Scope**: `competition.read`.

Returns enrollment, team context, submission eligibility, and Contributor Network quota for the calling account.

## Path parameters

| Parameter | Type | Required | Description |
| :--- | :--- | :---: | :--- |
| `competitionId` | string | Yes | Competition ID returned by [List competitions](./list-competitions.md). |

## Response DTO

```ts
type GetMyCompetitionParticipationResponse = {
  ok: true;
  data: {
    competitionId: string;
    enrolled: boolean;
    team: {
      teamId: string;
      teamName: string;
      teamNumber: string | null;
      role: string;
    } | null;
    canSubmit: boolean;
    submitBlockedReason:
      | "EMAIL_NOT_VERIFIED"
      | "NOT_ENROLLED"
      | "NOT_TEAM_OWNER"
      | "BEFORE_WINDOW"
      | "AFTER_WINDOW"
      | null;
    contributorNetwork: {
      publishCap: number;
      activeCount: number;
      capRemaining: number;
    };
  };
};
```

## Modular Arithmetic Challenge

```bash
curl "https://api.sair.foundation/api/public/v1/competitions/modular-arithmetic-challenge/me" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

```json
{
  "ok": true,
  "data": {
    "competitionId": "modular-arithmetic-challenge",
    "enrolled": true,
    "team": {
      "teamId": "teamv2_0e52064c5e864ffd9f4e7532f4de63d0",
      "teamName": "Example Team",
      "teamNumber": "MAC-T00001",
      "role": "owner"
    },
    "canSubmit": true,
    "submitBlockedReason": null,
    "contributorNetwork": {
      "publishCap": 50,
      "activeCount": 4,
      "capRemaining": 46
    }
  }
}
```

## Mathematics Distillation Stage 1

```bash
curl "https://api.sair.foundation/api/public/v1/competitions/mathematics-distillation-challenge-equational-theories-stage1/me" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

```json
{
  "ok": true,
  "data": {
    "competitionId": "mathematics-distillation-challenge-equational-theories-stage1",
    "enrolled": true,
    "team": {
      "teamId": "sair_01HUSER",
      "teamName": "Ada Example",
      "teamNumber": "MDC1-T00001",
      "role": "owner"
    },
    "canSubmit": true,
    "submitBlockedReason": null,
    "contributorNetwork": {
      "publishCap": 50,
      "activeCount": 2,
      "capRemaining": 48
    }
  }
}
```

## Mathematics Distillation Stage 2

```bash
curl "https://api.sair.foundation/api/public/v1/competitions/mathematics-distillation-challenge-equational-theories-stage2/me" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

```json
{
  "ok": true,
  "data": {
    "competitionId": "mathematics-distillation-challenge-equational-theories-stage2",
    "enrolled": true,
    "team": {
      "teamId": "teamv2_19ac4fb862d64502ae7837852e18fb4a",
      "teamName": "Lean Explorers",
      "teamNumber": "MDC2-T00003",
      "role": "owner"
    },
    "canSubmit": true,
    "submitBlockedReason": null,
    "contributorNetwork": {
      "publishCap": 50,
      "activeCount": 6,
      "capRemaining": 44
    }
  }
}
```

## Inverse Galois Problem (IGP24)

IGP24 allows an active team member to submit, so `team.role` does not need to be `owner` when `canSubmit` is `true`.

```bash
curl "https://api.sair.foundation/api/public/v1/competitions/igp24/me" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

```json
{
  "ok": true,
  "data": {
    "competitionId": "igp24",
    "enrolled": true,
    "team": {
      "teamId": "teamv2_a7a863ce80e6447881ad068bab82498e",
      "teamName": "Galois Wranglers",
      "teamNumber": "IGP24-T00007",
      "role": "member"
    },
    "canSubmit": true,
    "submitBlockedReason": null,
    "contributorNetwork": {
      "publishCap": 50,
      "activeCount": 1,
      "capRemaining": 49
    }
  }
}
```

## Not enrolled example

```json
{
  "ok": true,
  "data": {
    "competitionId": "modular-arithmetic-challenge",
    "enrolled": false,
    "team": null,
    "canSubmit": false,
    "submitBlockedReason": "NOT_ENROLLED",
    "contributorNetwork": {
      "publishCap": 50,
      "activeCount": 0,
      "capRemaining": 50
    }
  }
}
```

## Errors

See [Errors](../../../errors.md) for common authentication, scope, not-found, and rate-limit errors.
