Smokeball Activity Codes API

The Activity Codes API from Smokeball — 2 operation(s) for activity codes.

Operations 5

GET /activitycodes/{id} Get an activity code #
PUT /activitycodes/{id} Update an activity code #
DELETE /activitycodes/{id} Delete an activity code #
GET /activitycodes Get activity codes #
POST /activitycodes Create an activity code #

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-activity-codes-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-activity-codes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Smokeball Activity Codes 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: Activity Codes
paths:
  /activitycodes/{id}:
    get:
      tags:
      - Activity Codes
      summary: Get an activity code
      description: Retrieves a specified activity code.
      operationId: GetActivityCodeById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns an 'Activity' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Activity'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When activity code with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When activity code with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Activity Codes
      summary: Update an activity code
      description: Updates an activity code.
      operationId: UpdateActivityCode
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ActivityDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ActivityDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ActivityDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the activity code to be updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When activity code with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When activity code with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Activity Codes
      summary: Delete an activity code
      description: Deletes an activity code.
      operationId: DeleteActivityCode
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the activity code to be deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When activity code with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When activity code with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /activitycodes:
    get:
      tags:
      - Activity Codes
      summary: Get activity codes
      description: Returns a list of activity codes.
      operationId: GetActivityCodes
      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: UpdatedSince
        in: query
        description: Returns expenses updated since a specified time (.net ticks representation of the UTC datetime).
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: When request is successful. Returns a paged collection of 'ActivityCode' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityPagedCollection'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
      - Activity Codes
      summary: Create an activity code
      description: Creates an activity code.
      operationId: CreateActivityCode
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ActivityDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ActivityDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ActivityDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the activity code to be created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    Activity:
      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 activity.
          example: 23d2a4bc-8529-462e-8560-dfbf4fa24e49
        versionId:
          type:
          - string
          - 'null'
          description: Unique version identifier of the activity.
          example: 23d2a4bc-8529-462e-8560-dfbf4fa24e49
        updatedByUserId:
          type:
          - string
          - 'null'
          description: Unique identifier of the user that last updated the activity.
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        type:
          allOf:
          - $ref: '#/components/schemas/EntryType'
          description: 'Type of the activity.


            Possible values: Fixed = ''0'', Time = ''1'', Expense = ''2'''
          example: 0
        description:
          type:
          - string
          - 'null'
          description: Description of the activity.
          example: Contract review
        code:
          type:
          - string
          - 'null'
          description: Code of the activity.
          example: CR
        isBillable:
          type: boolean
          description: True if the activity is billable.
          example: true
        rateType:
          allOf:
          - $ref: '#/components/schemas/ActivityRateType'
          description: 'The activity rate type.


            Possible values: UseDefaultStaffRate = ''0'', OverrideRateForAllStaff = ''1'', OverrideRatePerStaff = ''2'''
          example: 2
        rate:
          type: number
          description: 'Rate of the activity in dollars.


            If set, rate type must be OverrideRateForAllStaff'
          format: double
          example: 23.2
        quantity:
          type: number
          description: 'Quantity of the activity. This is the default value used when creating an expense or time-based fee.


            For type ''Expense'', this field represents the quantity of the expense in units.

            For type ''Time'', this field represents the duration of in minutes, divided by 100,

            e.g. for 1 hour duration, quantity is 0.6, which is 60 minutes divided by 100.


            Applies only for ''Time'' and ''Expense'' types. Not applicable for activity type ''Fixed''.'
          format: double
          example: 0.6
        taxInclusive:
          type: boolean
          description: 'If true, the amount is GST inclusive, otherwise GST exclusive. Only applicable in AU.


            GST inclusive means: Amount exc. GST = Amount - GST, Amount inc. GST = Amount.


            GST exclusive means: Amount exc. GST = Amount, Amount inc. GST = Amount + GST.'
          example: true
        taxExempt:
          type: boolean
          description: Sets tax rate to 0 for the entry (e.g. expense).
          example: true
        taxZeroRated:
          type: boolean
          description: Indicates the entry is zero-rated for tax purposes. Mutually exclusive with other tax settings.
          example: false
        taxOutOfScope:
          type: boolean
          description: Indicates the entry is out of scope for tax purposes. Mutually exclusive with other tax settings.
          example: false
        isDeleted:
          type: boolean
          description: True if the activity is deleted.
          example: true
        inputTaxRate:
          type:
          - number
          - 'null'
          description: Input tax rate of the activity percentage accurate to two decimal places.
          format: double
          example: 45.63
        outputTaxRate:
          type:
          - number
          - 'null'
          description: Output tax rate of the activity percentage accurate to two decimal places.
          format: double
          example: 45.63
      additionalProperties: false
    ActivityPagedCollection:
      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/Activity'
        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
    EntryType:
      enum:
      - 0
      - 1
      - 2
      type: integer
      description: 'Type of the activity.


        Possible values: Fixed = ''0'', Time = ''1'', Expense = ''2'''
      format: int32
    ActivityDto:
      type: object
      properties:
        updatedByUserId:
          type:
          - string
          - 'null'
          description: 'Unique identifier of the user updating the activity.


            This field is reserved for server-to-server operations.'
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        type:
          allOf:
          - $ref: '#/components/schemas/EntryType'
          description: 'Type of the activity.


            Possible values: Fixed = ''0'', Time = ''1'', Expense = ''2'''
          example: 0
        description:
          type:
          - string
          - 'null'
          description: Description of the activity.
          example: Review contract
        code:
          type:
          - string
          - 'null'
          description: Code of the activity. Cannot be longer than 20 characters.
          example: RC
        isBillable:
          type: boolean
          description: True if the activity is billable.
          example: false
        rateType:
          allOf:
          - $ref: '#/components/schemas/ActivityRateType'
          description: "The activity rate type.\n            \nPossible values: UseDefaultStaffRate = '0', OverrideRateForAllStaff = '1', OverrideRatePerStaff = '2'"
          example: 0
        rate:
          type:
          - number
          - 'null'
          description: 'Rate of the activity in dollars.


            If set, rateType must be OverrideRateForAllStaff'
          format: double
          example: 23.21
        quantity:
          type:
          - number
          - 'null'
          description: 'Quantity of the activity. This is the default value used when creating an expense or time-based fee.


            For type ''Expense'', this field represents the quantity of the expense in units.

            For type ''Time'', this field represents the duration of in minutes, divided by 100,

            e.g. for 1 hour duration, quantity is 0.6, which is 60 minutes divided by 100.


            Applies only for ''Time'' and ''Expense'' types. Not applicable for activity type ''Fixed''.'
          format: double
          example: 0.6
        taxInclusive:
          type: boolean
          description: 'If true, the amount is tax inclusive, otherwise tax exclusive. Only applicable in AU and UK regions.


            Tax inclusive means: Amount exc. tax = Amount - Tax, Amount inc. tax = Amount.


            Tax exclusive means: Amount exc. tax = Amount, Amount inc. tax = Amount + Tax.'
          example: false
        taxExempt:
          type: boolean
          description: 'True if the activity is exempt from tax.


            This field is mutually exclusive with TaxZeroRated and TaxOutOfScope.'
          example: false
        taxZeroRated:
          type: boolean
          description: 'True if the activity is zero-rated for tax purposes. Only supported in UK regions.


            This field is mutually exclusive with TaxOutOfScope and TaxExempt.'
          example: false
        taxOutOfScope:
          type: boolean
          description: 'True if the activity is out of scope for tax purposes. Only supported in UK regions.


            This field is mutually exclusive with TaxZeroRated and TaxExempt.'
          example: false
        inputTaxRate:
          type:
          - number
          - 'null'
          description: 'Input tax rate of the activity in a percentage accurate to two decimal places.

            e.g: 45.63'
          format: double
        outputTaxRate:
          type:
          - number
          - 'null'
          description: 'Output tax rate of the activity percentage accurate to two decimal places.

            e.g: 45.63'
          format: double
      additionalProperties: false
    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: {}
    ActivityRateType:
      enum:
      - 0
      - 1
      - 2
      type: integer
      description: 'The activity rate type.


        Possible values: UseDefaultStaffRate = ''0'', OverrideRateForAllStaff = ''1'', OverrideRatePerStaff = ''2'''
      format: int32
  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