Smokeball Firm API

The Firm API from Smokeball — 3 operation(s) for firm.

OpenAPI Specification

smokeball-firm-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Smokeball Activity Codes Firm 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: Firm
paths:
  /firm:
    get:
      tags:
      - Firm
      summary: Get firm
      description: Retrieves the details of the firm associated with the authenticated client.
      operationId: GetFirm
      responses:
        '200':
          description: When request is successful. Returns a 'Firm' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Firm'
        '404':
          description: When firm does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Firm
      summary: Update firm
      description: Updates firm details for the current authenticated client.
      operationId: UpdateFirm
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/UpdateFirmDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/UpdateFirmDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/UpdateFirmDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the firm to be updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '404':
          description: When firm does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
      - Firm
      summary: Create firm
      description: Creates a firm for the current authenticated client and registers an existing user as a staff member and firm owner.
      operationId: CreateFirm
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CreateFirmDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CreateFirmDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CreateFirmDto'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the firm to be created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When staff user does not exist or is already associated with another firm.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /firmusers:
    get:
      tags:
      - Firm
      summary: Get firm user mappings
      description: Retrieves a list of user mappings in the firm associated with the authenticated client.
      responses:
        '200':
          description: When request is successful. Returns an array of one or more 'FirmUser' objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FirmUser'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /firmusers/{id}:
    get:
      tags:
      - Firm
      summary: Get firm user mapping
      description: Retrieves a user mapping (based on staff or user id parameter provided) in the firm associated with the authenticated client.
      operationId: GetFirmUserByIdAsync
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a 'FirmUser' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FirmUser'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Firm
      summary: Update firm user mapping
      description: Updates a user mapping in the firm associated with the authenticated client.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FirmUserDto'
              description: Represents a mapping between a user and a staff member in a firm.
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FirmUserDto'
              description: Represents a mapping between a user and a staff member in a firm.
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FirmUserDto'
              description: Represents a mapping between a user and a staff member in a firm.
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the user to be updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When staff or user has not been provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When staff does not belong to the firm.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When 'FirmUser' does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Firm
      summary: Delete firm user mapping
      description: "Removes the user from the firm associated with the authenticated client.\r\n\r\nThe staff member is set as a former staff member and a former user. User access is also disabled."
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the user to be deleted.
        '404':
          description: When 'FirmUser' object does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    FirmAddress:
      type: object
      properties:
        buildingLevel:
          type: string
          description: Building level in address (if applicable).
          nullable: true
          example: Level 1
        unitNumber:
          type: string
          description: Unit number in address (if applicable).
          nullable: true
          example: '10'
        unitType:
          type: string
          description: Unit type (e.g. Unit,Flat,Villa,Suite,etc.) in address (if applicable).
          nullable: true
          example: Suite
        streetNumber:
          type: string
          description: Street number in address.
          nullable: true
          example: '100'
        streetName:
          type: string
          description: Street name in address.
          nullable: true
          example: Broad
        streetType:
          type: string
          description: Street type (e.g. Street,Road,Avenue,Lane,etc.) in address.
          nullable: true
          example: Street
        addressLine1:
          type: string
          description: First line of address.
          nullable: true
          example: Level 1/10
        addressLine2:
          type: string
          description: Second line of address (if applicable).
          nullable: true
          example: 100 Broad Street
        city:
          type: string
          description: City, district, suburb, town, or village.
          nullable: true
          example: Chicago
        state:
          type: string
          description: State, province, or region.
          nullable: true
          example: IL
        zipCode:
          type: string
          description: Zip or post code.
          nullable: true
          example: '60606'
        county:
          type: string
          description: County (if applicable)
          nullable: true
          example: Berkshire
        locality:
          type: string
          description: Locality (if applicable)
          nullable: true
          example: Windsor
        country:
          type: string
          description: Country.
          nullable: true
          example: United States
        careOf:
          type: string
          description: Care of the addressee (if applicable).
          nullable: true
          readOnly: true
          example: ''
        poBoxType:
          type: string
          description: PO box type in address (if applicable).
          nullable: true
          readOnly: true
          example: ''
        poBoxNumber:
          type: string
          description: PO box Number in address (if applicable).
          nullable: true
          readOnly: true
          example: ''
      additionalProperties: false
    Link:
      type: object
      properties:
        id:
          type: string
          nullable: true
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
      additionalProperties: false
    PhoneNumberDto:
      type: object
      properties:
        areaCode:
          type: string
          description: Phone area code.
          nullable: true
          example: '555'
        number:
          type: string
          description: Phone number (excluding area code).
          nullable: true
          example: '1234567'
      additionalProperties: false
    FirmDxAddressDto:
      type: object
      properties:
        number:
          type: string
          description: Direct Exchange number (if applicable).
          nullable: true
          example: '376'
        exchange:
          type: string
          description: Direct Exchange name.
          nullable: true
          example: DX
        state:
          type: string
          description: State, province, or region.
          nullable: true
          example: NSW
      additionalProperties: false
    LicenceNumber:
      type: object
      properties:
        state:
          type: string
          description: State associated to the licence.
          nullable: true
          example: IL
        type:
          type: string
          description: Type of the licence.
          nullable: true
          example: ''
        number:
          type: string
          description: Licence number.
          nullable: true
      additionalProperties: false
    FirmSubscriptionDto:
      type: object
      properties:
        productSuite:
          type: string
          description: "Optional product suite to use when creating the firm.\r\n\r\nUse 'SMOKEBALL' to use the new product suite."
          nullable: true
        promotionId:
          type: string
          description: Optional promotion ID that will be used when the firm is subscribed.
          nullable: true
        interval:
          type: string
          description: "Optional interval to register the account subscription with.\r\n\r\nPossible values: Monthly, Yearly"
          nullable: true
      additionalProperties: false
      description: The subscription details for the firm.
    CreateFirmDto:
      type: object
      properties:
        productId:
          type: string
          description: "The product/tier the firm is subscribed to. Must be set when creating the firm and is optional when updating the firm.\r\n\r\nThe supported products are listed in order below, the identifier (in brackets) must be used.\r\n\r\n* Bill (SMK001)\r\n\r\n* Boost (SMK004)\r\n\r\n* Grow (SMK002)\r\n\r\n* Prosper + (SMK003)\r\n\r\nPossible values: SMK001, SMK004, SMK002, SMK003"
          nullable: true
          example: SMK001
        addOnIds:
          uniqueItems: true
          type: array
          items:
            type: string
          description: "The optional add-ons the firm is subscribed to. Must be specified with an accompanying productId.\r\n\r\nThe supported add-ons are listed below, the identifier (listed in brackets) must be used.\r\n\r\n* Intake (ADD001)\r\n\r\n* AutoTime (ADD003)\r\n\r\n* FamilyPro (ADD004)\r\n\r\n* Api (ADD005)\r\n\r\n* Workflows (ADD006)\r\n\r\n* PowerBI (ADD007)\r\n\r\n* Archie (ADD008)\r\n\r\n* SSO (ADD010)\r\n\r\nPossible values: ADD01, ADD003, ADD004, ADD005, ADD006, ADD007, ADD008, ADD010"
          nullable: true
          example:
          - ADD01
          - ADD003
        name:
          type: string
          description: The name of the firm.
          nullable: true
          example: Brown LLC
        email:
          type: string
          description: "The email of the firm.\r\n\r\nOnly supported in AU."
          nullable: true
          example: john.smith@law.com
        abn:
          type: string
          description: "Represents a different field depending on the region.\r\n\r\n* For AU: Australian Business Number (ABN) of the firm.\r\n\r\n* For UK: Value-added Tax Number (VAT) of the firm.\r\n\r\nOnly supported in AU and UK."
          nullable: true
          example: '1234567890'
        acn:
          type: string
          description: "Represents a different field depending on the region.\r\n\r\n* For AU: Australian Company Number (ACN) of the firm.\r\n\r\n* For UK: Company Registration Number (CRN) of the firm.\r\n\r\nOnly supported in AU and UK."
          nullable: true
          example: '1234567890'
        streetAddress:
          allOf:
          - $ref: '#/components/schemas/FirmAddressDto'
          description: Street address of the firm.
          nullable: true
        mailingAddress:
          allOf:
          - $ref: '#/components/schemas/FirmAddressDto'
          description: Mailing address of the firm.
          nullable: true
        dxAddress:
          allOf:
          - $ref: '#/components/schemas/FirmDxAddressDto'
          description: "DX address of the firm.\r\n\r\nOnly supported in AU."
          nullable: true
        phone:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Phone number of the firm.
          nullable: true
        fax:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Fax number of the firm.
          nullable: true
        isInternal:
          type: boolean
          description: Whether firm is being created for internal use. Internal firms will not be subscribed for payment processing and will not be charged.
          example: false
        staff:
          allOf:
          - $ref: '#/components/schemas/StaffDto'
          description: The staff member that will be created with the firm. This staff member will become the firm owner.
          nullable: true
        subscription:
          allOf:
          - $ref: '#/components/schemas/FirmSubscriptionDto'
          description: Optional subscription details that will be used when creating the firm.
          nullable: true
      additionalProperties: false
    FirmAccountStatus:
      enum:
      - Active
      - Warning
      - Suspended
      type: string
    StylingDetails:
      type: object
      properties:
        primaryColorHexCode:
          type: string
          description: Firm's primary color hex code.
          nullable: true
          example: '#FF000000'
        secondaryColorHexCode:
          type: string
          description: Firm's secondary color hex code.
          nullable: true
          example: '#FF000000'
        fontFamilyName:
          type: string
          description: Firm's font family name.
          nullable: true
          example: Open Sans
      additionalProperties: false
    UpdateFirmDto:
      type: object
      properties:
        productId:
          type: string
          description: "The product/tier the firm is subscribed to. Must be set when creating the firm and is optional when updating the firm.\r\n\r\nThe supported products are listed in order below, the identifier (in brackets) must be used.\r\n\r\n* Bill (SMK001)\r\n\r\n* Boost (SMK004)\r\n\r\n* Grow (SMK002)\r\n\r\n* Prosper + (SMK003)\r\n\r\nPossible values: SMK001, SMK004, SMK002, SMK003"
          nullable: true
          example: SMK001
        addOnIds:
          uniqueItems: true
          type: array
          items:
            type: string
          description: "The optional add-ons the firm is subscribed to. Must be specified with an accompanying productId.\r\n\r\nThe supported add-ons are listed below, the identifier (listed in brackets) must be used.\r\n\r\n* Intake (ADD001)\r\n\r\n* AutoTime (ADD003)\r\n\r\n* FamilyPro (ADD004)\r\n\r\n* Api (ADD005)\r\n\r\n* Workflows (ADD006)\r\n\r\n* PowerBI (ADD007)\r\n\r\n* Archie (ADD008)\r\n\r\n* SSO (ADD010)\r\n\r\nPossible values: ADD01, ADD003, ADD004, ADD005, ADD006, ADD007, ADD008, ADD010"
          nullable: true
          example:
          - ADD01
          - ADD003
        name:
          type: string
          description: The name of the firm.
          nullable: true
          example: Brown LLC
        email:
          type: string
          description: "The email of the firm.\r\n\r\nOnly supported in AU."
          nullable: true
          example: john.smith@law.com
        abn:
          type: string
          description: "Represents a different field depending on the region.\r\n\r\n* For AU: Australian Business Number (ABN) of the firm.\r\n\r\n* For UK: Value-added Tax Number (VAT) of the firm.\r\n\r\nOnly supported in AU and UK."
          nullable: true
          example: '1234567890'
        acn:
          type: string
          description: "Represents a different field depending on the region.\r\n\r\n* For AU: Australian Company Number (ACN) of the firm.\r\n\r\n* For UK: Company Registration Number (CRN) of the firm.\r\n\r\nOnly supported in AU and UK."
          nullable: true
          example: '1234567890'
        streetAddress:
          allOf:
          - $ref: '#/components/schemas/FirmAddressDto'
          description: Street address of the firm.
          nullable: true
        mailingAddress:
          allOf:
          - $ref: '#/components/schemas/FirmAddressDto'
          description: Mailing address of the firm.
          nullable: true
        dxAddress:
          allOf:
          - $ref: '#/components/schemas/FirmDxAddressDto'
          description: "DX address of the firm.\r\n\r\nOnly supported in AU."
          nullable: true
        phone:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Phone number of the firm.
          nullable: true
        fax:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Fax number of the firm.
          nullable: true
        status:
          allOf:
          - $ref: '#/components/schemas/FirmStatusDto'
          description: The status of the firm.
          nullable: true
      additionalProperties: false
    FirmUserDto:
      type: object
      properties:
        userId:
          type: string
          description: Unique identifier of the associated user.
          nullable: true
          example: b471682e-fa17-4e46-b7fe-9b2b8fdcb3c2
        staffId:
          type: string
          description: Unique identifier of the associated staff member..
          nullable: true
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
      additionalProperties: false
      description: Represents a mapping between a user and a staff member in a firm.
    PhoneNumber:
      type: object
      properties:
        areaCode:
          type: string
          description: Phone area code.
          nullable: true
          example: '555'
        number:
          type: string
          description: Phone number (excluding area code).
          nullable: true
          example: '1234567'
      additionalProperties: false
    FirmStatus:
      type: object
      properties:
        status:
          allOf:
          - $ref: '#/components/schemas/FirmAccountStatus'
          description: The status of the firm.
          example: Active
        statusMessage:
          type: string
          description: The status message of the firm.
          nullable: true
      additionalProperties: false
      description: The status of the firm.
    Firm:
      type: object
      properties:
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        id:
          type: string
          description: Unique identifier of the firm.
          nullable: true
          example: f4ff1eff-b7fe-4d46-4e46-01d985838d76
        versionId:
          type: string
          description: Version id of the record.
          nullable: true
          example: 750eb5c5-ac0b-7d11-4997-e0ce9d8896c8
        owner:
          type: string
          description: "The owner/white-label partner used by the firm.\r\n\r\nPossible values: Smokeball, PracticeEvolve, TriConvey."
          nullable: true
          example: Smokeball
        name:
          type: string
          description: The name of the firm.
          nullable: true
          example: Brown LLC
        status:
          allOf:
          - $ref: '#/components/schemas/FirmStatus'
          description: The status of the firm.
          nullable: true
        productId:
          type: string
          description: "The product/tier the firm is subscribed to. Must be set when creating the firm and is optional when updating the firm.\r\n\r\nThe supported products are listed in order below, the identifier (in brackets) must be used.\r\n\r\n* Bill (SMK001)\r\n\r\n* Boost (SMK004)\r\n\r\n* Grow (SMK002)\r\n\r\n* Prosper + (SMK003)\r\n\r\nPossible values: SMK001, SMK004, SMK002, SMK003"
          nullable: true
          example: SMK001
        addOnIds:
          type: array
          items:
            type: string
          description: "The optional add-ons the firm is subscribed to. Must be specified with an accompanying productId.\r\n\r\nThe supported add-ons are listed below, the identifier (listed in brackets) must be used.\r\n\r\n* Intake (ADD001)\r\n\r\n* AutoTime (ADD003)\r\n\r\n* FamilyPro (ADD004)\r\n\r\n* Api (ADD005)\r\n\r\n* Workflows (ADD006)\r\n\r\n* PowerBI (ADD007)\r\n\r\n* Archie (ADD008)\r\n\r\n* SSO (ADD010)\r\n\r\n* PracticeEvolve (ADD011)\r\n\r\n* CustomReporting (ADD012)\r\n\r\nPossible values: ADD001, ADD003, ADD004, ADD005, ADD006, ADD007, ADD008, ADD010, ADD011, ADD012"
          nullable: true
          example:
          - ADD001
          - ADD003
        email:
          type: string
          description: "The email of the firm.\r\n\r\nOnly supported in AUS."
          nullable: true
          example: john.smith@law.com
        abn:
          type: string
          description: "For AU: Australian Business Number (ABN) of the firm.\r\n\r\nFor UK: Value-added Tax Number (VAT) of the firm.\r\n\r\nOnly supported in AU and UK."
          nullable: true
          example: '1234567890'
        acn:
          type: string
          description: "For AU: Australian Company Number (ACN) of the firm.\r\n\r\nFor UK: Company Registration Number (CRN) of the firm.\r\n\r\nOnly supported in AU and UK."
          nullable: true
          example: '1234567890'
        streetAddress:
          allOf:
          - $ref: '#/components/schemas/FirmAddress'
          description: Street address of the firm.
          nullable: true
        mailingAddress:
          allOf:
          - $ref: '#/components/schemas/FirmAddress'
          description: Mailing address of the firm.
          nullable: true
        dxAddress:
          allOf:
          - $ref: '#/components/schemas/DxAddress'
          description: "DX address of the firm.\r\n\r\nOnly supported in AUS."
          nullable: true
        phone:
          allOf:
          - $ref: '#/components/schemas/PhoneNumber'
          description: Phone number of the firm.
          nullable: true
        fax:
          allOf:
          - $ref: '#/components/schemas/PhoneNumber'
          description: Fax number of the firm.
          nullable: true
        logo:
          type: string
          description: Logo of the firm.
          nullable: true
          example: https://example-logo-url.com/image
        stylingDetails:
          allOf:
          - $ref: '#/components/schemas/StylingDetails'
          description: Styling details of the firm.
          nullable: true
        licenceNumbers:
          type: array
          items:
            $ref: '#/components/schemas/LicenceNumber'
          description: Licence numbers of the firm.
          nullable: true
        createdDate:
          type: string
          description: The date when the firm was created in UTC.
          format: date-time
          nullable: true
          example: '2024-01-15T10:30:00Z'
      additionalProperties: false
    FirmStatusDto:
      type: object
      properties:
        status:
          allOf:
          - $ref: '#/components/schemas/FirmAccountStatus'
          description: The status of the firm account.
          example: Active
        statusMessage:
          type: string
          description: The status message of the firm. If left blank, an appropriate message is set depending on the status.
          nullable: true
      additionalProperties: false
      description: The status of the firm.
    DxAddress:
      type: object
      properties:
        number:
          type: string
          description: Direct Exchange number (if applicable).
          nullable: true
          example: '376'
        exchange:
          type: string
          description: Direct Exchange name.
          nullable: true
          example: DX
        state:
          type: string
          description: State, province, or region.
          nullable: true
          example: NSW
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    FirmAddressDto:
      type: object
      properties:
        buildingLevel:
          type: string
          description: Building level in address (if applicable).
          nullable: true
          example: Level 1
        unitNumber:
          type: string
          description: Unit number in address (if applicable).
          nullable: true
          example: '10'
        unitType:
          type: string
          description: Unit type (e.g. Unit,Flat,Villa,Suite,etc.) in address (if applicable).
          nullable: true
          example: Suite
        streetNumber:
          type: string
          description: Street number in address.
          nullable: true
          example: '100'
        streetName:
          type: string
          description: Street name in address.
          nullable: true
          example: Broad
        streetType:
          type: string
          description: Street type (e.g. Street,Road,Avenue,Lane,etc.) in address.
          nullable: true
          example: Street
        addressLine1:
          type: string
          description: First line of address.
          nullable: true
          example: Level 1/10
        addressLine2:
          type: string
          description: Second line of address (if applicable).
          nullable: true
          example: 100 Broad Street
        city:
          type: string
          description: City, district, suburb, town, or village.
          nullable: true
          example: Chicago
        state:
          type: string
          description: State, province, or region (if applicable).
          nullable: true
          example: IL
        zipCode:
          type: string
          description: Zip or post code.
          nullable: true
          example: '60606'
        county:
          type: string
          description: County (if applicable).
          nullable: true
          example: ''
        locality:
          type: string
          description: Locality (if applicable).
          nullable: true
          example: ''
        country:
          type: string
          description: Country.
          nullable: true
          example: United States
        careOf:
          type: string
          description: Care of the addressee (if applicable).
          nullable: true
          example: ''
        poBoxType:
          type: string
          description: PO box type in address (if applicable).
          nullable: true
          example: ''
        poBoxNumber:
          type: string
          description: PO box Number in address (if applicable).
          nullable: true
          example: ''
      additionalProperties: false
    StaffDto:
      type: object
      properties:
        userId:
          type: string
          description: "Unique identifier of the associated user. Used to map staff member to the specified user id and ignored if left blank.\r\nUse the FirmUsers API to remove a staff/user mapping."
          nullable: true
          example: b471682e-fa17-4e46-b7fe-9b2b8fdcb3c2
        title:
          type: string
          description: Staff member's title.
          nullable: true
          example: Mr
        firstName:
          type: string
          description: Staff member's first name.
          nullable: true
          example: John
        middleName:
          type: string
          description: Staff member's middle name (if applicable).
          nullable: true
          example: ''
        lastName:
          type: string
          description: Staff member's last name.
          nullable: true
          example: Smith
        initials:
          type: string
          description: Staff member's initials.
          nullable: true
          example: JS
        phone:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Staff member's phone number.
          nullable: true
        cell:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Staff member's cell number.
          nullable: true
        email:
         

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/smokeball/refs/heads/main/openapi/smokeball-firm-api-openapi.yml