{ "openapi": "3.0.0", "paths": { "/api/v3/activity-logs/{orgId}": { "get": { "description": "Returns a paged list of activity logs using cursor-based paging and property filters.\n\n**Common Use Cases:**\n- Audit user actions across your organization\n- Monitor scenario changes and deployments\n- Track team membership changes\n- Generate compliance reports\n\n**Pagination:** Use the `next` value from `_page` as the `start` parameter for subsequent requests to iterate through all results.", "operationId": "ActivityLogsV3Controller_getActivityLogs", "parameters": [ { "name": "orgId", "required": true, "in": "path", "description": "Organization ID", "schema": { "type": "number" } }, { "name": "property", "required": false, "in": "query", "description": "Property filters for refining results. Multiple filters can be specified and are AND-ed together.\n\n**Example Usage:**\n- Single filter: `property=entity==scenario`\n- Multiple filters: `property=entity==scenario&property=action==created`\n\n**Allowed Fields:**\n`timestamp`, `entity`, `entityId`, `action`, `teamId`, `teamName`, `userId`, `userName`, `messageId`, `message`\n\n**Operators:**\n- `==` equals\n- `!=` not equals\n- `>` greater than\n- `>=` greater than or equal to\n- `<` less than\n- `<=` less than or equal to\n- `~` case-insensitive regex match\n\n**Field Existence:**\n- `field` - field exists\n- `!field` - field does not exist", "schema": { "type": "array", "items": { "type": "string" } }, "examples": { "entityFilter": { "summary": "Filter by entity type", "value": ["entity==scenario"] }, "dateRange": { "summary": "Filter by date range", "value": ["timestamp>=2025-01-01T00:00:00Z", "timestamp<=2025-01-31T23:59:59Z"] }, "multipleFilters": { "summary": "Multiple conditions", "value": ["entity==scenario", "action==created", "userName~John"] } } }, { "name": "limit", "required": false, "in": "query", "description": "Maximum number of items to return", "schema": { "minimum": 1, "maximum": 1000, "example": 50, "type": "number" } }, { "name": "start", "required": false, "in": "query", "description": "Paging cursor. Must be a timestamp (UTC) corresponding to the \"timestamp\" field. Used only when orderby is set.", "schema": { "example": "2025-12-09T11:39:34.834Z", "type": "string" } }, { "name": "orderby", "required": false, "in": "query", "description": "Sort order. Only timestamp (UTC) is supported. Prefix with \"-\" for descending or \"+\" for ascending", "schema": { "example": "-timestamp", "type": "string" } } ], "responses": { "200": { "description": "Successfully retrieved paged activity logs", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActivityLogsResponseDto" }, "example": { "items": [ { "timestamp": "2025-12-09T11:39:34.834Z", "userId": 2555, "userName": "John Snow", "messageId": "5833b3d8-1215-4dc0-aa51-423a1993f7d1", "teamId": 34, "entityId": 38641, "teamName": "My Team", "orgId": 2245, "entity": "scenario", "action": "updated", "message": "John Snow updated \"Update Project tasks (Data Store Project)\" scenario" }, { "timestamp": "2025-12-09T10:12:01.000Z", "userId": 2556, "userName": "Jane Doe", "messageId": "7a44c5e9-3426-5ed1-bb62-534b2aa4g8f2", "teamId": 34, "entityId": 38642, "teamName": "My Team", "orgId": 2245, "entity": "scenario", "action": "created", "message": "Jane Doe created \"New Integration\" scenario" } ], "_page": { "orderby": "-timestamp", "start": "2025-12-09T11:39:34.834Z", "next": "2025-12-09T09:45:22.100Z", "property": ["entity==scenario"], "count": 2 }, "_links": { "next": { "href": "/api/v3/activity-logs/2245?orderby=-timestamp&start=2025-12-09T09:45:22.100Z&limit=50&property=entity==scenario" }, "page": { "href": "/api/v3/activity-logs/2245{?orderby,limit,start,property}" } } } } } }, "400": { "description": "Bad request - Invalid parameters or filters", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" }, "examples": { "missingOrderby": { "summary": "Missing orderby with pagination", "value": { "type": "BadRequest", "status": 400, "title": "Paging parameters require orderby to be specified", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } }, "invalidProperty": { "summary": "Invalid property filter syntax", "value": { "type": "BadRequest", "status": 400, "title": "Invalid property filter: unknown field 'invalidField'", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } } } } } }, "401": { "description": "Authentication required", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" }, "example": { "type": "Unauthorized", "status": 401, "title": "Authentication required", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } } } }, "403": { "description": "Access denied", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" }, "example": { "type": "Forbidden", "status": 403, "title": "Access denied", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } } } }, "500": { "description": "Server error", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" }, "example": { "type": "InternalServerError", "status": 500, "title": "Server error", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } } } } }, "security": [ { "Authorization": [], "API Key": [], "IMS Org ID": [], "Region": [] } ], "summary": "Get activity logs", "tags": [ "Activity Logs" ], "x-codeSamples": [ { "lang": "curl", "label": "cURL", "source": "curl -X GET 'https://fusion.adobe.io/api/v3/activity-logs/2245?limit=50&orderby=-timestamp&property=entity==scenario' \\\n -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \\\n -H 'x-api-key: YOUR_CLIENT_ID' \\\n -H 'x-gw-ims-org-id: YOUR_ORG_ID@AdobeOrg' \\\n -H 'x-gw-region: YOUR_REGION'" } ] } }, "/api/v3/activity-logs/{orgId}/export": { "get": { "description": "Exports activity logs as CSV or XLSX based on the Accept header. Use this endpoint to download activity logs for offline analysis, compliance reporting, or integration with external tools.\n\n**Export Formats:**\n- CSV: Set `Accept: text/csv` (default)\n- Excel: Set `Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`\n\n**Note:** Large exports may take several seconds to generate.", "operationId": "ActivityLogsV3Controller_exportActivityLogs", "parameters": [ { "name": "orgId", "required": true, "in": "path", "description": "Organization ID", "schema": { "type": "number" } }, { "name": "accept", "required": false, "in": "header", "description": "Response media type for the exported file.\n\n**Supported values:**\n- `text/csv` - Export as CSV (default)\n- `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` - Export as Excel (.xlsx)", "schema": { "type": "string", "enum": ["text/csv", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"], "default": "text/csv" }, "examples": { "csv": { "summary": "Export as CSV", "value": "text/csv" }, "excel": { "summary": "Export as Excel", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } } }, { "name": "property", "required": false, "in": "query", "description": "Property filters for refining results. Multiple filters can be specified and are AND-ed together.\n\n**Example Usage:**\n- Single filter: `property=entity==scenario`\n- Multiple filters: `property=entity==scenario&property=action==created`\n\n**Allowed Fields:**\n`timestamp`, `entity`, `entityId`, `action`, `teamId`, `teamName`, `userId`, `userName`, `messageId`, `message`\n\n**Operators:**\n- `==` equals\n- `!=` not equals\n- `>` greater than\n- `>=` greater than or equal to\n- `<` less than\n- `<=` less than or equal to\n- `~` case-insensitive regex match\n\n**Field Existence:**\n- `field` - field exists\n- `!field` - field does not exist", "schema": { "type": "array", "items": { "type": "string" } }, "examples": { "entityFilter": { "summary": "Filter by entity type", "value": ["entity==scenario"] }, "dateRange": { "summary": "Filter by date range", "value": ["timestamp>=2025-01-01T00:00:00Z", "timestamp<=2025-01-31T23:59:59Z"] }, "multipleFilters": { "summary": "Multiple conditions", "value": ["entity==scenario", "action==created", "userName~John"] } } }, { "name": "orderby", "required": false, "in": "query", "description": "Sort order. Only timestamp (UTC) is supported. Prefix with \"-\" for descending or \"+\" for ascending", "schema": { "example": "-timestamp", "type": "string" } } ], "responses": { "200": { "description": "Successfully exported activity logs", "content": { "text/csv": { "schema": { "type": "string", "format": "binary" }, "example": "timestamp,userId,userName,teamId,teamName,entity,entityId,action,message\n2025-12-09T11:39:34.834Z,2555,John Snow,34,My Team,scenario,38641,updated,\"John Snow updated 'Update Project tasks' scenario\"\n2025-12-09T10:12:01.000Z,2556,Jane Doe,34,My Team,scenario,38642,created,\"Jane Doe created 'New Integration' scenario\"" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { "schema": { "type": "string", "format": "binary", "description": "Excel file containing activity logs" } } } }, "401": { "description": "Authentication required", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" }, "example": { "type": "Unauthorized", "status": 401, "title": "Authentication required", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } } } }, "403": { "description": "Access denied", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" }, "example": { "type": "Forbidden", "status": 403, "title": "Access denied", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } } } }, "406": { "description": "Not acceptable", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" }, "example": { "type": "NotAcceptable", "status": 406, "title": "Supported formats: text/csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } } } }, "500": { "description": "Server error", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" }, "example": { "type": "InternalServerError", "status": 500, "title": "Server error", "report": { "request-id": "abc-123-def-456", "x-gw-ims-org-id": "1234567890ABCDEF@AdobeOrg" } } } } } }, "security": [ { "Authorization": [], "API Key": [], "IMS Org ID": [], "Region": [] } ], "summary": "Export activity logs", "tags": [ "Activity Logs" ], "x-codeSamples": [ { "lang": "curl", "label": "cURL (CSV)", "source": "curl -X GET 'https://fusion.adobe.io/api/v3/activity-logs/2245/export?orderby=-timestamp' \\\n -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \\\n -H 'x-api-key: YOUR_CLIENT_ID' \\\n -H 'x-gw-ims-org-id: YOUR_ORG_ID@AdobeOrg' \\\n -H 'x-gw-region: YOUR_REGION' \\\n -H 'Accept: text/csv' \\\n -o activity-logs.csv" }, { "lang": "curl", "label": "cURL (Excel)", "source": "curl -X GET 'https://fusion.adobe.io/api/v3/activity-logs/2245/export?orderby=-timestamp' \\\n -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \\\n -H 'x-api-key: YOUR_CLIENT_ID' \\\n -H 'x-gw-ims-org-id: YOUR_ORG_ID@AdobeOrg' \\\n -H 'x-gw-region: YOUR_REGION' \\\n -H 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \\\n -o activity-logs.xlsx" } ] } } }, "info": { "title": "Workfront Fusion API", "description": "REST APIs for managing and monitoring your Workfront Fusion resources. Use these APIs to programmatically access activity logs and other Fusion components coming soon.\n\n**Base URL:** https://fusion.adobe.io\n\n**Getting Started:**\n\n For detailed setup instructions, make sure to visit the [Getting Started guide](https://developer-stage.adobe.com/workfront-fusion-apis/getting-started/). \n1. Set up authentication in Adobe Developer Console, as documented [here](https://developer-stage.adobe.com/workfront-fusion-apis/getting-started/authentication/). \n2. Obtain required headers (Authorization, x-api-key, x-gw-ims-org-id, x-gw-region). More details [here](https://developer-stage.adobe.com/workfront-fusion-apis/getting-started/api_headers/). \n3. Update permissions for the technical account, as documented [here](https://developer-stage.adobe.com/workfront-fusion-apis/getting-started/technical_accounts/). \n4. Make your first API call.", "version": "v3" }, "tags": [ { "name": "Activity Logs", "description": "Endpoints for getting and exporting log of activities, such as creating a scenario or inviting a user, for your organization. Please note, for accessing activity logs, user must be a Workfront Fusion administrator for the organization.", "externalDocs": { "description": "Find out more in product documentation.", "url": "https://experienceleague.adobe.com/en/docs/workfront-fusion/using/set-up-and-manage-fusion/set-up-and-manage-orgs-and-teams/set-up-orgs-teams-and-users/view-activity-logs-for-an-org" } } ], "servers": [ { "url": "https://fusion.adobe.io", "description": "Production server" } ], "components": { "securitySchemes": { "Authorization": { "scheme": "bearer", "bearerFormat": "JWT", "type": "http", "description": "**Required.** IMS access token for authenticating the user or technical account making the request.\n\n**How to obtain:**\n1. Create a project in Adobe Developer Console\n2. Add Workfront Fusion API credentials\n3. Generate JWT or OAuth credentials\n4. Exchange for access token\n\n**Important Notes:**\n- Access tokens expire after 24 hours and must be refreshed\n- The Bearer prefix is automatically added\n- Token must have appropriate Fusion permissions\n\nSee the Authentication guide for detailed instructions on obtaining access tokens." }, "IMS Org ID": { "type": "apiKey", "in": "header", "name": "x-gw-ims-org-id", "description": "**Required.** Your IMS Organization ID. This validates that the Fusion product is provisioned for your organization and that the user or technical account has appropriate access.\n\n**How to find:**\n1. Go to Adobe Developer Console\n2. Navigate to Your Project > Credentials\n3. Copy the Organization ID (format: `1234567890ABCDEF@AdobeOrg`)\n\n**Example:** `1234567890ABCDEF@AdobeOrg`" }, "API Key": { "type": "apiKey", "in": "header", "name": "x-api-key", "description": "**Required.** Your application's Client ID from Adobe Developer Console. This identifies your application and is the same value used for IMS authentication.\n\n**How to find:**\n1. Go to Adobe Developer Console\n2. Navigate to Your Project > Credentials\n3. Copy the Client ID\n\n**Note:** This is the same as your OAuth Client ID or Service Account Client ID." }, "Region": { "type": "apiKey", "in": "header", "name": "x-gw-region", "description": "**Required.** Routes requests to the correct Fusion regional instance.\n\n**How to find your region:**\n1. Log in to Fusion at https://fusion.adobe.com\n2. Click your profile icon in the top right\n3. Select 'Fusion Profile'\n4. Locate the Adobe region identifier next to your username (e.g., `or2`, `eu1`, `apac1`)\n5. Use this exact value in the header\n\n**Common regions:** `or2` (US Oregon), `eu1` (Europe), `apac1` (Asia-Pacific)\n\n**Example:** `or2`" } }, "schemas": { "ErrorReportDto": { "type": "object", "properties": { "request-id": { "type": "string", "description": "Request ID from headers", "example": "req-123" }, "x-gw-ims-org-id": { "type": "string", "description": "Organization ID from headers", "example": "org-456" }, "errors": { "description": "Validation errors (only present for validation failures)", "example": [ "email must be a valid email address", "password must be at least 8 characters" ], "type": "array", "items": { "type": "object" } } } }, "ErrorResponseDto": { "type": "object", "properties": { "type": { "type": "string", "description": "Error type based on HTTP status or validation error", "example": "BadRequest" }, "status": { "type": "number", "description": "HTTP status code", "example": 400, "minimum": 400, "maximum": 599 }, "title": { "type": "string", "description": "Human-readable error message", "examples": { "badRequest": { "value": "Invalid request" }, "unauthorized": { "value": "Authentication required" }, "forbidden": { "value": "Access denied" }, "notFound": { "value": "Resource not found" }, "serverError": { "value": "Server error" }, "validationError": { "value": "Validation failed" } } }, "report": { "description": "Error report with request tracking and additional details", "allOf": [ { "$ref": "#/components/schemas/ErrorReportDto" } ] } }, "required": [ "type", "status", "title", "report" ] }, "ActivityLogDto": { "type": "object", "description": "Represents a single activity event in your Fusion organization. Each log entry captures who performed what action on which entity at a specific time.", "properties": { "timestamp": { "type": "string", "description": "UTC timestamp when the activity occurred. Use this field for time-based filtering and sorting.", "example": "2025-12-09T11:39:34.834Z", "format": "date-time" }, "userId": { "type": "number", "description": "User ID who triggered the activity", "example": 2555 }, "userName": { "type": "string", "description": "User display name", "example": "John Snow" }, "messageId": { "type": "string", "description": "Unique identifier for this activity log entry (UUID format). Use for deduplication and tracking.", "example": "5833b3d8-1215-4dc0-aa51-423a1993f7d1" }, "teamId": { "type": "number", "description": "Team ID associated with the activity", "example": 34 }, "entityId": { "type": "number", "description": "Unique identifier of the specific entity that was affected (e.g., scenario ID, connection ID)", "example": 38641 }, "teamName": { "type": "string", "description": "Team name", "example": "My Team" }, "orgId": { "type": "number", "description": "Organization ID", "example": 2245 }, "entity": { "type": "string", "description": "Entity type that was affected", "enum": [ "team", "scenario", "webhook", "connection", "data structure", "data store", "organization", "folder", "user", "key", "keys" ], "example": "scenario" }, "action": { "type": "string", "description": "Action performed on the entity", "enum": [ "created", "deleted", "renamed", "disabled", "enabled", "deactivated", "reauthorized", "activated", "updated", "moved", "cloned", "invited", "transferred ownership", "changed organization role", "changed team role" ], "example": "updated" }, "message": { "type": "string", "description": "Human-readable activity message", "example": "John Snow updated \"Update Project tasks (Data Store Project)\" scenario" } }, "required": [ "timestamp", "userId", "userName", "messageId", "teamName", "orgId", "entity", "action", "message" ] }, "Page": { "type": "object", "description": "Pagination metadata for cursor-based paging. Use the `next` value as the `start` parameter in your next request to retrieve the following page.", "properties": { "orderby": { "type": "string", "description": "Comma-separated list of sort properties", "example": "-timestamp" }, "start": { "type": "object", "description": "First sort value on this page", "example": "2025-12-09T11:39:34.834Z", "nullable": true }, "next": { "type": "object", "description": "Cursor value to use as the `start` parameter for the next page. If null, you've reached the last page.", "example": "2025-12-09T10:12:01.000Z", "nullable": true }, "property": { "type": "object", "description": "Applied property filters", "example": [ "entity==scenario" ] }, "count": { "type": "number", "description": "Number of items in this page", "example": 50 } }, "required": [ "orderby", "start", "next", "count" ] }, "Link": { "type": "object", "properties": { "href": { "type": "string", "description": "URL" } }, "required": [ "href" ] }, "Links": { "type": "object", "properties": { "next": { "description": "Link to the next page", "example": "/api/v3/activity-logs/2245?orderby=-timestamp&start=2025-12-09T10%3A43%3A58.530Z&limit=2&property=entity==scenario", "allOf": [ { "$ref": "#/components/schemas/Link" } ] }, "page": { "description": "Templated paging link", "example": "/api/v3/activity-logs/2245{?orderby,limit,start,property}", "allOf": [ { "$ref": "#/components/schemas/Link" } ] } }, "required": [ "page" ] }, "ActivityLogsResponseDto": { "type": "object", "description": "Response containing a page of activity logs with navigation links and metadata for cursor-based pagination.", "properties": { "items": { "description": "Activity log entries for the current page", "type": "array", "items": { "$ref": "#/components/schemas/ActivityLogDto" } }, "_page": { "description": "Paging metadata", "allOf": [ { "$ref": "#/components/schemas/Page" } ] }, "_links": { "description": "Navigation links", "allOf": [ { "$ref": "#/components/schemas/Links" } ] } }, "required": [ "items", "_page", "_links" ] } } } }