Smokeball Portal API

The Portal API from Smokeball — 3 operation(s) for portal.

OpenAPI Specification

smokeball-portal-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Smokeball Activity Codes Portal 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: Portal
paths:
  /matters/{matterId}/portal/tasks:
    post:
      tags:
      - Portal
      summary: Creates a portal task
      description: Creates a new client portal task associated with the specified matter.
      operationId: CreatePortalTaskAsync
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PortalTaskDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PortalTaskDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PortalTaskDto'
        required: true
      responses:
        '202':
          description: When request is accepted. Returns the id of the task to be created.
        '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 the matter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When matter with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /matters/{matterId}/portal/messages:
    post:
      tags:
      - Portal
      summary: Sends a portal message
      description: "Sends a message to the specified contact on the client portal. \r\n\r\nWhen using the Client Credentials grant type, include the UserId header to impersonate\r\nthe lawyer in the firm who is sending the message."
      operationId: SendPortalMessageAsync
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PortalMessageDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PortalMessageDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PortalMessageDto'
      responses:
        '202':
          description: When request is accepted.
        '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 the matter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When matter with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /matters/{matterId}/portal/tasks/{taskId}:
    patch:
      tags:
      - Portal
      summary: Patch a portal task
      description: Updates a client portal task.
      operationId: PatchPortalTaskAsync
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: taskId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PatchPortalTaskDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PatchPortalTaskDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/PatchPortalTaskDto'
      responses:
        '202':
          description: When request is accepted. Returns the id of the task to be updated.
        '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 the matter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When matter with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    PatchPortalTaskDto:
      type: object
      properties:
        externalUserId:
          type: string
          description: The optional external user identifier of the external system.
          nullable: true
        title:
          type: string
          description: The title of the task to be displayed in the UI.
          nullable: true
          example: 'Sign: Verification of Identity'
        url:
          type: string
          description: The URL that will be displayed within the task content.
          nullable: true
          example: http://www.yourwebsite.com
        actionText:
          type: string
          description: "Optional action text, a single word to describe the action the task relates to. \r\n\r\nDefaults to \"Complete\", but other examples could be \"Sign\" or \"Review\"."
          nullable: true
          example: Complete
        cancelled:
          type: boolean
          description: Whether the task is Cancelled
          nullable: true
          example: true
        cancelledText:
          type: string
          description: Optional cancelled text, used on the task cancelled screen if provided.
          nullable: true
          example: Signing Cancelled!
        cancelledUrl:
          type: string
          description: "Optional cancelled URL, which is a URL that is loaded in the task content body instead of the default cancelled screen if provided.\r\n\r\nThis option overrides CancelledText if provided."
          nullable: true
          example: http://www.yourwebsite.com
        completed:
          type: boolean
          description: Whether the task is Completed
          nullable: true
          example: true
        completedText:
          type: string
          description: Optional completed text, used on the task success screen if provided.
          nullable: true
          example: Signing Complete!
        completedUrl:
          type: string
          description: "Optional completed URL, which is a URL that is loaded in the task content body instead of the default success screen if provided.\r\n\r\nThis option overrides CompletedText if provided."
          nullable: true
          example: http://www.yourwebsite.com
        expired:
          type: boolean
          description: Whether the task is Expired
          nullable: true
          example: true
        expiredText:
          type: string
          description: Optional expired text, used on the task expired screen if provided.
          nullable: true
          example: Signing Expired!
        expiredUrl:
          type: string
          description: "Optional expired URL, which is a URL that is loaded in the task content body instead of the default expired screen if provided.\r\n\r\nThis option overrides ExpiredText if provided."
          nullable: true
          example: http://www.yourwebsite.com
      additionalProperties: false
    PortalMessageDto:
      required:
      - message
      type: object
      properties:
        contactId:
          type: string
          description: Unique identifier of the contact.
          format: uuid
          example: 93421c6f-40bd-465d-bb95-3b3b5e200e30
        message:
          minLength: 1
          type: string
        requireMFA:
          type: boolean
          description: Whether MFA is required before showing the message content.
          example: 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: {}
    PortalTaskDto:
      required:
      - externalUserId
      - title
      - url
      type: object
      properties:
        contactId:
          type: string
          description: Unique identifier of the contact.
          format: uuid
          nullable: true
          example: 93421c6f-40bd-465d-bb95-3b3b5e200e30
        email:
          type: string
          description: Email address of the contact. If provided, this takes precedence over ContactId.
          nullable: true
          example: contact@example.com
        externalUserId:
          minLength: 1
          type: string
          description: The optional external user identifier of the external system.
        title:
          minLength: 1
          type: string
          description: The title of the task to be displayed in the UI.
          example: 'Sign: Verification of Identity'
        url:
          minLength: 1
          type: string
          description: The URL that will be displayed within the task content.
          example: http://www.yourwebsite.com
        requireMFA:
          type: boolean
          description: Whether MFA is required before showing the task content.
        optional:
          type: boolean
          description: "Whether the task is \"Required\" or \"Optional\".\r\n\r\nOptional tasks appear in a separate section in the UI."
        actionText:
          type: string
          description: "Optional action text, a single word to describe the action the task relates to. \r\n\r\nDefaults to \"Complete\", but other examples could be \"Sign\" or \"Review\"."
          nullable: true
          example: Complete
        completedText:
          type: string
          description: Optional completed text, used on the task success screen if provided.
          nullable: true
          example: Signing Complete!
        completedUrl:
          type: string
          description: "Optional completed URL, which is a URL that is loaded in the task content body instead of the default success screen if provided.\r\n\r\nThis option overrides CompletedText if provided."
          nullable: true
          example: http://www.yourwebsite.com
      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