Smokeball Staff API

The Staff API from Smokeball — 2 operation(s) for staff.

Operations 5

GET /staff Search firm staff members #
POST /staff Create firm staff member #
GET /staff/{id} Get firm staff member #
PUT /staff/{id} Update firm staff member #
DELETE /staff/{id} Deletes a firm staff member #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/smokeball-staff-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

smokeball-staff-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Smokeball Activity Codes Staff API
  version: '1.0'
  description: REST API for integrating with Smokeball legal practice management software. Supports matters, contacts, documents, time entries, billing, trust accounting, staff, webhooks, and law firm workflows across US, AU, and UK regions. Uses OAuth 2.0 (client credentials) authentication.
  contact:
    name: Smokeball Developer Support
    url: https://docs.smokeball.com/docs/api-docs/1e13a13124aee-introduction
  x-api-id: smokeball
  x-audience: external-public
servers:
- url: https://api.smokeball.com
- url: https://api.smokeball.com.au
- url: https://api.smokeball.co.uk
- url: https://stagingapi.smokeball.com
- url: https://stagingapi.smokeball.com.au
- url: https://stagingapi.smokeball.co.uk
security:
- api-key: []
  token: []
tags:
- name: Staff
paths:
  /staff:
    get:
      tags:
      - Staff
      summary: Search firm staff members
      description: Retrieves a paginated list of staff members (filtered based on search parameters provided) in the firm associated with the authenticated client.
      operationId: GetStaff
      parameters:
      - name: Offset
        in: query
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: Limit
        in: query
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
      - name: Search
        in: query
        description: ' Available fields: email, name'
        schema:
          type: array
          items:
            type: string
      - name: Fields
        in: query
        description: ' Available fields: rate'
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a paged collection of 'Staff' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StaffPagedCollection'
    post:
      tags:
      - Staff
      summary: Create firm staff member
      description: Creates a staff member in the firm associated with the authenticated client.
      operationId: CreateStaff
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StaffDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StaffDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StaffDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the staff member to be created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /staff/{id}:
    get:
      tags:
      - Staff
      summary: Get firm staff member
      description: Retrieves a staff member (based on staff id parameter provided) in the firm associated with the authenticated client.
      operationId: GetStaffById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a 'Staff' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Staff'
        '400':
          description: When staff id parameter invalid or not provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When staff member does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Staff
      summary: Update firm staff member
      description: Updates a staff member in the firm associated with the authenticated client.
      operationId: UpdateStaff
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StaffDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StaffDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StaffDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the staff member to be updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '404':
          description: When staff member does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Staff
      summary: Deletes a firm staff member
      description: 'Sets the staff member from the firm associated with the authenticated client as a former staff member.


        The staff member is set as a former staff member and if they are a user, becomes a former user. User access is also disabled.'
      operationId: DeleteStaff
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the staff member to be deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '404':
          description: When staff member does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    ProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
        title:
          type:
          - string
          - 'null'
        status:
          type:
          - integer
          - 'null'
          format: int32
        detail:
          type:
          - string
          - 'null'
        instance:
          type:
          - string
          - 'null'
      additionalProperties: {}
    StaffDto:
      type: object
      properties:
        userId:
          type:
          - string
          - 'null'
          description: 'Unique identifier of the associated user. Used to map staff member to the specified user id and ignored if left blank.

            Use the FirmUsers API to remove a staff/user mapping.'
          example: b471682e-fa17-4e46-b7fe-9b2b8fdcb3c2
        title:
          type:
          - string
          - 'null'
          description: Staff member's title.
          example: Mr
        firstName:
          type:
          - string
          - 'null'
          description: Staff member's first name.
          example: John
        middleName:
          type:
          - string
          - 'null'
          description: Staff member's middle name (if applicable).
          example: ''
        lastName:
          type:
          - string
          - 'null'
          description: Staff member's last name.
          example: Smith
        initials:
          type:
          - string
          - 'null'
          description: Staff member's initials.
          example: JS
        phone:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Staff member's phone number.
        cell:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Staff member's cell number.
        email:
          type:
          - string
          - 'null'
          description: Staff member's email address.
          example: john.smith@brown.com
        role:
          type:
          - string
          - 'null'
          description: Staff member's role.
          example: Bookkeeper
        avatar:
          type:
          - string
          - 'null'
          description: Staff member's avatar.
          example: https://example-avatar-url.com/image
        former:
          type:
          - boolean
          - 'null'
          description: "Whether he/she is a former member. \n\nCaution: Setting a staff member to former staff will also deregister them from the firm."
          example: false
        colorFill:
          type:
          - string
          - 'null'
          description: Staff member's fill color hex code.
          example: '#797d85'
        colorStroke:
          type:
          - string
          - 'null'
          description: Staff member's stroke color hex code.
          example: '#64666a'
      additionalProperties: false
    PhoneNumberDto:
      type: object
      properties:
        areaCode:
          type:
          - string
          - 'null'
          description: Phone area code.
          example: '555'
        number:
          type:
          - string
          - 'null'
          description: Phone number (excluding area code).
          example: '1234567'
      additionalProperties: false
    StaffPagedCollection:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        value:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Staff'
        offset:
          type:
          - integer
          - 'null'
          format: int32
        limit:
          type:
          - integer
          - 'null'
          format: int32
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
      additionalProperties: false
    Link:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
      additionalProperties: false
    LicenceNumber:
      type: object
      properties:
        state:
          type:
          - string
          - 'null'
          description: State associated to the licence.
          example: IL
        type:
          type:
          - string
          - 'null'
          description: Type of the licence.
          example: ''
        number:
          type:
          - string
          - 'null'
          description: Licence number.
      additionalProperties: false
    PhoneNumber:
      type: object
      properties:
        areaCode:
          type:
          - string
          - 'null'
          description: Phone area code.
          example: '555'
        number:
          type:
          - string
          - 'null'
          description: Phone number (excluding area code).
          example: '1234567'
      additionalProperties: false
    OutOfOffice:
      type: object
      properties:
        startDate:
          type: string
          description: Out-of-office start date.
          format: date-time
        endDate:
          type: string
          description: Out-of-office end date.
          format: date-time
      additionalProperties: false
    Staff:
      type: object
      properties:
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        id:
          type:
          - string
          - 'null'
          description: Unique identifier of the staff member.
          example: b471682e-fa17-4e46-b7fe-9b2b8fdcb3c2
        versionId:
          type:
          - string
          - 'null'
          description: Version id of the record.
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        title:
          type:
          - string
          - 'null'
          description: Staff member's title.
          example: Mr
        firstName:
          type:
          - string
          - 'null'
          description: Staff member's first name.
          example: John
        middleName:
          type:
          - string
          - 'null'
          description: Staff member's middle name (if applicable).
          example: ''
        lastName:
          type:
          - string
          - 'null'
          description: Staff member's last name.
          example: Smith
        initials:
          type:
          - string
          - 'null'
          description: Staff member's initials.
          example: JS
        phone:
          allOf:
          - $ref: '#/components/schemas/PhoneNumber'
          description: Staff member's phone details.
        cell:
          allOf:
          - $ref: '#/components/schemas/PhoneNumber'
          description: Staff member's mobile details.
        email:
          type:
          - string
          - 'null'
          description: Staff member's email address.
          example: john.smith@brown.com
        role:
          type:
          - string
          - 'null'
          description: Staff member's role.
          example: Bookkeeper
        rate:
          type:
          - number
          - 'null'
          description: Staff member's hourly rate in dollars.
          format: double
          example: 150
        avatar:
          type:
          - string
          - 'null'
          description: Staff member's avatar.
          example: https://example-avatar-url.com/image
        former:
          type: boolean
          description: Whether he/she is a former member.
          example: false
        enabled:
          type: boolean
          description: Whether staff member is enabled.
          example: true
        userId:
          type:
          - string
          - 'null'
          description: Staff member's User Id, if enabled.
          example: 14b5dd57-3681-420e-a483-4823424eef45
        colorFill:
          type:
          - string
          - 'null'
          description: Staff member's fill color hex code.
          example: '#797d85'
        colorStroke:
          type:
          - string
          - 'null'
          description: Staff member's stroke color hex code.
          example: '#64666a'
        licenceNumbers:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/LicenceNumber'
          description: Licence numbers of the staff member.
        outOfOffice:
          allOf:
          - $ref: '#/components/schemas/OutOfOffice'
          description: Staff member's Out-of-office period, if enabled.
      additionalProperties: false
  securitySchemes:
    api-key:
      type: apiKey
      name: x-api-key
      in: header
    token:
      type: apiKey
      name: Authorization
      in: header
      x-amazon-apigateway-authtype: cognito_user_pools