Assembled Activities API

Create, list, and delete activities — the scheduled shifts, breaks, time off, training, and meetings that make up an agent's calendar. Includes bulk creation, soft-delete semantics, and management of activity types with their color coding. Companion event_changes endpoint surfaces the audit trail for schedule modifications.

Assembled Activities API is one of 12 APIs that Assembled publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Activities, Shifts, Scheduling, and Workforce Management. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 2 Naftiko capability specs, and 1 JSON Schema.

OpenAPI Specification

assembled-activities-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Assembled Activities API
  description: |
    Activities are the scheduled shifts, breaks, time-off blocks, training
    sessions, and meetings that make up an agent's calendar in Assembled.

    The Activities API supports single and bulk activity creation, listing
    with rich filters, soft-delete semantics, and CRUD for activity types
    (the colour-coded categories shown on schedules). The event_changes
    endpoint surfaces an audit trail of schedule modifications.
  version: '2026-05-24'
  contact:
    name: Assembled Support
    url: https://support.assembled.com
servers:
  - url: https://api.assembledhq.com
    description: Production Server
security:
  - BasicAuth: []
tags:
  - name: Activities
    description: Scheduled activities on an agent's calendar
  - name: Activity Types
    description: Types/categories of activity
  - name: Event Changes
    description: Audit trail of schedule modifications
paths:
  /v0/activities:
    get:
      summary: Assembled List Activities
      description: List activities for a time window, optionally filtered by agent, queue, site, or type.
      operationId: listActivities
      tags: [Activities]
      parameters:
        - $ref: '#/components/parameters/ApiVersionHeader'
        - in: query
          name: start_time
          required: true
          schema: { type: string, format: date-time }
        - in: query
          name: end_time
          required: true
          schema: { type: string, format: date-time }
        - in: query
          name: agent_ids
          schema: { type: string }
        - in: query
          name: queue_ids
          schema: { type: string }
        - in: query
          name: activity_type_id
          schema: { type: string }
      responses:
        '200':
          description: Activities list
          content:
            application/json:
              schema:
                type: object
                properties:
                  activities:
                    type: array
                    items: { $ref: '#/components/schemas/Activity' }
    post:
      summary: Assembled Create Activity
      description: Create a single activity.
      operationId: createActivity
      tags: [Activities]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/ActivityInput' }
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Activity' }
    delete:
      summary: Assembled Delete Activities
      description: Soft-delete one or more activities by ID.
      operationId: deleteActivities
      tags: [Activities]
      parameters:
        - in: query
          name: ids
          required: true
          schema: { type: string, description: Comma-separated list of activity IDs }
      responses:
        '204':
          description: Deleted
  /v0/activities/bulk:
    post:
      summary: Assembled Bulk Create Activities
      description: Create many activities in a single request.
      operationId: bulkCreateActivities
      tags: [Activities]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                activities:
                  type: array
                  items: { $ref: '#/components/schemas/ActivityInput' }
      responses:
        '201':
          description: Created
  /v0/activity_types:
    get:
      summary: Assembled List Activity Types
      description: List activity types defined in your organization.
      operationId: listActivityTypes
      tags: [Activity Types]
      responses:
        '200':
          description: Activity types
          content:
            application/json:
              schema:
                type: object
                properties:
                  activity_types:
                    type: array
                    items: { $ref: '#/components/schemas/ActivityType' }
    post:
      summary: Assembled Create Activity Type
      description: Define a new activity type (name and colour).
      operationId: createActivityType
      tags: [Activity Types]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/ActivityTypeInput' }
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ActivityType' }
  /v0/activity_types/{id}:
    delete:
      summary: Assembled Delete Activity Type
      description: Delete an activity type.
      operationId: deleteActivityType
      tags: [Activity Types]
      parameters:
        - in: path
          name: id
          required: true
          schema: { type: string }
      responses:
        '204':
          description: Deleted
  /v0/event_changes:
    get:
      summary: Assembled List Event Changes
      description: Retrieve the audit trail of schedule modifications across activities.
      operationId: listEventChanges
      tags: [Event Changes]
      parameters:
        - in: query
          name: start_time
          required: true
          schema: { type: string, format: date-time }
        - in: query
          name: end_time
          required: true
          schema: { type: string, format: date-time }
      responses:
        '200':
          description: Event changes
          content:
            application/json:
              schema:
                type: object
                properties:
                  event_changes:
                    type: array
                    items: { $ref: '#/components/schemas/EventChange' }
components:
  securitySchemes:
    BasicAuth: { type: http, scheme: basic }
  parameters:
    ApiVersionHeader:
      in: header
      name: API-Version
      required: false
      schema: { type: string }
  schemas:
    Activity:
      type: object
      properties:
        id: { type: string }
        agent_id: { type: string }
        activity_type_id: { type: string }
        start_time: { type: string, format: date-time }
        end_time: { type: string, format: date-time }
        queue_ids:
          type: array
          items: { type: string }
        site_id: { type: string, nullable: true }
        notes: { type: string }
        external_id: { type: string }
        created_at: { type: string, format: date-time }
        updated_at: { type: string, format: date-time }
    ActivityInput:
      type: object
      required: [agent_id, activity_type_id, start_time, end_time]
      properties:
        agent_id: { type: string }
        activity_type_id: { type: string }
        start_time: { type: string, format: date-time }
        end_time: { type: string, format: date-time }
        queue_ids:
          type: array
          items: { type: string }
        site_id: { type: string }
        notes: { type: string }
        external_id: { type: string }
    ActivityType:
      type: object
      properties:
        id: { type: string }
        name: { type: string }
        color: { type: string, example: '#3b82f6' }
        category: { type: string, example: shift }
    ActivityTypeInput:
      type: object
      required: [name]
      properties:
        name: { type: string }
        color: { type: string }
        category: { type: string }
    EventChange:
      type: object
      properties:
        id: { type: string }
        event_id: { type: string }
        change_type: { type: string, enum: [create, update, delete] }
        changed_by: { type: string }
        changed_at: { type: string, format: date-time }
        diff: { type: object }