Smokeball Layout Matter Items API

The Layout Matter Items API from Smokeball — 3 operation(s) for layout matter items.

OpenAPI Specification

smokeball-layout-matter-items-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Smokeball Activity Codes Layout Matter Items 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: Layout Matter Items
paths:
  /matters/{matterId}/layouts:
    get:
      tags:
      - Layout Matter Items
      summary: Get layouts
      description: Returns a collection of layout items on a specified matter.
      operationId: GetLayoutMatterItems
      parameters:
      - name: matterId
        in: path
        description: Matter Id
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: When request is successful. Returns a 'LayoutMatterItemDataCollection' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LayoutMatterItemDataCollection'
    post:
      tags:
      - Layout Matter Items
      summary: Add a new layout
      description: Adds a new layout matter item to a matter.
      operationId: AddLayout
      parameters:
      - name: matterId
        in: path
        description: Matter ID
        required: true
        schema:
          type: string
          format: uuid
      - name: skipFieldValidation
        in: query
        schema:
          type: boolean
          default: false
      requestBody:
        description: Layout matter item to add
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutMatterItemData'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutMatterItemData'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutMatterItemData'
      responses:
        '202':
          description: When request is accepted. Returns a hypermedia 'Link' object of the layout item to be created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When the new matter item contain invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When the matter or a layout item with the specified ID does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /matters/{matterId}/layouts/{itemId}:
    get:
      tags:
      - Layout Matter Items
      summary: Get a layout
      description: Retrieves a layout item on a specified matter.
      operationId: GetLayoutMatterItemById
      parameters:
      - name: matterId
        in: path
        description: Matter Id
        required: true
        schema:
          type: string
          format: uuid
      - name: itemId
        in: path
        description: Layout item Id
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: When request is successful. Returns a 'LayoutMatterItem' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LayoutMatterItem'
        '404':
          description: When a layout item with the specified ID does not exist on the matter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    patch:
      tags:
      - Layout Matter Items
      summary: Merge a layout
      description: Merges layout data.
      operationId: MergeLayout
      parameters:
      - name: matterId
        in: path
        description: Matter ID
        required: true
        schema:
          type: string
          format: uuid
      - name: itemId
        in: path
        description: Matter item Id
        required: true
        schema:
          type: string
          format: uuid
      - name: skipFieldValidation
        in: query
        description: Used to skip the field validation, may be needed for Smokeball data split migrations
        schema:
          type: boolean
          default: false
      requestBody:
        description: Data to merge into the existing layout
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutMatterItemApiPatch'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutMatterItemApiPatch'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutMatterItemApiPatch'
      responses:
        '202':
          description: When the request is accepted. Returns a hypermedia 'Link' object of the layout item to be updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When the update payload does not contain an ID that matched the ID of the item requiring update.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When the matter or a layout item with the specified ID does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Layout Matter Items
      summary: Remove a layout
      description: Removes a layout matter item from a matter.
      operationId: RemoveLayout
      parameters:
      - name: matterId
        in: path
        description: Matter ID
        required: true
        schema:
          type: string
          format: uuid
      - name: itemId
        in: path
        description: Layout matter item ID to remove
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '202':
          description: When request is accepted.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When the matter or a layout item with the specified ID does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /matters/{matterId}/layouts/{itemId}/contacts:
    get:
      tags:
      - Layout Matter Items
      summary: Get layout contacts
      description: Returns a list of contacts on a specified layout.
      operationId: GetLayoutMatterItemContacts
      parameters:
      - name: matterId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      - name: itemId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: When request is successful. Returns a list of 'LayoutContact' objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LayoutContact'
        '404':
          description: When contacts do not exist for the layout item with specified id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
      - Layout Matter Items
      summary: Add a contact to a layout
      description: Adds a new contact on a specified layout.
      operationId: AddLayoutMatterItemContact
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: itemId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutContactData'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutContactData'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/LayoutContactData'
      responses:
        '202':
          description: When request is accepted
        '404':
          description: When layout item with specified id does not exist on the matter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Layout Matter Items
      summary: Remove a contact from a layout
      description: Removes a contact from a specified layout, deleting the associated role or relationship from the matter.
      operationId: RemoveLayoutMatterItemContact
      parameters:
      - name: matterId
        in: path
        description: Matter Id
        required: true
        schema:
          type: string
          format: uuid
      - name: itemId
        in: path
        description: ItemId of the layout
        required: true
        schema:
          type: string
          format: uuid
      - name: key
        in: query
        description: Layout contact key identifying the contact to remove.
        schema:
          type: string
      responses:
        '202':
          description: When request is accepted.
        '404':
          description: When the layout item does not exist on the matter or no contact is assigned at the specified key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    LayoutMatterItem:
      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
        name:
          type: string
          description: Name of the layout item.
          nullable: true
          example: Item
        description:
          type: string
          description: Brief description of the layout item.
          nullable: true
          example: Text describing item
        itemId:
          type: string
          description: Unique identifier for the layout item.
          format: uuid
          example: 59791902-6280-471b-bd18-f8439ba3042f
        parentId:
          type: string
          description: Unique identifier for the parent layout design.
          nullable: true
          example: Client
        index:
          type: integer
          description: Zero-based index of the layout item.
          format: int32
          example: 0
        parentIndex:
          type: integer
          description: Zero-based index of the parent layout matter item, if one exists.
          format: int32
          nullable: true
          example: 0
        layoutDesign:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: Hypermedia link of the layout design.
          nullable: true
        values:
          type: array
          items:
            $ref: '#/components/schemas/LayoutValue'
          description: List of layout values.
          nullable: true
        events:
          type: array
          items:
            $ref: '#/components/schemas/LayoutEvent'
          description: List of layout events.
          nullable: true
      additionalProperties: false
    LayoutContact:
      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
        key:
          type: string
          description: Unique key name for the layout contact.
          nullable: true
          example: ''
        contact:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: Hypermedia link of the layout contact.
          nullable: true
      additionalProperties: false
    LayoutMatterItemApiPatch:
      type: object
      properties:
        itemId:
          type: string
          description: Unique identifier for the matter list item.
          nullable: true
          example: 59791902-6280-471b-bd18-f8439ba3042f
        layoutDesignId:
          type: string
          description: Identifier of the layout design.
          nullable: true
          example: 414ab774-adce-4659-b18c-82d1b0e826a0
        index:
          type: integer
          description: Zero-based index of the layout item.
          format: int32
          example: 0
        parentItemId:
          type: string
          description: Unique identifier for the parent matter list item.
          nullable: true
          example: 59791902-6280-471b-bd18-f8439ba3042f
        parentId:
          type: string
          description: Identifier of the parent matter list item specific to the provider.
          nullable: true
          example: Client
        parentIndex:
          type: integer
          description: Zero-based index of the parent matter list item.
          format: int32
          example: 0
        name:
          type: string
          description: Name of the layout item.
          nullable: true
          example: Item
        description:
          type: string
          description: Brief description of the layout item.
          nullable: true
          example: Text describing item
        isRemoved:
          type: boolean
          description: Boolean flag indicating if the layout item is to be removed.
          example: false
        values:
          type: array
          items:
            $ref: '#/components/schemas/LayoutValue'
          description: List of layout values.
          nullable: true
        events:
          type: array
          items:
            $ref: '#/components/schemas/LayoutEvent'
          description: List of layout events.
          nullable: true
      additionalProperties: false
    LayoutContactData:
      required:
      - contactId
      - key
      type: object
      properties:
        key:
          minLength: 1
          type: string
          description: Name (mapping) of the layout field that contains ContactId.
        contactId:
          type: string
          description: Unique identifier for the layout contact.
          format: uuid
      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
    LayoutEvent:
      type: object
      properties:
        id:
          type: string
          nullable: true
        appointmentId:
          type: string
          nullable: true
      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: {}
    LayoutMatterItemDataCollection:
      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/LayoutMatterItem'
          nullable: true
      additionalProperties: false
    LayoutValue:
      type: object
      properties:
        key:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
        state:
          description: 'Gets or sets the object that contains supplemental data about the key/value pair.


            This property was introduced in NV-2643, and is usage-specific. It contains data which is used together with Value.

            For example, if a layout contains a textbox control with an override checkbox, their Text and IsChecked properties

            can be persisted in Value and State respectively. In this case, the type of State would be bool or bool?.'
          nullable: true
      additionalProperties: false
    LayoutMatterItemData:
      type: object
      properties:
        itemId:
          type: string
          description: Unique identifier for the matter list item.
          nullable: true
          example: 59791902-6280-471b-bd18-f8439ba3042f
        layoutDesignId:
          type: string
          description: Identifier of the layout design.
          nullable: true
          example: 414ab774-adce-4659-b18c-82d1b0e826a0
        index:
          type: integer
          description: Zero-based index of the layout item.
          format: int32
          example: 0
        parentItemId:
          type: string
          description: Unique identifier for the parent matter list item.
          nullable: true
          example: 59791902-6280-471b-bd18-f8439ba3042f
        parentId:
          type: string
          description: Identifier of the parent matter list item specific to the provider.
          nullable: true
          example: Client
        parentIndex:
          type: integer
          description: Zero-based index of the parent matter list item.
          format: int32
          example: 0
        name:
          type: string
          description: Name of the layout item.
          nullable: true
          example: Item
        description:
          type: string
          description: Brief description of the layout item.
          nullable: true
          example: Text describing item
        values:
          type: array
          items:
            $ref: '#/components/schemas/LayoutValue'
          description: List of layout values.
          nullable: true
        events:
          type: array
          items:
            $ref: '#/components/schemas/LayoutEvent'
          description: List of layout events.
          nullable: true
        isRemoved:
          type: boolean
          description: Boolean flag indicating if the layout item is to be removed.
          example: false
      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