# Activities API

Source: https://frameleaf.app/docs/api/reference/activities/

Use your own server and its scoped API keys.

## List all activities

GET /api/activities

Returns a list of activities for the selected asset or album. The activities are returned in sorted order, with the oldest activities appearing first.

```json
{
  "description": "Returns a list of activities for the selected asset or album. The activities are returned in sorted order, with the oldest activities appearing first.",
  "operationId": "getActivities",
  "parameters": [
    {
      "name": "albumId",
      "required": true,
      "in": "query",
      "description": "Album ID",
      "schema": {
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
        "type": "string"
      }
    },
    {
      "name": "assetId",
      "required": false,
      "in": "query",
      "description": "Asset ID (if activity is for an asset)",
      "schema": {
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
        "type": "string"
      }
    },
    {
      "name": "level",
      "required": false,
      "in": "query",
      "schema": {
        "$ref": "#/components/schemas/ReactionLevel"
      }
    },
    {
      "name": "type",
      "required": false,
      "in": "query",
      "schema": {
        "$ref": "#/components/schemas/ReactionType"
      }
    },
    {
      "name": "userId",
      "required": false,
      "in": "query",
      "description": "Filter by user ID",
      "schema": {
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "items": {
              "$ref": "#/components/schemas/ActivityResponseDto"
            },
            "type": "array"
          }
        }
      },
      "description": ""
    }
  },
  "security": [
    {
      "api_key": []
    }
  ],
  "summary": "List all activities",
  "tags": [
    "Activities"
  ],
  "x-frameleaf-permission": "activity.read"
}
```

## Create an activity

POST /api/activities

Create a like or a comment for an album, or an asset in an album.

```json
{
  "description": "Create a like or a comment for an album, or an asset in an album.",
  "operationId": "createActivity",
  "parameters": [],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ActivityCreateDto"
        }
      }
    },
    "required": true
  },
  "responses": {
    "201": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ActivityResponseDto"
          }
        }
      },
      "description": ""
    }
  },
  "security": [
    {
      "api_key": []
    }
  ],
  "summary": "Create an activity",
  "tags": [
    "Activities"
  ],
  "x-frameleaf-permission": "activity.create"
}
```

## Retrieve activity statistics

GET /api/activities/statistics

Returns the number of likes and comments for a given album or asset in an album.

```json
{
  "description": "Returns the number of likes and comments for a given album or asset in an album.",
  "operationId": "getActivityStatistics",
  "parameters": [
    {
      "name": "albumId",
      "required": true,
      "in": "query",
      "description": "Album ID",
      "schema": {
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
        "type": "string"
      }
    },
    {
      "name": "assetId",
      "required": false,
      "in": "query",
      "description": "Asset ID (if activity is for an asset)",
      "schema": {
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ActivityStatisticsResponseDto"
          }
        }
      },
      "description": ""
    }
  },
  "security": [
    {
      "api_key": []
    }
  ],
  "summary": "Retrieve activity statistics",
  "tags": [
    "Activities"
  ],
  "x-frameleaf-permission": "activity.statistics"
}
```

## Delete an activity

DELETE /api/activities/{id}

Removes a like or comment from a given album or asset in an album.

```json
{
  "description": "Removes a like or comment from a given album or asset in an album.",
  "operationId": "deleteActivity",
  "parameters": [
    {
      "name": "id",
      "required": true,
      "in": "path",
      "schema": {
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
        "type": "string"
      }
    }
  ],
  "responses": {
    "204": {
      "description": ""
    }
  },
  "security": [
    {
      "api_key": []
    }
  ],
  "summary": "Delete an activity",
  "tags": [
    "Activities"
  ],
  "x-frameleaf-permission": "activity.delete"
}
```
