Smokeball Contacts API

The Contacts API from Smokeball — 6 operation(s) for contacts.

OpenAPI Specification

smokeball-contacts-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Smokeball Activity Codes Contacts 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: Contacts
paths:
  /contacts/{contactId}/relations:
    get:
      tags:
      - Contacts
      summary: Get contact relations
      description: Returns a list of relations for a specified contact if associated with the authenticated client.
      operationId: GetRelations
      parameters:
      - name: contactId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a paged collection of 'Link' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkPagedCollection'
        '403':
          description: When contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
      - Contacts
      summary: Create a contact relation
      description: Creates a relation for a specified contact.
      operationId: CreateRelation
      parameters:
      - name: contactId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactRelationDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactRelationDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactRelationDto'
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When related contact id is not provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: When contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /contacts/{contactId}/relations/{relatedContactId}:
    get:
      tags:
      - Contacts
      summary: Get a contact relation
      description: Retrieves a relation for a specified contact if associated with the authenticated client.
      operationId: GetRelationById
      parameters:
      - name: contactId
        in: path
        required: true
        schema:
          type: string
      - name: relatedContactId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: When request is successful. Returns a 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '403':
          description: When contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Contacts
      summary: Update a contact relation
      description: Updates a relation for a specified contact.
      operationId: UpdateRelation
      parameters:
      - name: contactId
        in: path
        required: true
        schema:
          type: string
      - name: relatedContactId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactRelationDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactRelationDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactRelationDto'
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          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 contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Contacts
      summary: Delete a contact relation
      description: Deletes a relation for a specified contact.
      operationId: DeleteRelation
      parameters:
      - name: contactId
        in: path
        required: true
        schema:
          type: string
      - name: relatedContactId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '403':
          description: When contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /contacts:
    get:
      tags:
      - Contacts
      summary: Get contacts
      description: Returns a list of contacts.
      operationId: GetContacts
      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 contacts updated since a specified time (.net ticks representation of the UTC datetime).
        schema:
          type: integer
          format: int64
      - name: ExcludeDeletedContacts
        in: query
        description: Excludes (filters out) deleted contacts if set to true.
        schema:
          type: boolean
          example: true
        example: true
      - name: Type
        in: query
        description: "Filters result by one more contact types if set. Returns all contact types by default.\r\nPossible values: Staff, Person, Organisation, GroupOfPeople, Trust"
        schema:
          type: array
          items:
            type: string
      - name: Search
        in: query
        description: ' Available fields: email, phone, name'
        schema:
          type: array
          items:
            type: string
      - name: Sort
        in: query
        description: ' Available fields: lastUpdated'
        schema:
          type: string
      - name: Fields
        in: query
        description: ' Available fields: passportDetails, deathDetails, citizenshipDetails, utbmsDetails, tags, executionOptions, voiDetails'
        schema:
          type: string
      responses:
        '200':
          description: When request is successful. Returns a paged collection of 'Contact' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactPagedCollection'
    post:
      tags:
      - Contacts
      summary: Create a contact
      description: Creates a contact.
      operationId: CreateContact
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactDto'
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          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 the authenticated account does not have access to create contacts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /contacts/{id}:
    get:
      tags:
      - Contacts
      summary: Get a contact
      description: Retrieves a specified contact.
      operationId: GetContactById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: When request is successful. Returns a 'Contact' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '403':
          description: When contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Contacts
      summary: Update a contact
      description: Updates a specified contact.
      operationId: UpdateContact
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ContactDto'
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          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 contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Contacts
      summary: Delete a contact
      description: Deletes a specified contact.
      operationId: DeleteContact
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '403':
          description: When contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /contacts/{id}/tags:
    get:
      tags:
      - Contacts
      summary: Get contact tags
      description: Retrieves a specified contacts tags.
      operationId: GetContactTagsById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: When request is successful. Returns a collection of 'Tag' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagCollection'
        '403':
          description: When contact with specified id is not associated with authenticated client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
      - Contacts
      summary: Add tags to a contact
      description: Adds tags to a contact.
      operationId: AddContactTags
      parameters:
      - name: id
        in: path
        description: The contact ID
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: The list of tags to add
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                type: string
          application/json:
            schema:
              type: array
              items:
                type: string
          application/*+json:
            schema:
              type: array
              items:
                type: string
      responses:
        '201':
          description: When request is successful. Returns a hypermedia 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /contacts/{id}/tags/{tagId}:
    delete:
      tags:
      - Contacts
      summary: Remove tags from a contact
      description: Removes tags from a contact.
      operationId: RemoveContactTags
      parameters:
      - name: id
        in: path
        description: The contact ID
        required: true
        schema:
          type: string
          format: uuid
      - name: tagId
        in: path
        description: The tag ID (optional for bulk delete)
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: The list of tags for bulk delete
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                type: string
          application/json:
            schema:
              type: array
              items:
                type: string
          application/*+json:
            schema:
              type: array
              items:
                type: string
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the contact tags.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When contact with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    ContactPagedCollection:
      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
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        value:
          type: array
          items:
            $ref: '#/components/schemas/Contact'
          nullable: true
        offset:
          type: integer
          format: int32
          nullable: true
        limit:
          type: integer
          format: int32
          nullable: true
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
      additionalProperties: false
    VoiDetails:
      type: object
      properties:
        isCompleted:
          type: boolean
          description: Indicates if VOI has been completed
          example: true
        completedDateTime:
          type: string
          description: Date and time when VOI was completed
          format: date-time
          nullable: true
          example: '2024-01-15T10:30:00Z'
        reference:
          type: string
          description: Reference number or order ID from the VOI service
          nullable: true
          example: '12345678'
        source:
          type: string
          description: Source/provider of the VOI service
          nullable: true
          example: InfoTrackID
        status:
          type: string
          description: Current status of the VOI check
          nullable: true
          example: Complete
      additionalProperties: false
      description: "Verification of Identity (VOI) details\r\n\r\nOnly supported in AU."
    ExecutionPerson:
      type: object
      properties:
        name:
          type: string
          description: Person's full name
          nullable: true
          example: John Smith
        address:
          allOf:
          - $ref: '#/components/schemas/Address'
          description: Person's address
          nullable: true
        personType:
          type: string
          description: "Person type for execution.\r\n\r\nOnly supported in AU."
          nullable: true
          example: Director
        selectedOfficeHeld:
          type: string
          description: Office held by the person.
          nullable: true
          example: Director
        voiDetails:
          allOf:
          - $ref: '#/components/schemas/VoiDetails'
          description: Verification of identity details for this person
          nullable: true
      additionalProperties: false
      description: "Represents an authorized person for organization execution\r\n\r\nOnly supported in AU."
    DxAddressDto:
      type: object
      properties:
        number:
          type: string
          nullable: true
        exchange:
          type: string
          nullable: true
        state:
          type: string
          nullable: true
      additionalProperties: false
    AddressDto:
      type: object
      properties:
        careOf:
          type: string
          description: Care of the addressee (if applicable).
          nullable: true
          example: John Smith
        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 in address (if applicable). Accepts custom values.\r\n\r\ne.g. Apartment, Unit, Flat, Villa, Suite."
          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. Accepts custom values.\r\n\r\ne.g. Street, Road, Avenue, Lane."
          nullable: true
          example: Street
        addressLine1:
          type: string
          description: "First line of address.\r\n\r\nOnly supported in the US."
          nullable: true
          example: Level 1/10
        addressLine2:
          type: string
          description: "Second line of address (if applicable).\r\n\r\nOnly supported in the US."
          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'
        locality:
          type: string
          description: "Locality.\r\n\r\nOnly supported in the UK."
          nullable: true
          example: Dunkirk
        county:
          type: string
          description: "County.\r\n\r\nOnly supported in the US and UK."
          nullable: true
          example: New York
        country:
          type: string
          description: Country.
          nullable: true
          example: United States
        poBox:
          allOf:
          - $ref: '#/components/schemas/PoBoxAddressDto'
          description: "PO Box details.\r\n\r\nOnly supported in AU."
          nullable: true
      additionalProperties: false
    Address:
      type: object
      properties:
        careOf:
          type: string
          description: Care of the addressee (if applicable).
          nullable: true
          example: John Smith
        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 in address (if applicable). Accepts custom values.\r\n\r\ne.g. Apartment, Unit, Flat, Villa, Suite."
          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. Accepts custom values.\r\n\r\ne.g. Street, Road, Avenue, Lane."
          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'
        locality:
          type: string
          description: "Locality.\r\n\r\nOnly supported in the UK."
          nullable: true
          example: Dunkirk
        county:
          type: string
          description: "County.\r\n\r\nOnly supported in the US and UK."
          nullable: true
          example: New York
        country:
          type: string
          description: Country.
          nullable: true
          example: United States
        poBox:
          allOf:
          - $ref: '#/components/schemas/PoBoxAddress'
          description: PO Box details (if applicable).
          nullable: true
      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
    GroupOfPeople:
      type: object
      properties:
        people:
          type: array
          items:
            $ref: '#/components/schemas/Link'
          description: List of contact person hypermedia links.
          nullable: true
        residentialAddress:
          allOf:
          - $ref: '#/components/schemas/Address'
          description: Contact group's residential address details.
          nullable: true
        mailingAddress:
          allOf:
          - $ref: '#/components/schemas/Address'
          description: "Contact group's mailing address details.\r\n            \r\nOnly supported in the US."
          nullable: true
        name:
          type: string
          description: Names of the people in the group. Limited to the first 5 names.
          nullable: true
          example: John Smith & Jane Citizen
      additionalProperties: false
    TrustDto:
      type: object
      properties:
        name:
          type: string
          description: Trust's name.
          nullable: true
          example: Trinity Trust
        status:
          type: string
          description: "Trust's status.\r\n\r\nStandard values are: as Trustee of, as Trustees of, as Co-Trustees of, as an Individual and as Trustee of, as Successor Trustee of.\r\n\r\nA custom value can be supplied instead."
          nullable: true
          example: as Trustee of
        trustNumber:
          type: string
          description: Trust's number.
          nullable: true
          example: '12345678'
        executedDate:
          type: string
          description: Date trust was executed.
          format: date-time
          nullable: true
          example: '1980-07-01'
        phone:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Trust's phone details.
          nullable: true
        fax:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Trust's fax details.
          nullable: true
        address:
          allOf:
          - $ref: '#/components/schemas/AddressDto'
          description: Trust's address.
          nullable: true
        trustees:
          type: array
          items:
            $ref: '#/components/schemas/TrusteeDto'
          description: List of trustees.
          nullable: true
          example:
          - Name: John Smith
            Type: Individual
          - Name: Smithfield Steel
            Type: Company
      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
    CompanyDto:
      type: object
      properties:
        name:
          type: string
          description: Company's name.
          nullable: true
          example: Brown LLC
        type:
          type: string
          description: "Company's type.\r\n\r\nPossible values for US: 'Corporation', 'Government Agency', 'Limited Liability Company', 'Sole Proprietor', 'Partnership', 'Not-for-Profit'\r\n\r\nPossible values for AU: 'Company', 'Sole Proprietor', 'Partnership', 'Government Department'\r\n\r\nPossible values for UK: 'Company', 'Sole Trader', 'Partnership', 'Limited Liability Partnership', 'Government Department'"
          nullable: true
          example: Corporation
        phone:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Company's phone details.
          nullable: true
        fax:
          allOf:
          - $ref: '#/components/schemas/PhoneNumberDto'
          description: Company's fax details.
          nullable: true
        email:
          type: string
          description: Company's email address.
          nullable: true
          example: contact@brown.com
        website:
          type: string
          description: Company's website URL.
          nullable: true
          example: https://www.brownllc.com
        notes:
          type: string
          description: Additional notes for company (if applicable).
          nullable: true
          example: Recently merged with Cyberdyne Inc.
        businessAddress:
          allOf:
          - $ref: '#/components/schemas/AddressWithDxAddressDto'
          nullable: true
        mailingAddress:
          allOf:
          - $ref: '#/components/schemas/AddressDto'
          description: Only applicable for USA.
          nullable: true
        abn:
          type: string
          description: "For AU: Australian Company Number (ABN) of the company.\r\n\r\nFor UK: Company Registration Number (CRN) of the company.\r\n\r\nOnly supported in AU and UK."
          nullable: true
          example: '1234567890'
    

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