Overview

Welcome to the Flo User API. This guide will explain how customers can upload matter data directly into our system. This will allow customers to export data from their accounting system of choice and upload it into our Performance Review product.

This endpoint accepts CSV files via multipart/form-data uploads.

Authentication

All endpoints require authentication.

Possible authentication errors

  • 401 Unauthorized

  • 403 Forbidden


Common Requirements

  • Requests must use multipart/form-data

  • CSV files must be uploaded using a file form field

  • Validation errors are returned in structured JSON responses


Endpoint: Upload Matters via CSV

POST /matters-csv/upload-csv

Upload matters for a specific review cycle.

Query Parameters

Name
Type
Required
Description

reviewCycleId

string (UUID)

Yes

Review cycle identifier

Request

Headers

Form Fields

Field
Type
Required

file

binary (CSV)

Yes

Example (cURL)

Responses

Status
Description
Body

200

Upload successful

Empty

400

Bad request

string

404

Review cycle not found

string

500

Server error

string


Error Schemas

FileError

Describes errors that apply to the entire CSV file.

Field
Type
Description

message

string

Human-readable error message

type

string

Error category

Possible type values

  • EMPTY_FILE

  • INVALID_FILE_FORMAT

  • MISSING_REQUIRED_COLUMNS

  • UNEXPECTED_COLUMNS

  • FILE_SIZE_EXCEEDED


RowColumnError

Describes validation errors at the row and column level.

Field
Type
Description

rowNumber

integer

Row number in CSV

columnName

string

Column with invalid value

message

string

Error explanation

type

string

Validation error type

value

string

Offending value

Possible type values

  • EMPTY_REQUIRED_VALUE

  • INVALID_EMAIL

  • INVALID_FORMAT

  • INVALID_URL

  • INVALID_YEAR

  • INVALID_DATE_FORMAT

  • DUPLICATE_VALUE

  • EXISTING_USER_CONFLICT

  • INVALID_LIST_SELECTION

  • INVALID_SSO_ID

  • ROW_VALUE_CONFLICT

  • UNKNOWN


Notes & Best Practices

  • Ensure CSV headers match expected column names exactly

  • Validation stops at the row level but returns all detected errors

  • Successful requests return no payload. Absence of errors means success

Example CSV Upload

file-download
920B

Last updated