Assembled Filters API

Manage the four organizational filter dimensions used throughout Assembled — Queues, Sites, Teams, and Skills. Each filter is fully CRUD-capable and is referenced by people, activities, forecasts, requirements, and reports. Queues map to channels and case types, Sites represent physical or virtual locations, Teams group people, and Skills describe routing-relevant capabilities.

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

This API exposes 4 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Queues, Sites, Teams, Skills, and Organization. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 4 Naftiko capability specs.

OpenAPI Specification

assembled-filters-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Assembled Filters API
  description: |
    Manage the four organizational filter dimensions used throughout
    Assembled — Queues, Sites, Teams, and Skills.

    Each filter is fully CRUD-capable. Queues map to channels and case
    types, Sites represent physical or virtual locations, Teams group
    people, and Skills describe routing-relevant capabilities. People,
    activities, forecasts, requirements, and reports all reference these
    filters.
  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: Queues
  - name: Sites
  - name: Teams
  - name: Skills
paths:
  /v0/queues:
    get:
      summary: Assembled List Queues
      operationId: listQueues
      tags: [Queues]
      responses:
        '200':
          description: Queues
          content:
            application/json:
              schema:
                type: object
                properties:
                  queues:
                    type: array
                    items: { $ref: '#/components/schemas/Filter' }
    post:
      summary: Assembled Create Queue
      operationId: createQueue
      tags: [Queues]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/FilterInput' }
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Filter' }
    delete:
      summary: Assembled Delete Queues
      operationId: deleteQueues
      tags: [Queues]
      parameters:
        - in: query
          name: ids
          required: true
          schema: { type: string }
      responses:
        '204':
          description: Deleted
  /v0/queues/{id}:
    put:
      summary: Assembled Update Queue
      operationId: updateQueue
      tags: [Queues]
      parameters:
        - in: path
          name: id
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/FilterInput' }
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Filter' }
  /v0/sites:
    get:
      summary: Assembled List Sites
      operationId: listSites
      tags: [Sites]
      responses:
        '200':
          description: Sites
          content:
            application/json:
              schema:
                type: object
                properties:
                  sites:
                    type: array
                    items: { $ref: '#/components/schemas/Filter' }
    post:
      summary: Assembled Create Site
      operationId: createSite
      tags: [Sites]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/FilterInput' }
      responses:
        '201':
          description: Created
    delete:
      summary: Assembled Delete Sites
      operationId: deleteSites
      tags: [Sites]
      parameters:
        - in: query
          name: ids
          required: true
          schema: { type: string }
      responses:
        '204':
          description: Deleted
  /v0/sites/{id}:
    put:
      summary: Assembled Update Site
      operationId: updateSite
      tags: [Sites]
      parameters:
        - in: path
          name: id
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/FilterInput' }
      responses:
        '200':
          description: Updated
  /v0/teams:
    get:
      summary: Assembled List Teams
      operationId: listTeams
      tags: [Teams]
      responses:
        '200':
          description: Teams
          content:
            application/json:
              schema:
                type: object
                properties:
                  teams:
                    type: array
                    items: { $ref: '#/components/schemas/Filter' }
    post:
      summary: Assembled Create Team
      operationId: createTeam
      tags: [Teams]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/FilterInput' }
      responses:
        '201':
          description: Created
    delete:
      summary: Assembled Delete Teams
      operationId: deleteTeams
      tags: [Teams]
      parameters:
        - in: query
          name: ids
          required: true
          schema: { type: string }
      responses:
        '204':
          description: Deleted
  /v0/teams/{id}:
    put:
      summary: Assembled Update Team
      operationId: updateTeam
      tags: [Teams]
      parameters:
        - in: path
          name: id
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/FilterInput' }
      responses:
        '200':
          description: Updated
  /v0/skills:
    get:
      summary: Assembled List Skills
      operationId: listSkills
      tags: [Skills]
      responses:
        '200':
          description: Skills
          content:
            application/json:
              schema:
                type: object
                properties:
                  skills:
                    type: array
                    items: { $ref: '#/components/schemas/Filter' }
    post:
      summary: Assembled Create Skill
      operationId: createSkill
      tags: [Skills]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/FilterInput' }
      responses:
        '201':
          description: Created
    delete:
      summary: Assembled Delete Skills
      operationId: deleteSkills
      tags: [Skills]
      parameters:
        - in: query
          name: ids
          required: true
          schema: { type: string }
      responses:
        '204':
          description: Deleted
  /v0/skills/{id}:
    put:
      summary: Assembled Update Skill
      operationId: updateSkill
      tags: [Skills]
      parameters:
        - in: path
          name: id
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/FilterInput' }
      responses:
        '200':
          description: Updated
components:
  securitySchemes:
    BasicAuth: { type: http, scheme: basic }
  schemas:
    Filter:
      type: object
      properties:
        id: { type: string }
        name: { type: string }
        external_id: { type: string }
        channel: { type: string, description: 'Queues only — phone, email, chat, sms, social, back_office' }
        timezone: { type: string, description: 'Sites only' }
        created_at: { type: string, format: date-time }
    FilterInput:
      type: object
      required: [name]
      properties:
        name: { type: string }
        external_id: { type: string }
        channel: { type: string }
        timezone: { type: string }