# List my submissions

```http
GET /api/public/v1/competitions/modular-arithmetic-challenge/submissions/mine
```

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

Returns every current, occupied model-reference slot belonging to the caller's active competition team. Any active team member may read the collection; the owner role is required only to create, replace, or delete a slot.

This is a bounded current-state collection, not submission history. Replacing a slot updates its stable entry, and empty slots are omitted.

## Example request

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

## Example response

The values below illustrate two occupied slots in a competition whose live `submissionSpec.limits.maxEntries` is at least `3`. Slot `2` is empty and therefore absent.

```json
{
  "ok": true,
  "data": {
    "items": [
      {
        "submissionId": "sub_01JMAC00000000000000000001",
        "competitionId": "modular-arithmetic-challenge",
        "kind": "model-reference",
        "slot": 1,
        "payload": {
          "modelName": "your-team/model-a",
          "commitHash": "0123456789abcdef0123456789abcdef01234567"
        },
        "meta": {
          "description": "Primary model revision."
        },
        "createdAt": "2026-05-18T12:34:56Z",
        "updatedAt": "2026-05-20T08:11:02Z"
      },
      {
        "submissionId": "sub_01JMAC00000000000000000003",
        "competitionId": "modular-arithmetic-challenge",
        "kind": "model-reference",
        "slot": 3,
        "payload": {
          "modelName": "your-team/model-c",
          "commitHash": "89abcdef0123456789abcdef0123456789abcdef"
        },
        "meta": {},
        "createdAt": "2026-05-19T09:15:00Z",
        "updatedAt": "2026-05-19T09:15:00Z"
      }
    ],
    "nextCursor": null
  }
}
```

## Response fields

| Field | Type | Description |
| :---- | :--- | :---------- |
| `items` | object[] | Complete collection of the active team's occupied [model-reference submissions](#model-reference-submission), ordered by `slot` ascending. |
| `nextCursor` | null | Always `null`; this bounded current-state collection is not paginated. |

### Model-reference submission

| Field | Type | Description |
| :---- | :--- | :---------- |
| `submissionId` | string | Stable public ID for this team slot. A replacement keeps the ID; deleting the slot and later creating it again produces a new ID. |
| `competitionId` | string | Always `modular-arithmetic-challenge`. |
| `kind` | `model-reference` | Submission discriminator. |
| `slot` | integer | Occupied slot number from `1` through the live `submissionSpec.limits.maxEntries`. |
| `payload.modelName` | string | Public Hugging Face repository in `owner/name` form. |
| `payload.commitHash` | string | Exact full 40-character commit SHA stored for the slot. |
| `meta.description` | string | Optional submission note; omitted when absent. |
| `createdAt` | string | ISO 8601 UTC creation time of this stable slot entry. |
| `updatedAt` | string | ISO 8601 UTC time of its latest accepted replacement. |

## Collection behavior

- Items are ordered by `slot` ascending. Missing numbers represent empty slots; the API does not return placeholder objects.
- A caller with no active team, or an active team with no occupied slots, receives `200 OK` with `items: []` and `nextCursor: null`.
- Team membership is evaluated when this request is made. A participant who has left the team can no longer read that team's slots.
- The collection reflects current slots only. Replacements and deletions do not append history entries.
- Use [Get a submission by ID](./get-submission.md) after selecting an item. Do not construct a `submissionId` from the slot number.

## Legacy compatibility

Existing clients may still read slot `1` through:

```http
GET /api/public/v1/competitions/modular-arithmetic-challenge/submissions/me
```

The legacy endpoint uses the same active-team visibility and returns the [model-reference submission](#model-reference-submission) for slot `1` directly in `data`. It returns `404 NOT_FOUND` when the caller has no active team or slot `1` is empty, even if another slot is occupied.

New integrations should use `/submissions/mine`; this collection needs no `cursor` or `limit` query parameter.

## Errors

| HTTP | Code | When |
| :---: | :--- | :--- |
| `404` | `NOT_FOUND` | The competition does not exist or is not publicly visible. |

Missing team context and an empty collection are successful empty results, not endpoint errors. See [Errors](../../../errors.md) for authentication, scope, rate-limit, and standard error-envelope behavior.
